CN100527073C - 高效模乘方法及装置 - Google Patents

高效模乘方法及装置 Download PDF

Info

Publication number
CN100527073C
CN100527073C CNB2006101366557A CN200610136655A CN100527073C CN 100527073 C CN100527073 C CN 100527073C CN B2006101366557 A CNB2006101366557 A CN B2006101366557A CN 200610136655 A CN200610136655 A CN 200610136655A CN 100527073 C CN100527073 C CN 100527073C
Authority
CN
China
Prior art keywords
result
carrybit
word
latch
composes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CNB2006101366557A
Other languages
English (en)
Other versions
CN1967469A (zh
Inventor
张学鹏
胡进
张家宏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BEIJING HUADA INFOSEC TECHNOLOGY Ltd
Original Assignee
BEIJING HUADA INFOSEC TECHNOLOGY Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by BEIJING HUADA INFOSEC TECHNOLOGY Ltd filed Critical BEIJING HUADA INFOSEC TECHNOLOGY Ltd
Priority to CNB2006101366557A priority Critical patent/CN100527073C/zh
Publication of CN1967469A publication Critical patent/CN1967469A/zh
Application granted granted Critical
Publication of CN100527073C publication Critical patent/CN100527073C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Complex Calculations (AREA)

Abstract

本发明包含一种改进的蒙哥马利方法及其运算电路,本发明模乘器,包含存储单元、临时结果存储单元、乘法单元和加法单元,其中存储单元为双端口RAM用来存储数据;临时存储单元为锁存器,用来锁存临时结果;加法单元第一和第二w位加法器用来对第一w位锁存器和第二w位锁存器锁存的临时结果和乘法单元的输出进行加法运算;第三w位加法器对乘法单元的输出结果相加得到中间结果K;乘法单元w*w位乘法器用来计算w*w位的乘法,输出为C、S结果;各部件执行本发明方法中的运算。本发明不仅降低了芯片面积,而且还减少了模乘运算的时钟周期数。

Description

高效模乘方法及装置
技术领域
本发明涉及公钥密码技术,是改进的蒙哥马利模乘方法及其电路结构。
背景技术
1.公钥密码技术
在专利“密码设备和方法”(“CRYPTOGRAPHIC APPARATUSAND METHOD”,专利号:US4200770)中给出了一个可以在公开信道中交换密钥的方法,称为Diffie-Hellman密钥交换方法。该专利使得通信双方使用一个模幂函数协商和传递他们的秘密信息,攻击者要想获得传递的秘密信息,必须解决离散对数问题,而如果通信双方使用的参数足够大,则离散对数问题在计算上是不可解的。该专利奠定了公钥密码学的基本原理。
公钥密码,又称非对称密码,与只使用一个密钥的对称密码不同,它使用两个独立但又存在着某种数学联系的密钥:公钥和私钥。通信的各方保密各自的私钥,公开其公钥,发送者使用接收者的公钥加密,接收者使用只有自己知道的私钥解密。公钥密码还可以解决数字签名的问题,签名者使用只有自己知道的私钥对消息签名,验证者使用签名者的公钥可以验证签名的合法性。
专利“密码通信系统和方法”(“CRYPTOGRAPHICCOMM[NICATION SYSTEM AND METHOD”,专利号:US4405829)提出了Rivest、Shamir和Adleman发明的一种公钥密码方法-RSA。RSA公钥密码方法的安全性基于大整数因子分解问题的难解性,伴随着应用对安全性要求的不断提高,RSA密钥的长度在不断增加。
椭圆曲线密码系统(Elliptic Curve Cryptosystems,简称ECC)自1985年由Neal Koblitz和Victor Miller提出以来,由于其相对于RSA的全方面的优势(更强的安全性、更高的实现效率、更省的实现代价),吸引了大批密码学工作者就其安全性和实现方法作了大量的研究,并已逐渐被国际各大标准组织采纳作为公钥密码标准(IEEEP1363、ANSI X9、ISO/IEC和IETF等),成为主流应用的公钥密码之一。
在RSA中,存在着一个大整数的模幂运算Xemod M,这个运算造成了RSA加/解密和签名/验证的巨大运算量;在ECC中,存在一个大整数k乘以椭圆曲线点P(称为“点乘”)的运算kP,这个运算造成了ECC加/解密和签名/验证的巨大运算量。
2.大整数模幂运算和椭圆曲线点乘运算的分解
大整数模幂运算Xe mod M可以分解为大整数模乘运算XY mod M和模平方运算X2mod M。设e的二进制形式为e=(en-1en-2......e1e0),其中n为e的二进制长度。分解形式为:
输入:X,e,M
输出为:C=Xemod M
1)if en-1=1 then C:=X else C:=1
2)for i=n-2 downto 0
2a.C:=C·C mod M
2b.if ei=1 then C:=C·X mod M
3)return C
椭圆曲线点乘运算kP可以分解为椭圆曲线点加运算(P+Q)和椭圆曲线点倍运算(P+P=2P),其中k为大整数,k=(kn-1kn-2......k1k0),其中n为k的二进制长度,P,Q为椭圆曲线上的整数点。分解形式为:
输入:k=(kn-1kn-2......k1k0),P
输出:kP
1)Q:=O(O为无穷远点)
2)for i from n-1 downto 0 do
2a Q:=2Q
2b if ki=1 then Q:=Q+P
3)return Q
椭圆曲线点P1=(x1,y1),P2=(x2,y2),其中P1≠-P2。设P3=P1+P2=(x3,y3)。其中:
x3=λ2-x1-x2y3=λ(x1-x3)-y1
当P1≠P2时λ=(y2-y1)/(x2-x1)当P1=P2时λ=(3x1 2-3)/(2y1)
从上述公式可以看出椭圆曲线点加(P1≠P2)运算需1次模乘运算和1次模平方运算。椭圆曲线点倍(P1=P2)运算需2次模乘运算和2次模平方运算。
从大整数模幂运算和椭圆曲线点乘运算的分解可以看出,都存在着两种基本的运算——模乘运算XY mod M和模平方运算X2mod M。
3.蒙哥马利模乘算法
蒙哥马利给出了一种非常有效的模乘方法,该方法的优点是利用简单的移位操作代替除法运算。设M为模数,M>1,M的二进制位长为n位,即2n-1≤M<2n,令R=2n,M与R互素。R-1和M′满足O<R-1<M,O<M′<R,R R-1-M M′=1。
Montgomery模乘算法描述:
1)T:=X·Y
2)m:=T·M′mod R
3)u:=(T+m·R)/R
4)if u≥M then returnu-M
           else return u
