加密的方法和装置的制作方法

文档序号:6554945阅读:303来源:国知局
专利名称:加密的方法和装置的制作方法
技术领域
本发明涉及一种加密的方法和装置。
背景技术
由于电子商务的不断增加的重要性,以加密和特征方案(signaturescheme)形式的加密方法开始广泛流行。这些方法一般借助于电子装置来实现,所述电子装置可以包括例如可编程的通用微型控制器,或者是专用的电子电路,例如ASIC形式的电子电路。一种加密装置的特别感兴趣的加密形式是智能卡,因为如果在技术上设计得当,其可以保护密钥数据防止进行未被允许的访问。一直努力致力于改善加密方法的执行速度,以及保护它们免遭各种可能的攻击方案。本发明尤其适用于和智能卡结合使用,但是并不限于此。本发明可以和各种加密装置结合来实施。
在许多已知的加密方法中,需要按照下式进行模的取幂(modularexponentiation)E=xd(mod N)=xd(mod p.q) (1)其中p和q是素数(prime number)。一种包括模的取幂步骤的特别重要的加密方法是RSA方法,该方法例如可以由Alfred J.MeneZes,Paul C.vanOorschot和Scott A.Vanstone,“Handbook of Applide Cryptography”BocaRatonCRC Press,1997,pages 285-291得知。不过,模的取幂的使用不限于RSA方法,还包括例如从Menezes et al.,ibid.,pages 438-442得知的Rabin特征,以及从Menezes et al.ibid.,pages 408-410得知的Fiat-Shamir识别方案。
包括模的取幂的加密方法的安全性经常取决于由公式(1)把数N因子分解成其素数因数(prime factor)p和q的难度。这个问题只有对大的值N才具有足够的复杂性,因此,在一方面,应当选择尽可能大的数N。在另一方面,借助于按照公式(1)的模的取幂计算所述的值的计算二作随着N的数量的增大而单调地增加,因此,从实际应用的观点看来,尽管N取大的值,但是同时希望把所需的计算时间限制在可接受的值。
已知为了应用被称为“中国余数定理”来4倍提高计算速度,该定理例如使得在相等的计算时间内能够有较大的值N。直接代替公式(1),按照下式进行变换E=xd(mod p.q)=aE1+bE2(mod N)(2)其中E1=xd(mod p) (3)E2=xd(mod q) (4)应用中国余数定理的一个结果是,所述模的取幂不再对模N进行计算,即不再以对模(modulo)该隐藏其自身的素数的因子分解的数进行计算,而是在这种计算规则中预先假定连续地第一步计算模p和第二步计算模q,即对素因子分解的认识n=p.q,以便保持秘密,并导致把总的计算过程分解成第一计算步骤(3),其主要涉及第一素数因数,和第二计算步骤(4),其主要涉及第二素数因数。其优点在于,必须对模φ(p.q)规定在公式(1)中的指数d,而必须只对模φ(p)或φ(q)规定在公式(2)中的指数,其中φ表示欧拉函数。
感兴趣的是,对这种使用模的取幂的加密方法的一种攻击(attack)方案最近已经成为已知的,通过所述方案,只要具体的执行利用按照公式(2)到(4)所示的中国余数定理,借助于在未扰乱的计算序列中的合适的人工指令,关于N的素因子因子分解的信息可以从扰乱的模的取幂的有缺陷的结果恢复。这种被称为“贝利克攻击”的试图例如在Dan Boneh,RichardA.DeMillo和Richard J.Lipton“On the importance of checkingcryptographic protocols for faults,”Advances inCryptology-EUROCRYPT,97,Lecture Notes in Cpmputer Science1233,BerlinSpringer,1997中描述了。一种加密装置由物理指令操纵,例如增加时钟速度、操作电压或照射,使得在按照中国余数定理执行模的取幂时以某个不是太大的几率发生计算错误。如果只在公式(2)中的两项中的一项发生计算错误,则两个素数因数p和q可以由错误的取幂结果重构。
由所述利用中国余数定理执行的模的取幂的弱点得出的结果是,在其被进一步处理之前,尤其是在以某种形式例如以特征(signature)的形式输出之前,首先检查计算操作结果的正确性。
对于“贝利克攻击”的一种价值不大的对策是借助于至少一次重复所述计算操作来实现这种正确性检查。在随机计算错误的情况下,可以假定,第一计算操作的结果偏离检查计算操作的结果。这种方法的主要缺点在于,通过一次检查计算,计算时间已经被加倍。
文件WO-A-98/52319具体地披露了一种方法,用于保护按照中国余数定理执行的模的取幂的计算操作防止“贝利克攻击。例如从
的范围内选择一个秘密的整数j,其中16≤k≤32。然后计算下式v1=x(mod j.q) (5)V2=x(mod j.q) (6)d1=d(mod(j.p)) (7)d2=d(mod(j.p)) (8)w1=V1d1(mod j.q)(9)w2=v1d2(mod j.q)(10)然后检查是否其保持w1=w2(mod j) (11)如果式(11)可以被证实,则用已知的方法计算下式y1=w1(mod p) (12)y2=w2(mod q) (13)由此借助于中国余数定理便可以确定E=xd(mod N) (14)这种已知的方法和简单的检查计算操作相比的优点在于,所需的附加的计算时间被大大降低了。
在这种方法中,两个素数p和q必须乘以同一因数d。文件WO-A1-98/52319披露了第二种方法,其允许素数p和q乘以不同的因数r和s。不过,对于检查计算,两个另外的取幂是可能的。

