高速模乘法方法及装置的制作方法

文档序号:6410397阅读:223来源:国知局
专利名称:高速模乘法方法及装置的制作方法
技术领域
本发明涉及一种高速的模乘法装置及方法,适用于公开密钥体制如RSA、DSS等对数据加密、解密、数字签名的密码技术。
形如Y≡Xdmod M称为模指数运算,广泛用于密码学—特别是公开密钥密码体制中。例如,Deffie和Hellman协议,RSA算法及专用于数字签名的DSA(或称DSS)算法都建立在这种运算上。随着信息技术的发展,对信息加密和数字签名越来越重要。但是这些算法的计算量太大,因此,高速模指数运算是上述算法能够实际应用的关键。根据目前数据加密的要求,模M及X都必须是巨大整数,通常认为500—1000比特。计算模指数本质上是重复计算形如A×B mod M的模乘法,即要求快速模乘法计算。
计算R≡A×B modM,已存在多种算法,著名的如Montgomery算法(见"Mudular Multiplication without Trial Division",Math.Computation,Vol.44,1985,pp.519-521)。本质上与纸和笔计算的方法相似。就是从被乘数A的高位开始,每取次一位与乘数B相乘(B的倍数),与上次残余数R相加,进行一次向左(向上)的移位。再减去M的某个整数倍,直到每一位都处理完,就得到最终残余数RR=A×B-Q×M。围绕这个计算过程。由于通用的短字长CPU不能满足这种高密度计算,只有设计专门模乘法电路。现已经实用中的512位模指数运算器的效率是十几秒,远远满足不了信息加密或数字签名的要求。在研究中的方案提出许多脉动阵列的技术,(见,"Systolic Mudular Multiplication",Colin.D.Walter,IEEE Transaction on Computers,Vol.42,No.6,June 1993,pp.693-699;美国专利5,101,431"Systolic array for modularmultiplication".(1992),采用n×n个单元按位处理每次的残数R,即连续两次乘法,可能是目前最快的之一。但是在实现上有一定的困难,因为对于103/2的数据长度需要4×106个门,显然难于集成到单一芯片上。美国专利5,313,530"Caculatingapparatus and method of encrypting/decrypting communication data by using the same"(1994),是一种脉动加流水的的技术方案,运用高阶基数(多比特表示一位),一个操作数按位流水与另一操作数处理每个残数R,流水级数是另一操作数的位数,仍然相当多的,是一种在电路复杂度和速度间作了一定折衷的方案。
现代密码运算上面对巨大的数据,而且随着破译技术的发展,数据长度还会增加。而迄今为止的模乘法器,本质上都在顺序执行n×n和n+/-n的操作,就是说一个操作数的每一比特(位)顺序地与另一操作数的每一比特(位)相乘、或相加或相减。由于n很大,这种顺序地积累单步延迟造成总效率降低,而且每一步都涉及A×B、确定Q、Q×M的计算,每个处理单元都相当的复杂。因此,不解决这本质上的障碍,就不会有高效的模乘法器满足密码运算的需要。
因此,本发明的目的在于提供一种方法及装置,克服传统长数据操作的低效。使乘法和加法每步不是按一操作数的一比特(位)对另一操作数的一比特(位)顺序处理,变为一操作数的一位(k比特)对另一操作数的全部位(n比特)的并行处理,提高模乘法速度。
本发明的另一目的还在于提供一种方法和装置,使乘法和加法的上述一位(k比特)对n比特的处理,变为k+1比特的乘/加处理,提高每步的效率。
本发明的又一目的还在于提供一种方法和装置,使用最少的元件构成实用的模乘法器,满足要求面积第一的应用要求。
本发明的又一目的还在于提供一种方法和装置,采用并行流水的电路构成一种实用模乘法器,满足要求速度第一的应用要求,但复杂度少于阵列结构。
本发明的这些目的可以通过以下的措施来达到本发明的方法及装置有三个输入寄存器,分别存放被乘数A、乘数B和模数M。采用基数r=2k(k>2)的高阶基数,将被乘数A表示为A=Σj=1mAjrj-1,]]>其中m=n/k,是位数,n是数据长度,通常要求500-1000比特,为方便起见,假设A、B、M有同样的数据长度,并不失其一般性。其余的如乘数B、商Q、模M都采用同样的记号。一个输出寄存器存放同样表示的残数R。另有一个高速(k+1)×n乘法器,执行A×B。采用A的每一位每次与B的所有m位相乘。令Dt(t=1,2,…,m)为第t次求的Am-t+1、B的乘积,即D1=Σj=1mAmBj·rj,]]>D2=r·D1+Σj=1mAm-1Bj·rj]]>Dt=r·Dt-1+Σj=1mAm-t+1Bj·rj,]]>Dt为m+1位。另一高速乘法器执行M与它的某个倍数Q相乘,即M×Q。同理,采用Q的每一位每次与M的所有m位相乘,第t次所求得的Qm-t+1、M的乘积为Zt,即Zt=r·Zt-1+Σj=1mQm-t+1Mj.]]>运用一种并行方法和电路,使所说的两个(k+1)×n乘法器,并行执行一次m个(k+1)×k和两次m个的(k+1)+(k+1),完成一次的(k+1)×n的运算,即k+1比特的乘法和加法完成
采用两次相加的中间结果提前预置高位进位的方法和电路,做到在后一次相加中,m+1个部分积之间的无进位。虽然这会引起一定的延时(大约一次k比特加法),相比顺序的按位加法,效率有很大的提高。
根据模乘法的特点,通常做法是每次的A、B乘积都减去一个M的倍数,并不影响最终结果,另一方面减少中间结果的存储空间。由一个加法器把每次A×B的部分积与前次所求得的残余数Rt-1向左(向上)移位k比特后相加,再由一个减法器完成减去M的Q倍,得到当前的残数Rt,每次循环完成Rt=Dt-Zt=r·Rt-1+Σj=1m(Am-t+1Bj-Qm-t+1Mj)·rj.]]>采用一个单独的计算模块,通过执行如下的运算,得出每次循环中要求的一位商Qm-t+1的估计值Rte=Dte-Qm-t+1Mm,]]>式中Dte为第t次所求得A×B的乘积与已求余数Rt移位后相加之和取头两位,作为它的估值,用以计算下一位商的估值。Rte是基于商估值,并非真正的残余数Rt。如果0≤Rte<Mm(除数M的最高m位),则可以认为对Qm-t+1的猜测正确。否则Rte应作适当调整。
判断Rte的符号,可以决定是否执行Rt=Rte+M,由于计算商Qm-t+1的估值的总是大于或等于真正的商,Rt<=Rte。由此除去了每次都进行Rt<M的比较过程,简化电路并嬴得时间。
如此,经过t=m步的循环,完成整个计算,求得最终的残余数Rm。
本发明达到如下的效果
在此前的模乘法对A、B和M都是相当大的整数时效率很低,根本一点在于乘法或加法中存在很长进位,这是传统上不可避免的。本发明用“短”的乘法、加法取代传统的“长”乘法、加法,技术上用(k+1)×k和三次(k+1)比特加法达到k×n的结果,避免了部分积相加中n比特长的进位链,进位传递限制在k比特。使无论速度,还是器件数量有较优结果。此外,求商也仅是一次(k+1)×k的乘法和(k+1)比特减法的快速计算。回顾整个运算,全是k+1比特运算延时3次乘法、21次加/减法可完成500比特的数据长度。本发明可根据的实际需要,循环地一次一位,亦可流水地一次m位完成计算,更存在二极端间各种一次多位的平衡。
根据以上对处理一位数据的思想描述,充分展现了本发明并行流水计算特点,而且可有1位到m位的多种灵活装置。因此,下面的实施例仅在于强调发明的具体应用,而不是限制发明的精神。
附图的图例说明