上述算法需要用到大整数的乘法,这对软件和硬件都很难实现。基于这个原因,Koc等人提出了基于字的蒙哥马利算法,FIOS(finelyintegrated operand scanning method)就是其中的一种。
FIOS算法描述:
其中w为每次处理的字长,L=n/w。
输入:X,Y,MC,M
输出:Result
Result:=0
(C,S):=0
for i=0 to L-1do
(C,S):=Result[0]+X[0]*Y[i]
Result[1]:=Result[1]+C
K:=S*MC(mod 2w)
(C,S):=S+K*M[0]
for j=1 to L-1 do
  (C,S):=Result[j]+X[j]*Y[i]+C
  Result[j+1]:=Result[j+1]+C
  (C,S):=S+K*M[j]
  Result[j-1]:=S
(C,S):=Result[L]+C
Result[L-1]:=S
Result[L]:=Result[L+1]+C
Result[L+1]:=0
目前,在模乘器的设计中大多都采用蒙哥马利算法及其变形。现有模乘器的设计是对中间结果进行(C,S)进行储存,下一循环需要用到时再读取(C,S),需要对存储设备进行频繁的读写。而对存储设备的读写是需要花费时钟周期,从而影响了模乘器的工作效率。
发明内容
本发明针对Koc提出的蒙哥马利算法FIOS(finely integrated operandscanning method),提出了一种改进的适合集成电路设计的FIOS方法。本发明针对集成电路设计中模乘器的设计提出一种新的模乘器的结构。本发明的优点是通过改变乘法的计算顺序从而将K写入RAM而不是C,S,减少了中间结果写入RAM中的次数。该结构不仅降低了芯片面积,而且还减少了模乘运算的时钟周期数。
根据本发明的一个方面,提供一种适合硬件实现的多字高基的蒙哥马利模乘方法,其特征在于:
乘数X、被乘数Y和模数M均为n位的二进制数,w为算法每次处理的字长,MC为w位的常数,中间变量K为n位的二进制数,中间变量C,S均为w位的二进制数,Carrybit为一位的二进制数,最终结果Result为n位的二进制数,i,j为循环变量,L=n/w,运算前变量C,S,Carrybit,Result均赋零值,其运算步骤如下:
(a)将X的第0个字与Y的第0个字相乘,乘积的低w位赋给S,高w位赋给C;
(b)将S与MC相乘后,求其对模2w的余数,结果赋给K的第0个字;
(c)将K的第0个字与M的第0个字相乘,乘积结果与C,S相加后,低w位赋给S,高w位赋给C;进位赋给Carrybit;
(d)将C的值赋给S,Carrybit赋给C的最低一位,其余位均置0,Carrybit位置0;
(e)令j为1开始外循环;
(f)令i为1开始内循环;
(g)将K的第i-1个字与M的第j+1-i个字相乘,乘积结果与Carrybit,C,S组成的2w+1位的二进制数相加,结果的低w位赋给S,高w位赋给C;进位赋给Carrybit,循环变量i加1,重复内循环直至i等于j,退出内循环;
(h)令i为0开始内循环;
(i)将X的第i个字与Y的第j-i个字相乘,乘积结果与Carrybit,C,S组成的2w+1位的二进制数相加,结果的低w位赋给S,高w位赋给C;进位赋给Carrybit,循环变量i加1,重复内循环直至i等于j,退出内循环;
(j)将S与MC相乘后,求其对模2w的余数,结果赋给K的第j个字;
(k)将K的第j个字与M的第0个字相乘,乘积结果与Carrybit,C,S组成的2w+1位的二进制数相加后,低w位赋给S,高w位赋给C;进位赋给Carrybit;
(1)将C的值赋给S,Carrybit赋给C的最低一位,其余位均置0,Carrybit位置0;
(m)循环变量j加1,重复外循环直至j等于L-1,退出外循环;
(n)令j为L-2开始外循环;
(o)令i为0开始内循环;
(p)将K的第L-1-j+i个字与M的第L-1-i个字相乘,乘积结果与Carrybit,C,S组成的2w+1位的二进制数相加,结果的低w位赋给S,高w位赋给C;进位赋给Carrybit,循环变量i加1,重复内循环直至i等于j,退出内循环;
(q)令i为0开始内循环;
(r)将X的第L-1-j+i个字与Y的第L-1-i个字相乘,乘积结果与Carrybit,C,S组成的2w+1位的二进制数相加,结果的低w位赋给S,高w位赋给C;进位赋给Carrybit,循环变量i加1,重复内循环直至i等于j,退出内循环;
(s)将S的值赋给Result的第L-2-j个字;
(t)将C的值赋给S,Carrybit赋给C的最低一位,其余位均置0,Carrybit位置0;
(u)循环变量j加1,重复外循环直至j等于0,退出外循环;
(v)将S的值赋给Result的第L-1个字
根据本发明的另一个方面,提供一种基于多字高基的蒙哥马利的模乘器,其特征在于包含双端口RAM(110)、第一至第五锁存器(101、102、103、104和105)、乘法器(109)和第一、第二和第三加法器(106、107、108),其特征在于:
存储单元双端口RAM(110)用来存储数据,包括输入乘数X、被乘数Y、初始常数MC、模数M、中间结果K和最后结果Result;双端口RAM(110)和第三至第五锁存器(103、104和105)、第三加法器(108)通过内部线路相连,控制电路控制RAM向第四和第五锁存器(104和105)读入计算所需要的字,包括乘数X、被乘数Y、初始常数MC、模数M、中间结果K;控制第三锁存器(103)和第三加法器(108)向RAM写入需要存储的字,包括中间结果K和最后结果Result;
第一至第五锁存器(101、102、103、104和105)用来锁存临时结果,其中第一锁存器(101)是w+1位锁存器和第二锁存器(102)是w位锁存器,用来存储加法单元输出的进位、高w位和低w位,第三锁存器(103)用来存储输出到存储单元的最终结果的部分字,第四和第五锁存器(104和105)用来对从存储单元的输入进行锁存;
第一和第二加法器(106、107)用来对乘法器(109)的输出结果和第一和第二锁存器(101、102)中锁存的结果进行加法运算,最后结果Result的字输出到锁存器(103),其它中间结果锁存在第一和第二锁存器(101和102)中;
第三加法器(108)对乘法单元的输出结果相加得到中间结果K;
乘法器(109)用来计算w*w位的乘法,输出为C、S结果;乘法器(109)用来对锁存器(104和105)的输入进行乘法运算,当计算中间结果K时,乘法器结果输出给加法器(108),除此之外乘法器结果输出给第一和第二加法器(106和107),其中乘法结果的C输出到第一加法器(106),S输出到第二加法器(107)。
从上述过程可以看出,对RAM共进行了2L次写操作,分别是写入中间结果K的L个字和最后结果Result的L个字。同时减少了读RAM的次数,在上述步骤的(b)->(c)和步骤(j)->(k)过程中,不用从RAM中读出K[0]和K[j],j从1到L-1,同时在这一过程中可以向RAM写入K[j],j从0到L-1,从而提高了RAM的访问效率。
模乘器是RSA和ECC密码协处理器核心运算部件,模乘运算的速度取决于模乘运算的周期数。而模乘运算的周期数则取决于模乘器中各部件特别是乘法器的利用效率。本发明的模乘器的特征在于最大程度的提高了模乘器中的各部件特别是乘法器的利用效率和RAM的访问效率。
附图说明
图1是本发明的模乘器的基本结构图;
图2是本发明的64位模乘器的结构图;
图3是L=4时模乘计算顺序图;
图4是L=4时模平方计算顺序图;
图5-6是本发明的适合硬件实现的蒙哥马利模乘方法的一个实施例的流程图
具体实施方式
本发明的适合硬件实现的蒙哥马利模乘方法中,w为蒙哥马利算法每次处理的字长,L=n/w,n为模数的二进制位长,包括步骤:
输入以下参数:X,Y,MC,M,其中MC为参数,M为模;
设输出为Result,按如下步骤计算模乘结果:
Result:=0
(C,S):=0,其中C,S中间结果,C为高w位,S是低w位
(C,S):=X[0]*Y[0]
K[0]:=S*MC(mod 2w),其中K[0]为中间结果
(carrybit,C,S):=(carrybit,C,S)+K[0]M[0]
(carrybit,C,S)>>w,即右移w位
For j=1 to L-1 do
 For i=1 to j do
    (carrybit,C,S):=(carrybit,C,S)+K[i-1]M[j+1-i]
 Fori=0 to j do
    (carrybit,C,S):=(carrybit,C,S)+X[i]Y[j-i]
 K[j]:=S*MC(mod 2w)
 (carrybit,C,S):=(carrybit,C,S)+K[j]*M[0]
 (carrybit,C,S)>>w