发明内容
本发明的问题在于提供一种加密方法和装置,所述方法和装置节省计算操作或计算时间,同时保持或者增加安全性。
这个问题通过具有按照权利要求1或2所述的特征的一种加密方法并通过具有权利要求13或14所述的特征的一种加密装置解决了。
从属权利要求3到12以及15到24表示一些有利的发展。
具体实施例方式
如上所述,如果在模的取幂中的模数具有许多前置的(leading)二进制模数,使得不同的因数r和s表示其中的某个优点,则对于某些算术和逻辑单元是有利的。此外,具有一些对于模的取幂优化的算术和逻辑单元,但是从中央处理单元向只有用于取幂的优化的算术和逻辑单元的数据传递引起可观的额外开销。本发明和上述的利用不同的因数r和s的方法相比,省去了一次取幂。
按照本发明,例如从范围
的范围内选择2个整数r和s,其中16≤k≤32,使得d对于φ(kgV(r,s))相对地是一个素数,其中kgV(r,s)是r和s的最小公倍数,s和φ()是欧拉函数。此时,计算下式x1=x(mod p.r) (15)x2=x(mod q.s) (16)d_1=d(mod(p.r)) (15)d_2=d(mod(q.s)) (16)z1=x1d_1(mod p.r) (15)z2=x2d_2(mod q.s) (16)现在,保持z1=x1d(mod p.r),z2=x2d(mod q.s)。按照中国余数定理,利用下式可以容易地由z1和z2计算出一个数zz=z1(mod p.r);z=z2(mod q.s);z=xd(mod p.q.kgV(r.s))(17)按照本发明,数r和s必须这样选择,使得d对于φ(kgV(r,s))相对地是一个素数。在这些情况下,可以使用扩展的欧拉算法,从而利用下式容易地求出一个自然数ee.d=1(mod(kgV(r.s))(18)借助于Z和e,按照下式计算数CC=ze(mod kgV(r.s)) (19)按照欧拉定理,有C=zd.e=x(mod kgV(r.s)) (20)通过比较两个值C和x模kg(r,s),可以以高的概率确定错误。如果确定C x(mod kgV(r.s)),则模的取幂的结果便被认为是错误的并被丢弃。
在RSA方法(像在拉比特征方案中一样)中,要进行模的取幂,以便产生数字特征或进行解密,以此使模p.q和指数d只依赖于私人密钥。其结果是,数d,e,r和s可以在所述私人密钥积分时被计算一次,并被存储,以供再用。
在本发明的改型中,例如在
的范围内选择2个整数r和s,其中16≤k≤32。在二进制的算术和逻辑单元的情况下,建议数r和s是奇数。此外,在间隔[1,...,r-1]和[1,...,s-1]内选择两个固定的数b1和b2,其不依赖于x,并分别相对于r和s是素数。如果r和s相对地不是素数,则b1和b2必须满足附加的条件b1=b2(mod ggT(r,s)),其中ggT(r,s)代表r和s的最大公约数。
按照中国余数定理,首先利用下式计算数x1X1=x(mod p).x1=b1(mod r) (21)同样按照下式计算x2X2=x(mod q).x2=b2(mod s) (22)然后,计算下式d_1=d(mod(p))(23)d_2=d(mod(q))(24)z1=x1d_1mod(p.r)(25)z1=x1d_1mod(q.s)(26)C1=b2d_1(mod.r) (27)C2=b2d_2(mod.s) (28)为了节省计算时间,在分别进行以φ(r)和φ(s)对模的取幂之前,可以还原式(27)和(28)中的指数d_1和d_2。
从式(23)和(25)有z1=xd(mod p)(29)从(24)和(26)有z2=xd(mod q)(30)按照中国余数定理,由z1和z2可以容易地计算数zz=z1(mod p.r);z=z2(mod q.s); (31)即使r和s相对地不是素数,所述数z也是存在的,这是因为z1=C1=b1d_1=b2d_2=C2=z2(mod ggAT(r,s))。因为p和q相对地是素数,由式(29)、(30)和(31)有z=xd(mod p.q) (32)因此,由上述计算的值可以容易地确定所求的数z。
由式(21)、(25)和(27)有z1=C1(mod r) (33)由式(22)、(26)和(28)有z2=C2(mod s) (34)通过检查条件(33)和(34),可以以高的几率确定错误。如果条件(33)或(34)中的一个被破坏,则模的取幂的结果被认为是错误的,因而被丢弃。
按照文件WO-A1-98/52319的权利要求8所述的方法,数b1和b2不依赖于其中所述的方法的改型中的底数x。当应用RSA方法或拉比特征方法时,私人密钥一般被集中在曾经被使用过若干次的加密装置例如智能卡中。在这些方法中应用的模的取幂中,指数d和模数p.q是私人密钥的固定元素。因而,值C1和C2在加密装置中进行密钥积分时必须只计算一次,并且然后可以被存储在所述装置中。和文件WO-A1-98/52319所述的方法相比,存储这些值使得节省两次模的取幂运算。
在通常的实施例中,一种具有用于加快模的算法的附加的硬件的加密装置,例如智能卡,含有快速的加法与/或乘法单元,同时通常的标准的方法必须进行在模的还原中所需的由一个长的数的除法,例如由Donald Knuth“The Art of Computer Programming,”Volume 2SeminumericalAlgorithms,2ndEd.,Addison-Wesley,1981得知的。用于简化除法操作的若干已知的方法之一是在取幂之前由数r乘模数p,使得乘积p.r的二进制表示包含尽可能多的数,例如见Menezes et al.,ibid.,pages 598-599。由一个尽可能多超前的数去除比由一般的数去除简单得多。
按照本发明,选择乘数r,使得d对于φ(r)相对地是素数。在上述的本发明的改型中,不需要这种相对的素数性。对于每个模数p,具有一个取决于除法的特定技术实现的最佳的乘数ropt。如果r的选择的值略小于优化的值,则乘积p.r仍然含有足够超前的数,从而使得除法能够简单地进行。按高的机率,数d对于至少一个值φ(ropt-i)相对地是素数,其中I=1,...,k,其中k是依赖于实施的一个小的数。
如果不是这种情况,则使r被2i.r代替,其中2I根据实施是一个2的合适的幂。
因而,对于第二个素数因数q可以应用同样的代替。因为可以选择乘数r(对于p),和s(对于q)彼此独立,对于乘数s可以同样进行相应的选择。
权利要求
1.一种加密的方法,a)具有包含模的取幂E的至少一个计算步骤E=xd(mod p.q),其中具有第一素数因数p,第二素数因数q,指数d和底数x,以此b)为进行模的取幂,选择两个自然数r和s,条件是,d对于φ(kgV(r,s))相对地是一个素数,并以此执行以下的计算步骤x1=x(mod p.r)x2=x(mod q.s)d_1=d(modφ(p.r))d_2=d(modφ(q.s))z1=x1d_1(mod p.r)z2=x2d_2(mod q.s)其中(φ.)是欧拉函数,kgV(r,s)是r和s的最小公倍数,c)然后按照中国余数定理由z1和z2计算数zz=z1(mod p.r);z=z2(mod q.s);d)通过还原Z模p.q,计算取幂的结果E,e)在一个检查步骤中检查先前计算的数z因而检查结果E的计算错误,f)所述检查步骤包括下面的计算操作f1)借助于扩展的欧拉算法,计算具有特性e.d=1的最小的可能的自然数e,f2)计算值C=ze(mod kgV(r.s)),f3)比较值x和C模kgV(r,s),以此如果x≠C(mod(kgV(r,s)),则模的取幂E的结果作为错误的被丢弃。
2.一种加密方法a)具有包含模的取幂E的至少一个计算步骤E=xd(mod p.q),其中具有第一素数因数p,第二素数因数q,指数d和底数x,以此b)为进行模的取幂,在间隔[1,...,r-1]和[1,...,s-1]内分别选择两个自然数r和s,以及两个数b1和b2,所述b1和b2对于r和s相对地是素数,并且以此使b1和b2满足条件b1=b2(mod ggT(r,s),其中ggT(r,s)代表r和s的最大公约数,c)利用两个数b1和b2按照中国余数定理计算满足下式的x1,x2x1=x(mod p),x1=b1(mod r)x2=x(mod q),x2=b2(mod s)并进行以下计算步骤d_1=d(modφ(p))d_2=d(modφ(q))z1=x1d_1(mod p.r)z2=x2d_2(mod q.s)其中(φ.)是欧拉函数,kgV(r,s)是r和s的最小公倍数,d)然后按照中国余数定理由z1和z2计算数zz=z1(mod p.r);z=z2(modq.s);e)通过还原z模p.q,计算取幂的结果E,f)在一个检查步骤中检查先前计算的数z(因而自动地也是结果E)的计算错误,g)所述检查步骤包括下面的计算操作g1)计算数C1=b1d_1(mod.r)C2=b1d_2(mod.s)其中d_1,d_2在进行以φ(r)和φ(s)对模的取幂之前分别被还原,g2)比较z1和C1模r以及z2和C2模s,以此如果保持C1≠z1mod r,或者C2≠z2mod s,则模的取幂E的结果作为错误的被丢弃。
3.如权利要求2所述的加密方法,其特征在于,所述数r和s是奇数。
4.如权利要求1-3中的任何一个所述的加密方法,其特征在于,其中的数r和s在
的范围内选择,其中16≤k≤32。
5.如权利要求1-4中的任何一个所述的加密方法,其特征在于,其中所述的数r和s中的至少一个这样选择,使得乘积p.r或q.s的二进制表示含有尽可能多的前置的数(leading ones)。
6.如权利要求1-5中的任何一个所述的加密方法,其特征在于,其中所述的两个数r和s这样选择,使得乘积p.r或q.s的二进制表示含有尽可能多的前置的数。
7.如权利要求5和6之一所述的加密方法,其特征在于,a)在第一个分步骤,不受d对于φ(kgV(r,s))相对地是素数这个条件的限制,对于数r和s中的至少一个分别首先选择相应的最佳数ropt和sopt,以及b)在第二个分步骤中,选择相邻的值r=ropt-i和s=sopt-i,i=0,1,...,k,使得d对于φ(kgV(r,s))相对地是素数。
8.如权利要求5和6之一所述的加密方法,其特征在于,a)在第一个分步骤,不受d对于φ(kgV(r,s))相对地是素数这个条件的限制,对于数r和s中的每一个分别选择相应的最佳数ropt和sopt,以及b)在第二个分步骤中,选择值r=21,ropts=21sopt,1=0,1,...,j,使得d对于φ(kgV(r,s))相对地是素数。
9.如权利要求5和6之一所述的加密方法,其特征在于,a)在第一个分步骤,不受d对于φ(kgV(r,s))相对地是素数这个条件的限制,首先选择数ropt和sopt中的至少一个,在第二个分步骤中,选择相邻的值r=ropt-i和s=sopt-i,i=0,1,...,k,使得如果对于i=0,1,...,k这种值存在,则d对于φ(kgV(r,s))相对地是素数,以及c)在第三分步骤,这样选择值r=21ropt,s=21sopt,1=0,1,...,j,使得如果在第二个分步骤中未选择所述的值,则d对于φ(kgV(r,s))相对地是素数。
10.如上述任何一个权利要求所述的加密方法,其特征在于,其包括RSA方法。
11.如上述任何一个权利要求所述的加密方法,其特征在于,其包括拉比特征方法。
12.如上述任何一个权利要求所述的加密方法,其特征在于,其包括Fiat-Shamir识别方法。
13.一种加密装置,a)具有至少一个取幂装置,用于执行一个包含模的取幂E的计算步骤,E=xd(mod p.q)其中具有第一素数因数p,第二素数因数q,指数d和底数x,以此b)为进行模的取幂,选择两个自然数r和s,条件是,d对于φ(kgV(r,s))相对地是一个素数,并以此执行以下的计算步骤x1=x(mod p.r)x2=x(mod q.s)d_1=d(modφ(p.r))d_2=d(modφ(q.s))z1=x1d_1(mod p.r)z2=x2d_2(mod q.s)其中(φ.)是欧拉函数,kgV(r,s)是r和s的最小公倍数,c)然后按照中国余数定理由z1和z2计算数zz=z1(mod p.r);z=z2(mod q.s);d)通过还原z模p.q,计算取幂的结果E,e)在一个检查步骤中检查先前计算的数z(因而也自动地是结果E)的计算错误,f)所述检查步骤包括下面的计算操作f1)借助于扩展的欧拉算法,计算具有特性e.d=1(mod kgV(r.s))的最小的可能的自然数e,f2)计算值C=ze(mod kgV(r.s)),f3)比较值x和C模kgV(r,s),以此如果x≠C(mod(kgV(r,s)),则模的取幂E的结果作为错误的被丢弃。
14.一种加密装置a)具有至少一个取幂装置,用于执行包含模的取幂E的至少一个计算步骤E=xd(mod p.q),其中具有第一素数因数p,第二素数因数q,指数d和底数x,以此b)为进行模的取幂,在间隔[1,...,r-1]和[1,...,s-1]内分别选择两个自然数r和s,以及两个数b1和b2,所述b1和b2对于r和s相对地是素数,并且以此使b1和b2满足条件b1=b2(mod ggT(r,s),其中ggT(r,s)代表r和s的最大公约数,c)利用两个数b1和b2按照中国余数定理计算满足下式的x1,x2x1=x(mod p), x1=b1(mod r)x2=x(mod q), x2=b2(mod s)并进行以下计算步骤d_1=d(modφ(p))d_2=d(modφ(q))z1=x1d_1(mod p.r)z2=x2d_2(mod q.s)其中(φ.)是欧拉函数,kgV(r,s)是r和s的最小公倍数,d)然后按照中国余数定理由z1和z2计算数zz=z1(mod p.r);z=z2(modq.s);e)通过还原z模p.q,计算取幂的结果E,f)在一个检查步骤中检查先前计算的数z(因而自动地也是结果E)的计算错误,h)所述检查步骤包括下面的计算操作g1)计算数C1=b1d_1(mod.r)C2=b1d-2(mod.s)其中d_1,d_2在进行以φ(r)φ(s)对模的取幂之前分别被还原,g2)比较值z1和C1模r以及z2和C2模s,以此如果保持C≠z1mod r,或者C2≠z2mod s,则模的取幂E的结果作为错误的被丢弃。
15.如权利要求14所述的加密装置,其特征在于,所述数r和s是奇数。
16.如权利要求13-15中的任何一个所述的加密装置,其特征在于,其中的数r和s在
的范围内选择,其中16≤k≤32。
17.如权利要求13-16中的任何一个所述的加密装置,其特征在于,其中所述的数r和s中的至少一个这样选择,使得乘积p.r或q.s的二进制表示含有尽可能多的前置的数。
18.如权利要求13-17中的任何一个所述的加密装置,其特征在于,其中所述的两个数r和s这样选择,使得乘积p.r或q.s的二进制表示含有尽可能多的前置的数。
19.如权利要求17和18之一所述的加密装置,其特征在于,a)在第一个分步骤,不受d对于φ(kgV(r,s))相对地是素数这个条件的限制,对于数r和s中的至少一个分别首先选择相应的最佳数ropt和sopt,以及b)在第二个分步骤中,选择相邻的值r=ropt-i和s=sopt-i,i=0,1,...,k,使得d对于φ(kgV(r,s))相对地是素数。
20.如权利要求17和18之一所述的加密装置,其特征在于,a)在第一个分步骤,对于数r和s中的每一个分别选择相应的最佳数ropt和sopt,不受d对于φ(kgV(r,s))相对地是素数这个条件的限制,以及b)在第二个分步骤中,选择值r=21ropts=21sopt,1=0,1,...,j,使得d对于φ(kgV(r,s))相对地是素数。
21.如权利要求17和18之一所述的加密装置,其特征在于,a)在第一个分步骤,不受d对于φ(kgV(r,s))相对地是素数这个条件的限制,首先选择数ropt和sopt中的至少一个,b)在第二个分步骤中,选择相邻的值r=ropt-i和s=sopt-i,i=0,1,...,k,使得如果对于I=0,1,...,k这种值存在,则d对于φ(kgV(r,s))相对地是素数,以及c)在第三分步骤,这样选择值r=21ropt,s=21sopt,1=0,1,...,j,使得如果在第二个分步骤中未选择所述的值,则d对于φ(kgV(r,s))相对地是素数。
22.如上述任何一个权利要求所述的加密装置,其特征在于,其包括RSA方法。
23.如上述任何一个权利要求所述的加密装置,其特征在于,其包括拉比特征方法。
24.如上述任何一个权利要求所述的加密装置,其特征在于,其包括Fiat-Shamir识别方法。
全文摘要
本发明涉及一种加密方法,具有包含模的取幂E的至少一个计算步骤E=x
文档编号G06F7/72GK1429360SQ01809690
公开日2003年7月9日 申请日期2001年5月15日 优先权日2000年5月17日
发明者马丁·塞森 申请人:德国捷德有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1