一种sm2算法并行模乘器

文档序号:1112611 发布日期:2020-09-29 浏览:27次 >En<

阅读说明:本技术 一种sm2算法并行模乘器 (SM2 algorithm parallel modular multiplier ) 是由 陈付龙 刘扬 李宗平 张亭亭 谢冬 沈展 齐学梅 程桂花 徐晟� 于 2020-06-18 设计创作,主要内容包括:本发明实施方式提供一种并行SM2算法模乘器,属于数据加密计算技术领域。所述模乘器包括:至少一个改进乘法器和有限状态机控制器。本发明提供的一种SM2算法并行模乘器通过采用由前处理电路、多路器、乘法器以及后处理电路构成的改进乘法器执行并行乘法,利用大数乘法karatsuba算法和国家密码管理局推荐素数P256约减算法都基于分治的特点,将模乘的乘法和约减分段并行执行,在保证速度提高的同时,减少了资源的消耗。(The embodiment of the invention provides a parallel SM2 algorithm modular multiplier, belonging to the technical field of data encryption calculation. The modular multiplier comprises: at least one improved multiplier and a finite state machine controller. The SM2 algorithm parallel modular multiplier provided by the invention executes parallel multiplication by adopting the improved multiplier consisting of the preprocessing circuit, the multiplexer, the multiplier and the postprocessing circuit, and executes the multiplication and the reduction of the modular multiplication in a segmented and parallel way by utilizing the characteristic that the large number multiplication karatsuba algorithm and the prime number P256 reduction algorithm recommended by the State code administration are based on divide and conquer, thereby reducing the consumption of resources while ensuring the improvement of speed.)

一种SM2算法并行模乘器

技术领域

本发明涉及数据加密计算技术领域,具体地涉及一种SM2算法并行模乘器。

背景技术

随着计算机的普及与互联网技术的发展,社会进入信息化时代,信息交流也扮演着越来越重要的角色,因此,信息的安全不被窃取是使用者首要关心的。为保证信息在公用信道传输时的安全性,需要对信息进行加密。公钥密码算法本身的密钥短优势使得相关公钥密码算法越来越受欢迎,而椭圆密码算法又是公钥加密算法中相较于其他公钥算法在相同安全级别下有密钥短、计算量小、速度快的特点的算法。SM2算法是我国自主研发的椭圆曲线加密算法,硬件实现更为简单,适用一些对速度要求高的场景,同时,国产密码算法SM2对当前公钥密码算法有着换代与推广的意义。因此,国产密码算法SM2有着广阔的市场前景。

大数模乘运算作为椭圆曲线算法的核心运算之一,影响着算法执行的效率。提高模乘运算的速度,或者在保证速度的同时减小资源的消耗对算法的推进执行有深远的意义,寻求更好的模乘实现方式也是各研究机构研究的热点问题。

发明内容

本发明实施方式的目的是提供一种SM2算法并行模乘器,该模乘器能够在减少资源消耗的情况下,完成大数的模乘运算。

为了实现上述目的,本发明实施方式提供一种SM2算法并行模乘器,所述模乘器包括:

至少一个改进乘法器,所述改进乘法器包括:

前处理电路,第一端用于接收输入值Ai,第二端用于接收输入值Aj,第三端用于接收输入值Bi,第四端用于接收输入值Bj

第一多路器,第一端与所述前处理电路的第一端连接,第二端与所述前处理电路的第五端连接,第三端与所述前处理电路的第六端连接,第四端与所述前处理电路的第四端连接;

乘法器,第一端与所述第一多路器的第五端连接,第二端与所述第一多路器的第六端连接;

后处理电路,第一端与所述乘法器的第三端连接,第二端用于输出输出值AiBj+AjBi,第三端与所述前处理电路的第七端连接,第四端与所述前处理电路的第八端连接;

第二多路器,第一端连接至所述乘法器和所述后处理电路之间的节点,第二端与所述后处理电路的第五端连接,第三端与所述第一多路器的第七端连接,第四端用于输出计算的结果;

有限状态机控制器,第一端用于选择所述输入值Ai、输入值Aj、输入值Bi以及输入值Bj,第二端与每个所述第一多路器的第七端和所述第二多路器的第三端连接,第三端用于控制调节每个所述结果的位数排布以得到最终结果。

可选地,所述改进乘法器的数量为4个。

