CN1738238A - 高速可配置rsa加密算法及协处理器 - Google Patents
高速可配置rsa加密算法及协处理器 Download PDFInfo
- Publication number
- CN1738238A CN1738238A CN 200510029516 CN200510029516A CN1738238A CN 1738238 A CN1738238 A CN 1738238A CN 200510029516 CN200510029516 CN 200510029516 CN 200510029516 A CN200510029516 A CN 200510029516A CN 1738238 A CN1738238 A CN 1738238A
- Authority
- CN
- China
- Prior art keywords
- algorithm
- mould
- pipeline
- streamline
- fifo
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
本发明属信息安全技术领域,具体涉及一种能在加密速度和支持密钥长度两个方面都能进行配置的RSA加密算法及协处理器。RSA加密算法包括改进的流水线模幂算法和流水线模乘算法。协处理器的流水线数据通路采用改进的模幂和模乘流水线双重结构。它通过配置模幂流水线和模乘流水线的级数来配置加密系统的加密速度;通过配置模乘流水线级数和模乘运算单元先入先出寄存器大小来配置支持不同的密钥长度,从而可获得支持各种密钥长度和加密速度的RSA密码协处理器。
Description
技术领域
本发明属信息安全技术领域,具体涉及一种能在加密速度和支持密钥长度两个方面都可进行配置的RSA加密算法及其协处理器。
背景技术
随着全球经济信息化的飞速发展,特别是伴随着电子商务、电子政务、金融电子化进程的不断深入,信息的安全问题日益突出,信息安全作为“海、陆、空”之外的“第四国防”,已经被各国政府提高到国家战略发展的层次上,同时也已经得到社会各个方面的广泛关注。信息安全主要是利用密码技术来保证信息的保密性、完整性、可用性和抗抵赖性。密码技术,特别是公钥密码技术RSA算法的芯片级实现,代表着一个国家在信息安全领域的水平。为此,各个国家都投入了大量的人力、物力进行这方面的研究。公钥制密码学中,应用最为广泛的是RSA公钥密码算法,为了保证安全等级,一般采用512位或1024位的密钥长度,在银行等需要非常高的安全等级系统中,会采用更高位数的RSA密钥长度。
目前,世界上RSA密码算法芯片1024位RSA运算速度多数在每秒几千次。国内单位的1024位RSA运算速度更低。
造成RSA运算速度低的原因在于RSA加密运算的复杂性。RSA密码算法的安全性是基于数论中的著名数学难题:将两个大的素数合成一个大数很容易,而相反过程则非常困难。其算法基本的思想如下:
如果有某个明文分组P和密文分组C,加密和解密的过程如下:
加密:C=Pe mod M
解密:P=Cd mod M
其中P是明文,C是密文,e为加密密钥,d为解密密钥,M是模(它一个大整数且等于两个素数的乘积)。发送方和接受方都必须知道M的值,发送方知道e的值,接受方知道d的值,所以公钥是Ekey={e、M},私钥是Dkey={d、M}。
可见,RSA的基本运算就是模幂运算,它的操作数长度一般在256到2048比特或者更长,一个底数和指数长度都达到几百上千位的模幂运算可想而知是多么费时。对于RSA密码算法来说,密钥长度越长,安全等级越高,同时计算量也越大,速度就越慢。用软件来做1024位的RSA加密,每秒大概只能完成4-8次模幂运算,对于个人用户加来说,这个速度还能接收;但是对于如银行系统、CA中心等,这样的速度就太慢了,人们需要高速的RSA密码芯片来满足这种需求。所以,硬件实现高速的RSA加密算法将成为未来密码产品的主流,也是当前密码学的研究热点。
RSA模幂运算是通过一系列的模乘运算得到的。模幂算法根据幂指数扫描顺序不同可以分为两种:从左到右的L-R算法和从右到左的R-L算法。两种算法大同小异,但是从速度和面积角度上来看,L-R算法体现的是串行运算,运算速度较慢且运算速度不仅取决于密钥的长度,还同密钥的数字特征息息相关;与之相对应的R-L算法则是牺牲面积换取速度,体现了并行运算的思想,速度较快且速度仅仅取决于密钥长度,面积是L-R算法的一倍。R-L算法如下所示:(N:密钥长度;P:明文;C:密文;e:密钥;M:模)
算法1:R-L(Right-to-Left)模幂运算
输入:P、N、e、M
输出:C=Pe mod M
1 Set C-1=1,S-1=P
2 For i=0 to N-1
===parallel===============
2.a Si=Si-1×Si-1 mod M
2.b If ei=1 then Ci=Si-1×Ci-1 mod M
=====================parallel==============
3 Return CN-1
首先,算法第1步给C和S赋初值,然后从右到左(也就是从最低位到最高位)扫描密钥e,如果ei的值是1则执行2.a和2.b,如果ei的值是0则只执行2.a,2.a和2.b是并行执行的。通过N次的循环,最后返回模幂结果C。
模幂运算中涉及到了大量的模乘运算,模乘运算需要做一次乘法和一次除法,最后取余数,运算量非常大。蒙哥马利于1985年提出了著名的蒙哥马利模乘算法,它将复杂的模乘运算简化为做简单的加法和移位运算,从而大大提高了模乘的运算速度,其算法如下:
(N:密钥长度;X:乘数;Y:被乘数;M:模;r:常数)
算法2MM(Montgomery Multiplication)运算:
输入:N、X、Y、M、r(r=2N)
输出:S=MM(X,Y)=XYr-1 mod M
1.S-1=0
2.For i=0 to N-1
3.Si=Si-1+xi×Y
4.Si=Si+s0×M
5.Si=Si/2
6.End For
7.If SN-1>=M Then SN-1=SN-1-M
Return SN-1
算法第1步给S赋初值0,第3步根据乘数X的i位xi进行乘加,第4步根据S的最低位s0判断是否加M,第5步右移一位,如此循环N次,第7步判断S是否大于M,第8步输出模乘结果S。
发明内容
本发明的目的是提出一种高速可配置RSA加密算法及协处理器,使得在RSA的加密速度和支持的密钥长度两个方面都能进行配置。
本发明提出的RSA加密算法包括流水线模幂算法和流水线模乘算法。分别是对上文中的算法1和算法2进行改进而提出的流水线算法。具体算法如下:
算法3:流水线模幂算法(记为ME)
输入:P、N、e、M、r(r=2N)
输出:C=Pe mod M
1.Set C-1=1,S-1=P
=======pipeline 1=======
2.S-1=MM(P,r2)=Pr mod M
3.For i=0 to T-2
3.a Si=MM(Si-1,Si-1)
3.b If ei=1 then Ci=MM(Si-1,Ci-1)
End For
========pipeline 1========
4.For j=1 to(N+1/)T-1
========pipeline j========
5.For k=0 to T-1
5.a ST*j+k-1=MM(ST*j+k-2,ST*j+k-2)
5.b If eT*j+k-1=1 then CT*j+k-1=MM(ST*j+k-2,CT*j+k-2)
End For
========pipeline j========
End For
6.Return CN-1
该算法第1步对(C,S)赋初值;第2-3步是流水线的第一级,做T次MM运算,其中的第2步是域转换,第3步是Montgomery模乘;算法第4-5步是一个(N+1/)T-1级的流水线,其中每级流水线分别计算T次的Montgomery模乘;最后在算法第6步返回模幂结果。
相比算法1,算法3增加了一个域转化步骤(2),它将整数域形式转化成为Montgomery域形式。算法3将整个模幂运算过程分割成为(N+1)/T个步骤,每步执行T次MM算法。相比没有流水线的算法1,算法3能比算法1快(N+1)/T倍。其中,参数的含义同前。
算法4:流水线模乘算法(记为MM):
输入:N、X、Y、M、r(r=2N)
输出:S=MM(X×Y)=XYr-1 mod M
1.S=0、x-1=0
2.For j=0 to N-1 Step k
3.qYj=Booth(xj+k-1..j-1)
4.(Ca,S(0))=S(0)+(qYj×Y)(0)
5.qMj:=S(0) k-1..0×(2k-M(0)-1 k-1..0)mod 2k
6.(Cb,S(0))=S(0)+(qMj×M)(0)
7.For i=1 to NW-1
8.(Ca,S(i)):=Ca+S(i)+(qYj×Y)(i)
9.(Cb,S(i)):=Cb+S(i))+(qMj×M)(i)
10.S(i-1)=(S(i) k-1..0,S(i-1) BPW-1..k)
End For
11.Ca=Ca or Cb
12.S(NW-1)=sign ext(Ca,S(NW-1) BPW-1..k)
End For
13.If S>=M Then S=S-M
该算法采用了按字读取操作数的方法,每个操作数分成为若干个字,每次读入其中的一个;该算法第一步对(S,x-1)赋初值;第2步是流水线运算的外层循环,针对每一个输入x,分别采用流水线按字运算方法来计算乘加结果;第3-6步是每级流水线运算的初始值计算,分别计算出qYj和qMj以供后继输入数据运算,同时计算出输入操作数第一个字((Ca,S(0))、Y(0)、M(0))的运算结果(Cb,S(0));第7-12步分别计算出余下的操作数字的运算结果(Cb,S(i));最后在第13步输出最终Montgomery模乘结果。其中,参数含义同前。
在算法4中,xi表示输入操作数X的第i位,S(i)、Y(i)、M(i)表示操作数S、Y、M的第i个字,(C,S(i))表示carry-save格式的第i个字。比如,S(0) k-1..0表示S的第0个字的第k-1到第0位。NW(Number of Word)是操作数的字数,BPW(Bit Per Word)是每个操作数字所包含的位数。
相比算法2,该算法按字读取操作数,每个操作数分成为若干个字,每次读入其中的一个。算法2中第3、4步的加法都是N位长加法,延迟时间相当大限制了系统的速度;在算法4中改进成一个字长的加法(第8、9步),并且采用了Carry Save的结构,使得加法的路径延迟大大降低。
本发明在上述流水线算法的基础上,设计了RSA加密协处理器,其流水线数据通路采用上述模幂和模乘模块流水线双重结构,从而在运算的速度和支持密钥的长度两个方面实现可配置。即一方面,可以通过配置模幂流水线和模乘流水线的级数来配置加密系统的加密速度;另一方面,可以通过配置模乘流水线级数和模乘运算单元先进出寄存器FIFO大小来配置支持不同的密钥长度。模幂流水线如图1所示,模乘流水线如图3所示。下面分别详细阐述模幂流水线和模乘流水线的结构和原理。
模幂流水线结构如图1所示,根据算法3,采用(N+1)/T级流水线,每级流水线只需要做T次MM模乘,两次模幂运算之间的时间间隔仅仅为一级流水线的延迟。采用n级流水线结构的模幂运算速度是不采用流水线结构的模幂运算速度的n倍。即模幂流水结构由N+1个基本运算单元ME(4)依次连接组成,一个流水线基本运算单元ME(4)代表流水线运算的一级,其输入信号为:Sq(对应算法3中的S,但Sq包含了两份S的拷贝,所以实际上Sq是两个信号),C(对应算法3中的C),M(对应算法3中的M),e(对应算法3中的e),Control(控制信号)。这些参数的下标i(i=0,1…N)表示该参数第i级运算的输入值。ME单元结构如图2所示,它包括:
两个模乘运算单元MM(6、7),运算单元MM(6、7)为并行工作模式,它们分别执行算法3中的平方运算(3.a、5.a)和乘法运算(3.b、5.b)。
一个寄存堆(8),用于存放输入数据Sq、C、M、e和控制信号Control;
一组数据选择器(10-18);
一个控制逻辑状态机9,是整个ME单元的控制逻辑,它通过数据选择器(10-18)控制数据流向。
具体的数据调度流程如下所示:
1、系统接收输入数据信号Sq、C、M、e以及控制信号Control;
2、根据输入控制信号,在控制逻辑状态机9中产生copy0和copy1信号,将输入数据读入到寄存器堆中;
3、控制逻辑状态机9每次读入E的最低位,然后根据输入的值判断下一步的运算(算法3中的3.a、3.b)。图2中的运算模块MM0和MM1分别对应于算法3中的3.a和3.b;
4、当MM模乘运算结束时,通过state0、state1信号进行选择,将正确的结果输出到寄存器堆中(这里,又需要copy0和copy1信号将结果数据导入寄存器堆中)。
表1是一个模幂运算单元在RSA加密过程中对数据通路进行调度的一个例子。采用3级流水线,每级流水线执行3次模乘,密钥e为10110110。第一步init步骤相当于算法3中的2,他只出现在流水线的第一级。
表1
BeforeMM | MMCompute | AfterMM | |||||
E | Sq | C | MM | Sq | C | ||
0 | 1 | ||||||
Stage 1 | |||||||
init | X | r2 | 1 | √ | - | Xr | 1 |
0 | Xr | 1 | √ | - | X2r | 1 | |
1 | X2r | 1 | √ | √ | X4r | X2 | |
Stage 2 | |||||||
1 | X4r | X2 | √ | √ | X8r | X6 | |
0 | X8r | X6 | √ | - | X16r | X6 | |
1 | X16r | X6 | √ | √ | X32r | X22 | |
Stage 3 | |||||||
1 | X32r | X22 | √ | √ | X64r | X54 | |
0 | X64r | X54 | √ | - | X128r | X54 | |
1 | X128r | X54 | √ | √ | X256r | X182 |
本发明中,每个模乘运算单元MM(6、7)包含两个部分,其一是模乘流水线数据通路19;其二是FIFO(先入先出寄存器)30。
模乘流水线数据通路19的结构如图3所示。根据算法4,k表示基,每次循环读入乘数X的k位,通过Booth编码得到qY,被乘数Y和模M按字读取(Y(i))表示Y的第i个字,如算法2),故该算法非常容易组织成流水线的结构。如图3所示,模乘流水线结构,包括:
一组流水线的基本执行单元MM Cell,共N+1个;
一组控制状态机FSM,共N+1个;对应控制N+1个基本执行单元MM Cell;
一组寄存器REHTEERS,共N个,用于寄存执行单元MM Cell的运算数据;
2组数据选择器(28、29),用于调度流水线的输入和输出数据。因为流出流水线的数据需要重新进入流水线再次运算。如果当输入流水线的数据还未输入完毕,此时的需要再次输入流水线的流水线输出数据不能直接进入流水线,而需要暂时进入FIFO中等待上一轮的数据输入完毕。
对于流水线数据通路(19),流水线输入数据为Y(被乘数)、M(模)、SS、SC(S的Carry Save形式)、Xj(乘数)、Control(控制信号)。为了提高运算速度,在MM Cell的加法器设计中采用了CSA(Carry Save Adder)的结构,在MM运算的最后阶段需要将SS、SC相加得到S。流水线的每一级完成一次算法中的FOR循环运算,并将结果传递给下一级。流水线输入的控制信号被流水线第1级接收,并逐级传递给下一级。Xj是乘数X的字,它被输入到每一级的MM Cell中,通过各级的FSM(有限状态机)的控制信号决定是否读取Xj。OS、OC是该流水线输出的结果;注意,这里并非是MM运算的最终结果。
通过算法4可以知道,数据每过两个时钟周期向前传递一级。若流水线有NS级,则需要2NS个周期数据才能流出流水线。所以对于有NS级的流水线来说,数据经过一次流水线后的结果仅仅是扫描了NS×k(k是改进算法中的基)位的X,如果X的位数超过NS×k,则需要将数据再次注入流水线进行运算。同时,我们发现对于被乘数Y和模M来说,流水线中最多能容纳的Y、M的字数为NS×2个字,即如果当Y(0)、M(0)流到了最后一级(NS级)时,第1级的Y、M的字为Y(NS)、M(NS)。如果Y、M的字数超过了NS×2,同时X的字数也超过了NS×k,则当数据OS、OC需要再次注入流水线时会出现等待。下面举例解释这一过程:
若k=4,NS=3,NWx=6,NWym=7
表2
CLK | Stage 1 | Stage2 | Stage 3 |
1 | X(0)、Y(0)、M(0)、0 | ||
2 | X(0)、Y(1)、M(1)、0 | ||
3 | X(0)、Y(2)、M(2)、0 | X(1)、Y(0)、M(0)、S(0)1 | |
4 | X(0)、Y(3)、M(3)、0 | X(1)、Y(1)、M(1)、S(1) 1 | |
5 | X(0)、Y(4)、M(0)、0 | X(1)、Y(2)、M(2)、S(2) 1 | X(2)、Y(0)、M(0)、S(0) 2 |
6 | X(0)、Y(5)、M(5)、0 | X(1)、Y(3)、M(3)、S(3) 1 | X(2)、Y(1)、M(1)、S(1) 2 |
7 | X(0)、Y(6)、M(6)、0 | X(1)、Y(4)、M(4)、S(4) 1 | X(2)、Y(2)、M(2)、S(2) 2 |
8 | X(3)、Y(0)、M(0)、S(0) 3 | X(1)、Y(5)、M(5)、S(5) 1 | X(2)、Y(3)、M(3)、S(3) 2 |
9 | X(3)、Y(1)、M(1)、S(1) 3 | X(1)、Y(6)、M(6)、S(6) 1 | X(2)、Y(4)、M(4)、S(4) 2 |
10 | X(3)、Y(2)、M(2)、S(2) 3 | X(4)、Y(0)、M(0)、S(0) 4 | X(2)、Y(5)、M(5)、S(5) 2 |
11 | X(3)、Y(3)、M(3)、S(3) 3 | X(4)、Y(1)、M(1)、S(1) 4 | X(2)、Y(6)、M(6)、S(6) 2 |
12 | X(3)、Y(4)、M(4)、S(4) 3 | X(4)、Y(2)、M(2)、S(2) 4 | X(5)、Y(0)、M(0)、S(0) 5 |
13 | X(3)、Y(5)、M(5)、S(5) 3 | X(4)、Y(3)、M(3)、S(3) 4 | X(5)、Y(1)、M(1)、S(1) 5 |
14 | X(3)、Y(6)、M(6)、S(6) 3 | X(4)、Y(4)、M(4)、S(4) 4 | X(5)、Y(2)、M(2)、S(2) 5 |
15 | X(4)、Y(5)、M(5)、S(5) 4 | X(5)、Y(3)、M(3)、S(3) 5 | |
16 | X(4)、Y(6)、M(6)、S(6) 4 | X(5)、Y(4)、M(4)、S(4) 5 | |
17 | X(5)、Y(5)、M(5)、S(5) 5 | ||
18 | X(5)、Y(6)、M(6)、S(6) 5 |
如表2所示,因为NWym>2NS,同时NWx>NS×k,导致S(0) 2在第7周期试图重新进入流水线受阻,被迫等到Y、M的字节流全部处理完才再次进入流水线。
对于FIFO(30),其作用是暂存需要再次输入到流水线中的流水线输出数据。对于FIFO(30)来说,它的输入数据是carry-save格式的,其输出数据也是carry-save格式的。在本发明中,为了节省FIFO(30),将carry-save格式的数据先行进行加法,然后再输入到存贮模块FIFO(33)中。这样就可以节省一半的FIFO开销。如图4所示,先入先出寄存器FIFO(30)包括一个由加法逻辑单元DEF(32)和寄存器(31)组成的加法器,一个存贮模块FIFO(33),一个数据选择器(34)。寄存器32用来暂存进位信息。FIFO(33)可以用registerfile或者ram实现。数据选择器(34)用来旁路FIFO,当NWym小于或等于2NS时不需要将数据输入到FIFO中。
本发明中,基本执行单元MM Cell结构框图如图5所示。MM Cell是构成模乘流水线的关键部件。本发明设计了一种高基(基为16)的MM Cell。它包括2个寄存器Register(36、37)、2个4-to-2加法器(38、39)、2个译码器DEC(40、41)和一组数据选择器(42、43、44、45);寄存器(36、37)将MM Cell内部分为两个层次,使得关键路径延迟更低,能有效提高时钟频率。加法器4-to-2(38、39)采用carry-save形式,能降低加法器延迟。译码器(40、41)分别对应算法4中的qY和qM。数据选择器(42-45)根据译码器的输出qY、qM选择相应的数据进入到4-to-2加法器(38、39)。
对于基为16的设计,译码器(40)的译码表如表3所示,译码器(41)的译码表分为两部分,一部分是预译码(如表4所示),另一部分是后译码,采用和译码器(40)同样的译码表(如表3所示)。
对于基为16的设计来说,乘数X每次扫描4位,经Booth编码后得到5位的输入数据,被乘数Y和模M每次输入一个字。乘数X的Booth编码如下式所示:
X(i)=(xi+3,xi+2,xi+1,xi,xi-1)xi-1是前一次扫描的数据最高位,qY是Booth解码的结果,等于
qY=-8xi+3+4xi+2+2xi+1+xi+xi-1
可以发现,qY在[-8,8]范围内,为了方便计算S(0)+(qYj×Y)(0)(算法4中第4步),可以将其分解为两个2的幂级数来实现,如图5中所示。举例来说,假如qY等于3,可以将其分解为2和1,或者4和-1,这样3×Y就可以通过2Y+Y或者4Y-Y来实现,可以将2Y、Y或责4Y、-Y直接输入到4-to-2加法器,而不需要去真正做一次加法或者减法。这样,可以通过对qY需要建立一张查找表来简化计算。qY查找表如表3所示,qY是Booth解码结果,qY1是数据选择信号,它决定Y(i) p的值(如图5),Y(i) p可以等于[0,Y,2Y,4Y,8Y,-Y];Y(i) n由qY2决定,它可以等于[0,-Y,-2Y,-4,-8Y,Y]。cin用来处理数据取补码时的最低位,若数据是正数,则cin等于0,输出数据不变;若数据是负数,则cin等于1,同时将数据取反。
对于qM来说,它取决于S和M的最低4位的值,如算法2中所示:
qM=S(0) k-1..0×(2k-M(0)-1 k-1..0)mod 2k
在基为16的情况下,k等于4,qM的值在[0,15]。经分析,[0,15]中的数据11和13不能拆分为两个2的幂级数的和,这样就不能采用4-to-2的加法器来计算了,而需要再另外加上一级加法器来计算,这样会导致关键路径延迟大大增加,所以这里需要对qM做相应的处理以简化硬件设计。如算法4中第6步所示,系数qM的目的是确保S的低4位的值变为0,使得算法第10步能进行移位。在本发明中,通过将qM转换到[-8,+8]范围内,使得S的低4位的值同样变为0。系数qM([0,15])转化为系数qM’([-8,8])如表4所示。qM’类似于qY,都可以通过表3用相应的数据选择器实现,如图5中所示。
表3
qY | qY1 | cin1 | qY2 | cin2 | qY | qY1 | cin1 | qY2 | cin2 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 1 | 0 | 0 | 0 | -1 | 0 | 0 | -1 | 1 |
2 | 2 | 0 | 0 | 0 | -2 | 0 | 0 | -2 | 1 |
3 | 4 | 0 | -1 | 1 | -3 | 1 | 0 | -4 | 1 |
4 | 4 | 0 | 0 | 0 | -4 | 0 | 0 | -4 | 1 |
5 | 4 | 0 | 1 | 0 | -5 | -1 | 1 | -4 | 1 |
6 | 8 | 0 | -2 | 1 | -6 | 2 | 0 | -8 | 1 |
7 | 8 | 0 | -1 | 1 | -7 | 1 | 0 | -8 | 1 |
8 | 8 | 0 | 0 | 0 | -8 | 0 | 0 | -8 | 1 |
表4
qM | qM’ | qM | qM’ | qM | qM’ | qM | qM’ |
0 | 0 | 4 | 4 | 8 | 8 | 12 | -4 |
1 | 1 | 5 | 5 | 9 | -7 | 13 | -3 |
2 | 2 | 6 | 6 | 10 | -6 | 14 | -2 |
3 | 3 | 7 | 7 | 11 | -5 | 15 | -1 |
附图说明
图1为模幂流水线结构框图。
图2为模幂流水线运算单元(ME)结构框图。
图3为模乘流水线结构框图。
图4为FIFO结构框图。
图5为模乘流水线运算单元(MM Cell)结构框图。
图中标号:1为模幂流水线,2为模幂流水线运算单元(ME)输入数据,3为模幂流水线运算单元(ME)输出数据,4为模幂流水线运算单元(ME)接口图,5为模幂流水线运算单元(ME)详细结构框图,6-7为模乘单元(MM)框图,8为ME的寄存器堆,9为ME的控制逻辑单元,10-18为ME的数据选择器,19为模乘流水线,20-22为模乘流水线运算单元(MM Cell)接口图,23-24为模乘流水线的寄存器,25-27为MM Cell的控制状态机,28-19为模乘流水线的数据选择器,30是MM的FIFO单元,31是FIFO单元加法进位寄存器,32是FIFO单元加法器,33是FIFO单元的存贮模块,34是FIFO单元选择器,35是模乘流水线运算单元(MM Cell)详细框图,36-37是MM Cell数据寄存器,38-39是4-to-2加法器,40是qY译码器,41是qM译码器,42-45是MM Cell的数据选择器。
具体实施方式
下面结合附图和算法3、4和5进一步描述本发明。
根据模幂流水线算法3所示,流水线化的模幂运算将一次模幂分成多个流水线单元的子运算,从而使得每个流水线单元只需要化少量的时间来处理模幂。具体的量化执行时间为:
TME=T×TMM (1)
TME代表模幂执行时间,TMM代表模乘执行时间,T代表每个模幂流水线运算单元(5)所需要执行模乘运算的次数。根据上式,可以得到,模幂流水线的级数是
SME=(N+1)/T (2)
SME代表模幂流水线的级数,N代表RSA加密密钥的长度。
对于TMM来说,TMM的大小取决于模乘流水线(19)的级数、基的大小、密钥长度和操作数字长。TMM计算公式如下:
其中N表示RSA加密密钥位数,k表示基的位数,NS表示流水线级数,BPW是算法4中Y、M、S的字长。
通过上述公式,最终可以得到双流水线结构的高速RSA密码协处理器的总执行时间等于:
相应的,模幂流水线级数
模乘流水线级数
SMM=NS (6)支持的密钥长度
L=2×NS×BPW+LFIFO (7)
其中LFIFO等于FIFO(33)的长度
本发明要实现的在RSA的加密速度方面和支持加密密钥长度方面的可配置性,就是通过调整上述参数来实现,具体的来说:配置加密速度:根据公式(4),可以通过调整参数T、k、NS、BPW来实现配置支持密钥长度:根据公式(7),可以通过调整NS、BPW和LFIFO来实现
下面举例说明如何通过设定上述参数来配置RSA加密处理器的速度和支持密钥长度。
设计SPEC:
支持密钥长度:1024位
加密速度:每秒5000次
根据公式(7),要使得L等于1024,可以设定NS=16,BPW=32,LFIFO=0要使得加密速度达到5000次每秒的速度,需要采用高基的设计,这里设定k=4。根据公式(3)可以得到
此时,可以根据已经设计好的MM来做综合,得到MM的最大时钟频率。根据实验分析,在0.25μm的工艺下,该MM能达到150MHz的时钟频率。在150MHz的频率下,做一次模乘的时间为3.74×10-6秒,为了达到每秒5000次的速度,每个模幂运算单元(5)在每次RSA加密运算中只能做52次的模乘。
52×5000×3.74×10-6≈1
所以,模幂流水线级数
通过采用上述的设计参数,就可以方便地设计出支持各种密钥长度和加密速度的RSA密码协处理器。
Claims (6)
1、一种RSA加密算法,包括流水线模幂算法和流水线模乘算法,分别记为算法3和算法4,其特征在于具体如下:
算法3:
输入:P、N、e、M、r(r=2N)
输出:C=Pe mod M
1.Set C-1=1,S-1=P
========pipeline 1========
2.S-1=MM(P,r2)=Pr mod M
3.For i=0 to T-2
3.a Si=MM(Si-1,Si-1)
3.b Ifei=1 then Ci=MM(Si-1,Ci-1)
End For
========pipeline 1========
4.For j=1 to(N+1/)T-1
========pipeline j========
5.For k=0 to T-1
5.a ST*j+k-1=MM(ST*j+k-2,ST*j+k-2)
5.b If eT*j+k-1=1 then CT*j+k-1=MM(S T*j+k-2,CT*j+k-2)
End For
========pipeline j========
End For
6. Return CN-1
该算法第1步对(C,S)赋初值;第2-3步是流水线的第一级,做T次MM运算,其中的第2步是域转换,第3步是Montgomery模乘;算法第4-5步是一个(N+1/)T-1级的流水线,其中每级流水线分别计算T次的Montgomery模乘;最后在算法第6步返回模幂结果;
算法4:流水线模乘算法(记为MM):
输入:N、X、Y、M、r(r=2N)
输出:S=MM(X×Y)=XYr-1 mod M
1.S=0、x-1=0
2.For j=0 to N-1 Step k
3.qYj=Booth(xj+k-1..j-1)
4.(Ca,S(0))=S(0)+(qYj×Y)(0)
5.qMj:=S(0) k-1..0×(2k-M(0)-1 k-1..0)mod 2k
6.(Cb,S(0))=S(0)+(qMj×M)(0)
7.For i=1 to NW-1
8.(Ca,S(i):=Ca+S(i)+(qYj×Y)(i)
9.(Cb,S(i)):=Cb+S(i)+(qMj×M)(i)
10.S(i-1)=(S(i) k-1..0,S(i-1) BPW-1..k)
End For
11.Ca=Ca or Cb
12.S(NW-1)=sign ext(Ca,S(NW-1) BPW-1..k)
End For
13.If S>=M Then S=S-M
该算法采用了按字读取操作数的方法,每个操作数分成为若干个字,每次读入其中的一个;该算法第一步对(S,x-1)赋初值;第2步是流水线运算的外层循环,针对每一个输入x,分别采用流水线按字运算方法来计算乘加结果;第3-6步是每级流水线运算的初始值计算,分别计算出qYj和qMj以供后继输入数据运算,同时计算出输入操作数第一个字((Ca,S(0))、Y(0)、M(0))的运算结果(Cb,S(0));第7-12步分别计算出余下的操作数字的运算结果(Cb,S(i));最后在第13步输出最终Montgomery模乘结果;
其中,参数含义如下:P为明文,N为密钥长度,E为密钥,M为模,C为模幂结果,S为模乘结果。
2、一种基于如权利要求1所述RSA加密算法的高速可配置RSA加密协处理器,其特征在于其流水线数据通路采用模幂和模乘模块流水线双重结构:其一方面,通过配置模幂流水线和模乘流水线的级数来配置加密系统的加密速度;另一方面,通过配置模乘流水线级数和模乘运算单元先进出寄存器FIFO大小来配置支持不同的密钥长度。
3、根据权利要求2所述的协处理器,其特征在于所述模幂和模乘模块流水线双重结构中,模幂流水结构由N+1个基本运算单元ME(4)依次连接组成,一个基本运算单元ME(4)表示流水线运算的一级,其输入信号为:Sq:对应算法3中的S,C:对应算法3中的C,M:对应算法3中的M,e:对应算法3中的e,控制信号:Control;其中,基本运算单元ME(4)包括:
两个模乘运算单元MM(6、7),为并行工作模式,它们分别执行算法3中的平方运算和乘法运算;
一个寄存器堆(8),用于存放输入数据Sq、C、M、e和控制信号Control;
一个数据选择器(10-18);
一个控制逻辑状态机(9),是整个ME(4)单元的控制逻辑,它通过数据选择器(10-18)控制数据流向。
4、根据权利要求3所述的协处理器,其特征在于每个模乘运算单元MM(6、7)包括一个模乘流水线数据通路(19)和一个先入先出寄存器FIFO(30);其中,模乘流水线数据通路(19)包括:
一组流水线的基本执行单元MM Cell,共N+1个;
一组控制状态机FSM,共N+1个,对应控制N+1个基本执行单元MM Cell;
一组寄存器REHTEERS共N个,用于寄存执行单元MM Cell的运算数据;
2组数据选择器(28、29),分别用于调度流水线的输入和输出数据;
先入先出寄存器FIFO(30)包括:
一个由加法逻辑单元(32)和寄存器(31)组成的加法器,寄存器(31)用来暂存进位信息;
一个存贮模块FIFO(33);
一个数据选择器(34),用来旁路FIFO(33)。
5、根据权利要求4所述的协处理器,其特征在于所说的基本执行单元MM Cell包括:
2个寄存器(36、37),将MM Cell内部分为两个层次,使得关键路经延迟更低;
2个4-to-2加法器(38、39),采用carry-save形式以降低加法器延迟;
2个译码器(40、41),分别对应算法4中的qY和qM;
一组数据选择器(42、43、44、45),根据译码器(41、42)的输出的qy和qm,选择相应的数据进入到4-to-2加法器(38、39)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510029516 CN1738238A (zh) | 2005-09-08 | 2005-09-08 | 高速可配置rsa加密算法及协处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510029516 CN1738238A (zh) | 2005-09-08 | 2005-09-08 | 高速可配置rsa加密算法及协处理器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1738238A true CN1738238A (zh) | 2006-02-22 |
Family
ID=36080907
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200510029516 Pending CN1738238A (zh) | 2005-09-08 | 2005-09-08 | 高速可配置rsa加密算法及协处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1738238A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102122241A (zh) * | 2010-01-08 | 2011-07-13 | 复旦大学 | 一种适用于素域和多项式域的模乘模除器 |
CN103761068A (zh) * | 2014-01-26 | 2014-04-30 | 上海交通大学 | 优化的蒙哥马利模乘方法、模平方方法和模乘硬件 |
CN103888246A (zh) * | 2014-03-10 | 2014-06-25 | 深圳华视微电子有限公司 | 低功耗小面积的数据处理方法及其数据处理装置 |
CN104811298A (zh) * | 2015-05-14 | 2015-07-29 | 中国联合网络通信集团有限公司 | 一种实现加密的方法及装置 |
CN105356996A (zh) * | 2015-12-14 | 2016-02-24 | 联想(北京)有限公司 | 一种密文处理方法、电子设备及密文处理装置 |
CN105871552A (zh) * | 2016-06-14 | 2016-08-17 | 天津大学 | 双核并行rsa密码处理方法及协处理器 |
CN112100673A (zh) * | 2020-09-29 | 2020-12-18 | 深圳致星科技有限公司 | 用于隐私计算的联邦学习加速器和rsa交集计算方法 |
CN112286581A (zh) * | 2020-12-25 | 2021-01-29 | 广东省新一代通信与网络创新研究院 | 一种流水线式计算加速协处理方法及系统 |
CN112287408A (zh) * | 2020-12-28 | 2021-01-29 | 九州华兴集成电路设计(北京)有限公司 | Rsa单核数据架构 |
CN114172652A (zh) * | 2021-12-03 | 2022-03-11 | 南方电网科学研究院有限责任公司 | 一种rsa算法的加解密系统 |
-
2005
- 2005-09-08 CN CN 200510029516 patent/CN1738238A/zh active Pending
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102122241A (zh) * | 2010-01-08 | 2011-07-13 | 复旦大学 | 一种适用于素域和多项式域的模乘模除器 |
CN103761068B (zh) * | 2014-01-26 | 2017-02-01 | 上海交通大学 | 优化的蒙哥马利模乘硬件 |
CN103761068A (zh) * | 2014-01-26 | 2014-04-30 | 上海交通大学 | 优化的蒙哥马利模乘方法、模平方方法和模乘硬件 |
CN103888246A (zh) * | 2014-03-10 | 2014-06-25 | 深圳华视微电子有限公司 | 低功耗小面积的数据处理方法及其数据处理装置 |
CN104811298A (zh) * | 2015-05-14 | 2015-07-29 | 中国联合网络通信集团有限公司 | 一种实现加密的方法及装置 |
CN104811298B (zh) * | 2015-05-14 | 2018-04-17 | 中国联合网络通信集团有限公司 | 一种实现加密的方法及装置 |
CN105356996A (zh) * | 2015-12-14 | 2016-02-24 | 联想(北京)有限公司 | 一种密文处理方法、电子设备及密文处理装置 |
CN105356996B (zh) * | 2015-12-14 | 2018-11-09 | 联想(北京)有限公司 | 一种密文处理方法、电子设备及密文处理装置 |
CN105871552A (zh) * | 2016-06-14 | 2016-08-17 | 天津大学 | 双核并行rsa密码处理方法及协处理器 |
CN112100673A (zh) * | 2020-09-29 | 2020-12-18 | 深圳致星科技有限公司 | 用于隐私计算的联邦学习加速器和rsa交集计算方法 |
CN112286581A (zh) * | 2020-12-25 | 2021-01-29 | 广东省新一代通信与网络创新研究院 | 一种流水线式计算加速协处理方法及系统 |
CN112287408A (zh) * | 2020-12-28 | 2021-01-29 | 九州华兴集成电路设计(北京)有限公司 | Rsa单核数据架构 |
CN114172652A (zh) * | 2021-12-03 | 2022-03-11 | 南方电网科学研究院有限责任公司 | 一种rsa算法的加解密系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1738238A (zh) | 高速可配置rsa加密算法及协处理器 | |
CN1296817C (zh) | 模乘方法及装置及模乘计算单元 | |
CN1292551C (zh) | 一种流水线简易fft/ifft处理器 | |
CN1129843C (zh) | 使用组合的数据处理器系统和指令系统 | |
CN1608244A (zh) | 伽罗瓦域乘法/乘法一加法乘法累加 | |
CN1728634A (zh) | 伽罗瓦域中相乘的方法和设备与求逆设备及字节替换设备 | |
CN1655118A (zh) | 处理器和编译器 | |
CN1898896A (zh) | 高级加密标准算法的可编程数据加密引擎 | |
CN1735881A (zh) | 用于执行计算操作的方法和系统以及一种设备 | |
CN1411630A (zh) | 用于生成循环余数核对代码以及生成其他基于余数的编码的方法、设备和产品 | |
CN1630204A (zh) | 具有矩阵转换技术的循环冗余码计算方法及系统 | |
CN1870499A (zh) | 产生新的多变量公钥密码系统的方法 | |
CN101044535A (zh) | 数据变换装置以及数据变换方法 | |
CN1717671A (zh) | 小型伽罗华域乘法器引擎 | |
CN1242321C (zh) | 应用蒙哥马利算法的幂剩余运算器 | |
CN1259617C (zh) | 一种加快rsa加/解密过程的方法及其模乘、模幂运算电路 | |
CN1582544A (zh) | 用于线性系统方案数组处理 | |
Wong et al. | High-speed RLWE-oriented polynomial multiplier utilizing Karatsuba algorithm | |
CN1905383A (zh) | 一种同频小区信道估计装置及方法 | |
Thirumoorthi et al. | An optimized m-term karatsuba-like binary polynomial multiplier for finite field arithmetic | |
CN1700203A (zh) | 基2单路深度延时反馈的流水线构成fft处理器的实现方法 | |
CN1031613A (zh) | 二—十进制加法器电路 | |
CN1967469A (zh) | 高效模乘方法及装置 | |
CN1492313A (zh) | 用于数字扫描变换装置的坐标转换方法及处理器 | |
CN1694061A (zh) | 操作数长度可伸缩的蒙哥马利模乘算法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20060222 |