一种sm3算法的并行处理方法及电子设备

文档序号:1921194 发布日期:2021-12-03 浏览:8次 >En<

阅读说明:本技术 一种sm3算法的并行处理方法及电子设备 (Parallel processing method of SM3 algorithm and electronic equipment ) 是由 袁结全 吴�灿 崔志辉 詹晋川 陈世伟 于 2021-08-20 设计创作,主要内容包括:本发明公开了一种SM3算法的并行处理方法及电子设备,本发明通过对SM3密码杂凑算法公式进行化简,将运算中不必要的中间变量进行替代,并对化简后的公式进行循环展开、并行处理,从而达到简化运算过程,节约了计算资源,提高了运算速度。(The invention discloses a parallel processing method of SM3 algorithm and electronic equipment, simplifying SM3 cryptographic hash algorithm formula, replacing unnecessary intermediate variables in operation, and circularly expanding and parallel processing the simplified formula, thereby simplifying operation process, saving calculation resources and improving operation speed.)

一种SM3算法的并行处理方法及电子设备

技术领域

本发明涉及数据处理领域,具体涉及一种SM3算法的并行处理方法及电子设备。

背景技术

SM3密码杂凑算法是一种基于分组迭代结构的杂凑算法,是我国采用的一种密码散列函数标准,针对长度为L(L<264)的报文消息,SM3算法经过填充、迭代压缩,生成长度为256bit的杂凑值,它在消息认证完整性保护数字签名中有重要的应用。但是现有的SM3算法在数据压缩过程中需要进行64轮迭代,会消耗大量的计算资源,拖慢运行速度。

发明内容

针对现有技术中的上述不足,本发明提供的一种SM3算法的并行处理方法及电子设备解决了SM3算法进行64轮迭代消耗计算资源大的问题。

为了达到上述发明目的,本发明采用的技术方案为:

提供一种SM3算法的并行处理方法,其包括以下步骤:

S1、将长度为L比特的消息m的结尾处添加数字1,并在添加的数字1后添加64比特的数值为L的二进制数值,得到第一次填充后的消息;

S2、判断第一次填充后的消息长度是否为512的整数倍,若是则直接进入步骤S4;否则进入步骤S3;

S3、在添加的数字1与添加的二进制数值之间添加数字0直至消息长度为512的整数倍,得到第二次填充后的消息并进入步骤S4;

S4、将当前消息按照512比特进行分组,分组后的每个个体包括16个字W0,W1,…,W15;W0为个体的最高的32比特,W15为个体的最低的32比特;

S5、基于分组后的每个个体的16个字进行扩展得到52个字的Wj和64个字的Wk’,即得到与每个个体对应的共132字的数据;其中j=16,17,…,67;k=0,1,2,…,63;

S6、构建中间变量SS1n、SS2n、TT1n和TT2n

S7、将中间变量带入寄存器变量的计算过程,得到简化后的寄存器变量在数据压缩过程中的计算公式;

S8、基于简化后的寄存器变量的计算公式,将SM3算法的压缩迭代的每相邻两轮迭代合并为一次计算,完成SM3算法的并行处理。

进一步地,步骤S5的具体方法包括以下子步骤:

S5-1、将字Wj-16循环左移15位的结果、Wj-9循环左移15位的结果和Wj-3循环左移15位的结果进行三者异或操作,得到值Q0;其中16≤j≤67;

S5-2、将值Q0、值Q0进行循环左移15位的结果和值Q0进行循环左移23位的结果进行三者异或操作,得到值Q1;

S5-3、将值Q1、Wj-13循环左移7位和Wj-6进行三者异或操作,将操作结果记为Wj

S5-4、将Wk和Wk+4进行异或操作,将操作结果记为Wk’。

进一步地,步骤S6的具体方法为:

分别根据公式:

