一种针对SM4密码算法的差分故障分析检测方法技术

技术编号:33991698 阅读:26 留言:0更新日期:2022-07-02 09:51
本发明专利技术公开了一种针对SM4密码算法的差分故障分析检测方法。该方法收集对SM4密码算法差分故障检测时后四轮产生的错误密文,并利用产生的错误密文进行密钥还原,完成对SM4密码算法的差分故障检测。在错误密文选取上,利用正确的密文做比较,将明文相同、密文不同而且数据信息完整的错误密文选取出来,用于后续差分分析中。针对每轮攻击时,所采用的错误密文完全相同,无需根据每轮的需要进行密文数据分类。该方法解决了现阶段定对SM4密码算法的差分故障检测时需特殊字节产生特殊错误不可行的问题。的问题。的问题。

【技术实现步骤摘要】
一种针对SM4密码算法的差分故障分析检测方法


[0001]本专利技术涉及密码算法分析检测领域,尤其涉及一种针对SM4密码算法的差分故障分析检测。

技术介绍

[0002]一般情况下,运行密码算法的硬件设备或软件程序均能正确地执行各种密码算法,但在有些情况下,密码密码运算模块可能会出现寄存器错误或运算错误,利用这些错误行为或者信息来恢复密钥的方法称为密码错误分析。密码设备大都基于电子技术实现,接口也相对简单,较易受到外界干扰,这使得故障错误分析已经成为最有效的旁路分析方法之一,也是检测机构和设计企业对密码产品安全检测的方法之一。
[0003]故障检测就是密码芯片的工作条件发生变化时,密码芯片加密产生了错误的输出,密码运算模块可能会出现寄存器错误或运算,利用这些错误行为或者信息来恢复密钥的方法称为密码错误分析。密码设备大都基于电子技术实现,接口也相对简单,较易受到外界干扰,这使得错误分析已经成为最有效的旁路分析方法之一,也是检测机构和设计企业对密码产品安全检测的方法之一。
[0004]差分故障分析检测(DFA)是故障测试检测方法和传统的差分密码分析检测方法相结合后产生的一种检测方法,主要是利用同一明文分别在正常情况下的正确输出和错误输出之间的关系进行密钥破解。其具体表述如下:(1)确定一个明文,并在正确密钥作用下取得对应的正确密文;(2)针对同一明文,采集故障测试检测对应的错误密文;(3)对正确密文和错误密文进行分析,测试者可得到每个密钥的候选值集合,对多个密文分析后可得到这些密钥集合的交集,正确的密钥肯定在交集中,通过对多个密钥逐个分析进而实现密钥恢复。
[0005]SM4密码算法是我国自行设计的分组对称密码算法,其基本性质有:(1)分组长度和密钥长度都是128bit;(2)加密和解密算法结构一样,只是轮子密钥使用的顺序相反;(3)加密算法和密钥扩展算法均采用的是32轮非线性迭代结构,其重复性使得SM4算法能理想地用在一个专用芯片上;(4)SM4算法使用的是标准的算术和逻辑运算,其作用数最多为32bit,因此用硬件技术很容易实现。下面以加密的首轮流程和密钥编排算法为例,介绍SM4算法。
[0006]SM4加密算法的首轮流程如图1所示。假设输入明文为,输出密文为,轮密钥为,S盒的输入为,输出为,线性变换L的输出为,则SM4加密算法第一轮基本过程如下:1);
2)2)2);3)3);4);故第一轮的输出为(,其余32轮的步骤与第一轮相同,只是在最后一轮也就是第32轮还需要进行一个反序变换,如图2所示,最后输出密文为:(SM4算法中加密算法的子密钥由原始密钥通过密钥扩展算法生成,其流程如图3所示。设原始密钥MK=(,,,),i=0,1,2,3。令∈,i=0,1,2,

,35,子密钥∈,i=0,1,2,

,31,则子密钥生成方法如下所示:1)(,,,)=(

,

,

,

)2)==

(
⊕⊕⊕
)其中,变换与加密变换中的T 变换基本相同,但线性变换必须更改为,即(B)= B

(B<<<13)

