一种实现改进的FIOS模乘算法的硬件系统的制作方法

文档序号:24234589发布日期:2021-03-12 13:05阅读:199来源:国知局
一种实现改进的FIOS模乘算法的硬件系统的制作方法

本发明涉及数据加解密领域,具体设计一种实现改进的fios模乘算法的硬件系统。



背景技术:

随着互联网技术的飞速发展,信息物联已经渗透到社会生活的方方面面,而信息安全技术的发展却相对滞后,大数据时代给人们带来便利的同时,也带来了许多的安全问题,如何保障网络信息安全成为了人们研究的热点问题。

保障网络信息安全的关键技术之一就是加解密技术,目前,广泛使用的加密形式有两种:传统加密和公钥加密。1978年期间,r.rivest、a.shamir及l.adleman提出了rsa算法,rsa公钥加密算法也是目前理论上最成熟完善和应用最广泛的加解密算法机制。大整数因子分解的困难性决定了rsa加密的安全性,因此模乘运算是rsa算法中最核心的运算。

rsa加解密算法,主要有软件实现和硬件实现两种方式。与传统的软件实现加密相比,硬件实现的方式可以使加密更加稳定,速度更快且兼容性更好,安全性更高。而提高模乘运算速度是改善rsa性能的关键,目前运用最多的算法是蒙哥马利算法。在蒙哥马利算法中,由于运算数据和中间结果的位数很大,需要消耗很多硬件资源,运行效率也会降低。



技术实现要素:

针对现有技术的不足,本发明提出了一种实现改进的fios模乘算法的硬件系统,通过复用寄存器和重新排布流水线等方式,减少硬件资源消耗的同时,有效减少计算过程中的循环次数,减少运算所需时钟数,达到提高单位时间内计算吞吐率即提高rsa加密算法速度的目的。

一种实现改进的fios模乘算法的硬件系统,包括存储模块、模乘算法模块、booth乘法器模块以及模乘参数n’[0]选取模块。

所述存储模块包括ram1与ram2两个存储器,其中ram1用于存储输入的被乘数a、乘数b和模数n,ram2用于存储输出结果。

作为优选,ram1的大小为96*128bit,ram2的大小为40*128bit。

所述模乘算法模块在现有的蒙哥马利模乘器的基础上增加了一组寄存器,实现预计算环节与进位计算环节的并行计算,然后再计算迭代环节。模乘算法模块用于将4096bit的被乘数a、乘数b和模数n分为等长的若干字段,完成a*bmodn的模乘计算,输出保持在0~2n之间。

所述booth乘法器模块包括部分积产生模块、部分积压缩模块及向量相加模块。将现有的乘法器部分积产生模块的后续电路替换为多路选择器。部分积压缩模块将输入向量压缩至两行,采用csa压缩器完成十级压缩,并在最后一级电路前插入了一级寄存器,优化时序。向量相加模块通过超前进位加法器将部分积压缩模块输出的两行向量进行相加。完成模乘计算过程中的乘法操作。

所述模乘参数n’[0]选取模块包括一个输入口、一个输出口、一个循环移位模块、两个d触发器、一个加法器和一个二选一选择器。所述循环移位模块的输入与模乘参数n’[0]选取模块的输入口相连,输出端与第一d触发器的d端相连;所述加法器的一个输入端与第一d触发器的q端相连,另一个输入端输入乘数b,加法器的输出端与第二d触发器的d端相连。第二d触发器的q端通过二选一选择器与模乘参数n’[0]选取模块的输出口相连,输出被乘数a。

基于上述硬件系统的模乘计算过程为:系统从输入读取4096bit的被乘数a、乘数b和模数n,并将其存储在ram1中。模乘参数n’[0]选取模块读取ram1中存储的模数n,预计算得到模数n的低128位n'[0]。模乘算法模块读取ram1中存储的被乘数a与乘数b以及模乘参数n’[0]选取模块计算得到的n'[0],通过调用booth乘法器完成乘法操作,将最后得到的结果存储到ram2中,完成整个模乘运算过程。

