一种针对SM4算法的联合攻击方法与流程

文档序号:16060739发布日期:2018-11-24 12:09阅读:660来源:国知局

本发明涉及芯片安全攻击检测领域。本发明提出了针对sm4能量分析攻击和差分分析联合攻击的方法,攻击时选择一定约束条件的明文输入,利用能量分析攻击的原理攻击sm4算法的第二轮和第四轮,得到敏感固定的中间值,然后利用sm4算法s盒差分分析原理,得到前4轮的轮密钥,最终恢复原始128bit密钥,扩展了sm4算法的攻击检测分析的方法。

背景技术

sm4密码算法包括加解密算法和密钥扩展算法,加解密算法与密钥扩展算法都采用32轮非线性迭代结构,明密文、初始密钥的分组长度均为128bit.

(1)sm4加解密算法

sm4算法采用非线性迭代结构,以字(表示为)为单位进行加密运算,称一次迭代运算为一轮变换,一共有32轮迭代,具体如图1所示。设输入x0,x1,x2,x3,轮密钥轮函数f为:

轮变换t:是一个可逆的变换,由非线性变换和线性变换l复合而成,可表示为非线性变换由4个并行的s盒构成,s盒为8bit输入8bit输出的置换,记为sbox(.)。

设输入为a,输出为b,线性变换l:非线性变换的输出是线性变换l的输入,设l变换输入为b,l变换的输出为c,

(2)sm4密钥扩展算法

sm4加解密算法的轮密钥由原始密钥通过密钥扩展算法生成,如图2所示。设原始128bit密钥mk=(mk0,mk1,mk2,mk3),令轮密钥为轮密钥的生成方法如下:

1)首先计算其中fk=(fk0,fk1,fk2,fk3)为系统参数;

2)然后计算对于i=0,1,2..31,其中t′变换与加密算法轮函数中的t基本相同,只是将其中的线性变为l′,

fk=(fk0,fk1,fk2,fk3),为系统参数

(3)能量分析攻击分析

在能量分析攻击中,相关性能量分析攻击是目前应用最为广泛的攻击方式之一。2004年,ericbrier等提出了相关性攻击分析,相关性攻击分析主要是利用统计学中的皮尔逊相关系数ρ,具体攻击流程如下:

1)随机输入n组明文信息mi,i=1,2,3...n,采集在每组明文输入密码算法在运行过程泄露的功耗信息pi,i=1,2,3...n;

2)通过猜测密钥ki,ki∈ω,ω为密钥空间,利用假设的密钥产生相应的假设中间值,根据假设中间值的汉明重量或者汉明距离,计算得到假设的能量消耗,记为wi,j

3)根据皮尔逊相关系数计算pi和wi,j的相关系数,相关系数最大时对应的密钥即为正确的密钥。

(4)sm4算法s盒差分分析原理

现代分组密码大都采用s查表操作来提高密码算法的非线性度,但恰是s盒差分特性,使s盒面临着差分分析的风险。对于sm4算法而言,令为第i轮的s盒的输入,为第i轮的s盒的输出,为第i轮的l变换的输出。

同时令δai=δa0,j,δa1,j,δa2,j,δa3,j,),i=1,2,…32为第i轮s盒的输入差分,δbi=(δb0,j,δb1,j,δb2,j,δb3,j,)i=1,2,…32为第i轮s盒的输出差分,δci=(δb0,j,δb1,j,δb2,j,δb3,j,)(i=1,2,3…32)为第i轮l变换的输出差分,令l的逆变换为l-1,则有δbi=l-1(δci)。定义一个集合如果攻击者得到δaj,i,δbj,i或者δaj,i,δcj,i,则可以恢复xj,i,在99.2%的概率下有2个解,在0.8%的概率下有4个解,根据以上分析可以得知,要恢复一个完整的子密钥,则平均需要2个不同的32位s盒的输入差分和输出差分即可。

