本发明涉及密码算法分析检测领域,尤其涉及一种针对sm3密码算法消息扩展的侧信道分析攻击的方法。
背景技术:
随着信息和分析电路技术的发展,对硬件密码电子设备的破解不再单纯的停留在协议和算法上,而是从其处理数据的过程中泄露的信息入手,进行破解。硬件密码电子设备在处理信息的工程中存在能量、电磁、错误和时间等信息的泄露,利用这些泄露的信息,结合密码学和统计学原理等,对密码电子设备进行攻击,就是所谓的侧信道分析攻击(sidechannelattacks)。在侧信道分析攻击中,比较常用的是差分分析攻击和相关性分析攻击。
其中,差分分析攻击的过程如下:
(1)随机选择n组不相同明文或密文mi(i∈[1,n])进行加/解密运算,采集每组明文进行加密运算时设备产生的能量或者电磁曲线ti(t),t∈{1,…,k},其中k为曲线轨迹的采样点数;
(2)选择密钥kl(l∈ω,ω为密钥空间),计算在kl和mi条件下,密码算法进行加密运算时在被攻击点产生的中间值di,l;
(3)根据中间值di,l确定选择函数f(mi,kl),根据选择函数将ti(t)分为两个子集s0和s1,定义式如下:
s0={ti(t)|f(mi,kl)=0}
s1={ti(t)|f(mi,kl)=1}
(4)计算每个采样点上两个子集的能量平均之差,如
s=quote
若kl选择不正确,当n比较大时,两个子集均值差s将趋近于零;若kl选择正确,在均值差s中将会出现一个最大尖峰,通过该尖峰即可确定kl选择正确。
相关性攻击的过程如下:
(1)随机选择n组不相同明文或密文mi(i∈[1,n])进行加/解密运算,采集每组明文进行加密运算时设备产生的能量或者电磁曲线ti(t),t∈{1,…,k},其中k为曲线轨迹的采样点数;
(2)选择密钥kl(l∈ω,ω为密钥空间),计算在kl和mi条件下,密码算法进行加密运算时在被攻击点产生的中间值di,l;
(3)取中间值di,l的汉明距离或者汉明重量建立能量模型hi,l,根据
(4)取相关系数最大值时对应的kl,即为实际密钥。
动态令牌是动态口令系统的重要组成部分,是一种一定周期内生成一个动态口令的设备,每个口令各不相同,为用户提供身份认证。
动态令牌使用杂凑算法或分组算法,结合截位函数,根据用户密钥和时间产生动态口令,基于sm3密码算法的动态令牌实现过程如下所示:
(1)s=f(k,id),其中f为sm3杂凑密码算法,s为sm3杂凑密码算法的输出,k是长度不少于128bit的运算密钥,id是长度不少于128bit变化的信息;
(2)od=truncate(s),其中,truncate()是截位函数,od为截位函数的输出;
(3)p=od%(10^n),n是令牌或其它终端显示口令的位数,p为最终显示的动态口令。
sm3密码杂凑算是杂凑值为256bit的国产商用密码算法,运算过程包括消息填充、消息扩展和迭代压缩。
消息扩展是将512比特的消息分组b按以下方法扩展生成132个字w0,w1,…,w67,w0',w1',…,w63',消息扩展过程描述如下:
(1)将消息分组划分为16个字w0,w1,…,w15;
(2)forj=16to67
wj<-p1(wj-16⊕wj-9⊕(wj-3<<<15))⊕(wj-13<<<15)⊕wj-6
endfor
forj=0to63
w1'=wj⊕wj+4
endfor
其中,p1为置换函数,为p1(x)=x⊕(x<<<15)⊕(x<<<23)
迭代压缩是利用压缩函数生成256bit杂凑值,压缩函数vi+1=cf(v(i),b(i))(0
abcdefgh<-vi
forj=0to63
ss1<-((a<<<12)+e+(tj<<<j))<<<7
ss2<-ss1⊕(a<<<12)
tt1<-ffj(a,b,c)+d+ss2+wj'
tt2<-ggj(e,f,g)+h+ss1+wj
d<-c
c<-b<<<9
b<<<a
a<<<tt1
h<<<g
g<-f<<<19
f<<<e
e<-p0(tt2)
endfor
vi+1=abcdefgh⊕vi
在压缩函数中,ffj(x,y,z)={x^y^z0≤j≤15;(x&y)|(x&z)|(y&z)16≤j≤63}和ggj(x,y,z)={x^y^z0≤j≤15;(x&y)|(~x&z)16≤j≤63},p0(x)=x^(x<<<9)^(x<<<17)为置换函数,tj={79cc45190≤j≤15;7a879d8a16≤j≤63}。
目前,尚未有选择sm3密码算法消息扩展wj作为攻击点,选择消息扩展中置换函数的输出作为攻击的目标,针对sm3密码算法的侧信道分析攻击。
技术实现要素:
本发明的目的是提供针对sm3密码算法消息扩展的侧信道分析攻击方法,解决置换函数p1(x)的扩散混淆作用导致直接对sm3密码算法进行侧信道分析攻击破解密钥,存在密钥搜索空间大和攻击时间长的问题。本发明首先侧信道分析攻击出消息扩展运算中置换函数的运算结果后,将所有的攻击结果联立方程组,根据置换函数的逆置换函数,对方程组求解,即可破解出动态令牌中的密钥。从而不仅实现了针对sm3密码算法的侧信道分析攻击,而且降低了密钥的搜索空间和减少了侧信道分析攻击样本数,增强了攻击效率、灵活性、有效性和成功率。
为解决上述技术问题,本发明提供针对sm3密码算法消息扩展的侧信道分析攻击方法,具体包括以下步骤:
s1:选择消息扩展运算的结果为攻击中间变量,选择消息扩展运算中置换函数的输出作为攻击的目标,进行侧信道分析攻击;
s2:将攻击结果联立方程组,根据逆置换函数求解方程组,即可破解最终密钥。
进一步,s1具体包括以下步骤:
s11:初始化i=16;
s12:选择sm3进行扩展运算wi作为攻击的中间变量;
s13:根据sm3密码算法消息,进行侧信道分析攻击,如果i=16,选择k1=p1(w0)⊕(w3<<<7)作为攻击目标,如果i=17,选择k2=p1(w1)作为攻击目标,如果i=18,选择k3=p1(w2)作为攻击目标,如果i=19,选择k4=p1(w3)⊕p1(k1<<<15)作为攻击目标,所述侧信道分析攻击方法采用相关性攻击方法或差分攻击方法;
s14:使i自增1,返回步骤s12继续进行攻击,直到最终攻击出k1、k2、k3、k4。
进一步,s2具体包括以下步骤:
s21:将k1、k2、k3、k4联立构建关于w0、w1、w2、w3的方程组;
s22:根据逆置换函数x=y⊕(y<<<5)⊕(y<<<13)⊕(y<<<14)⊕(y<<<15)⊕(y<<<21)⊕(y<<<23)⊕(y<<<29)⊕(y<<<30),对步骤s21中的方程组求解,即可得到最终密钥字节w0、w1、w2、w3;
本发明的有益效果为:针对sm3密码算法消息扩展的侧信道分析攻击方法,创造性的引入消息扩展运算中置换函数的输出作为攻击的对象,在侧信道分析攻击时,可以选择单次攻击任意比特,经过多次攻击的方法来实施,最后将攻击结果联立方程组,根据逆置换函数求解方程组,即可破解最终密钥。本方法的密钥搜索空间可根据实际的计算能力选择任意比特,所需实验样本少,且易实现,使针对sm3密码算法消息扩展的侧信道分析攻击具有更实际的应用性,从而增强了攻击的效率、有效性和成功率。
附图说明
图1为针对sm3密码算法消息扩展的侧信道分析攻击方法的流程图。
具体实施方式
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
针对sm3密码算法消息扩展的侧信道分析攻击方法,具体包括以下步骤:
s1:选择消息扩展运算的结果为攻击中间变量,选择消息扩展运算中置换函数的输出作为攻击的目标,进行侧信道分析攻击;
s2:将攻击结果联立方程组,根据逆置换函数求解方程组,即可破解最终密钥。
其中,s1具体包括以下步骤:
s11:初始化i=16;
s12:选择sm3进行扩展运算wi作为攻击的中间变量;
s13:根据sm3密码算法消息,进行侧信道分析攻击,如果i=16,选择k1=p1(w0)⊕(w3<<<7)作为攻击目标。如果i=17,选择k2=p1(w1)作为攻击目标,如果i=18,选择k3=p1(w2)作为攻击目标,如果i=19,选择k4=p1(w3)⊕p1(k1<<<15)作为攻击目标,所述侧信道分析攻击方法采用相关性攻击方法或差分攻击方法;
s14:使i自增1,返回步骤s12继续进行攻击,直到最终攻击出k1、k2、k3、k4。
进一步地,s13中采用的侧信道分析攻击方法为相关性攻击方法,具体包括以下步骤:
s1311:采集n组基于sm3密码算法的动态令牌在进行动态口令运算时的能量或者电磁曲线表示为tn(t),
s1312:如果i=16,选择k1=p1(w0)⊕(w3<<<7)作为攻击目标;如果i=17,选择k2=p1(w1)作为攻击目标;如果i=18,选择k3=p1(w2)作为攻击目标;如果i=19,选择k4=p1(w3)⊕p1(k1<<<15)作为攻击目标;
s1313:选择要攻击的比特长度为
s1314:猜测攻击目标
s1315:tn(t)和h的相关性
s1316:最大值时对应的c,即为
s1317:计算j=j+
s13中采用的侧信道分析攻击方法为差分攻击方法,具体包括以下步骤:
s1321:采集n组基于sm3密码算法的动态令牌在进行动态口令运算时的能量或者电磁曲线表示为tn(t),
s1322:如果i=16,选择k1=p1(w0)⊕(w3<<<7)作为攻击目标;如果i=17,选择k2=p1(w1)作为攻击目标;如果i=18,选择k3=p1(w2)作为攻击目标;如果i=19,选择k4=p1(w3)⊕p1(k1<<<15)作为攻击目标;
s1323:选择要攻击的比特长度为
s1324:如果
s1325:根据s=
s1326:计算j=j+
其中,s2具体包括以下步骤:
s21:将k1、k2、k3、k4联立构建关于w0、w1、w2、w3的方程组;
s22:根据逆置换函数x=y⊕(y<<<5)⊕(y<<<13)⊕(y<<<14)⊕(y<<<15)⊕(y<<<21)⊕(y<<<23)⊕(y<<<29)⊕(y<<<30),对步骤s21中的方程组求解,即可得到最终密钥字节w0、w1、w2、w3;
选择sm3密码算法中扩展运算中置换函数的运算结果作为攻击目标,再讲将所有的攻击结果联立方程组,根据置换函数的逆置换函数,对方程组求解,即可破解出动态令牌中的密钥。创造性的解决了置换函数p1(x)的扩散混淆作用导致直接对sm3密码算法进行侧信道分析攻击破解密钥,存在密钥搜索空间大的问题,降低了密钥的搜索空间和减少了侧信道分析攻击样本数,增强了攻击效率、灵活性、有效性和成功率。