一种基于异步数据通路的RSA算法的制作方法

文档序号:13033625阅读:240来源:国知局
一种基于异步数据通路的RSA算法的制作方法与工艺

本发明涉及一种公钥加密rsa算法,具体地说,涉及一种基于异步数据通路的rsa算法。



背景技术:

rsa是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被iso推荐为公钥数据加密标准。今天只有短的rsa钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击rsa算法的方式。只要其钥匙的长度足够长,用rsa加密的信息实际上是不能被解破的。但在分布式计算和量子计算机理论日趋成熟的今天,rsa加密安全性受到了挑战。

现有的rsa算法的硬件实现都是时钟信号控制,由于每次都要受到时钟沿的触发,则存在等待时间,这样将会浪费大量的时间。



技术实现要素:

本发明的目的在于提供一种基于异步数据通路的rsa算法。该算法采用异步微流水控制结构,无时钟信号,这样将会提高运行速度,最终提高解密难度。pipeline控制电路严格控制各个模块的运算时序,异步电路由于采用握手协议产生各流水段局部时钟,取代了同步集成电路中的全局时钟,不需要庞大的时钟分布网络,从而自然的解决了同步集成电路中时钟漂移、功耗偏高等问题,并且可以获得平均情况下的性能,具有较好的可重用性和鲁棒性。

其具体技术方案为:

三级模块montgeory_moudle的实现步骤为:

使能in_r为1;开始整个过程;

click0~click3:整个实现过程的准备阶段;

click5~click14:循环for_0模块和循环for_1模块准备阶段,shift_b实现对输入数in_b的移位;

click15~click29:在循环for_1模块,shift_a实现对输入数in_a的移位,利用加法器add_128,add_64,乘法器mul_64,移位寄存器shift_t,实现(c,s):=t[j]+a[j]×b[i]+c;并储存到缓冲寄存器t(shift_s0)和进位寄存器c,直到循环结束;

click30~click45:退出循环for_1模块;在/r模块中,shift_t把进位寄存器c的值移入寄存器t(shift),并调用乘法器mul_64实现m:=t[0]×n’[0],准备进入循环for_2模块;

click46~click56:在循环for_2模块中,shift_n实现对输入数in_n的移位,利用加法器add_128,add_64,乘法器mul_64,移位寄存器shift_t,实现(c,s):=t[j]+m×n[j]+c;并储存到缓冲寄存器t(shift_s1),直至循环结束;

click57~click73:退出循环for_2模块;在/r模块中,shift_t把进位寄存器c的值移入寄存器t(shift),实现t[j]:=t[j+1];

click74~click77:结束for_0模块,实现循环for_3模块的准备阶段;

click78~click83:在循环for_3模块中,shift_n0实现对输入数in_n的移位,shift_s1实现对缓冲数shift_s1的移位,利用加法器add_64,实现:(b,d):=t[i]–n[i]–b(只需判断最高借位,为1输出t,为0输出结果),直至循环结束;

click84~click86:输出整个模块(abr-1modn)运算结果和结束标志位;

二级lr_moudle模块的实现步骤:

使能in_r为1;开始整个过程;

click6~click9:整个过程的准备阶段;

click5~click14:计算m=m*rmodn=mont(m*r2modn);

click10~click20:for准备阶段;

click21~click26:计算c=mont(c*c);

click27~click31:计算c=mont(c*mmodn);

click32~click39计算c=mont(c*1)。

与现有技术相比,本发明的有益效果:

本发明的算法采用异步信号控制,消去时钟信号,这样将会提高运行速度,最终提高解密难度。

附图说明

图1是本发明基于异步数据通路的rsa算法的原理图。

图2是异步微流水直通pipelin;

图3是异步微流水跳跃pipeline,其中图3(a)是click[i]触发组合模块,图3(b)是取反触发器;

图4是计数器和移位器使能电路;

图5是0和1交替使能模块;

图6是0和1选择电路;

图7是for循环控制电路;

图8是微流水控制模块;

图9是for_0模块结构;

图10是for_1模块内部结构;

图11是modr模块内部结构;

图12是for_2模块内部结构;

图13是/r模块内部结构;

图14是memodn硬件实现内部结构。

具体实施方式