可选地,所述乘法器用于执行普通乘法或karatsuba算法。

可选地,所述前处理电路包括比较器和减法器。

可选地,所述后处理电路包括加减法器和异或门。

可选地,所述有限状态机控制器包括依次执行的11个状态,其中:

在0状态中,所述有限状态机控制器的所有输入及控制信号均为0;

在1状态中,所述有限状态机控制器向所述改进乘法器发送4个EN=0的信号以完成第一轮的并行乘法,得到部分积C0

在2状态中,所述有限状态机控制器对所述部分积C0执行第一次的约减运算,再向所述改进乘法器发送3个EN=0的信号和1个EN=1的信号,从而完成第二轮的4次并行乘法,得到部分积C1

在3状态中,所述有限状态机控制器对所述部分积C1执行第二次的约减运算,再向所述改进乘法器发送1个EN=0和3个EN=1的信号,从而完成第三轮的4次并行乘法,得到部分积C2和部分积C3

在4状态中,所述有限状态机控制器对所述部分积C2和部分积C3执行第三次的约减运算,再向所述改进乘法器发送4个EN=1的信号以完成第四轮的4次并行乘法,得到部分积C4

在5状态中,所述有限状态机控制器对所述部分积C4执行第四次的约减运算,再向所述改进乘法器发送4个EN=1的信号以完成第五轮的4次并行乘法,得到部分积C5和部分积C6

在6状态中,所述有限状态机控制器对所述部分积C5和部分积C6执行第五次的约减运算,再向所述改进乘法器发送4个EN=1的信号以第六轮的4次并行乘法,得到部分积C7

在7状态中,所述有限状态机控制器对所述部分积C7执行第六次的约减运算,再向所述改进乘法器发送4个EN=1的信号以第七轮的4次并行乘法,得到部分积C8

在8状态中,所述有限状态机控制器对所述部分积C8执行第七次的约减运算,再向所述改进乘法器发送4个EN=1的信号以第八轮的4次并行乘法,得到部分积C9和部分积C10

在9状态中,所述有限状态机控制器对所述部分积C9和部分积C10执行第八次的约减运算,再向所述改进乘法器发送4个EN=1的信号以第九轮的4次并行乘法,得到部分积C11至部分积C15

在10状态中,所述有限状态机控制器对所述部分积C11至部分积C15执行第九次约减运算。

可选地,所述改进乘法器用于:

在接收到EN=1的信号的情况下,执行karatsuba算法乘法;

在接收到EN=0的信号的情况下,执行普通乘法。

可选地,所述有限状态机控制器用于:

在执行任一状态时,从预设的乘法分配表中获取需要模乘的序号;

根据所述序号在预设的8-分karatsuba算法表示表中获取所述输入值Ai、输入值Aj、输入值Bi以及输入值Bj的编号;

根据所述编号从待模乘的数中选择所述输入值Ai、输入值Aj、输入值Bi以及输入值Bj以输入对应的改进乘法器。

通过上述技术方案,本发明提供的一种SM2算法并行模乘器通过采用由前处理电路、多路器、乘法器以及后处理电路构成的改进乘法器执行并行乘法,利用大数乘法karatsuba算法和国家密码管理局推荐素数P256约减算法都基于分治的特点,将模乘的乘法和约减分段并行执行,在保证速度提高的同时,减少了资源的消耗。

本发明实施方式的其它特征和优点将在随后的

具体实施方式

部分予以详细说明。

附图说明

附图是用来提供对本发明实施方式的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明实施方式,但并不构成对本发明实施方式的限制。在附图中:

图1是根据本发明的一个实施方式的SM2算法并行模乘器的结构框图;

图2是根据本发明的一个实施方式的改进乘法器的结构框图;

图3是根据本发明的一个实施方式的改进乘法器的结构框图;

图4是根据本发明的一个实施方式的改进乘法器的工作方式的流程图;

图5是根据本发明的一个实施方式的有限状态机控制器FSM对输入值的选择方式的流程图;以及

图6是根据本发明的一个实施方式的karatsuba算法的部分叠加分解图。

具体实施方式

以下结合附图对本发明实施方式的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明实施方式,并不用于限制本发明实施方式。

在本发明实施方式中,在未作相反说明的情况下,使用的方位词如“上、下、顶、底”通常是针对附图所示的方向而言的或者是针对竖直、垂直或重力方向上而言的各部件相互位置关系描述用词。