构建中间变量SS1n、SS2n、TT1n和TT2n;其中每个中间变量的长度均为32比特;n为常数,表示数据压缩过程的迭代次数,n=1,2,…,64;An-1表示数据压缩过程中第n-1次迭代时寄存器变量A的值,当n=1时An-1为寄存器变量的初始值7380166f;En-1表示数据压缩过程中第n-1次迭代时寄存器变量E的值,当n=1时En-1为寄存器变量的初始值a96f30bc;Tn为固定值,当n≤16时,Tn=0x79cc4519;当17≤n≤64时,Tn=0x7a879d8a;表示32比特异或运算;FFn(·)表示布尔函数;Bn-1表示数据压缩过程中第n-1次迭代时寄存器变量B的值,当n=1时Bn-1为寄存器变量的初始值4914b2b9;Cn-1表示数据压缩过程中第n-1次迭代时寄存器变量C的值,当n=1时Cn-1为寄存器变量的初始值172442d7;Dn-1表示数据压缩过程中第n-1次迭代时寄存器变量D的值,当n=1时Dn-1为寄存器变量的初始值da8a0600;GGn(·)表示布尔函数;Fn-1表示数据压缩过程中第n-1次迭代时寄存器变量F的值,当n=1时Fn-1为寄存器变量的初始值163138aa;Gn-1表示数据压缩过程中第n-1次迭代时寄存器变量G的值,当n=1时Gn-1为寄存器变量的初始值e38dee4d;Hn-1表示数据压缩过程中第n-1次迭代时寄存器变量H的值,当n=1时Hn-1为寄存器变量的初始值b0fb0e4e。

进一步地,步骤S7的具体方法为:

分别根据公式:

Br=Ar-1

Cr=Ar-2<<<9

Dr=Ar-3<<<9

Er=P0(TT2r)=P0(GGr(Er-1,Er-2,Er-3<<<9)+(Er-4<<<19)+((Ar-1<<<12)+Er-1+(Tr<<<r))<<<7+Wr)

Fr=Er-1

Gr=Er-1<<<19

Hr=Er-3<<<19

将中间变量带入寄存器变量的计算过程,得到简化后的寄存器变量在数据压缩过程中的计算公式;其中r为整数,表示数据压缩过程的迭代次数,4≤r≤64;FFr(·)和GGr(·)均表示布尔函数;P0(·)表示置换函数,置换过程为将置换对象、置换对象循环左右9位后的结果、置换对象循环左移17位后的结果进行三者异或;Ar、Br、Cr、Dr、Er、Fr、Gr和Hr均为第r次迭代后的寄存器变量。

进一步地,步骤S8的具体方法为:

将与每个个体对应的共132字的数据进行数据压缩,在数据压缩过程中并行计算寄存器变量Ar和Er的值,通过简化后的寄存器变量计算公式获取数据压缩过程中每次迭代后的寄存器变量值,并将最后一次迭代后的寄存器变量值作为输出,完成SM3算法的并行处理。

提供SM3算法的并行处理电子设备,其特征在于,包括:

存储器,存储有可执行指令;以及

处理器,被配置为执行存储器中可执行指令以实现权利要求1-5中任一项所述的方法。

本发明的有益效果为:本发明通过对SM3密码杂凑算法公式进行化简,将运算中不必要的中间变量进行替代,并对化简后的公式进行循环展开、并行处理,从而达到简化运算过程,节约计算资源,提高运算速度。

附图说明

图1为本方法的流程示意图;

图2为本申请的SM3算法结构图;

图3为本申请的SM3算法的压缩过程示意图;

图4为本申请的SM3算法的压缩过程时序示意图。

具体实施方式

下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。

如图1所示,该SM3算法的并行处理方法包括以下步骤:

S1、将长度为L比特的消息m的结尾处添加数字1,并在添加的数字1后添加64比特的数值为L的二进制数值,得到第一次填充后的消息;

S2、判断第一次填充后的消息长度是否为512的整数倍,若是则直接进入步骤S4;否则进入步骤S3;

S3、在添加的数字1与添加的二进制数值之间添加数字0直至消息长度为512的整数倍,得到第二次填充后的消息并进入步骤S4;

