大数模乘器电路转让专利

申请号 : CN200910202052.6

文献号 : CN102117195B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 左耀华

申请人 : 上海华虹集成电路有限责任公司

摘要 :

本发明公开了一种大数模乘器电路,包括:一个二输入与门,一个数据左移1位模块,三个二选一选择器MUX1,MUX2,MUX3;一个N+2位大数加法器;选择与控制模块,包括一个N+2位比较器,用于控制所述三个二选一选择器,以及整个运算过程的数据流向和运算过程,保证整个电路正常工作;在所述选择与控制模块的控制和协调,使得整个电路在满足模乘功能的前提下,实现N+2位比较器和N+2位加法器的复用。本发明能节省大量芯片面积,降低功耗,而且实现过程简单,可用于设计ECC,RSA等加密处理器,适用于在FPGA及ASIC中实现。

权利要求 :

1.一种大数模乘器电路,其特征在于,包括:

一个二输入与门,其两个输入端分别输入N位数据A[N-1:0]和B的第i位数据B[i],输出端连接到第三个二选一选择器MUX3的输入端;将B的第i位数据B[i]与A[N-1:0]中的每一位数据做与运算;

数据左移1位模块,其输入端连接到N+2位加法器的输出端Dout_c,其输出端连接到第一个二选一选择器MUX1的输入端;将N+2位加法器的输出结果C左移一位输出到MUX1;

第一个二选一选择器MUX1,两个输入端分别连接到N+2位加法器的输出端Dout_c以及数据左移1位模块的输出端,其输出端连接到第二个二选一选择器MUX2的输入端;在选择与控制模块的控制下,选择N+2位加法器的输出C或者数据左移1位模块的输出2C输出到第二个二选一选择器MUX2;

第二个二选一选择器MUX2,其一个输入端连接到第一个二选一选择器MUX1的输出端,另一个输入端输入常数0,其输出端连接到N+2位加法器的输入端Din_a;在选择与控制模块的控制下,选择第一个二选一选择器MUX1的输出C或者常数0输出到N+2位加法器;

第三个二选一选择器MUX3,其一个输入端连接到二输入与门的输出端,另一个输入端输入常数-P,其输出端连接到N+2位加法器的输入端Din_b;在选择与控制模块的控制下,选择二输入与门的输出结果或者常数-P输出到N+2位加法器;

N+2位加法器,其两个输入端中,Din_a端连接到第二个二选一选择器MUX2的输出端,Din_b端连接到第三个二选一选择器MUX3的输出端,其输出端Dout_c同时连接到第一个二选一选择器MUX1的输入端、左移1位模块的输入端和大数模乘器的输出端C;对其输入的数据进行加法运算,产生的结果由Dout_c端输出;

选择与控制模块,包括一个N+2位比较器,用于控制所述三个二选一选择器,以及整个运算过程的数据流向和运算过程,保证整个电路正常工作;

其中,0≤i≤N-1;A,B,P均是位宽为N的二进制无符号大数。

2.根据权利要求1所述的大数模乘器电路,其特征在于:所述二输入与门进行与操作时,如果B的第i位数据B[i]为1时,直接将A[N-1:0]作为二输入与门的运算结果输出到MUX3;如果B的第i位数据B[i]为0时,则将0作为二输入与门的运算结果输出到MUX3。

3.根据权利要求1所述的大数模乘器电路,其特征在于:第一次运算时,大数模乘器输出端C输出的初始值为0,经MUX2送往N+2位加法器,同时把A*B[i]的值经MUX3送往N+2位加法器,然后由N+2位加法器进行两者相加的运算:C=0+A*B[i];运算完成后,把运算结果C送往N+2位比较器中,与P进行比较;如果C不小于P,则把C的值送往MUX1,经MUX2送往N+2位加法器,同时把常数-P送往N+2加法器,使C与-P做加法运算:C=C+(-P);运算完毕,再把运算结果C送到N+2位比较器中,与P进行比较,如果C仍然不小于P,则重复上面得操作;如果C小于P,则本次的运算过程结束,计数器i自减1,并判断减1后计数器的值i是否小于0,如果i不小于0,说明B中还有数据位没有参与运算,则把本次的运算结果C左移1位,经由MUX1,MUX2送往N+2位加法器,同时把A*B[i]经MUX3送往N+2位加法器,开始下一次的运算;如果i小于0,说明B中所有数据位都参与了运算,此时运算已经完成,输出运算结果C。

说明书 :

大数模乘器电路

技术领域

[0001] 本发明涉及密码学领域,特别是涉及一种加密解密算法中的重要模块---大数模乘器的电路结构。

背景技术