另外,若本发明实施方式中有涉及“第一”、“第二”等的描述,则该“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施方式之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。

如图1所示是根据本发明的一个实施方式的一种SM2算法并行模乘器的结构框图。在图1中,该模乘器可以包括至少一个改进乘法器Mul_Muti和有限状态机控制器FSM。其中,该改进乘法器Mul_Muti的具体结构可以是例如图2中所示。在图2中,该改进乘法器Mul_Muti可以包括前处理电路pre、第一多路器mux1、乘法器muti、后处理电路post以及后处理电路mux2。

在图2中,前处理电路pre的第一端可以用于接收输入值Ai,第二端可以用于接收输入值Aj,第三端可以用于接收输入值Bi,第四端可以用于接收输入值Bj。第一多路器mux1的第一端可以与前处理电路pre的第一端连接,第二端可以与前处理电路pre的第五端连接,第三端可以与前处理电路prre的第六端连接,第四端可以与前处理电路pre的第四端连接。乘法器muti的第一端可以与第一多路器mux1的第五端连接,第二端可以与第一多路器mux1的第六端连接。后处理电路post的第一端可以与乘法器muti的第三端连接,第二端可以用于输出输出值AiBj+jBi,第三端与前处理电路pre的第七端连接,第四端与前处理电路pre的第八端连接。第二多路器mux2的第一端可以连接至乘法器muti和后处理电路post之间的节点,第二端可以与后处理电路post的第五端连接,第三端可以与第一多路器mux1的第七端连接,第四端可以用于输出计算的结果。有限状态机控制器FSM的第一端可以用于选择输入值Ai、输入值Aj、输入值Bi以及输入值Bj,第二端可以与每个第一多路器mux1的第七端和第二多路器mux2的第三端连接,第三端可以用于控制调节每个结果的位数排布以得到最终结果。

在本发明的一个实施方式中,针对不同位数的数而言,改进乘法器Mul_Muti的数量也可以不同。在该实施方式中,在待模乘的数为256位的情况下,该改进乘法器Mul_Muti的数量可以为4个。

在本发明的一个实施方式中,该乘法器muti可以是本领域人员所知的乘法器,用于执行普通乘法或karatsuba算法。

在该实施方式中,该前处理电路pre和后处理电路post的具体结构,可以是例如图3中所示(由于多路器主要起到连接的作用,因此图3中省略了多路器)。在图3中,该前处理电路pre可以包括比较器和减法器。后处理电路post可以包括加减法器add/sub和异或门+。其中,比较器可以包括第一比较器cmp0和第二比较器cmp1。减法器可以包括第一减法器sub0和第二减法器sub1。该第一比较器cmp0的第一端可以用于接收输入值Ai,第二端可以用于接收输入值Aj,第三端可以与异或门+的第一端连接。第二比较器的第一端可以用于接收输入值Bi,第二端可以用于接收输入值Bj,第三端可以与异或门+的第二端连接。第一减法器sub0的第一端可以用于接收输入值Ai,第二端可以用于接收输入值Aj,第三端可以与异或门+的第一端连接,第四端可以与乘法器muti的第一端连接。第二减法器sub1的第一端可以用于接收输入值Bi,第二端可以用于接收输入值Bj,第三端可以与异或门+的第二端连接,第四端可以与乘法器muti的第二端连接。乘法器muti的第三端可以与加减法器add/sub的第一端连接,该加减法器add/sub的第二端可以与异或门+的第三端连接,该加减法器add/sub的第四端可以用于输出输出值AiBj+AjBi,第五端可以用于输出输出值AiBi+AjBj。另外,在图3中,cmpA和cmpB为判断信号,OP为cmpA和cmpB的异或值,tempA和tempB分别为A和B的中间值。

在该实施方式中,对于改进乘法器Mul_Muti的具体工作方式,可以是例如图4中所示。在图4中:

随着输入值Ai、Aj、Bi、Bj的输入,在EN=1的情况下,第一比较器cmp0和第二比较器cmp1分别对Ai和Aj、Bi和Bj执行比较操作。以Ai和Aj为例,在Ai>Aj的情况下,cmpA=1,此时第一减法器输出的中间值tempA=Ai-Aj;否则cmpA=0,中间值tempA=Aj-Ai。Bi和Bj类似,因此不再赘述。