下面结合附图和具体实施方案对本发明的技术方案作进一步详细地说明。

本发明设计过程所用到的衔接模块:

基于click的异步直通pipeline控制电路如图2所示,在异步电路中的时钟信号都被两个锁存器之间的握手信号(即两个click之间的握手信号)代替。锁存器对于异步电路控制是一个最重,每个click都控制一个锁存器,用来控制上一级cl[i]的数据流往下一级组合电路cl[i+1]。我们可以看到每两个相邻锁存器r[i]和r[i+1]之间都有组合电路cl[i],用来处理r[i]流出的数据(即上一级处理的数据),然后输出cl[i]已处理数据。异步微流水控制单元click最重要的作用就是在正确的时间打开寄存器r[i],让上一级cl[i]已处理的数据流入下一级组合电路cl[i+1]。如果click[i]单元接收到请求信号req[i]到产生触发信号fire[i]的时间小于上一级组合电路cl[i-1]的处理时间,那么下一级cl[i]得到数据就不是所希望得到的正确数据。

基于click的异步跳跃pipeline控制电路如图3所示,当一个组合功能模块电路(cc[i])时延较大时,两个click之间的流水间隔时间会很大,为了避免holdtime过短,导致功能模块出错。所以我们考虑换角度下手,前提是每个click是固定的,重点是把组合模块cc[i]可控化,给组合模块cc[i]构造一个运算结束标志位(cc_flag)。如图3(a)在上一个click[i]触发组合模块cc[i]后,一当cc_flag出现上升沿,则触发取反触发器d~(图3(b)),d~触发器的功能是:一当clk上升沿到来,q=~q。然后触发click[i+1],继续往下流水。

计数器和移位器使能电路如图4,由于在异步循环电路中需要对多计数器和移位器进行多次进行使能清零。由于没有时钟,电路是不允许多条使能信号接到计数器和移位器的使能端。所以我们设计适用与异步控制的使能电路,电路由2个d触发器,一个异或门和一个或门组成。d触发器做取反功能使用,fire信号一触发,输出取反。假设初始化,全部赋值0。工作过程如下:

对于计数器:

初始化a=en1=0,b=en2=0,c=a^b,out_en=c+en=0;

en=1,计数器使能端为0,计数器执行计数功能。

fire0被触发,a=~en1=1,c=a^b=1,out_en=c+en=1,计数器使能端为1,计数器执行清零功能。

fire1被触发,b=~en2=1,c=a^b=0,out_en=c+en=0;计数器使能端为0,计数器执行计数功能。

对于移位器:

初始化a=en1=0,b=en2=0,c=a^b,out_en=c+en=0;

en=1,移位器使能端为0,移位器执行赋值功能。

fire0被触发,a=~en1=1,c=a^b=1,out_en=c+en=1;移位器使能端为1,移位器执行移位功能。

fire1被触发,b=~en2=1,c=a^b=0,out_en=c+en=0;移位器使能端为0,移位器执行赋值功能。

0和1交替使能模块如图5所示,电路由4个d触发器和一个四位的异或门组成本文使用的click模块和设计的abr-1modn模块,使能信号为0和1交替使能。由于在异步循环电路中需要对计数器和移位器进行多次进行使能清零。由于没有时钟,电路是不允许多条使能线接到计数器和移位器的使能端。工作过程如下:

初始化,a=en1=0,b=en2=0。c=en3=0,d=en4=0,out_en=a^b^c^d=0;

fire0被触发,a=~en1=1,out_en=a^b^c^d=1;abmondn模块运算一次。

fire1被触发,a=~en2=1,out_en=a^b^c^d=0;abmondn模块运算一次。

fire2被触发,a=~en3=1,out_en=a^b^c^d=1;abmondn模块运算一次。

fire3被触发,a=~en4=1,out_en=a^b^c^d=0;abmondn模块运算一次。

anmodn模块置于循环过程中,可重复此过程。

0和1选择电路如图6所示,该电路用做2路选择器的选择端,由2个d触发器和一个二路的异或门组成。工作过程如下:

初始化,a=en1=0,b=en2=0,out_en=a^b=0;

fire0被触发,a=~en1=1,out_en=a^b=1。

fire1被触发,a=~en2=1,out_en=a^b=0。