Forj=L-2 to 0 do
 For i=0 to j do
    (carrybit,C,S):=(carrybit,C,S)+K[L-1-j+i]M[L-1-i]
 For i=0 to j do
    (carrybit,C,S):=(carrybit,C,S)+X[L-1-j+i]Y[L-1-i]
Result[L-2-j]:=(carrybit,C,S)(mod 2w)
 (carrybit,C,S)>>w
Result[L-1]:=(carrybit,C,S)(mod 2w)
输出模乘结果Result。
模乘器是RSA和ECC密码协处理器核心运算部件,模乘运算的速度取决于模乘运算的周期数。而模乘运算的周期数则取决于模乘器中各部件特别是乘法器的利用效率。本发明的模乘器的特征在于最大程度的提高了模乘器中的各部件特别是乘法器的利用效率和RAM的访问效率。
本发明的模乘器包含一个w*w位的CS乘法器,一个双端口RAM,三个w位的加法器,五个锁存器。
图1示出本发明的模乘器,包括第一至第五锁存器101、102、103、104和105,用来锁存临时结果,其中第一w+1位锁存器101和第二w位锁存器(102)用来存储中间结果Carrybit、C和S,第三w位锁存器(103)用来锁存作为最终结果S的部分字,第四和第五w位锁存器104和105用来对输入X、Y、MC、M进行锁存;第一和第二w位加法器106、107用来计算(carrybit,C,S)+K[0]M[0]、(carrybit,C,S)+K[i-1]M[j+1-i]、(carrybit,C,S)+X[i]Y[j-i]、(carrybit,C,S)+K[j]*M[0]、(carrybit,C,S)+K[L-1-j+i]M[L-1-i]和(carrybit,C,S)+X[L-1-j+i]Y[L-1-i]中的加法;第三w位加法器(108)用于对S*MC的C,S输出结果相加得到K[i];w*w位乘法器(109)用来计算算法中的所有乘法,包括X[0]Y[0]、K[0]M[0]、K[i-1]M[j+1-i]、X[i]Y[j-i]、K[j]*M[0]、K[L-1-j+i]M[L-1-i]和X[L-1-j+i]Y[L-1-i];双端口RAM(110)用来存储数据,包括输入X、Y、MC、M、中间结果K和最后结果Result,其中各个部件的操作为
控制电路控制从双口RAM110中输入以下参数:X,Y,MC,M,其中MC为参数,M为模;
设输出为Result,按如下步骤计算模乘结果:
Result:=0
(C,S):=0,其中C,S中间结果,C为高w位,S是低w位
(C,S):=X[0]*Y[0]
K[0]:=S*MC(mod 2w),其中K[0]为中间结果
(carrybit,C,S):=(carrybit,C,S)+K[0]M[0]
(carrybit,C,S)>>w,即右移w位
For j=1 to L-1 do
 For i=1 to j do
    (carrybit,C,S):=(carrybit,C,S)+K[i-1]M[j+1-i]
 For i=0 to j do
    (carrybit,C,S):=(carrybit,C,S)+X[i]Y[j-i]
 K[j]:=S*MC(mod 2w)
 (carrybit,C,S):=(carrybit,C,S)+K[j]*M[0]
 (carrybit,C,S)>>w