本发明具有以下有益效果:

1、通过在原有的蒙哥马利模乘器的基础上增加一组寄存器以及寄存器复用,重新排布流水线与算法时序,实现预计算环节与进位计算环节的并行计算,降低了代码长度,以及硬件资源的消耗,减少了s2-s次的字加、2s2-s次的读和2s2-s次的写,使模乘器的最大运行速率可以达到600mhz。

2、改进了booth乘法器,在关键路径插入一级寄存器,减少逻辑门的使用,提高了乘法器的计算位宽与计算速度,同时降低了硬件面积消耗,减少了模乘计算过程中的循环次数,从而减少运算周期。

3、模乘算法模块通过调用booth乘法器完成乘法部分的计算,提高了单位时间内的处理量级,实现4096位的模乘只需要3463个周期,耗时约5.75us,提高了单位时间内的处理量级。

附图说明

图1为本发明的原理框图;

图2为本发明改进后的模乘计算过程;

图3为本发明模乘计算过程的数据转移图;

图4为本发明部分积编解码方案的电路逻辑;

图5为本发明部分积编解码方案的优化电路逻辑;

图6为本发明部分积压缩过程;

图7为本发明模乘参数n’[0]选取模块的电路图。

具体实施方式

以下结合附图对本发明作进一步的解释说明;

如图1所示,一种实现改进的fios模乘算法的硬件系统,包括存储模块、模乘算法模块、booth乘法器模块以及模乘参数n’[0]选取模块。

所述存储模块包括96*128bit的ram1与40*128bit的ram2两个存储器,其中ram1用于存储输入的被乘数a、乘数b和模数n,ram2用于存储输出结果。

现有技术中的蒙哥马利模乘算法为:

所述模乘算法模块,增加了一组寄存器,通过并行化处理预计算环节1与进位计算环节3,压缩了流水线级数,将原算法的关键路径在一个循环中进行三个数连接的地方,拆解为两步完成连接计算。模乘算法模块的数据转移如图3所示,算法为:

所述booth乘法器,包括部分积产生模块、部分积压缩模块及向量相加模块。将现有的乘法器部分积产生模块的后续电路替换为多路选择器,根据编码逻辑关系与部分积生成表达式,可以得到图4所示的编解码方案电路逻辑图,部分积产生模块的电路逻辑图如图5所示。部分积压缩模块将输入部分积产生模块产生的向量通作为wallace树形结构的输入,经过csa压缩器进行十级压缩,压缩至两项。在部分积压缩模块的最后一级电路前插入了一级寄存器,保证电路的保持时间,使电路可以达到更高的时钟频率。将压缩得到的两行向量输入到向量相加模块,通过超前进位加法器将部分积压缩模块输出的两行向量进行相加,得到最终的乘法运算结果。

所述模乘参数n’[0]选取模块包括一个输入口、一个输出口、一个循环移位模块、两个d触发器、一个加法器和一个二选一选择器,电路结构如图7所示,输入模数n的低128位n,n的位宽与booth乘法器的位宽相关;通过循环移位模块对n进行左循环移位处理,经过第一个d触发器后与乘数b通过加法器相加,通过第二个d触发器暂存输出进行b+n[0]的计算,最终通过二选一选择器输出被乘数a,经过八次循环输出后得到一个完整字节,即完成n’[0]的计算,n’[0]的算法为:

系统从输入读取4096bit的被乘数a、乘数b和模数n,并将其存储在ram1中。模乘参数n’[0]选取模块读取ram1中存储的模数n,预计算得到模数n的低128位n'[0]。模乘算法模块读取ram1中存储的被乘数a与乘数b以及模乘参数n’[0]选取模块计算得到的n'[0],通过调用booth乘法器完成乘法操作,将最后得到的结果存储到ram2中,完成整个模乘运算过程。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员,在不脱离本发明构思的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1