用于检测一个键对和用于产生rsa键的方法和装置的制作方法

文档序号:2409713阅读:262来源:国知局
专利名称:用于检测一个键对和用于产生rsa键的方法和装置的制作方法
技术领域
本发明涉及RSA密码算法,尤其是涉及RSA键(key)的产生。RSA密码系统,于其发明人R.Rivest,A.Shamir以及L.Adleman之后被命名,是流行的公众键密码系统的一种。它可被用于获得保密以及产生数字签字。其安全性是基于所谓整数因子(factor)分解问题目前尚不能以有效的算法方式得到解决的事实。
背景技术
在详细处理RSA密码系统之前,首先应说明密码系统的一些基本项目。通常,在两个对称密码系统之间形成一差别,该两个系统也称为机密键加密系统和公众键加密系统。
具有使用两个对称键进行加密的双方的通信系统可被描述如下。第一方经由一机密信道传递其加密键至该第二方。第一方随后通过该键对该安全消息加密并经由一公众或无安全防护的信道传输该被加密的消息至该第二方。第二方随后通过使用经由该机密信道被传递至该第二方的对称键而对该被加密的消息解加密。此种加密系统的基本问题在于提供交换机密键的有效方式,例如,寻找一个机密信道的方式。
对应地,非对称加密法的执行如下。希望接收机密消息的一方传递其公众键至另外一方,即希望自其接收一个机密消息的一方。该公众键经一个非机密信道传递,亦即,经一个“公众(public)”信道传递。
希望传送一机密消息的一方接收另一方的公众键,使用该公众键对该消息加密,并再次经由一非机密信道,且因此,一个公众信道传输该被加密的消息至传送该公众键的一方。只有产生该公众键的一方能够具有对该被加密消息进行解加密的私人键。即使使用该公众键对消息加密的一方也不可能对该消息进行解加密。此方法的优点包括双方之间不需要机密信道,且因此没有键的机密交换。解加密消息的一方不需要也不必要知道消息接收的私人键。
非对称加密概念或公众键加密概念的物理模拟方式可描述如下。考虑一个带有经一个结合锁而保护的盖的金属盒。这种组合仅有希望接收一加密消息的对象知道。如果该锁维持开启且可让公众取用,任何希望传递一机密消息的人可以将其消息放置于该金属盒内并关闭其盖。只有后者的那方能够对该消息进行解加密,亦即,重新开启该金属盒。即使是放置该消息至该盒内的一方再也不能取得相同的消息。
非对称或公众键加密概念的本质是基础的数学问题,其解答几乎不可能使用解加密用的公众键,但其解答可轻易地知道私人键。最一般的公众键密码系统是RSA密码系统。RSA密码系统在Menezes,van Oorschot,Vanstone的由CRC出版社在1997年出版的“Handbook of AppliedCryptography”的第285-291页中描述。
第一个工作包含产生RSA密码系统的键。因此,请参考图3。接收一个加密消息的实体在步骤300中首先必须产生二个大质数p及q,其最好具有大约相等的量。之后,在步骤310,计算二质数的乘积,也称为模数(modulus)N。此外,计算欧勒(Euler)的φ函数,其等于(p-1)与(q-1)的乘积。在步骤320,选择一随机整数e,然后在e与φ的最大公约数(greast commondivisor)gcd为1的考虑下,使e大于1但小于φ,亦即,e与φ为相对的质数。之后,在步骤330,计算一数d使其符合以下程序e×d=1modφd也被称为相对于模数φ的倍数逆数(multiplicative inverse),通常使用展开的欧几里得算法计算,在“Handbook of Applied Cryptography”的第67页中也有描述。d因此为一个大于1但小于φ的独特整数,并因此符合预定的程序。
在步骤340,随后输出公众键,该公众键包含模数N及数字e。相反地,私人键并未被输出,但在步骤350中储存,以便于键产生实体已接收使用步骤340输出的公众键加密的消息时被用以解加密。
以下请参考图2以说明RSA算法。初始的情况是一通信方对一个必须由其它通信方解加密的消息M进行加密。加密实体首先必须在步骤200接收公众键(N,e)以便能够完全传送一加密的消息至该另一方。依此,在步骤210,加密方必须以整数M的形式描述将被加密的消息,M必须为从0至N-1的整数。在步骤220,其主要为加密步骤,此加密实体必须计算以下的程序C=Memod NC为加密的消息。此消息随后在步骤230被输出并经由一公众信道传输至此加密消息的接收端,图2指示的240。接收端在步骤250接收该加密的消息并在步骤260执行以下的计算,其主要为解加密步骤M=Cdmod N从图2可见只有公众键(N,e)是加密所需,而不是私人键d,而解加密需要私人键d。
现在的问题在于侵害者可以中断RSA密码系统。他知道私人键,亦即N及e。在与图3所示相同的方式中,他现在可能将模数N分解为二质数的乘积,而随后以相同的方式计算器密键d,如同其由键产生授权方所做。因此,该入侵者将必须尝试所有可能的质数对p’与q’,以便尽快或稍后获得在e的考虑下的私人键d。以小的质数p及q,此问题很容易地通过尝试法而被解答。然而,如果p及q,亦即p与q乘积的模数N,逐渐变大,模数N的分解的各种可能性增加至很大的程度。这是RSA系统安全性的基础。由此可见机密密码系统必须使用极长的数字,其长度可能为,例如,512,1024或甚至于2048位。
然而,随着质数p及q增加的长度,倍数逆数的计算,即如图3的步骤330中的私人键d,在时间上变得重要。因此,展开的欧几里德算法被使用,其所需的计算时间可能也以相关数字增加的长度而承受相当大小的级数。