For j=L-2 to 0 do
 For i=0 to j do
    (carrybit,C,S):=(carrybit,C,S)+K[L-1-j+i]M[L-1-i]
 Por i=0to j do
     (carrybit,C,S):=(carrybit,C,S)+X[L-1-j+i]Y[L-1-i]
Result[L-2-j]:=(carrybit,C,S)(mod 2w)
 (carrybit,C,S)>>w
Result[L-1]:=(carrybit,C,S)(mod 2w)
从双口RAM(110)中输出模乘结果Result。
图2示出根据本发明的一个实施例的64位模乘器。装置201、202、203、204和205为64位的锁存器,用来锁存临时结果,其中装置201和装置202用来存储中间结果C,S,装置203用来锁存作为最终结果S的部分字,装置204和装置205用来对输入进行锁存;装置206、207为64位加法器,用来计算(carrybit,C,S)+K[0]M[0]、(carrybit,C,S)+K[i-1]M[j+1-i]、(carrybit,C,S)+X[i]Y[j-i]、(carrybit,C,S)+K[j]*M[0]、(carrybit,C,S)+K[L-1-j+i]M[L-1-i]和(carrybit,C,S)+X[L-1-j+i]Y[L-1-i]中的加法;装置208为64位加法器,对S*MC的C,S输出结果相加得到K[i];装置209为64*64位CS输出乘法器,用来计算算法中的所有乘法,包括X[0]Y[0]、K[0]M[0]、K[i-1]M[j+1-i]、X[i]Y[j-i]、K[j]*M[0]、K[L-1-j+i]M[L-1-i]和X[L-1-j+i]Y[L-1-i];装置210为双端口RAM,用来存储数据,包括输入X、Y、MC、M、中间结果K和最后结果Result。
图3是L=4时改进的蒙哥马利方法计算模乘的一个实例,其中X=(X[3],X[2],X[1],X[0]),Y=(Y[3],Y[2],Y[1],Y[0]),M=(M[3],M[2],M[1],M[0])。图中的数字代表了计算乘法的先后次序,箭头代表了运算的方向。譬如:“1”为计算X[0]*Y[0],“2”为计算K[0]:=S*MC,“3”为计算K[0]*M[0]。该模乘器的运算为:
(carrybit,C,S):=(carrybit,C,S)+X[i]Y[j]
(carrybit,C,S):=(carrybit,C,S)+K[i]M[j]
该模乘器采用图3所示的计算顺序最大的优点是:减少了向RAM写数的次数,L=4时共向RAM写8个w位的数:K[0]、K[1]、K[2]、K[3]和最终结果S[0]、S[1]、S[2]、S[3]而不是像传统的模乘器把每次运算的中间结果放入RAM。同时从上图可以看出由3->4、8->9、15->16、24->25过程转换过程中只需从RAM中读入M[1]即可运算,这既减少了从RAM中读数的个数,同时可利用该过程把K[0]、K[1]、K[2]、K[3]写入RAM中,从而节省了时间,提高了模乘器的工作效率。
模乘器中采用流水线结构,乘法器每个时钟周期都计算一次乘法,连续计算,因此乘法器得到了最大程度的利用,计算顺序如上图所示。从上图中可以看出一次模乘所需的乘法数为2L2+L,考虑到读写周期数,一次模乘所需的时钟周期为2L2+L+4,即256位的模乘所需周期数为40个。
图4是L=4时改进的蒙哥马利方法计算模平方的一个实例,其中X=(X[3],X[2],X[1],X[0]),M=(M[3],M[2],M[1],M[0])。图中的数字代表了计算乘法的先后次序,箭头代表了运算的方向。譬如:“1”为计算X[0]*Y[0],“2”为计算K[0]:=S*MC,“3”为计算K[0]*M[0]。该模乘器的运算为:
(carrybit,C,S):=(carrybit,C,S)+X[i]X[i]
(carrybit,C,S):=(carrybit,C,S)+2X[i]X[j]
(carrybit,C,S):=(carrybit,C,S)+K[i]M[j]
该模平方采用图4所示的计算顺序最大的优点是:减少了向RAM写数的次数,L=4时共向RAM写8个w位的数:K[0]、K[1]、K[2]、K[3]和最终结果S[0]、S[1]、S[2]、S[3]而不是像传统的模乘器把每次运算的中间结果放入RAM。同时从上图可以看出由3->4、7->8、13->14、20->21过程转换过程中只需从RAM中读入M[1]即可运算,这既减少了从RAM中读数的个数,同时可利用该过程把K[0]、K[1]、K[2]、K[3]写入RAM中,从而节省了时间,提高了模乘器的工作效率。
从上图中可以看出一次模平方所需的乘法数为3(L2+L)/2,考虑到读写周期数,一次模平方所需的时钟周期为3(L2+L)/2+4,即256位的模平方所需周期数为34个。
图5是本发明的第1部分的部分流程图。
在步骤501,计算(C,S):=X[0]*Y[0];
在步骤502,置j:=0;
在步骤503,计算K[j]:=S*MC(mod 2w);
在步骤504,计算(carrybit,C,S):=(carrybit,C,S)+K[j]M[0];
在步骤505,(carrybit,C,S)>>w;
在步骤506,j++;
在步骤507,判断j:≤L-1是否成立,成立,执行步骤508,否则转图6;
在步骤508,置i:=1;
在步骤509,判断i:≤j是否成立;成立,执行步骤510,否则转步骤511;
在步骤510,计算(carrybit,C,S):=(carrybit,C,S)+K[i-1]M[j+1-i],i++,转步骤509;
在步骤511,置i:=0;
在步骤512,判断i:≤j是否成立;成立,执行步骤513,否则转步骤503;
在步骤513,计算(carrybit,C,S):=(carrybit,C,S)+X[i]Y[j-i],i++,转步骤512。
图6是本发明的第1部分的部分流程图。
在步骤601,置j:=L-2;
在步骤602,判断j≥0是否成立,成立,执行步骤603,否则转步骤612;
在步骤603,置i:=0;
在步骤604,判断i:≤j是否成立;成立,执行步骤605,否则转步骤606;
在步骤605,(carrybit,C,S):=(carrybit,C,S)+K[L-1-j+i]M[L-1-i],i++,转步骤604;
在步骤606,置i:=0;
在步骤607,判断i:≤j是否成立;成立,执行步骤608,否则
转步骤609;
在步骤608,(carrybit,C,S):=(carrybit,C,S)+X[L-1-j+i]Y[L-1-i],i++,转步骤607;
在步骤609,Result[L-2-j]:=(carrybit,C,S)(mod 2w);
在步骤610,(carrybit,C,S)>>w;
在步骤611,执行j++,转步骤602;
在步骤612,Result[L-1]:=(carrybit,C,S)(mod 2w),终止;

