发明内容
本发明实施例中提供了一种攻击密钥的方法及装置,以解决现有方法中无法充分测试密钥安全性的问题。
为了解决上述技术问题,在第一方面,本发明实施例公开了一种攻击密钥的方法,包括以下步骤:
A、计算被攻击密钥的RSA中国剩余定理变形算法中,攻击明文M在不同取值区间时随机数引起变形部分发生进位操作的概率,分析并记录功耗曲线中与变形部分的运算操作对应的特性波形,所述特性波形在功耗曲线采样组中出现的概率根据所述引起变形部分发生进位操作的概率确定,所述功耗曲线为被攻击密钥进行密码运算的功耗曲线,所述功耗曲线采样组由有限次所述密码运算的功耗曲线组成,
所述取值区间由P和Q确定,包括:M小于P和Q的第一区间,M介于P和Q之间的第二区间,M大于P和Q的第三区间,其中,P和Q为RSA合数模N的两个素数因子,M与P和Q等长;
B、选取攻击明文M,使用公钥将M加密为密文,采用被攻击密钥对所述密文进行有限次密码运算,得到功耗曲线采样组,根据所述功耗曲线采样组中的所述特性波形和所述特性波形出现的概率判断M的取值区间;
C、根据判断得到的所述M的取值区间,逐步增大或减小M值,并得到每个M值对应的功耗曲线采样组,直至所述功耗曲线采样组中的特性波形发生变化,判断最后得到的M值是否在所述M的取值区间内且为素数,如果得到的M值是否在所述M的取值区间内且为素数,则攻击成功,否则,攻击失败,
其中,所述特性波形发生变化为所述功耗曲线采样组中出现M在其他取值区间时变形操作对应的特性波形,所述密码运算为标准RSA中国剩余定理变形算法解密运算或签名运算。
其中,所述随机数引起变形部分发生进位操作的概率根据所述随机数的进制确定。
可选的,所述的密钥攻击方法中,所述有限次密码运算为1000次密码运算。
可选的,所述的密钥攻击方法中,所述步骤B包括:
选取攻击明文M1,设置M1的所有比特位为0,得到M1对应的功耗曲线采样组S10;
选取攻击明文M2,设置M2的所有比特位为1,得到M2对应的功耗曲线采样组S11;
选取攻击明文M3,设置M3从高往低的第二个比特位为1,其余比特位为0,得到M3对应的功耗曲线采样组S20;
选取攻击明文M4,设置M4从高往低的第二个比特位为0,其余比特位为1,得到M4对应的功耗曲线采样组S21;对比S10和S11,以及对比S20和S21,得到所述特性波形和所述特性波形出现的概率,根据所述特性波形和所述特性波形出现的概率判断M3或M4的取值区间,以所述M3或M4的取值区间为所述M的取值区间。
可选的,所述的密钥攻击方法中,所述步骤C包括:
当M在第一区间或第二区间时,设置M的所有比特位为0后,从第t-1比特位至第1比特位,依次设置第i比特位为1,并得到当前M值对应的功耗曲线采样组,如所述功耗曲线采样组中的特性波形与所述步骤B中的特性波形相同,则保持第i比特位为1,否则,将第i比特位设为0,判断最后得到的M值是否在所述M的取值空间内且为素数,若最后得到的M值在所述M的取值空间内且为素数,则攻击成功,否则,攻击失败;
当M在第三区间时,设置M的所有比特位为1后,从第t-1比特位至第1比特位,依次设置第i比特位为0,并得到当前M值对应的功耗曲线采样组,如所述功耗曲线采样组中的特性波形与所述步骤B中的特性波形相同,则保持第i比特位为0,否则,将第i比特位设为1,判断最后得到的M值是否在所述M的取值空间内且为素数,若最后得到的M值在所述M的取值空间内且为素数,则攻击成功,否则,攻击失败,
其中,所述当前M值为当前所述第i比特位为1或0时对应的M值,i为整数,t为M的长度。
在第二方面,本发明实施例公开了一种攻击密钥的装置,包括:
特性波形分析单元,用于计算被攻击密钥的RSA中国剩余定理变形算法中,攻击明文M在不同取值区间时随机数引起变形部分发生进位操作的概率,以及分析并记录功耗曲线中与变形部分的运算操作对应的特性波形,所述特性波形在功耗曲线采样组中出现的概率根据所述引起变形部分发生进位操作的概率确定,所述功耗曲线为被攻击密钥进行密码运算的功耗曲线,所述功耗曲线采样组由有限次所述密码运算的功耗曲线组成
所述取值区间由P和Q确定,包括:M小于P和Q的第一区间,M介于P和Q之间的第二区间,M大于P和Q的第三区间,其中,P和Q为RSA合数模N的两个素数因子,M与P和Q等长;
功耗曲线获取单元,用于获取被攻击密钥对密文进行密码运算的功耗曲线,以及获取被攻击密钥对密文进行有限次密码运算的功耗曲线组;
区间判断单元,用于选取攻击明文M,使用公钥将M加密为密文,根据M对应的功耗曲线采样组中的特性波形和所述特性波形出现的概率判断M的取值区间;
攻击单元,根据所述区间判断单元得到的所述M的取值区间,逐步增大或减小M值,直至M值对应的功耗曲线采样组中的特性波形发生变化,判断最后得到的M值是否在所述M的取值区间内且为素数,若是,则攻击成功,否则,攻击失败,
其中,所述特性波形发生变化为所述功耗曲线采样组中出现M在其他取值区间时变形操作对应的特性波形,所述密码运算为标准RSA中国剩余定理变形算法解密运算或签名运算。
可选的,所述的密钥攻击装置中,所述有限次密码运算为1000次密码运算。
可选的,所述的密钥攻击装置中,所述特性波形分析单元包括:
进位概率计算子单元,用于计算被攻击密钥的RSA中国剩余定理变形算法中,攻击明文M在不同取值区间时随机数引起变形部分发生进位操作的概率;
特性波形记录子单元,用于分析并记录M在不同取值区间时功耗曲线中与变形部分的运算操作对应的特性波形,所述特性波形在功耗曲线采样组中出现的概率根据所述引起变形部分发生进位操作的概率确定。
可选的,所述的密钥攻击装置中,所述区间判断单元包括:
第一功耗曲线记录单元,用于选取攻击明文M1和攻击明文M2,设置M1的所有比特位为0,以及设置M2的所有比特位为1,使用公钥将M1和M2加密为密文,分别记录M1和M2对应的功耗曲线采样组S10和S11;
第二功耗曲线记录单元,用于选取攻击明文M3和攻击明文M4,设置M3从高往低的第二个比特位为1,其余比特位为0,以及设置M4从高往低的第二个比特位为0,其余比特位为1,使用公钥将M3和M4加密为密文,分别记录M3和M4对应的功耗曲线采样组S20和S21;
对比单元,用于对比S20和S10,以及对比S21和S11,得到所述特性波形和所述特性波形出现的概率,根据所述特性波形和所述特性波形出现的概率判断M3或M4的取值区间,以所述M3或M4的取值区间为所述M的取值区间。
可选的,所述的密钥攻击装置中,所述攻击单元包括:
循环单元,用于根据所述区间判断单元的结果,当M在第一区间或第二区间时,设置M的所有比特位为0后,从第t-1比特位至第1比特位,依次设置第i比特位为1,或者当M在第三区间时,设置M的所有比特位为1后,从第t-1比特位至第1比特位,依次设置第i比特位为0;
第一判断单元,用于判断所述循环单元中当前M值对应的功耗曲线采样组中的特性波形与所述区间判断单元中的特性波形是否相同,所述当前M值为所述循环单元中当前第i比特位为1或0时对应的M值;
M值记录单元,用于根据所述第一判断单元的结果设置第i位比特位的值,保持当前第i位比特位的值,否则,对当前第i位比特位的值取反;
第二判断单元,用于判断所述循环单元的循环结束后所述M值记录单元得到的M值是否在所述区间判断单元得到的M的取值空间内且为素数,若所述M值在所述区间判断单元得到的M的取值空间内且为素数,则攻击成功,否则,攻击失败,
其中,i为整数,t为M的长度。
由以上技术方案可见,本发明实施例提供的密钥攻击方法和装置,针对密钥变形算法中随机数引起的功耗曲线波形不规律情况,根据随机数进制和取值的限制以及P、Q大素数的特性,采用概率分析统计出攻击明文在P和Q确定的不同取值区间时功耗波形的大概率规律性,得到攻击明文在不同取值区间时的特性波形及特性波形出现的概率。攻击时,通过分析某一攻击明文的特性波形及特性波形出现的概率得到攻击明文的取值区间,然后逐步增大或缩小攻击明文,不断逼近区间边界值即P或Q值,直至特性波形发生变化,即区间跳跃,从而得到边界的P或Q值,完成攻击,由P或Q可以得到私钥的其他参数。因此利用本发明提供的密钥攻击方法和装置可以测试引入了随机数的RSA_CRT变形算法的安全性,弥补传统攻击方法和装置不能充分测试密钥安全性的不足。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
为更好的对本发明实施例所述的方法进行介绍,首先,对RSA_CRT变形算法进行简单描述。以现有芯片中1024比特的RSA算法为例,其中,N的长度为1024比特,P和Q为大素数,长度为512比特。为保证P和Q的长度,P和Q的最高两比特位必须为1。攻击明文M取值可以分为三个区间,设P>Q,则第一区间为M<Q<P、第二区间为Q<M<P、第三区间为M>P>Q。三个区间可以分别表示为:[1,Q)(第一区间)、[Q,P)(第二区间)和[P,(2^512)-1](第三区间)。
RSA_CRT变形算法中,引入随机数trng的变形方式有两种:
CRT(sp,sq)=((((sp+trng)-(sq+trng))*qinv)mod P)*Q+sq(第一种)和CRT(sp,sq)=(((sp+trng-sq-trng))*qinv)mod P)*Q+sq(第二种)。
第一种变形中(((sp+trng)-(sq+trng))*qinv)mod P可以进行如下变换:
由于sp=(C mod P)^dp=(((M^e)mod N)mod P)^dp=(M^(e*dp))mod P=M modP,sq=(C mod Q)^dq=(((M^e)mod N)mod Q)^dq=(M^(e*dq))mod Q=M mod Q
因此,(sp+trng)-(sq+trng)=(M mod P+trng)–(M mod Q+trng)。
针对采用上述RSA_CRT变形算法的密钥,为了对该密钥的安全性进行测试,第一方面,本发明实施例提供了一种密钥攻击方法,所述方法包括:
步骤S1000,分析和计算M在不同取值区间时trng引起RSA_CRT变形算法中变形部分发生进位的概率,以及变形操作对应的特性波形和所述特性波形出现的概率,所述变形操作为变形部分的运算操作。
首先,分析第一种变形的情况下M在不同取值区间时trng引起变形操作M mod P+trng、M mod Q+trng和(M mod P+trng)-(M mod Q+trng)发生进位的情况,及变形操作Mmod P+trng、M mod Q+trng和(M mod P+trng)-(M mod Q+trng)对应的特性波形和所述特性波形出现的概率:
(1)当M在第一区间时,M mod P+trng和M mod Q+trng相等,由于M mod P=M modQ=M,因此加上随机数trng后,如果trng引起变形操作进位,则M mod P+trng和M mod Q+trng会同时进位,如果trng不引起进位,则M mod P+trng和M mod Q+trng都不进位。是否引起变形操作进位取决于随机数trng的大小。
现有芯片运算操作的功耗曲线中,在M mod P+trng、M mod Q+trng和(M mod P+trng)-(M mod Q+trng)三段波形上,第三段(M mod P+trng)-(M mod Q+trng)的波形为执行一次减法。当不发生进位时,对M mod P+trng、M mod Q+trng和(M mod P+trng)-(M modQ+trng)执行的运算操作分别为一次加法、一次加法和一次减法,由于加法和减法的波形相似,因此三段运算过程在功耗曲线上呈现三个连续较短的波形;当发生进位时,M mod P+trng、M mod Q+trng执行的运算操作中还包括进位操作,因而使M mod P+trng、M mod Q+trng运算操作的波形变长,整个M mod P+trng、M mod Q+trng和(M mod P+trng)-(M mod Q+trng)三段运算的过程在功耗曲线上呈现出两长一短的波形。
由上可知,当M在第一区间时,RSA_CRT变形算法进行密码运算时的功耗曲线(以下简称功耗曲线)中,对应变形操作的部分仅会出现三个连续较短的波形和两长一短的波形两种情况。所述三个连续较短的波形和两长一短的波形即M在第一区间时变形操作对应的特性波形。如果选取一个攻击明文M,将攻击明文加密后,采用标准RSA_CRT解密运算或签名运算进行有限次运算,例如1000次运算,大量的功耗曲线将显示在功耗曲线的某一段(即对应于M mod P+trng、M mod Q+trng和(M mod P+trng)-(M mod Q+trng)的部分)仅出现三个连续较短的波形和两长一短的波形两种情况,则可以判断该攻击明文M在第一区间,即M<Q。此时按一定规律调整M值变大,使M逼近素数Q的值。得到Q值后,利用N/P获得第二个素数P,然后可以利用公钥e、N计算出dp、dq、qinv等RSA_CRT算法的所有私钥元素。
其中,有限次运算采用1000次运算,即可以获得足够大数量的功耗曲线组,有利于进行概率分析,同时过多的次数会加重采样和运算的负担,选择1000次是足够且较经济的运算次数。
(2)当M在第二区间时,P>M>Q,则M mod P=M>Q。由于Q为大素数,且最高两比特位为1,因此M的最高两比特也为1。由于现有芯片采取16进制取值的方式,因此trng的最高两比特位都为0的概率为2/16,相应地,M mod P+trng进位的概率为1-2/16,即14/16。同时,因为M mod Q=M-Q,所以M mod Q的值较小,M mod Q最高6比特的取值均为0,此时随机数trng最高两比特位取值为1的概率为2/16,所以M mod Q+trng不进位的概率为1-2/16,即14/16。当M mod P+trng发生进位时,对应的波形较长,而M mod Q+trng不进位,对应的波形短,由于M mod P+trng和M mod Q+trng的运算操作紧连,因而M mod P+trng和M mod Q+trng的运算操作在功耗曲线上呈现一长一短的波形,所述一长一短的波形即M在第二区间的特性波形,且该特性波形出现的概率为14/16*14/16=49/64。
由上可知,当M在第二区间时,RSA_CRT变形算法密码运算的功耗曲线在概率上有49/64的可能性会出现一长一短的波形,即M在第二区间是变形操作对应的特性波形。如果选取一个攻击明文M,将攻击明文加密后,采用标准RSA_CRT解密运算或签名运算进行有限次运算,例如1000次运算,大量的功耗曲线显示在功耗曲线的某一段(即对应于M mod P+trng、M mod Q+trng)有超过2/3的概率出现一长一短的波形,则可以判断该攻击明文M在第二区间,即Q<M<P。此时按一定规律调整M值变大,使M趋近素数P的值。得到P值后,利用N/Q获得第二个素数Q,然后可以利用公钥e、N计算出dp、dq、qinv等RSA_CRT算法的所有私钥元素。
M在第二区间时,由于M mod P+trng、M mod Q+trng对应的波形已有明显差异,因此可以不考虑(M mod P+trng)-(M mod Q+trng)对应的波形。
(3)当M在第三区间时,M mod P和M mod Q都较小,M mod P和M mod Q最高6比特的取值均为0。随机数trng最高前两个比特位取值为1的概率为2/16,则M mod P+trng和M modQ+trng不进位的概率为1-2/16,即14/16,若不进位,则M mod P+trng<M mod Q+trng,所以(M mod P+trng)–(M mod Q+trng)<0的概率为14/16,由于(M mod P+trng)–(M mod Q+trng)<0,操作上会产生借位,故对应的波形较长,因此,不进位时,M mod P+trng、M mod Q+trng和(M mod P+trng)–(M mod Q+trng)的运算操作在功耗曲线上呈现两短一长的波形,且该特性波形出现的概率为14/16。
由上可知,当M在第三区间时,RSA_CRT变形算法密码运算的功耗曲线在概率上有14/16的可能性会出现两短一长的波形,即M在第三区间时变性操作对应的特性波形。如果选取一个攻击明文M,将攻击明文加密后,采用标准RSA_CRT解密运算或签名运算进行有限次运算,例如1000次运算,大量的功耗曲线显示在功耗曲线的某一段(即对应于M mod P+trng、M mod Q+trng和(M mod P+trng)–(M mod Q+trng))有超过2/3的概率出现两短一长的波形,则可以判断该攻击明文M在第三区间,即M>P。此时按一定规律调整M值变小,使M趋近素数P的值。得到P值后,利用N/Q获得第二个素数Q,然后可以利用公钥e、N计算出dp、dq、qinv等RSA_CRT算法的所有私钥元素。
其次,在步骤S1000中,分析第二种变形,即CRT(sp,sq)=(((sp+trng-sq-trng))*qinv)mod P)*Q+sq的情况下,M在不同取值区间时,trng引起变形部分发生进位操作的概率,以及变形操作对应的特性波形和所述特性波形出现的概率。由于在第二种变形中,减去随机数的运算不发生进位,因此只针对sp+trng和sp+trng–sq进行分析即可。
(1)当M在第二区间时,Q<M<P,sp=M且M>Q,sp+trng=M+trng,由于Q为最高两比特位为1的素数,而trng最高两比特位取值为0的概率为2/16,因此sp+trng进位的概率为1-2/16,即14/16。由于第二种变形中发生进位时需要减去相应的mod数P来保持运算结果位数统一,因此sp+trng发生进位时其运算操作的波形较长。由于P和Q的最高两比特位为1,因此M在P和Q之间的取值空间不超过16进制取值的1/16,因而sp加上随机数trng进位后小于sq的概率也只有1/16,相应地,sp+trng>sq的概率为15/16。由于sp+trng>sq时,sp+trng-sq为一次减法,因此在功耗曲线上呈现较短的波形。由上分析可知,sp+trng和sp+trng–sq的运算操作过程在功耗曲线组中呈现一长一短的波形的概率为14/16*15/16=105/128,所述一长一短的波形即M在第二区间时变性操作对应的特性波形。
由上可知,第二种变形情况下,当M在第二区间时,RSA_CRT变形算法密码运算的功耗曲线在概率上有105/128的可能性会出现一长一短的波形,即M在第二区间时变形操作对应的特性波形。如果选取一个攻击明文M,将攻击明文加密后,采用标准RSA_CRT解密运算或签名运算进行有限次运算,例如1000次运算,大量的功耗曲线显示在功耗曲线的某一段(即对应于sp+trng和sp+trng–sq)有超过2/3的概率出现一长一短的波形,则可以判断该攻击明文M在第二区间,即Q<M<P。此时按一定规律调整M值变大,使M趋近素数P的值。得到P值后,利用N/Q获得第二个素数Q,然后可以利用公钥e、N计算出dp、dq、qinv等RSA_CRT算法的所有私钥元素。
(2)当M在第三区间时,由于P为最高两比特位为1的素数,因此sp最高两比特位均为0,加入的随机数最高两比特位位为1的概率为2/16,所以sp+trng发生进位的概率为1/8,不发生进位的概率为1-1/8,即7/8。相应地,由于M>P>Q,不发生进位时,sp+trng大于sq,因此sp+trng大于sq的概率为7/8,即sp+trng-sq>0的概率为7/8。此时sp+trng和sp+trng–sq的运算操作分别为一次加法和一次减法,sp+trng和sp+trng–sq的运算操作在功耗曲线上将呈现为两个连续较短的波形。
由上可知,在第二种变形情况下,当M在第三区间时,RSA_CRT变形算法密码运算的功耗曲线在概率上有7/8的可能性会出现两个连续较短的波形,即M在第三区间时变性操作对应的特性波形。如果选取一个攻击明文M,将攻击明文加密后,采用标准RSA_CRT解密运算或签名运算进行有限次运算,例如1000次运算,大量的功耗曲线显示在功耗曲线的某一段(即对应于sp+trng和sp+trng–sq的部分)有超过2/3的概率出现两个连续较短的波形,则可以判断该攻击明文M在第三区间,即M>P。此时按一定规律调整M值变小,使M趋近素数P的值。得到P值后,利用N/Q获得第二个素数Q,然后可以利用公钥e、N计算出dp、dq、qinv等RSA_CRT算法的所有私钥元素。
(3)当选取一个攻击明文M,将攻击明文加密后,采用标准RSA_CRT解密运算或签名运算进行有限次运算,例如1000次运算,功耗曲线组中未出现上述第二种变形情况下M在第二区间和M在第三区间时变形操作对应的特性波形,则可以判断该攻击明文M在第一区间,即M<Q。此时按一定规律调整M值变大,使M趋近素数Q的值。得到Q值后,利用N/Q获得第二个素数P,然后可以利用公钥e、N计算出dp、dq、qinv等RSA_CRT算法的所有私钥元素。
在分析和计算得到M在不同取值区间时,变形操作对应的特性波形和所述特性波形出现的概率后,执行密钥攻击程序流程。以下将以RSA的素数P、Q的长度为t的情况为例,说明密钥攻击程序流程,相应地,模数N的长度为2t,N=P*Q,所述流程步骤如下:
步骤S1100,设置攻击明文M长度为t;
步骤S1200,设置M的所有比特位为0,计算密文C=M^e mod N,将C输入至被攻击芯片进行标准RSA_CRT签名或解密操作,运行1000次,得到功耗曲线组S10;
步骤S1300,设置M的从高往低的第二位设置为1,其余位设置为0,计算C=M^e modN,把C的值输入被攻击芯片进行标准RSA_CRT签名或解密操作,得到功耗曲线组S20;
步骤S1400,设置M的所有比特位为1,计算密文C=M^e mod N,将C输入至被攻击芯片进行标准RSA_CRT签名或解密操作,运行1000次,得到功耗曲线组S11;
步骤S1500,设置M的从高往低的第二位设置为0,其余位设置为1,计算C=M^e modN,将C输入被攻击芯片进行标准RSA_CRT签名或解密操作,得到功耗曲线组S21;
步骤S1600,对比功耗曲线组S10和功耗曲线组S20,及对比功耗曲线组S11和功耗曲线组S21,从S20相对于S10的差异波形中,以及从S21相对于S11的差异波形中,分析出RSA_CRT变形运算功耗曲线组中的特性波形,以所述特性波形为参考特性波形,统计所述参考特性波形出现的概率,根据所述参考特性波形和所述参考特性波形出现的概率判断M的取值区间,具体为:
如果参考特性波形为三个连续较短的波形或者两长一短的波形,且两者在功耗曲线的同一段交替出现,则M在第一种变形情况下的第一区间,
如果特性波形为一长一短的波形,且特性波形出现的概率大于2/3,则M在第一种变形情况或第二种变形情况下的第二区间,
如果特性波形为两短一长的波形,且特性波形出现的概率大于2/3,则M在第一种变形情况下的第三区间,
如果特性波形为两个连续较短的波形,且特性波形出现的概率大于2/3,则M在第二种变形情况下的第三区间,
如果未出现以上所有情况的特性波形,则M在第二种变形情况下的第一区间;
步骤S1700,
若M在第一种变形或第二种变形情况下的第一区间或第二区间,则执行以下步骤S1701:
步骤S1701,设置M的所有比特位为0,当i从t-1到1,执行如下循环步骤S1702至步骤S1703:
步骤S1702,设置M的第i比特位为1,计算C=M^e mod N,将C输入被攻击芯片进行标准RSA_CRT签名或解密运算,得到功耗曲线组S3,
步骤S1703,判断S3的特性波形是否与参考特性波形相同,如果相同,则保持当前第i比特位为1,否则,将当前第i比特位取反为0,
若M在第一种变形或第二种变形情况下的第三区间,则执行以下步骤S1711:
步骤S1711,设置M的所有比特位为1,当i从t-1到1,执行如下循环步骤S1712至步骤S1713:
步骤S1712,设置M的第i比特位为0,计算C=M^e mod N,将C输入被攻击芯片进行标准RSA_CRT签名或解密运算,得到功耗曲线组S4,
步骤S1713,判断S4的特性波形是否与参考特性波形相同,如果相同,则保持当前第i比特位为0,否则,将当前第i比特位取反为1,
步骤S1800,步骤S1701或步骤S1711的循环过程结束,判断最后得到的M值是否在与参考特性波形对应的取值区间内且为素数,若是,则攻击成功,否则,攻击失败。
在步骤S1600中,对比功耗曲线组S10和功耗曲线组S20,及对比功耗曲线组S11和功耗曲线组S21,是以所有比特位全为0和所有比特位全为1的攻击明文的功耗曲线作为参考曲线,通常所有比特位全为0和所有比特位全为1的攻击明文更容易使功耗曲线中出现特性波形,从而可以通过对比S10和S20之间的差异,以及S11和S21之间的差异,识别出特性波形。功耗曲线组的对比及特性波形的识别采用常规的波形识别和统计方法,可以将前述分析得到的M在各个取值区间变形操作对应的特性波形输入常规的波形识别和统计系统中作为参照,从而得到被检测的功耗曲线组中的特性波形和特性波形出现的概率。
在步骤S1600中,通过对比S10和S20可以识别M在第一变形情况和第二变形情况的第一区间或第二区间时变形操作对应的特性波形,通过对比S11和S21可以识别M在第一变形情况和第二变形情况的第三区间时变形操作对应的特性波形。
在步骤S1800中,最后得到的满足条件的M的值,当M在第一区间时,所得M的值即Q的值;当M在第二区间或第三区间时,所得M的值即的P值。在得到P或Q的值后,可以利用公钥e、N计算出dp、dq、qinv等RSA_CRT算法的所有私钥元素,因此得到最后的满足条件的M的值,即可认为攻击成功。
在步骤S1701和步骤S1711中,是以循环结束来判断M值逼近P值或Q值的过程结束,这是因为,如果循环至第i比特位时,变形操作对应的特性波形发生变化,即功耗曲线采样组中出现与当前M值所在取值区间不同的其他取值区间时变形操作对应的特性波形,则在当前第i比特位之后,特性波形将一直与参考特性波形不同,在当前第i比特位后的所有比特位都将为0或1,之后的循环中不再发生比特位的值的变化,也就是说,M值将不再增大或减小,亦即达到了最大值或最小值。因此以循环过程的结束来判断逼近过程的结束,和以特性波形发生变化来判断逼近过程的结束是一致的,且在程序流程上更容易实现。
在本发明实施例中,当M在第二区间时,攻击时可以通过逐步增大M值逼近P的值,也可以通过逐步减小M值逼近Q的值,根据上述方法实施例的描述,本领域技术人员可以很容易得到当M在第二区间时,通过逐步减小M值逼近Q的值的过程,故不赘述。
通过以上的方法实施例的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:只读存储器(ROM)、随机存取存储器(RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
在第二方面,本发明实施例公开了一种攻击密钥的装置。如图2所示,所述攻击密钥的装置包括:
特性波形分析单元U2100,用于计算与分析RSA_CRT变形算法在第一种变形和第二种变形情况下,M在不同取值区间时,随机数trng引起变形部分发生进位操作的概率,及变形操作对应的特性波形和所述特性波形出现的概率,并记录M在不同取值区间时变形操作对应的特性波形和所述特性波形出现的概率,所述M的取值区间由P和Q确定,包括:M小于P和Q的第一区间,M介于P和Q之间的第二区间,M大于P和Q的第三区间,其中,P和Q为RSA合数模N的两个素数因子,M与P和Q等长;
功耗曲线获取单元U2200,用于获取被攻击的RSA_CRT变形算法对密文进行密码运算的功耗曲线,以及获取被攻击的RSA_CRT变形算法对密文进行有限次密码运算的功耗曲线组,所述有限次可以为1000次;
区间判断单元U2300,与所述特性波形分析单元U2100及所述功耗曲线获取单元U2200连接,用于选取攻击明文M,使用公钥将M加密为密文,根据M对应的功耗曲线采样组中的特性波形和所述特性波形出现的概率判断M的取值区间,所述M对应的功耗曲线采样组即被攻击的RSA_CRT变形算法对所述密文进行有限次密码运算的功耗曲线组;
攻击单元U2400,与所述特性波形分析单元U2200及所述功耗曲线获取单元U2300连接,根据区间判断单元得到的所述M的取值区间,逐步增大或减小M值,直至M值对应的功耗曲线采样组中的特性波形发生变化,判断最后得到的M值是否在所述M的取值区间内且为素数,若是,则攻击成功,否则,攻击失败。
其中,所述变形操作指RSA_CRT变形算法中,第一种变形情况下的M mod P+trng、Mmod Q+trng和(M mod P+trng)–(M mod Q+trng)运算操作,以及第二种变形情况下的sp+trng和sp+trng–sq运算操作。
其中,如图2所示,所述特性波形分析单元U2100可以包括:
进位概率计算单元U2101,用于分析与计算被攻击的RSA_CRT变形算法中攻击明文M在不同取值区间时随机数trng引起变形部分发生进位操作的概率,所述概率根据所述随机数的进制和P、Q的取值特性计算得到;
特性波形记录单元U2102,与所述进位概率计算单元U2101连接,用于分析并记录M在不同取值区间时功耗曲线中所述变形操作对应的特性波形,所述特性波形在功耗曲线采样组中出现的概率根据所述引起变形部分发生进位操作的概率确定。
具体地,所述进位概率计算单元U2101根据P、Q的取值特性以及随机数的进制,分析引起M mod P+trng、M mod Q+trng或sp+trng进位的随机数的比特位的取值情况,得到随机数引起变形部分发生进位操作的概率,即引起变形操作进位的概率。所述特性波形记录单元U2102分析M在不同取值区间时变形操作可能产生的特性波形,并记录所述特性波形。所述特性波形根据常规的标准RSA_CRT变形算法密码运算的功耗曲线中波形的形式,如加、减、进位、借位的波形形式得到。在一种可能实施方式中,也可以根据芯片数据运算操作处理的波形特征,得到变形操作可能产生的特性波形。
如图2所示,所述区间判断单元包括:
第一功耗曲线记录单元U2301,与所述功耗曲线获取单元U2200连接,用于选取攻击明文M1和攻击明文M2,设置M1的所有比特位为0,以及设置M2的所有比特位为1,使用公钥将M1和M2加密为密文,分别记录M1和M2对应的功耗曲线采样组S10和S11;
第二功耗曲线记录单元U2302,与所述功耗曲线获取单元U2200连接,用于选取攻击明文M3和攻击明文M4,设置M3从高往低的第二个比特位为1,其余比特位为0,以及设置M4从高往低的第二个比特位为0,其余比特位为1,使用公钥将M3和M4加密为密文,分别记录M3和M4对应的功耗曲线采样组S20和S21;
对比单元U2303,与所述第一功耗曲线记录单元U2301、第二功耗曲线记录单元U2302及特性波形记录单元U2102连接,用于对比S20和S10,以及对比S21和S11,得到所述特性波形和所述特性波形出现的概率,根据所述特性波形和所述特性波形出现的概率判断M3或M4的取值区间,以所述M3或M4的取值区间为所述M的取值区间。
其中,对比功耗曲线组S10和功耗曲线组S20,及对比功耗曲线组S11和功耗曲线组S21,是以所有比特位全为0和所有比特位全为1的攻击明文的功耗曲线作为参考曲线,通过对比S10和S20之间的差异,以及S11和S21之间的差异,识别出特性波形。功耗曲线组的对比及特性波形的识别采用常规的波形识别及统计方法。其中,通过对比S10和S20可以识别M在第一变形情况和第二变形情况的第一区间或第二区间的特性波形,通过对比S11和S21可以识别M在第一变形情况和第二变形情况的第三区间的特性波形。
如图2所示,所述攻击单元包括:
循环单元U2401,与所述对比单元U2303连接,用于根据所述区间判断单元U2300(本实施例中实际为区间判断单元U2300中的对比单元U2303)的结果,当M在第一区间或第二区间时,设置M的所有比特位为0后,从第t-1比特位至第1比特位,依次设置第i比特位为1,或者当M在第三区间时,设置M的所有比特位为1后,从第t-1比特位至第1比特位,依次设置第i比特位为0;
第一判断单元U2402,与所述循环单元U2401连接及所述功耗曲线获取单元U2200连接,用于判断所述循环单元U2401中当前M值对应的功耗曲线采样组中的特性波形与所述对比单元U2303得到的特性波形是否相同,所述当前M值为所述循环单元U2401中当前第i比特位为1或0时对应的M值;
M值记录单元U2403,与所述第一判断单元U2402连接,用于根据所述第一判断单元U2402的结果设置第i位比特位的值,当所述结果为相同时,保持当前第i位比特位的值,否则,对当前第i位比特位的值取反;
第二判断单元U2404,与所述循环单元U2401及M值记录单元U2403连接,用于判断所述循环单元U2401的循环结束后所述M值记录单元U2403得到的M值是否在所述对比单元U2303得到的M的取值空间内且为素数,若是,则攻击成功,否则,攻击失败。
其中,i为整数,t为M的长度。
其中,第一判断单元U2402与第二判断单元U2404通过循环单元U2401获得对比单元U2303中的结果。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者装置中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。