发明内容
本发明的一个目的在于提供一种决定私人键的更有效率的方法。
此目的通过依据权利要求1的方法决定一个键对(key pair)、依据权利要求4的方法产生RSA加密键、依据权利要求5决定一个键对的装置、以及依据权利要求6产生一个RSA加密流程的键而达成。
本发明是基于在使用欧勒(Euler)的φ函数计算倍数逆数时,欧勒的φ函数的两个因子,即,(p-1)与(q-1),并非互质的发现。
这可以从质数皆为奇数得事实得知。如果从一个质数减去“1”,则产生一个偶数,因此这两个因子(p-1)与(q-1)因此不再互质,因为它们现在至少有一个共同的除数“2”。欧勒的算法因此必须相对于现有技术如图3所示地计算,使用数字(p-1)(q-1)的完整位长度,因此,此步骤在时间上变得重要。
依据本发明,倍数逆数不再使用欧勒的φ函数计算,而是使用Carmichael的λ函数。
Carmichaelλ函数的使用具有使计算倍数逆数的程序的右侧的两个因子为互质的效果,因此可使用中国余数理论(Chinese reminder theorem),也称为CRT(CRT=Chinese reminder theorem)。中国余数理论及Garner的算法在例如“Handbook of Applied Cryptography”的第68页及第612,613页有描述。然而,中国余数理论仅能于互质因子出现时使用。
在计算私人键时,亦即,倍数逆数,中国余数理论允许,取代具有完全位长度的计算,需要执行二个一半位长度的计算以及具有一半位长度的二计算的乘积的快速结合。
此程序的效用在于私人键的计算可以比现有技术的欧勒φ函数的使用的快上四倍。
本发明的优点包括,以相同的计算时间,现在可以使用较长的质数且RSA密码系统的安全性因此大幅增加。
相比之下,维持相同的安全性,现有技术中的标准,可在重要的时候获得相对于计算时间效率4的因子的加速,称为倍数逆数的计算。依据本发明所实施的密码处理器因此可造成效率上极大的贡献,例如,TMP模块(TPM=Trust Platform Module)或安全ICs。在另一实施例中,依据本发明的方法可被使用于智能卡中,其中,由于智能卡上受限的计算能力,通常在质数长度上做出妥协,因此对安全性妥协。以本发明的协助,安全性的标准可以大幅增加,而为持相同的计算时间。
由于二CRT项目可以被分开计算,此二CRT项目也可在二分离的算数单元中被并行计算且最后被结合在一起,因此,计算时间的进一步节省可通过平行实施而达成。


