当前位置: 首页 > 专利查询>张胤微专利>正文

高速模乘法装置制造方法及图纸

技术编号:2890590 阅读:222 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种高速的模乘法装置及计算方法,适用于密码技术,特别是公开密钥体制如RSA、DSS等对数据加密、解密和数字签名的运算。针对密码学的模乘法数据长度大的特点,采用几个比特并行的短乘法、加法、达到整个数据长度的乘、加运算的结果,避免长的进位延迟,大大提高计算的效率。计算可循环地一次一位、流水一次全部位,或者一次若干位,满足实用对速度-电路面积的各种要求。(*该技术在2016年保护过期,可自由使用*)

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及一种高速的模乘法装置及方法,适用于公开密钥体制如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比特一位的数据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。...

【技术特征摘要】
【国外来华专利技术】

【专利技术属性】
技术研发人员:张胤微
申请(专利权)人:张胤微
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1