一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种针对SM4二阶能量分析攻击方法与流程

2022-02-20 19:29:58 来源:中国专利 TAG:

一种针对sm4二阶能量分析攻击方法
技术领域
1.本发明涉及密码算法分析检测领域,尤其针对具有掩码防护的sm4密码算法实现二阶频域侧信道能量分析,特别是涉及对s盒输入输出中间掩码值相同的sm4密码算法进行二阶频域侧信道能量分析。


背景技术:

2.随着信息和分析电路技术的发展,对硬件密码电子设备的破解不再单纯的停留在协议和算法上,而是从其处理数据的过程中泄露的信息入手,进行破解。硬件密码电子设备在处理信息的工程中存在能量、电磁、错误和时间等信息的泄露,利用这些泄露的信息对密码电子设备进行攻击,就是所谓的侧信道攻击(side channel attacks),侧信道攻击可分为能量分析攻击、电磁攻击和错误攻击等,其中能量分析攻击因效率较高,成为侧信道的主要手段。
3.侧信道能量分析攻击是通过采集加密芯片等硬件密码电子设备在进行加、解密或签名等操作时产生的能量消耗,利用密码学和统计学原理等,分析和破译密钥信息的一种攻击方式,侧信道能量分析攻击又分为简单能量分析攻击(simple power analysis,spa)、差分能量分析攻击(differential power analysis,dpa)和相关性能量分析攻击(correlation power analysis,cpa)。
4.在侧信道能量分析攻击中, cpa和dpa相比spa具有更强的攻击性,所以能量分析攻击中比较常用的是cpa和dpa。
5.其中, dpa攻击的过程如下:(1)随机选择n组不相同明文或密文mi(i∈[1,n])进行加/解密运算,采集每组明文进行加密运算时设备产生的能量曲线ti(t),t∈{1,2,

,k},其中k为能量轨迹的采样点数。
[0006]
(2)选择密钥(ζ∈ω,ω为密钥空间),计算在和mi条件下,密码算法进行加密运算时在被攻击点产生的中间值。
[0007]
(3)根据中间值确定选择函数f(mi, ),根据选择函数将ti(t)分为两个子集s0和s1,定义式如下:s0={ti(t)|f(mi, )=0}s1={ti(t)|f(mi, )=1}(4)计算每个采样点上两个子集的能量平均之差,如s=
ꢀꢀꢀ-ꢀ
所示,其中|s0|和|s1|分别表示集合s0和s1中元素的个数。
[0008]
若选择不正确,当n比较大时,两个子集均值差s将趋近于零;若k
ζ
选择正确,在
均值差s中将会出现一个最大尖峰,通过该尖峰即可确定选择正确。
[0009]
cpa攻击的过程如下:(1)随机选择n组不相同明文或密文mi(i∈[1,n])进行加/解密运算,采集每组明文进行加密运算时设备产生的能量曲线ti(t),t∈{1,2,

,k},其中k为能量轨迹的采样点数。
[0010]
(2)选择密钥(ζ∈ω,ω为密钥空间),计算在和mi条件下,密码算法进行加密运算时在被攻击点产生的中间值。
[0011]
(3)取中间值d
i,ζ
的汉明距离或者汉明重量建立能量模型h
i,ζ
,根据式计算ti(t)和相关性ρi。
[0012]
(4)取相关系数最大值时对应的,即为实际密钥。
[0013]
侧信道能量分析攻击技术的不发展对侧信道的防御技术提出了新挑战,其中掩码防御是抵抗侧信道能量分析攻击的一种重要手段。掩码防护根据掩码值是否随机又分为固定掩码和随机掩码,根据重用情况又可分为横向重用型掩码、纵向重用型掩码和非重用型掩码。根据掩码时的运算方式的不同又可分乘法掩码、加法掩码,以及在布尔和算数掩码之间转换的方法等。
[0014]
掩码的目标为使每一个中间值在计算过程中始终处于被掩码状态,这样可以使计算过程中难于猜测到中间值而抵抗一阶侧信道能量分析攻击。在理想的掩码算法中,需要保证每个中间值具有不同的掩码,虽然一阶掩码可以抵抗一阶能量分析,但不能抵抗二阶能量分析,而二阶掩码不能抵抗三阶能量分析,尽管理论上掩码阶数越高越好,但在实际的应用中,需要考虑掩码引入所带来的额外开销,所以目前常用的掩码为一阶掩码。常见的sm4掩码方案包括s盒输入输出中间值掩码相同/不同;每一轮4个s盒的输入中间值相同/不同;每一轮4个s盒的输出中间值相同/不同;轮输入中间值相同/不同。
[0015]
高阶二阶相关性能量攻击是针对于一阶掩码防御算法的有一种攻击手段,其攻击思想为利用联合泄露,该联合泄露依赖于密码设备所处理的与同一个掩码相关的两个中间值。针对掩码为布尔异或掩码的算法,所选取的两个中间值u
m,
vm需满足:1)um=u