S4、将当前消息按照512比特进行分组,分组后的每个个体包括16个字W0,W1,…,W15;W0为个体的最高的32比特,W15为个体的最低的32比特;

S5、基于分组后的每个个体的16个字进行扩展得到52个字的Wj和64个字的Wk’,即得到与每个个体对应的共132字的数据;其中j=16,17,…,67;k=0,1,2,…,63;

S6、构建中间变量SS1n、SS2n、TT1n和TT2n

S7、将中间变量带入寄存器变量的计算过程,得到简化后的寄存器变量在数据压缩过程中的计算公式;

S8、基于简化后的寄存器变量的计算公式,将SM3算法的压缩迭代的每相邻两轮迭代合并为一次计算,完成SM3算法的并行处理。

步骤S5的具体方法包括以下子步骤:

S5-1、将字Wj-16循环左移15位的结果、Wj-9循环左移15位的结果和Wj-3循环左移15位的结果进行三者异或操作,得到值Q0;其中16≤j≤67;

S5-2、将值Q0、值Q0进行循环左移15位的结果和值Q0进行循环左移23位的结果进行三者异或操作,得到值Q1;

S5-3、将值Q1、Wj-13循环左移7位和Wj-6进行三者异或操作,将操作结果记为Wj

S5-4、将Wk和Wk+4进行异或操作,将操作结果记为Wk’。

步骤S6的具体方法为:分别根据公式:

构建中间变量SS1n、SS2n、TT1n和TT2n;其中每个中间变量的长度均为32比特;n为常数,表示数据压缩过程的迭代次数,n=1,2,…,64;An-1表示数据压缩过程中第n-1次迭代时寄存器变量A的值,当n=1时An-1为寄存器变量的初始值7380166f;En-1表示数据压缩过程中第n-1次迭代时寄存器变量E的值,当n=1时En-1为寄存器变量的初始值a96f30bc;Tn为固定值,当n≤16时,Tn=0x79cc4519;当17≤n≤64时,Tn=0x7a879d8a;表示32比特异或运算;FFn(·)表示布尔函数;Bn-1表示数据压缩过程中第n-1次迭代时寄存器变量B的值,当n=1时Bn-1为寄存器变量的初始值4914b2b9;Cn-1表示数据压缩过程中第n-1次迭代时寄存器变量C的值,当n=1时Cn-1为寄存器变量的初始值172442d7;Dn-1表示数据压缩过程中第n-1次迭代时寄存器变量D的值,当n=1时Dn-1为寄存器变量的初始值da8a0600;GGn(·)表示布尔函数;Fn-1表示数据压缩过程中第n-1次迭代时寄存器变量F的值,当n=1时Fn-1为寄存器变量的初始值163138aa;Gn-1表示数据压缩过程中第n-1次迭代时寄存器变量G的值,当n=1时Gn-1为寄存器变量的初始值e38dee4d;Hn-1表示数据压缩过程中第n-1次迭代时寄存器变量H的值,当n=1时Hn-1为寄存器变量的初始值b0fb0e4e。

步骤S7的具体方法为:分别根据公式:

Br=Ar-1

Cr=Ar-2<<<9

Dr=Ar-3<<<9

Er=P0(TT2r)=P0(GGr(Er-1,Er-2,Er-3<<<9)+(Er-4<<<19)+((Ar-1<<<12)+Er-1+(Tr<<<r))<<<7+Wr)

Fr=Er-1

Gr=Er-1<<<19

Hr=Er-3<<<19

将中间变量带入寄存器变量的计算过程,得到简化后的寄存器变量在数据压缩过程中的计算公式;其中r为整数,表示数据压缩过程的迭代次数,4≤r≤64;FFr(·)和GGr(·)均表示布尔函数;P0(·)表示置换函数,置换过程为将置换对象、置换对象循环左右9位后的结果、置换对象循环左移17位后的结果进行三者异或;Ar、Br、Cr、Dr、Er、Fr、Gr和Hr均为第r次迭代后的寄存器变量。

