模幂运算电路和系统及模幂运算方法

文档序号:6411991阅读:988来源:国知局
专利名称:模幂运算电路和系统及模幂运算方法
技术领域
本发明涉及用于诸如信息网、交通、银行、医疗、销售等领域的加密和解密系统,尤其涉及用于实现信息加密、解密的一种模幂运算电路、系统和模幂运算方法。
随着信息交流技术的发展,人们越来越注重确保信息网的安全(防止窃取数据和破坏数据)。为此,信息加、解密技术不仅用于通信领域,而且还用于诸如交通、银行、医疗、销售等方面。因而,要求此类加、解密技术能以简便的原理实现高度的安全。
为了便于了解此技术,现简要讲述信息的加密和解密。
在密码技术中,“非对称密码算法”品质优越。该算法内,加密钥和解密钥各不相同,不能轻易地从他算出某一钥。
非对称密码算法的代表包括采用模幂运算的RSA密码、Elgamal密码、Rabin密码和Williams密码。在密码算法的应用方面,有“数字标记”系统,而且有将该系统标准化的趋势。待标记化数字和系统的代表包括RSA标记法、Elgamal标记法、Schnorr标记法和DSA(数字标记算法),这些方法都用位长较长的模幂运算。因此,为了实现数字标记系统,必不可少的是开发能在短时间内完成位长较长的模幂运算的运算单元。
RSA、Egamal、Rabin和Willams等密码基本上都用式(1)所示模幂运算、该式意为XY被N除后的余数。
XYmodN (1)而且,式中X代表要加密(解密)的明语文本(明文),Y和N代表加密(解密)用的密钥。
可用模幂运算方便地完成信息的加、解密,并通过加长操作数X、Y和N的位长,使密码分析困难。
然而,操作数位长加长,则完成模幂运算费时。关键在于如何用短时间完成位长不短的模幂运算。
以RSA密码为例介绍采用模幂运算的实际加、解密及其用法。
(1)RSA密码加密、解密概要加密采用下式
C=Memodn (2)解密采用下式M=Cdmodn (3)式中M代表要加密的明文,C代表已加密的明文,即密文。式(2)中,e和n代表加密钥;式(3)中,d和n代表解密钥。这些钥预先赋予下列条件n=p×q (4)1==e×dmod{LCM(p-1,q-1)} (5)式中,“==”意为式的左右两端相似,LCM意为最小公倍数。外,p和q互为素整数。e和n为公开钥,d、n和q为保密钥。
上述式(4)和(5)均定义加密算法模幂运算数值状态。式(4)定义大素数p和q(互为素数)的乘积。素数p和q均为奇数,因而其乘积必然为奇数。式(5)表示c和d的乘积(c×d)被式(4)所示p、q减1所得值的最小公倍数除后,余数为1。
根据式(4)、(5),明文M用式(2)加密,加密后的明文M(密文C)用式(3)解密。
(2)加、解密例参阅图2,讲述发送者A和接收者B完成的处理方法。作为限定例,设“发送者A将明文M加密为密文C后发出,接收者B将C解密为M”(用数字标记)。
发送者A完成的处理A所备明文MA借助A本人的保密钥dA加密,以制成标记文本CA(标记)。
CA=MAdAmodnA(6)
用B的公开键eB制备加密标记文本cA(加密)cA=CAeBmodnB (7)将cA发给B。
借助接收者自己的保密钥dB将B收到的加密标记文本cA解密(解密)cAdBmodB==(CAeBmodnB)dBmodnB (8)若CAeB=X,则式(8)可变为(CAeBmodnB)dBmodnB=(XmodnB)dBmodnB(9)式(9)中,若XmodnB=Y,即X被nB除的余数为Y且其商为k时,则该式可表为X=k×nB+YY=X-k×nB(10)因此,将式(10)替换式(9)右边相应部分时,式(9)表为(XmodnB)dBmodnB=YdBmodnB=(X-k×nB)dBmodnB (11)当用常数ai(i=1、2…)扩展式(11)的(X-k×nB)dB时,(X-k×nB)dB可表为(X-k×nB)dB=(XdB-a1×XdB-1×nB+a2×XdB-2…-ai×nBdB)(12)当将式(12)替换式(11)相应部分时,可得
(XmodnB)dBmodnB=YdBmodnB=(X-k×nB)dBmodnB=(XdB-a1×XdB-1×nB+a2×XdB-2×nB2…-ai×nBdB)modnB=XdBmodnB-a1×XdB-1×nBmodnB+a2×XdB-2×nB2modnB-…ai×nBdBmodnB此式的第2及其后各式均可除以nB,因而可略。故此式表为=XdBmodnB (13)上文设CAeB=X,因而X还原为CAeB时,可得=(CAeB)dBmodnB(14)归纳上述过程,则上式如下CAdBmodnB==(CAeBmodnB)dBmodnB=(CAeB)dBmodnB因eB和dB满足式(5),利用某整数h,可将eB和dB表为下式eB×dB=h(pB-1)+1若用Fermat小定理(即对素数p和与p互为素数的任意整数X,Xp-1modp=1成立),上式表为CAeB×dBmodpB=CAh(p-1)=1modpB=CA×CAh(p-1)modpB=CAmodpB (15)因为CA即便为pB的倍数,上式也满足,所以对所有的CA,CAeB×dB-CA都能被pB除。同样,CAeB×dB-CA可被qB除。又因pB和qB为不同素数,CAeB×dB-CA可被nB=pB×qB除。因此。下式成立
CAdBmodnB==CAeB×dBmodnB==CAmodnB(=CA)用发送者的公开键eA制成明文(标记认证)。
CAeAmdnA==(MAdA)eAmodnA==(MAeA)dAmodnA用与上述解密过程相同的加法计算,则可得=MA如上所述,在式(4)、(5)的条件下确定e、d和n的值,并基本上采用式(1)所示模幂运算方式,从而明文可加密,加密的明文可解密。
例如,若n=15,e=3,p=5,q=3,d=11(n=p×q=5×3=15,e×dmod(p-1)×(q-1)=3×11mod 4×2=33mod 8=1),明文M=13,则加密和解密分别进行如下C=Memodn=133mod 15=2197mod 15=7M=Cdmodn=711mod 15=1977326743mod 15=13证实将明文M=12解密。
(3)模幂运算方法现讲述加、解密用的模幂运算方法。
用下列1“流程1”所示迭代平方积法(整数e二进制扩展为e=ek-1…e1e0),执行模幂运算A=MemodN。bdginA=1for I=k-1 down to 0 dobeginA=A2modN (16)
if ei=1 then A=A×MmodN (17)endend图3的流程图表示迭代平方积法。
首先,初始值1载入寄存器A。该寄存器所存的值自乘的积A×A除以N,求余数。该余数存入寄存器a。然后,将寄存器a所存值载入寄存器A。此时,若指数e为1,则寄存器A所存值乘以明文M,其积除以N,求余数,存入寄存器a。再将寄存器a的内容存入寄存器A。若指数e为0,则不进行上述计算,寄存器A所存值保留不作任何运算。从e的最高有效位到最低有效位,重复进行上述计算,从而最后存入寄存器A的值为模幂运算的解。
如上所述,此运算的基础是乘和除(模运算),如式(16)和(17)所示。乘法对初始值为1的A完成A×A或A×M,除法对每次乘法所得值进行modN。按照“e”的二进位值反复进行一对乘和除的运算(A×AmodN或A×MmodN)。即按“e”的最高和最低有效位的内容进行乘和除。
上文已述的模幂运算可由反复进行基本的余数运算(或模运算)可求解,其重复的次数最多达几百至几千,因而即使用软件也能处理这种重复。然而,模运算本身需要大规模的运算电路和复杂的处理过程以完成除法,所以需要加以改进。
因此,本发明的目的是提供较简单且有效地进行模运算的方法和装置。
按照本发明的一个方面,模乘运算用的方法和装置对应于第1公式f(A,B)=A×BmodN,采用Montgomery替换运算的第2公式f(A,B)=A×B×R′modN执行第1公式的模乘运算(“mod”指模运算)(R′表示对2的幂且略大于模N的R,满足R×R′modn=1的值),以计算整数A和B的乘积除以整数N后的余数,此方法和装置包括执行第1替换算法f′1(RSmodn×AT,BU)的步骤或手段(S指0、1、2中之一,T指0或1,U指0或1)。以及执行第2替换运算f′2{R2-SmodN×AT×f′1(RSmodN×AT,BU),RSmodN×A1-T×B1-U)}的步骤或手段。
按照本发明的另一方面,进行模幂运算的方法和装置在模幂运算的迭代平方积方法中,对应于第1公式f(A,B)=A×BmodN,采用Montgomery替换运算的第2公式f′(A,B)=A×B×R′modN执行第1公式的模积运算,求得整数A和B的乘积除以N后的余数,从而执行模幂运算一般方程式F(M,E)=MEmodN(“mod”指模运算)(R′表示对2的幂且略大于模N的R,满足R×R′modN=1的值),计算整数M的E(整数)次方除以整数N后的余数,此方法和装置包括执行第1替换运算f′1(f′1,f′2)的步骤和手段(初始f′1=f′1(RmodN,RmodN)),执行第2替换运算f′2(f′1,M×RmodN)的步骤和手段,以及执行第3替换运算f′3(f′2,1)的步骤和手段,其中第3步骤安排在第1和第2执行步骤按整数E规定的次数进行重复之后。
按照本发明的又一方面,加密装置制备以加密钥K和E对明文进行加密而得的密码,其中采用执行模幂运算的迭代平方积法中,对应于公式f(A,B)=A×BmodN的Montgmery替换运算公式f′(A,B)=A×B×R′modN,此加密装置(设X×RmodN和Y×RmodN已知)执行第1替换运算f′1(X×RmodN,X×RmodN)=X2RmodN的手段、执行第2替换运算f′2(X×RmodN,Y×RmodN)=X×Y×RmodN的手段,以及执行第3替换运算f3(X×Rmodn,1)=XmodN的手段。