m且vm=v

m,其中u,v均为掩码为0时的中间值,m为掩码;2)u
m,
vm中至少有一个与密钥k的一部分有关;3)两个中间值u
m,
vm的组合中间值um⊕
vm与掩码无关。
[0016]
sm4算法是分组长度和密钥长度均为128bit,加密算法和解密算法均为32轮的非线性迭代密码算法,其加密算法和解密算法结构相同,只是运算时轮密钥使用的顺序相反,解密轮密钥是加密轮密钥的逆序。sm4加密算法的详细流程如图1所示。
[0017]
在图1中xi∈z
232
(z
2e
表示e比特的向量集),明文输入为(x0,x1,x2,x3)∈(z
232
)4,密文输出为(y0,y1,y2,y3),其中xi、x
i 1
、x
i 2
和x
i 3
为轮迭代运算函数f的输入,rki∈z
232
为每轮的轮密钥,i∈ { 0,1,2,

,31}。
[0018]
从加密的流程可以看出,轮迭代函数f包括的运算有异或、非线性变换τ和线性变换l,轮迭代函数的表达式为:x
i 4
=f(xi,x
i 1
,x
i 2
,x
i 3
,rki)=xi⊕
t(x
i 1

x
i 2

x
i 3

rki),
在改表达式中,t表示合成置换,是由非线性变换τ和线性变换l复合而成,迭代函数f的详细的流程如图2所示,在整个sm4密码算法的加解密过程中,一共要执行32轮这样的轮迭代函数f。
[0019]
令resi=t(x
i 1

x
i 2

x
i 3

rki),则:x
i 4
=f(xi,x
i 1
,x
i 2
,x
i 3
,rki)=xi⊕
t(x
i 1

x
i 2

x
i 3

rki)变为:x
i 4
=f(xi,x
i 1
,x
i 2
,x
i 3
,rki)=xi⊕
resi非线性变换τ是由4个并行s盒子构成,每个s盒子为固定的8bit输入8bit输出的置换,记为sbox(.)。
[0020]
设输入为ai=a
i,0
||a
i,1
||a
i,2
||a
i,3
=x
i 1

x
i 2

x
i 3

rki,其中a
i,j
∈z
232
,表示第i轮第j(j∈ { 0,1,2,3 })个s盒子的输入,||表示两个数据bit的拼接,输出为bi=b
i,0
||b
i,1
||b
i,2
||b
i,3
,b
i,j
∈z
232
,b
i,j
表示第i轮、第j个s盒子的输出,则非线性变换τ为:bi=τ(ai)=sbox(a
i,0
)||sbox(a
i,1
)||sbox(a
i,2
)||sbox(a
i,3
)。
[0021]
线性变换l的描述如下所示,ci=l(bi)=bi⊕
(bi《《《2)

(bi《《《10)

(bi《《《18)