[0002] 近年来,随着信息化社会的发展和密码学商业应用的普及,人们对信息安全和保密的重要性认识不断提高,密码学受到前所未有的重视。除传统的密码应用系统外,密码学还应用于提供加密,签名,认证,密钥管理,分配等领域。加解密算法也层出不穷,如:ECC(Elliptic CurvesCryptography,椭圆曲线加密算法),RSA(RSA公开密钥加密算法),DSA(数字签名算法)等。
[0003] 1985年N.Koblitz和Miller提出将椭圆曲线用于密码算法,其根据是有限域上的椭圆曲线上的点群中的离散对数问题ECDLP(EllipticCurve Discrete Logarithm Problem)。破解椭圆曲线密码体制的时间复杂度是完全指数阶的。与其他加密算法相比,有抗攻击性强,计算量小,处理速度快,占用资源少,带宽要求低等特点,使得其在保密通信,数字签名,无线网络等领域有广泛的应用前景。
[0004] 大数模乘运算作为ECC加密算法中的基本运算单元,贯穿ECC算法整个流程。大数模乘器的性能直接影响到整个ECC处理器的面积和功耗,所以对大数模乘器的改进显得尤为重要。

发明内容

[0005] 本发明要解决的技术问题是提供一种大数模乘器电路,能够提高资源利用率,节省芯片面积。
[0006] 为解决上述技术问题,本发明的大数模乘器电路包括:
[0007] 一个二输入与门,其两个输入端分别输入N位数据A[N-1:0]和B的第i位数据B[i],输出端连接到第三个二选一选择器MUX3的输入端;将B的第i位数据B[i]与A[N-1:0]中的每一位数据做与运算,即:如果B[i]为1时,直接将A[N-1:0]作为二输入与门的运算结果输出到MUX3;如果B[i]为0时,则将0作为二输入与门的运算结果输出到MUX3;
[0008] 数据左移1位模块,其输入端连接到N+2位加法器的输出端Dout_c,其输出端连接到第一个二选一选择器MUX1的输入端;将N+2位加法器的输出结果C左移一位输出到MUX1;
[0009] 第一个二选一选择器MUX1,两个输入端分别连接到N+2位加法器的输出端Dout_c以及数据左移1位模块的输出端,其输出端连接到第二个二选一选择器MUX2的输入端;在选择与控制模块的控制下,选择N+2位加法器的输出C或者数据左移1位模块的输出2C输出到第二个二选一选择器MUX2;
[0010] 第二个二选一选择器MUX2,其一个输入端连接到第一个二选一选择器MUX1的输出端,另一个输入端输入常数0,其输出端连接到N+2位加法器的输入端Din_a;在选择与控制模块的控制下,选择第一个二选一选择器MUX1的输出C或者0输出到N+2位加法器;
[0011] 第三个二选一选择器MUX3,其一个输入端连接到二输入与门的输出端,另一个输入端输入常数负P(即:-P),其输出端连接到N+2位加法器的输入端Din_b;在选择与控制模块的控制下,选择二输入与门的输出结果或者常数-P输出到N+2位加法器;
[0012] N+2位加法器,其两个输入端中,Din_a端连接到第二个二选一选择器MUX2的输出端,Din_b端连接到第三个二选一选择器MUX3的输出端,其输出端Dout_c同时连接到第一个二选一选择器MUX1的输入端、左移1位模块的输入端和大数模乘器的输出端C;对其输入的数据进行加法运算,产生的结果由Dout_c端输出;
[0013] 选择与控制模块,包含一个N+2位比较器,用于控制所述三个二选一选择器,以及整个运算过程的数据流向和运算过程,保证整个电路正常工作;
[0014] 其中,0≤i≤N-1;A,B,P均是位宽为N的二进制无符号大数。
[0015] 采用Blakley算法实现大数模乘器时,需要用到多个大数加法器来参与运算。随着安全性要求提高,使得大数位数N增加,由此带来的资源消耗越来越大。
[0016] 本发明的大数模乘器电路能节省两个N+2位加法器和一个N+2位比较器资源;传统电路实现Blakley算法时至少需要三个N+2位加法器和两个N+2位比较器;而本发明的电路结构通过资源复用,只需要一个N+2位加法器和一个N+2位比较器,从而节省了大量芯片面积,降低了功耗;本发明实现过程简单,可用于设计ECC,RSA等加密处理器,适用于在FPGA及ASIC中实现。

附图说明

[0017] 下面结合附图与具体实施方式对本发明作进一步详细的说明:
[0018] 图1是大数模乘器电路一实施例结构图;
[0019] 图2是大数模乘器运算流程图。

具体实施方式

