CN102662628B - Rsa加密算法的指令优化处理器 - Google Patents
Rsa加密算法的指令优化处理器 Download PDFInfo
- Publication number
- CN102662628B CN102662628B CN201210079969.3A CN201210079969A CN102662628B CN 102662628 B CN102662628 B CN 102662628B CN 201210079969 A CN201210079969 A CN 201210079969A CN 102662628 B CN102662628 B CN 102662628B
- Authority
- CN
- China
- Prior art keywords
- instruction
- totalizer
- multiplier
- output
- low
- 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.)
- Expired - Fee Related
Links
Landscapes
- Executing Machine-Instructions (AREA)
Abstract
本发明涉及一种RSA加密算法的指令优化处理器。它采用了5条专门用于加速优化RSA加密算法的扩展指令,并且设计了一款与新指令集相对应的专用指令处理器模型-RSA_ASIP。所述5条专门用于加速优化RSA加密算法的扩展指令包括getbit、shift_l、shift_r、muladd和muladd2指令,所述与新指令集相对应的专用指令处理器模型-RSA_ASIP主要由数据存储器、代码存储器、寄存器堆、流水线和总线矩阵五部分组成。本发明设计的RSA_ASIP处理器中能够在保证软件实现的灵活性和可扩展性的前提下,大幅度地优化RSA的执行,经过对RSA1024、RSA2048的实现,与在ARM处理器上的实现比较,指令周期平均减少了64%,经过指令优化的处理器模型节省了资源消耗。
Description
技术领域
本发明涉及RSA的加解密技术,尤其涉及RSA算法中指令优化及扩展指令集处理器。
背景技术
RSA是目前最具有影响力的公钥加密算法,它能够有效地抵抗现有已知的密码攻击,已被ISO推荐为公钥数据加密标准。RSA不仅能够用于数据加密,而且能够进行数字签名。RSA是构建安全可靠的电子商务平台和可信的嵌入式计算环境(如物联网)的必选加密算法之一。
RSA加密算法是一种分组加密算法,首先对待加密的数据报文进行合理的分块,然后逐块地对每个报文进行加密。RSA密码系统的构建和实施主要分为以下个过程:(1)大素数p、q(目前至少512bit)的生成,该过程一般采用目前的推荐标准Miller-Rabin素性测试方法;(2)计算模数N=p*q.目前推荐N的二进制的bit位数至少为1024,推荐为1024+256x;(3)密钥的生成,RSA是非对称加密算法,其密钥分为公钥(e,N)和私钥(d,N),其中gcd(e,φ(N))=1即e和φ(N)互素,φ(N)=(p-1)*(q-1),d=e-1modφ(N)即d、e互为模φ(N)的乘法逆元;(4)加密过程,C=Me mod N其中M为明文,C为密文;(5)解密过程,M=Cd modN。
RSA算法的安全性是基于大整数的因式分解的复杂度。从以上对RSA算法的分析,可以看出RSA算法中的算术运算操作是非常耗时的,尤其是模幂运算操作。而在现代工业生产应用环境中使用RSA即必须克服其时间性方面的缺点。目前,业界已提出了各种优化RSA算法实施的方法,主要集中于3方面:
第一种方法是优化RSA算法的软件实现,如采用中国剩余定理(CRT)。
第二种方法是从硬件方面提高RSA运算的执行速度,如设计专用集成电路(ASIC)、设计专用于RSA的协处理器等。
第三种方法,扩展指令集的方式,将最能有效加速RSA算法的运算操作设计成指令并纳入到处理器指令集。
第一种方法实际上是对算法本身进行优化,能够在一定程度上加速RSA算法,但加速效果有限;第二种采用硬件加速的方法,虽然在加速效果上比较明显,但是这种优化方法可扩展性较弱,占的硬件资源相对较多,而且与其他程序模块很难结合;第三种方法通过对指令集扩展优化的设计方法,不仅减少了执行代码空间,提高了算法执行速度,而且在设计上易于实现,灵活性也比较强,对硬件资源的要求也比第二种方法要小很多,适合于小规模电路。由于这种优化技术的良好性能,它已经被应用到了多种加密算法的加速优化中。
发明内容
本发明的目的在于提供一种RSA加密算法的指令优化处理器,它采用了5条专门用于加速优化RSA加密算法的扩展指令,并且设计了一款与新指令集相对应的专用指令处理器模型—RSA_ASIP。通过与广泛使用的ARM处理器对比发现,经过指令扩展优化后,RSA加密算法在本发明设计的RSA_ASIP处理器中的实现比在ARM处理器中的实现平均减少了64.3%指令执行周期。
为实现上述目的,本发明采用如下技术方案:
一种RSA加密算法的指令优化处理器,它主要由数据存储器、代码存储器、寄存器堆、指令流水线和总线矩阵五部分组成;其中,寄存器堆主要由32个通用寄存器、1个取指寄存器、1个堆栈指针寄存器和1个链接寄存器组成;指令流水线采用三级流水线:取指流水线部件、译码流水线部件和执行流水线部件;流水线控制器对跳转指令译码部件进行控制,跳转指令只需要将跳转地址存储在取指寄存器中,不需要经过执行部件,然后接着对整个流水线的缓存进行刷新,防止流水线跳转引发错误;在处理器中除了通用指令译码部件和逻辑算术指令执行部件外,还添加了针对RSA的专用指令的扩展指令执行部件,来执行这些扩展的专用指令,在RSA扩展指令执行部件中,主要包括了5条新扩展指令的执行部件:
指令getbit执行部件,获取src1指定源操作数中的由src2指定的源操作数指定的bit位的值,并将该值存入dest对应的通用寄存器中;
针对大整数的左移和右移提出了优化指令shift_l执行部件和shift_r执行部件,指令shift_l执行部件将src1左移src2位并将来自低位移位并入的src1中,并存到到dest中,同时,将src1左移的溢出的位保存在src3中;
shift_r执行部件将src1右移src2位并将来自低位移位并入的src1中,并存到到dest中,同时,将src1右移的溢出的位保存在src3中;
指令muladd执行部件将src0与src1相乘的积并与scr2求和,结果的高位放在src2中,低位放在dest中;
指令muladd2执行部件将src0与src1相乘的积并与scr2、src3求和,结果的高位放在src3中,低位放在dest中。
所述扩展指令getbit执行部件包括1个移位器、1个与门和1个多路选择器;R0是目标操作数,R1的低5位指定要获取的位,R0和R1的低5位作为右移位器I的输入,右移位器I的输出和0x1作为32位与门I的输入,与门I输出指定的bit位的值;通过多路选择器I进行控制同步,当控制信号为1时,多路选择器I将目标结果送入到寄存器R0;如果控制信号为0时,输出无效。
所述扩展指令shift_l执行部件包括1个反向器、一个加法器、1个或门、2个移位器以及2个多路选择器;R0是两个移位器的输入源操作数,R1的低5位指定移位的位数;R1的低5位经过5位反向器I的和5位加法器I的输出和R0作为右移位器II的输入;R0和R1的低5位作为左移位器I的输入,左移位器I的输出结果和R2作为或门I的输入;两个多路选择器控制指令的同步和结果的输出,当控制信号为1时,左移位器I和或门I的输出结果分别送入到R2和R0;当控制信号为0时,输出无效。
所述扩展指令shift_r执行部件包括1个反向器、一个加法器、1个或门、2个移位器以及2个多路选择器;R0是两个移位器的输入源操作数,R1的低5位指定移位的位数;R1的低5位经过5位反向器II的和5位加法器II的输出和R0作为左移位器II的输入;R0和R1的低5位作为右移位器III的输入,右移位器III的输出结果和R2作为或门II的输入;两个多路选择器控制指令的同步和结果的输出,当控制信号为1时,左移位器II和或门II的输出结果分别送入到R2和R0;当控制信号为0时,输出无效。
所述扩展指令muladd执行部件包括4个乘法器、5个加法器、3个比较器以及2个多路选择器;R0的低16位和R1的低16位作为乘法器I的输入;R0的低16位和R1的高16位作为乘法器II的输入;R0的高16位和R1的低16位作为乘法器III的输入;R0的高16位和R1的高16位作为乘法器IV的输入;乘法器I输出的高16位和乘法器II输出的低16位作为加法器III的输入,其输出求和的结果和乘法器I的高16位作为比较器I的输入,同时该输出的求和结果和乘法器III的低16位作为加法器VI的输入;乘法器I输出的低16位和加法器VI的输出合成一个输入和R2作为加法器VII的输入;乘法器II的输出的高16位、乘法器III的输出的高16位以及乘法器IV的输出作为加法器IV的输入;比较器I、比较器II、比较器III的输出和加法器IV的输出作为加法器V的输入;两个多路选择器控制指令的同步和结果的输出,当控制信号为1时,加法器IV输出结果和加法器V的输出结果分别送入到R2和R0;当控制信号为0时,输出无效。
所述扩展指令muladd2执行部件包括4个乘法器、6个加法器、3个比较器以及2个多路选择器;R0的低16位和R1的低16位作为乘法器V的输入;R0的低16位和R1的高16位作为乘法器VI的输入;R0的高16位和R1的低16位作为乘法器VII的输入;R0的高16位和R1的高16位作为乘法器VIII的输入;乘法器V输出的高16位和乘法器VI输出的低16位作为加法器IX的输入,其输出求和的结果和乘法器V的高16位作为比较器V的输入,同时该输出的求和结果和乘法器VII的低16位作为加法器XII的输入;乘法器V输出的低16位和加法器XII的输出合成一个输入和加法器VIII的输出作为加法器XIII;乘法器VI的输出的高16位、乘法器VII的输出的高16位以及乘法器VIII的输出作为加法器X的输入;比较器IV、比较器V、比较器VI的输出和加法器X的输出作为加法器XI的输入;两个多路选择器控制指令的同步和结果的输出,当控制信号为1时,加法器XIII输出结果和加法器XI的输出结果分别送入到R2和R0;当控制信号为0时,输出无效。
所述数据存储器地址空间定义在0x0000-0x7FFF范围内,大小32K;代码存储器地址空间定义在0x8000-0xFFFF范围内,大小为32Kbytes。
本发明的设计思路为:在满足不改变原有指令集以及不影响处理器运行速度的前提下,
1)RSA算法的分析。对RSA上层算法进行充分的分析,通过对RSA算法的运算操作进行统计分析,找出其核心操作部分,对需要进行指令的优化的部分进行初步筛选。通过分析,RSA中模幂运算应当作为进行指令优化的首选核心部分。
2)RSA算法的高级语言的实现。采用高级语言C语言来实现RSA算法,该实现不仅能够保持上层算法层面的抽象性,又能看到具体的机器实现过程。
3)RSA算法的C语言实现中的DFG。从RSA的C语言实现中,可以很容易地找到相关实现部分的数据流图(DFG)。
4)RSA算法中专用指令的选择。从3)中生成DFG中,我们按照一定的专用指令选择算法,将DFG中能够进行并行、优化的部分作为专用指令的候选。根据这些专用指令的消耗的资源、使用的频度等以及对整个芯片的面积,资源限制,将其转化为一个整数线性规划问题。最终,筛选算法生成了5条可供扩展的指令。getbit用于对幂指数操作中位操作,shift_l和shift_r用于单精度数字的移位操作而不丢失移出的位,从而实现多精度大整数的移位操作,muladd和muladd2是Montgomery模乘单元的核心操作。
5)RSA专用处理器模型的LISA描述。将4)中生成专用指令整合到原有的32位处理器模型中,用LISA语言进行描述,并对该处理器模型进行仿真。
6)RSA专用处理器的RTL描述。对5)中生成处理器模型,通过Verilog/VHDL完成对RSA专用处理的RTL级的描述。
7)RAS专用处理器的实现。将6)中生成RTL级的RSA专用处理进行综合验证,并最终在FPGA上实现。
基于上述设计要求,本发明的模型硬件结构主要由数据存储器、代码存储器、寄存器堆、流水线及总线矩阵五部分组成。数据存储器地址空间定义在0x0000-0x7FFF范围内,大小32K。代码存储器地址空间定义在0x8000-0xFFFF范围内,大小为32Kbytes。寄存器堆由32个通用寄存器(GPR[0…31])、1个取指寄存器(FPR)、1个堆栈指针寄存器(SPR)和1个链接寄存器(LR)组成。流水线部分采用三级流水线:取指、译码和执行。流水线控制器主要负责对跳转指令进行控制,跳转指令只需要将跳转地址存储在取指寄存器(FPR)中,不需要经过执行部件,然后接着对流水线的缓存部分进行刷新,防止执行部件对跳转指令进行执行。在RSA_ASIP处理器的、执行部件中,除了通用指令的执行器外,还添加了RSA的专用扩展指令的执行器,来对扩展的指令进行专门执行。在流水线的指令执行级中,增加了对5条专用扩展指令的执行部件。
本发明的有益效果是:经过指令扩展优化后,本发明设计的RSA_ASIP处理器中在保证软件实现的灵活性和可扩展性的前提下,大幅度地优化RSA的执行,经过对RSA1024、RSA2048的实现,与在ARM处理器上的实现比较,指令周期平均减少了64%。这验证了本发明针对RSA算法中的核心运算过程提出的扩展指令集加速了RSA的执行,经过指令优化的处理器模型节省了资源消耗。
附图说明
图1为针对RSA算法指令优化的RSA_ASIP处理器设计流程图;
图2为针对RSA算法的RSA_ASIP处理器模型框图;
图3扩展指令getbit的指令执行部件电路框图;
图4扩展指令shift_l的指令执行部件电路框图;
图5扩展指令shift_r的指令执行部件电路框图;
图6扩展指令muladd的指令执行部件电路框图;
图7扩展指令muladd2的指令执行部件电路框图。
其中,1.寄存器堆,2.总线矩阵,3.代码存储器,4.数据存储器,5.指令流水线,6.流水线控制部件,7.流水线取指部件,8.流水线内部总线I,9.流水线译码部件,10.流水线内部总线II,11.流水线执行部件,12.右移位器I,13.与门I,14.多路选择器I,15.反向器I,16.左移位器I,17.加法器I,18.或门I,19.右移位器II 20.多路选择器II,21.多路选择器III,22.反相器II,23.右移位器III,24.加法器II,25.或门II,26.左移位器II,27.多路选择器IV,28.多路选择器V,29.乘法器I,30.乘法器II,31.乘法器III,32.乘法器IV,33.加法器III,34.加法器IV,35.比较器I,36.加法器V,37.加法器VI,38.加法器VII,39.比较器II,40.比较器III,41.多路选择器VI,42.多路选择器VII,43.加法器VIII,44.乘法器V,45.乘法器VI,46.乘法器VII,47.乘法器VIII,48.加法器IX,49.加法器X,50.比较器IV,51.比较器V,52.加法器XI,53.加法器XII,54.加法器XIII,55.比较器VI,56.比较器V,57.多路选择器VIII,58.多路选择器IX。
具体实施方式
下面结合附图与实施例对本发明做进一步说明。
图2中,一种根据扩展指令集设计的指令集处理器模型,它在硬件逻辑上实现了上述扩展指令,因此能够用于RSA加密算法的加速。处理器模型主要由寄存器堆1、总线矩阵2、代码存储器3、数据存储器4、指令流水线5、流水线控制部件6、流水线取指部件7、流水线内部总线I、流水线译码器部件9、流水线内部总线II10、流水线执行部件11组成,其中,数据存储器4地址空间定义在0x0000-0x7FFF范围内,大小32K;
代码存储器3地址空间定义在0x8000-0xFFFF范围内,大小为32Kbytes;
寄存器堆1主要由32个通用寄存器、1个取指寄存器、1个堆栈指针寄存器和1个链接寄存器组成;
指令流水线5采用三级流水线:取指流水线部件7、译码流水线部件9和执行流水线部件11;流水线控制器6对跳转指令译码部件进行控制,跳转指令只需要将跳转地址存储在取指寄存器中,不需要经过执行部件,然后接着对整个指令流水线5的缓存进行刷新,防止指令流水线5跳转引发错误;在处理器中除了通用指令译码部件和逻辑算术指令执行部件外,还添加了针对RSA的专用指令的扩展指令执行部件,来执行这些扩展的专用指令。在RSA扩展指令执行部件中,主要包括了5条新扩展指令的执行部件。
图3中,所述扩展指令getbit执行部件包括1个右移移位器I12、1个与门I13和1个多路选择器I14。R0是目标操作数,R1的低5位指定要获取的位,R0和R1的低5位作为右移位器I12的输入,右移位器I12的输出和0x1作为32位与门I13的输入,与门I13输出指定的bit位的值。通过多路选择器I14进行控制同步,当控制信号为1时,多路选择器I14将目标结果送入到寄存器R0;如果控制信号为0时,输出无效。
图4中,所述扩展指令shift_l执行部件包括1个反向器I15、一个加法器I17、1个或门I18、1个左移位器I16和1个右移为器II19以及多路选择器II20、III21。R0是所述两个移位器的输入源操作数,R1的低5位指定移位的位数。R1的低5位经过5位反向器I15的和5位加法器I17的输出和R0作为右移位器II19的输入;R0和R1的低5位作为左移位器I16的输入,左移位器I16的输出结果和R2作为或门I18的输入。两个多路选择器II20、III21控制指令的同步和结果的输出,当控制信号为1时,左移位器I16和或门I18的输出结果分别送入到R2和R0;当控制信号为0时,输出无效。
图5中,所述扩展指令shift_r执行部件包括1个反向器II22、一个加法器II24、1个或门II25、右移位器III23、左移位器II26以及2个多路选择器IV27、V28。R0是所述两个移位器的输入源操作数,R1的低5位指定移位的位数。R1的低5位经过5位反向器II22的和5位加法器II24的输出和R0作为左移位器II26的输入;R0和R1的低5位作为右移位器III23的输入,右移位器III23的输出结果和R2作为或门II25的输入。所述两个多路选择器控制指令的同步和结果的输出,当控制信号为1时,左移位器II26和或门II25的输出结果分别送入到R2和R0;当控制信号为0时,输出无效。
图6中,所述扩展指令muladd执行部件包括4个乘法器I29、II30、III31、IV32、5个加法器III33、IV34、V36、VI37、VII38、3个比较器I35、II39、III40以及2个多路选择器VI41、VII42。R0的低16位和R1的低16位作为乘法器I29的输入;R0的低16位和R1的高16位作为乘法器II30的输入;R0的高16位和R1的低16位作为乘法器III31的输入;R0的高16位和R1的高16位作为乘法器IV32的输入;乘法器I29输出的高16位和乘法器II30输出的低16位作为加法器III33的输入,其输出求和的结果和乘法器I29的高16位作为比较器I35的输入,同时该输出的求和结果和乘法器III31的低16位作为加法器VI37的输入;乘法器I29输出的低16位和加法器VI37的输出合成一个输入和R2作为加法器VII38的输入;乘法器II30的输出的高16位、乘法器III31的输出的高16位以及乘法器IV32的输出作为加法器IV34的输入;比较器I35、比较器II39、比较器III40的输出和加法器IV34的输出作为加法器V36的输入。所述两个多路选择器控制指令的同步和结果的输出,当控制信号为1时,加法器IV34输出结果和加法器V36的输出结果分别送入到R2和R0;当控制信号为0时,输出无效。
图7中,所述扩展指令muladd2执行部件包括4个乘法器V44、VI45、VII46、VIII47、6个加法器VIII43、IX48、X49、XI52、XII53、XIII54、3个比较器IV50、V51、VI55、V56以及2个多路选择器VIII57、IX58。R0的低16位和R1的低16位作为乘法器V44的输入;R0的低16位和R1的高16位作为乘法器VI45的输入;R0的高16位和R1的低16位作为乘法器VII46的输入;R0的高16位和R1的高16位作为乘法器VIII47的输入;乘法器V44输出的高16位和乘法器VI45输出的低16位作为加法器IX48的输入,其输出求和的结果和乘法器V44的高16位作为比较器V51的输入,同时该输出的求和结果和乘法器VII46的低16位作为加法器XII53的输入;乘法器V44输出的低16位和加法器XII53的输出合成一个输入和加法器VIII43的输出送入加法器XIII54;乘法器VI45的输出的高16位、乘法器VII46的输出的高16位以及乘法器VIII47的输出作为加法器X49的输入;比较器IV50、比较器V51、比较器VI55的输出和加法器X49的输出作为加法器XI52的输入。所述的两个多路选择器VIII57、IX58控制指令的同步和结果的输出,当控制信号为1时,加法器XIII54输出结果和加法器XI52的输出结果分别送入到R0和R3;当控制信号为0时,输出无效。
本发明通过对RSA算法中核心运算操作进行分析,在满足不改变指令操作码长度、指令位数以及不影响处理器运行速度的前提下,对RSA加密算法中的核心运算过程进行了指令扩展优化,共设计了5条扩展指令用于加速RSA加密算法中的核心运算过程,具体过程如下:
1.在执行模幂运算时,首先要确定幂指数每一个二进制bit的值,然后对接着进行相应的操作。在传统的ARM处理器中,没有专用于取一个操作数指定bit位的值,执行语句为:
R0=(R0>>R1)&0x 01;
而对应的ARM编译器汇编语言为3条语句:
Sub R2,#31,R1
leftshift R0,R0,R2
rightshift R0,R0,31
上述汇编语言的含义是先通过左移将R0的R1bit位左边的bit位清除,然后通过右移31位将R1bit右边的bit位清除,同时将其自身作为R0的最低位。
根据上述汇编语言的功能,设计了一条新的指令getbit,能够在一个时钟周期内完成3条语句所完成的功能。新指令getbit<dest>=<src1>,<src2>,共有3个操作数,其中dest,src1,src2都是通用寄存器类型,分别对应着存放目标操作数,源操作数1以及源操作数2。
指令getbit的具体格式如表1所示:
表1 getbit指令格式
101000 | dest | src1 | src2 | xxxxxxxxxxx |
31 26 | 25 21 | 20 16 | 15 11 | 10 0 |
该指令的操作码为101000,在指令格式中,操作码的位数为6位,每个操作数的位数为5位,最低10位为不确定的位用于补齐,保证指令的长度为32位。这条指令完成的功能是获取src1指定源操作数中的由src2指定的源操作数指定的bit位的值,并将该值存入dest对应的通用寄存器中。
2.在模幂运算中,对多精度大整数的移位操作是频繁,原有指令只是简单将溢出的bit位简单的丢弃,而这些溢出的位是有用,因此需要额外的指令来获取这些溢出的bit位并作相应的处理才能保证逻辑的正确性。针对大整数的左移和右移提出了优化指令shift_l和shift_r。其中,shift_l执行对应的ARM汇编语句为:
R3=R0>>(32-R1);
R0=R0<<R1;
R0=R0|R2;
R2=R3;
上述汇编语句的含义为对通用寄存器R3保留通用寄存器R0左移R1位溢出的位数,接着R0左移R1位并将来自低位的移位R2并入,最后将R3保存到R2中。为了能够在一个时钟周期内完成移位操作,设计了一条新指令shift_l来替代上面四条语句,shift_l<dest>=<src1>,<src2>,<src3>,具体格式如表2所示:
表2 shift_l指令格式
101001 | dest | src1 | src2 | src3 | xxxxxx |
31 26 | 25 21 | 20 16 | 15 11 | 10 6 | 5 0 |
该指令的操作码为101001,操作数dest、src1、src2、src3的长度各为5位,指令的末尾填充6位补齐。这条指令的功能是将src1左移src2位并将来自低位移位并入的src1中,并存到到dest中,同时,将src1左移的溢出的位保存在src3中。
shift_r对应的ARM汇编语言为:
R3=R0<<(32-R1);
R0=R0>>R1;
R0=R0|R2;
R2=R3;
上述汇编语句的含义为对通用寄存器R3保留通用寄存器R0右移R1位溢出的位数,接着R0右移R1位并将来自低位的移位R2并入,最后将R3保存到R2中。为了能够在一个时钟周期内完成移位操作,设计了一条新指令shift_r来替代上面四条语句,shift_r<dest>=<src1>,<src2>,<src3>,具体格式如表3所示:
表3 shift_r指令格式
101010 | dest | src1 | src2 | src3 | xxxxxx |
31 26 | 25 21 | 20 16 | 15 11 | 10 6 | 5 0 |
该指令的操作码为101010,操作数dest、src1、src2、src3的长度各为5位,指令的末尾填充6位补齐。这条指令的功能是将src1右移src2位并将来自低位移位并入的src1中,并存到到dest中,同时,将src1右移的溢出的位保存在src3中。
最终专用指令处理器(RSA_ASIP)模型,以Xilinx的以Virtex5 LX110T FPGA为平台,对设计的模型进行验证和性能分析。将RSA加密算法实现分别运行在本发明设计的处理器模型和在嵌入式领域广泛使用的ARM处理器上。通过对比发现,经过指令扩展优化,在本发明设计的RSA_ASIP处理器中实现的RSA1024、RSA2048比在ARM处理器中的实现平均减少了64%指令执行周期;显著地提高了RSA的执行效率。这验证了本发明针对RSA加密算法的扩展指令集确实加速了RSA的执行过程,而且经过指令优化的处理器模型在节省资源消耗上也有较大的提高。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
上述执行语句的对应ARM汇编语言的实现将更加复杂,使用非常多的指令周期。通过对上述功能语句的全面分析,对能够并行化和优化设计的部分进行优化的设计,最终用两条指令muladd、muladd2实现了相应的功能并保证在一个指令周期内完成。优化设计的新指令muladd<dest>,<src1>,<src2>,<src3>指令的具体格式如表4所示:
表4 muladd指令格式
101011 | dest | src0 | src1 | src2 | xxxxxx |
31 26 | 25 21 | 20 16 | 15 11 | 10 6 | 5 0 |
该指令的操作码为101011,操作数dest、src0、src1、src2都是寄存器类型,长度各为5位,指令的末尾填充6位补齐。该指令的功能是将src0与src1相乘的积并与scr2求和,结果的高位放在src2中,低位放在dest中。优化设计的新指令muladd2<dest>,<src1>,<src2>,<src3>指令的具体格式如表5所示:
表5 muladd2指令格式
101011 | dest | src0 | src1 | src2 | src3 | x |
31 26 | 25 21 | 20 16 | 15 11 | 10 6 | 5 1 | 0 |
该指令的操作码为101100,操作数dest、src0、src1、src2、src3都是寄存器类型,长度各为5位,指令的末尾填充1位补齐。该指令的功能是将src0与src1相乘的积并与scr2、src3求和,结果的高位放在src3中,低位放在dest中。
本发明根据新扩展的指令集,设计了一款专门针对RSA的处理器模型—RSA_ASIP。该处理器在硬件逻辑上实现了上述5条扩展指令,因此能够加速RSA加密算法中核心运算过程。处理器模型的指令集由28条指令构成,包括10条ALU通用指令,如add加法指令,xor移位指令;6条访存指令,如stw写数据存储器指令,ldw读数据存储器指令;7条跳转指令,如jeq两个源操作数相等则跳转指令,jp无条件跳转指令;5条针对RSA的扩展优化指令,包括getbit指令、shift_l指令、shift_r指令、muladd指令和muladd2指令。RSA_ASIP处理器模型的指令列表如下表6所示:
表6RSA_ASIP处理器指令集
ALU通用指令 | add,adc,sub,sbb,or,and,xor,shl,shr,nop |
跳转指令 | jp,jeq,jne,jl,jle,ja,jae |
访存指令 | stb,sth,stw,ldb,ldh,ldw |
RSA专用扩展指令 | getbit,shift_l,shift_r,muladd,muladd2 |
Claims (7)
1.一种RSA加密算法的指令优化处理器,包括:寄存器堆、总线矩阵、代码存储器、数据存储器、指令流水线、流水线控制部件、流水线取指部件、流水线内部总线、流水线译码器部件、流水线内部总线II以及流水线执行部件,其中,寄存器堆包括32个通用寄存器、1个取指寄存器、1个堆栈指针寄存器和1个链接寄存器;指令流水线采用三级流水线:取指流水线部件、译码流水线部件和执行流水线部件;流水线控制部件对跳转指令译码部件进行控制,跳转指令只需要将跳转地址存储在取指寄存器中,不需要经过执行部件,然后接着对整个流水线的缓存进行刷新,防止流水线跳转引发错误;其特征是,在处理器中除了通用指令译码部件和逻辑算术指令执行部件外,还包括了5条新扩展指令的执行部件:
指令getbit执行部件,获取src1指定源操作数中的由src2指定的源操作数指定的bit位的值,并将该值存入dest对应的通用寄存器中;
针对大整数的左移和右移提出了优化指令shift_l执行部件和 shift_r执行部件,指令shift_l执行部件将src1左移src2位,并将来自低位的移位填充入src1中,并存到dest中,同时,将src1左移的溢出的位保存在src3中;
shift_r执行部件将src1右移src2位,并将来自高位的移位填充入src1中,并存到dest中,同时,将src1右移的溢出的位保存在src3中;
指令muladd执行部件将src0与src1相乘的积并与scr2求和,结果的高位放在src2中,低位放在dest中;
指令muladd2执行部件将src0与src1相乘的积并与scr2、src3求和,结果的高位放在src3中,低位放在dest中。
2.如权利要求1所述的RSA加密算法的指令优化处理器,其特征是,所述指令getbit执行部件包括1个移位器、1个与门和1个多路选择器;R0 是目标操作数,R1的低5位指定要获取的位,R0和R1的低5位作为右移位器I的输入,右移位器I的输出和0x1作为32位与门I的输入,与门I输出指定的bit位的值;通过多路选择器I进行控制同步,当控制信号为1时,多路选择器I将目标结果送入到寄存器R0;如果控制信号为0时,输出无效;
指令getbit 形式为<dest> = <src1> , <src2>,它共有3个操作数,其中dest,src1, src2 都是通用寄存器类型,分别对应着存放目标操作数,源操作数1以及源操作数2。
3.如权利要求1所述的RSA加密算法的指令优化处理器,其特征是,所述指令shift_l执行部件包括1个反向器、一个加法器、1个或门、2个移位器以及2个多路选择器;R0是两个移位器的输入源操作数,R1的低5位指定移位的位数;R1的低5位经过5位反向器I后的输出与1作为5位加法器I的两个输入,5位加法器I的输出和R0作为右移位器II的两个输入;R0和R1的低5位作为左移位器I的输入,左移位器I的输出结果和R2作为或门I的输入;两个多路选择器控制指令的同步和结果的输出,当控制信号为1时,左移位器I和或门I的输出结果分别送入到R2和R0;当控制信号为0时,输出无效; 指令shift_l 形式为<dest> = <src1>, <src2>, <src3>,指令shift_l的操作码为101001,操作数dest、src1、src2、src3的长度各为5位,指令的末尾填充6位0补齐。
4.如权利要求1所述的RSA加密算法的指令优化处理器,其特征是,所述指令shift_r执行部件包括1个反向器、一个加法器、1个或门、2个移位器以及2个多路选择器;R0是两个移位器的输入源操作数,R1的低5位指定移位的位数;R1的低5位经过5位反向器II输出后与1作为5位加法器II的两个输入,5位加法器II的输出与R0作为左移位器II的两个输入;R0和R1的低5位作为右移位器III的输入,右移位器III的输出结果和R2作为或门II的输入;两个多路选择器控制指令的同步和结果的输出,当控制信号为1时,左移位器II和或门II的输出结果分别送入到R2和R0;当控制信号为0时,输出无效;
指令shift_r形式为<dest> = <src1>, <src2>, <src3>,指令shift_r的操作码为101010,操作数dest、src1、src2、src3的长度各为5位,指令的末尾填充6位0补齐。
5.如权利要求1所述的RSA加密算法的指令优化处理器,其特征是,所述指令muladd执行部件包括4个乘法器、5个加法器、3个比较器以及2个多路选择器;R0的低16位和R1的低16位作为乘法器I的输入;R0的低16位和R1的高16位作为乘法器II的输入;R0的高16位和R1的低16位作为乘法器III的输入;R0的高16位和R1的高16位作为乘法器IV的输入;乘法器I输出的高16位和乘法器II输出的低16位作为加法器III的输入,其输出求和的结果和乘法器I的高16位作为比较器I的输入,同时该输出的求和结果和乘法器III的低16位作为加法器VI的输入;乘法器I输出的低16位和加法器VI的输出合成一个输入和R2作为加法器VII的输入;乘法器II的输出的高16位、乘法器III的输出的高16位以及乘法器IV的输出作为加法器IV的输入;比较器I、比较器II、比较器III的输出和加法器IV的输出作为加法器V的输入;两个多路选择器控制指令的同步和结果的输出,当控制信号为1时,加法器IV输出结果和加法器V的输出结果分别送入到R2和R0;当控制信号为0时,输出无效;
指令 muladd 形式为<dest>,<src0>,<src1>,<src2>,指令muladd的操作码为101011,操作数dest、src0、src1、src2都是寄存器类型,长度各为5位,指令的末尾填充6位0补齐。
6.如权利要求1所述的RSA加密算法的指令优化处理器,其特征是,所述指令muladd2执行部件包括4个乘法器、6个加法器、3个比较器以及2个多路选择器;R0的低16位和R1的低16位作为乘法器V的输入;R0的低16位和R1的高16位作为乘法器VI的输入;R0的高16位和R1的低16位作为乘法器VII的输入;R0的高16位和R1的高16位作为乘法器VIII的输入;乘法器V输出的高16位和乘法器VI输出的低16位作为加法器IX的输入,其输出求和的结果和乘法器V的高16位作为比较器V的输入,同时该输出的求和结果和乘法器VII的低16位作为加法器XII的输入;乘法器V输出的低16位与加法器XII的输出合成一个32位的数作为加法器XIII的一个输入,而加法器VIII的输出作为加法器XIII的另一个输入;乘法器VI的输出的高16位、乘法器VII的输出的高16位以及乘法器VIII的输出作为加法器X的输入;比较器IV、比较器V、比较器VI的输出和加法器X的输出作为加法器XI的输入;两个多路选择器控制指令的同步和结果的输出,当控制信号为1时,加法器XIII输出结果和加法器XI的输出结果分别送入到R0和R3;当控制信号为0时,输出无效;
指令muladd2形式为<dest>,<src0>,<src1>,<src2>,<src3>,指令muladd2的操作码为101100,操作数dest、src0、src1、src2、src3都是寄存器类型,长度各为5位,指令的末尾填充1位0补齐。
7.如权利要求1所述的RSA加密算法的指令优化处理器,其特征是,所述数据存储器地址空间定义在0x0000-0x7FFF范围内,大小32KB;代码存储器地址空间定义在0x8000-0xFFFF范围内,其对应的存储空间大小为32Kbytes。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210079969.3A CN102662628B (zh) | 2012-03-23 | 2012-03-23 | Rsa加密算法的指令优化处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210079969.3A CN102662628B (zh) | 2012-03-23 | 2012-03-23 | Rsa加密算法的指令优化处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102662628A CN102662628A (zh) | 2012-09-12 |
CN102662628B true CN102662628B (zh) | 2015-03-04 |
Family
ID=46772129
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210079969.3A Expired - Fee Related CN102662628B (zh) | 2012-03-23 | 2012-03-23 | Rsa加密算法的指令优化处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102662628B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10270709B2 (en) | 2015-06-26 | 2019-04-23 | Microsoft Technology Licensing, Llc | Allocating acceleration component functionality for supporting services |
WO2015096167A1 (en) * | 2013-12-28 | 2015-07-02 | Intel Corporation | Rsa algorithm acceleration processors, methods, systems, and instructions |
US10198294B2 (en) | 2015-04-17 | 2019-02-05 | Microsoft Licensing Technology, LLC | Handling tenant requests in a system that uses hardware acceleration components |
US9983938B2 (en) * | 2015-04-17 | 2018-05-29 | Microsoft Technology Licensing, Llc | Locally restoring functionality at acceleration components |
US9792154B2 (en) | 2015-04-17 | 2017-10-17 | Microsoft Technology Licensing, Llc | Data processing system having a hardware acceleration plane and a software plane |
CN105005465B (zh) * | 2015-06-12 | 2017-06-16 | 北京理工大学 | 基于比特或字节并行加速的处理器 |
US10216555B2 (en) | 2015-06-26 | 2019-02-26 | Microsoft Technology Licensing, Llc | Partially reconfiguring acceleration components |
CN106599715A (zh) * | 2016-11-29 | 2017-04-26 | 江苏蓝深远望科技股份有限公司 | 文件加密方法、文件解密方法及装置 |
CN109039640B (zh) * | 2018-08-03 | 2021-10-19 | 广东工业大学 | 一种基于rsa密码算法的加解密硬件系统及方法 |
CN112099762B (zh) * | 2020-09-10 | 2024-03-12 | 上海交通大学 | 快速实现sm2密码算法的协处理系统及方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4870681A (en) * | 1986-03-05 | 1989-09-26 | Holger Sedlak | Cryptographic method and cryptographic processor for carrying out the method |
CN102221990A (zh) * | 2011-05-26 | 2011-10-19 | 山东大学 | 针对aes对称加密算法的指令优化方法及其处理器 |
-
2012
- 2012-03-23 CN CN201210079969.3A patent/CN102662628B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4870681A (en) * | 1986-03-05 | 1989-09-26 | Holger Sedlak | Cryptographic method and cryptographic processor for carrying out the method |
CN102221990A (zh) * | 2011-05-26 | 2011-10-19 | 山东大学 | 针对aes对称加密算法的指令优化方法及其处理器 |
Non-Patent Citations (1)
Title |
---|
Design and VLSI Implementation of a Security ASIP;Ronghua Lu等;《IEEE International Conference on ASIC》;20071025;866-869 * |
Also Published As
Publication number | Publication date |
---|---|
CN102662628A (zh) | 2012-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102662628B (zh) | Rsa加密算法的指令优化处理器 | |
Huang et al. | New hardware architectures for Montgomery modular multiplication algorithm | |
CN111512292A (zh) | 用于可配置空间加速器中的非结构化数据流的装置、方法和系统 | |
Cheung et al. | Customizable elliptic curve cryptosystems | |
Kudithi et al. | High-performance ECC processor architecture design for IoT security applications | |
CN104375802A (zh) | 一种乘除法器及运算方法 | |
Han et al. | A 65 nm cryptographic processor for high speed pairing computation | |
CN102081513B (zh) | Aes加密算法中列混淆过程指令优化方法及其指令集处理器 | |
Ahmed et al. | Synthesizable-from-C embedded processor based on MIPS-ISA and OISC | |
Han et al. | A heterogeneous multicore crypto-processor with flexible long-word-length computation | |
Savaş et al. | Efficient unified Montgomery inversion with multibit shifting | |
Quan et al. | High-level synthesis for large bit-width multipliers on FPGAs: a case study | |
Khan et al. | Design and performance analysis of a unified, reconfigurable HMAC-Hash unit | |
Amin et al. | High-radix multiplier-dividers: Theory, design, and hardware | |
Suresh et al. | FPGA Implementation of MIPS RISC Processor | |
Wenger | A lightweight ATmega-based application-specific instruction-set processor for elliptic curve cryptography | |
CN204143432U (zh) | 一种乘除法器 | |
Shu et al. | Reconfigurable computing approach for Tate pairing cryptosystems over binary fields | |
Gallin et al. | Architecture level optimizations for Kummer based HECC on FPGAs | |
Guo et al. | Optimized system-on-chip integration of a programmable ECC coprocessor | |
Reymond et al. | A hardware pipelined architecture of a scalable Montgomery modular multiplier over GF (2 m) | |
Nedjah et al. | Embedded Cryptographic Hardware: Methodologies and Architectures | |
CN102081514A (zh) | AES加密算法中Sbox生成指令优化方法及其指令集处理器 | |
Wang et al. | High radix montgomery modular multiplier on modern fpga | |
Winograd et al. | An Automated Scheduler-Based Approach for the Development of Cryptoprocessors for Pairing-Based Cryptosystems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150304 Termination date: 20160323 |
|
CF01 | Termination of patent right due to non-payment of annual fee |