CN103546277A - 一种智能卡sm4算法的dpa攻击与密钥还原方法及系统 - Google Patents

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

Info

Publication number
CN103546277A
CN103546277A CN201310445225.3A CN201310445225A CN103546277A CN 103546277 A CN103546277 A CN 103546277A CN 201310445225 A CN201310445225 A CN 201310445225A CN 103546277 A CN103546277 A CN 103546277A
Authority
CN
China
Prior art keywords
key
algorithm
sub
dpa
keys
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201310445225.3A
Other languages
English (en)
Other versions
CN103546277B (zh
Inventor
宫亚明
张擎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Watchdata Limited by Share Ltd
Original Assignee
Beijing WatchData System Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing WatchData System Co Ltd filed Critical Beijing WatchData System Co Ltd
Priority to CN201310445225.3A priority Critical patent/CN103546277B/zh
Publication of CN103546277A publication Critical patent/CN103546277A/zh
Application granted granted Critical
Publication of CN103546277B publication Critical patent/CN103546277B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明涉及一种智能卡SM4算法的DPA攻击与密钥还原方法及系统,属于智能卡安全领域。本发明所述的方法包括以下步骤:步骤一,对SM4算法加密过程的前4轮进行DPA攻击,获取前4轮的子密钥;步骤二,利用得到的4轮子密钥恢复SM4密钥。采用本发明所述的方法和系统可以实现智能卡上SM4算法的DPA攻击,还原SM4加密密钥,验证智能卡上SM4算法的抗攻击能力。

Description

一种智能卡SM4算法的DPA攻击与密钥还原方法及系统
技术领域
本发明属于智能卡安全领域,具体涉及一种智能卡SM4算法的DPA攻击与密钥还原方法和系统。
背景技术
SM4算法是国家密码管理局2012年批准的密码行业标准的一种,属于分组密码对称加密算法。SM4算法的分组长度和密钥长度均为128比特。加密算法与密钥扩展算法采用32轮非线性迭代结构,加密过程的每一轮中使用的运算包括异或运算、非线性t变换和线性L变换,其中非线性t变换中使用了16*16长度大小的S盒。SM4解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。
现有的差分功耗分析(DPA)攻击是针对智能卡较之有效的攻击手段,该攻击手段能够通过大量采集智能卡内加密算法加密的功耗曲线,运用统计学的分析计算得到智能卡内算法加密的密钥。目前DPA攻击已经有了针对DES等加密算法的攻击实现,但尚未有针对智能卡中SM4算法的DPA攻击实现和密钥还原方法。
发明内容
针对现有技术中存在的缺陷,本发明的目的是提供一种智能卡SM4算法的DPA攻击与密钥还原方法和系统。该方法和系统能够实现智能卡上SM4算法的DPA攻击,还原SM4加密密钥,验证智能卡上SM4算法的抗攻击能力。
为达到以上目的,本发明采用的技术方案是:一种智能卡SM4算法的DPA攻击与密钥还原方法,包括以下步骤:
步骤一,对SM4算法加密过程的前4轮进行DPA攻击,获取前4轮的子密钥;
步骤二,利用得到的前4轮子密钥恢复SM4密钥。
进一步,步骤一中,所述的SM4算法的密钥长度为128位,生成32轮子密钥参与每轮的运算,其中每一轮子密钥的长度为32位,每一轮运算中4次使用到了S盒。
更进一步,步骤一中,通过攻击S盒输出数据实现对SM4算法加密过程的前4轮进行DPA攻击,获取前4轮的子密钥。
进一步,针对SM4算法中S盒输出数据的DPA攻击方法包括:攻击SM4算法的S盒输出数据字节的汉明重量;攻击SM4算法的S盒输出数据的某一位;攻击SM4算法的S盒输出所有位。
更进一步,针对SM4算法中S盒输出数据的DPA攻击方法包括以下步骤:
1)设计一个猜测的子密钥数组k[],这个数组的长度为28
int[]k={0x00000000,0x01010101,0x02020202,0x03030303,…,0xffffffff};
k[]中元素的格式为:0xABABABAB,其中A、B为十六进制0-f之间的任意数字,第一个AB对应参与第一个S盒运算部分的密钥,第二个AB对应参与第二个S盒运算部分的密钥,第三个AB对应参与第三个S盒运算部分的密钥,最后一个AB对应参与第四个S盒运算部分的密钥;
2)定义selected[]为1024大小的数组,用来存放S盒输出数据字节的汉明重量,根据selected[]确定密钥相关性的大小;
3)对SM4算法进行DPA攻击,获取SM4算法的前四轮子密钥。
更进一步,步骤3)中,对SM4算法进行DPA攻击,获取SM4算法的前四轮子密钥包括以下步骤:
(1)初始化操作,初始化的过程包括密钥字节数、S盒候选项数、差分功耗的条数、轮密钥的初始化:
keys=4;//4字节密钥,即每轮攻击可以获取4字节子密钥;
candidates=256;//每个S盒有256个候选项;
dataLength=keys*candidates;//差分功耗的数量;
round0Key=0;//第一轮子密钥初始化为0;
round1Key=0;//第二轮子密钥初始化为0;
round2Key=0;//第三轮子密钥初始化为0;
round3Key=0;//第四轮子密钥初始化为0;
(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)利用已知的子密钥继而攻击下一轮,一直得到前四轮子密钥。
进一步,从破解得到的SM4算法前4轮子密钥中还原SM4算法的密钥方法如下:
1).已知rk3=f(K3,rk0,rk1,rk2),由rk0、rk1、rk2、rk3计算32位的K3
计算方法:K3=rk3^L’(SBox(rk0^rk1^rk2^CK3));
2).已知rk2=f(K3,K2,rk0,rk1),由rk0、rk1、rk2、K3计算32为的K2
计算方法:K2=rk2^L’(SBox(K3^rk0^rk1^CK2));
3).计算K1、K0
计算方法:K1=rk1^L’(SBox(K2^K3^rk0^CK1));
K0=rk0^L’(SBox(K1^K2^K3^CK0));
4).由K0、K1、K2、K3和FK0、FK1、FK2、FK3还原SM4密钥MK=(MK0,MK1,MK2,MK3);
计算方法:MK3=K3^FK3;
MK2=K2^FK2;
MK1=K1^FK1;
MK0=K0^FK0;
MK0、MK1、MK2、MK3依次拼接起来就是SM4的密钥MK。
本发明还公开了一种智能卡SM4算法的DPA攻击与密钥还原系统,包括以下装置:
子密钥获取装置,用于对SM4算法加密过程的前4轮进行DPA攻击,获取前4轮的子密钥;
密钥恢复装置,用于利用得到的前4轮子密钥恢复SM4密钥。
进一步,所述的子密钥获取装置是通过攻击S盒输出数据实现对SM4算法加密过程的前4轮进行DPA攻击,获取前4轮的子密钥;所述的SM4算法的密钥长度为128位,生成32轮子密钥参与每轮的运算,其中每一轮子密钥的长度为32位,每一轮运算中4次使用到了S盒;
所述的子密钥获取装置包括以下模块:用于攻击SM4算法的S盒输出数据字节的汉明重量的模块;用于攻击SM4算法的S盒输出数据的某一位的模块;用于攻击SM4算法的S盒输出所有位的模块。
本发明的效果在于:采用本发明所述的方法及系统,通过对SM4算法的DPA攻击实现难度(比如SM4加密算法至少需要攻击4轮),对比SM4算法与其他对称加密算法(比如DES加密算法至少攻击1轮即可)抗攻击能力的强弱;设计和实现智能卡中SM4算法的防御策略,通过针对SM4的DPA攻击方法验证防御策略的有效性,攻击的实现为了更好的防御。
附图说明
图1是本发明所述方法具体实施方式中SM4密钥扩展算法流程图;
图2是本发明所述方法具体实施方式中SM4加密算法的流程图;
图3是图2中SM4加密算法中步骤F的详细流程图;
图4是本发明所述方法具体实施方式中DPA攻击SM4算法的流程图;
图5是本发明所述系统具体实施方式中结构图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步描述。
一种智能卡SM4算法的DPA攻击与密钥还原方法,包括以下步骤:
步骤一,对SM4算法加密过程的前4轮进行DPA攻击,获取前4轮的子密钥;
步骤二,利用得到的4轮子密钥恢复SM4密钥。
本实施例中,如图1所示,图1是SM4密钥扩展算法流程图,MK=(MK0,MK1,MK2,MK3)为SM4的128位密钥,其中FK=(FK0,FK1,FK2,FK3)和CK=(CK0,CK1,CK2,CK3)分别是已知的系统参数和固定参数。
参照图1,SM4密钥扩展算法如下:
1)K0=MK0^FK0,K1=MK1^FK1,K2=MK2^FK2,K3=MK3^FK3
2)K4=K0^T’(K1^K2^K3^CK0),K4即第1轮子密钥rk0
3)K5=K1^T’(K2^K3^K4^CK1),K5即第2轮子密钥rk0
同理,依次计算得到K6、K7……K35,即分别是第3轮、第4轮……第32轮的子密钥。
生成的32轮子密钥会参与接下来的32轮的加密运算,其中每一轮子密钥的长度为32位,每一轮运算中4次使用到了S盒。
图2是SM4加密算法的流程图,图3中虚线框起的部分是图2中步骤F的详细流程。图2中(X0,X1,X2,X3)是128位明文输入,(X32,X33,X34,X35)是加密后的128位密文。图3中的t变换是非线性变换:
B=(b0,b1,b2,b3)=t(A)=(Sbox(a0),Sbox(a1),Sbox(a2),Sbox(a3)),L变换是线性变换:C=(c0,c1,c2,c3)=L(B)=B⊕(B<<<2)⊕(B<<<10)⊕(B<<<18)⊕(B<<<24)。参照图2和图3,SM4的加密过程如下:
1)128位明文分为4组(X0,X1,X2,X3),计算X4=X0^(L(t(X1^X2^X3^rk0))),X4即第1轮加密后的结果;
2)计算X5=X1^(L(t(X2^X3^X4^rk1))),X5即第2轮加密后的结果;
3)计算X6=X2^(L(t(X3^X4^X5^rk2))),X4即第3轮加密后的结果;
同理,依次计算得到X7、X8……X32、X33、X34、X35,(X32,X33,X34,X35)即加密之后的128位密文。
本实施例中,一种智能卡SM4算法的DPA攻击与密钥还原方法,包括以下步骤:步骤一,对SM4算法加密过程的前4轮进行DPA攻击,获取前4轮的子密钥,本实施例中的具体方法如下:
攻击S盒输出数据,S盒运算是SM4算法中唯一的非线性运算部分,这里针对SM4加密算法DPA攻击的目标就是它的S盒运算部分。SM4算法中的S盒为固定的8比特输入8比特输出置换,每轮的32位子密钥分为4组,每组8位,依次进行4次S盒置换。SM4的某一轮加密中如果可以猜到这4组参与S盒运算的8位密钥,那么把这4组各含8位的密钥部分组合,就可以得到SM4的这一轮32位子密钥。
针对SM4算法中S盒输出数据的DPA攻击有效方法有3种:攻击SM4算法的S盒输出数据字节的汉明重量;攻击SM4算法的S盒输出数据的某一位;攻击SM4算法的S盒输出所有位。在实际攻击SM4算法加密的智能卡时,针对不同的智能卡和不同的实现,每种方法的攻击效果会各有优劣,所以需要适当选择这3种攻击方法中的一种。
以下详细说明SM4算法的DPA攻击3种方法:针对S盒输出字节的汉明重量的DPA攻击;针对S盒输出某一位值的DPA攻击;针对S盒输出全部位的DPA攻击。
1)设计一个猜测的子密钥数组k[],这个数组的长度为28,即256。因为每一个子密钥长度为32位,子密钥参与运算时会对应到4个8位的S盒,可以如下定义猜测的子密钥数组:
int[]k={0x00000000,0x01010101,0x02020202,0x03030303,…,0xffffffff};
即,k[]中元素的格式为:0xABABABAB,其中A、B为十六进制0-f之间的任意数字,第一个AB对应参与第一个S盒运算部分的密钥,第二个AB对应参与第二个S盒运算部分的密钥,第三个AB对应参与第三个S盒运算部分的密钥,最后一个AB对应参与第四个S盒运算部分的密钥。
2)定义selected[]为1024大小的数组,用来存放S盒输出数据字节的汉明重量,根据selected[]确定密钥相关性的大小,在DPA攻击中,相关性越高,说明猜测的密钥越接近正确密钥。
3)对SM4算法进行DPA攻击,获取SM4算法的前四轮子密钥。
如图4所示,图4是DPA攻击SM4算法的流程图,公开了SM4算法的DPA攻击的3种方法实现过程,包括以下步骤:
(1)初始化操作,初始化的过程包括密钥字节数、S盒候选项数、差分功耗的条数、轮密钥等的初始化:
keys=4;//4字节密钥,即每轮攻击可以获取4字节子密钥;
candidates=256;//每个S盒有256个候选项;
dataLength=keys*candidates;//差分功耗的数量;
round0Key=0;//第一轮子密钥初始化为0;
round1Key=0;//第二轮子密钥初始化为0;
round2Key=0;//第三轮子密钥初始化为0;
round3Key=0;//第四轮子密钥初始化为0;
(2)确定一个整型数组x[],用来存放攻击该轮的输入数据,即:若攻击的是第一轮,则x[0]-x[3]中存放的是第一轮的输入数据;若攻击的是第二轮,需要利用已经得到的第一轮子密钥计算第一轮的输出结果,在x[0]-x[3]中存放第二轮的输入数据;若攻击的是第三轮,需要利用已经得到的第一轮、第二轮子密钥计算第二轮的输出结果,在x[0]-x[3]中存放第三轮的输入数据;若攻击的是第四轮,需要利用已经得到的第一轮、第二轮、第三轮子密钥计算第三轮的输出结果,在x[0]-x[3]中存放第四轮的输入数据;
(3)按图4的流程,攻击方法选择S盒输出字节的汉明重量(其它两种攻击方法图4中亦有描述),以攻击第一轮为例,读取采集到的智能卡芯片功耗数据,进行计算最终返回selected[]数组,计算方法的伪代码如下:
1.For i=0To255:
2.     mid=ByteSub(x[1]^x[2]^x[3]^k[i])
3.     For j=0To3:
4.         p=i,q=24
5.         selected[p]=hw((mid>>q) & 0xFF)
6.         p+=256,q-=8
7.     End
8.End
其中k[i]中存放的是猜测密钥值,ByteSub()函数是S盒变换函数,mid是S盒输出的数据,hw()函数是汉明重量函数。伪代码中第1行是外层256次循环,第3行是内层4次循环,这样就能计算得到256*4=1024个selected值,存放于selected[p]中。
通过计算得到的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)利用已知的子密钥继而攻击下一轮,一直得到前四轮子密钥。
步骤二,从破解得到的SM4算法前4轮子密钥中还原SM4算法的密钥。
如图1所示,图1是SM4密钥扩展算法流程图,其中:
SM4的128位密钥:MK=(MK0,MK1,MK2,MK3);
系统参数(已知):FK=(FK0,FK1,FK2,FK3);
固定参数(已知):CK=(CK0,CK1,CK2,CK3);
系统参数FK和固定参数CK是已知的,在得到SM4前4轮子密钥rk0、rk1、rk2、rk3情况下,计算SM4完整的128位密钥方法如下:
1).已知rk3=f(K3,rk0,rk1,rk2),由rk0、rk1、rk2、rk3计算32位的K3
计算方法:K3=rk3^L’(SBox(rk0^rk1^rk2^CK3));
2).已知rk2=f(K3,K2,rk0,rk1),由rk0、rk1、rk2、K3计算32为的K2
计算方法:K2=rk2^L’(SBox(K3^rk0^rk1^CK2));
3).同理计算K1、K0
计算方法:K1=rk1^L’(SBox(K2^K3^rk0^CK1));
K0=rk0^L’(SBox(K1^K2^K3^CK0));
4).由K0、K1、K2、K3和FK0、FK1、FK2、FK3还原SM4密钥MK=(MK0,MK1,MK2,MK3);
计算方法:MK3=K3^FK3;
MK2=K2^FK2;
MK1=K1^FK1;
MK0=K0^FK0;
MK0、MK1、MK2、MK3依次拼接起来就是SM4的密钥MK。
其中L’()方法和SBox以及系统参数FK和固定参数CK可参见国家商用密码管理局公开的《SMS4密码算法》。
如图5所示,一种智能卡SM4算法的DPA攻击与密钥还原系统,包括以下装置:子密钥获取装置1,用于对SM4算法加密过程的前4轮进行DPA攻击,获取前4轮的子密钥;
密钥恢复装置2,用于利用得到的4轮子密钥恢复SM4密钥。
本实施例中,所述的子密钥获取装置是通过攻击S盒输出数据实现对SM4算法加密过程的前4轮进行DPA攻击,获取前4轮的子密钥;所述的SM4算法的密钥长度为128位,生成32轮子密钥参与每轮的运算,其中每一轮子密钥的长度为32位,每一轮运算中4次使用到了S盒;
所述的子密钥获取装置包括以下模块:用于攻击SM4算法的S盒输出数据字节的汉明重量的模块11;用于攻击SM4算法的S盒输出数据的某一位的模块12;用于攻击SM4算法的S盒输出所有位的模块13。
本领域技术人员应该明白,本发明所述的方法和系统并不限于具体实施方式中所述的实施例,上面的具体描述只是为了解释本发明的目的,并非用于限制本发明。本领域技术人员根据本发明的技术方案得出其他的实施方式,同样属于本发明的技术创新范围,本发明的保护范围由权利要求及其等同物限定。

