一种智能卡sm4算法的dpa攻击与密钥还原方法及系统的制作方法

文档序号:7771761阅读:326来源:国知局
一种智能卡sm4算法的dpa攻击与密钥还原方法及系统的制作方法
【专利摘要】本发明涉及一种智能卡SM4算法的DPA攻击与密钥还原方法及系统,属于智能卡安全领域。本发明所述的方法包括以下步骤:步骤一,对SM4算法加密过程的前4轮进行DPA攻击,获取前4轮的子密钥;步骤二,利用得到的4轮子密钥恢复SM4密钥。采用本发明所述的方法和系统可以实现智能卡上SM4算法的DPA攻击,还原SM4加密密钥,验证智能卡上SM4算法的抗攻击能力。
【专利说明】—种智能卡SM4算法的DPA攻击与密钥还原方法及系统【技术领域】
[0001]本发明属于智能卡安全领域,具体涉及一种智能卡SM4算法的DPA攻击与密钥还原方法和系统。
【背景技术】
[0002]SM4算法是国家密码管理局2012年批准的密码行业标准的一种,属于分组密码对称加密算法。SM4算法的分组长度和密钥长度均为128比特。加密算法与密钥扩展算法采用32轮非线性迭代结构,加密过程的每一轮中使用的运算包括异或运算、非线性t变换和线性L变换,其中非线性t变换中使用了 16*16长度大小的S盒。SM4解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。
[0003]现有的差分功耗分析(DPA)攻击是针对智能卡较之有效的攻击手段,该攻击手段能够通过大量采集智能卡内加密算法加密的功耗曲线,运用统计学的分析计算得到智能卡内算法加密的密钥。目前DPA攻击已经有了针对DES等加密算法的攻击实现,但尚未有针对智能卡中SM4算法的DPA攻击实现和密钥还原方法。

【发明内容】