Claims (2)

1.一种适合硬件实现的多字高基的蒙哥马利模乘方法,其特征在于:
乘数X、被乘数Y和模数M均为n位的二进制数,w为算法每次处理的字长,MC为w位的常数,中间变量K为n位的二进制数,中间变量C,S均为w位的二进制数,Carrybit为一位的二进制数,最终结果Result为n位的二进制数,i,j为循环变量,L=n/w,运算前变量C,S,Carrybit,Result均赋零值,其运算步骤如下:
(a)将X的第0个字与Y的第0个字相乘,乘积的低w位赋给S,高w位赋给C;
(b)将S与MC相乘后,求其对模2w的余数,结果赋给K的第0个字;
(c)将K的第0个字与M的第0个字相乘,乘积结果与C,S相加后,低w位赋给S,高w位赋给C;进位赋给Carrybit;
(d)将C的值赋给S,Carrybit赋给C的最低一位,其余位均置0,Carrybit位置0;
(e)令j为1开始外循环;
(f)令i为1开始内循环;
(g)将K的第i-1个字与M的第j+1-i个字相乘,乘积结果与Carrybit,C,S组成的2w+1位的二进制数相加,结果的低w位赋给S,高w位赋给C;进位赋给Carrybit,循环变量i加1,重复内循环直至i等于j,退出内循环;
(h)令i为0开始内循环;
(i)将X的第i个字与Y的第j-i个字相乘,乘积结果与Carrybit,C,S组成的2w+1位的二进制数相加,结果的低w位赋给S,高w位赋给C;进位赋给Carrybit,循环变量i加1,重复内循环直至i等于j,退出内循环;
(j)将S与MC相乘后,求其对模2w的余数,结果赋给K的第j个字;
(k)将K的第j个字与M的第0个字相乘,乘积结果与Carrybit,C,S组成的2w+1位的二进制数相加后,低w位赋给S,高w位赋给C;进位赋给Carrybit;
(1)将C的值赋给S,Carrybit赋给C的最低一位,其余位均置0,Carrybit位置0;
(m)循环变量j加1,重复外循环直至j等于L-1,退出外循环;
(n)令j为L-2开始外循环;
(o)令i为0开始内循环;
(p)将K的第L-1-j+i个字与M的第L-1-i个字相乘,乘积结果与Carrybit,C,S组成的2w+1位的二进制数相加,结果的低w位赋给S,高w位赋给C;进位赋给Carrybit,循环变量i加1,重复内循环直至i等于j,退出内循环;
(q)令i为0开始内循环;
(r)将X的第L-1-j+i个字与Y的第L-1-i个字相乘,乘积结果与Carrybit,C,S组成的2w+1位的二进制数相加,结果的低w位赋给S,高w位赋给C;进位赋给Carrybit,循环变量i加1,重复内循环直至i等于j,退出内循环;
(s)将S的值赋给Result的第L-2-j个字;
(t)将C的值赋给S,Carrybit赋给C的最低一位,其余位均置0,Carrybit位置0;
(u)循环变量j加1,重复外循环直至j等于0,退出外循环;
(v)将S的值赋给Result的第L-1个字
2.一种基于多字高基的蒙哥马利的模乘器,其特征在于包含双端口RAM(110)、第一至第五锁存器(101、102、103、104和105)、乘法器(109)和第一、第二和第三加法器(106、107、108),其特征在于:
存储单元双端口RAM(110)用来存储数据,包括输入乘数X、被乘数Y、初始常数MC、模数M、中间结果K和最后结果Result;双端口RAM(110)和第三至第五锁存器(103、104和105)、第三加法器(108)通过内部线路相连,控制电路控制RAM向第四和第五锁存器(104和105)读入计算所需要的字,包括乘数X、被乘数Y、初始常数MC、模数M、中间结果K;控制第三锁存器(103)和第三加法器(108)向RAM写入需要存储的字,包括中间结果K和最后结果Result;
第一至第五锁存器(101、102、103、104和105)用来锁存临时结果,其中第一锁存器(101)是w+1位锁存器和第二锁存器(102)是w位锁存器,用来存储加法单元输出的进位、高w位和低w位,第三锁存器(103)用来存储输出到存储单元的最终结果的部分字,第四和第五锁存器(104和105)用来对从存储单元的输入进行锁存;
第一和第二加法器(106、107)用来对乘法器(109)的输出结果和第一和第二锁存器(101、102)中锁存的结果进行加法运算,最后结果Result的字输出到锁存器(103),其它中间结果锁存在第一和第二锁存器(101和102)中;
第三加法器(108)对乘法单元的输出结果相加得到中间结果K;
乘法器(109)用来计算w*w位的乘法,输出为C、S结果;乘法器(109)用来对锁存器(104和105)的输入进行乘法运算,当计算中间结果K时,乘法器结果输出给加法器(108),除此之外乘法器结果输出给第一和第二加法器(106和107),其中乘法结果的C输出到第一加法器(106),S输出到第二加法器(107)。
CNB2006101366557A 2006-11-09 2006-11-09 高效模乘方法及装置 Active CN100527073C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2006101366557A CN100527073C (zh) 2006-11-09 2006-11-09 高效模乘方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2006101366557A CN100527073C (zh) 2006-11-09 2006-11-09 高效模乘方法及装置

