一种支持双域的快速rsa密码协处理器的制造方法
【专利摘要】一种支持双域的快速RSA密码协处理器,包括:域控制寄存器,用于接收外部输入的控制信号;控制寄存器,用于接收外部输入的控制信号;RAM存储单元,用于存储外部输入的操作数以及运算结果;二元扩域,连接域控制寄存器的输出端,接收域控制寄存器的控制信号;素数域,连接域控制寄存器的输出端,接收域控制寄存器的控制信号;双域模乘单元,分别连接控制寄存器、RAM存储单元、二元扩域和素数域,用于根据域控制寄存器的控制信号对RAM存储单元存储的外部操作数进行计算,并将计算结果存回到RAM存储单元内。本发明有效地避免了大量的冗余数据写回过程,提高了RSA的加解密性能,实现了不同有限域之间切换的功能,面积增加不到20%,效果非常明显。
【专利说明】—种支持双域的快速RSA密码协处理器
【技术领域】
[0001]本发明涉及一种RSA密码协处理器。特别是涉及一种支持双域的快速RSA密码协处理器。
【背景技术】
[0002]随着计算机网络和信息技术的发展,信息安全在各领域发挥着越来越重要的作用,其中密码学已经成为信息安全技术的核心。RSA是目前公认的在理论和实际应用中最为成熟和完善的一种公钥密码体制,它是基于大整数因子分解的困难性来确保算法的安全性。目前大多数使用公钥密码进行加密和数字签名都是使用RSA算法。
[0003]大数模幂运算是RSA算法的核心运算,它是由一系列大数模乘运算构成,大数的位数需要在数百bit到上千bit,因此运算量非常大,模乘运算是制约其计算速度的瓶颈,解决模乘的速度问题是提高其运算效率的最根本方法。公钥密码是基于有限域的算法,素数域和二元扩域是RSA最常使用的有限域,为了实现快速可配置的RSA算法,设计了系统的运算、存储和控制三大模块以及三个模块间的互联方式。
【发明内容】
[0004]本发明所要解决的技术问题是,提供一种利用各功能单元之间的级联,有效的提高了 RSA的加解密性能,并实现了不同有限域之间切换的功能,充分复用了硬件资源的支持双域的快速RSA密码协处理器。
[0005]本发明所采用的技术方案是:一种支持双域的快速RSA密码协处理器,包括:
[0006]域控制寄存器,用于接收外部输入的控制信号;
[0007]控制寄存器,用于接收外部输入的控制信号;
[0008]RAM存储单元,用于存储外部输入的操作数以及运算结果;
[0009]二元扩域,连接域控制寄存器的输出端,接收域控制寄存器的控制信号;
[0010]素数域,连接域控制寄存器的输出端,接收域控制寄存器的控制信号;
[0011]双域模乘单元,分别连接控制寄存器、RAM存储单元、二元扩域和素数域,用于根据域控制寄存器的控制信号对RAM存储单元存储的外部操作数进行计算,并将计算结果存回到RAM存储单元内。
[0012]所述的RAM存储单元包括有第一单口 RAM存储单元、第二单口 RAM存储单元和第三单口 RAM存储单元。
[0013]所述的双域模乘单元包括有用于模拟算法执行的状态机单元和用于通过融合两种不同有限域的算法结构,将模乘运算统一为a+x*y+b的乘累加器单元。
[0014]所述的状态机单元包括有分别对应接收从RAM存储单元输出的操作数Xi的第四多路选择器、操作数Yi的第七多路选择器、操作数Xi,Tj的第一多路选择器、操作数Ti,Nj的异或门、操作数Zi的第三多路选择器,以及设置有分别连接所述乘累加器单元的二元扩域输出端并存储不同时间的进位累加数的Ca存储器和Cb存储器、分别对应连接所述的第一多路选择器、第二多路选择器和第三多路选择器的输出端的用于存储操作数的X存储器、Y存储器和Z存储器,其中,所述或门的另一输入端接收外部的Inv信号输出端连接第二多路选择器的输入端,所述的第一多路选择器、第二多路选择器和第三多路选择器的输入端还分别连接所述乘累加器单元的素数域输出端,所述的第三多路选择器和第四多路选择器的输入端还连接Ca存储器的输出端,所述Cb存储器的输出端分别连接第四多路选择器和第五多路选择器的输入端,所述X存储器、Y存储器和Z存储器的输出端分别对应连接第五多路选择器、第六多路选择器和第七多路选择器的输入端,所述第五多路选择器的另一个输入端接收数字1,所述的第四多路选择器、第五多路选择器、第六多路选择器和第七多路选择器)的输出端分别构成状态机单元的输出端连接所述的乘累加器单元。
[0015]所述的乘累加器单元由输入端分别接收RAM存储器单元输入的64bit的二进制的加数a、加数b、乘数X和乘数Y,输出端分别输出素数域结果c和二元扩域结果d的乘累加器构成,所述的乘累加器包括有第一加法器、第二加法器、第三加法器和对接收的乘数X和乘数Y相乘后分别输出给第二加法器的双域乘法器,所述的第一加法器的输入端分别接收二进制的加数a、加数b,输出端分别连接第二加法器和第三加法器的输入端,所述第二加法器的输出端输出素数域结果C,所述第三加法器的输出端输出二元扩域结果d。
[0016]所述的双域乘法器包括有依次串接的64个半加/全加阵列,连接所述64个半加/全加阵列的进位输出端的华莱士树,分别连接所述wzllace树的进位输出端和求和输出端的进位传播加法器,其中,所述的64个半加/全加阵列的第一个半加/全加阵列的输入端接收RAM存储器单元输入的乘数X和乘数Y,最后一个半加/全加阵列的输出端分别连接所述的进位传播加法器的输入端和所述的第二加法器,所述的进位传播加法器的输出端连接所述的第三加法器。
[0017]本发明的一种支持双域的快速RSA密码协处理器,基于前人对RSA模幂算法以及蒙哥马利模乘算法的研究基础之上,与抗侧信道攻击方法相结合,实现了具有一定的抗侧信道攻击的专用硬件密码加速模块。相比于通用处理器、专用集成电路以及FPGA等实现方式,本发明在性能及安全性上都有一定的优势。相比于其他RSA加密硬件,本发明添加了支持双域的功能,扩展额外的数据通路,利用各功能单元之间的级联,有效地避免了大量的冗余数据写回过程,提高了 RSA的加解密性能,实现了不同有限域之间切换的功能,并充分复用了硬件资源,与仅支持单域运算的密码模块,面积增加不到20%,效果非常明显。
【专利附图】
【附图说明】
[0018]图1是本发明的整体构成框图;
[0019]图2是本发明中双域模乘单元逻辑结构图;
[0020]图3是本发明中双域乘累加器逻辑结构图;
[0021]图4是本发明中双域乘法器的原理图。
[0022]图中
[0023]1:域控制寄存器2:控制寄存器
[0024]3:RAM存储单元 4:双域模乘单元
[0025]5: 二元扩域 6:素数域【具体实施方式】
[0026]下面结合实施例和附图对本发明的一种支持双域的快速RSA密码协处理器做出详细说明。
[0027]本发明的一种支持双域的快速RSA密码协处理器,在模幂层采用了蒙哥马利阶梯算法,在模乘层使用FIOS算法。并通过对模乘、模幂算法进行综合研究与整体考虑,对运算中相似运算进行硬件复用以减小面积;对架构中RAM进行特殊连接以减少模幂过程中数据的多次搬运,节省数据传输时间;对硬件实现过程中进行可配置设计,使得加解密支持不同有限域的运算,从而可以满足不同用户的需求,同时为了支持两种最长使用的有限域,设计了一种高效64bit*64bit双域乘法器。其次通过对侧信道攻击的研究,从最初的算法研究到后期的硬件设计过程中,将抗攻击特性贯穿于整个设计之中,使得硬件设计可以有效的防止功耗攻击和故障攻击,在此基础之上,对硬件模乘模块设计进行了改进,从而防止了模乘泄露功耗的隐患。
[0028]本发明的一种支持双域的快速RSA密码协处理器设计了特殊的指令集,用户通过访问预留的接口,传输特定的指令,可以动态的调整运算的有限域。为了系统能够方便的集成于SoC (System on Chip)之上,本发明采用的是单口 RAM接口信号与外部互联,系统所有主要数据以及RAM均为64bit位宽。
[0029]如图1所示,本发明的一种支持双域的快速RSA密码协处理器,包括:域控制寄存器1,用于接收外部输入的控制信号;控制寄存器2,用于接收外部输入的控制信号;RAM存储单元3,用于存储外部输入的操作数功输出运算结果;二元扩域5,连接域控制寄存器I的输出端,接收域控制寄存器I的控制信号;素数域6,连接域控制寄存器I的输出端,接收域控制寄存器I的控制信号;双域模乘单元4,分别连接控制寄存器2、RAM存储单元3、二元扩域5和素数域6,用于根据域控制寄存器I的控制信号对RAM存储单元3存储的外部操作数进行计算,并将计算结果存回到RAM存储单元3内。其中,
[0030]所述的RAM存储单元3包括有第一单口 RAM存储单元31、第二单口 RAM存储单元32和第三单口 RAM存储单元33。所述的双域模乘单元4包括有用于模拟算法执行的状态机单元41和用于通过融合两种不同有限域的算法结构,将模乘运算统一为a+x*y+b的乘累加器单元42。
[0031]本发明所述的状态机单元41是采用了蒙哥马利优化算法FIOS (finelyintegrated operand scanning method)进行设计的。蒙哥马利优化算法中将乘数X、Y、N分成r bit的数进行运算,这样对硬件实现非常有好处,可以高效利用寄存器。而且算法中所有操作均可变化为一种操作,这样将有利于节省硬件资源。蒙哥马利优化算法包括有素域下的模乘算法和二元扩域下的模乘算法。其中,
[0032]1、素域下的模乘算法
[0033]表I给出的算法是一种高基的蒙哥马利模乘算法,将大数的操作数划分为一块块小bit的字参与运算,本专利设计的是64bit位宽的高基模乘器。
[0034]表1、素域的FIOS算法
[0035]
【权利要求】
1.一种支持双域的快速RSA密码协处理器,其特征在于,包括: 域控制寄存器(1),用于接收外部输入的控制信号; 控制寄存器(2),用于接收外部输入的控制信号; RAM存储单元(3 ),用于存储外部输入的操作数以及运算结果; 二元扩域(5),连接域控制寄存器(I)的输出端,接收域控制寄存器(I)的控制信号; 素数域(6),连接域控制寄存器(I)的输出端,接收域控制寄存器(I)的控制信号; 双域模乘单元(4),分别连接控制寄存器(2)、RAM存储单元(3)、二元扩域(5)和素数域(6),用于根据域控制寄存器(I)的控制信号对RAM存储单元(3)存储的外部操作数进行计算,并将计算结果存回到RAM存储单元(3)内。
2.根据权利要求1所述的一种支持双域的快速RSA密码协处理器,其特征在于,所述的RAM存储单元(3)包括有第一单口 RAM存储单元(31 )、第二单口 RAM存储单元(32)和第三单口 RAM存储单元(33)。
3.根据权利要求1所述的一种支持双域的快速RSA密码协处理器,其特征在于,所述的双域模乘单元(4)包括有用于模拟算法执行的状态机单元(41)和用于通过融合两种不同有限域的算法结构,将模乘运算统一为a+x*y+b的乘累加器单元(42)。
4.根据权利要求3所述的一种支持双域的快速RSA密码协处理器,其特征在于,所述的状态机单元(41)包括有分别对应接收从RAM存储单元(3)输出的操作数Xi的第四多路选择器(415)、操作数Yi的第七多路选择器(418)、操作数Xi,Tj的第一多路选择器(412)、操作数Ti,Nj的异或门(413)、操作数Zi的第三多路选择器(414),以及设置有分别连接所述乘累加器单元(42)的二元扩域输出端并存储不同时间的进位累加数的Ca存储器(419)和Cb存储器(4120)、分别对应连接所述的第一多路选择器(412)、第二多路选择器(413)和第三多路选择器(414)的输出端的用于存储操作数的X存储器(421 )、Y存储器(4122)和Z存储器(4123),其中,所述或门(413)的另一输入端接收外部的Inv信号输出端连接第二多路选择器(413)的输入端,所述的第一多路选择器(412)、第二多路选择器(413)和第三多路选择器(414)的输入端还分别连接所述乘累加器单元(42)的素数域输出端,所述的第三多路选择器(414)和第四多路选择器(415)的输入端还连接Ca存储器(419)的输出端,所述Cb存储器(4120)的输出端分别连接第四多路选择器(415)和第五多路选择器(416)的输入端,所述X存储器(421)、Y存储器(4122)和Z存储器(4123)的输出端分别对应连接第五多路选择器(416)、第六多路选择器(417)和第七多路选择器(418)的输入端,所述第五多路选择器(416)的另一个输入端接收数字1,所述的第四多路选择器(415)、第五多路选择器(416)、第六多路选择器(417)和第七多路选择器(418)的输出端分别构成状态机单元(41)的输出端连接所述的乘累加器单元(42)。
5.根据权利要求3所述的一种支持双域的快速RSA密码协处理器,其特征在于,所述的乘累加器单元(42)由输入端分别接收RAM存储器单元(3)输入的64bit的二进制的加数a、加数b、乘数X和乘数Y,输出端分别输出素数域结果c和二元扩域结果d的乘累加器构成,所述的乘累加器包括有第一加法器(421)、第二加法器(422)、第三加法器(423)和对接收的乘数X和乘数Y相乘后分别输出给第二加法器(422)的双域乘法器(424),所述的第一加法器(421)的输入端分别接收二进制的加数a、加数b,输出端分别连接第二加法器(422)和第三加法器(423)的输入端,所述第二加法器(422)的输出端输出素数域结果C,所述第三加法器(423)的输出端输出二元扩域结果d。
6.根据权利要求3所述的一种支持双域的快速RSA密码协处理器,其特征在于,所述的双域乘法器(424)包括有依次串接的64个半加/全加阵列(4241),连接所述64个半加/全加阵列(4241)的进位输出端的wzllace (4242),分别连接所述华莱士树(4242)的进位输出端和求和输出端的进位传播加法器(4243),其中,所述的64个半加/全加阵列(4241)的第一个半加/全加阵列的输入端接收RAM存储器单元(3)输入的乘数X和乘数Y,最后一个半加/全加阵列的输出端分别连接所述的进位传播加法器(4243)的输入端和所述的第二加法器(422),所述的进位传播加法器(4243)的输出端连接所述的第三加法器(423)。
【文档编号】H04L9/06GK103793199SQ201410035727
【公开日】2014年5月14日 申请日期:2014年1月24日 优先权日:2014年1月24日
【发明者】郭炜, 刘绪隆, 魏继增 申请人:天津大学