Claims (10)

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,…,0xffffffff};
k[]中元素的格式为:0xABABABAB,其中A、B为十六进制0-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攻击与密钥还原方法,其特征是,步骤(1)中初始化的过程如下:
keys=4;//4字节密钥,即每轮攻击可以获取4字节子密钥;
candidates=256;//每个S盒有256个候选项;
dataLength=keys*candidates;//差分功耗的数量;
round0Key=0;//第一轮子密钥初始化为0;
round1Key=0;//第二轮子密钥初始化为0;
round2Key=0;//第三轮子密钥初始化为0;
round3Key=0;//第四轮子密钥初始化为0。
8.如权利要求1至7任一项所述的一种智能卡SM4算法的DPA攻击与密钥还原方法,其特征是,从破解得到的SM4算法前4轮子密钥中还原SM4算法的密钥方法如下:
1).已知rk3=f(K3,rk0,rk1,rk2),由rk0、rk1、rk2、rk3计算32位的K3
计算方法:K3=rk3^L’(SBox(rk0^rk1^rk2^CK3));
2).已知rk2=f(K3,K2,rk0,rk1),由rk0、rk1、rk2、K3计算32位的K2
计算方法:K2=rk2^L’(SBox(K3^rk0^rk1^CK2));
3).计算K1、K0
计算方法:K1=rk1^L’(SBox(K2^K3^rk0^CK1));
K0=rk0^L’(SBox(K1^K2^K3^CK0));
4).由K0、K1、K2、K3和FK0、FK1、FK2、FK3还原SM4密钥MK=(MK0,MK1,MK2,MK3);
计算方法:MK3=K3^FK3;
MK2=K2^FK2;
MK1=K1^FK1;
MK0=K0^FK0;
MK0、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盒输出所有位的模块。
CN201310445225.3A 2013-09-25 2013-09-25 一种智能卡sm4算法的dpa攻击与密钥还原方法及系统 Active CN103546277B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310445225.3A CN103546277B (zh) 2013-09-25 2013-09-25 一种智能卡sm4算法的dpa攻击与密钥还原方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310445225.3A CN103546277B (zh) 2013-09-25 2013-09-25 一种智能卡sm4算法的dpa攻击与密钥还原方法及系统