(bi《《《24)在该式中,ci∈z
232
,bi∈z
232
,ci为线性变换l的输出,bi为线性变换l的输入,同时也是非线性变换τ的输出。
[0022]
对sm4 密码算法的能量分析方法通常选取s盒的输出、l移位的输出作为攻击对象,使用汉明重量、单比特模型,利用dpa 和cpa 方法进行分析。这些方法仅利用了典型的分析点。
[0023]
sm4的密钥扩展算法:轮密钥由加密密钥通过密钥扩展算法生成,其结构与加密变换类似。设加密密钥为mk=(mk0,mk1,mk2,mk3),mki∈z
232
,i=0,1,2,3;令ki∈z
232
,i=0,1,2,

,35,轮密钥rki∈z
232
,i=0,1,2,

,31,则轮密钥生成方法如下式所示:(k0,k1,k2,k3)=(mk0⊕
fk0,mk1⊕
fk1,mk2⊕
fk2,mk3⊕
fk3)rki=k
i 4
= ki⊕
t’(k
i 1
⊕ki 2
⊕ki 3

cki)其中,t’变换与加密变换中的t 变换基本相同,只是其中的线性变换l必须修改为以下l’:l’(b)=b

(b《《《13)

(b《《《23)系统参数fki(i=0,1,2,3)的取值,采用16进制表示为:fk0=a3b1bac6,fk1=56aa3350,fk2=677d9197,fk3= b27022dc固定参数ck的取值方法为设ck
i,j
为cki的第j字节(i=0,1,2,

,31;j=0,1,2,3),即cki=(ck
i,0
,ck
i,1
,ck
i,2
,ck
i,3
,)∈(z
232
),则ck
i,j
=(4i j)
×
7(mod256)。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)式所示。
[0024]
k3= rk3⊕
t(rk0⊕
rk1⊕
rk2⊕
ck3)
ꢀꢀ
(5)由(3)和(5)式得k2,如(6)式所示。
[0025]
k2= rk2⊕
t(k3⊕
rk0⊕
rk1⊕
ck2)
ꢀꢀ
(6)由(2)、(5)和(6)式得k1,如(7)式所示。
[0026]
k1= rk1⊕
t(k2⊕
k3⊕
rk0⊕
ck1)
ꢀꢀꢀ
(7)由(2)、(5)和(6)式得k0,如(8)式所示。
[0027]
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。
[0028]
b、已知加密密文/解密明文:对于已知加密密文/解密明文,攻击出后四轮的轮子密钥rk0、rk1、rk2、rk3,根据密钥扩展算法得下式:rk0=k
35
=k
31

t(k
32
⊕k33
⊕k34

ck
31
)(9)rk1=k
34
=k
30

t(k
31
⊕k32
⊕k33

ck
30
)(10)rk2=k
33
=k
29

t(k
30
⊕k31
⊕k32

ck
29
)(11)rk3=k
32
=k
28

t(k
29
⊕k30
⊕k31

ck
28
)(12)由(9)、(10)、(11)和(12)式子,得到k
32
、k
33
、k
34
和k
35
,i取31到0,计算ki= k
i 4

