增速密码法与装置的制作方法

文档序号:6554957阅读:287来源:国知局
专利名称:增速密码法与装置的制作方法
技术领域
本发明主要涉及一种能够有效地计算量的幂和倍数的方法和装置,其可用于诸如密钥生成、加密、解密、辨识、识别和数字签名等密码目的。
背景技术
现代密码方法要求大量的基本算术运算,如加、减、乘、除、余、移位以及逻辑“与”、“或”和“异或”。这些方法中有许多需要计算幂Ak(或倍数k*A),其中值k从一个可能值集合中随机选取。
迄今为止,人们业已就k取一指定值时幂Ak(或倍数k*A)的计算提出并使用了各种各样的方法(H.Cohen所著“计算数论教程”(A Course in Computational Number Theory),GTM 138,Springer-Verlag,1993(Section 1.2)),(D.Gordon所著“快速取幂法评述”(A survey of fast exponentiation methods),Journal of Algorithms17(1998),129-146),(D.Knuth所著“计算机编程技艺”(The Art ofComputer Programming),Volume 2,Semi-numerical Algorithms,3rded.,Addison-Vesley,1998(Section 6.4.3)),(A.J.Menezws等人所著“应用密码学手册”(Handbook of Applied Cryptography),CRC Press,1997(Section 14.6))。
一种已用的快速计算方法是将k表示为2的幂之和,将计算化为乘法与平方(或加法与加倍)。
第二种已用的快速计算方法是将k表示为2的正幂与负幂之和,将计算化为乘法、逆与平方(或加法、减法与加倍)。
第三种已用的快速计算方法是将k表示为2的幂的小倍数之和,将计算化为乘法、小幂与平方(或加法、减法、小倍数与加倍)。
第四种已用的快速计算方法是将k表示为一特殊乘子t的幂之和,其中t具有满足性质与乘法(或者加法或减法)相比,增高到t幂(或者乘以t)将占用非常少的时间。这种方法的一个特别情况是将k表示为群E(GF(pm))上的p-幂Frobenius映射的幂的和,其中E(GF(pm))是定义在有限域GF(p)上的一椭圆曲线E上的点所形成的群。
第五种已用的快速计算方法(称作因子法(Knuth所著“计算机编程技艺”,(The Art of Computer Programming),Volume 2,Semi-numerical Algorithms,3rded.,Addison-Vesley,1998(Section4.6.3,page 463 and exercise 3)))是将一给定的整数k表示为数个因子的乘积,而各个因子则用前面所述方法进行表示。
对于k的所有或大多数值,所有这些方法都能够对幂Ak(或倍数k*A)进行合理的快速计算,但许多使用者期望有一种方法,能够在k从一充分大的允许值集合中取值的情况下实现幂Ak(或倍数k*A)更加快速的计算。