基于click的for循环控制电路如图7所示,该电路由click电路,寄存器(reg),组合功能模块(combinationalcircuit--cc),计数器(count),判断电路(judgecircuit--jc),触发器(d)。假设需要循环8次,初始化inr,ina,outr,outa,clr,en1,en2都为0。使能inr,ppline微流水控制开始工作,click0触发count开始计数,当流水到click56,click56的outr继续触发click0,开始进入循环模式。count计数到8的时候且click56被触发。jc禁止click0,循环终止,然后使能click57跳出循环。click57使能d0,打开count的清零端。click58触发count,使能count计数为0。click59使能d1,关闭count清零端。

一种基于异步数据通路的rsa算法,该系统有一级模块rsa_moudle,二级模块lr_moudle和pro_moudle,三级模块montgeory_moudle组成。in_r使能,开始对明文m加密,输出端的out_r判断是否加密完成。

三级模块montgeory_moudle主要采用cios硬件实现算法:

cios算法如下:

输入:a,b,r,n,n[0]’

输出:abr-1modn

对cios算法硬件结构如图8所示,大体结构有由微流水控制模块(for_0_fire,for_3_fire)和功能模块循环模块(for_0,for_3)组成。微流水控制模块用来控制功能模块的有序进行。功能模块用来实现cios算法,for_0用来是实现abmodr,for_3用来实现减功能.

for_0模块大体结构如图3所示,在大for循环模块for_0中有内嵌了2个for循环模块(for_1,for_2),2个功能模块/r和/r模块和一个移位模块shift,并且还有微流水控制模块(for_1_fire,for_2_fire,modr_fire,/r_fire)。微流水控制模块用来控制功能模块的有序进行。for_1模块用来是实现cios算法中大循环for_0中第一个小循环for_1,for_2模块用来是实现cios算法中大循环for_2中第一个小循环for_2。modr模块,/r功能用来实现对缓冲数据的修正功能。

for_1模块用来是实现cios算法中大循环for_0中第一个小循环for_1,内部大体结构如图10,模块功能主要实现:(c,s):=t[j]+a[j]×b[i]+c,t[j]:=s。

其由功能模块64位的乘法器mul_64,128位的加法器add_128,64位的加法器add_64,和1024位的移位寄存器shift_a,1151位的移位寄存器shift_t,进位寄存器c,共同来实现。

modr模块如图11,由一个64位的乘法器mul_64实现。实现m:=t[0]×n’[0]mod2w。

for_2模块如图12,模块用来是实现cios算法中大循环for_0中第二个小循环for_2,内部其由功能模块64位的乘法器mul_64,128位的加法器add_128,64为的加法器add_64,和1024位的移位寄存器shift_a,1151位的移位寄存器shift_t,进位寄存器c,共同来实现。模块功能主要实现:(c,s):=t[j]+m×n[j]+c,t[j]:=s。

/r模块如图13,由一个1151位的移位寄存器shift_t实现:t[j]:=t[j+1]。

二级模块lr_moudle的实现算法的硬件实现:

memodn算法如下:

input:m,e,n,rmodn,r2modn(rmodn,r2modn为预处理数)

output:memodn

function:

1.m=m*rmodn=mont(m*r2modn)

c=rmodn

2.forito0(for)

2a.c=mont(c*c)

2b.c=mont(c*mmodn)

3.c=mont(c*1)

4.return(c)

对memodn硬件实现算法硬件实现,如图14,大体结构有由微流水控制模块(ready_fire,for_fire,out_fire)和功能模块模块(预处理模块,循环模块,修正模块)组成。微流水控制模块用来控制功能模块的有序进行。预处理模块用来实现对输入数的预处理,中央处理模块用来是实现循环,修正模块用来实现对数据的修正。

预处理模块由微流水控制模块(ready_fire)控制工作,实现算法memodn的第一步功能。循环模块由微流水控制模块(for_fire)控制工作,实现算法memodn的第二步功能。修正模块由微流水控制模块(out_fire))控制工作,实现算法memodn的第三步功能。

以上所述,仅为本发明较佳的具体实施方式,本发明的保护范围不限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可显而易见地得到的技术方案的简单变化或等效替换均落入本发明的保护范围内。

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