[0020] 如图1所示,在一实施例中,所述的大数模乘器电路包括一个二输入与门,一个数据左移1位模块,三个二选一选择器MUX1,MUX2和MUX3,一个N+2位加法器以及选择与控制模块。其中,选择与控制模块包含一个用来比较C与P大小的N+2位比较器,一个下标i与1相减的电路以及一个用于判断i是否小于0的比较器,用于控制所述三个二选一选择器,以及整个运算过程的数据流向和运算过程,保证整个电路正常工作。在所述选择与控制模块的控制和协调,使得整个电路在满足模乘功能的前提下,实现N+2位比较器和N+2位加法器的复用。
[0021] 模乘一般表示为:
[0022] C=(A*B)mod P 0≤A,B<P
[0023] 其中A,B,P都是位宽为N的二进制无符号大数。模乘器由两部分运算组成,先对A和B作乘法运算,然后再模以P。
[0024] 1983年Blakley基于该计算式提出了一种加法型模乘算法,其设计思想是将模乘转换为一系列加法运算。为使最终结果C小于P,每次计算的中间结果都需做求模运算。
[0025] Blakley算法如下:
[0026] 输入:
[0027] A={AN-1,AN-2…A1,A0}
[0028] B={BN-1,BN-2…B1,B0}
[0029] P={PN-1,PN-2…P1,P0}
[0030] C=0
[0031] 输出:
[0032] C=(A*B)mod P
[0033] 其中,C={CN-1,CN-2…C1,C0}
[0034] 运算过程如下:
[0035] 1、C=0;
[0036] 2、For i=0 to(N-1);
[0037] 3、{
[0038] 4、C=2C+A*BN-1-i;
[0039] 5、If(C≥P);
[0040] 6、C=C-P;
[0041] 7、If(C≥P);
[0042] 8、C=C-P;
[0043] 9、}
[0044] 10、Return C。
[0045] 由上面的Blakley算法可知,在第4步,第6步和第8步都需要进行加法运算,需要3个N+2位加法器;在第5步和第7步都需要进行比较操作,需要2个N+2位比较器。由于Blakley算法中的所有运算都是串行的,故能通过加法器的复用来节省系统资源。本发明就是采取第6步和第8步的加法运算复用第4步所使用的N+2位加法器,同时第5步和第7步共用同一个N+2位比较器。
[0046] N+2位加法器的两个输入端分别为:Din_a,Din_b,输出端为:Dout_c,则在选择与控制模块的控制下,不同时期加法器的输入输出情况如下表所示:
[0047]
[0048] 当A,B到达时,A的值直接输入模乘器,而B的值由高到低按位输入模乘器,C的初始值为0,计数器i的初始值为N-1,在选择与控制模块的控制下大数模乘器电路开始运算,最终的运算结果由大数模乘器电路的输出端C输出。
[0049] 参见图2,所述大数模乘器运算流程是:大数模乘器初始化时,A={A[N-1],…A[1],A[0]},B={B[N-1],…B[1],B[0]},P={P[N-1],…P[1],P[0]},累计变量C也是N位数,值为0,下标i的值为N-1;第一次运算时,大数模乘器输出端C输出的初始值为0,经MUX2送往N+2位加法器,同时把A*B[i]的值经MUX3送往N+2位加法器,然后由N+2位加法器进行两者相加的运算:C=0+A*B[i];运算完成后,把运算结果C送往N+2位比较器中,与P进行比较;如果C不小于P,则把C的值送往MUX1,经MUX2送往N+2位加法器,同时把常数-P送往N+2加法器,使C与-P做加法运算:C=C+(-P);运算完毕,再把运算结果C送到N+2位比较器中,与P进行比较,如果C仍然不小于P,则重复上面得操作;如果C小于P,则本次的运算过程结束,计数器i自减1,并判断减1后计数器的值i是否小于0,如果i不小于0,说明B中还有数据位没有参与运算,则把本次的运算结果C左移1位,经由MUX1,MUX2送往N+2位加法器,同时把A*B[i]经MUX3送往N+2位加法器,开始下一次的运算;如果i小于0,说明B中所有数据位都参与了运算,此时运算已经完成,输出运算结果C。
[0050] 由于0≤A,B<P,即有2C+A*BN-1-i<3P,故在传统的模乘结构中,用1个N+2位加法器完成2C+A*BN-1-i运算后,为保证2C+A*BN-1-i的运算结果小于P,还需两个N+2位的比较器和两个N+2位的加法器来做求模运算(2C+A*BN-1-i)mod P。而在本发明中,做求模运算(2C+A*BN-1-i)mod P时所需的两次加法运算操作复用做2C+A*BN-1-i运算的那个N+2位加法器,同时两次比较操作复用同一个N+2位比较器。选择与控制模块控制三个二选一选择器来选择加法器的输入数据。由此可知,与现有的技术相比,本发明能节省一个N+2位比较器和两个N+2位加法器。在安全性要求越来越高的今天,密码体系中操作数的位宽N越来越大,N+2位宽的加法器和比较器所占用的资源在密码系统中的比重也越来越大,从而使得本发明所带来的资源节约显得愈发重要。
[0051] 以上通过具体实施方式对本发明进行了详细的说明,但这些并非构成对本发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可做出许多变形和改进,这些也应视为本发明的保护范围。