Publications (2)

Publication Number Publication Date
CN103546277A true CN103546277A (zh) 2014-01-29
CN103546277B CN103546277B (zh) 2016-08-31

Family

ID=49969358

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310445225.3A Active CN103546277B (zh) 2013-09-25 2013-09-25 一种智能卡sm4算法的dpa攻击与密钥还原方法及系统

Country Status (1)

Country Link
CN (1) CN103546277B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106357406A (zh) * 2016-11-02 2017-01-25 北京宏思电子技术有限责任公司 一种基于spa和零值判断高效获得私钥的方法
CN108683509A (zh) * 2018-05-15 2018-10-19 北京创世智链信息技术研究院 一种基于区块链的安全交易方法、装置及系统
CN108880783A (zh) * 2018-09-06 2018-11-23 成都三零嘉微电子有限公司 一种针对sm4算法的联合攻击方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090092245A1 (en) * 2006-03-31 2009-04-09 Axalto Sa Protection Against Side Channel Attacks
CN103227717A (zh) * 2013-01-25 2013-07-31 国家密码管理局商用密码检测中心 选择轮密钥异或输入进行sm4密码算法侧信道能量分析的应用

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090092245A1 (en) * 2006-03-31 2009-04-09 Axalto Sa Protection Against Side Channel Attacks
CN103227717A (zh) * 2013-01-25 2013-07-31 国家密码管理局商用密码检测中心 选择轮密钥异或输入进行sm4密码算法侧信道能量分析的应用

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
李浪等: "一种SMS4加密算法差分功耗攻击", 《计算机科学》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106357406A (zh) * 2016-11-02 2017-01-25 北京宏思电子技术有限责任公司 一种基于spa和零值判断高效获得私钥的方法
CN108683509A (zh) * 2018-05-15 2018-10-19 北京创世智链信息技术研究院 一种基于区块链的安全交易方法、装置及系统
CN108880783A (zh) * 2018-09-06 2018-11-23 成都三零嘉微电子有限公司 一种针对sm4算法的联合攻击方法
CN108880783B (zh) * 2018-09-06 2021-04-20 成都三零嘉微电子有限公司 一种针对sm4算法的联合攻击方法

