面向制造技术

技术编号:39824497 阅读:27 留言:0更新日期:2023-12-29 15:59
本发明专利技术公开了一种面向

【技术实现步骤摘要】
面向SIMD指令的SM4细粒度切片优化方法及系统


[0001]本专利技术涉及密码算法执行的加速优化
,具体涉及一种面向
SIMD
指令的
SM4
细粒度切片优化方法及系统


技术介绍

[0002]比特切片技术是以将多个明文分组相同粒度的数据切片存放在每个寄存器中,并通过操作寄存器实现并行处理多个明文数据为主要思路,高效实现软件层面上的分组密码算法的一项有效技术

应用比特切片技术的算法将密码算法加密过程分解为一系列使用
XOR、AND、OR

NOT
等逻辑门的逻辑位运算,从而可以在单个
N
位处理器上进行
N
次并行加密,即同时执行
N
个逻辑位运算

[0003]当把比特切片技术应用在分组密码算法上时,会在密码算法加密或解密前后引入2个额外的数据切片过程,包括明文数据切片和密文数据切片,如图1所示

数据切片算法的切片性能在一定程度上会影响切片分组密码算法的加本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.
一种面向
SIMD
指令的
SM4
细粒度切片优化方法,其特征在于,包括:
S101
,将长度为
n
位的明文分组分段为
n/M

M
位的基本操作单元,顺序排列所有的基本操作单元,针对顺序排列后形成顺序存储结构的基本操作单元,采用指定的切片方法利用
SIMD
指令将其转换为大于1的指定大小的切片窗口宽度的切片存储结构作为切片明文分组;
S102
,对切片明文分组执行
SM4
算法的线性变换和非线性变换的迭代,且在执行线性变换和非线性变换的迭代时将不同基本操作单元中相同偏移位置需执行相同运算逻辑的比特集中存储在同一个寄存器字进行逻辑运算,以实现不同基本操作单元的并行逻辑运算,最终迭代
32
轮后得到
128
比特的切片密文分组;
S103
,将切片密文分组采用指定的切片方法切片得到密文分组
。2.
根据权利要求1所述的面向
SIMD
指令的
SM4
细粒度切片优化方法,其特征在于,步骤
S101
中采用指定的切片方法利用
SIMD
指令将其转换为大于1的指定大小的切片窗口宽度的切片存储结构作为切片明文分组时,指定的切片窗口宽度小于或等于基本操作单元的个数
n/M
,且根据
SM4
算法的明文分组长度
n

128
位,基本操作单元位数为
32
位,切片窗口宽度最大为4,使得
SM4
算法可并行处理
N/4
个基本操作单元,其中
N
为处理器数据位宽
。3.
根据权利要求2所述的面向
SIMD
指令的
SM4
细粒度切片优化方法,其特征在于,步骤
S101
中采用指定的切片方法利用
SIMD
指令将其转换为大于1的指定大小的切片窗口宽度的切片存储结构作为切片明文分组包括:首先利用
SIMD
查表指令,将顺序存储结构中
32
个明文分组的基本操作单元的
16
个字节进行重排以实现不同基本操作单元的并行逻辑运算,且
16
个字节进行重排的位置映射为:
[F,B,7,3,E,A,6,2,D,9,5,1,C,8,4,0]
,该位置映射中,每一个索引位置的符号为
16
进制字符,表示重排前的索引位置;索引位置为0的字节在重排前的索引位置为
15
,索引位置为1的字节在重排前的索引位置为
11
,依次类推,索引位置为
15
的字节在重排前的索引位置为0;接着利用
SIMD
逻辑移位运算
、SIMD
逻辑异或运算
、SIMD
逻辑与运算,结合5组掩码
MASK0

MASK4
采用
SIMD
逻辑运算指令完成
32
个基本操作单元的两两比特切片,且5组掩码
MASK0

MASK4

16
进制表示为:
MASK0

5555555555555555555555555555555555555555555555555555555555555555

MASK1

3333333333333333333333333333333333333333333333333333333333333333

MASK2

0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F

MASK3

00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF

MASK4

0000FFFF0000FFFF0000FFFF00 00FFFF0000FFFF0000FFFF0000FFFF0000FFFF
;其中,结合5组掩码
MASK0

MASK4
采用
SIMD
逻辑运算指令完成
32
个基本操作单元的两两比特切片包括:
S201
,将位置映射初始化赋值给索引数组
index
,将5组掩码
MASK0

MASK4
初始化赋值为掩码
m0~
m4,针对顺序存储结构中
32
个基本操作单元中每一个明文分组的重排后的索引位置;初始化循环变量
j
为0;
S202
,利用
SIMD
逻辑运算指令并行针对循环变量
j
执行左移操作
SHL
后赋值给变量
k

S203
,初始化循环变量
i
为0;
S204
,根据变量
k
以及循环变量
i
的值,通过
r

SHL(i

i

k,1)+i

k
计算出变量
r
的值,
其中
SHL

SIMD
逻辑运算指令的左移操作,

表示计算;
S205
,通过执行
temp

USHR(A[r+k],k)
计算出临时变量
temp
的值,其中
USHR

SIMD
逻辑运算指令的无符号右移操作,
A[r+k]
为第
r+k
个基本操作单元;
S206
,通过执行
temp

XOR(temp,A[r])
更新临时变量
temp
的值,其中
XOR

SIMD
逻辑运算指令的异或操作,
A[r]
为第
r
个基本操作单元;
S207
,通过执行
temp

AND(temp,m
j
)
更新临时变量
temp
的值,其中
AND

SIMD
逻辑运算指令的与操作,
m
j
为第
j
个掩码;
S208
,通过执行
A[r]

XOR(A[r],temp)
更新第
r
个基本操作单元
A[r]

S209
,通过执行
temp

SHL...

【专利技术属性】
技术研发人员:丁滟王闯黄辰林谭郁松李宝董攀王晓川张建锋谭霜郭勇
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1