一种基于AOP的多项式基GF(2<sup>227</sup>)高速模乘法器的制造方法

文档序号:8257892阅读:483来源:国知局
一种基于AOP的多项式基GF(2<sup>227</sup>)高速模乘法器的制造方法
【技术领域】
[0001]本发明涉及网络安全,数据信息加解密领域,及其涉及一种基于全一约减式AOP (all one polynomial,即约减式的每一个权重系数均为I)的多项式基GF(2227)高速模乘法器。
【背景技术】
[0002]随着信息技术的飞速发展,随着网络的普及以及广泛的应用,网络上流通的数据越来越多越来越大,并且人们对网络上数据传输的安全性要求越来越高,这样对于网络安全的研宄带来了很大的挑战,因此密码学如今成为了信息安全的核心。密码学中公钥密码体制得到了广泛的研宄和使用,在对公钥密码学的研宄中,一种更加节省资源加解密效率更高的密码体制被提出,即椭圆曲线密码学。
[0003]1985年,Neal Koblitz和Victor Miller分别提出了椭圆曲线密码系统(Elliptic Curve Cryptography-ECC),自从ECC诞生之后它的安全性和实现效率就被众多的数学家和密码学家所广泛研宄,目前它被认为是已知的公钥密码体制中每比特加密强度最高的一种,同RSA密码算法相比,它具有更高的安全性能,计算速度快,存储空间占用小。在ECC系统硬件实现中,基于二元域的多项式基的实现方式被广泛的使用,而在ECC系统中,点乘模块是影响处理速度等性能的关键,而点乘模块中模乘模块又是它的核心,所以对模乘的研宄更是关键所在。
[0004]因此为了提高整个系统的性能,减少资源消耗,寻求更好的模乘模块的实现方式成为了研宄关注的焦点,研宄机构对于NIST推荐的几种位宽已经有了很广泛和深入的研宄,所以有一些研宄机构开始着眼于一类具有特殊类型约减多项式的位宽,本发明就是针对这种特殊类型,即AOP类型,设计了一种新的模乘法器单元。

【发明内容】

