CN106341222A - 一种针对sm4密码算法中间5轮的约减轮故障分析的方法 - Google Patents
一种针对sm4密码算法中间5轮的约减轮故障分析的方法 Download PDFInfo
- Publication number
- CN106341222A CN106341222A CN201610816572.6A CN201610816572A CN106341222A CN 106341222 A CN106341222 A CN 106341222A CN 201610816572 A CN201610816572 A CN 201610816572A CN 106341222 A CN106341222 A CN 106341222A
- Authority
- CN
- China
- Prior art keywords
- wheel
- wheels
- cryptographic algorithm
- fault location
- input
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/004—Countermeasures against attacks on cryptographic mechanisms for fault attacks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Lock And Its Accessories (AREA)
Abstract
本发明公开了一种针对SM4密码算法中间5轮的约减轮故障分析的攻击方法,包括以下步骤:S1:对SM4密码算法中间5轮的轮输入进行故障注入来减少迭代的轮数,获取SM4密码算法中间5轮的轮输入;S2:根据SM4密码算法中间5轮的轮输入推出中间4轮的轮密钥,根据SM4密钥扩展算法,逆向计算出初始密钥。采用上述分析方法不仅实现了针对SM4约减轮故障分析,而且降低了攻击完整密钥所需的攻击次数,增强了攻击效率和成功率。
Description
技术领域
本发明涉及密码算法分析检测领域,尤其涉及一种针对SM4密码算法中间5轮的约减轮故障分析的方法。
背景技术
一般情况下,运行密码算法的硬件设备或软件程序都能够正确的执行各种密码算法运算,但是在有干扰的情况下,密码运算的单元模块可能会出现一些故障,比如运算异常或者寄存器故障。利用这些故障引起的错误信息来攻击恢复出密钥的方法称为密码故障分析。
目前密码设备的接口和实现对故障注入的防护措施都有欠缺,一般都比较容易受到攻击。1996年,Boneh等首先将故障注入的方法引入到密码算法的分析中,从此针对智能芯片的故障注入技术开始飞速发展。
根据攻击者侵入密码设备的程度,可以将故障注入分为3种,包括非侵入式故障注入、半侵入式故障注入和侵入式故障注入。顾名思义,后两种方式需要在物理上接触密码芯片,因此需要用于剖片处理的设备、化学用品以及用于注入故障的特殊设备。非侵入式的故障注入主要通过外界干扰的方式,如电压、时钟、磁场等,因此不需要这些昂贵的设备。
故障注入攻击通常由两个部分构成,即故障注入和错误数据利用。故障注入是在某些适合的时间诱导密码运行中的某些中间状态发生故障,这种攻击的实施方式和实际产生的效果依赖于攻击者使用的设备和工作环境。错误利用主要是利用故障注入所产生的结果即错误数据信息,并使用与其对应的分析方法来恢复出部分甚至全部密钥,攻击能否成功一般既依赖于密码系统的设计和实现,也依赖于其算法规范。
故障注入攻击的执行可以分为4个步骤:
(1)选定故障模型
攻击者在进行故障注入前需要明确给出错误注入时机、位置、动作和效果模型。典型的故障模型为:在加密过程中某中间轮发生单字节的瞬时故障。
(2)故障注入
根据故障模型,攻击者选定故障注入的手段,如电流、时钟、激光、射线等干扰方式进行错误注入。常用的诱导故障发生的方法分为3类:
1.直接从外部加入非正常信息,如异常的时钟、电压、温度等;
2.结合探测攻击,从内部引入错误;
3.Skorobogatov和Anderson发明的半入侵攻击属于错误攻击,可在去除钝化层之后,使用激光或重粒子辐照芯片制定区域,引入错误。
(3)错误样本筛选
在故障注入完成后,攻击者根据故障模型,参考密码运行最终输出中的错误宽度、错误位置、错误值,甚至从错误注入后密码运行的时间长短来筛选理想的错误样本,该步骤对于错误分析效率具有较大影响。
(4)密钥分析
在筛选出理想的错误样本后,攻击者分析密码运行正确输出和错误输出之间的关系,使用一定的错误分析方法结合密码算法设计分析出相关密钥值。
SM4算法是分组长度和密钥长度均为128bit,加密算法和解密算法均为32轮的非线性迭代密码算法,其加密算法和解密算法结构相同,只是运算时轮密钥使用的顺序相反,解密轮密钥是加密轮密钥的逆序。SM4加密算法的详细流程如图1所示。
在图1中Xi∈Z2 32(Z2 e表示ebit的向量集(Z2 e)),明文输入为(X0,X1,X2,X3) ∈(Z2 32)4,密文输出为(Y0,Y1,Y2,Y3),其中Xi、Xi+1、Xi+2和Xi+3为轮迭代运算函数F的输入,rki∈Z2 32为每轮的轮密钥,i∈{ 0,1,2,…,31}。
从加密的流程可以看出,轮迭代函数F包括的运算有异或、非线性变换τ和线性变换L,轮迭代函数的表达式为:Xi+4=F(Xi,Xi+1,Xi+2,Xi+3,rki)=Xi⊕T(Xi+1⊕Xi+2⊕Xi+3⊕rki) ,在该表达式中,T表示合成置换,是由非线性变换τ和线性变换L复合而成,迭代函数F的详细的流程如图2所示,在整个SM4密码算法的加解密过程中,一共要执行32轮这样的轮迭代函数F。
令resi=T(Xi+1⊕Xi+2⊕Xi+3⊕rki),则:Xi+4= F(Xi,Xi+1,Xi+2,Xi+3,rki)= Xi⊕T(Xi+1⊕Xi+2⊕Xi+3⊕rki)变为:
Xi+4= F(Xi,Xi+1,Xi+2,Xi+3,rki)= Xi⊕resi
非线性变换τ是由4个并行S盒子构成,每个S盒子为固定的8bit输入8bit输出的置换,记为Sbox(.)。
设输入为Ai=ai,0||ai,1||ai,2||ai,3=Xi+1⊕Xi+2⊕Xi+3⊕rki,其中ai,j∈Z2 32,表示第i轮第j(j∈{0,1,2,3 })个S盒子的输入,||表示两个数据bit的拼接,输出为Bi=bi,0||bi,1||bi,2||bi,3,bi,j表示第i轮、第j个S盒子的输出,则非线性变换τ为:Bi=τ(Ai)=Sbox(ai,0)||Sbox(ai,1)||Sbox(ai,2)||Sbox(ai,3)
线性变换L的描述如下所示:
Ci=L(Bi)=Bi⊕(Bi<<<2)⊕(Bi<<<10)⊕(Bi<<<18)⊕(Bi<<<24)
在该式中,Ci∈Z2 32,Bi∈Z2 32,Ci为线性变换L的输出,Bi为线性变换L的输入,同时也是非线性变换τ的输出。
SM4的密钥扩展算法:轮密钥由加密密钥通过密钥扩展算法生成,其结构与加密变换类似。设加密密钥为MK=(MK0,MK1, MK2, MK3),i=0,1,2,3。令Ki∈Z2 32,i=0,1,…,35,轮密钥rki∈Z2 32,i=0,1,…,31,则轮密钥生成方法如下式所示:
(K0,K1, K2, K3)=( MK0⊕FK0,MK1⊕FK1, MK2⊕FK2, MK3⊕FK3)
rki=Ki+4=Ki⊕T`( Ki+1⊕Ki+2⊕Ki+3⊕CKi)
其中,T`变换与加密变换中的T变换基本相同,只是其中的线性变换L必须修改为以下L`:
L'(B)=B⊕(B<<<13)⊕(B<<<23)
系统参数FKi(i=1,2,3)的取值,采用16进制表示为:FK0=A3B1BAC6,FK1=56AA3350,FK2=677D9197,FK3=B27022DC。
固定参数CK的取值方法为:设cki,j为CKi的第j字节(i=0,1,...,31;j=0,1,2,3),即CKi=( cki,0, cki,1, cki,2, cki,3)∈(Z2 8)4,则cki,j=((4i+j)*7)mod 256。32个固定参数CKi用16进制表示为:
00070e15, 1c232a31,383f464d, 545b6269;
70777e85, 8c939aa1, a8afb6bd, c4cbd2d9;
e0e7eef5, fc030a11, 181f262d, 343b4249,
50575e65,6c737a81,888f969d,a4abb2b9;
c0c7ced5, dce3eaf1, f8ff060d, 141b2229;
30373e45, 4c535a61, 686f767d, 848b9299;
a0a7aeb5, bcc3cad1, d8dfe6ed, f4fb0209;
10171e25, 2c333a41, 484f565d, 646b7279。
根据密钥扩展算法,反推出密钥的方法如下:
a、加密运算:
对于加密运算,攻击出前四轮的轮子密钥rk0,rk1,rk2和rk3,根据密钥扩展算法得下式:
rk0=K4=K0⊕T(K1⊕K2⊕K3⊕CK0) (1)
rk1=K5=K1⊕T(K2⊕K3⊕K4⊕CK1) (2)
rk2=K6=K2⊕T(K3⊕K4⊕K5⊕CK2) (3)
rk3=K7=K3⊕T(K4⊕K5⊕K6⊕CK3) (4)
由(1)、(2)、(3)和(4)式可得K3,如(5)式所示。
K3=rk3⊕T(rk0⊕rk1⊕rk 2⊕CK3) (5)
由(3)和(5)式得K2,如(6)式所示。
K2=rk2⊕T(K3⊕rk0⊕rk1⊕CK2) (6)
由(2)、(5)和(6)式得K1,如(7)式所示。
K1=rk1⊕T(K2⊕K3⊕rk0⊕CK1) (7)
由(2)、(5)和(6)式得K0,如(8)式所示。
K0=rk0⊕T(K1⊕K2⊕K3⊕CK0) (8)
又(K0,K1,K2,K3)=(MK0⊕FK0, MK1⊕FK1, MK2⊕FK2, MK3⊕FK3),所以可得密钥为MK0=K0⊕FK0,MK1= K1⊕FK1,MK2= K2⊕FK2,MK3= K3⊕FK3。
b、解密运算:
对于解密运算,攻击出前四轮的轮子密钥rk0、rk1、rk2和rk3,根据密钥扩展算法得下式:
rk0=K35=K31⊕T(K32⊕K33⊕K34⊕CK31) (9)
rk1=K34=K30⊕T(K31⊕K32⊕K33⊕CK30) (10)
rk2=K33=K29⊕T(K30⊕K31⊕K32⊕CK29) (11)
rk3=K32=K28⊕T(K29⊕K30⊕K31⊕CK29) (12)
由(9)、(10)、(11)和(12)式子,得到K32、K33、K34和K35,i取31到0,计算Ki=Ki+4⊕T(Ki+1⊕K i+2⊕K i+3⊕CKi),即可得到K0、K1、K2和K3,又(K0,K1,K2,K3)=(MK0⊕FK0, MK1⊕FK1, MK2⊕FK2, MK3⊕FK3),所以可得密钥为MK0= K0⊕FK0,MK1= K1⊕FK1,MK2= K2⊕FK2,MK3= K3⊕FK3。
目前,尚未有针对SM4密码算法中间5轮的约减轮故障分析的攻击方法。该方法先利用故障注入的技术使SM4密码执行的时候提前跳出正常的32轮迭代,然后利用该故障情况下生成的输出得到中间5轮中某一轮输出,接着有计划的重复上述操作直至获取中间5轮的全部轮输出并结合明文信息计算出中间5轮的轮密钥,最后根据中间5轮的轮密钥计算出整个算法的初始密钥。
发明内容
本发明的目的是提供一种针对SM4密码算法中间5轮的约减轮故障分析的攻击方法,以解决对SM4算法进行攻击时方法复杂,样本量大的问题。通过注入故障的技术使SM4密码运行时提前跳出轮函数的迭代过程从而获取中间5轮中某轮的轮输入,然后重复上述操作以获取中间5轮的全部轮输入,然后结合这些信息推断出中间4轮的轮密钥,最后结合密钥扩展算法利用中间4轮的轮密钥计算出初始密钥,从而不仅实现了针对SM4密码算法线性变换输出的侧信道能量攻击,而且降低了攻击次数,增强了攻击效率、灵活性、有效性和成功率。
为解决上述技术问题,本发明提供一种针对SM4密码算法中间5轮的约减轮故障分析的攻击方法,具体包括以下步骤:
S1:对SM4密码算法中间5轮的轮输入进行故障注入来减少迭代的轮数,获取SM4密码算法中间5轮的轮输入;
S2:根据SM4密码算法中间5轮的轮输入推出中间5轮的轮密钥,根据SM4密钥扩展算法,逆向计算出初始密钥。
进一步地,S1具体包括以下步骤:
S11:选择故障注入整体的位置为中间5轮,选择完成之后设定sum=5,集合R={i,i+1,i+2,i+3,i+4},2<i<28;
S12:开始执行SM4密码算法,进行故障注入,若提前跳出加解密的迭代轮且轮数属于集合R中的元素,记该运算的轮数为r,若未成功则重复本步骤;
S13:判断r是否已在 R'中,如果是则跳转到步骤S12,如果不是则将其添加到集合 R'中,根据步骤S12中的输出利用反序变化推出该运算的轮输入,Count自增;
S14:判断Count是否等于sum,如果不是则跳转到S12继续执行,反之则故障注入完毕,根据密文信息和步骤S13中记录的中间5轮的轮输入推断第i轮、第i+1轮、第i+2轮、第i+3轮的轮输出。
附图说明
图1为SM4加密算法流程图。
图2为迭代函数F的流程图。
图3为对中间5轮的轮输入进行故障注入的位置示意图。
图4为针对SM4密码算法中间5轮的约减轮故障分析攻击方法的流程图。
Claims (2)
1.针对SM4密码算法中间5轮的约减轮故障分析的攻击方法,其特征在于,所述方法包括以下步骤:
S1:对SM4密码算法中间5轮的轮输入进行故障注入来减少迭代的轮数,获取SM4密码算法中间5轮的轮输入;
S2:根据SM4密码算法中间5轮的轮输入推出中间4轮的轮密钥,根据SM4密钥扩展算法,逆向计算出初始密钥。
2.根据权利要求1所述的针对SM4密码算法中间5轮的约减轮故障分析的攻击方法,其特征在于,所述S1具体包括以下步骤:
S11:选择故障注入整体的位置为中间5轮,选择完成之后设定sum=5,集合R={i,i+1,i+2,i+3,i+4},2<i<28;
S12:开始执行SM4密码算法,进行故障注入,若提前跳出加解密的迭代轮且轮数属于集合R中的元素,记该运算的轮数为r,若未成功则重复本步骤;
S13:判断r是否已在R'中,如果是则跳转到步骤S12,如果不是则将其添加到集合R'中,根据步骤S12中的输出利用反序变化推出该运算的轮输入,Count自增;
S14:判断Count是否等于sum,如果不是则跳转到S12继续执行,反之则故障注入完毕,根据密文信息和步骤S13中记录的中间5轮的轮输入推断第i轮、第i+1轮、第i+2轮、第i+3轮的轮输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610816572.6A CN106341222A (zh) | 2016-09-12 | 2016-09-12 | 一种针对sm4密码算法中间5轮的约减轮故障分析的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610816572.6A CN106341222A (zh) | 2016-09-12 | 2016-09-12 | 一种针对sm4密码算法中间5轮的约减轮故障分析的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106341222A true CN106341222A (zh) | 2017-01-18 |
Family
ID=57838616
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610816572.6A Pending CN106341222A (zh) | 2016-09-12 | 2016-09-12 | 一种针对sm4密码算法中间5轮的约减轮故障分析的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106341222A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106982114A (zh) * | 2017-03-12 | 2017-07-25 | 成都信息工程大学 | 一种针对sm3密码算法消息扩展的侧信道分析攻击的方法 |
CN110601818A (zh) * | 2019-09-25 | 2019-12-20 | 东华大学 | 一种检测sms4密码算法抵御统计故障攻击的方法 |
CN113381989A (zh) * | 2021-04-27 | 2021-09-10 | 中国科学院软件研究所 | 一种针对激光注入攻击的防护能力验证方法 |
CN114696992A (zh) * | 2020-12-25 | 2022-07-01 | 南方电网科学研究院有限责任公司 | 一种针对sm4算法中间轮的故障分析攻击检测方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104717055A (zh) * | 2015-03-25 | 2015-06-17 | 成都信息工程学院 | 一种针对sm4密码算法轮输入汉明重量的模板攻击方法 |
CN104868990A (zh) * | 2015-04-15 | 2015-08-26 | 成都信息工程学院 | 一种针对sm4密码算法轮输出的模板攻击方法 |
CN105227295A (zh) * | 2015-10-10 | 2016-01-06 | 成都芯安尤里卡信息科技有限公司 | 一种针对sms4密码算法的差分故障注入攻击 |
CN105933108A (zh) * | 2016-05-30 | 2016-09-07 | 清华大学 | 一种对sm4算法实现破解的方法 |
-
2016
- 2016-09-12 CN CN201610816572.6A patent/CN106341222A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104717055A (zh) * | 2015-03-25 | 2015-06-17 | 成都信息工程学院 | 一种针对sm4密码算法轮输入汉明重量的模板攻击方法 |
CN104868990A (zh) * | 2015-04-15 | 2015-08-26 | 成都信息工程学院 | 一种针对sm4密码算法轮输出的模板攻击方法 |
CN105227295A (zh) * | 2015-10-10 | 2016-01-06 | 成都芯安尤里卡信息科技有限公司 | 一种针对sms4密码算法的差分故障注入攻击 |
CN105933108A (zh) * | 2016-05-30 | 2016-09-07 | 清华大学 | 一种对sm4算法实现破解的方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106982114A (zh) * | 2017-03-12 | 2017-07-25 | 成都信息工程大学 | 一种针对sm3密码算法消息扩展的侧信道分析攻击的方法 |
CN110601818A (zh) * | 2019-09-25 | 2019-12-20 | 东华大学 | 一种检测sms4密码算法抵御统计故障攻击的方法 |
CN110601818B (zh) * | 2019-09-25 | 2022-12-06 | 东华大学 | 一种检测sms4密码算法抵御统计故障攻击的方法 |
CN114696992A (zh) * | 2020-12-25 | 2022-07-01 | 南方电网科学研究院有限责任公司 | 一种针对sm4算法中间轮的故障分析攻击检测方法 |
CN113381989A (zh) * | 2021-04-27 | 2021-09-10 | 中国科学院软件研究所 | 一种针对激光注入攻击的防护能力验证方法 |
CN113381989B (zh) * | 2021-04-27 | 2022-06-28 | 中国科学院软件研究所 | 一种针对激光注入攻击的防护能力验证方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Bella et al. | Kerberos version IV: Inductive analysis of the secrecy goals | |
CN106341222A (zh) | 一种针对sm4密码算法中间5轮的约减轮故障分析的方法 | |
Saha et al. | RK‐AES: An Improved Version of AES Using a New Key Generation Process with Random Keys | |
EP2955871B1 (en) | Cryptographic method for securely exchanging messages and device and system for implementing this method | |
CN106209350A (zh) | 一种针对sm4密码算法后4轮的约减轮故障分析的方法 | |
CN1828623A (zh) | 利用一次性密码保护计算机登录的方法 | |
CN105184181B (zh) | 文件的加密方法、解密方法及装置 | |
CN105406957B (zh) | 保护密码设备对抗实现攻击 | |
CN108429613A (zh) | 一种基于en-present算法的电网信息加密方法 | |
CN103441983A (zh) | 基于链路层发现协议的信息保护方法和装置 | |
CN106385412A (zh) | 一种针对sm4密码算法前4轮的约减轮故障分析的方法 | |
Elakrat et al. | Development of field programmable gate array–based encryption module to mitigate man-in-the-middle attack for nuclear power plant data communication network | |
EP3455995A1 (en) | Secure remote aggregation | |
CN103404073A (zh) | 针对无源监听的保护 | |
CN105095695A (zh) | 经由白箱实现的不正确功能行为实现授权 | |
CN109165531A (zh) | 一种aes掩码方法、电子设备及存储介质 | |
CN104052595A (zh) | 密码算法定制方法 | |
Liu et al. | Fault attacks on authenticated encryption modes for GIFT | |
CN112260820A (zh) | 一种Android系统下基于密钥拆分保护的移动支付密码键盘及其实现方法 | |
CN102158338B (zh) | 一种针对Twofish加密芯片的DFA分析方法及系统 | |
CN107294713B (zh) | 一种加密认证方法 | |
Li et al. | An extension of differential fault analysis on AES | |
Feng et al. | Formal security evaluation and improvement of BACnet/IP protocol based on HCPN model | |
CN107087000B (zh) | 一种变电站二次共享信息的安全处理方法 | |
CN112149166A (zh) | 非常规密码保护方法及银行智能机器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170118 |
|
WD01 | Invention patent application deemed withdrawn after publication |