图1模乘法顺序结构;图2最简单的模乘法器;图3乘法电路结构;图4加法电路结构;图5计算一位商的器件;图6一种并行流水的模乘法器。
下面结合附图的实施例进一步阐述本发明。
如图1,整个运算由一系列的乘法或加、减法的顺序计算构成A×B的乘法电路4、部分积加法电路5、残余数与A×B乘积相加的加法电路6、计算一位商Q的电路7、Q×M的乘法电路8、部分积相加的加法电路9、减去M倍数得到一个残余数的减法电路10及两个加法电路11,12。其中乘法电路4每次从第一输入寄存器1接受一位第一操作数Ai(i=1,2,....m),由高往低的顺序,第一次接受Am,第二次Am-1,....,第m次A1,从第二输入寄存器2接受m位第二操作数Bm,Bm-1,.......,B1,计算At-m+1×B。部分积相加的加法电路5将m个部分积相加,计算出D=Σj=1mAm-t+1Bj]]>残余数与A×B乘积相加的加法电路6计算前一次的残余数r.Rt-1+D,并把和放到中间寄存器RD19(图2)。求一位商Q的计算电路7输入RD19中的高两位和模M的高一位,计算出商的估值Qm-t+1。另一个乘法电路8每次输入得到的一位商的估值Qm-t+1从第三寄存器3接受m位第三操作数Mm,Mm-1,......,M1,计算Qt-m+1×M。另一个部分积相加的加法电路9将m个部分积相加,计算出Z=Σj=1mQm-t+1Mj.]]>减法电路10计算RtD-Z,结果就是残余数R,存放到输出寄存器RR13。判断Rt的符号位,如果R<0,则将Rt与M于另二加法电路11,12中相加,和仍然存放到输出寄存器RR13。如果R>0,则完成一次循环。重复输入下一个A,直到A1,完成Rm的计算。图1是基本的按位流水的方法和结构。
如图2,把所说的两个乘法电路4,8,合二为一个乘法电路16,增加两个数据选择电路14,15,选择乘法电路16的输入,使乘法电路16先后执行A×B和Q×M时输入相应的数据A、B或Q、M,把所说的加法电路5,6,9,11,12、减法电路10合为一个加减法电路17,用操作控制信号选择加减电路17的运算。其余的输入寄存器1,2,3、输出寄存器13仍然保留。增加两个中间寄存器RD19,RZ20。采用总线的三态电路作寄存器和运算单元间的数据通道。这样得到由一个(k+1)×n的乘法电路16、一个n+n的加减法电路17、两个n比特的中间寄存器19,20及所说的输入、输出寄存器组成的最小电路的快速模乘法器。这是按位循环结构。
如图3为乘法电路16的构成,21-25是m个(k+1)×k的乘法单元按顺序由左到右排列。第一操作数A由高到低每次取k比特输入,或每次输入k+1比特的Q的估值输入,第二操作数B由高到低取k比特按左到右的顺序输入到每个乘法单元21-25,同时计算(k+1)×k。其输出的2k+1比特乘积中的高k+1比特和它的左邻单元的低k比特,作为一对操作数同时输入到加减法电路17中对应的一个k+1比特加法单元26-31,加减法电路17输出m+1位的乘积。
如图4为加减法电路17的构成,是m个k+1比特带加、减控制和符号位的加法单元26-31按顺序由左到右排列。输入的两个n比特的操作数按k比特分成m段,由高到低每段各取k比特按左到右的顺序输入到每个加法单元26-31,同时相加一次,各段的最高比特作为进位输出到进位锁存器36-40,其余k比特输出到和锁存器32-35。和锁存器32-35的输出和其右邻单元进位锁存器36-40的输出,再输出到一个k+1端的与门41-44,与门输出如果是“1”,则对其左邻单元的进位锁存器36-40进行置“1”的操作。经过适当的延迟,再将和锁存器32-35和其右邻的进位锁存器36-40的值于对应的另一组加法单元45-48中相加。得到最后的和。
如图5为计算一位商的电路,输入Dt+r.Rt的高的2k比特和M的最高k比特(Mm)Mm分别与0,1,2,---2(r-1)于2r-1个(k+1)×k乘法单元50-54中相乘,同时产生2r-1个乘积送入对应减法单元55-59的“B”端(减数端),Dt+r.Rt的最高2k比特输入其“A”端(被减数端),相减得出2r-1个差,由一个输出电路判断符号位,若对应的电路60-64的输入符号不同,则触发对应的锁存单元65-69,内中分别锁存有0,1,2,---,2r-2,从而输出对应值为合适的Q。
如图6为高速的流水模乘法器,70-74是多个如图1的单一模乘法器,78-80,83-84,86是多个计算电路,每个电路由如图1的单一模乘法器去掉了A×B的乘法电路4及A×B的部分积相加的加法电路5组成,75-77,81-82,85是多个加法电路。将第一操作数A由高到低按位输入对应的模乘法器70-74的第一操作数寄存器1,同时第二操作数寄存器2存放第二操作数。并行计算多个模乘法,输出多个残余数R。这些R两两对应,其左边的R×r(相当于图1中前一次的R)与右边的R(相当于图1中的D)于多个加法电路75-77相加,加法电路75-77的数目等于单一模乘法电路70-74的一半,将多个和各取最高两位,与模M的最高位输入到多个计算电路78-80,其输出多个残余数R,按前述的多个R相加的方法处理,每一次R的数目减半,……,直到只剩下一个R,便是最终的残余数。这是多位流水的方法和结构。
此外,根据图1的基本方法和电路,还存在多种流水加循环的结构变化,使本发明适应多种用途。
权利要求
1.一种模乘法装置,由三个输入寄存器,一个输出寄存器,乘法电路,加法电路组成,其特征在于第一个输入寄存器存放k比特一位的数据A;第二个输入寄存器存放k比特一位的m位数据B;第三个输入寄存器存放k比特一位的m位数据M;一个输出寄存器存放计算出的残余数R;第一个乘法电路把所说的第一个输入寄存器的数据A与第二个输入寄存器的数据B相乘;第一个加法电路把所说的第一个乘法电路的多个部分积相加;第二个加法电路把所说残余数R乘以基数r后再与的所说的乘法电路的积相加,结果放入一个中间寄存器RD;一个计算电路,输入所说加法电路输出的高2K比特及第三个输入寄存器存放的数据M的最高一位,计算并输出k+1比特的商;第二个乘法电路把所说计算电路输出的k+1比特的商与第三个寄存器的数据M相乘,结果放到另一个中间寄存器RZ;第三个加法电路把所说的第二个乘法电路的多个部分积相加;一个减法电路把所说的两个中间寄存器RD和RZ的值相减,结果放到残余数寄存器;另外的加法电路,当残余数R小于零时,把残余数R和数据M相加至少一次,结果放到残余数寄存器RR。
2.根据权利1所说的模乘法装置,其特征在于其中的二个乘法电路由m个k+1的小乘法单元组成,每个单元输入相同的k比特数据A与不同的k比特数据B。
3.根据权利1所说的模乘法装置,其特征在于其中的所有的加法电路由两组m个k+1的小加法单元组成,第一组每个单元输出的进位存放到进位锁存器及输出的和存放到和锁存器,每个进位锁存器输出与其左邻,即高一位的和锁存器的输出经一个k+1端的与门检测,根据所说的与门的输出决定其左邻,即高一位的进位锁存器的值,每个进位锁存器输出与其左邻,即高一位的和锁存器的输出于另一组中对应的加法单元相加,输出最后的和。
4.根据权利1所说的模乘法装置,其特征在于其中的计算电路由多个乘法单元、减法单元、一个输出电路组成,输入所说第一个中间寄存器的高二位和第三输入寄存器存放的数据M的最高一位,将数据M的最高一位和0,1,2……,2r-2分别输入到所说的乘法单元相乘,得到的2r-1个数,与第一个中间寄存器高二位相减,经输出电路输出k+1比特的商。
5.根据权利1所说的模乘法装置,其特征在于可以把两个乘法电路单元合为一个乘法电路,把所有加法、减法电路合为一个加减法电路,根据一个控制信号决定加减法电路的操作,增加二个输入数据的选择器,输入乘法电路所需数据,保留计算k+1比特商的计算电路、所有输入寄存器、输出寄存器和中间寄存器,构成一种最简单的高效模乘法装置。
6.根据权利1所说的模乘法装置,其特征在于可以把多个这样的模乘法装置并行设置,增加多个加法电路,增加多个缺少了第一乘法电路和第一加法电路的模乘法装置的剩余部分组成的计算电路,将第一操作数A由高到低按位输入对应的模乘法器的第一操作数寄存器,同时第二操作数寄存器存放第二操作数,并行计算多个模乘法,输出多个残余数R,这些R两两对应,其左边的R×r与右边的R于多个加法电路相加,加法电路的数目等于单一模乘法装置的一半,将多个和取最高两位,与第三个输入寄存器最高位输入到下级多个计算电路,其输出多个残余数R,再两两送对应单元处理,输出残余数R的数目减半,直到最终剩一个残余数R,构成一种流水处理的最高速模乘法器。
全文摘要
本发明涉及一种高速的模乘法装置及计算方法,适用于密码技术,特别是公开密钥体制如RSA、DSS等对数据加密、解密和数字签名的运算。针对密码学的模乘法数据长度大的特点,采用几个比特并行的短乘法、加法、达到整个数据长度的乘、加运算的结果,避免长的进位延迟,大大提高计算的效率。计算可循环地一次一位、流水一次全部位,或者一次若干位,满足实用对速度-电路面积的各种要求。
文档编号G06F7/48GK1152746SQ96109838
公开日1997年6月25日 申请日期1996年9月20日 优先权日1996年9月20日
发明者张胤微 申请人:张胤微
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1