Publications (2)

Publication Number Publication Date
CN1967469A CN1967469A (zh) 2007-05-23
CN100527073C true CN100527073C (zh) 2009-08-12

Family

ID=38076263

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006101366557A Active CN100527073C (zh) 2006-11-09 2006-11-09 高效模乘方法及装置

Country Status (1)

Country Link
CN (1) CN100527073C (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102999313B (zh) 2012-12-24 2016-01-20 飞天诚信科技股份有限公司 一种基于蒙哥马利模乘的数据处理方法
CN103207770B (zh) * 2013-04-16 2016-09-28 飞天诚信科技股份有限公司 一种在嵌入式系统中实现大数预计算的方法
CN103888246A (zh) * 2014-03-10 2014-06-25 深圳华视微电子有限公司 低功耗小面积的数据处理方法及其数据处理装置
CN109669670B (zh) * 2018-12-26 2020-09-22 贵州华芯通半导体技术有限公司 用于蒙哥马利模乘中的不均等分块的数据处理方法及装置
CN109814838B (zh) * 2019-03-28 2024-04-12 贵州华芯半导体技术有限公司 获取加解密运算中的中间结果组的方法、硬件装置和系统
CN112286496B (zh) * 2020-12-25 2021-03-30 九州华兴集成电路设计(北京)有限公司 蒙哥马利算法的模乘器和电子设备

Also Published As

Publication number Publication date
CN1967469A (zh) 2007-05-23

Similar Documents

Publication Publication Date Title
Amara et al. Elliptic curve cryptography and its applications
Ors et al. Hardware implementation of an elliptic curve processor over GF (p)
CA2252078C (en) Power signature attack resistant cryptographic system
CN101782845B (zh) 一种椭圆曲线密码的高速运算装置和方法
CN100527073C (zh) 高效模乘方法及装置
CN101521504B (zh) 一种用于低功耗加密系统的可逆逻辑单元的实现方法
CN100470464C (zh) 基于改进的蒙哥马利算法的模乘器
Savaş et al. Finite field arithmetic for cryptography
Fan et al. Efficient hardware implementation of Fp-arithmetic for pairing-friendly curves
JP4682852B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
CN1841443B (zh) 计算方法和计算设备
Kocabaş et al. Implementation of binary Edwards curves for very-constrained devices
CN103942031A (zh) 椭圆域曲线运算方法和椭圆域曲线运算器
CN113794572A (zh) 一种高性能椭圆曲线数字签名与验签的硬件实现系统和方法
Machhout et al. Coupled FPGA/ASIC implementation of elliptic curve crypto-processor
CN101572602A (zh) 一种基于硬件设计的有限域求逆的方法及装置
Yao et al. Novel RNS parameter selection for fast modular multiplication
Kern et al. Low-resource ECDSA implementation for passive RFID tags
JP4177526B2 (ja) 乗算剰余演算方法および乗算剰余回路
CN113467754A (zh) 一种基于分解约简的格加密模乘运算方法及架构
Liu et al. Efficient digit-serial KA-based multiplier over binary extension fields using block recombination approach
Gutub Efficient utilization of scalable multipliers in parallel to compute GF (p) elliptic curve cryptographic operations
CN100382012C (zh) 一种操作数长度可伸缩的蒙哥马利模乘器运算方法
Batina et al. Balanced point operations for side-channel protection of elliptic curve cryptography
Woodbury Efficient algorithms for elliptic curve cryptosystems on embedded systems.

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: High efficiency modular multiplication method and device

Effective date of registration: 20120221

Granted publication date: 20090812

Pledgee: Bank of Communications Ltd Beijing Jiuxianqiao branch

Pledgor: Beijing Huada Infosec Technology, Ltd.

Registration number: 2012990000059

PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20130802

Granted publication date: 20090812

Pledgee: Bank of Communications Ltd Beijing Jiuxianqiao branch

Pledgor: Beijing Huada Infosec Technology, Ltd.

Registration number: 2012990000059

PLDC Enforcement, change and cancellation of contracts on pledge of patent right or utility model
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: High efficiency modular multiplication method and device

Effective date of registration: 20130902

Granted publication date: 20090812

Pledgee: Bank of Communications Ltd Beijing Jiuxianqiao branch

Pledgor: Beijing Huada Infosec Technology, Ltd.

Registration number: 2013990000634

PLDC Enforcement, change and cancellation of contracts on pledge of patent right or utility model
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20140701

Granted publication date: 20090812

Pledgee: Bank of Communications Ltd Beijing Jiuxianqiao branch

Pledgor: Beijing Huada Infosec Technology, Ltd.

Registration number: 2013990000634

PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: High efficiency modular multiplication method and device

Effective date of registration: 20140702

Granted publication date: 20090812

Pledgee: Beijing Guohua financing Company limited by guarantee

Pledgor: Beijing Huada Infosec Technology, Ltd.

Registration number: 2014990000533

PLDC Enforcement, change and cancellation of contracts on pledge of patent right or utility model
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20150708

Granted publication date: 20090812

Pledgee: Beijing Guohua financing Company limited by guarantee

Pledgor: Beijing Huada Infosec Technology, Ltd.

Registration number: 2014990000533

PLDC Enforcement, change and cancellation of contracts on pledge of patent right or utility model
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: High efficiency modular multiplication method and device

Effective date of registration: 20150714

Granted publication date: 20090812

Pledgee: Beijing Guohua financing Company limited by guarantee

Pledgor: Beijing Huada Infosec Technology, Ltd.

Registration number: 2015990000561

PLDC Enforcement, change and cancellation of contracts on pledge of patent right or utility model
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20160922

Granted publication date: 20090812

Pledgee: Beijing Guohua financing Company limited by guarantee

Pledgor: Beijing Huada Infosec Technology, Ltd.

Registration number: 2015990000561

PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: High efficiency modular multiplication method and device

Effective date of registration: 20160922

Granted publication date: 20090812

Pledgee: Beijing Guohua financing Company limited by guarantee

Pledgor: Beijing Huada Infosec Technology, Ltd.

Registration number: 2016990000812

PLDC Enforcement, change and cancellation of contracts on pledge of patent right or utility model
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20171220

Granted publication date: 20090812

Pledgee: Beijing Guohua financing Company limited by guarantee

Pledgor: Beijing Huada Infosec Technology, Ltd.

Registration number: 2016990000812

PC01 Cancellation of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: High efficiency modular multiplication method and device

Effective date of registration: 20171220

Granted publication date: 20090812

Pledgee: Beijing SME credit re Company limited by guarantee

Pledgor: Beijing Huada Infosec Technology, Ltd.

Registration number: 2017990001191

PE01 Entry into force of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20210825

Granted publication date: 20090812

Pledgee: Beijing SME credit re Company limited by guarantee

Pledgor: BEIJING HUADA INFOSEC TECHNOLOGY, Ltd.

Registration number: 2017990001191