本发明的优选实施例将参照附图而加以说明,其中图1表示依据本发明的一个优选实施例的方块图;图2表示RSA算法的概述;以及图3表示RSA键产生的流程图。
具体实施例方式
图1表示依据本发明决定一个键对e,d的方法的一个优选实施例,其中首先产生两个质数p及q,依照惯例,二者被相乘,产生模数N。在步骤100选择第一键e。然而,对照现有技术,第二键不再使用欧勒的φ函数计算,而是使用Carmichael的λ函数。Carmichael的λ函数如下所述λ(N)=(p-1)(q-1)/ged(p-1,q-1)以下的关系维持Carmichael的λ函数Mλ(N)=1 mod N
第二键,亦即机密键d,随后基于已知的数据e,p及q而被计算e×d=1modλ(N)为解答以上程序,亦即为计算倍数逆数d,现在可以使用中国余数定理(CRT),因为这些因子(p-1)/gcd(p-1,q-1) 以及(q-1)现在互质。
通过中国余数定理,计算倍数逆数d的问题现在可被分离为二计算倍数逆数dp及dp的计算以及一结合步骤。
因此,dp首先被计算以便符合以下定义的方程式e×dp=1mod[(p-1)/gcd(p-1,q-1)]类似以上,可使用以下定义的程序计算dqe×dq=1mod(q-1)另一方式为互质因子也可在相反的方式中获得,称为(p-1)以及(q-1)/gcd(p-1,q-1)要指出的是,从CRT中所知,两个子键dp及dp是一半只要第二键d适合。
同时要指出的是图1的步骤110及120使用两个不同的子模数(sub-moduli)。步骤110中的第一子模数读取(p-1)/gcd(p-1,q-1)步骤120中的子模数仅读取(q-1)可以看见由于gcd函数因使两个子模数是相对的质数,所以CRT将成功。此两个子键dp及dp随后在步骤130中使用中国余数定理(CRT)被结合,以便因而产生第二或私人键d。
因此,首先计算一辅助的量xp,其由以下的程序定义xp=(dp-dp)×[(q-1)-1mod(p-1)/gcd(p-q,q-1)]mod(p-1)/gcd(p-1,q-1)以上引号中的倍数逆数及gcd计算使用一半长度被执行,其具有使这些步骤较少时间重要性的效果。
第二键或私人键d随后产生如下d=dp+xp×(q-1)modλ(N)要指出的是以上程序中的以模数λ(N)的模数下降不需要再被执行,因为d已经在余数类别中而不需要缩减。
当本发明为RSA键产生而被使用时,后者改善时间的复杂度,因为倍数逆数的计算,通过展开的欧几里德算法,只在关于模数N时需要以一半位长度而被执行。通过中国余数定理的机密键d的计算相较于不使用中国余数定理的情况快因子4,因为,取代计算键对e及d的欧勒φ函数的使用,Carmichael的λ函数被使用,同样可代表两个互质因子的乘积,其随后建立中国余数定理的两个子模数。
应指出的是依据本发明的概念不能仅为RSA键产生而使用,但使用于所有达到一个数量的倍数逆数的计算,具有包含不互质的两个或更多因子的模数的情况中。Carmichael的λ函数在所有时间将具有相对于一个模数的倍数逆数可使用中国余数定理而被获得的效果,当现在出现可被当成子模数使用的互质因子。
参考标号表100选择e110计算dp120计算dp130决定d200接收公众键210将消息表示为数字220计算C230输出C240信道250接收C260计算M300产生p,q310计算N320选择e330计算d340输出公众键350储存私人键
权利要求
1.一种决定一个数字对的方法,该数字对包括一个第一数(e)和一个第二数(d),该第二数(d)为相对于该第一数(e)的一个模数(N)的倍数逆数,该模数(N)等于一个第一质数(p)与一个第二质数(q)的乘积,该方法包括以下步骤选择该第一数(e);计算该第二数(d)的一个第一子数(dp)做为该第一数(e)的相对于一个第二子模数的一个倍数逆数,该第二子模数等于该第一质数(p)减去1之后再除以该第一质数(p)减1与该第二质数(q)减1的最大公约数;计算该第二数的一个第二子数(dq)做为该第一数(e)的相对于一个第一子模数的一个倍数逆数,该第一子模数等于该第二质数减1,该第一子模数与该第二子模数互质;以及通过中国余数定理使用该第一子数(dp)和该第二子数(dp)决定该第二数(d)。
2.按照权利要求1所述的方法,其特征在于该第一数(e)及该第二数(d)为一个键对,一个键(e)做为一个非对称加密系统的一个公众键,而一个第二键(d)做为该系统的一个私人键。
3.按照权利要求1或2所述的方法,其特征在于计算该第一子数(dp)的步骤和计算该第二子数(dq)的步骤使用展开的欧几里德算法。
4.按照前述权利要求的任一项所述的方法,其特征在于决定步骤(130)使用以下程序xp=(dp-dp)×[(q-1)-1mod(p-1)/gcd(p-q,q-1)]mod(p-1)/gcd(p-1,q-1)d=dp+xp×(q-1)modλ(N)其中,dp为第一子数;dq为第二子数;q为第一质数;p为第二质数;gcd表示“最大公约数”的运算;mod表示模数运算;xp为辅助量。
5.一种产生RSA加密系统的键的方法,包括步骤选择两个质数(p,q);计算该两个质数的乘积(N);依据权利要求1决定一个数字对;输出所述质数的乘积及该数字对的第一数以做为公众键;以及储存该第二数(d)做为私人键。
6.一种决定一个数字对的装置,该数字对包括一个第一数(e)和一个第二数(d),该第二数(d)为相对于该第一数(e)的一个模数(N)的倍数逆数,该模数(N)等于一个第一质数(p)与一个第二质数(q)的乘积,该装置包括一个装置,用以选择该第一数(e);一个装置,用以计算该第二数(d)的一个第一子数(dp)做为该第一数(e)的相对于一个第一子模数的一个倍数逆数,该第一子模数等于该第一质数(p)减去1之后再除以该第一质数(p)减1与该第二质数(q)减1的最大公约数;一个装置,用以计算该第二数的一个第二子数(dq)做为该第一数(e)的相对于一个第二子模数的一倍数逆数,该第二子模数等于该第二质数减1,该第一子模数与该第二子模数互质;以及一个装置,采用中国余数定理使用该第一子数(dp)及该第二子数(dp)决定该第二数(d)。
7.一种产生RSA加密系统的键的装置,包括一个装置,用以选择两个质数(p,q);一个装置,用以计算该两个质数的乘积(N);一装置,用以依据权利要求6决定一个数字对;一装置,用以输出该乘积及该数字对的第一数以做为公众键;以及一装置,用以储存该第二数(d)做为私人键。
全文摘要
本发明涉及用于检测一个键对和用于产生RSA键的方法和装置。本发明的方法用于检测一个数字对,其中包括一个第一数和一个第二数。根据本发明的方法,该第一数被选择(100)为一个加密系统的第一键,该第二数为该系统的第二键,且该第二数为相对于该第一数的一个模数的倍数逆数,该模数等于一个第一质数与一个第二质数的乘积。计算该第二数(d)的一个第一子数(d
文档编号G09C1/00GK1483260SQ01819912
公开日2004年3月17日 申请日期2001年12月6日 优先权日2000年12月12日
发明者J·-P·塞费特, J -P 塞费特 申请人:因芬尼昂技术股份公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1