另一方面,乘法器Muti对tempA和tempB执行乘法操作,即temp=tempA*tempB。异或门+对tempA和tempB执行异或计算,从而得到op,即:op=tempA⊕tempB。加减法器对op和temp进行执行运算以得到输出值out。具体地,在op=1的情况下,out为AiBi+AjBj和temp的差值;在op=0的情况下,out为AiBi+AjBj和temp的总和。

在EN=0的情况下,则tempA=Ai,tempB=Bi,temp=tempA*tempB,out=temp。

在该实施方式中,有限状态机控制器FSM可以包括依次执行的11个状态,其中:

在0状态中,有限状态机控制器FSM的所有输入及控制信号均为0;

在1状态中,有限状态机控制器FSM向改进乘法器发送4个EN=0的信号以完成第一轮的并行乘法,得到部分积C0

在2状态中,有限状态机控制器FSM对部分积C0执行第一次的约减运算,再向改进乘法器发送3个EN=0的信号和1个EN=1的信号,从而完成第二轮的4次并行乘法,得到部分积C1

在3状态中,有限状态机控制器FSM对部分积C1执行第二次的约减运算,再向改进乘法器发送1个EN=0和3个EN=1的信号,从而完成第三轮的4次并行乘法,得到部分积C2和部分积C3

在4状态中,有限状态机控制器FSM对部分积C2和部分积C3执行第三次的约减运算,再向改进乘法器发送4个EN=1的信号以完成第四轮的4次并行乘法,得到部分积C4

在5状态中,有限状态机控制器FSM对部分积C4执行第四次的约减运算,再向改进乘法器发送4个EN=1的信号以完成第五轮的4次并行乘法,得到部分积C5和部分积C6

在6状态中,有限状态机控制器FSM对部分积C5和部分积C6执行第五次的约减运算,再向改进乘法器发送4个EN=1的信号以第六轮的4次并行乘法,得到部分积C7

在7状态中,有限状态机控制器FSM对部分积C7执行第六次的约减运算,再向改进乘法器发送4个EN=1的信号以第七轮的4次并行乘法,得到部分积C8

在8状态中,有限状态机控制器FSM对部分积C8执行第七次的约减运算,再向改进乘法器发送4个EN=1的信号以第八轮的4次并行乘法,得到部分积C9和部分积C10

在9状态中,有限状态机控制器FSM对部分积C9和部分积C10执行第八次的约减运算,再向改进乘法器发送4个EN=1的信号以第九轮的4次并行乘法,得到部分积C11至部分积C15

在10状态中,有限状态机控制器FSM对部分积C11至部分积C15执行第九次约减运算。

在该实施方式中,在接收到EN=1的信号的情况下,执行karatsuba算法乘法;在接收到EN=0的信号的情况下,执行普通乘法。

另外,由于每次的并行乘法和约减运算的输入值均是不同的,对于该有限状态机控制器FSM对输入值的选择方式,可以是本领域人员所知的多种形式。在本发明的一个优选示例中,以数A和数B均为256位的大数为例,该选择方式可以是例如图5中所示出的步骤。具体地,在图5中,该选择方式可以包括:

在步骤S10中,在执行任一状态时,从预设的乘法分配表中获取需要模乘的序号。具体地,该预设的乘法分配表可以是例如表1所示,

表1乘法分配表

在步骤S11中,根据选择的序号在预设的8-分karatsuba算法表示表中获取输入值Ai、输入值Aj、输入值Bi以及输入值Bj的编号。具体地,该8-分karatsuba算法表示表可以是例如表2所示,

表28-分karatsuba算法表示表

Figure BDA0002545053670000102

在步骤S12中,根据编号从待模乘的数中选择输入值Ai、输入值Aj、输入值Bi以及输入值Bj以输入对应的改进乘法器。

在该实施方式中,对于上述所述的karatsuba算法,在大整数A和B为256位的情况下,其算法的部分积叠加分解图如图6所示。C15至C0的计算公式如公式(1),

C0=S0_l,Cn=Sn_l+S(n-1)_h+Cin(n-1)(n∈[1,15]), (1)

从表2中可知,完成对大数A和B的计算需要执行36次乘法计算。在使用了4个乘法器的情况下,共需要执行9次,具体的乘法分配方式表1和表2中已示出。

P256是国家密码管理局推荐的在运用SM2算法时使用的素数,具体数值如下所示,还可以写成公式(2)的形式。