(B<<<23) 。
[0007]系统参数FK的取值,采用16进制表示为:=A3B1BAC6,=56AA3350,=677D9197,= B27022DC。
[0008]固定参数CK的取值方法为:设为的第j字节(i=0,1,2,

,31;j=0,1,2,3),即=(, , , )∈,则=(4i+j)7(mod256)。32个固定参数用16进制表示为:00070e15, 1c232a31, 383f464d, 545b6269,e0e7eef5, fc030a11, 181f262d, 343b4249,50575e65, 6c737a81, 888f969d, a4abb2b9,c0c7ced5, dce3eaf1, f8ff060d, 141b2229,
30373e45, 4c535a61, 686f767d, 848b9299,a0a7aeb5, bcc3cad1, d8dfe6ed, f4fb0209,10171e25, 2c333a41, 484f565d, 646b727。
[0009]根据密钥编排算法,反推出原始密钥的方法如下:1)已知后四轮子密钥、、,则有:2)由(
⊕⊕⊕
)可得:(
⊕⊕⊕
)3)由可得:=,这就得到倒数第五轮即第28轮的子密钥。依次类推,即可恢复出各轮的子密钥和原始密钥。
[0010]在针对SM4密码算法的差分故障分析检测的研究中,张蕾和吴文玲于2006年最先进行了这类研究,但是其成功的前提是在对每轮进行故障分析检测前,需要收集在固定的位置产生单字节的错误,且在后续众多公开发表的文献中都是以某一位置产生单字节故障为前提的,而这种假设在实际对密码设备检测时难以实现。

技术实现思路

[0011]本专利技术的目的是提供一种针对SM4密码算法的差分故障分析检测方法,以解决两个实际问题:(1)对SM4密码算法的差分故障分析检测,无法收集到某个中间状态某些特殊字节产生特定故障产生的密文问题。2)还原轮密钥时,必须针对每轮的要求进行特殊的故障测试检测,过程繁琐。本专利技术创造性地对SM4加密算法后四轮进行了任意故障分析检测,不需要进行特殊故障,而且针对每轮的攻击所采用的故障数据均相同,也无需重新实施故障测试检测,这使得在实际进行故障分析检测时,故障分析检测实施起来非常容易。
[0012]为解决上述问题,本专利技术提供了一种针对SM4密码算法的差分故障分析检测方法,具体包括以下步骤:S1:确定一组明文X,并获得该组明文X在正常状态下的正确密文Y,和差分故障分析下的错误密文。
[0013]S11:确定一组明文X,并获得该组明文X在正确密钥K作用下的正确密文Y。
[0014]S12:输入相同明文X,并对SM4密码算法加密过程的后四轮进行任意故障测试检测,获得错误密文。
[0015]S13:利用明文X和正确密文Y,与错误密文进行比较,将数据返回值完整(包含明文和密文)、明文相同、密文不同的错误密文选取出来,用于后续差分分析。
[0016]S2:对获取到的正确密文Y和错误密文进行差分分析,获得SM4密码算法第32轮
的子密钥。然后利用相同的正确密文Y、错误密文和第32轮的子密钥获得第31轮的子密钥。同理,依次获得第30轮和29轮的子密钥和。
[0017]S21:根据反序变换,将密文逆向计算出进入反序变换R的输入值,即第32轮的输出值,其中正确输出值记为XX4、XX3、XX2、XX1,错误输出值为Xx4、Xx3、Xx2、Xx1;S22:计算S盒输入的差分值和S盒输出的差分值,分别记为Sin_differ本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种针对SM4密码算法的差分故障分析检测方法,以SM4算法加密过程的后四轮作为目标,其特征在于所述方法包括以下步骤:S1:确定一组明文X,并获得该组明文X在正常状态下的正确密文Y,和差分故障分析下的错误密文Y

;S2:对获取到的正确密文Y和错误密文Y

进行差分分析,获得SM4密码算法第32轮的子密钥rk
32
;然后利用相同的正确密文Y、错误密文Y

和第32轮的子密钥rk
32
获得第31轮的子密钥rk
31
;同理,依次获得第30轮和29轮的子密钥rk
30
和rk
29
;S3:利用得到的rk
32
、rk
31
、rk
30
、rk
29
结合SM4密钥编排算法逆运算,即可还原出各轮的子密钥和原始密钥。2.前述S1具体包括以下步骤:S11:确定一组明文X,并获得该组明文X在正确密钥K作用下的正确密文Y;S12:输入相同明文X,并对SM4密码算法加密过程的后四轮进行任意故障测试检测,获得错误密文Y

;S13:利用明文X和正确密文Y,与错误密文Y

...

【专利技术属性】
技术研发人员:习伟姚浩兰天吴震杜之波王敏向春玲
申请(专利权)人:华大半导体有限公司成都信息工程大学成都芯安尤里卡信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1