使用rsa类型公开密钥加密算法的电子部件中的对策方法

文档序号:7845594阅读:223来源:国知局
专利名称:使用rsa类型公开密钥加密算法的电子部件中的对策方法
技术领域
本发明涉及电子部件的对策方法,该部件使用RSA类型的公开密钥加密算法。
在秘密的密钥密码术的传统模型中,希望利用非加密的信道通信的两人必须首先约定一个秘密的密钥K。加密函数和解密函数使用同一个密钥K。秘密的密钥加密系统的缺点是所说的系统要求在该两人之间在将任何加密的报文送经未保密的信道之前先要利用保密的信道进行密钥K的通信。实际上,通常是难以找到一个完全安全的通信信道的,尤其是分隔两人的距离遥远的情况下。安全的信道指的是这样一个信道,对于它是不可能查明或修改通过该信道中的信息的。这样的安全信道可以通过连接两个由所说的这两人所拥有的终端的电缆来实现的。
公开密钥加密术的概念是由Whitfield Diffie和MarfinHellman在1976年发明的。公开密钥加密术使得可能解决在非保密信道上密钥分布的问题。公开密钥加密求的原理包括使用一对密钥,即一个公开的加密密钥和一个秘密的解密密钥。要从公开的加密密钥利用计算来找到秘密的解密密钥必须是不可能的。希望将某一项信息传送给某人B的某人A使用该人B的公开加密密钥。只有该人B拥有和他的公开密钥相关联的秘密密钥。因此只有该人B能够对送给他的报文进行解密。
公开密钥加密术另一个优于秘密密钥加密术的优点是公开密钥加密术允许使用电子签名进行鉴别。
第一个公开密钥加密实施例是由Rivest、Shamir和Adleman在1977年提出的,他们发明了RSA加密系统。RSA的安全性是基于对由两个素数的乘积形成的大数进行因子分解的难度。从那以后,已提出了许多公开密钥加密系统,它们的安全性是基于不同的计算性问题(这样的清单是不可穷尽的)Merckle-Hellman的“背包法”(又称渐缩法)这个加密系统是基于子集和问题的难度;
-McEliece这个加密系统是基于代数编码理论。这是基于线性代码解码问题的;-ElGamal这个加密系统是基于在有限实体中离散对数的难度的;-椭圆曲线椭圆曲线加密系统构成了现有加密系统的一种修改以便将它们应用在椭圆曲线的场合。椭圆曲线加密系统的优点在于它们比起其它加密系统来需要较小的密钥。
RSA加密系统是最常使用的公开密钥加密系统。它可以用作加密方法或签名方法。RSA加密系统用在智能卡中作为它的某些用途。智能卡中可能的RSA应用是访问数据库、金融应用、或远距支付应用如像付费电视、汽油分配或支付公路过路费等。
RSA加密系统的原理如下。它可以分成三个不同的部分,即1)生成一对RSA密钥;2)将一个明码报文加密成加密的报文;和3)将加密的报文解密成明码报文。
第一部分是生成RSA密钥。每个用户按照下列包括5个步骤的方法产生一个RSA公开密钥和对应的秘密密钥1)生成两个同样规模的不同的素数p和q;2)计算n=pq和」=(p-1)(q-1);3)随机选择一个整数e,1<e<」,以使得pgcd(e,」)=1;4)计算唯一的整数d,1<d<」,使得e*d=1 mod」;5)公开密钥是(n,e);秘密密钥是d或(d,p,q)。
整数e和d分别叫做加密指数和解密指数,整数n叫做模数。
RSA密钥生成的第二部分包括将一个用m指明的明码报文利用一种算法加密成用c指明的加密报文,其中,1<m<n。方法如下计算c=m^e mod n。
RSA密钥生成的第三部分包括利用保密的解密指数d通过一种算法来解密。将加密的由c所指明的报文且1<c<n解密成由m指明的明码报文的算法如下计算m=c^d mod n。
前面所说明的RSA解密算法可以用两种方法来执行。这两种方法是用CRT的解密和不用CRT的解密。CRT是中国余数理论(ChineseRemainder Theorem)的缩写。用CRT的解密算法的优点是它在理论上要比不用CRT的解密算法快4倍。
不用CRT的解密算法包括如前面所述的计算m=c^d mod n。
用CRT的解密算法包括以下4步1)计算cp=c modulo p和cq=c modulo q2)计算dp=d modulo p-1和dq=d modulo q-13)计算mp=cp^dp modulo p和mq=cq^dq modulo q4)计算m=mp*q*(q^(-1)mod p)+mq*p*(p^(-1)mod q)为了实现在前面所述的计算方法中所需的按模取指数,存在一系列算法-叫做“乘方和乘”的算法;-增加链的算法;-带窗口的算法;-带符号表示的算法。
这个清单不是完全的。最简单和最常用的算法是乘方和乘的算法。乘方和乘的算法取数c、指数d和模数n作为输入。指数d以d=(d(t),d(t-1),d(0))来表示,这里(d(t),d(t-1),d(0))是d的二进制表示,d(t)是最高位,d(0)是最低位。例如,数5用二进制的表示是101,它是由5=1*2^2+0*2^1+1*2^0这一事实得来的。第一个1是最高位,最后的1是最低位。这个算法得出数m=c^d mod n作为输出。
乘方和乘的算法有下列三步1)将一整数变量A用值c初始化;2)对于从t-1到0的i,执行2a)以A*A mod n取代A;2b)如果d(i)=1,则用A*c mod n取代A;3)返回上面第1步。
在不用CRT的RSA解密的情况下,解密是如上面所述使用乘方和乘的算法实施的。因此在这种情况下,乘方和乘的算法要将加密的报文c、模n和解密指数d作为输入。
在用CRT的RSA解密的情况下,解密是如前面所述对用CRT的解密算法的第3步的执行两次使用乘方和乘的算法而实现的。第一次,算法将整数cp、模p和指数dp作为输入。第二次,算法将整数cq、模q和指数dq作为输入。
将这些运算在智能卡之内执行是有可能的,这些运算是由在智能卡上的微处理器执行的。已经证明在智能卡实现RSA类型的公开密钥加密算法是易于遭到包括差分电流消耗分析的攻击而使得有可能找到保密的解密密钥。这些攻击被称为DPA攻击,DPA是差分功率分析的(Differential Power Analysis)缩写。这些DPA攻击的原理是基于这一事实执行指令的微处理器的电流消耗按照被处理的数据而变化。
具体说,当一个指令在处理一个数据项时,其中某一特定比特是不变的而其它比特则能够变化,则与该指令相关的电流消耗的分析表明,根据某一特定比特取值为0或1,该指令的平均消耗并是不相同的。因此DPA类型的攻击使得有可能在执行加密算法期间得到由在卡上的微处理器所处理的中间数据的外加信息。这种外加信息在某些情况下使得有可能揭露解密算法的秘密参数,使得加密系统不安全。
在本文档的剩下部分将说明关于RSA解密算法的两种类型的DPA攻击。所说的第一种DPA攻击涉及不用CRT的RSA解密算法。所说的第二种攻击涉及用CRT的RSA解密算法。这两种攻击使得能够揭示秘密的解密指数d。因此它们严重损害了在智能卡上RSA实施的安全性。
第一种DPA攻击涉及不用CRT的RSA解密算法。这种攻击使得能够直接揭示秘密的指数d,也叫做秘密密钥。
攻击的第一步对N个不同的加密报文c(1),…c(N)记录下对应于执行前面所述的乘方和乘的算法的电流消耗。
为了使对攻击的说明更加清楚,首先说明一种方法,这种方法使得有可能得到秘密密钥d或其二进制表示(d(t),d(t-1),d(0))的d(t-1)位,这里d(t)是最高位,d(0)是最低位。然后给出该算法的说明,这个算法使得有可能找到d的值。
报文c(1)到c(N)是按照c^4 mod n的最低位的值而分组的,这里c表示报文c(1)到c(N)中之一。第一组包括报文c,使得c^4 mod n的最低位等于1。
第二组包括报文c,使所说位等于0。计算出对应于这两组中每一组的电流消耗的平均值,然后计算出这两个平均值之间的差异曲线。
如果d的d(t-1)位等于0,则前面所说明的指数算法计算出c^4mod n的值并存入存储器。这就是说,在智能卡中执行该算法时,卡上的微处理器将实际计算出c^4 mod n。在这种情况下,在一组报文中由微处理器所处理的数据项的最后一位总是等于1,而在另一组报文中所处理的数据项的最后位总是等于0。对应于每一组的电流消耗的平均值因而是不同的。因此在差异曲线的两个均值之间会出现一个电流消耗的差分峰值。
相反,如果d的d(t-1)位等于1,上述的指数算法并不计算c^4 modn的值。在智能卡执行该算法时,微处理器因而决不会处理数据项c^4mod n。因此不会出现消耗差分峰值。
因此这一方法使得可能确定d的d(t-1)位的值。
在下面段落中说明的算法是前述算法的通则。这使得可能确定秘密密钥的值。
该算法将N个报文c(1)到c(N)和RSA模n作为输入,并返回一个整数h作为输出。上述算法的各个步骤如下1)在变量h中置1,2)从t-1到1的i,执行下列各步2)1)按照c^(4*h)mod n最后一位的值将报文c(1)到c(N)分成两组;2)2)对两组中的每一组计算电流消耗均值;2)3)计算两个均值之间的差;2)4)如果该差显示消耗差分峰值,则计算h=h*2;否则执行h=h*2+1。
该算法的结果包含在变量h中。
前面的算法提供整数h使得d=2*h或d=2*h+1。为了得到d的值,只要测试两个可能的假设就已足够,这两个假设是d=2*h和d=2*h+1。因此,所说明的DPA类型的攻击使得有可能在不用CRT的情况下执行RSA解密算法时找出秘密密钥d。
对RSA解密算法的第二种可能的DPA攻击涉及到对如上所述的用CRT的解密算法的应用上。
所说的攻击是用选择的报文进行的并仅仅集中在用CRT解密算法的说明中的模数约简运算(第1步)上。
该攻击包括向卡发送正确选择的报文。P的二进制表示的大小为一整数k。因此这给出2^(k-1)<p<2^k。从而区别开了两种情况在第一情况中,2^(k-1)+2^(k-2)<p<2^k。
在第二情况中,2^(k-1)<p<2^(k-1)+2^(k-2)该方法包括让卡对报文c的第一组A解密以使c<2^(k-1)。这样cmodulo p的模数约简就正好给出整数c作为结果。还让卡对报文c的第二组B进行解密使在第一种情况下2^k<c<2^k+2^(k-2),而在第二种情况下2^(k-1)+2^(k-2)<c<2^k。在这两种情况下c modulo p的模数约简都给出c-p。这样该卡将处理数据项c-p。通过分析在A组中的报文和B组中的报文之间消耗的差异,前者的结果是c,后者的结果是c-p,就可能通过比较来确认所有必要的信息以使得有可能得到p。
这一段给出的方法使得有可能得到p的最低位。得到p的其余各位的方法是相似的。A组中的报文分成两类报文组A0,其报文的最后位等于0,和报文组A1,其报文的最后位等于1。对于组B进行同样的运算得到B0和B1。如果p的最低位等于1,则在组A0和B0之间消耗的差异将揭示一个消耗差分峰值,因为在组A0中结果的最后位等于0而在组B0中结果的最后位等于1。如果p的最低位等于0,则在两组间的均值消耗差异并不显示任何峰值。利用这一方法,可以确定p的最低位。利用相似的方法,p的各位可以相继被确定。
本发明的方法包括开发两种对策,使得有可能对付两种前面所说的DPA攻击(用CRT的攻击和不用CRT的攻击)。第一种对策方法包括执行modulo p*r和q*t的计算,r和t是随机数。第一种对策方法构成已经存在的一种方法的改进,该方法是由加密研究(CryptographyResearch)公司提交的专利申请WO 99/35782中提出的。在这一专利申请中,说明了一种使得有可能对付在RSA解密运算期间的DPA型攻击的方法。这一个方法的缺点是它需要使用整数除法,而这是在智能卡类型的可携带对象中难于实施的运算。第一种对策方法只包括加法和乘法运算。第二种对策方法包括使用中国余数理论(CRT)使得再结合成为随机的。
第一种对策方法包括在每次重新执行用CRT的解密算法时使用随机计算模数。它包括执行计算modulo p*r和q*t,这里r和t是随机数。
这一方法将报文c、解密指数d和安全参数s作为输入并包括下列8个步骤1)在0和2^s间取三个随机数r、t和u;2)计算p′=p*r和q′=q*t;3)用c+u*n取代c;4)计算cp=c modulo p′和cq=c modulo q′;5)计算dp=d modulo p-1和dq=d′modulo q-1;6)计算mp′=cp^dp modulo p′和mq′=cq^dq modulo q′;7)计算m=((mq-mp)*(p^(-1)mod q)mod q′)*p+mp;8)由m mod n取代m。
第一对策方法包括两个变型,涉及整数r和t的更新。第一变型在于按照前述方法,在每次重新执行解密算法时计算一对新的整数r和t。第二变型在于当每次重新执行解密算法时将计数器加1。当这一计数器达到一固定值T时,按照前述方法计算一对新的整数r和t,同时将计数器复位到0。在实际上,可以取T=16。
第一对策方法包括一个第三变型,该变型在对整数的运算规模受到限制时是有用的。这个第三变型包括以下步骤1)在0和2^s间取4个随机数r、t、u和v;2)计算p′=p*r和q′=q*t;3)计算cp=c modulo p′和cq=c modulo q′;4)由cp+u*p取代cp和由cq+v*q取代cq;5)计算dp=d′modulo p-1和dq=d′modulo q-1;6)计算mp′=cp^dp modulo p′和mq′=cq^dq modulo q′;7)计算m=(((mq-mp)*(p^(-1)mod q)mod q′)*p mod n)+mp modn;8)由m mod n取代m。
第一对策方法包括第4变型,使得有可能增加运算的安全性。在第4变型中,部分解密是利用中国余数算法实施modulo p和modulo q而部分解密是计算模n。该第4变型的优点在于攻击者不知道使用中国余数理论的再结合的输出。该第4变型包括下列步骤1)在0和2^s间取三个随机数r、t和u;
2)计算p′=p*r和q′=q*t;3)用c+u*n取代c;4)计算cp=c modulo p′和cq=c modulo q′;5)计算dp=d′modulo p-1和dq=d′modulo q-1;6)计算dp′=(dp-1)/2和dq′=(dq-1)/2;7)计算mp′=cp^dp′modulo p′和mq′=cq^dq modulo q′;8)计算m=((mq-mp)*(p^(-1)mod q)mod q′)*p+mp;9)由m^2*c mod n取代m。
这样,由于攻击者不知道相应于步骤7的利用中国余数理论的再结合的输出,攻击者就不能够对利用中国余数理论的再结合实施DPA攻击。
第二对策包括使用中国余数理论使再结合成为随机的。这种随机性质是由于使用了随机计算模数。这一对策包括将第一对策方法的步骤7和8由下列各步代替。整数p′的长度(按位计)是由k来表示的。
a)选择两个随机整数(a0,b0)使b0=a0-1,整数a0和b0的大小是k位;b)计算整数C=(mq-mp)*(p^(-1)mod q)mod q′;c)计算(c mod a0)=(C*p+cp)mod a0和(c mod b0)=(C*p+cp)mod b0;d)计算两个随机整数(a1,b1)使b1=a1-1,整数a1和b1的大小是k位;e)计算C=((c mod b0)-(c mod a0)mod b0);f)计算(c mod a1)=(C*a0+(c mod a0))mod a1和(c mod b1)=(C*a0+(c mod a0))mod b1;g)对于新的一对(a2,b2)重复步骤e和f,这里b2=a2-1,整数a2和b2的大小是k位。整数(a0,b0)和(a1,b1)分别由整数(a1,b1)和(a2,b2)取代;h)步骤g重复k次,k是一整数参数;i)对于整数对(a,b)=(2^k,2^k-1)重复步骤g;j)计算整数c1,其定义为c1=c mod 2^k,并计算整数ch,其定义为ch=((c mod 2^k-1)-(c mod 2^k))mod 2^k-1;k)计算签名c=ch*2^k+c1。
应用上述两种对策方法使得有可能保护在智能卡上的解密算法不受DPA类型的攻击。所提出的两种对策另外还是相互兼容的有可能将所述对策之一种或两种应用到RSA解密算法,也可应用第一对策的4种变型。
权利要求
1.由与终端相联系的电子微处理器所使用的对策方法,使得有可能不会通过执行某程序的微处理器的电流消耗而泄露有关秘密数据的信息,该程序包括在每次重新执行使用中国余数理论或CRT的解密算法时使用一随机计算模数,所说的方法包括执行计算modulo p*r和q*t,此处r和t是随机数,所说的方法将报文c、解密指数d和安全参数s作为输入,其特征在于它包括下列8个步骤1)在0和2^s间取三个随机数r、t和u;2)计算p′=p*r和q′=q*t;3)用c+u*n取代c;4)计算cp=c modulo p′和cq=c moduloq′;5)计算dp=d′modulo p-1和dq=d′modulo q-1;6)计算mp′=cp^dp modulo p′和mq′=cq^dq modulo q′;7)计算m=((mq-mp)*(p^(-1)mod q)mod q′)*p+mp;8)由m mod n取代m。
2.按照权利要求1的对策方法,其特征在于在每次重新执行算法时具有初值为0的计数器T被加1,整数r和t保持相同值直到计数器T到达一固定的限值L,然后当这一限值到达时确定一对新的整数r和p。
3.按照权利要求1的对策方法使得有可能保护使用中国余数理论或CRT的解密算法,所说的方法应用于当所处理的数据的大小被限制时的情况,其特征在于它包括下列步骤1)在0和2^s间取4个随机数r、t、u和v;2)计算p′=p*r和q′=q*t;3)计算cp=c modulo p′和cq=c modulo q′;4)由cp+u*p取代cp和由cq+v*q取代cq;5)计算dp=d′modulo p-1和dq=d′modulo q-1;6)计算mp′=cp^dp modulo p′和mq′=cq^dq modulo q′;7)计算m=(((mq-mp)*(p^(-1)mod q)mod q′)*p mod n)+mp modn;8)由m mod n取代m。
4.按照权利要求1的对策方法使得有可能保护使用中国余数理论或CRT的解密,所说的方法的特征在于计算首先进行modulo p和modulo q;还在于然后将计算modulo p和modulo q的结果使用中国余数理论收集在一起,还在于计算继续对公开模数n求模。
5.按照权利要求4的对策方法,其特征在于它包括下列9个步骤1)在0和2^s间取3个随机数r、t和u;2)计算p′=p*r和q′=q*t;3)用c+u*n取代c;4)计算cp=c modulo p′和cq=c modulo q′;5)计算dp=d′modulo p-1和dq=d′modulo q-1;6)计算dp′=(dp-1)/2和dq′=(dq-1)/2;7)计算mp′=cp^dp′modulo p′和mq′=cq^dq′modulo q′;8)计算m=((mq-mp)*(p^(-1)mod q)mod q′)*p+mp;9)由m^2*c mod n取代m。
6.按照权利要求1的对策方法,包括使得在每次重新执行使用中国余数理论的解密算法时让计算方式成为随机的,所说的对策方法包括用下列各步取代第一对策方法中的步骤7和8,整数p′的大小(以位数计)由k指明a)选择两个随机整数(a0,b0)使得b0=a0-1,整数a0和b0的大小是k位;b)计算整数C=(mq-mp)*(p^(-1)mod q)mod q′;c)计算(c mod a0)=(C*p+cp)mod a0和(c mod b0)=(C*p+cp)mod b0;d)计算两个随机整数(a1,b1)使b1=a1-1,整数a1和b1的大小是k位;e)计算C=((c mod b0)-(c mod a0))mod b0;f)计算(c mod a1)=(C*a0+(c mod a0))mod a1和(c mod b1)=(C*a0+(c mod a0))mod b1;g)对于新的一对(a2,b2),其中b2=a2-1,重复步骤5和6,整数a2和b2的大小是k位。整数(a0,b0)和(a1,b1)分别由整数(a1,b1)和(a2,b2)取代;h)步骤7被重复k次,k是个整数参数;i)对于整数对(a,b)=(2^k,2^k-1)重复步骤7;j)计算整数c1=c mod 2^k,并计算整数ch=((c mod 2^k-1)-(c mod 2^k))mod 2^k-1;k)计算签名c=ch*2^k+c1。
7.使用按照上述任何一项权利要求中的方法的电子部件,其特征在于它可以是智能卡。
全文摘要
本发明涉及使用RSA类型的公开密钥加密算法的电子部件中的对策方法。第一种对策方法包括对每次重新执行用CRT的解密算法时使用随机计算。计算是以modulo p*r和q*t进行的,r和t是随机数。第二种对策方法包括使用CRT理论使再结合成为随机的。
文档编号H04L9/30GK1411644SQ00817229
公开日2003年4月16日 申请日期2000年10月13日 优先权日1999年10月14日
发明者J·-S·科伦, P·帕耶 申请人:格姆普拉斯公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1