p256=fffffffe ffffffff ffffffff ffffffff fffffff f00000000 ffffffffffffffff

p256=2256-2224-296+264-1 (2),

以两个256为的大整数A和B为例,要执行模乘运算,可以执行如下操作:

1、由于2256modp256≡2224+296-264+1(modp256),因此有:

2288modp256≡2256*232(modp256)≡2224+2128-264+232+1(modp256)

2320modp256≡2288*232(modp256)≡2224+2160+232+1(modp256)

2352modp256≡2320*232(modp256)≡2224+2192+296+232+1(modp256)

2384modp256≡2352*232(modp256)≡2*2224+2128+296+232+1(modp256)

2416modp256≡2384*232(modp256)≡2*2224+2160+2128+2*296-264+232+2(modp256)

2448modp256≡2416*232(modp256)≡2*2224+2192+2160+2*2128+296-264+2*232+2(modp256)

2480modp256≡2448*232(modp256)≡3*2224+2192+2*2160+2128+296+2*232+2(modp256)

将每个2次幂的模p256的结果带入公式(2)中,得到:

C8*2256(modp256)≡C8*2224(modp256)+C8(296-264+1)

C9*2288(modp256)≡C9*2224(modp256)+C9(2128-264+232+1)

C10*2320(modp256)≡C10*2224(modp256)+C10(2160+232+1)

C11*2352(modp256)≡C11*2224(modp256)+C11(2192+296+232+1)

C12*2384(modp256)≡2*C12*2224(modp256)+C12(2128+296+232+1)

C13*2416(modp256)≡2*C13*2224(modp256)+C13(2160+2128+2*296-264+232+2)

C14*2448(modp256)≡2*C14*2224(modp256)+C14(2192+2160+2*2128+296-264+2*232+2)

C15*2480(modp256)≡3*C15*2224(modp256)+C15(2192+2*2160+2128+296+2*232+2)

因此,大整数A和B的乘积结果C Mod p256可以表示为公式(3),也可以表示为公式(4),

Cmodp256≡3*C15*2224(modp256)+2*C14*2224(modp256)+2*C13*2224(modp256)

+2*C12*2224(modp256)+C11*2224(modp256)+C10*2224(modp256)

+C9*2224(modp256)+C8*2224(modp256)+C7*2224(modp256)

+2192(C6+C11+C14+C15)+2160(C5+C10+C13+C14+2*C15)

+2128(C4+C9+C12+C13+2·C14+C15)+296(C3+C8+C11+C12+2*C13+C14+C15)

-264(C8+C9+C13+C14)+264C2+232(C1+C9+C10+C11+C12+C13+2*C14+2*C15)

+C0+C8+C9+C10+C11+C12+2(C13+C14+C15)(modp256)

,(3)

另外,约减运算的分配方式可以是例如表3中所示,

表3

Figure BDA0002545053670000121

其中,S8、S10、S19以及S20所在行的运算为乘2,S13至S16所在行的运算为减。该约见运算和并行乘法可以并行处理,具体的并行运算方式可以是例如表4所示,

表4

Figure BDA0002545053670000131

即:

Result=S1+S2+S3+S4+S5+S6+S7+S9+S11+S12+S17+S18

+2(S13+S14+S15+S16)-S8-S10-S19-S20(modp256), (4)

通过上述技术方案,本发明提供的一种SM2算法并行模乘器通过采用由前处理电路、多路器、乘法器以及后处理电路构成的改进乘法器执行并行乘法,利用大数乘法karatsuba算法和国家密码管理局推荐素数P256约减算法都基于分治的特点,将模乘的乘法和约减分段并行执行,在保证速度提高的同时,减少了资源的消耗。

以上结合附图详细描述了本发明例的可选实施方式,但是,本发明实施方式并不限于上述实施方式中的具体细节,在本发明实施方式的技术构思范围内,可以对本发明实施方式的技术方案进行多种简单变型,这些简单变型均属于本发明实施方式的保护范围。

另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明实施方式对各种可能的组合方式不再另行说明。

本领域技术人员可以理解实现上述实施方式方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个可以是单片机,芯片等或处理器(processor)执行本申请各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

此外,本发明实施方式的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明实施方式的思想,其同样应当视为本发明实施方式所公开的内容。

16页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种面向机器人EKF-SLAM算法的加速方法

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!

技术分类