模运算的装置和方法

文档序号:6406629阅读:148来源:国知局
专利名称:模运算的装置和方法
技术领域
本发明涉及模运算(modulocomputation)的装置和方法。
D.Naccache,H.Mstilti在《RAIRO-OR》1990年(3)上以“一种新的模运算法”为题发表了一种计算Y以X为模的余数(=modulo(Y.X);简写为Y mod X)的新方法,在这里2n-1≤X≤2n-1且0≤Y≤2L-1,值n表示X的毕特(bits)长度而L代表计算所接受的Y的最大尺寸。这个算法下面称作Prince Leonard算法,简称为PLA。
本发明的一个目的是披露一种具有被减少的存储器尺寸的快速模运算方法。这个目的是通过在权利要求3中披露的本发明的方法来达到的。
本发明的A*B对模X的余数的模运算方法一般包括下列步骤-分别在第一组存贮单元RAM1及第二组RAM2存贮单元中存入所说数A和B;
-进行破坏相乘A×B=C;
-将存储在所说第二组RAM2单元的数据转移到所说第一组RAM1单元;
-将所说第二组RAM2单元归零;
-将存储在第三组RAM3单元的数据向右移位三个位置,这个数据用Ci代表其中i是二进制数字上最小有效二进制数位(LSB)为i=0,同时将这三个最右位二进制数字Cn-1,Cn及Cn+1引入所说第三组RAM3单元的最左位(即最小有效二进制数位LSB′s);
-用存储在所说第三组RAM3单元的数据破坏相乘第二常数K=2zh/X,这个常数在一可检索装置(retrievable medium)中以n+1毕特长度被存储;
-将以Dn+1′表示的存储在所说第二组RAM2单元中的最右位二进制数字推到所说第三组RAM3单元中的最左位;
-将所说第二组RAM2单元归零;
-用存储在所说第三组RAM3单元中的数据部分地乘以第一常数X,这个常数在所说可检索装置中以n毕特长度来存储。由此,在所说第二组RAM2单元中只获得n+2LSB(最小有效二进制数位)。
-从RAM1中减去RAM2(比方说F=RAM1-RAM2);
-当存储在所说第一组RAM1单元中的数字大于所说第一常数X时,从存储在所说第一组RAM1单元中减去所说第一常数X。
由此,存储在包括所说三组单元和/或存储在所说可检索装置的RAM矩阵(RAMmatrix)里的数字和/或数据可以以逆向格式(inverseformat)(MSB(最大有效二进制数位)……LSB)存贮,所说第一、二和/或第三组单元的次序可以被变更,和/或取代各所说单元组归零,可以连续地(冲掉)重写各组。
本发明方法的具有优点的附加实施例来自各个细分权利要求(subclaims)。
本发明的另一个目的是披露一种使用本发明方法的装置。这个目的是通过在权利要求1中所披露的本发明装置所达到的。
用于A*BModX模运算的本发明装置,在这里A,B及第一常数X是n字节数(bytenumbers二进位组),这个装置一般包括-一可检索装置,如RAM,ROM(只读存贮器)或E2PROM记录有所说第一常数X及第二常数K=22n/X;
-包括第一组RAM1单元,第二组RAM2单元及第三组RAM3单元的具有3*(int(n/8)+1)尺寸字节的RAM矩阵;
-一种计算装置,它允许存储在所说RAM矩阵里的数据的多位相减,多位移位运算,多位数据转递进或出所说可检索装置及所说RAM矩阵,多位完全的且破坏的相乘。
本发明装置的具有优势的附加实施例来自各个细分权利要求。
在付费电视系统中比如在视频密码付费电视系统(videocryptpayTVsistem)及其它现代密码通信中的编码通常需要模运算。在不能使用大容量RAM存储器的小型密码装置(如灵敏卡(smart-cards))中,特殊的PLA执行过程允许这样的模函数的有效计算。
由此为了计算R=YmodX仅需要约为X大小三倍的RAM空间。
如果X和常数K存储在可检索装置如ROM中,从微控制器或微处理器中也不需要除去。
本发明的最佳实施例将参照附图来描述,其中