发明内容
在许多密码运算中,要使用一个群或一个环中的一个元素的一个随机幂或倍数。本发明提供了一种方法、体制和装置来变换在某些重要情形下使用一种快速方法计算幂或倍数的数字信息,这些情形包括Galois域 中的幂,Koblitz椭圆曲线上的倍数,NTRU卷积多项式环中的倍数等。例如,根据本发明,一个指数或倍数将被表示为数个因子的乘积,其中的每个因子在被展开成某快速运算的幂的和时具有低Hamming权。这在许多密码运算中,如密钥生成、加密、解密、数字签名的创建、数字签名的验证、数字证书的创建、数字证书的辨识、识别等之中将是非常有用的,特别是在使用随机指数或乘子的情况下。
因此,本发明提供了一种进行密码运算的方法、体制和装置,包括通过使用含有取自大元素集合的一个分量的数字运算符进行运算来变换数字信息,其中该分量具有一低Hamming权。通常选择该分量使其Hamming权约小于30,较佳约小于20,更佳约小于15,最佳则是约小于10。该数字运算符包含一个具有许多因子、每个因子具有一低Hamming权的分量较佳。与使用现有技术元素相比,按照本发明利用一个具有一个或多个分量的数字运算符,变换阶段将能以更快的速度完成。按照本发明,一个分量表示为数个因子的乘积,每个因子在展开成某快速运算的幂之和时具有低Hamming权(通过适当的计算设备如cpu、微处理器或计算机等来进行)。
按照本发明,能够在k从一个大的可能元素集合中取值的情况下非常快速地计算幂Ak(或倍数k*A)。按照本发明的方法进行的计算通常比采用目前广泛使用的方法显著地快。
在本发明的一实施例中,关于指数分量(或者多个元素相乘的分量)的计算技术使用特别选取的元素的乘积,以提高指数计算(或乘法计算)的速度。尽管可能的幂(或倍数)的个数约等于k(1),k(2),…,k(r)的容许值个数的乘积,但计算一个幂Ak(1)k(2)…k(r)(或一个倍数k(1)k(2)…k(r)*A)的计算复杂性与计算幂A1k(1),A2k(2),…,Ark(r)(或倍数k(1)*A1,k(2)*A2,…,k(r)*Ar)的复杂性成正比。虽然Ak(或k*A)的可能值的集合的大小随k(1)k(2),…,k(r)的容许值个数的乘积正比例增加、但计算复杂性随各个计算复杂性的和正比例增加这样一个事实有助于解释为什么本发明提供了一种改进的计算方法。本发明之方法特别适用于含有一个使幂At能够快速计算的元素t的情况。k(1),k(2),…,k(r)取作元素t的低Hamming权多项式较佳。
本发明还提供一套计算机可读介质,其包含使用本发明的上述方法的说明资料。
定义以下定义用于对本发明进行说明。计算机可读介质应理解为含有可被计算机读取的数据的制品或载有可被计算机读取的数据的载波信号。这类计算机可读介质包括但不限于,磁介质,如软盘、硬盘、卷带式磁带、盒式磁带或磁卡;光介质,如CD-ROM、可写光盘;盘、带或卡形式的磁光介质;纸介质,如穿孔卡和纸带;或者通过网络、无线网络或调制解调器中接收的载波信号,包括射频信号和红外信号。
本文使用的术语“大集合”应理解为这样的一个元素集合,即它足够大,能够防止有人在预定时间内或在预定最小运算次数以下通过检查该集合的元素来找到密码运算中使用的一个随机选取的元素。找到选用的元素需要的时间越长或最小运算次数越大,密码运算就越安全。
具体实施例方式
有许多密码方法都需要一个随机幂Ak或随机倍数k*A,其中k是一个环R的一个元素,A是一个R-模M的一个元素。需要这种随机幂或随机倍数的典型方法有Diffie-Hellman密钥交换(美国专利号4,200,770),(Menezes,同前文,第12.6.1节),ElGamal公钥密码技术(Menezes,同前文,第8.4节),数字签名标准(DSS)[美国专利号5,231,668],(Menezes,同前文,第11.5.1节),NTRU公钥密码体制(美国专利号6,081,597),(J.Hoffstein等人所著“NTRU一种新的高速公钥密码体制”(NTRUA new high speed public keycryptosystem),in Algorithmic Number Theory(ANTS III),Portland,OR,June 1998,Lecture Notes in Computer Science 1423(J.P.Buhler,ed.),Springer-Verlag,Berlin,1998,267-288),以及NTRU签名方案(NSS)(J.Hoffstein等人所著“NSSNTRU签名方案”(NSSTheNTRU Signature Scheme),Proc.EUROCRYPT 2001,Lecture Notes inComputer Science,Springer-Verlag,2001)。
Diffie-Hellman、ElGamal与DSS的一种变形是使用整数环R=Z以及一个有限域的非零元素的R-模M=GF(pm)*。Diffie-Hellman、ElGamal与DSS的第二种变形是使用阿贝尔簇A的自同态环R=End(A)和定义在一个有限域上的A上的点的R-模M=A(GF(pm))。这种变形的一个实例是定义在有限域GF(p)上的椭圆曲线A=E以及包含Z与E(GF(pm))上的p-幂Frobenius映射的自同态环R。NTRU公钥密码体制和NTRU签名方案使用系数取值于环B的多项式模理想I的环R=B[X]/I和R-模M=R。NTRU的一个实例是使用卷积环R=(Z/qZ)[x]/(XN-1)。
本发明的方法包括按如下形式自环R的一个元素集合中选取量kk=k(1)*k(2)*…*k(r),其中,对R-模M中的每个元素A,幂Ak(i)(或倍数K(i)*A)的计算都是快速的,并且按如下步序计算幂AkA1=Ak(1),A2=Ak(2),…,Ak=Ar=Ar-1K(r)(或按如下步序计算倍数k*AA1=k(1)*A,A2=k(2)*A1,…,Ar=k(r)*Ar-1)在本发明的一实施例中,环R含有这样的一个元素t,它可以满足对R-模M的每个元素A,幂At(或倍数t*A)的快速计算。这方面的实例包括(1)一个有限域的乘法群M=GF(pm)*,以及元素t=p-对应于提高到p次幂t(x)=xp;(2)定义在有限域GF(p)上的椭圆曲线E,E中具有扩域GF(pm)坐标的点群M=E(GF(pm)),以及由t(x,y)=(xp,yp)定义的p次幂Frobenius元素t。
(3)卷积多项式环R=M=(Z/qZ)[X]/(XN-1),以及元素t=X-对应于在环R中与X相乘,即t(f(X))=X*f(X)。
在环R中含有这样一个元素t的情况下,各元素k(i)较佳取为t的多项式a0+a1*t+a2*t2+…+an*tn,其中,系数a0,…,an取值于一个限制集合。a0,…,an的典型取值是集合{0,1}和{-1,0,1}。后一个集合主要用于在M中逆运算(或负运算)为快速运算的情况。
本发明的能行性可利用一个多项式的Hamming权来度量HW(a0+a1*t+…+an*tn)=非零ai的个数由于At(或t*A)的计算时间可忽略,因此对k(i)=a0+a1*t+…+an*tn,计算Ak(i)(或k(i)*A)的时间约为TimeToCompute(Ak(i))≈HW(k(i))次乘法或TimeToCompute(k(i)*A)≈HW(k(i))次加法因此,这种以形式k=k(1)*k(2)*…*k(r)选择k的方法使Ak(或k*A)的计算约为TimeToCompute(Ak)≈HW(k(1))+…+HW(k(r))+r-1次乘法或TimeToCompute(k*A)≈HW(k(1))+…+HW(k(r))+r-1次加法。
因此,计算Ak(或k*A)的计算量约正比于各个量k(1),…,k(r)的Hamming权的和。
如果多项式系数a0,…,an自典型集{0,1}中取值并且选取各个量k(1),…,k(r)使它们的Hamming权分别是d1,…,dr,那么r-元组(k(1),…,k(r))的个数是C(n+1,d1)*C(n+1,dz)*…*C(n+1,dr),其中C(n,d)=n!/d!*(n-d)!是组合符号。r-元组(k(1),…,k(r))的个数是每个k(i)的取值个数的乘积。而且实验表明在许多典型情形下,如果乘积C(n+1,d1)*…*C(n+1,dr)取得比环R的元素个数小,那么大多数乘积k(1)*…*k(r)将不同。因此,对环R的一个大子集中的所有k,都可以有效地计算随机幂Ak(或倍数k*A)。该子集的大小可由参数,如参数r和d1,…,dr来加以调整。
上述实施例的一个推广是这样的一个环R,它含有数个元素t1,…,tz,使得对每个t=t1,…,tz及R-模M中的元素A,幂At(或倍数t*A)的计算都是快速的,并且其中k(i)被取作t1,…,tz的多项式。上述实施例的另一个推广是元素k=k1(1)*…*k1(r1)+k2(1)*…*k2(r2)+…+kw(1)*…*kw(rw)的选择,它是前述分类k(i)的元素kj(i)的乘积的和。其它推广对所属技术领域的专业人员来说是显而易见的。
本发明的增速密码技术的其它详细说明通过下面的实例给出。
在许多密码结构中,人们使用一个群或环的一个元素的随机幂或倍数。一个简要的单远未涵盖所有密码结构的列表包括1、Diffie-Hellman密钥交换在一有限域F中取一元素g并在F中计算一个随机幂。这里k是一个整数。
2、椭圆曲线DH密钥交换在一条定义在一个有限域上的椭圆曲线上的点构成的群E(F)中取一个点P并且计算随机倍数kP。这里k可以是一个整数,也可以是一个更一般的群E(F)的自同态。
3、DSS与ECDSS数字签名标准(DSS)(使用一个有限域或一条椭圆曲线)在算法签名部分中要求一个随机幂gk或倍数kP。验证过程也要求一个幂或倍数,但k是指定值,而不是随机值。
4、经典ElGamal公钥密码体制ElGamal密钥生成要求计算一个幂β=αj来形成秘密钥,其中α是一个固定底,j是一个随机选取的指数。加密需要计算两个幂αk和βk,其中k是一个随机选取的指数。解密需要计算一个幂γj。
5、椭圆曲线ElGamal及其各种变形密钥生成需要计算一个倍数Q=jP来形成秘密钥,其中P是E(F)中的一个固定点,j是一个随机选取的乘子。加密要求计算两个倍数kP和kQ,其中k是一个随机选取的乘子。解密需要计算一个倍数jR。同样,k可以是一个整数,也可以是一个更一般的群E(F)的自同态。
6、NTRU公钥密码体制私钥包括模q截尾多项式环Rq=(Z/qZ)[X]/(XN-1)中的一个随机多项式f(X)。
加密需要在环R中计算一个乘积r(X)h(X),其中h(X)(公钥)是固定的,r(X)是随机的。解密需要在环R中计算一个乘积f(X)e(X),其中e(X)是密文。
本发明的一实施例对一种一般方法进行了说明,该方法在许多情形下可使随机倍数的计算比用前述方法更快。尽管它不是广泛适用的,但它可用于上述列表中的许多算法,包括Galois域 上的Diffie-Hellman,Koblitz曲线上的椭圆曲线密码技术,以及NTRU密码体制。按照本发明,随机指数或乘子被表示为数个因子的乘积,每个因子在展开成某快速运算的幂的和时具有低Hamming权。
简言之,按照本发明,随机乘子被表示为数项的乘积,每一项是相对容易计算的几个项的和。这些乘子被称作小Hamming权乘积(SHWP),因为乘积中的每一项都有低Hamming权对应易于计算的运算。
低Hamming权指数低Hamming权指数的应用在RSA取幂(C.H.Lim等人所著“稀疏RSA钥及其生成”(Sparse RSA keys and their generation),preprint,2000)和在离散对数算法(D.Coppersmith等人所著“论某些二次剩余码的最小距离”(On the Minimum Distance of some QuadraticResidue Codes),IEEE Transactions on Information Theory,vol.IT 30,No.2,March 1984,407-411;D.R.Stinson所著“某些用于低Hamming权离散对数问题的小步、大步算法”(Some baby-step giant-stepalgorithms for the low Hamming weight discrete logarithm problem),Mathematics of Computation,to be published)中都进行了研究,但总是局限于取单一的一个具有低Hamming权的指数k。本发明使用数个Hamming权非常低的指数的乘积k=k1k2…kr,并且利用了这样一个事实,即乘积k的样本空间大体是各k1,k2,…,kf的样本空间的乘积空间,同时计算αk的计算复杂性(在某些情况下)等于计算 的计算复杂性之和。
计算xk的常规二进制法需要进行约log2k次平方和HW(k)次乘法,其中HW(k)=的Hamming权是k的二进制展开中1的个数。尽管对非常大的k值难以找到优化链,但加法链的使用通常能实现一定的改进。
C.P.Schnorr在其论文中提出了一种通过预计算一列幂、取一随机子集的乘积并且利用中间计算逐步补充该列幂来计算随机幂的思想(C.P.Schnorr所著“智能卡的有效识别和签名”(Efficientidentification and signatures for smart cards),in Advances inCryptology(Crypto 89),Santa Barbara,CA,August 1989,LectureNotes in Computer Science 435,(G.Brassard,ed.),Springer-Verlag,Berlin,1989,239-252)。Schnorr方法被de Rooij在Schnorr建议的参数水平上所否定(P.de Rooij所著“论采用预处理的Schnorr方案的安全性”(On the security of the Schnorr scheme using preprocessing),in Advances in Cryptology(Eurocrypt 90),Aarhus,Denmark,May1990,Lecture Notes in Computer Science 473(I.B.Damgard,ed.),Springer-Verlag,Berlin,1990,71-80)。
在前述Knuth的论文第4.6.3节第463页与练习3中,Knuth简要讨论了另一种方法——因子法。
就许多应用而言,本发明改进了那些现有技术方法。例如,在一实施例中,k是一个乘积k=uv,并且按本发明,z=xk按y=xu和z=yv来计算。这一过程可以重复进行并且可以间插二进制法或其它加法链的应用。
为说明本发明的另一实施例,令G是一个要在其中计算量xk的群。假设指数k被表示为乘积的和k=Σi=1dki=Σi=1dΠn=1NiKi,n----(1)]]>按乘积 计算xk,对ki=ΠnKi,n]]>利用因子法计算每个幂xk(i),并且利用(所述)二进制法计算每个幂yk(i,n)(K(i,n)=Ki,n)。这需要大约log2(k)次平方以及大约 k取小值时,可以要求分解方程(1)使方程(2)最小。k取较大的值时,可以要求一个算法使方程(2)的值适当小。然而,这不是本发明的重点所在。
本发明之方法的目标和分析都与前述Knuth论文所述的取幂有显著的区别。Knuth的目标是要说明对给定指数k,计算xk的有效方法。随后的分析给出了最有效方法的理论上、下界以及取一给定k值并找出估计xk的合理有效方法的算法。现在的目标是要找出使xk易于计算的指数k的一个集合并且该集合要充分“随机”且充分大。从具体的指数到随机指数这一看起来似乎微小的改变,实际上体现了所隐藏的问题及研究这些问题所使用的方法上的重大转变。
本发明与Knuth论文中所述的因子法的区别还有另外一个重要方面。本发明着眼于存在“自由”运算的情况。举例来说,若G是一个群并希望利用因子法来计算xk,其中k=uv。计算xk的计算量约为(log2(k)次平方)+(HW(u)+HW(v)次乘法)。为简便计,在此假定利用二进制法计算两个幂y=xu和z=yv。假设(有限)群G的阶数为N,并且假设k表示为一个乘积模N,即k=uv(modN)。那么由y=xu和z=yv将计算出正确值z=xk,但现在的计算量约为(log2(uv)次平方)+(HW(u)+HW(v)次乘法)。
如果平方和乘法占用大约相同的时间,那么由于乘积uv将非常大,这一方法将可能非常差。
另一方面,如果平方运算非常快,例如在Galois域 中,那么只要u和v具有小(二进制)Hamming权,u和v的大值可能是有益的。例如,这可从密码专业的三种情况来加以说明,即Galois域 中的取幂、Koblittz椭圆曲线上的乘法和NTRU卷积环Fq[X]/(XN-1)中的乘法。这些具体情况将在下文中进行详细说明。下文还将讨论关于小Hamming权乘积的一些观点。所属技术领域的专业人员将了解本发明并能够将其用于其它许多应用中。
Galois域 中的随机幂在任何群中,计算一个幂αk的标准方法是使用k的二进制展开。它将αk的计算化简至约log2(k)次平方和HW(k)次乘法,其中HW(k)平均约等于log2(k)。(在增加逆运算的前提下,利用k的带符号二进制展开将进一步减少乘法的次数。)二进制幂算法适用于任何群,但本发明在 中所利用的特征在于相对于乘法,平方是本质自由的。因此,如果k在1至2n-1之间随机取值,那么αk的计算由需要的约n/2次乘法所决定。
如上所述,存在许多密码情形,其中人们需要对一固定底α和某个随机选取的指数k来计算αk。通常有这样的一项要求,即k取值的集合要充分大,大到即使利用穷举搜索(或更一般地,利用平方根搜索,如Pollard穷尽法)也不能确定k。因此,假定选取k具有如下形式k=Σi=0n-1ki·2i,ki∈{0,1},]]>并且具有一个固定的二进制Hamming权d=∑ki。那么k的搜索空间的大小是C(n,d)。由于执行时间通常与搜索空间大小的平方根成比例,因此人们一般要求该空间有至少2160个元素。关于在正比于 的时间内有效搜索该空间的Coppersmith小步大步算法的说明,请参见前面引用的Stinson的论文。
在密码应用中,n的典型值是n≈1000,它是由在 上求解离散对数问题的筛法和指数算法的执行时间限定的。因此,取d=25,对应的搜索空间大小为C(1000,25)≈2165,并且αk的计算需要24次乘法。
本发明的方法是要选取k,使其成为数个具有非常低二进制Hamming权的项的乘积。(更一般地,将k表示为这种乘积的和。)以上述值n≈1000为例进行说明,设k具有形式k=k(1)k(2)k(3),其中k(1)的二进制Hamming权为6,k(2)与k(3)的二进制Hamming权都是7。那么,k的搜索空间(三个因子的搜索空间的乘积)阶数为(C(1000,6)C(1000,7)C(1000,7))≈2165,同时αk=((αk(1))k(2))k(3)的计算需要仅5+6+6=17次乘法。这意味着节省约29%。
由于标准平方根搜索攻击将时间减少至O(280)(参见前面引用的Stinson论文),因此,要求搜索空间的阶数较佳约为2160。然而,如果k是数个低Hamming权多项式的乘积,那么人们并不明确如何在全空间上建立一个平方根攻击。因此,如果k=k(1)k(2)k(3),则可以搜索(猜测)前两项,然后对第三项利用平方根攻击。由αk=β求k的另一方法是将k(3)移到另一侧。这样,让i遍取值于所有乘积k(1)k(2)的空间,j遍取值于所有k(3)值的空间,并且制作αi值表和 值表,其中j-1是j模2n-1的逆。那么,执行时间正比于两表大小之和。在上面给出的实例中,可得到执行时间正比于(C(1000,6)C(1000,7))+C(1000,7)≈2107.7的结果。但从这一搜索方法的特点可以看出,它更适合k(3)比k(1)和k(2)显著大的情况。因此,如果选取k(1)、k(2)、k(3)分别具有Hamming权2、2、11,那么,第一次平方根攻击用时O(280.0),第二次平方根攻击用时O(284.3),同时αk的计算需要仅12次乘法。利用形如±pe(1)±…±pe(r)的乘子,上述讨论可以类似地用于有pn个元素的域。
Koblitz椭圆曲线上的随机倍数设 是定义在有2m个元素的域上的椭圆曲线,P∈E(F2m)]]>是该曲线上的一个点。许多密码结构都要求倍数NP的计算,其中N与2m可比较。将N表示为二进制形式N=N0+2N1+4N2+…+2iNi+…+2mNm,N0,…,Nm∈{0,1},则NP的计算被化简为约N/2次加倍运算和N/2次点加法。如前所述,如果N0,…,Nm∈{-1,0,1},则可进一步将加法次数减少至约N/3。但遗憾的是,在椭圆曲线上,一个点加倍比两个不同点相加更难计算。
对于某些椭圆曲线,利用本质自由的Frobenius映射代替加倍来显著减少必要的计算是可能的。设E/F2是一条“Koblitz曲线”,即定义在有2个元素的域上的普通椭圆曲线。-因此,E是两曲线之一的Ey2+xy=x3+ax2+1,a∈F2。设τ:E(F2m)→E(F2m);]]>τ(x,y)=(x2,y2)是E上的Frobenius映射。与E上的点加法或加倍相比,τ(Q)的计算占用非常少的时间。任何一个整数N都可以表示一个线性组合N=N0+τN1+τ2N2+…+τiNi+…+τmNm,N0,…,Nm∈{-1,0,1},因此,NP的计算本质上可以减少至 中的m/3次加法。(诸Ni中大约m/3个不为0。)而且对许多密码应用来说,没有什么真正的理由必须使用P的整数倍数;人们可以简单地使用倍数NP,其中N是τ的幂的随机线性组合,如上式。例如,Diffie-Hellman密钥交换就非常成功。关于Koblitz曲线上的基本实质和计算方法,请参考D.Hankerson等人所著“二进制域椭圆曲线密码术的软件实现”(Software implementation of elliptic curve cryptography overbinary fields,in Cryptographic Hardware and Embedded Systems(CHES 2000),C.Koc and C.Paar(eds.),Lecture Notes in ComputerScience,Springer-Verlag(to be published))及J.Bolinas所著“Koblitz曲线上的有效算术”(Efficient arithmetic on Koblitz curves,Designs,Codes,and Cryptography 19(2000),195-249)。
总之, 上的椭圆曲线上的点的随机带符号τ积的计算需要约m/3次椭圆曲线加法。本发明提供了一种显著减少椭圆曲线加法次数的方法。如上面所讨论的,根据本发明,将乘子N取作数个τ的低Hamming权线性组合的乘积。
具体来说,我们将以密码专业一个具体的域为例进行说明。设m=163,则问题将在域 下进行讨论。取N具有如下形式N=N(1)N(2)N(3)=(1+Σu=16±τiu)(1+Σu=16±τju)(1+Σu=16±τku)----(4)]]>(由于总是能从每个因子摘出一个τ的幂,因此我们在表达式(4)中取每个因子。利用这一表达式可以防止计数过高。)首先,给定Q=NP,检查对N或其它满足N’P=Q的其它整数N’进行一次搜索的困难程度。一次N’的平方根搜索(如Pollard穷尽搜索)大致需要 步。利用N的特殊表示形式的另一种搜索会将方程Q=NP化成(N(3))-1Q=N(1)N(2)P,并比较两侧的值表。这种搜索的时间和空间要求两表较长者的长度。对于本例,每个N(i)取值的空间的大小为26C(162,6)≈240.4,因此N(1))N(2)P的值表有O(280)个元素。最后,需要猜测N(1)与N(2)的值,并且要对N(3)进行一次平方根搜索,但这会产生一个较大的搜索空间。
以上述形式取N的好处是显而易见的。乘积
NP=N(1)N(2)N(3)P的计算需要仅6+6+6=18次椭圆曲线加法。(减法本质上与加法相同。)它还需要多次使用Frobenius映射τ的幂,但这些与点加法相比占用非常少的时间,因此可以在粗分析中加以忽略。由此看出,利用本发明之方法,常用的密码倍数NP可以利用18次加法计算出来,远小于利用以前的方法所需要的约163/3≈54次。因此,本发明提高速度3倍。
对所有N进行会合攻击是不可能的,但即使存在这样的攻击,也足以通过以Hamming权(8,9,9)代替上述的权(6,6,6)得到一个阶数为2163.9的三元组N(1),N(2),N(3)的集合来对抗。此时,NP的计算需要26次加法,相应的速度增加因数约为2.1。实际上,在此情况下使用四项的乘积将会更快N=N(1)N(2)N(3)N(4),权为(4,5,7,8)。这样一来,总搜索空间的大小为24C(162,4)·25C(162,5)·27C(162,7)·28C(162,8)≈2160.48并且NP的计算需要仅24次加法,速度增加因数约为2.26。
另外,可选择将N取为小Hamming权项乘积的和。例如,N=N(1)N(2)+N(3)N(4),四项都有小Hamming权。当然,通过aP的值与Q-bP的值的匹配,可用平方根攻击算法攻击N的两个部分。
另外,还可选择N是一个实际的整数而不是τ的多项式。因此,可能包括共轭项。例如,形如τi+τm-i的表示代表一个整数,并且计算并存储τi+τm-i(1≤i<m/2)的值表是一项简单的事情。
NTRU公钥密码体制NTRU公钥密码体制采用环R=(Z/qZ)[X]/(XN-1)中的截尾多项式。加密过程包括一个乘积r(X)h(X)的计算,其中h(X)是一个固定的公钥多项式,r(X)是一个随机选取的小系数多项式。类似地,解密过程包括一个乘积f(X)e(X)的计算,其中e(X)是密文,私钥f(X)是一个小系数多项式。有关的详细说明,请参考前面引用的Hoffstein(1998)文。
通常,在环R中a(X)b(X)的计算是a和b的系数向量的卷积。计算该卷积的朴素算法有N2步,每一步由一次加法和一次乘法构成。(如果a(X)的系数随机分布于{-1,0,1},那么该计算将需要约2N/3步,此时每一步仅是一次加法或一次减法。)其它方法,如Karatsuba倍数或FFT技术(若适用),可以将其减少至O(N logN)步,尽管在一定程度上大O常数可能稍大。
于是,根据本发明,h(x)的小随机倍数可按乘积r(1)(X)r(2)(X)…r(t)(X)h(X);来计算,其中每个r(i)(X)仅有几个非零项。因此,需要的计算量正比于非零项个数之和,同时样本空间的大小约等于r(i)的样本空间的乘积。
例如,设N=251并取r(X)=r(1)(X)r(2)(X)其中r(1)和r(2)是恰有8个非零系数(四个1和四个-1)的多项式。为避免太多的重复,可取r(i)(0)=1,这样就只有三个1是随机置放的。那么,这种r(X)多项式的个数约为C(250,3)C(247,4)·C(250,3)C(247,4)·≈295.94。如果要推测r(1)(X),然后利用平方根搜索法来搜索r(2)(X),那么搜索算法的长度将大约为C(250,3)C(247,4)·C(250,3)C(247,4)·1/2≈271.1.]]>乘积r(X)h(X)的计算将简化至16N次加法和减法。注意到r(x)本身有大约64个非零系数,因此r(X)h(X)的直接计算需要几乎4倍的初等运算次数。
类似的结构也适用于NTRU私钥f(X),并导出类似的解密计算速度提高情况。小Hamming权乘积的随机性许多测量随机性的方法为所属技术领域的专业人员所熟知。具体来说,设BN(D)={有D个1的N-1次二进制多项式}。也就是说,BN(D)的元素是多项式a0+a1X+a2X2+…+aN-1XN-1其中ai∈{0,1},∑ai=D。如上所述,多项式相乘使用卷积规则XN=1。
多项式的乘积遵守系数自然旋转(通过乘以X的幂)。换句话,
任何乘积都可以表示为a(X)*b(X)=(Xk*a(X))*(XN-k*b(X))这种旋转远不是随机的,因此通常不希望在样本空间中有这种旋转。所以,令B*N(D)={a(X)=a0+a1X+…+aN-1XN-1∈BN(D);a0=1}是BN(D)的子集,其由常数项不为0的多项式构成。
将随机二进制多项式空间B*N(D)与乘积的空间P*N(d1,d2)={c(X)=a(X)*b(X)a(X)∈B*N(d1),b(X)∈B*N(d2),c(X)∈B*N(d1)相比较。请注意,我们现在仅考虑其乘积a(X)*b(X)是二进制多项式的a(X)和b(X)。实践中,这可能需要随机产生许多个对(a,b)、将它们相乘并且在乘积不是合适的形式时将之丢弃。
如何对乘积的集合P*N(d1,d2)与随机集合B*N(d1,d2)进行比较?通常,前一个集合将远小于后一个集合,使得B*N(d1,d2)的每个元素不会同等可能地被P*N(d1,d2)的一个元素击中。实验上,P*N(d1,d2)的元素一般可唯一表示为一个乘积。Hamming权差较佳用于确定P*N(d1,d2)的元素随机分布于空间B*N(d1,d2)中的广延度。对任意两个二进制多项式a(X)和b(X),它们的Hamming权差可定义为HWD(a,b)=#{iai≠bi}容易计算在B*N(D)中随机选取具有给定Hamming权差的对的概率。更准确地有,对任意固定的a∈B*N(D),如果不计已知的常数项,则有D-1个1和N-D个0。假设b∈B*N(D)有k个1与a的1对应位置相同,那么在a中为1而b中为0的有D-1-k个,在b中为1而a中为0的也有D-1-k个,因此,HWD(a,b)=2(D-1-k)。所以Hamming权差总是一个偶数,并且在a与b的1相对应的个数为D-1-h时,它等于2*h。对一固定的a∈B*N(D),随机取b∈B*N(D)使其与a的Hamming权差为2*h的概率由下式给出Probb∈B*N(D)(HWD(a,b)=2*h)=D-1D-1-hN-DhN-1D-1,----(5)]]>亦即,可能发生的次数除以全部多项式的个数。由于精确计算随机取b∈P*N(d1,d2)的类似概率更困难,故过去使用了计算机模拟。从集合B=B*251(64)和P=P*251(8,8)中随机取10,000个多项式,计算取自各个集合B×B、B×P与P×P的全部108个对(a,b)的Hamming权差的分布。计算结果列于表1中,表中包括由公式(5)给出的理论期望值。从该表明显可以看出,在所研究的各种情况的HWD(a,b)中不存在明显的差别。表1.Hamming权差概率Hamming 实验值理论值权差 B vs B B vs P P vs P B vs B68 0.002%0.002%0.002%0.002%70 0.006%0.006%0.006%0.006%72 0.019%0.019%0.020%0.019%74 0.057%0.057%0.058%0.057%76 0.155%0.155%0.158%0.155%78 0.380%0.380%0.381%0.379%80 0.841%0.843%0.841%0.841%82 1.692%1.691%1.688%1.691%84 3.079%3.082%3.074%3.080%86 5.072%5.071%5.063%5.072%88 7.542%7.539%7.537%7.545%90 10.121% 10.118% 10.123% 10.124%92 12.234% 12.228% 12.236% 12.229%94 13.265% 13.271% 13.287% 13.270%96 12.904% 12.901% 12.917% 12.901%98 11.209% 11.208% 11.200% 11.203%1008.660%8.657%8.653%8.658%1025.928%5.929%5.923%5.928%1043.578%3.58 1% 3.572%3.578%1061.889%1.891%1.888%1.892%1080.867%0.869%0.868%0.869%1100.343%0.343%0.345%0.344%1120.115%0.115%0.117%0.116%1140.032%0.033%0.033%0.033%1160.007%0.008%0.008%0.008%1180.001%0.001%0.001%0.001%
小Hamming权乘积的一个一般公式上述的所有结构都可以用一个环R、一个R-模M和一个满足下述两性质的子集SR进行非常一般性的公式化(i)集S充分大,(ii)对r∈S和m∈M,乘积r·m的计算是“计算容易的”。在某种程度上,这两个性质是相互对立的,这大概是由于集合S越大,对r∈S平均计算乘积r·m就越艰难。
构造集合S的一个方法是选择一族小子集S1,…,StR并且令S={r1…rt∶r1∈S1,…,rt∈St}在适当的假设下,集合S的大小约是集合S1,…,St的大小的乘积。每个Si都满足性质(ii)。
假设有一个元素τ∈R满足对每个m∈M,乘积r·m都容易计算。那么,Si较佳地从τ的低Hamming权多项式中选择;亦即,Si较佳地由R的形如τj1+τj2+…+τjd的元素组成,其中d=di固定(或对固定的Di,随机d≤Di)。当然,如果容易计算逆-m,那么可以利用±τj1±τj2±τj3±…±τjd来增加Si的大小。类似地,如果存在几个‘易乘’的元素τ1,…,τu∈R,那么可以取u个“变量”τ1,…,τu的低Hamming权多项式,以进一步增加特殊集合Si的大小。关于本一般公式与前面讨论的实例之间的关系,作如下说明1、 中的幂环R=Z,R-模为乘法群M=(F2n)*,]]>特殊映射τ是加倍(即平方)映射τ(α)=α2。
2、Koblitz曲线上的倍数环R=End(E(F2m))]]>(即 到自身的同态环),R-模为M=E(F2m),]]>特殊映射τ是Frobenius映射τ(x,y)=(x2,y2)。
3、NTRU密码体制环R=Z[X]/(XN-1),R-模为M=R(即R通过乘法作用到自身),特殊映射τ是‘X乘’映射τ(f(X))=Xf(X)。
这说明了小Hamming权乘积如何应用到这些特别情况,也说明了本发明的广泛适用性。
集合S的大小倾向于按如下方法进行量化,这里集合S是映射S1×S2×…×St→R,(r1,r2,…,rt)→r1r2…rt的像。实践中,描述具有下述性质的一个自然集合TR通常并不困难ST,以及S1×…×St的一个随机t-元组(r1,…,rt)击中T的每个元素的机会相同。(注严格证明T具有后一性质可能是困难的,但通常我们至少可以获得实验性证据。)设Ni=|Si|是集合Si的大小,M=|T|是集合T的大小,那么利用初等概率论,专业技术人员可以在随机替换选择T的N1N2…Nt个元素的情况下估计出不同元素的个数。
至此,已对本发明及其较佳实施例进行了详细说明。然而,人们应了解,根据本说明书,所属技术领域的专业人员可以在本发明的精神和范围内做各种修改及/或改良。与现有技术方法相比,本发明的方法显著提高了计算效率。需要强调的是,上面说明的方法仅是实例性的,不应被理解为本发明仅局限于一组具体的说明性实施例。
本文中列出的所有参考文献的整体揭示内容以引用的方式并入本文中。此外,公告中D.Gordon所著“快速取幂方法评述”(A surveyof fast exponentiation methods,Journal of Algorithms 27(1998),129-146)与D.Stinson所著“密码学理论与实践”(CryptographyTheory and Practice,CRC Press,1997)中揭示的内容也以引用的方式并入本文中。
权利要求
1.一种方法,该方法用于执行一种包括变换数字信息在内的密码运算,该方法包括提供数字信息;提供一个数字运算符,其含有一个取自大元素集的分量;将该分量分解成多个因子,每个因子具有一个低Hamming权;以及利用数字运算符变换数字信息。
2.根据权利要求1所述的方法,其中所述密码运算从密钥生成、加密、解密、数字签名的创建、数字签名的验证、数字证书的创建、数字证书的证明、识别、伪随机数生成及散列函数的计算所构成的组中选择。
3.根据权利要求1所述的方法,其中所述Hamming权约小于30。
4.根据权利要求1所述的方法,其中所述Hamming权约小于20。
5.根据权利要求1所述的方法,其中所述Hamming权约小于15。
6.根据权利要求1所述的方法,其中所述变换步骤包括计算倍数,所述方法进一步包括选择一个环R;选择一个R-模M;选择两个或多个R的子集R1,R2,…,Rk,其具有下述满足性质r1是R1中的一个元素,r2是R2中的一个元素,…,rk是Rk中的一个元素;计算r*m,其中r属于R,m属于M,其方法是将r分解为r1*r2*…*rk并计算r1*(r2*(…(rk*m),其中k是一个整数。
7.根据权利要求6所述的方法,其中所述密码运算从密钥生成、加密、解密、数字签名的创建、数字签名的验证、数字证书的创建、数字证书的证明、识别、伪随机数生成及散列函数的计算所构成的组中选择。
8.根据权利要求6所述的方法,其中每个rk具有一个约小于15的Hamming权。
9.根据权利要求6所述的方法,其中每个rk具有一个约小于10的Hamming权。
10.根据权利要求6所述的方法,其中所述子集Ri是R中形如a1te(1)+a2te(2)+…+ante(n)的元素所构成的子集,其中n是一个整数。
11.根据权利要求10所述的方法,其中所述元素a1,…,an每一个都取值于集合{0,1}。
12.根据权利要求10所述的方法,其中所述元素a1,…,an每一个都取值于集合{-1,0,1}。
13.根据权利要求6所述的方法,其中所述子集Ri是R中元素t1,…,tk的多项式构成的R的子集,其中多项式系数a1,…,ak取值于R的子集A,其中k是一个整数。
14.根据权利要求13所述的方法,其中所述元素a1,…,ak每一个都取值于集合{0,1}。
15.根据权利要求13所述的方法,其中所述元素a1,…,ak每一个都取值于集合{-1,0,1}
16.根据权利要求6所述的方法,其中所述环R是整数环,所述R-模M是pm个元素的域GF(pm)中非零元素构成的一个群,并且其中所述子集R1,…,Rk由形如a1pe(1)+a2pe(2)+…+anpe(n)的整数组成,其中n是一个小于m的整数,a1,…,an是集合{0,1}中的元素。
17.根据权利要求6所述的方法,其中所述环R是整数环,所述R-模M是pm个元素的域GF(pm)中非零元素构成的一个群,并且其中所述子集R1,…,Rk由形如a1pe(1)+a2pe(2)+…+anpe(n)的整数组成,其中n是一个小于m的整数,a1,…,an是一个整数小集合A中的元素。
18.根据权利要求6所述的方法,其中所述环R是一有限域GF(q)上的椭圆曲线E的一个点群E(GF(q))的一个自同态环。
19.根据权利要求6所述的方法,其中所述模M是一有限域GF(q)上的椭圆曲线E的一个点群E(GF(q))。
20.根据权利要求10所述的方法,其中所述环R是一特征p有限域GF(q)上的椭圆曲线E的一个点群E(GF(q))的一个自同态环,其中模M是一点群E(GF(q)),并且其中所述元素t是一个p-幂Frobenious映射。
21.根据权利要求10所述的方法,其中所述环R是一特征p有限域GF(q)上的椭圆曲线E的一个点群E(GF(q))的一个自同态环,所述模M是一点群E(GF(q)),并且其中所述元素t是一个点对分映射。
22.根据权利要求6所述的方法,其中所述环R是多项式模一理想的环A[X]/I,其中A是一个环,I是A[X]的一个理想,并且其中所述子集R1,…,Rk是有很少几个非零项的多项式集。
23.根据权利要求22所述的方法,其中所述理想I是由多项式XN-1生成的理想。
24.根据权利要求22所述的方法,其中所述环A是整数模q的一个有限环,其中q是一个正整数。
25.根据权利要求10所述的方法,其中所述环R是多项式模一理想的环A[X]/I,其中A是一个环,I是A[X]的一个理想,并且其中所述元素t是R中的多项式X。
26.根据权利要求25所述的方法,其中所述理想I是由多项式XN-1生成的理想。
27.根据权利要求25所述的方法,其中所述环A是整数模q的一个有限环,其中q是一个正整数。
28.一种含有说明资料的计算机可读介质,该介质用于一种包括变换数字信息在内的密码运算执行方法,该方法包括提供数字信息;提供一个数字运算符,其含有一个取自大元素集的分量;将该分量分解成多个因子,每个因子具有一个低Hamming权;以及利用所述数字运算符变换所述数字信息。
29.根据权利要求28所述的计算机可读介质,其包含一种方法的说明资料,该方法进一步包括选择一个环R;选择一个R-模M;选择两个或多个R的子集R1,R2,…,Rk,其具有下述满足性质r1是R1中的一个元素,r2是R2中的一个元素,…,rk是Rk中的一个元素;计算r*m,其中r属于R,m属于M,其方法是将r分解为r1*r2*…*rk并计算r1*(r2*(…(rk*m),其中k是一个整数。
30.根据权利要求29所述的计算机可读介质,其包含一种方法的说明资料,在该方法中,所述子集Ri是R中形如a1te(1)+a2te(2)+…+ante(n)的元素所构成的子集,其中n是一个整数。
31.根据权利要求29所述的计算机可读介质,其包含一种方法的说明资料,在该方法中,所述子集Ri是R中元素t1,…,tk的多项式构成的R的子集,其中多项式系数a1,…,ak取值于R的子集A,其中k是一个整数。
32.根据权利要求29所述的计算机可读介质,其包含一种方法的说明资料,在该方法中,所述环R是整数环,所述R-模M是pm个元素的域GF(pm)中非零元素构成的一个群,并且其中所述子集R1,…,Rk由形如a1pe(1)+a2pe(2)+…+anpe(n)的整数组成,其中n是一个小于m的整数,a1,…,an是集合{0,1}中的元素。
33.根据权利要求29所述的计算机可读介质,其包含一种方法的说明资料,在该方法中,所述环R是整数环,所述R-模M是pm个元素的域GF(pm)中非零元素构成的一个群,并且其中所述子集R1,…,Rk由形如a1pe(1)+a2pe(2)+…+anpe(n)的整数组成,其中n是一个小于m的整数,a1,…,an是一个整数小集合A中的元素。
34.根据权利要求29所述的计算机可读介质,其包含一种方法的说明资料,在该方法中,所述环R是一有限域GF(q)上的椭圆曲线E的一个点群E(GF(q))的一个自同态环。
35.根据权利要求29所述的计算机可读介质,其包含一种方法的说明资料,在该方法中,所述模M是一有限域GF(q)上的椭圆曲线E的一个点群E(GF(q))。
36.根据权利要求30所述的计算机可读介质,其包含一种方法的说明资料,在该方法中,所述环R是一特征p有限域GF(q)上的椭圆曲线E的一个点群E(GF(q))的一个自同态环,其中所述模M是点群E(GF(q)),并且其中所述元素t是一个p-幂Frobenious映射。
37.根据权利要求30所述的计算机可读介质,其包含一种方法的说明资料,在该方法中,所述环R是一特征p有限域GF(q)上的椭圆曲线E的一个点群E(GF(q))的一个自同态环,所述模M是点群E(GF(q)),并且其中所述元素t是一个点对分映射。
38.根据权利要求29所述的计算机可读介质,其包含一种方法的说明资料,在该方法中,所述环R是多项式模一理想的环A[X]/I,其中A是一个环,I是A[X]的一个理想,并且其中所述子集R1,…,Rk是有很少几个非零项的多项式集。
39.根据权利要求30所述的计算机可读介质,其包含一种方法的说明资料,在该方法中,所述环R是多项式模一理想的环A[X]/I,其中A是一个环,I是A[X]的一个理想,并且其中所述元素t是R中的多项式X。
全文摘要
一种执行包括变换数字信息在内的密码运算的方法。该方法提供了一个数字运算符,其一个分量从大的元素集合中取值。该分量被分解成多个因子,每个因子具有一个低Hamming权。数字信息利用该数字运算符来变换。计算机可读介质载有该方法的说明资料。
文档编号G06F7/72GK1471665SQ01817960
公开日2004年1月28日 申请日期2001年8月24日 优先权日2000年8月29日
发明者J·霍夫斯腾, J·H·西尔弗曼, J 霍夫斯腾, 西尔弗曼 申请人:Ntru保密系统公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1