Also Published As

Publication number Publication date
CN103546277B (zh) 2016-08-31

Similar Documents

Publication Publication Date Title
CN101739695B (zh) 一种基于三维Arnold映射的图像分组加密方法
AU2016386405B2 (en) Fast format-preserving encryption for variable length data
CN101076968B (zh) 使用拟群的密码原语、差错编码和伪随机数改进方法
CN103138917A (zh) 以s盒输入为基础的汉明距离模型在sm4密码算法侧信道能量分析的应用
CN104202145A (zh) 针对sm4密码算法轮函数输出的选择明文或密文侧信道能量分析攻击的方法
CN103227717A (zh) 选择轮密钥异或输入进行sm4密码算法侧信道能量分析的应用
CN103532701A (zh) 一种数值型数据的加密、解密方法
CN101009554A (zh) 一种抗功耗攻击的字节替换电路
CN108880783B (zh) 一种针对sm4算法的联合攻击方法
CN101814985B (zh) 应用多混沌映射多动态s盒的分组密码系统
CN102449951B (zh) 用于在电子组件中执行密码任务的方法
CN105577354A (zh) 基于概率区间划分和动态概率事件的图像加密和解密方法
CN104301095A (zh) Des轮运算方法和电路
CN103795527A (zh) 防止基于功耗分析攻击aes算法的软件掩码防护方案
CN109450632A (zh) 基于白盒分组密码clefia分析的密钥恢复方法
CN104602015A (zh) 一种实时视频监控加密认证方法
CN103647639A (zh) 一种对称密码算法抵抗侧信道分析的方法
Wang Side-channel analysis of AES based on deep learning
CN103607276A (zh) 新型基于随机函数的抗已知明文密文对攻击的分组加密方法
CN107147494B (zh) 一种基于链式相控加密操作的量子双重签名的方法
CN104639543A (zh) 基于射频识别标签id的传感器采集数据合法性检验方法
CN103546277A (zh) 一种智能卡sm4算法的dpa攻击与密钥还原方法及系统
CN109218008A (zh) 一种针对sm4密钥扩展算法的模板攻击方法
Philip et al. Survey: Image encryption using chaotic cryptography schemes
CN105117653B (zh) 一种近红外光谱数据加密方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100102 Beijing city Chaoyang District Wangjing Lize Park No. 101 Qiming International Building 7

Patentee after: Beijing Watchdata Limited by Share Ltd

Address before: 100102 Beijing city Chaoyang District Wangjing Lize Park No. 101 Qiming International Building 7

Patentee before: Beijing Woqi Data System Co., Ltd.

CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Guo Tianguang

Inventor after: Gong Yaming

Inventor after: Zhang Qing

Inventor before: Gong Yaming

Inventor before: Zhang Qing