[0005]本发明是针对二元域多项式基下的基于AOP型约减多项式的模乘法器,它实现了两个位宽为m的操作数的相乘取模操作,得到位宽为m的结果,在此发明中m = 227,即实现C(x) = (A(x) XB(x))modf(x),其中 f(x) =X1M0
[0006]本发明为了实现上述操作,采用串并结合的实现方式,每次处理操作数B (X)的字长w = 57,在部分积叠加路径中插入寄存器,流水执行。本发明包括的操作单元:(1)主控状态机;(2)数据加载以及分配部分;(3) A(X) XBi(X)部分积产生以及部分积叠加部分;(4)部分积累加以及最终数据结果寄存以及模乘结束标志信号给出。
[0007]本发明根据上述所述,在检测到高电平使能信号的时候开始执行操作,启动主控状态机,状态机控制各个模块数据的给出,控制流水执行并且寄存逻辑单元的运算结果,实现整个流程的操作。
[0008]所述的数据加载以及分配部分是在状态机控制下,寄存输入的操作数,并按照数字串行方式,分阶段给出所需模乘运算单元所需的操作数。
[0009]所述的部分积产生以及部分积叠加部分,部分积产生是采用模乘约减同时进行的方式,在传统乘法器基础上实现227*57的模乘,产生57个227bit的部分积,部分积叠加是将上述57个部分积进行模加得到227*57的最终结果。
[0010]所述的部分积累加,是将每一次执行模乘单元得到的227*57结果累次相加,最终得到227*227的模乘结果,完成一次完整的模乘操作并给出一个周期的输出允许信号。
[0011]本发明在部分积叠加部分中插入了寄存器,切断了模乘操作的路径,从而减小关键路径长度,通过状态机控制使得整个操作流水执行,是在多消耗寄存器资源的条件下提高时钟频率,提升模乘操作的效率。
【附图说明】
[0012]本发明提供了系统的模块框图以及子模块的框图,整个发明的相关图示简述如下,便于更好的理解本发明。
[0013]图1所示是本发明整体数据流图。
[0014]图2所示是控制数据流的主控状态机。
[0015]图3所示是模乘模块部分结构框图。
[0016]图4所示是模乘模块中2级异或树链。
[0017]图5所示是模乘模块中约减模块结构框图。
[0018]图6所示是流水执行方式各个状态进行的操作。
[0019]图7所示是本发明模乘整体设计框图。
【具体实施方式】
[0020]为了使本发明的目的、技术方案和优点表述更加清晰,下面对整个发明结合附图对实施方式做更加详细的描述。
[0021]图1所示是本发明整体数据流图,也就是整体模乘模块的结构框图,整体模块100包括了四个子部分,简述如下:
[0022]输入数据加载以及分配寄存器堆102 ;
[0023]模乘整体模块104 ;
[0024]模加模块106 ;
[0025]部分积寄存器堆108。
[0026]在主控状态机的控制下,分时给出各个逻辑单元的操作数据,然后寄存相应的计算结果,整体模乘采用数字串行的执行方式,数字串行字长w = 57,采用LSB的执行方式,处理的操作数据位宽最大为227bit,一次模乘可得到227*57模乘运算结果,为了提高执行频率以及吞吐率,采用流水执行,经过4次模乘模块运算可以得到最终模乘运算结果。
[0027]输入数据加载以及分配寄存器堆102是在主控状态机的控制下,加载了输入的两个模乘操作数A,B,并且正确的分配并给出每一次计算227*57所需要的输入数据,如第一次 227*57 模乘,给出 A, BJB1= B[56:0]);第二次 227*57 模乘给出 A 57,B2(A57= AXx57, B2=B[113:57]);第三次 227*57 模乘给出 A114, B3(A114= AXx 114,B3= B[170:114]);第四次227*57 模乘给出 A171, B3(A171= AXx171,B4= {I ‘b0,B[226:171]})。
[0028]模乘整体模块104的详细结构图如图3所示,在此不赘述,详细内容见图3的详细说明。
[0029]模加模块106完成两个操作数相加并取模的操作,如果两个操作数A,B,那么模加的结果即为(A+B)mod(2),也就是两个操作数按位相加而没有进位,进一步用硬件实现即两个操作数按位异或A~B,通过异或阵列就能够实现此模块。
[0030]部分积寄存器堆108寄存了每一次227*57模乘的运算累加结果,并将之前的累加结果作为模加模块106的一个输入操作数,此模块分时寄存了C1, C^C2, CACfC3, Ci+CfQ+C;,其中Ci是每一次模乘的运算结果,最后寄存了 227*227的模乘结果,并作为输出数据。
[0031]图2所示是模乘模块的主控状态机,状态机200包含了9个状态,分别为IDLE, LOAD, PARTIAL REGFILE1, PARTIAL REGFILE2, PARTIAL REGFILE3, RESULTI, RESULT2,RESULT3, FINAL RESULT。外部的控制状态跳转的只有模乘使能信号Mul_en_i,当它为高电平时,启动状态机,跳转到LOAD状态,顺序执行之后状态,如果过程中出现了未知状态,状态机跳转到IDLE状态。下面分别描述各个状态。
[0032]状态IDLE,是空闲状态,此时所有寄存器值都是初始值0,这个状态监测使能信号是否为高,准备启动状态机,此外此状态将把模乘结果输出标志信号清零,当从FINALRESULT跳转到IDLE的时候,会拉高模乘结果输出标志信号,为保证此信号只保持一个时钟周期,在IDLE时将其清零。
[0033]状态LOAD是将输入的两个操作数A,B寄存并将每一次227*57的输入数据给出。
[0034]状态PARTIAL REGFILE1是将第一次227*57生成的部分积部分叠加结果寄存,也就是将结果寄存在图3中的寄存器堆304,并将第二次227*57的输入数据给出,输入数据已在详述102的内容中体现。
[0035]状态PARTIAL REGFILE2是将寄存器堆304结果进一步通过而异或树链逻辑叠加之后的结果寄存,也就是将结果寄存在图3中寄存器堆308,同时将第二次227*57生成的部分积部分叠加结果寄存,即将结果寄存在图3中的寄存器堆304,并将第三次227*57的输入数据给出。
[0036]状态PARTIAL REGFILE3将寄存器堆308结果进一步通过而异或树链逻辑叠加之后的结果寄存,也就是将结果寄存在图3中寄存器堆3012,并将寄存器堆304结果进一步通过而异或树链逻辑叠加之后的结果寄存在308,同时将第三次227*57生成的部分积部分叠加结果寄存在304,并将第四次227*57的输入数据给出。
[0037]状态RESULT1将3012的结果通过异或门阵列并通过106模块与108内容相加的结果寄存在108中,此时就得到了第一次模乘结果
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1