图1示出了带有计算电路(compntationcircuit)的灵敏长。
图1中描述了灵敏卡10,它包括微处理器电路11。这个微处理器电路与RAM存储器电路12,ROM存储器13及I/O接口电路14。使用各电路线可以交换数据和地址数。在微处理器电路11里进行PLA过程的程序存储在ROM13中。
当第一次执行这个过程时,为了用其它小于2L-1的Y值进一步再调入(recall)PLA,计算常数K(依赖于X和L)并将其存储在RAM 12中。
RAM和/或ROM 13和/或I/O接口电路14可以被包括在微处理器电路11中。ROM 13也可以是一E2PROM。
K的计算需要一次除法,但以后转移到需要二次乘法,二次右移位及至少三次减法的过程,假定在这个过程X保持不变。
最普通的现有计算R=YmodX的设计(scheme)是R=Y-X*int(Y/X)或是以程序设计语言C-like符号来表示Unsignedcommon(Y,X),(programcommon)UnsignedY,X;
{return(Y-X*(Y/X));
}这个计算方法用于任何一对整数,但由于这个过程每一次要求不同的除法所以它的时间通常很长。
在本发明的一个装置中,如灵敏长10,对每一个X(只一次用微处理器电路11计算常数值K并将K值存贮在RAM12中。当用不同Y值调入模X时再使用K。当以后有利地进行这个过程时使用一完全确定的间隔,在这个间隔中使用在微处理器电路11中很少的减法来精细(refine)计算。由于以移位和乘法来计算这个距离所以转移到这个过程是很容易做的。
如果X是一个在装置的寿命期永不改变的常数,有利地是K可以通过灵敏卡10的发行人(issuer)来计算并存贮在ROM13中。
所有根据本发明的减号运算(minusoperation)将作为无符号数字对数字(unsigneddigit-todigit)(这里是毕特对毕特)减法,例如10397-21033=89364,且以程序设计语言C-like符号来写这个计算设计。
本发明装置根据下列计算模函数的程序工作Unsignedmodulo(Y,X);(programmodulo)UnsignedY,X;
{StaticunsignedCOPY_X,K;
UnsignedA;
if(COPY_X!=X){K←2L/(COPY_X←X);}A←X*((K*(Y>>(n-1)))>>(L-n+1));
A←Y%2n+2-A%2n+2;
While(A≥X){A←A-X;}Return(A);
}应该指出当环路(while loop)至多执行二次且%2n+2的计算是以Y和A的n+2最小二进制有效位来进行的简单减法如果这行A←Y%2n+2-A%2n+2;
被A←Y-A;取代这个modulo(Y,X)函数也会工作得很好。
》代表右移算子,%代表左移算子。
可以证明上述语句是真实的在当环路以前从Y中减去((K(Y))(n-1)))》(L-n+1)timesX结果Y-X*((K(Y》(n-1)))》(L-n+1))≡R或Y-X*((K(Y》(n-1)))》(L-n+1))-X*△=R计算△的值导致Y-X*((K(Y>>(n-1)))>>(L-n+1))-X*△=Y-X*int(Y/X)X*((K(Y>>(n-1)))>>(L-n+1))+X*△=X*int(Y/X)((K(Y>>(n-1)))>>(L-n+1))+△=int(Y/X)存在着α<X/int(Y/X)=Y/X-α/X((K(Y>>(n-1)))>>(L-n+1))+△=Y/X-α/X类似存在着β<2n-1/Y>>(n-1)=Y/2n-1-β/2n-1及
γ<X/K=2L/X-γ/X{(Y/2n-1-β/2n-1)*(2L/X-γ/X)}>>(L-n+1)-Y/X+α/X=-△{Y/(X*2n-1-L)-β/(X*2n-1-L)-Y*γ/(X*2n-1)+γ*β/(X*2n-1)}>>(L-n+1)-Y/X+α/X=-△及最后存在着ε<2L-n+1/{Y/(X*2n-1-L)-β/(X*2n-1-L)-Y*γ/(X*2n-1)+γβ/(X*2n-1)}>>(L-n+1)={Y/(X*2n-1-L)-β/(X*2n-1-L)-Y*γ/(X*2n-1)+γβ/(X*2n-1)}/2L-n+1-ε/2L-n+1结果{Y/(X*2n-1-L)-β/(X*2n-1-L)-Y*γ/(X*2n-1)+γβ/(X*2n-1)}/2L-n+1-ε/2L-n+1-Y/X+α/X=-△Y/X-β/X-Y*γ/(X*2L)+γβ/(X*2L)-ε/2L-n+1-Y/X+α/X=-△β/X+Y*γ/(X*2L)-γβ/(X*2L)+ε/2L-n+1-α/X=△△≤β/X+Y*γ/(X*2L)+ε/2L-n+1<β/X+Y/2L+ε/2L-n+1<β/X+Y/2L+1
由于2n-1≤X且Y≤2L-1(见背景段中的定义),因而△<3。
这证明在最坏的场合当回路将被执行二次。
由于X长等为n毕特,3*X至少n+2毕特长。结果,减法Y-X((K(Y》(n-1)))》(L-n+1))可以在每个数字的n+2最小有效数位上来进行,且运行A←Y-A;
可以由下行A←Y%2n+2-A%2n+2来取代。
二个例子将解释这个运算计算R=48619mod93≡73及S=47711mod93≡2R=?LetL=17X=(93)10=1011101→n=7K=2L/X=10110000001Y=(48619)10=1011110111101011Y>>(n-1)=1011110111(n-1LSB′ssuppressed)K*(Y>>(n-1))=10110000001*1011110111=100000101000101110111
(K*(Y>>(n-1)))>>(L-n+1)=1000001010X*(K*(Y>>(n-1)))>>(L-n+1)=1011110110100010X*(K*(Y>>(n-1)))>>(L-n+1)%2n+2=110100010Y%2n+2=111101011111101011-110100010-----------=1001001=(73)10=RS=?LetL=17X=(93)10=1011101→n=7K=2L/X=10110000001Y=(47711)10=1011101001011111Y>>(n-1)=1011101001(n-1LSB′ssuppressed)K*(Y>>(n-1)=10110000001*1011101001=100000000010001101001(K*(Y>>(n-1)))>>(L-n+1)=1000000000X*(K*(Y>>(n-1)))>>(L-n+1)=1011101000000000X*(K*(Y>>(n-1)))>>(L-n+1)%2n+2=000000000Y%2n+2=001011111001011111-000000000-----------1011111(Whileloop)-1011101---------=10=(2)10=S
在程序′common′(一次除法,一次乘法及一次减法)与程序′modulo′(在第一次工作中(inthefirstactivation)的二次乘法,二次右移位运算,二次左移位运算,三次减法及一次乘法)间的理论差可以忽略(对n毕特数字)在每一个n时钟周期中做“》n′%n′的说明。
A-B与A+B取大约2*n,A*B是2*n2的而且一般允许一个除法与4个乘法相等。如果用C(k)n代表在n-毕特数字上进行K程序′common′所需的时间,用M(k)n代表用于程序′modulo′的类似时间,则Cn(k)=k*(4*(2*n2)+2*n2+2*n)=k*(10*n2+2*n);
Mn(k)=4*(2*n2)+k*(2*(2*n2)+2*n+2*n+3*(2*n))=8*n2+k*(4*(n2)+10*n).
对于n=10(C10(k)=k*1020及M10(k)=800+k*500这导致C10(1)<M10(1),但对任何k>1M10(k)<C10(k)这指出在重复模运算的场合本发明的模运算更快。
本发明模运算还可进一步来改进。
可以证明对于所有u<L
int(in+(2L/X)/2u)=int(2L-U/X)。
这可以以一个被改进的形式用于重写程序′modolo′,这个改进形式为Unsignedmodulo_1(Y,X);(programmodulo_1)UnsignedY,X;
{StaticunsignedintCOPY_X,K;
UnsignedintA,Z,l;
if(COPY_X!=X){K←2L/(COPY_X←X);}1←Number_of_digits(Y);
Z←K>>(L-l-1);
A←X*((Z*(Y>>(n-1)))>>(l-n+2));
A←Y%2n+2-A%2n+2;
While(A≥X){A←A-X;}Return(A);
}为了举例说明与程序′modulo′的不同,计算下列例子
T=1000modulo_193(≡70)T=?Let Y=(1000)10=1111101000→1=10Y>>(n-1)=1111Z=K>>(L-l-1)=10110000001>>(17-10-1)10=10110Z*(Y>>(n-1))=10110*1111=101001010(Z*(Y>>(n-1)))>>(1-n+2)=1010X*((Z*(Y>>(n-1)))>>(1-n+2))=1110100010X*((Z*(Y>>(n-1)))>>(1-n+2))%2n+2=110100010Y%2n+2=111101000111101000-110100010-----------1000110=(70)10=T.
程序′Modulo′的相应计算K*(Y>>(n-1))=10110000001*1111=101001010001111(K*(Y>>(n-1)))>>(L-n+1)=1010X*((K*(Y>>(n-1)))>>(L-n+1))=1110100010X*((K*(Y>>(n-1)))>>(L-n+1))%2n+2=110100010Y%2n+2=111101000111101000-110100010-----------11000110=(70)10=T.
现在对于实际场合L=2*n,更详细地描述本发明模计算。
程序′Modulo′改变为Unsignedmodulo_2n(Y,X);(programmodulo_2n)UnsignedY,X;
{StaticunsignedCOPY_X,K;
UnsignedA;
if(COPY_X!=X){K←22*n/(COPY_X←X);}A←X*((K*(Y>>(n-1)))>>(n+1));
A←Y%2n+2-A%2n+2;
While(A≥X){A←A-X;}Return(A);
}当根据本发明计算时,使用一特殊乘法,叫破坏乘法,破坏乘法是一个乘法过程,在这个过程中,产生结果C(A*B的乘积)同时为了在RAM12中获得位置而破坏A。
为了举例说明这个运算,计算乘积911*163=148493(在实际运算中包括黑体数字)911911911*163*163*162003033733
最后的乘法3*9的结果为27。27的数字7是733的第一数字且27的数字2是162的最后数字。下一步163的数字3就不需要3且由结果27的数字2来取代911911911*162*163*157793393393第一乘法6*1的结果为6,它被加到733的中间数位→793。第二乘法6*1的结果6被加到793的第一数字7上。这导致了数字393及数字163的最后数字3(=2+1)。最后乘法6*9结果为54。这个结果的第二数字被加到数字163的最后数位3上。163的第二数位6将不再需要且由结果54的数位5来取代911911911*157*158*148493493493最后乘法1*9结果为9。这个结果被加到数字158的第二数位5上。158的第一数字1将不再需要且由和5+9=14的第一数位1来取代。现在数字148代表最后结果148493的前三个数位且数字493代表后三位数字。
值X及K都存贮在ROM13中。在RAM12中的必要RAM空间是3*(int(n/8)+1)字节矩阵(如如果n=38则矩阵尺寸为5*3)。数字Ai…Fi是多字节数组,这里i是毕特数且i=0为最小二进制有效数位。
←int(n/8)+1→RAM1……↑RAM2……|3RAM3……↓开始,A和B分别存贮在RAM1及RAM2中RAM1 A0A1A2A3……An-2An-100RAM2 B0B1B2B3……Bn-2Bn-100RAM3……在进行A*B=C的破坏乘法后RAM1 A0A1A2A3……An-2An-100RAM2 C0C1C2……Cn-1CnCn+1RAM3 Cn+2Cn+3Cn+4……C2n-10000
将RAM2转移到RAM1且将RAM2归零RAM1 C0C1C2……Cn-1CnCn+1RAM2000000000000000000000000000000RAM3 Cn+2Cn+3Cn+4……C2n-10000将RAM3向右移位三个位置时将毕特数Cn-1到Cn+1引入RAM3的最左位置RAM1 C0C1C2……Cn-1CnCn+1RAM2000000000000000000000000000000RAM3 Cn-1CnCn+1Cn+2Cn+3……C2n-10用RAM3(即D=K*RAM3)破坏相乘K(在ROM中为n+1长度)RAM1 C0C1C2……Cn-1CnCn+1RAM2 D0D1D2……DnDn+1RAM3 Dn+2Dn+3Dn+4……D2n00将Dn+1推入RAM3的最左位且将RAM2设定为0
RAM1 C0C1C2……Cn-1CnCn+1RAM2000000000000000000000000000000RAM3 Dn+1Dn+2Dn+3……D2n0用RAM3(比方E=RAM3*X)乘X(在ROM13中以n长度存贮)。只进行部分相乘以便在RAM2中只获得E的n+2最小有效数位RAM1 C0C1C2……Cn-1CnCn+1RAM2 E0E1E2……En-1EnEn+1从RAM1中减去RAM2(即F=RAM1-RAM2)RAM1 E0E1E2……En-1EnEn+1RAM2 E0E1E2……En-1EnEn+1当RAM1>X时,从RAM1中减去X(在ROM中为n长度)RAM1FINAL.RESULT……RAM2 E0E1E2……En-1EnEn+1
本发明装置有利的是以这样一个位置终止,即非常有利于进行另一个破坏乘法(在RAM2中放入另一个数且NEXT-NUMER*FINAL-RESUIT将出现在RAM2及RAM3)。这对于模的取是很不利的。
上面描述了L=2n的情形(最实际的),但是这个方法可以轻易地普及到任何L>n的值。
存贮在RAM行列和/或可检索介质13中的数字和/或数据也可以以倒置格式存贮(最大有效位与最小有效位互换)。
RAM1、RAM2和/或RAM3的次序也可置换。
代替为RAM归零,这个RAM可以连续重写。
可以用乘方和相乘算法控制器来进行这个乘法。
RAM行列可由右移位寄存器来取代。
用于模运算A*BmodX的装置,这里数字A、B及第一常量X都是n字节,这个装置包括-可检索装置(13),如RAM,ROM或E2PROM,在其中已记录了所说第一常量X及第二常量K=22n/X;
-3*(int(n/8)+1)字节的RAM矩阵,它包含第一组RAM1存贮单元,第二组RAM2存贮单元及第二组存贮单元;
-运算装置(11),它允许对存贮在所说RAM行列中数据的多位减法,多位移位运算,多位数据从或向所说可检索装置及所说RAM矩阵的转移,多位完全的和破坏的乘法。
其特征在于用所说运算装置(11)的运算是以二元数位(binaryortrinorrynumbers)进行的。
该装置用于模运算A*BModX的方法,包括下列步骤-在所说第一组RAM1存贮单元及所说第二组RAM存贮细胞中分别存贮所说数字A和B;
-进行破坏乘法A*B=C;
-将存贮在所说第二组RAM2存贮单元的数据(C的最小二进制有效数位)转移到所说第一组RAM1存贮单元,
-将所说第二组RAM2存贮单元归零;
-将存贮在所说第三组RAM3存贮单元中的数据(C是最大二进制有效数位)向右移位三个位置,这个数据以Ci代表,其中i是毕特且i=0最小二进制有效数位,同时将三个最右位毕特Cn-1′Cn及Cn+1引入所说第三组RAM3的存贮单元的最左位置(即最小二进制有效数位);
-用存贮在所说第三组RAM3的存贮单元中的数据破坏相乘所说第二常量K,K在所说可检索装置(13)中以n+1毕特的长度存贮;
-将存贮在所说第二组RAM2存贮单元中的最右位毕特以Dn+1′表示推向第三组RAM3存贮单元中的最左位;
-将所说第二组RAM2存贮单元归零;
-用存贮在所说第三组RAM3存贮单元来部分相乘所说第一常数X,X在所说可检索装置(13)中以n毕特的长度存贮,由此在所说第二组RAM2存贮单元中只获得n+2的最小二进制有效数位;
-从存贮在所说第一组RAM1存贮单元的数字中减去存贮在所说第二组RAM2存贮单元的数字;
-当存贮在所说第一组RAM1存贮单元中的数字大于所说第一常数X时,从存贮在所说第一组RAM1存贮单元中减去所说第一常数X。
其特征在于有贮在RAM矩阵和/或存贮在可检索装置(13)中的数字和/或数据以倒置格式存贮(MSB…LSB)。
其特征在于所说第一、二和/或三所存贮单元的次序被置换。
其特征在于代替为所说各个组存贮单元归零,各个组存贮单元被连续重写。
其特征在于所说乘法是用乘方及乘法算法控制器(square-and-multiplyalgcrithmiccohteiller)来进行的。
其特征在于所说RAM矩阵被右移位寄存器所取代。
其特征在于所说装置是视频密码(Videocrypt)解码器。
权利要求
1.用于模运算A*B mod X的装置,这里数字A、B及第一常量X都是n字节,这个装置包括--可检索装置(13),如RAM,ROM或E2PROM,在其中已记录了所说第一常量X及第二常量K=22n/X;--3*(int(n/8)+1)字节的RAM矩阵,它包含第一组RAM1存贮单元,第二组RAM2存贮单元及第二组存贮单元;--运算装置(11),它允许对存贮在所说RAM行列中数据的多位减法,多位移位运算,多位数据从或向所说可检索装置及所说RAM矩阵的转移,多位完全的和破坏的乘法。
2.根据权利要求1的装置,其特征在于用所说运算装置(11)的运算是以二元或三元数位(binary or trinorry numbers)进行的。
3.利用根据权利要求1或2的装置用于模运算A*B Mod X的方法,包括下列步骤-在所说第一组RAM1存贮单元及所说第二组RAM存贮细胞中分别存贮所说数字A和B;-进行破坏乘法A*B=C;-将存贮在所说第二组RAM2存贮单元的数据(C的最小二进制有效数位)转移到所说第一组RAM1存贮单元,-将所说第二组RAM2存贮单元归零;-将存贮在所说第三组RAM3存贮单元中的数据(C是最大二进制有效数位)向右移位三个位置,这个数据以Ci代表,其中i是毕特且i=0最小二进制有效数位,同时将三个最右位毕特Cn-1′Cn及Cn+1引入所说第三组RAM3的存贮单元的最左位置(即最小二进制有效数位);-用存贮在所说第三组RAM3的存贮单元中的数据破坏相乘所说第二常量K,K在所说可检索装置(13)中以n+1毕特的长度存贮;-将存贮在所说第二组RAM2存贮单元中的最右位毕特以Dn+1′表示推向第三组RAM3存贮单元中的最左位;-将所说第二组RAM2存贮单元归零;-用存贮在所说第三组RAM3存贮单元来部分相乘所说第一常数X,X在所说可检索装置(13)中以n毕特的长度存贮,由此在所说第二组RAM2存贮单元中只获得n+2的最小二进制有效数位;-从存贮在所说第一组RAM1存贮单元的数字中减去存贮在所说第二组RAM2存贮单元的数字;-当存贮在所说第一组RAM1存贮单元中的数字大于所说第一常数X时,从存贮在所说第一组RAM1存贮单元中减去所说第一常数X。
4.根据权利要求3的方法,其特征在于有贮在RAM矩阵和/或存贮在可检索装置(13)中的数字和/或数据以倒置格式存贮(MSB…LSB)。
5.根据权利要求3或4的方法,其特征在于所说第一、二和/或三所存贮单元的次序被置换。
6.根据权利要求3到5的任何一种方法,其特征在于代替为所说各个组存贮单元归零,各个组存贮细胞被连续重写。
7.根据权利要求3到6的任何一种方法,其特征在于所说乘法是用乘方及乘法算法控制器(square-and-multiply algorithmic cohtroller)来进行的。
8.根据权利要求3到7的任何一种方法,其特征在于所说RAM矩阵被右移位寄存器所取代。
9.根据权利要求1或2的装置,其特征在于所说装置是视频密码(Videocrypt)解码器。
全文摘要
具有减少的RAM空间的快速模计算。现代密码通信常需要模运算。在1990RAIRO-OR,(3)上由D.Naccache,H.M′Silti发表了“一种新模计算算法”。但小型密码装置中,不能使用大量的RAM存贮器。特殊执行过程可有效运算模函数。由此计算R=Y mod X只需大约3倍于X尺寸的RAM。如果X和常数K存贮在可检索装置上如ROM,则微控制器或微处理器中也无需除法。
文档编号G06F7/72GK1070298SQ92104800
公开日1993年3月24日 申请日期1992年5月26日 优先权日1991年5月27日
发明者大卫·纳卡什 申请人:汤姆森电子用品公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1