当j值不同时,Tj的值和FFj(X,Y,Z)的公式不同,将其带入可得:

当j为0-15时,Tj为79cc4519,

当j为16-63时,Tj为7a879d8a,FFj(X,Y,Z)=(X∧Y)∨(X∧Z)∨(Y∧Z)

当j值不同,Tj的值和GGj(X,Y,Z)的公式不同,将其带入可得:

当j为0-15时,Tj为79cc4519,

当j为16-63时,Tj为7a879d8a,

其中∧为32比特与运算,∨为32比特或运算,为32比特非运算。

步骤S8的具体方法为:将与每个个体对应的共132字的数据进行数据压缩,在数据压缩过程中并行计算寄存器变量Ar和Er的值,通过简化后的寄存器变量计算公式获取数据压缩过程中每次迭代后的寄存器变量值,并将最后一次迭代后的寄存器变量值作为输出,完成SM3算法的并行处理。

该SM3算法的并行处理电子设备,其特征在于,包括:

存储器,存储有可执行指令;以及

处理器,被配置为执行存储器中可执行指令以实现权利要求1-5中任一项所述的方法。

在本申请的一个实施例中,如图2所示,逐次对每个数据分组M(i)(M(i)为扩展得到的132个字Wj和Wj’)进行数据压缩,有压缩函数V(i+1)=CF(V(i),M(i))(0<=i<=n-1),将上一次压缩的结果值作为下一次输入再次重复计算,CF表示压缩函数。压缩函数的计算过程为:设A、B、C、D、E、F、G、H为寄存变量,SS1、SS2、TT1、TT2为中间变量,变量长度均为32比特。

压缩第一个分组且扩展后的数据M(i)时,即i=0:将IV(压缩函数寄存器)的初始值:7380166f 4914b2b9 172442d7 da8a0600 a96f30bc 163138aa e38dee4d b0fb0e4e赋值给寄存器变量A、B、C、D、E、F、G和H,如果非第一次运算即i>0,则需要将上一次计算的结果V(i-1)赋值给A、B、C、D、E、F、G和H。

在具体实施过程中,经过公式简化后可以看出,8个寄存器变量都只需要Ar和Er就可以计算出来,由于Ar和Er计算情况一致,因此以计算Ar为例进行说明:

如图3所示,图中F表示进行运算的函数,采用二合一的方法,第一个时钟周期计算A0(需要用到初值A)和A1(需要用到A0和初值A),第二个时钟周期计算A2(需要用到A1和A0和初值A)和A3(需要用到A2,A1,A0和初值A),第三个时钟周期计算A4(需要用到A3,A2,A1和A0)和A5(需要用到A4,A3,A2,A1),以此类推,可以发现在计算Aj+1时,既要用到上一轮的值又要用到当前一轮的值。因此在计算Aj时,需要用到6个寄存器,即用reg_A0、reg_A1、reg_A2、reg_A3、reg_A4、reg_A5、这6个寄存器可算出算A0-A63的值。

如图4所示,图中F表示进行运算的函数,第一个时钟周期算出A0和A1,让其保持三个时钟周期,第二个时钟周期算出A2和A3,让其保持三个时钟周期,第三个时钟周期算出A4和A5,让其保持三个时钟周期;当A0和A1保持完三个时钟周期,后续的计算就不会再用到A0和A1了,此时reg_A0和reg_A1寄存器可以计算A6和A7,以此类推,最终算出所有的值。

由以上过程可以看出,本发明将这一部分结构采用循环迭代展开法,将每两轮函数合并为一个函数实现,那么一个时钟周期可以实现两次压缩计算,分组的处理周期由64减小到32。

综上所述,本发明通过对SM3密码杂凑算法公式进行化简,将运算中不必要的中间变量进行替代,并对化简后的公式进行循环展开、并行处理,从而达到简化运算过程,节约计算资源,提高运算速度。

14页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种命令识别方法、系统、计算机及可读存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!