t(k
i 1
⊕ki 2
⊕ki 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。
[0029]
目前,也有选择轮函数的输出作为攻击对象的能量分析方法,即以轮函数输出v
i,jk
=(l-1
(x
i 4k
))j=(l-1
(x
ik
))j⊕
τ(x
i 1,jk

x
i 2,jk

x
i 3,jk

rk
i,j
)实施侧信道能量分析攻击,其中v
i,jk
是输入第k组明文或密文时,第i轮轮密钥第j个字节的攻击对象,i∈{0,1,2,3},j∈{0,1,2,3},l-1
(x)是对l(x)的逆运算。而此攻击对象的计算方法:v
i,jk
=(l-1
(x
i 4k
))j=(l-1
(x
ik
))j⊕
τ(x
i 1,jk

x
i 2,jk

x
i 3,jk

rk
i,j
),决定了在对sm4密码算法实施cpa或dpa侧信道能量分析攻击时,只能是按照字节的倍数进行攻击,而不能以轮函数输出的任意比特例如单比特进行cpa或dpa侧信道能量分析攻击。


技术实现要素:

[0030]
本发明的目的是提供一种针对sm4二阶能量分析攻击方法,特别是针对s盒输入输
出中间值掩码值相同的sm4密码算法实现了二阶频域侧信道能量分析方法。本方法首次提出了二阶能量分析的频域分析方法,频域分析较时域分析在曲线对齐问题上有较好的效果。
[0031]
实现上述发明的技术方案为,一种针对sm4二阶能量分析攻击方法,具体包括以下步骤:s1:采集功耗曲线,建立能量消耗矩阵;s2:将s1的时域功耗转换到频域;s3:猜测轮子密钥字节,计算组合中间值,将组合中间值映射为假设能量消耗矩阵;s4:选择s盒的输入输出异或s
in
_x
or
_s
out
作为攻击点,对功率谱矩阵进行cpa攻击;s5:重复s2、s3、s4过程分别获得一轮的4个s盒的子密钥得到轮密钥;s6:对前/后4轮进行步骤s2、s3、s4、s5操作获得4轮的子密钥,通过密钥逆扩展获得初始密钥。
[0032]
进一步地,s1具体包括以下步骤:随机选择组明文(密文),通过密码设备进行加密(解密)操作,采集密码设备的能量消耗曲线,将n条功耗曲线存为矩阵,第n次加/解密,对应t时刻的能量消耗记为,n∈{1,2,

,n},t∈{1,2,

,t}。
[0033]
进一步地,s2具体包括以下步骤:在n条能量迹上选取包含s盒输入输出部分关键点信息的能量迹,记为,且集合{a,a 1,

,b}包含于集合{1,2,

,t},a,b∈n

,=b-a 1,对(n*)进行傅里叶变换将时域信号转换到频域,记为e(ω)=fft((n*)),对e(ω)求功率谱矩阵,记为。
[0034]
进一步地,s3具体包括以下步骤:猜测轮子密钥字节,每一组明文/密文下针对一个s盒密钥猜测28次密钥,此时s盒输入中间值矩阵为、s盒输出的中间值矩阵
,组合中间值为,s
ni
=sin
ni

sout
ni
。采用汉明重量模型将组合中间值矩阵s(n*28)映射为假设能量消耗矩阵,所求假设能量消耗矩阵记为,h
ni
=hw(s
ni
)。
[0035]
进一步地,s4具体包括以下步骤:选择s盒的输入输出异或s
in
_x
or
_s
out
作为攻击点,对功率谱矩阵进行cpa攻击的步骤包括:对假设能量消耗矩阵h(n*256)的每一列hi和所处理后得到的功率谱矩阵e
p
的每一列pi计算皮尔逊相关系数,得到的矩阵大小为的相关系数矩阵。对的值进行判断,找出相关系数矩阵中的最大值,最大值对应的猜测密钥即为正确密钥。
[0036]
进一步地,s5具体包括以下步骤:重复s2、s3、s4过程由于一轮sm4密码运算中包含4个s盒运算,所以需要重复攻击一轮中的4个不同s盒才能够获得4个字节的轮密钥。
[0037]
进一步地,s6具体包括以下步骤:对前/后4轮进行步骤s2、s3、s4、s5操作获得4轮的子密钥的方法应用于:加密/解密运算已知明文/密文攻击前4轮,已知密文/明文攻击后4轮;最后通过密钥逆扩展获得初始密钥。
[0038]
本发明的技术方案具有以下优点:当前对具有掩码防护措施的sm4密码算法没有从频域分析的具体攻击方法。本发明对对s盒输入输出中间掩码值相同的sm4密码算法创新地提出了频域的二阶能量分析方法,扩展了对sm4密码算法攻击的研究手段,使用本方法能够更高效地对sm4密码算法实现二阶能量分析;本发明提出的方法在曲线对齐问题上具有更好的对齐效果。
附图说明
[0039]
图1为sm4加密算法流程图;
图2为迭代函数f的流程图;图3为s盒输入输出掩码值相同的防御方案;图4为s盒输入输出掩码值相同的sm4算法的攻击点;图5为一种针对sm4二阶能量分析攻击的流程图。
具体实施方式
[0040]
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
[0041]
一种针对sm4二阶能量分析攻击的方法,适用于s盒输入输出中间值相同的sm4密码算法,但不局限于sm4密码算法s盒输入输出中间值相同的密码算法,对于具备s盒输入输出中间值相同的其他密码算法s盒具有同样的攻击效果。本实施以针对s盒输入输出中间值相同的sm4加密算法,其二阶频域攻击方法包括以下步骤:s1:采集功耗曲线,建立能量消耗矩阵;s2:将s1的时域功耗转换到频域;s3:猜测轮子密钥字节,计算组合中间值,将组合中间值映射为假设能量消耗矩阵;s4:选择s盒的输入输出异或s
in
_x
or
_s
out
作为攻击点,对功率谱矩阵进行cpa攻击;s5:重复s2、s3、s4过程分别获得一轮的4个s盒的子密钥得到轮密钥;s6:对前/后4轮进行步骤s2、s3、s4、s5操作获得4轮的子密钥,通过密钥逆扩展获得初始密钥。
[0042]
其中,s1具体包括以下步骤:随机选择n组明文(密文),通过密码设备进行加密(解密)操作,采集密码设备的能量消耗曲线,将n条功耗曲线存为矩阵,第n次加/解密,对应t时刻的能量消耗记为,n∈{1,2,

,n},t∈{1,2,

,t}。
[0043]
s2具体包括以下步骤:已知加密明文/解密密文情况下,选取n组能量迹上第一轮的第m个包含s盒输入和s盒输出两个关键点信息的能量迹;已知加密密文/解密明文情况下,选取n组能量迹上第32轮的第m个包含s盒输入和s盒输出两个关键点信息的能量迹,m∈{1,2,3,4},记选取的能量迹矩阵为,且集合{a,a 1,

,b}包含于集合{1,2,

,t},a,b∈n

,=b-a 1,对(n*)进行傅里叶变换将时域信号转换到频域,记为e(ω)=fft((n*)),
对e(ω)求功率谱矩阵,记为。
[0044]
接下来,s3具体包括以下步骤:猜测s2中所选取s盒的轮子密钥字节,每一组明文/密文下针对一个s盒密钥猜测28次密钥,此时s盒输入中间值矩阵为、s盒输出的中间值矩阵,组合中间值为,s
ni
=sin
ni

sout
ni
。采用汉明重量模型将组合中间值矩阵s(n*28)映射为假设能量消耗矩阵,所求假设能量消耗矩阵记为,h
ni
=hw(s
ni
)。
[0045] s4具体包括以下步骤:选择s盒的输入输出异或s
in
_x
or
_s
out
作为攻击点,对功率谱矩阵进行cpa攻击的步骤包括:对假设能量消耗矩阵h(n*256)的每一列hi和所处理后得到的功率谱矩阵e
p
的每一列pi计算皮尔逊相关系数,得到的矩阵大小为的相关系数矩阵。对的值进行判断,找出相关系数矩阵中的最大值,若最大值为ρ
td
则正确猜测密钥为d。
[0046]
s5具体包括以下步骤:已知加密明文/解密密文情况下,重复s2、s3、s4过程分析第1轮的4个s盒,即m取1到4,得到第一轮轮密钥rk0;已知加密密文/解密明文情况下重复s2、s3、s4过程,分析第32轮的4个s盒,得到第32轮轮密钥rk
31

[0047]
s6具体包括以下步骤:对于已知加密明文/解密密文的攻击前4轮,在s5中分析出第一轮轮密钥rk0后,重复步
骤s2、s3、s4、s5,依次获得rk1,rk2,rk3;对于已知加密密文/解密明文的攻击后4轮,在s5中分析出第一轮轮密钥rk
31
后,重复步骤s2、s3、s4、s5,依次获得rk
30
,rk
29
,rk
28
,最后通过密钥逆扩展获得初始密钥。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献