[0004]针对现有技术中存在的缺陷,本发明的目的是提供一种智能卡SM4算法的DPA攻击与密钥还原方法和系统。该方法和系统能够实现智能卡上SM4算法的DPA攻击,还原SM4加密密钥,验证智能卡上SM4算法的抗攻击能力。
[0005]为达到以上目的,本发明采用的技术方案是:一种智能卡SM4算法的DPA攻击与密钥还原方法,包括以下步骤:
[0006]步骤一,对SM4算法加密过程的前4轮进行DPA攻击,获取前4轮的子密钥;
[0007]步骤二,利用得到的前4轮子密钥恢复SM4密钥。
[0008]进一步,步骤一中,所述的SM4算法的密钥长度为128位,生成32轮子密钥参与每轮的运算,其中每一轮子密钥的长度为32位,每一轮运算中4次使用到了 S盒。
[0009]更进一步,步骤一中,通过攻击S盒输出数据实现对SM4算法加密过程的前4轮进行DPA攻击,获取前4轮的子密钥。
[0010]进一步,针对SM4算法中S盒输出数据的DPA攻击方法包括:攻击SM4算法的S盒输出数据字节的汉明重量;攻击SM4算法的S盒输出数据的某一位;攻击SM4算法的S盒输出所有位。
[0011]更进一步,针对SM4算法中S盒输出数据的DPA攻击方法包括以下步骤:
[0012]I)设计一个猜测的子密钥数组k□,这个数组的长度为28:
[0013]int[]k= {0x00000000, 0x01010101,0x02020202, 0x03030303,…,OxffffTfTf};
[0014]k[]中元素的格式为:0χΑΒΑΒΑΒΑΒ,其中A、B为十六进制0_f之间的任意数字,第一个AB对应参与第一个S盒运算部分的密钥,第二个AB对应参与第二个S盒运算部分的密钥,第三个AB对应参与第三个S盒运算部分的密钥,最后一个AB对应参与第四个S盒运算部分的密钥;
[0015]2)定义selected^为1024大小的数组,用来存放S盒输出数据字节的汉明重量,根据selected[]确定密钥相关性的大小;
[0016]3)对SM4算法进行DPA攻击,获取SM4算法的前四轮子密钥。
[0017]更进一步,步骤3)中,对SM4算法进行DPA攻击,获取SM4算法的前四轮子密钥包括以下步骤: [0018](I)初始化操作,初始化的过程包括密钥字节数、S盒候选项数、差分功耗的条数、轮密钥的初始化:
[0019]keys=4; //4字节密钥,即每轮攻击可以获取4字节子密钥;
[0020]candidates=256; // 每个 S 盒有 256 个候选项;
[0021]dataLength=keys*candidates;// 差分功耗的数量;
[0022]round0Key=0; //第一轮子密钥初始化为O ;
[0023]roundlKey=0; //第二轮子密钥初始化为O ;
[0024]round2Key=0;//第三轮子密钥初始化为O ;
[0025]round3Key=0;//第四轮子密钥初始化为O ;
[0026](2)确定一个整型数组X [],用来存放攻击该轮的输入数据;
[0027](3)攻击第一轮,读取采集到的智能卡芯片功耗数据,进行计算最终返回selected[]数组,得到的 selected[]数组内容如下:selected[0]~selected[255]中存放的是第一组猜测的8位部分子密钥相关性值,选取相关性最大的值确定与之对应的8位密钥;从selected[256]~selected[511]中得到第二部分8位密钥,从selected[512]~selected[767]中得到第三部分8位密钥,从selected[768]~selected[1023]中得到第四部分8位密钥;
[0028](4)把得到的4部分各8位子密钥依次组合,就是SM4算法第一轮加密运算的子密钥;
[0029](5)利用已知的子密钥继而攻击下一轮,一直得到前四轮子密钥。
[0030]进一步,从破解得到的SM4算法前4轮子密钥中还原SM4算法的密钥方法如下:
[0031]I).已知 rk3=f (K3, rk0, rk” rk2),由 rk。、rk” rk2、rk3 计算 32 位的 K3 ;
[0032]计算方法:K3=rk3~L,(SBox(rk0~Tk1^rk2'CK3));
[0033]2).已知 rk2=f(K3, K2, rk。,rk),由 rk。、rk” rk2、K3 计算 32 为的 K2 ;
[0034]计算方法:K2=rk2~L’(SBox(Kfrkc^rkjCK2));
[0035]3).计算 KpK0;
[0036]计算方法:Kfrk1'!/(SBox (K2'K3^rk0OK1));
[0037]Kfrkd'L,(SBox (K1'K2~K3~CK0));
[0038]4).由 KQ、K1, K2、K3 和 FK。、FK1, FK2, FK3 还原 SM4 密钥 MK= (MK0, MK1, MK2, MK3);
[0039]计算方法:MK3=KfFK3;
[0040]MK2=K2^FK2;
[0041]MK1=K1^FK1;
[0042]MK0=K0~FK0;
[0043]MK。、MK1, MK2, MK3依次拼接起来就是SM4的密钥MK。[0044]本发明还公开了一种智能卡SM4算法的DPA攻击与密钥还原系统,包括以下装置:
[0045]子密钥获取装置,用于对SM4算法加密过程的前4轮进行DPA攻击,获取前4轮的子密钥;
[0046]密钥恢复装置,用于利用得到的前4轮子密钥恢复SM4密钥。
[0047]进一步,所述的子密钥获取装置是通过攻击S盒输出数据实现对SM4算法加密过程的前4轮进行DPA攻击,获取前4轮的子密钥;所述的SM4算法的密钥长度为128位,生成32轮子密钥参与每轮的运算,其中每一轮子密钥的长度为32位,每一轮运算中4次使用到了 S盒;
[0048]所述的子密钥获取装置包括以下模块:用于攻击SM4算法的S盒输出数据字节的汉明重量的模块;用于攻击SM4算法的S盒输出数据的某一位的模块;用于攻击SM4算法的S盒输出所有位的模块。
[0049]本发明的效果在于:采用本发明所述的方法及系统,通过对SM4算法的DPA攻击实现难度(比如SM4加密算法至少需要攻击4轮),对比SM4算法与其他对称加密算法(比如DES加密算法至少攻击I轮即可)抗攻击能力的强弱;设计和实现智能卡中SM4算法的防御策略,通过针对SM4的DPA攻击方法验证防御策略的有效性,攻击的实现为了更好的防御。
【专利附图】