图1为本发明的流程图。
图2为密文处理限定例说明框图。
图3为模幂运算流程图。
图4为本发明硬件示意框图。
图5为本发明第1实施例示意框图。
图6为乘法和加法的解释单元。
图7为本发明第1实施例解释操作的硬件映像。
图8为本发明第2实施例示意框图。
图9为本发明第3实施例示意框图。
图10为本发明第4实施例示意框图。
图11为本发明第4实施例解释操作的硬件映像。
图12为本发明第4实施例解释操作的运算例。
图13为本发明第5实施例示意框图。
图14和图15为本发明第5实施例解释操作的硬件映像。
图16为本发明第5实施例解释操作的运算例。
图17为本发明第6实施例示意框图。
图18为本发明第7实施例示意框图。
图19为本发明第8实施例示意框图。
图20为本发明第9实施例示意框图。
图21为计算N′的流程图。
图22为计算N′和R′的流程图。
如上文所述,在模幂运算中,进行基本模运算的过程非常复杂,因而运算电路规模大。为此,Montgomery提出一种方案,通过进行乘法和简单的二进制位串处理求得模运算的解,而不用上述一般方法进行模运算。本发明基本上利用Montgomery建议的方案,因而现简述该方案。然而,本发明的特征在于一些缩短各运算操作时间的措施。
模运算中,R定义为2的幂且略大于模N,而且“modN乘”(意为计算(一值×一值)/(值N)的余数)中R的反值定义为R′(R×R′modN=1成立)。还定义满足R×R′-N×N′=1和0<N′<R的关系的N′(N′为Montgomery方案中N的反值)。此时,例如进行M(X)=XmodN形式的模运算,则该形式由下式替换M′(X)=X×R′modN(18)因此,进行流程2所示函数REDC(X)的计算方法,则不必依靠一般方法(只作乘和除),就能求得模运算的解。然而,流程2计算模运算的解,而非计算模幂运算的解。由上述函数获得式(18)的解为t或t-N。函数REDC(X)函数REDC(X)m=(XmodR)×N′modR (19)t=(X+m×N)/R (20)if t<Nreturn t(t结果) (21)else retirn t-N(t-N结果)(22)
上述函数包含采用运算要素N和N′的乘法和采用运算要素R的除法。由于已定义R=2n,用R的除法,其商的值大于被除数2n,其余数则小于2n。因此,式(19)的模运算只要审查小于2n的值即可,式(20)的除法仅审查等于或大于2n的值即可。也就是说,仅用乘法和加法即能求得模运算的解,不必实质上进行除运算(模运算)。
为了参考,现以式(19)和(20)讲述m、R和N的关系。
在式(19)中,m×N=((XmodR)×N′modR)×N==X×N×N′modR==X×(R×R-1)modR==X×R×R′modR-XmodR==-XmodRX+m×N==X+(-XmodR)==0modR此方程式含意为X+m×N除以R时,余数为0。即,X+m×N可被R除尽。
因为X+m×N为“X”与“N的倍数”的和,即,(X+m×N)modN==Xmod N+m×NmodN==XmodN,所以从式(20)得t×RmodN==XmodN。若两边乘R′,则t×R×R′mod N==tmod N==X×R′mod N。
若上式X×R′modN中的X为计算modN或modR(后文讲述)的乘积值,则X<N×N<R×N<R×R。(因为m是modR的执行结果,故m<R。于是,m×N<R×N。
又因为X<R<N,X+m×N<R×N+R×N=2R×N,所以下式成立t=(X+m×N)/R<2Nt<2N
若t大于N,则以上式两边减N,得下式t-N<N由此式可知,t-N是受modN后的值。
现补充说明式(20)t=(X+m×N)/R的计算和t计算的完成。
X+m×N必须为R的倍数,因而例如在R=2576时,X+m×N中小于576位的值均为0。于是,式(20)中t的计算分为下列两种。
(i)X不是R的倍数此时X+m×N和R的位串作为映像表示如下R=1000…0000X=????????…????m×N=????????…????X+m×N=??????000…0000在式(20)的计算中,因为t必然作为整数值求得,故X+m×N成为R的倍数。因此,X+m×N为上述位串映像。有下划线的部分为t的解。其原因是X+m×N为R的倍数,小于R的X与m×N相加结果必然为0,而用?表示的值原本非0,故在加法过程中会产生任何大于R的进位。于是,忽略小于R的X值和m×N值,计算下式以求解t=(大于R的X值)+(大于R的m×N值)+1(ii)X是R的倍数这种情况下,X和R的位串作为映像表示如下R=1000…0000X=?????000…0000此时,式(19)的XmodR为0,故m=0。若m=0,式(20)的计算为t=X/R。t必然求得整数值,可由下式得其解t=(大于R的X值)可根据小于R的X的值是否为0,判断X是否为R的倍数。这意味着t的计算不需要对X的全部位长进行计算,可减少计算量和计算时间。
在t计算完成方面,函数REDC(X)计算结果为0<t<2n范围的值,因而N<t时,必须再计算t-N,如流程2所示。然而,模幂运算过程完成的函数REDC(X)中t的计算结果,在t<R范围中即使存在N<t的关系,也仍旧要进行后续的计算。其原因是后面进行的模运算消去此过程残留的N值。
设模幂运算过程的计算结果为MmodN=S,则下列关系成立M=k1×N+S=(k1-1)×N+N+S因此,考虑此时模运算中残留N+S,则在下一模运算(例如模幂运算的A2modN,参阅图3)中进行下列过程,再次作模运算M1=A×A=(N+S)×(N+S)=N2+2×N×S×S2于是,M1modn=(N2+2×N×S×S2)modN==S2mod N上式的含义是消去先前模运算遗留的N值。即使在A×MmodN的模运算中计算M1,也获得相同的结果。甚至在Montgomery方法中,也是这样。
为了简便,用短位长的实际数值为例进行讲述。
设N=13(11010),R=(1000),上次计算函数REDC(X)所得t=15(1111),且其间关系为N≤t<R<2N。虽然此时t的第4位为“0”,但t本身的值还未获得模运算的纯解。然而,t未超过位长N,适合作为下一模幂运算A×A×R′modN或A×M×R′modN的替换值。即,由于下面进行的A×A和A×M乘法所得值不超过规定位长(上述数值例中,为4位×2=8位),能继续进行具有规定位长的“R′modN乘”的计算。
t可表为t=15=13+2=N+2。其含意为modN计算中,上次函数REDC(X)所得t的值为“尚留N的值”。将t值原样代入A,则计算A×A×R′modN如下A×A×R′modN=(N+2)×(N+2)×R′modN=(N2+4N+4)×R′modN==N2×R′modN+4N×R′modN+4×R′modN==4×R′modN此计算与不用上次函数REDC(X)所得t值(t=N+2),而用modN运算纯解t=2计算A×A×R′N时,具有相同结果。
(实例)对X=44123,R=28和N=199计算M′(X)=X×R′modN。
从关系式R×R′modN=1和R×R′-N×N′=1,得R′=7,N′=9。因此,M′(X)=44123×7mod 199=13=0Dh成立、用函数REDC=(X)求得上述解。
由X=44123=AC5Bh,R=100h,N=199=C7h和N′=9h,得(函数REDC(X))m=(XmodR)×N′modR=5Bh×9hmodR=333hmodR=33ht=(X+m×N)/R=(AC5Bh+33h×C7h)/R=D400h/R=D4h纯解为t-N=D4h-C7h=0Dh,但t×t×R′modH仍旧执行(下式1)。
1.对t=D4ht×t=D4h×D4h=AF90hm=(XmodR)×N′modR=90h×9hmodR=510h mod R=10h
t=(X+m×N)/R=(AF90h+10h×C7h)/R=BC00h/R=BCh2.对t=0Dht×t=0Dh×0Dh=00A90hm=(XmodR)×N′modR=A9h×9hmodR=5F1h mod R=F1ht=(X+m×N)/R=(00AF9h+10h×C7h)/R=BC00h/R=BCh上述式1和2的计算结果如下划线所示,具有相同的值。
以上结果时减少操作时间是重要的。即,N的最高有效位为第(n-1)时,可对所得t的第n位为1时进行t-N的运算,对第n位为0时进行后续的运算。
通常,对操作数长576位的模幂运算,R=2576。此时,若式(20)的计算结果地超过576位(576位的数字出现溢出),则t≥R。而且,此时t-N的计算由下列公式进行t-N=(576位低端的t值)+(N的反值)+1由于密码算法中N的值为奇数,通过对N求“反”。并将其最低有效位改为1,可得N的反值与1之和。
流程2所示执行Montgmery算法用的函数REDC仅求得该算法的解。即,如式(18)所示,采用一特殊数值以方便计算。为了求得采用modN乘以无R′的方程的解,需要借助某种运算将流程2所示Montgomery算法的解变回无R′的数值。
本发明中,利用下列特性消去Motgomery算法的特殊值R′。
M′(X)=X×R′modN中,当X为(X×R)时,
M′(X×R)=(X×R)R′modN=XmodN当X为(X×RmodN)时,M′(X×RmodN)=(X×RmodN)R′modN=XmodN换句话说,通过将Montgomery算法用于?×R或?×RmodN类型的方程中,消去算法的特殊值R′,变成?modN型方程。
因此,该特性用于流程1所示采用迭代平方积法的模幂运算中,则如流程3所示,求得模幂运算的解。确切地说,通过在流程3所示式(24)、(25)和(26)中各modN运算中进行流程2,方便地求得式(24)、(25)和(26)的解,因而不难获得采用流程3的模幂运算的解。
(流程3)beginA=1×RmodN=RmodN (23)fori=k-1 down to 0 dobeginA=A2×R′modN(24)if ei=1 then A=A×(M×RmodN)×R′modN(25)endA=A×R′modN (26)end流程1与流程3的最大区别在于存入寄存器A的式(23)初始值不是1,并考虑后面的Montgomery运算来存入RmodN(1×RmodN);式(25)采用M×RmodN的值,而不是式(17)的M;新执行式(26)。通过预先在寄存器A存入RmodN,消去式(24)、(25)和(26)中的R′。由图1所示流程图表达流程3的迭代平方积法。
执行运算之前,必须先求出图1预先需要的RmodN、M×RmodN和N′。RSA密码等用的模幂运算中,“N”的最高有效位bn-1和最低有效位b0为0。因此,这时R选为2n。于是,RmodN=R-N。通过对N求“反”,并将其最低有效位改为1,可方便地算出R-N。根据关系式R×R′modN=1,R×R′-N×N′=1,0<R和N′<R,可得下列关系式R′<N′,N′-R<R-N[关于M×RmodN]借助先前求得的R2modN,用Montgomery算法,由下列计算可得M×RmodN。
M×(R2modN)×R′modN=M×R2×R′modn=M×RmodN例如,设R=2512,则2512N=2×2512modN==2×(RmodN)modN=A用上述A作为初始值执行下列流程4时,可得R2modB的解。beginfori=1 to 9begin M(A,A)=A×A×R′modNendend流程4的计算过程如下i=1A=2513modN M(A,A)=2513×2513×2-512modN==2514modNi=2A=2514modN M(A,A)=2514×2514×2-512modN==2516modNi=3A=2516modN M(A,A)=2516×2516×2-512modN==2520modN
1=4A=2520modN M(A,A)=2520×2520×2-512modN==2528modNi=5A=2528modN M(A,A)=2528×2528×2-512modN==2544modNi=6A=2544modN M(A,A)=2544×2544×2-512modN==2576modNi=7A=2576modN M(A,A)=2576×2676×2-512modN==2640modNi=8A=2640modN M(A,A)=2640×2640×2-512modN==2769modNi=9A=2768modN M(A,A)=2768×2768×2-512modN==21024modN最后结果就是待求的R2moeN的解。
在此计算中求得的R′modN乘以M后,用相乘所得的积作为流程2的X,求得M×RmodN。
如上所述,流程2的计算包括用N和N′的乘法和用R的除法。因此,可仅用乘法和加法求得其解,不必实质上执行除法(模运算)。
如上所述,可制备图1流程图预先需要的RnodN、M×RmodNt和N′的制。
现执行图1的流程图。
首先,将预先求得的RmodN存入寄存器A(查为存储器,下同)。作为初始值。把预先求得的M×RmodN存入寄存器B。M×RmodN存入寄存器B的原因是确保后面的处理所用式(25)的M×RmodN。
其次,执行式(24)。即,执行Montgomery算法。通过执行上述流程2,求得式(24)。计算寄存器A所存值平方后得到的值作为式(19)的X,求m。如上所述,由采用乘法和R的模运算完成此计算。因为定义R=2n,采用R的模运算仅审查被除数中小于或等于2n的值即可。于是,用所得的m执行式(20)。计算寄存器A所存值平方后得到的值作为式(20)的X,求t。如上所述,由乘法、加法和采用R的除法完成此计算。因为定义R=2n,采用R的除法仅审查被除数中大于或等于2n的值即可。此计算的结果存入寄存器A。
然后,将寄存器a所存的值存入寄存A。
判断幂e所含的二进制位。若为1,则执行式(25)。即执行Montgomery算法A×B×R′modN。如上所述,通过执行流程2,求得式(25)。计算寄存器A所存值和寄存器B所存值的乘积作为式(19)的X,求m。用得到的m执行式(20)。计算寄存器A所存值和寄存器B所存值的乘积作为式(20)的X,求t。计算结果存入寄存器a。寄存器a所存计算结果存入寄存器A。
若幂e所含位为0,则不进行式(25)的计算,处理进入下一步骤。
判断是否幂e所有的位进行上述算术运算(执行式(24)和(25))。若否,则处理返回执行式(24)的步骤;若是,则执行式(26)。如上所述,由执行流程2求得式(26)。用存于寄存器A的值作为式(19)的X进行计算,求m。然后,用得到的m执行式(20)。用存于寄存器A的值作为式(20)的X,求t。
于是,完成上述一的的操作。
将上述模幂运算的解法归纳如下(1)模幂运算(MemodN)。
(2)运用迭代平方积法(A×AmodN和A×MmodN的迭代)。
(3)由于除法复杂,用montgomery法(M′(X)=X×Rmodn)取代A×AmodN和A×MmodN的计算。
(4)可用函数REDC(X)实现M′(X)=X×RmodN。(函数REDC可将modN的运算转换为modR的形式,避免除法复杂)。
现参照附图讲述实际实现本发明的硬件。
图4为说明一种实际硬件的示意框图。
图4中,数字401、403、405、407、409、411、413和415表示存储器或寄存器、各方框所描述的值存于寄存器401、403、405、407、409、411和413、寄存器405对应于图1所述寄存器A,寄存器415对应于寄存器a。选择器417用来按照存放幂e的1位左移寄存器409的指示,将寄存器405或寄存器407的输出传给运算单元419。选择器417对应于图1中“e移位和进位”的执行部分。即,幂e部分为1时,将M×Rmod N传送给运算单元,而e为0时,不传送。在图1所示流程图的初始阶段,求得A2时,将寄存器405的输出传送给运算单元。
运算单元419包含乘法器单元和除法器单元,并执行乘法和函数REDC(X)。
现参照图,详述实现本发明的硬件。
实施例1结构模幂运算MemodN的计算方法按照幂e位值的内容,根据规定的程序,用上述Montgomery算法反复进行A2×R′mod N……(24)和A×B×R′mod N……(25)两种运算(B相当于式(25)中“M×Rmod N”所处部分),并且为图1和流程3所述,最后执行式(26)如下A×1×R′mod N (26)因此,通过提供完成所述三种模运算的运算单元(后文称为协同处理机),可用此协同处理机求得模幂运算的解(可用任一软件或硬件控制方法实现运算的重复进程)。
本发明涉及具有三种模运算(或三种运算模式)的协同处理机。
图5为说明本发明第1实施例的模运算协同处理机的示意框图。该图中,连接各方框宽箭头线代表传送数据的总线。
本发明的模运算协同处理机包含定时/控制电路T/C,用于供给整个协同处理机的操作定时,并对运算单元的各电路提供对应于三种运算操作中的一种的控制信号。此外,还包含存放Montgomery法运算值的多个运算值存储器Smem、N′mem、Nmem、Mmem、A′mem、WImem、Whmem。本发明的模运算协同处理机又包含作乘法和加法用的高速乘法器/加法器Mul/Add、作加法用的高速加法器Add、存储乘数值用的乘数存储寄存器Xi-reg、存储被乘数用的被乘数存储寄存器Yi-reg,以及存储高速加法器Add所生成高端数位值寄存器RH。
高速加法器Add、乘数存储寄存器Xi-reg、被乘数存储寄存器Yi-reg和被加数存储寄存器Au-reg具有暂时存放运算储存储器读出值的功能,并与高速乘法器/加法器Mul/add的输入位长对应。
高速乘法器/加法器mul/Add是一种特定位长的乘法器/加法器,乘法运算时,向其提供寄存器Xi-reg和Yi-reg各自的输出值作为输入值,加法运幂时,向其提供寄存器Au-reg的输出值作为输入值。高速乘法器/加法器的输出馈入下一级的高速加法器Add作为加法输入值。
高速加法器Add是一种特定位长的加法器,对Mul/Add的输出值与寄存器RH的输出值求和。高速加法器Add的高端数位提供给寄存器RH或运算值存储器,低端数位提供给运算值存储器。
操作现讲述图5所示电路的操作。
(式(24)A2×R′mod N的实现方法)A的值存于运算值存储器A′mem和WImem双方,N′的值存于N′mem,N的值存于Nmem。因为N和N′的值为加密/解密钥,其值由密码系统运营者对数据发送者/接收者决定。R的值根据N的值决定。A的值由执行上述Rmod N决定。
将模式1信号提供给定时/控制电路T/C,从而执行式(24)A2×R′mod N如下。
首先,进行A×A的计算。
从存储器A′mem将对应于Mul/Add输入位长的值取入寄存器Xi-reg。同样,将对应于Mul/Add输入位长的值从存储器WImen取入寄存器Yi-reg。
如图6所示,对于乘法运算,在运算值的位长(例如16位)超过Mul/Add的乘法输入处理位长(例如4位)时,重复进行一单元的乘法和加法运算,其次数(4×4=16次)对应于运算值的位长。
图7所示硬件映像详细表达上述操作。
此运算操作意味着存储器A′men中地址A′3、A′2、A′1和A′0所存的值后得到的值存入存储器Whmem和WIeme的地址Wh3、Wh2、Wh1、Wh0、WI3、WI2、WI1、和WI0上。
(乘加单元1)将存于存储器WImen中地址WI0处的值(被乘数)取入寄存器Yi-reg,将存储器A′men中地址A′0处的值(乘数)取入寄存器Xi-reg。然后,Mul/Add使乘数和被乘数相乘,并将乘积提供给高速加法器Add。此乘加单元1中不需要数字定位,所以假设从寄存器Ai-reg提供给Mul/Add的被加数为0(使寄存器Ai-reg的值为0,或调整Ai-reg所存的储,使之不提供给Mul/Add)。此外,将高电平信号提供给高速加法器Add的通过端,使寄存器RH的内容不被加。在存储器A′mem的值和存储器WImem的值相乘时,因为乘加单元1运算结果的低端数位为此乘法最后运算结果的最低有效位,所以该低端数位存入存储器WImem的最低有效址WI0,作为此乘法的最后运算结果。(图7中,此结果存于加底线的地址处。)乘加单元1的运算结果的高端数位存入寄存器RH,以及下一乘加单元作数字定位。
(乘加单元2)寄存器Yi-reg保持已存值(被乘数),寄存器Xi-reg取入存于存储器A′mem中地址A′1处的值(乘数)。然后,Mul/Add将乘数乘以被乘数,并提供该乘积给高速加法器Add。此乘加单元2中,从寄存器Ai-reg提供给Mul/Add的被加数为0(使Ai-reg的值为0,或调整Ai-reg所存值,使之不提供给Mul/Add)。将低电平信号提供给高速加法器Add的通过端,使寄存器RH的内容(乘加单元1运算结果的高端数位)加到Mul/Add的输出上。乘加单元2运算结果的低端数位存入存储点Whmen的地址Wh0处,而其高端数位存入寄存器RH,以便在下一乘加单元作数字定位。
(乘加单元3)寄存器Yi-reg保持已存值(被乘数),寄存器Xi-reg取入存储器A′mem中地址A′2处所存值(乘数)。然后,Mul/Add将乘数乘以被乘数,并提供该乘积给高速加法器Add。此乘加单元3中,设从寄存器Ai-reg提供给Mul/Add的被加数为0(使Ai-reg)的值为0,或调整A-i-reg所存值,使之不提供给Mul/Add)。将低电平信号提供给高速加法器Add的通过端,使寄存器RH的内容(乘加单元1运算结果的高端数位)与Mul/Add的输出相加。乘加单元3运算结果的低端数位存入存储器Whmem的地址Wh1处,而其高端数位存入寄存器RH,以便下一乘加单元作数字定位。
(乘法单元4)寄存器Yi-reg保持已存值(被乘数),寄存器Xi-reg取入存储器A’men中地址A’3处所存值(乘数)。然后,Mul/ADD将乘数乘以被乘数,并提供该乘积给定高速加法器Add。此乘加单元4中,设从寄存器Ai-reg提供给Mul/Add的被加数为0(使Ai-reg的值为0,或调整Ai-reg所存值,使之不提供给Mal/Add)。将低电平信号提供给高速加法器Add的通过端,使寄存器RH的内容(乘加单元1运算结果的高端数位)与Mul/Add的输出相加。乘加单元4运算结果的低端数位存入存储器Whmem的地址Wh1处,而其高端数位存入寄存器RH,以便下一乘加单元作数字定位。
(乘法单元5)寄存器Yi-reg取入存储器WI men中地址WI1处所存值(被乘数),寄存器Xi-reg取入存储器A’men中地址A’0处所存值(乘数),寄存器Ar-reg取入存储器Whmem中地址WH0处的值(被加数)。然后,Mul/ADD将乘数乘以被乘数,并提供该乘积给高速加法器Add。此乘加单元5中,将低电平信号提供给高速加法器Add的通过端,使寄存器RH的内容(乘加单元4运算结果的高端数位)不被加。乘加单元5运算结果的低端数位存入存储器WImem的地址WI1处,而其高端数位存入寄存器RH,以便下一乘加单元作数字定位。
(乘法单元6)寄存器Yi-reg保持已存值(被乘数),寄存器Xi-reg取入存储器A’men中地址A’1处所存值(乘数),寄存器Ai-reg取入存储器Whmem中Wh1处存值(被加数)。然后,Mnl/ADD将乘数乘以被乘数,并提供该乘积给定高速加法器Add。此乘加单元6中,将低电平信号提供给高速加法器Add的通过端,使寄存器RH的内容(乘加单元5运算结果的高端数位)与Mul/Add的输出相加。乘加单元6运算结果的低端数位存入存储器Whmem的地址Wh0处,而其高端数位存入寄存器RH,以便下一乘加单元作数字定位。
(乘法单元7)寄存器Yi-reg保持已存值(被乘数),寄存器Xi-reg取入存储器A’men中地址A’1处所存值(乘数),寄存器Ai-reg取入存储器Whmem中Wh2处所存值(被加数)。然后,Mul/ADD将乘数乘以被乘数,并提供该乘积给定高速加法器Add。此乘加单元7中,将低电平信号提供给高速加法器Add的通过端,使寄存器RH的内容(乘加单元6运算结果的高端数位)与Mul/Add的输出相加。乘加单元7运算结果的低端数位存入存储器Whmem的地址Wh1处,而其高端数位存入寄存器RH,以便下一乘加单元作数字定位。
(乘法单元8)寄存器Yi-reg保持已存值(被乘数),寄存器Xi-reg取入存储器A’men中地址A’3处所存值(乘数),寄存器Ai-reg取入存储器Whmem中Wh3所处存值(被加数)。然后,Mul/ADD将乘数乘以被乘数,并提供该乘积给定高速加法器Add。此乘加单元8中,将低电平信号提供给ym速加法器Add的通过端,使寄存器RH的内容(乘加单元1运算结果的高端数位)与Mul/Add的输出相加。乘加单元8运算结果的低端数位存入存储器Whmem的地址Wh1处,而其高端数位存入寄存器RH,以便下一乘加单元作数字定位。
如图7所示,按照上述单元执行乘加9至16。于是,存储器A’mem所存储与存储器WImem所存值相乘所得的值(即A×A)以Whmem-WImem的形式存入(“-”不是减号)。
例如,在计算8位×8位时,64h×F5h的计算结果为6572h的情况下,其高端数位65h存于存储器Whmem,低端数位72h存于存储器WImem。
然后,用函数REDC以Montgomery法进行模运算。如上所述,Montgomery法中,若进行操作数位长为n位的模幂运算,则R=2n。存在具有这种关系且位长为n的R’和N’的值。由于A×A的值以Whmem-WImem的形式存储,m的计算如下m=(XmodR)×N’modR=(Whmem-WImem)modR×N’modR式中,(XmodR)为X除R后的余数,所以审查小于R的值,从而上式为
m=(WImem)×(N’mem)modR上式表示(WImem)×(N’mem)除以R后的余数,因而作(WImem)×(N’mem)后的结果低端n位的值等于m。
较具体地说,在按照A×A的计算进行(WImem)×(N’mem)的计算,并将其结果以A’mem×Mmem的形式存入A’mem和Mmem两个存储器时,存储器Mmem所存的值为m。
此外,t的计算如下t=(X+m×N)/R=[(Whmem-WImem)+(Mmen)×(Nmem)]/R为了求得上述的解,按照A×A进行(Mmem)×(Nmem)的计算,并将其结果以A’mem-Mmem的形式存入A’men和Mmem两个存储器。随后进行以下计算。
Mmem’1+WImen(低端数位加法) (27)A’mem’1+Whmen+式(27)溢出值(高端数位加法) (28)此时,式(28)要求出t。
再看,由于等于或小于R的值必然为0,而且式(27)的计算结果为0,所以不必存入存储器。在式(27)的计算中,虽然考虑出现数字溢出的情况,但这时,在式(28)的运算中,将1提供给图5所示Mul/Add的+1端。显然,借助本发明的协同处理机,能方便地进行计算。
式(28)所得值存入A’mem和Mmem二存储器。出现数字溢出时,在进位标起CF写入1。
CF为1时,表明t>N,因而需要计算t-N。由下列计算求得t-N。+WImem (29)“反Nmem”意为对Nmem所存值求“反”的结果。
在密码算法器,Nmem所存N的值为奇数,通过计算Nmem取补数1,并将最低有效位改为1,求得式(29)中的反Nmem+1)。借助提供1给图5所示寄存器Xi-reg的Inv端(计算Xi-reg所存值取补数1),实现上述运算。值A存于存储器WImem,值B存于存储器Smem,Montgmory法的值N’存于存储器N’mem,值N存于存储器Nmem。
将模式2信号提供给定时/控制电路T/C,执行式(25)A×B×R’modN如下。
首先,进行A×B的计算。
将与Mul/Add输入位长对应的值从Smem取入寄存器Xi-reg。同样,将与Mul/Add输入位长对应的值从WImem取入寄存器Yi-reg。
除了提供给Xi-reg的值取自存储器Smem外,A×B的计算与A×A的相同。
然后,用函数REDC,以Montgomery法进行模运算。其计算方法与A×A时相同,所得结果存于A’mem和WImem的存储器。
进行模幂运算时,反复计算式(24)和(25)。然而,通过采用上述计算实现方法,式(24)和(25)的计算结果存于A’mem和WImem二存储器。因此,各式计算开始时,运算值不需要初始化,可顺畅地反复计算。A值存于存储器WImem,Montgomery法的N’值存于存储器N’mem,N值存于存储器Nmem。
将模式3信号提供给定时/控制电路T/C,执行式(26)A×R’modN如下。
此次的式(26)中,不必质行A×?。因此,仅完成采用Montgomery法的模运算。
模运算中m的计算方法实质上与A×A时相同。在计算结果以A’mem-WImem的形式存入存入A’mem和WImem二存储器时,WImem的值就是m的值。
进而,计算t如下。
t=(X+m×N)/R=[(WImem)×(Nmem)所得R以上的值]+1 (30)式(26)的计算中,上述X为A,无R以上的值(认为是0)。因此,不必如式(24)实现方法所述完成R以上的值(Whmem)的加法运算。又因(X+m×N)必然为R的倍数,不必加上式(30)右边所示X的值,而代之以用“[(WImem)×(Nmem)所得R以上的值1+1”求得其解。这是因为密码算法采用模运算时,本计算中A的值不为0。
因此,式(30)中,先计算(WImen)×(Nmen),其结果可用A’men-WImen的形式存入A’men和WImen二存储器。该结果在A’mem中得到的值为所求的解。(本运算操作的执行,使模幂运算的全部终止,因而可省略WImen的存储)。在将此时所得最终结果存入A’men中最低有效位的定时点,将1提供给图5所示+1端,执行式(30)中的加1运算。
如上所述,按照第一实施例,配备具有规定位长的乘法器/加法器(乘法器和加法器可分开配备)作为运算单元的核心,而且由定时/控制信号发生电路对布置在其外围的电路提供控制信号,从而能用Montgomery法或模幂运算实现位长不短的模运算。根据这样的系统,能用具有规定位长的运算器构成其核心,可减小电路规,适合LSI。
(实施例2)(结构)图8为本发明实施例的模运算协同处理机的示意框图。
除实施例1的组成部分(图5)外,实施例2还包含一种检测运算值为0的状态,并控制下面的运算操序列的电路。
具体地说,图8的“ZeroC”(“0控”)部分代表此控制电路。该电路检测0运算值,以控制后续运算操作序列,具有馈入高速加法器Add输出信号的输入端,还有一输出端。由该输出端产生信号,对T/C部分生成的定时/控制信号和协同处理机中各电路的工作信号施加预定的控制。
(操作)实施例1在式(24)和(25)实现方法中所述的函数REDC的计算中,先前乘法运算结果所得的X值可分为以下2种情况(a)是R的倍数此时先前计算所得值(WImen)为0。
(b)不是R的倍数此时先前计算所得值(WImen)不为0。
此实施例中,控制电路ZeroC检测R以下的X值(A×B的值)是否为0,并按该检测结果执行后续运算操作序列如下。
在(a)的情况下,显然,XmodR=0,故m=0。因而,此时不必计算m。
t的计算如下t=(X+m×N)/R=X/R=Whmem (31)这表示A×A和A×B计算结果的高端数位本身就是t的值。因而,这种情况下的硬件处理中,将存储Whmen所存的值原样存入A’men和Whmen二存储器中,为下一重复运算操作做准备。即,R以上的X值(由先前的计算求得)为0,则不必计算t。这意味着计算t时,不必计算全部位长。
在(b)的情况下,用和实施例1相同的方式进行求m的计算,其结果以A’men-Whmen的形式存入A’men和WImen二存储器。将WImen所存的值取为m的值。
t的计算如下。
t=(X+m+N)/R=WHmen+[(WImem)×(Nmem)所得R以上的值]+1(32)通过计算(WImen)×(Nmen)求得式(32)的解,所得结果以A’men-WImen的形式存入A’men和WImen二存储器后,计算下式
(A’men)×1+(Whmen)+1 (33)其原因是X+m×N的值必然为R的倍数,不必特意计算R以下的值。式(33)中,在最低有效位的计算定时点,提供1给图5所示+1端,以执行式(33)的加1运算。
式(33)所得计算结果存入A’men和WImen二存储器,当出现数字溢出时,进行标志CF写入1。后面的处理与实施例1相同。
如上所述,根据实施例2,增添检测运算值为0的状态,并控制后续运算操作序列的控制电路(能用与乘法器/加法器位长相当的电路规模构成,属小规模电路),可谋求省去实施例1所述协同处理机中的存储器Mmen,免掉一些运算操作。因此,可获得硬件减少且操作时间缩短的效果。
(实施例3)(结果)图9为本发明实施例3的模运算协同处理机示意框图。
除实施例1(图5)或实施例2(图8)的组成部分外,实施例3还包含选择操作数位长,以变换定时/控制信号的位长选择控制电路。
具体地说,图9的LenCon部分为该电路。此电路的工作是按照输入信号Sel-len,对T/C部分产生的操作定时信号和提供给协同处理机中各的控制信号进行控制。
(操作)协同处理机的操作中,按照操作数位长的变化,R值、取决于R值的R’值、N’值的位长,以及规定位长乘、加运算的重复过程(次数)都发生变化。
例如,当Mul/Add为16位,并进行操作数长512位的A×A运算时,Mul/Add的乘、加重复次数为(512/16)×(512/16)=1024次。
另外,对于长768位的操作数,则为(768/16)×(768/16)=2304次。
这些计算的序列也各不相同。此外,如上文所述,R值按照操作数位长唯一地确定,因而R’和N’值的位长也相应变化。
位长选择控制电路LenCon按照所选位长,控制操作定时信号的产生和T/C部分所生成控制信号的输出。
该电路一般可用PLA或逻辑电路之类较小规模电路配置来实现。
如上所述,实施例3的协同处理机中,增添位长选择控制电路LenCon,能执行不同位长的模运算或模幂运算。
(实施例4)
(结构)以上实施例所述协同处理机运算操作的基础是规定位长的乘法和加法。实现模运算或模幂运算的基本乘、加重复方法为以上实施例所述。
然而,以上实施例协同处理机仅进行模运算式操作,尽管运算操作的基础为乘和加,其应用仍限于模运算。
因此,增加各种运算操作的基础的长位长乘、加模式,以改善协同处理机的通用性。
图10为本发明实施例4的模运算协同处理机示意框图。
实施例4中,对上述各实施例增添乘、加模式。为了执行此模式,将模式信号4提供给定时/控制电路T/C。
(操作)现讲述下面所示乘、加运算执行例。
A×B+C (34)首先,式(34)中,将值A、B和C存入存储器WImen、Smen和Whmen。将模式信号4提供给定时/控制电路T/C,使运算操作类型为执行乘、加的模式。
图11所示硬件映像详细表达上述操作。
此运算的含意是存于地址Wh3、Wh2、Wh1、Wh0的值加上存于地址S3、S2、S1和S0数值乘以存于存储器WImen中地址WI3、WI2、WI1和WI0处的值所得乘积后得到的值存入存储器Whmem和WImen的地址Wh3、Wh2、Wh1、Wh0、WI3、WI2、WI1和WI0。
(乘法单元1)首先,将存于存储器WImen中址址WI0处数值(被乘数)提供给寄存器Yi-reg,将存储器Smen中地址S0处所存值(乘数)提供给寄存器Xi-reg,将存储器Whmen中地址Wh0处所存值(被加数)提供给存储器Ai-reg。然后,Mu1/Add将乘数乘以被乘数,并将所得乘积与被加数相加,所得结果提供给高速加法器Add。此乘加单元1中将高电平信号提供给高速加法器Add的通过端,使寄存器RH的内容不被加。
由于此乘加单元运算结果的低端数位为本乘加运算最终运算结果的最低有效位,所以乘加单元运算结果的低端数位存入存储器WImen中地址WI0处,处为此乘法的最终运算结果。(图11中,此最终运算结果存于加底线的地址处。)乘加单元1运算结果的高端数位存入RH,以以便用于下一乘加单元。
(乘法单元2)寄存器Yi-reg保持已存值(被乘数),寄存器Xi-reg取入存储器Smen中地址S1处所存值(乘数),寄存器Ai-reg取入存储器Whmem中地址Wh1所存值(被加数)。然后,Mul/Add将乘数乘以被乘数,并将该乘积与被加数相加后提供给高速加法器Add。此乘加单元2中,提供低电平信号给高速加法器Add的通过端,使寄存器RH的内容(乘加单元1运算结果的高端数位)与Mul/Add的输出相加。乘加单元2运算结果的低端数位存入存储器Whmem的最低有效地址Wh0处,而其高端数位存入寄存器RH,以便下一乘加单元作数字定位。
(乘法单元3)寄存器Yi-reg保持已存值(被乘数),寄存器Xi-reg取入存储器Smen中地址S2处所存值(乘数),寄存器Ai-reg取入存储器Whmem中地址Wh2所存值(被加数)。然后,Mul/Add将乘数乘以被乘数,并将该乘积与被加数相加后提供给高速加法器Add。此乘加单元3中,提供低电平信号给高速加法器Add的通过端,使寄存器RH的内容(乘加单元2运算结果的高端数位)与Mul/Add的输出相加。乘加单元3运算结果的低端数位存入存储器Whmem的最低有效地址Wh1处,而其高端数位存入寄存器RH,以便下一乘加单元作数字定位。
(乘法单元4)寄存器Yi-reg保持已存值(被乘数),寄存器Xi-reg取入存储器Smen中地址S3处所存值(乘数),寄存器Ai-reg取入存储器Whmem中地址Wh3所存值(被加数)。然后,Mul/Add将乘数乘以被乘数,并将该乘积与被加数相加后提供给高速加法器Add。此乘加单元4中,提供低电平信号给高速加法器Add的通过端,使寄存器RH的内容(乘加单元3运算结果的高端数位)与Mul/Add的输出相加。乘加单元4运算结果的低端数位存入存储器Whmem的最低有效地址Wh2处,而其高端数位存入Whmen的Wh3地址,以便下一乘加单元作数字定位。
(乘法单元5)向寄存器Yi-reg提供存储器WImem中地址WI1所存值(被乘数),寄存器Xi-reg取入存储器Smen中地址S0处所存值(乘数),寄存器Ai-reg取入存储器Whmem中地址Wh0所存值(被加数)。然后,Mul/Add将乘数乘以被乘数,并将该乘积与被加数相加后提供给高速加法器Add。此乘加单元5中,提供高电平信号给高速加法器Add的通过端,使寄存器RH的内容(乘加单元4运算结果的高端数位)不被加。乘加单元5运算结果的最低有效位存入存储器WImem的I1处,而其最高有效位存入寄存器RH,以便下一乘加单元作数字定位。
(乘法单元6)寄存器Yi-reg保持已存值(被乘数),寄存器Xi-reg取入存储器Smen中地址S1处所存值(乘数),寄存器Ai-reg取入存储器Whmem中地址Wh1所存值(被加数)。然后,Mul/Add将乘数乘以被乘数,并将该乘积与被加数相加后提供给高速加法器Add。此乘加单元6中,提供低电平信给高速加法器Add的通过端,使寄存器RH的内容(乘加单元5运算结果的高端数位)与Mul/Add的输出相加。乘加单元6运算结果的低端数位存入存储器Whmem的最低有效地址Wh0处,而其高端数位存入寄存器RH,以便下一乘加单元作数字定位。
(乘法单元7)寄存器Yi-reg保持已存值(被乘数),寄存器Xi-reg取入存储器Smen中地址S2处所存值(乘数),寄存器Ai-reg取入存储器Whmem中地址Wh2所存值(被加数)。然后,Mul/Add将乘数乘以被乘数,并将该乘积与被加数相加后提供给高速加法器Add。此乘加单元7中,提供低电平信号给高速加法器Add的通过端,使寄存器RH的内容(乘加单元6运算结果的高端数位)与Mul/Add的输出相加。乘加单元7运算结果的低端数位存入存储器Whmem的最低有效地址Wh1处,而其共高端数位存入寄存器RH,以便下一乘加单元作数字定位。
(乘加单元8)寄存器Yi-reg保持已存值(被乘数),Xi-reg了取入存储器Smen中地址S3处所存值(乘数),寄存器Ai-reg取入存储器Whmen中地址Wh3所存值(被加数)。然后,Mul/Add将乘数乘以被乘数,并将该乘积与被加数相后提供给高速加法器Add。此乘加单元8中,提供低电平信号给高速加法器Add的通过端,使寄存器RH的内容(乘加单元7运算结果的高端数位)与Mul/Add的输出相加。乘加单元8运算结果的低端数位存入存储器Whmem的最低有效地址Wh2处,而其高端数位存入Whmen的Wh3地址处,以便下一乘加单元作数字定位。
按照上述乘加单元,执行乘加单元9~16,如图11所示。于是,将最终运算结果用Whmen-WImen(“-”不是减号)的形式加于存储。
图12表示上述硬件执行8591×4673+2069=40147872时数乘加单元。图12的操作和图11相同,省略其说明。
如上所述,根据实施例4,可实现各种运算操作的基础的长位长乘加模式,可极大地改善协同处理机的通用性。
(N’的计算)此外,下面将对乘加运算讲述N’的计算。如上文所述,各值如下(1)R×R’-N×N’=1(R×RmodN=1)(2)R定义为2的幂且略大于模N(3)N为奇数(4)0<N’<R
于是,R×R’=XXX…XXX000…000N×N’=YYY…YYY111…111(35)(“0”和“1”的数为n)XXX…XXX=YYY-YYY+1=R’(36)为了求得以N为基础的N’,必须使上述(35)所有N×N’的低端数位都等于1。
图21为计算N’的流程图。该图中符号n表示N的位长,i表示位置指针,A为工作寄存器,B为N’结果寄存器,a为2iN存储寄存器,Ai为i位置的A,Bi为i位置数B,其中,工作寄存器A和2iN存储寄存器a数位长为2n,B的位长为n。
首先,将代表N的位长的数据设为n,N的值置入工作寄存器A,同时位置指计i和N’结果寄存器B都清零。其次,2iN存储寄存器设为2iN(初始值为20N)。此外,检查Ai位置的值是否为1。若是,则位置指针i递增。否若,则Bi中的i置1,并将工作寄存器A的新值与2iN存储寄存器的值(初始值为20N)相加后,置入工作寄存器A,同时,位置指针i也递增。再者,检查位置指针i是否等于N的位长加1。若是,则继续相同的过程,并重复进行到等于N的位长加1。若否,则再计算N’。用这种方法,使N’结果寄存器B的最终值为N’。
下面讲述N’和R’的计算实例。图22示出该例,N’和R’包含较少的数字。
首先,对于给定的N(=11010111),重复N的左移位,直到其LSB(最低有效位)遇到第一“0”(23)出现在20N中,即作3次左移位,得23×N。其次,20N与23N相加,给出图中所示第1个和1111000111。与求得23×N的方法相同,此和也反复作N的左移位,直到其LSB遇到第1“0”位(24)出现在该器件中,即作4次左移位,得24N。接着,该和数与24N相加,形成第2和(=1010011111111)。最后,将20N、23N和24N相加,即2i的总和,得N’(=25)。另,R(=100000000)的位数为9。处在等于或高于第9位的数为R’-1,因而得R’(=21)。
(实施例5)(结构)上述实施例中的协同处理机,在由Mul/ADD和高速加法器Add输入位长决定的每一乘加单元,都要访问存储器,因而存在缩短操作时间的改善余f。其原因在于整个电路(包括存储器)的操作速度受存储器访问时间限制。
本实施例中,减少相对于乘加单元运算次数的存储访问次数,从而缩短最终操作时间。
图13为本发明实施例5的模运算协同处理机示意框图。
实施例5中,与上述实施例相比,存放被乘数的寄存器Yi-reg增多,并配有选择这些寄存器输出的电路。而且,相应于这些寄存器的数目,提供存放高速加法器Add输出值高、低端数位的多个寄存器,并配有适当选择这些输出值的电路。
具体地说,寄存器Yi-reg
、Yi-reg[1]、Yi-reg[2]和Yi-reg[3]为位长与Mul/Add输入位长对应的被乘数寄存器,其各输出端连接被乘数选择电路Yi-sel。该选择电路选择上述4个寄存器所存值中的一个提供给后续的Mul/Add。
寄存器RA用于暂时存放高速加法器Add输出的高端数位R-高,其输出连接选择电路SelA、SelB用ENSel。Add输出的低端数位R-低接至选择电路SelB和使能缓存器En。
寄存器Ai-reg的输出接至选择电路SelA。SelA选择寄存器Ai-reg和RA的内容,并连接高速加法器Add,为其提供所选择的信号。
选择电路SelB选择R-低的内容和寄存器RA,并连接RB,为其提供所选结果。
RB为暂时存放选择电路SelB的输出的寄存器,其输出接至RC和Ensel。
RC为暂时存放寄存器RB的输出的寄存器,其输出连接RD和Ensel。
RD为暂时存放寄存器RC的输出的寄存器,其输出连接Ensel和Mul/Add。
Ensel是用于选择RA、RB、RC和和RD的内容的选择电路,所选结果提供给运算值存储器。
其他电路与上述实施例的相同,省略其说明。
(操作)现参照图14进述基本运算(A3A2A1A0)×B0+C0的计算方法。讲述中使用下列硬件映像(WI3,WI2,WI1,WI0)×S0=(RA,RB,RC,RD,WI0)加底线的地址意为该处存放最终运算结果。
(初始化)首先,如图14所示,进行初始化。
(步骤1)在寄存器Xi-reg的值、Yi-sel所选寄存器Yi-reg
的值、寄存器RD的值和电路SelA所选寄存器Ai-reg的值之间进行运行操作。在此运算临结束前,将运算结果的高端和低端数位R-高和R-低分别存入RA和存储器Whmen。与此同时,寄存器RC和和RB的值分别存入寄存器RD和RC,寄存器RA的值存入电路SelB所选的RB。
(步骤2)在寄存器Xi-reg的值、Yi-reg所选寄存器Yi-reg[1]的值、寄存器RD的值和Sel所选寄存器RA的值之间进行运算操作。在此操作临近结束之前,运算结果的高、低端数位R-高和R-低分别存入寄存器RA和SelB所选的RB。与此同时,寄存器RC和RB的值分别存入寄存器RD和RC。
(步骤3)在寄存器Xi-reg的值、Yi-sel所选寄存器Yi-reg[2]的值、寄存器RD的值和SelA所选寄存器RA的值之间进行运算操作。在此操作临近结束之前,运算结果的高、低端数位R-高和R-低分别存入寄存器RA和和Sel所选的RB。与此同时,寄存器RC和和RB的值分别存入寄存器RD和RC。
(步骤4)在寄存器Xi-reg的值、Yi-Sel所选寄存器Yi-reg[3]的值、寄存器RD的值和SelA所选寄存器RA的值之间进行运算操作。在此操作临近结束之前运算结果的高、低端数位R-高和R-低分别存入RA和和SelB所选的RB。与此同时,寄存器RC和RB数值分别存入寄存器RD和RC。
上述从步骤1到步骤4的处理中,只在步骤1进行一次访问运算值存储器。因此,从步骤2到步骤4的剩余时间段中,可改变运算值存储器地址和进行预存,以获得访问存储器的时间。在步骤2到步骤4的期间,所进行的操作基本相同,因而该运算操作并不复杂。
作为一另一个运算例,图15和16示出下式的计算方法。
(A3,A2,A1,A0)×(B3,B2,B1,B0)+(C3,C2,C1,C0)该计算中采用下列硬件映像(WI3,WI2,WI1,WI0)×(S3,S2,S1,S0)+(Wh3,Wh2,Wh1,WH0)=(RA,RB,RC,RD,WI3,WI2,WI1,WI0)作为实际计算例,图16示出8591×4673+2069=40147812的时间1到时间4的运算过程。
画底线的值为最终运算结果。
由图16可知,最终结果的高端数位是时间4中步骤4所得存于RA、RB、RC和RD的值,其低端数位是步骤1所得存于存储器WImen的值。
如上所述,根据实施例5,无需改变乘法器/加法器等运算处理部件的规模,可实现整个模运算协同处理机用小规模电路构成。而且操作时间短。
(实施例6)(结构)
图17为本发明实施例6的示意框图。此实施例包含设置在上述协同处理机和外部装置之间的运算值存储器接口电路和运算控制电路。
(运算值存储器接口电路MemIF)MemIF用于在MCU与协同处理机的运算值存储器之间收、发数据。
运算值存储器在运算操作前从协同处理机外部存入运算数据,在运算操作完成后将运算结果送到协同处理机外部。同时,该存储器反复动态访问运算单元,与协同处理机外部无关。即,存储器有两种通信规约。接MemIF构成实现该规约的电路。
将MCU产生的地址信号ads和存储器控制信号Memcon输入到接口MemIF,并在MemIF为协同处机各运算值存储器和制备地址信号Comend和存储器控制信号Comcon,提供给协同处理机。MDbus为MCU的数据总线,CoDbus为协同处理机外部接口的数据总线。
运算值存储位于MCU内某一个存储空间时,将一种adr信号和Memcon信号输入到MemIF,并提供DMbus。在运算存储器位于MCU内多个存储空间时,需多种输入信号。MDbus和CODbus通常直接接入,但例如在协同处理机内处理的运算值存储器的数据长度和MCU的数据长度不同时,通过MemIF进行数据变换。
协同处理机执行运算时,运算值存储器动态工作,以执行运算,因而控制成禁止MCU来访问。这样,就实现协同处理机的运算值存储器与外部装置间的第一种通信规约。
执行运算时,协同处理机中定时/控制电路T/C产生的存储器控制信号输入到MemIF。收到该信号后,MemIF就对协同处理机提供Comemad信号和Comcon信号,处理使运算值存储器对运算单元收、发数据。这样,就实现协同机内执行运算时,运算单元与运算值存储间的第二种通信规约。
(运算控制电路CopCon)CopCon用来接收MCU产生的协同处理机控制信号Excon,并对协同处理机提供运算控制信号Sevex(上述实施例中的运算模式信号,位长选择信号等)。由提供运算模式信号和协同处理的钟信号COPCLK,起动协同处理机的运算操作。
为了从MCU端证实地运算操作完成,CopCon接收协同处理机中T/C部分产生的运算完成定时信号Coend,并把锁存电路等处理的运算完成监视信号Endmoni提供给MCU。
运算控制电路CopCon一般可做成分布于本机存储区,作为MCU的外围电路,用MCU的命令直接访问,因而能以较简单的电路来实现。
图17中,MCUCLK为MCU的钟信号,COPCLK为协同处理机的钟信号。
如上所述,根据实施例6,能用较小规模电路实现外部接口(例如MCU)与协同处理机之间的接口,因而能用LSI实现带外部装置的模运算协同处理机或者内含模运算协同处理机的MCU。
(实施例7)实施例7从协同处理机外部证实运算完成的措施仅审查运算完成监视信号Endmoni。然而,此方法中协同处理机处理长位长模运算操作的工作量增多,因而,在例如外部装置为MCU的情况下,经常在MCV端监视Endmoni信号的时间较长,MCU操作性能变差。
为了解决这个问题,本实施例设置专用运算完成时间中断控制电路。
图18为本发明实施例7的示意框图。
图18中,IntCon为运算完成中断控制电路,由预先从MCU输出的中断设定信号Intset进行中断准备。当协同处理机输入运算完成定时信号Coend时,对CopCon设定的每种运算模式,在MCU和IntCon之间收、发中断处理请求信号、确认信号和中断矢量控制信号,作为Intsig。最后,消除中断准备,停止中断处理。
可对运算完成固定设置一个中断因素,但因为协同处理机有多种运算模式,对每种运算模式进行中断,可使外部装置建立模幂运算的方法简单,因而最好设置多个中断因素。
和运算控制电路CopCon一样,Intcon可作成分布于本机存储区作为MCU的外围电路,并有MCU的命令直接访问,因而能用比较简单的电路来实现。
如上所述,按照实施例7,能用较小规模电路作成带外部接口模运算协同处理机或内含具有完成中断功能的模运算协同处理机的MCU,因而能用LSI实现。
(实施例8)本协同处理机中的模运算从运算开始到完毕动态的执行,为了抑制与外部装置连接时整个系统执行运算中的电流消耗,最好具有使执行运算时外部装置暂时停止(下文称为休眠)的状态。
本实施例含有外部装置休眠控制电路和用来实现休眠操作的时钟控制电路。
图19示意实施例8,除实施例7的设备外,还有外部装置休眠控制电路和时钟控制电路。
图19中Slpcon为MCU休眠控制电路,从MCU接收休眠设置信号Slpset,并产生休眠信号Slp提供给时钟控制电路CLKCon。
CLKCon通常响应外部输出的系统时钟CLK信号,提供钟信号MCUCLK给MCU,但一接收到Slp信号,就停止提供MCUCLK给MCU。
在运算操作完成时,将运算完成定时信号Coend提供给SlpCon,以停止供应Slp信号给CLKCon,重新恢复从CLKCon提供MCUCLK给MCU。
通常由输入一信号给外部装置的某一端子来取消休眠功能。因此,在此情况下,休眠控制电路可做成具有这种功能。
和运算控制电路CopCon一样,SlpCon可做成分布于本机存储区作为MCU的外围电路,并由MCU的命令直接访问,因而能用比较简单的电路来实现。
如上所述,根据实施例8,可用较小规模电路做成带外部接口的模运算协同处理机或内含具有外部装置休眠功能的模运算协同处理机的MCU,因而能用LSI来实现。
(实施例9)本协同处理机可用于进行大规模且复杂的模运算的密码算法来探究处理时间高速性的场合。因此,即便提供给系统输入时钟为任何频率,也要求操作时间短。
本实施例含有倍频时钟控制电路,以提高操作速度。
图20为实施例9的示意框图,其中实施例8的时钟控制电路改为做成倍频时钟控制电路。
图20中,CLKCon2为包含倍频控制电路的时钟控制电路,对该电路提供来自MCU的信号Ckwset作为倍频设定信号,以启动倍频功能。
响应外部提供的时钟信号CLK,使倍频功能起作用,其电路做成产生备用倍频时钟信号作为MCU的时钟MCUCLK,协同处理机的时钟COPCLK或二者。因此,用户可考虑电流消耗作折衷,在系统中作各种选择。
和倍频功能设定一样,可通过输入信号Ckwset作为消除信号取消该功能。
和运算控制电路一样,倍频时钟电路可做成分布于本机存储区作为MCU的外围电路,并用MCU的命令直接访问,因而能用比较简单的电路来实现。
如上所述,根据实施例9,可用较小规模电路做成带有外部接口的模运算处理机或内含系统中具有倍频功能的模运算协同处理机的MCU,因而能用SLI来实现。
第1至第5实施例中所示高速乘法器/加法器Mul/Add可由分立的加法器和乘法器构成。
第1至第5实施例中所示的Mul/Add和高速加法器Add可集成为一体。
第1至第5实施例中所示的Mul/Add和高速加法器可用市售集成电路构成。
第6至第9实施例所示的协同处理机根据第1至第5实施例所示协同处理机构成,但也可用具有与第1至第5实施例所示协同处理机相同功能的其他协同处理机构成。
一般介绍了第1至第5实施例所示长位长乘法算法,但也可由定时/控制电路构成可用所述硬件结构的其他算法如(BOOTH)等。
第2至第5实施例的讲述中,采用“0”检测电路ZeroC,以减少运算值存储器为主要目标。然而,该电路可用于控制顺序,例如乘法单元包含乘数和被乘数时,省略运算操作,将运算操作中的值置0,进行下一操作,从而节省操作时间。
实施例5中,增加被乘数存储寄存器的数目,但可增长该寄存器的位长,以增大容量。
如上所述,根据本发明的典型例,求得模幂运算解时,可仅提供先前准备的模式信号,执行各种算法操作。
权利要求
1.进行模乘运算的方法,对应于第1公式f(A,B)=A×BmodN,采用Montgomery替换运算的第二公式f(A,B)=A×B×R’modN执行第1公式的模乘运算(“mod”指模运算)(R’表示对2的幂且略大于模N的R,满足R×R’modN=1的值),以计算整数A和B的乘积除以整数N后的余数,其特征在于,该方法包括执行第一替换运算f1’(RSmodN×AT,BU)的第一步骤(S指0、1、2中之一,T指0或1,U指0或1);执行第二替换运算f2’{R2-SmodN×AT×f1’(RSmodN×AT,BU),RSmodN×A1-T×B1-U)}。
2.如权利要求1所述进行模乘运算的方法,其特征在于,第一第二执行步骤分别包含执行各第一和第二替换运算的步骤,其方法是采用下列各步骤表示的函数REDC(m和t指变数)(a)m=(A×BmodR)×N’modR(b)t=(A×B+M×N)/R(c)ift<Nreturnt(tresult)(d)else return t-N(t-Nresult)。
3.进行模幂运算的方法,在模幂运算的迭代平方积的方法中,对应于第一公式f(A,B)=A×BmodN,采用Montgomery替换运算的第二公式f’(A,B)=A×B×R’modN执行第一公式的模积运算,求得整数A和整数B的乘数除以整数N后的余数,执行模幂运算一般方程式F(M,E)=MEmodN(“mod”指模运算)(R’表示对2的幂且略大于模N的R,满足R×R’modN=1的值,计算整数M的E(整数)次方除以整数N后的余数,其特征在于,该方法包括执行第一替换运算f’1(f’2,f’2)(初始值f’1=f’1)(RmodN,RmodN)的第一步骤;执行第二替换运算f’2(f’1,M×RmodN)的第二步骤;执行第三替换运算f’3(f’2,1)的第三步骤;其中,第三步骤的执行在第一步骤执行之后,第二步骤相对于整数E规定的次数重复执行。
4.如权利要求3所述的进行模幂运算的方法,其特征在于,第一、第二和第三执行步骤分别包含执行各第一、第二和第三替换运算的步骤,其方法是采用下列各步骤表示的函数REDC(m和t指变数)(a)m=(A×BmodR)×N’modR(b)t=(A×B+M×N)/R(c)ift<Nreturnt(tresult)(d)else return t-N(t-Nresult)。
5.如权利要求4所述进行模幂运算的方法,其特征在于,还包括下列步骤检测整数A和B的乘积是否等于整数R的倍数;在检测到A和B的乘积等于R的倍数时,(a)跳过m=(A×Bmod)×N’modR,将函数REDC中的变数m置“0”,(b)跳过T=(A×B+m×N)/R,将函数REDC中的变数t置为“A×B/R;将变数m的第一串数置于第二串数中最低有效位整数R之后,第二串数为第三串数和N’的乘积,第三串数置于整数A和整数B乘积中最低有效位R之后,同时将变数T置为下列三种数之和(1)位于整数A和整数B乘积中最高有效位整数R之前的第四串数,(2)位于变换m和整数N的乘积中最高有效位整数R之前的第五串数(3)1。
6.如权利要求3所述的进行模幂运算的方法,其特征在于,还包括以下步骤输入要计算模幂的数字长度;对应于输入的数字长度,设置Montgomery替换运算f’的执行条件。
7.进行模乘运算的装置,对应于第1公式f(A,B)=A×BmodN,采用Montgomery替换运算的第二公式f(A,B)=A×B×R’modN执行第1公式的模乘运算(“mod”指模运算)R’表示对2的幂且略大于模N的R,满足R×R’modN=1的值),以计算整数A和B的乘积除以整数N后的余数,其特征在于,该装置包括执行第一替换运算f’1(RSmodN×AT,BU)的第一手段(S指0、1、2中之一,T指0或1,U指0或1);执行第二替换运算f2’{R2-SmodN×AT×f1’(RSmodN×AT,BU),RSmodN×A1-T×B1-U)}。
8.如权利要求7所述进行模乘运算的装置,其特征在于,第一第二执行手段分别包含执行各第一和第二替换运算的手段,其方法是采用下列各手段表示的函数REDC(m和t指变数)(a)m=(A×BmodR)×N’modR(b)t=(A×B+M×N)/R(c)ift<Nreturnt(tresult)(d)else return t-N(t-Nresult)。
9.如权利要求8所述进行模乘运算的装置,其特征在于,还包括根据N,通过加法和乘法计算N’的N’计算手段,以及存储N’的手段。
10.进行模幂运算的方法,在模幂运算的迭代平方积的方法中,对应于第一公式f(A,B)=A×BmodN,采用Montgomery替换运算的第二公式f’(A,B)=A×B×R’modN执行第一公式的模积运算,求得整数A和整数B的乘数除以整数N后的余数,执行模幂运算一般方程式F(M,E)=MEmodN(“mod”指模运算)(R’表示对2的幂且略大于模N的R,满足R×R’modN=1的值,计算整数M的E(整数)次方除以整数N后的余数,其特征在于,该装置包括执行第一替换运算f’1(f’2,f’2)(初始值f’1=f’1)(RmodN,RmodN)的第一手段;执行第二替换运算f’2(f’1,M×RmodN)的第二手段;执行第三替换运算f’3(f’2,1)的第三手段。
11.如权利要求10所述进行模幂运算的装置,其特征在于,还包括第一预计算手段,用于第一手段计算第一替换运算f’1(f’2,f’2之前,计算RmodN;第一存储手段,用于存储所计算的RmodN;第二预运算手段,用于在计算第二替换运算f’2(f’1,M×RmodN)之前,计算M×RmodN;第二存储手段,用于存储所计算的M×RmodN。
12.如权利要求10所述的进行模幂运算装置,其特征在于,第一、第二和第三执行手段分别包含执行各第一、第二和第三替换运算的手段,其方法是采用下列各手段表示的函数REDC(m和t指变数)(a)m=(A×BmodR)×N’modR(b)t=(A×B+M×N)/R(c)ift<Nretumt(tresult)(d)else return t-N(t-Nresult)。
13.如权利要求12所述的进行模幂运算装置,其特征在于,还包括根据N通过乘法和加法,计算N’的计算手段,以及存储N’的手段。
14.如权利要求12所述进行模幂运算的装置,其特征在于,还包括下列手段检测整数A和B的乘积是否等于整数R的倍数;在检测到A和B的乘积等于R的倍数时,(a)跳过m=(A×Bmod)×N’modR,将函数REDC中的变数m置“0”,(b)跳过T=(A×B+m×N)/R,将函数REDC中的变数t置为“A×B/R;将变数m的第一串数置于第二串数中最低有效位整数R之后,第二串数为第三串数和N’的乘积,第三串数置于整数A和整数B乘积中最低有效位R之后,同时将变数T置为下列三种数之和(1)位于整数A和整数B乘积中最高有效位整数R之前的第四串数,(2)位于变换m和整数N的乘积中最高有效位整数R之前的第五串数(3)1。
15.如权利要求10所述的进行模幂运算装置,其特征在于,还包括输入要计算模幂的数字长度的手段,以及相应于该输人数字长度设置Montgomery替换运算f’的执行条件的手段。
16.如权利要求10所述的进行模幂运算装置,其特征在于,还包括用于执行第一运算f’1、第二运算f’2和第三运算f’3的多个寄存器。
17.加密装置,该装置制备以加密E和N对明文M进行加密而得的密码,其中采用执行模幂运算的迭代平方积法中,相对应于公式f(A,B)=A×BmodN的Montgomery替换运算公式f’(A,B)=A×B×R’modN,其特征在于,该装置包括对已知的X×RmodN和Y×RmodN,执行第1替换运算f1’(X×RmodN,X×RmodN)=X2RmodN的手段、执行第2替换运算f2’(X×RmodN,X×RmodN)=X×Y×RmodN的手段、以及执行第3替换运算f3’(X×RmodN,1)=XmodN的手段。
18.如权利要求17所述的加密装置,其特征在于,第一第二执行手段分别包含执行各第一和第二替换运算的手段,其方法是采用下列各手段表示的函数REDC(m和t指变数)(a)m=(A×BmodR)×N’modR(b)t=(A×B+M×N)/R(c)ift<Nreturnt(tresult)(d)else retum t-N(t-Nresult)。
全文摘要
本发明揭示一种模运算用的方法和装置,对应于第1公式f(A,B)=A×BmodN,采用Montgomery替换运算f(A,B)=A×B×R’modN执行第1公式的模乘运算(R’表示对2的幂且略大于模N的R,满足R×R’modN=1的值),以计算整数A和B的乘积除以整数N后的余数,此方法和装置包括执行第1替换算法f’
文档编号G06F7/48GK1172390SQ97110289
公开日1998年2月4日 申请日期1997年4月7日 优先权日1996年4月5日
发明者海老原秀德, 川崎清人 申请人:冲电气工业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1