目前针对sm4攻击的方法主要是选择明文进行能量分析攻击,选择所在的轮数较多,并且选择的攻击点是线性运算,不利于进行攻击分析。



技术实现要素:

为了克服现有技术的上述缺点,本发明提出了一种针对sm4算法的联合攻击方法。

本发明解决其技术问题所采用的技术方案是:一种针对sm4算法的联合攻击方法,包括如下步骤:

步骤一、初始化i=0;

步骤二、选择明文输入在明文输入约束下,采集sm4密码算法在密码设备上产生的第一组功耗曲线;选择第i+2轮的s盒输出作为中间数据,对其进行能量攻击分析,得出敏感中间值keyi+1;

步骤三、重新选择一组输入在明文输入约束下,采集sm4密码算法在密码设备上产生的第二组功耗曲线;选择第i+2轮的s盒输出作为中间数据,对其进行能量攻击分析,得出敏感中间值keyi+1′;

步骤四、重新选择一组输入在明文输入约束下,采集sm4密码算法在密码设备上产生的第三组功耗曲线;选择第i+2轮的s盒输出作为中间数据,对其进行能量攻击分析,得出敏感中间值keyi+1″;

步骤五、利用s盒差分分析恢复出rki和rki+1;

步骤六、判断i是否小于2:若是,则令i=i+2,然后进入步骤二;若否,则进入步骤七;

步骤七、利用前4轮轮密钥恢复出原始密钥。

与现有技术相比,本发明的积极效果是:

本发明将能量分析攻击和差分分析攻击相结合,提出了针对sm4算法的能量分析和差分分析的联合攻击方法,该方法选择s盒非线性输出作为攻击中间值,通过选择明文实现跨轮能量分析攻击,攻击第二轮和第四轮的敏感中间值,然后通过s盒的差分分析可以快速的计算出轮密钥,提高攻击效率。此外,本发明方法还可以扩展到所有的对称密码算法的联合攻击中。

附图说明

本发明将通过例子并参照附图的方式说明,其中:

图1为sm4加密算法的示意图;

图2为sm4密钥扩展算法的示意图;

图3为本发明的联合攻击的流程图。

具体实施方式

本发明提出了跨轮攻击和差分分析相结合的方法,该方法只需对第1轮和第3轮进行选择明文输入,其基本思想如下:

设x4为第一轮选择输入为a1=(a0,1,a1,1,a2,1,a3,1,)时轮输出的结果,此时选择输入的约束条件为:

随机

则有:

此时t(a1)为未知固定值,x0为随机值,令对应的第二轮输入设为a2,s盒输出为b2,则有

key1为固定值,因此可以选择key1为能量分析攻击目标,此时选择攻击的中间值为第二轮的s盒非线性变换的输出。在攻击出key1之后,由于key1中存在两个未知数,是无法得出轮密钥的。

重新选择明文,此时的约束条件为:

随机

则有:

此时t(a′1)为未知固定值,x′0为随机值,令对应的第二轮输入设为a′2,s盒输出为b′2,则有

选择产生的敏感中间值进行攻击key1′,能量分析攻击出key1′。

重新选择明文,此时的约束条件为:

随机

则有:

此时t(a″1)为未知固定值,x″0为随机值,令对应的第二轮输入设为a″2,s盒输出为b″2,则有

选择产生的敏感中间值进行攻击key1″,能量分析攻击出key1″。

由上面的分析可以得出,对其进行l的逆置换,即可得到第一轮s盒的输出差分δb1,而s盒输入差分同理可以得出利用s盒差分分析中定义的集合进行求解,进而得出rk0,将rk0代入到得到rk1,在攻击出rk0和rk1后,利用上述的方法选择第三轮的输入,保证第三轮的输入为固定值,设敏感中间值为key2和key′2,能量分析攻击key2和key′2后,利用s盒差分分析恢复出rk2和rk3,攻击流程图见图3所示。

最后由前4轮的轮密钥和密钥扩展算法反推出原始的128bit密钥。具体如下:

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1