【附图说明】
[0050]图1是本发明所述方法【具体实施方式】中SM4密钥扩展算法流程图;
[0051]图2是本发明所 述方法【具体实施方式】中SM4加密算法的流程图;
[0052]图3是图2中SM4加密算法中步骤F的详细流程图;
[0053]图4是本发明所述方法【具体实施方式】中DPA攻击SM4算法的流程图;
[0054]图5是本发明所述系统【具体实施方式】中结构图。
【具体实施方式】
[0055]下面结合附图和【具体实施方式】对本发明作进一步描述。
[0056]一种智能卡SM4算法的DPA攻击与密钥还原方法,包括以下步骤:
[0057]步骤一,对SM4算法加密过程的前4轮进行DPA攻击,获取前4轮的子密钥;
[0058]步骤二,利用得到的4轮子密钥恢复SM4密钥。
[0059]本实施例中,如图1所示,图1是SM4密钥扩展算法流程图,MK= (MK0, MK1, MK2, MK3)为 SM4 的 128 位密钥,其中 FK= (FK0, FK1, FK2, FK3)和 CK= (CK0, CK1, CK2, CK3)分别是已知的系统参数和固定参数。
[0060]参照图1,SM4密钥扩展算法如下:
[0061]I) K0=MK0~FK0, K1=MK厂FK1, K2=MK2^FK2, K3=MK3^FK3 ;
[0062]2) K4=K0T (K1WCK0),K4 即第 I 轮子密钥 rk0 ;
[0063]3) K5=K1T (K2WCK1),K5 即第 2 轮子密钥 rk0 ;
[0064]同理,依次计算得到K6、K7……K35,即分别是第3轮、第4轮……第32轮的子密钥。
[0065]生成的32轮子密钥会参与接下来的32轮的加密运算,其中每一轮子密钥的长度为32位,每一轮运算中4次使用到了 S盒。[0066]图2是SM4加密算法的流程图,图3中虚线框起的部分是图2中步骤F的详细流程。图2中(X0, X1, X2, X3)是128位明文输入,(X32, X33, X34, X35)是加密后的128位密文。图3中的t变换是非线性变换:
[0067]B= (b0, b” b2, b3) =t (A) = (Sbox (a。), Sbox (a) , Sbox (a2), Sbox (a3)), L 变换是线性变换:C= (cQ,C1, c2,c3) =L(B) =B ? (B?<2) ? (B?<10) ? (B?<18) ? (B〈〈〈24)。参照图 2 和图3,SM4的加密过程如下:
[0068]I) 128 位明文分为 4 组(X0, X1, X2, X3),计算 X4=X0~ (L(t (X厂X2~X3~rk。))),X4 即第 I轮加密后的结果;
[0069]2)计算X5=X1' (La(VWrk1))),X5即第2轮加密后的结果;
[0070]3)计算 X6=X2' (L(t (X3~X4~X5~rk2))),X4 即第 3 轮加密后的结果;
[0071]同理,依次计算得到X7、X8……X32、X33、X34、X35,(X32,X33, X34, X35)即加密之后的128位密文。
[0072]本实施例中,一种智能卡SM4算法的DPA攻击与密钥还原方法,包括以下步骤:步骤一,对SM4算法加密过程的前4轮进行DPA攻击,获取前4轮的子密钥,本实施例中的具体方法如下:
[0073]攻击S盒输出数据,S盒运算是SM4算法中唯一的非线性运算部分,这里针对SM4加密算法DPA攻击的目标就是它的S盒运算部分。SM4算法中的S盒为固定的8比特输入8比特输出置换,每轮的32位子密钥分为4组,每组8位,依次进行4次S盒置换。SM4的某一轮加密中如果可以猜到这4组参与S盒运算的8位密钥,那么把这4组各含8位的密钥部分组合,就可以得到SM4的这一轮32位子密钥。
[0074]针对SM4算法中S盒输出数据的DPA攻击有效方法有3种:攻击SM4算法的S盒输出数据字节的汉明重量;攻击SM4算法的S盒输出数据的某一位;攻击SM4算法的S盒输出所有位。在实际攻击SM4算法加密的智能卡时,针对不同的智能卡和不同的实现,每种方法的攻击效果会各有优劣,所以需要适当选择这3种攻击方法中的一种。
[0075]以下详细说明SM4算法的DPA攻击3种方法:针对S盒输出字节的汉明重量的DPA攻击;针对S盒输出某一位值的DPA攻击;针对S盒输出全部位的DPA攻击。
[0076]I)设计一个猜测的子密钥数组k□,这个数组的长度为28,即256。因为每一个子密钥长度为32位,子密钥参与运算时会对应到4个8位的S盒,可以如下定义猜测的子密钥数组:
[0077]int[]k={0x00000000, 0x01010101,0x02020202, 0x03030303,…,OxffffTfTf};
[0078]即,k[]中元素的格式为:0χΑΒΑΒΑΒΑΒ,其中A、B为十六进制0_f之间的任意数字,第一个AB对应参与第一个S盒运算部分的密钥,第二个AB对应参与第二个S盒运算部分的密钥,第三个AB对应参与第三个S盒运算部分的密钥,最后一个AB对应参与第四个S盒运算部分的密钥。
[0079]2)定义selected^为1024大小的数组,用来存放S盒输出数据字节的汉明重量,根据selected []确定密钥相关性的大小,在DPA攻击中,相关性越高,说明猜测的密钥越接近正确密钥。
[0080]3)对SM4算法进行DPA攻击,获取SM4算法的前四轮子密钥。
[0081]如图4所示,图4是DPA攻击SM4算法的流程图,公开了 SM4算法的DPA攻击的3种方法实现过程,包括以下步骤:
[0082](I)初始化操作,初始化的过程包括密钥字节数、S盒候选项数、差分功耗的条数、轮密钥等的初始化:
[0083]keys=4; //4字节密钥,即每轮攻击可以获取4字节子密钥;
[0084]candidates=256; // 每个 S 盒有 256 个候选项;
[0085]dataLength=keys*candidates;// 差分功耗的数量;
[0086]round0Key=0; //第一轮子密钥初始化为O ;
[0087]roundlKey=0; //第二轮子密钥初始化为O ;
[0088]round2Key=0; //第三轮子密钥初始化为O ;
[0089]round3Key=0;//第四轮子密钥初始化为O ;
[0090](2)确定一个整型数组X□,用来存放攻击该轮的输入数据,即:若攻击的是第一轮,则x[0]-x[3]中存放的是第一轮的输入数据;若攻击的是第二轮,需要利用已经得到的第一轮子密钥计算第一轮的输出结果,在x[0]-x[3]中存放第二轮的输入数据;若攻击的是第三轮,需要利用已经得到的第一轮、第二轮子密钥计算第二轮的输出结果,在X[O]-X[3]中存放第三轮的输入数据;若攻击的是第四轮,需要利用已经得到的第一轮、第二轮、第三轮子密钥计算第三轮的输出结果,在x[0]-x[3]中存放第四轮的输入数据;
[0091](3)按图4的流程,攻击方法选择S盒输出字节的汉明重量(其它两种攻击方法图4中亦有描述),以攻击第一轮为例,读取采集到的智能卡芯片功耗数据,进行计算最终返回selected[]数组,计算方法的伪代码如下:
[0092]1.For i=0To255:
[0093]2.mid=ByteSub (x[I] 'x[2] 'x[3] ~k[i])
[0094]3.For j=0To3:
[0095]4.p=i, q=24
[0096]5.selected[p]=hw((mid>>q) & OxFF)
[0097]6.p+=256, q-=8
[0098]7.End
[0099]8.End
[0100]其中k[i]中存放的是猜测密钥值,ByteSubO函数是S盒变换函数,mid是S盒输出的数据,hw()函数是汉明重量函数。伪代码中第I行是外层256次循环,第3行是内层4次循环,这样就能计算得到256*4=1024个selected值,存放于selected [p]中。
[0101]通过计算得到的selected[]数组内容如下:selected[0]?selected[255]中存放的是第一组猜测的8位部分子密钥相关性值,选取相关性最大的值确定与之对应的8位密钥;同理,从selected[256]?selected[511]中得到第二部分8位密钥,从selected[512]?selected[767]中得到第三部分8位密钥,从selected[768]?selected[1023]中得到第四部分8位密钥;
[0102](4)把得到的4部分各8位子密钥依次组合,就是SM4算法第一轮加密运算的子密钥;
[0103](5)利用已知的子密钥继而攻击下一轮,一直得到前四轮子密钥。
[0104]步骤二,从破解得到的SM4算法前4轮子密钥中还原SM4算法的密钥。[0105]如图1所示,图1是SM4密钥扩展算法流程图,其中:
[0106]SM4 的 128 位密钥:MK= (MK0, MK1, MK2, MK3);
[0107]系统参数(已知):FK=(FK0, FK1, FK2, FK3);
[0108]固定参数(已知):CK=(CK。,CK1,CK2, CK3);
[0109]系统参数FK和固定参数CK是已知的,在得到SM4前4轮子密钥rk。、rkp rk2、rk3情况下,计算SM4完整的128位密钥方法如下:
[0110]I).已知 rk3=f (K3, rk0, rk” rk2),由 rk。、rk” rk2、rk3 计算 32 位的 K3 ;
[0111]计算方法:K3=rk3~L’(SBox Crk0^rk1 ~rk2~CK3));
[0112]2).已知 rk2=f(K3, K2, rk。,rk),由 rk。、rk” rk2、K3 计算 32 为的 K2 ;
[0113]计算方法:K2=rk2~L’(SBox(K3^rfrk1'CK2)); [0114]3).同理计算 Kp K0;
[0115]计算方法:K1=Tk1'!/(SBox (K2"K3'Tk0^CK1));
[0116]K0=rk0~L,(SBox (K^Ka-K3OK0));
[0117]4).由 KQ、K1, K2、K3 和 FK。、FK1, FK2, FK3 还原 SM4 密钥 MK= (MK0, MK1, MK2, MK3);
[0118]计算方法:MK3=K3^FK3;
[0119]MK2=K2'FK2;
[0120]MK1=VFK1;
[0121]MK0=K0~FK0;
[0122]MK。、MK1, MK2, MK3依次拼接起来就是SM4的密钥MK。
[0123]其中L’()方法和SBox以及系统参数FK和固定参数CK可参见国家商用密码管理局公开的《SMS4密码算法》。
[0124]如图5所示,一种智能卡SM4算法的DPA攻击与密钥还原系统,包括以下装置:子密钥获取装置1,用于对SM4算法加密过程的前4轮进行DPA攻击,获取前4轮的子密钥;
[0125]密钥恢复装置2,用于利用得到的4轮子密钥恢复SM4密钥。
[0126]本实施例中,所述的子密钥获取装置是通过攻击S盒输出数据实现对SM4算法加密过程的前4轮进行DPA攻击,获取前4轮的子密钥;所述的SM4算法的密钥长度为128位,生成32轮子密钥参与每轮的运算,其中每一轮子密钥的长度为32位,每一轮运算中4次使用到了 S盒;
[0127]所述的子密钥获取装置包括以下模块:用于攻击SM4算法的S盒输出数据字节的汉明重量的模块11 ;用于攻击SM4算法的S盒输出数据的某一位的模块12 ;用于攻击SM4算法的S盒输出所有位的模块13。
[0128]本领域技术人员应该明白,本发明所述的方法和系统并不限于【具体实施方式】中所述的实施例,上面的具体描述只是为了解释本发明的目的,并非用于限制本发明。本领域技术人员根据本发明的技术方案得出其他的实施方式,同样属于本发明的技术创新范围,本发明的保护范围由权利要求及其等同物限定。
【权利要求】
1.一种智能卡SM4算法的DPA攻击与密钥还原方法,包括以下步骤: 步骤一,对SM4算法加密过程的前4轮进行DPA攻击,获取前4轮的子密钥; 步骤二,利用得到的前4轮子密钥恢复SM4密钥。
2.如权利要求1所述的一种智能卡SM4算法的DPA攻击与密钥还原方法,其特征是:步骤一中,所述的SM4算法的密钥长度为128位,生成32轮子密钥参与每轮的运算,其中每一轮子密钥的长度为32位,每一轮运算中4次使用到了 S盒。
3.如权利要求2所述的一种智能卡SM4算法的DPA攻击与密钥还原方法,其特征是,步骤一中,通过攻击S盒输出数据实现对SM4算法加密过程的前4轮进行DPA攻击,获取前4轮的子密钥。
4.如权利要求3所述的一种智能卡SM4算法的DPA攻击与密钥还原方法,其特征是,针对SM4算法中S盒输出数据的DPA攻击方法包括:攻击SM4算法的S盒输出数据字节的汉明重量;攻击SM4算法的S盒输出数据的某一位;攻击SM4算法的S盒输出所有位。
5.如权利要求4所述的一种智能卡SM4算法的DPA攻击与密钥还原方法,其特征是,针对SM4算法中S盒输出数据的DPA攻击方法包括以下步骤: 1)设计一个猜测的子密钥数组k□,这个数组的长度为28:
int[]k={0x00000000, 0x01010101, 0x02020202, 0x03030303,…,OxffffTfTf}; k[]中元素的格式为:0χΑΒΑΒΑΒΑΒ,其中A、B为十六进制Ο-f之间的任意数字,第一个AB对应参与第一个S盒运算部分的密钥,第二个AB对应参与第二个S盒运算部分的密钥,第三个AB对应参与第三个S盒运算部分的密钥,最后一个AB对应参与第四个S盒运算部分的密钥; 2)定义selected□为1024大小的数组,用来存放S盒输出数据字节的汉明重量,根据selected[]确定密钥相关性的大小; 3)对SM4算法进行DPA攻击,获取SM4算法的前四轮子密钥。
6.如权利要求5所述的一种智能卡SM4算法的DPA攻击与密钥还原方法,其特征是,步骤3)中,对SM4算法进行DPA攻击,获取SM4算法的前四轮子密钥包括以下步骤: (1)初始化操作,初始化的过程包括密钥字节数、S盒候选项数、差分功耗的条数、轮密钥的初始化; (2)确定一个整型数组X□,用来存放攻击该轮的输入数据; (3)攻击第一轮,读取采集到的智能卡芯片功耗数据,进行计算最终返回selected^数组,得到的selected[]数组内容如下:selected[0]~selected[255]中存放的是第一组猜测的8位部分子密钥相关性值,选取相关性最大的值确定与之对应的8位密钥;从 selected[256]~selected[511]中得到第二部分 8 位密钥,从 selected[512]~selected[767]中得到第三部分8位密钥,从selected[768]~selected[1023]中得到第四部分8位密钥; (4)把得到的4部分各8位子密钥依次组合,就是SM4算法第一轮加密运算的子密钥; (5)利用已知的子密钥继而攻击下一轮,一直得到前四轮子密钥。
7.如权利要求6所述的一种智能卡SM4算法的DPA攻击与密钥还原方法,其特征是,步骤(I)中初始化的过程如下: keys=4;//4字节密钥,即每轮攻击可以获取4字节子密钥;candidates=256; //每个S盒有256个候选项; dataLength=keys*candidates;// 差分功耗的数量; round0Key=0;//第一轮子密钥初始化为O ; roundlKey=0;//第二轮子密钥初始化为O ; round2Key=0;//第三轮子密钥初始化为O ; round3Key=0;//第四轮子密钥初始化为O。
8.如权利要求1至7任一项所述的一种智能卡SM4算法的DPA攻击与密钥还原方法,其特征是,从破解得到的SM4算法前4轮子密钥中还原SM4算法的密钥方法如下:
1).已知rk3=f (K3, rk0, rk1; rk2),由 rk。、rk^ rk2> rk3 计算 32 位的 K3 ; 计算方法:K3=rk3~L,(SBox (rk0~Tk1^rk2"CK3));
2).已知rk2=f (K3, K2, rk0, rk),由 rk。、rk^ rk2> K3 计算 32 位的 K2 ; 计算方法:K2=rk2~L,(SBox(K3"Tk0^rk1 "CK2)); 3).计算 计算方法:K1=rk1"L> (SBox(Hrkc^CK1));
K0=rk0~L,(SBo x (K1'K2'K3'CK0));
4).由 KQ、Κ” K2、K3 和 FK。、FKp FK2、FK3 还原 SM4 密钥 MK= (MK0, MK1, MK2, MK3); 计算方法:MK3=K3~FK3;
MK2=K2^FK2; MK1=VFK1; MK0=VFK0; MK。、MK1' MK2、MK3依次拼接起来就是SM4的密钥MK。
9.一种智能卡SM4算法的DPA攻击与密钥还原系统,包括以下装置: 子密钥获取装置,用于对SM4算法加密过程的前4轮进行DPA攻击,获取前4轮的子密钥; 密钥恢复装置,用于利用得到的前4轮子密钥恢复SM4密钥。
10.如权利要求9所述的一种智能卡SM4算法的DPA攻击与密钥还原系统,其特征在于:所述的子密钥获取装置是通过攻击S盒输出数据实现对SM4算法加密过程的前4轮进行DPA攻击,获取前4轮的子密钥;所述的SM4算法的密钥长度为128位,生成32轮子密钥参与每轮的运算,其中每一轮子密钥的长度为32位,每一轮运算中4次使用到了 S盒; 所述的子密钥获取装置包括以下模块:用于攻击SM4算法的S盒输出数据字节的汉明重量的模块;用于攻击SM4算法的S盒输出数据的某一位的模块;用于攻击SM4算法的S盒输出所有位的模块。
【文档编号】H04L9/08GK103546277SQ201310445225
【公开日】2014年1月29日 申请日期:2013年9月25日 优先权日:2013年9月25日
【发明者】宫亚明, 张擎 申请人:北京握奇数据系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1