CN103166752A - 选择轮函数为攻击对象进行sm4密码算法侧信道能量分析的应用 - Google Patents

选择轮函数为攻击对象进行sm4密码算法侧信道能量分析的应用 Download PDF

Info

Publication number
CN103166752A
CN103166752A CN2013100277842A CN201310027784A CN103166752A CN 103166752 A CN103166752 A CN 103166752A CN 2013100277842 A CN2013100277842 A CN 2013100277842A CN 201310027784 A CN201310027784 A CN 201310027784A CN 103166752 A CN103166752 A CN 103166752A
Authority
CN
China
Prior art keywords
key
energy
wheel
round
attack
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.)
Granted
Application number
CN2013100277842A
Other languages
English (en)
Other versions
CN103166752B (zh
Inventor
李大为
罗鹏
冯登国
曹伟琼
邓开勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
State Cryptography Administration Commercial Code Testing Center
Original Assignee
State Cryptography Administration Commercial Code Testing Center
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by State Cryptography Administration Commercial Code Testing Center filed Critical State Cryptography Administration Commercial Code Testing Center
Priority to CN201310027784.2A priority Critical patent/CN103166752B/zh
Publication of CN103166752A publication Critical patent/CN103166752A/zh
Application granted granted Critical
Publication of CN103166752B publication Critical patent/CN103166752B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明公开了选择轮函数为攻击对象进行SM4密码算法侧信道能量分析的应用,其核心在于加密/解密攻击对象为轮函数。该应用在对SM4密码算法的CPA侧信道能量分析步骤如下:(1)采集能量迹,建立采样能量消耗矩阵;(2)选择轮函数作为攻击对象;(3)确定攻击对象和模型后,猜测轮密钥,计算轮运算的中间值确定中间值矩阵;(4)中间值及中间值矩阵映射为仿真能量消耗值和仿真能量消耗矩阵;(5)计算仿真能量消耗矩阵与采样能量消耗矩阵的线性相关系数,得到正确的猜测密钥。本发明的方法提高了正确的猜测密钥与能量信息之间的相关性,增强了分析有效性和成功率。

Description

选择轮函数为攻击对象进行SM4密码算法侧信道能量分析的应用
技术领域
本发明属于密码算法分析检测技术领域,具体来说是涉及在密码算法实现、侧信道能量分析、密码模块检测过程中,针对实现SM4密码算法的密码模块进行侧信道能量分析,获取受保护的密钥信息的能量分析方法,即,选择轮函数为攻击对象进行SM4密码算法侧信道能量分析的应用。
背景技术
随着信息技术的发展,各种密码算法正被广泛地应用于经济、军事、行政等重要部门,保护信息的安全性。鉴于密码算法的重要性,密码算法软硬件实现(密码模块)的分析研究对保护信息安全具有重要的意义。近年来,多种对密码模块的攻击已广为人知,所有这些攻击的目的都是为了获取密码模块中的密钥。通常的攻击方式可分为侵入式攻击、半侵入式攻击和非侵入式攻击。近年来,由于非侵入式攻击中的侧信道分析实施方便、相对成本低廉而被广泛使用。侧信道分析可以细分为计时分析、能量分析和电磁分析。其中的侧信道能量分析是众多分析手段中最常用的方法之一,它突破了传统密码算法的分析模式,能力强大,实施相对容易。侧信道能量分析利用了密码模块能量消耗与数据运算和执行之间的相关性,基于密码算法实现的能量泄露函数建立能量模型,使用统计方法,猜测和验证密码模块使用的受保护密钥。侧信道能量分析方法一般包括,简单能量分析(SPA)、差分能量分析(DPA)、相关能量分析(CPA)和高阶差分能量分析(HODPA)。
其中,DPA原理是:对于N组明文/密文数据的加/解密运算,获取N条能量迹,这里的能量迹是指一次密码操作过程中采集到的能量消耗测量向量;对每一个猜测密钥K,产生相应的中间值(攻击对象),根据中间值确定选择函数;通过选择函数将能量迹集划分为两个子集;分别对两个子集对应的能量消耗取平均,并对两个平均能量消耗值求差,该均值差为选择函数对应的中间值对能量迹的影响效果。根据统计理论,若K猜测不正确,当能量迹的个数N趋近无穷大时,两子集的均值差将趋近于零;若K猜测正确时,在能量迹中的某个样点,将会出现一个均值差的最大尖峰(绝对值最大值),通过最大尖峰可确定正确的密钥。
CPA原理是:对于N组明文/密文数据的加/解密运算,获取N条能量迹;对每一个猜测密钥K,产生相应的中间值(攻击对象);根据中间值建立能量模型;通过能量模型将中间值映射为仿真能量消耗;计算仿真能量消耗与能量迹之间的线性相关系数,范围在[-1,1]之间;选取相关系数中绝对值的最大值,理论上为1,但是由于采集能量迹过程中不可避免存在噪声干扰,最大值小于1,该相关系数最大值对应的猜测密钥即为正确密钥。
SM4密码算法是我国公开发布的第一个商用密码分组算法,SM4密码算法的数据分组和密钥长度均为128比特,SM4密码算法的加密算法与密钥扩展算法都采用32轮非线性迭代结构。
SM4密码算法的结构如下:
Figure BSA00000846951200021
为加密明文,
Figure BSA00000846951200022
为第i轮的算法输入,
Figure BSA00000846951200023
为第i轮的轮密钥,轮函数F为:
F ( X i , X i + 1 , X i + 2 , X i + 3 , rk i ) = X i ⊕ T ( X i + 1 ⊕ X i + 2 ⊕ X i + 3 ⊕ rk i ) - - - ( 1 )
其中,T:是一个可逆变换,由非线性变换τ和线性变换L复合而成,即T(.)=L(τ(.))。
τ由4个并行的S盒构成,如图1所示,设输入为
Figure BSA00000846951200026
输出为 B = ( b 0 , b 1 , b 2 , b 3 ) ∈ ( Z 2 8 ) 4 , 则:
(b0,b1,b2,b3)=τ(A)=(Sbox(a0),Sbox(a1),Sbox(a2),Sbox(a3))       (2)
非线性变换τ的输出是线性变换L的输入。设输入为
Figure BSA00000846951200028
输出为 C ∈ Z 2 32 , 则:
C = L ( B ) = B &CirclePlus; ( B < < < 2 ) &CirclePlus; ( B < < < 10 ) &CirclePlus; ( B < < < 18 ) &CirclePlus; ( B < < < 24 ) - - - ( 3 )
假设Ai为第i轮S盒的输入,Bi为第i轮S盒的输出、L移位的输入,Ci为第i轮L移位的输出。根据算法满足如下:
A i = ( X i + 1 &CirclePlus; X i + 2 &CirclePlus; X i + 3 &CirclePlus; rk i ) - - - ( 4 )
Bi=τ(Ai)                                  (5)
Ci=L(Bi)                                   (6)
X i + 4 = X i &CirclePlus; C i - - - ( 7 )
根据上式(4)、(5)、(6)、(7),可得第i+1轮的轮输入(Xi+1,Xi+2,Xi+3,Xi+4),依次运算32轮,即可以得到输出密文 Y = ( Y 0 , Y 1 , Y 2 , Y 3 ) = ( X 35 , X 34 , X 33 , X 32 ) &Element; ( Z 2 32 ) 4 , 上述SM4密码算法的加密结构流程如图1所示。
SM4密码算法的密钥扩展算法与加密算法结构类似,如图2,仅线性变换L移位函数不一致。令初始加密密钥为(MK0,MK1,MK2,MK3)。
( K 0 , K 1 , K 2 , K 3 ) = ( MK 0 &CirclePlus; FK 0 , MK 1 &CirclePlus; FK 1 , MK 2 &CirclePlus; FK 2 , MK 3 &CirclePlus; FK 3 ) - - - ( 8 )
其中,(FK0,FK1,FK2,FK3)为已知常量。
rk i = K i + 4 = K i &CirclePlus; T &prime; ( K i + 1 &CirclePlus; K i + 2 &CirclePlus; K i + 3 &CirclePlus; CK i ) = K i &CirclePlus; L &prime; ( &tau; ( K i + 1 &CirclePlus; K i + 2 &CirclePlus; K i + 3 &CirclePlus; CK i ) ) - - - ( 9 )
其中,τ函数与上述SM4密码算法加密结构中的τ函数一致,rki为第i轮的加密密钥,i=0,1,…,31,CKi为已知常量。
线性变换L′为:
L &prime; ( x ) = x &CirclePlus; ( x < < < 13 ) &CirclePlus; ( x < < < 23 ) - - - ( 10 )
根据式(9),可分别获得32轮轮密钥(rk0,rk1,…,rk31),长度均为32比特。
数据解密和数据加密的算法结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。解密时,使用轮密钥序(rk31,rk30,…,rk0)
对SM4密码算法的能量分析方法通常选取S盒的输出、L移位的输出作为攻击对象,使用汉明重量、单比特模型,利用DPA和CPA方法进行分析。这些方法仅利用了典型的分析点,不能全面有效对SM4密码算法实施分析。此外,当上述分析点可利用的能量泄露信息很少时,将会影响对SM4密码算法分析的成功率。因此,需要提出更有效的侧信道能量分析方法。
发明内容
在SM4密码算法分析中,侧信道能量分析方法是否有效,其关键在于密码算法中的攻击对象选取和相应能量模型的选择,选取恰当的攻击对象可提高采样能量信息的信噪比和分析的成功率。
本发明的目的在于系统分析SM4密码算法的实现特征,创造性地选择包括了SM4密码算法中轮输入/输出信息和密钥信息的轮函数作为侧信道能量分析的攻击点,从而提高了正确的猜测密钥与能量信息之间的相关性,增强了分析有效性和成功率。
实现上述目的本发明的技术方案为,选择轮函数为攻击对象进行SM4密码算法侧信道能量分析的应用,其加密/解密攻击对象为轮函数。
上述选择轮函数为攻击对象进行SM4密码算法侧信道能量分析的应用时,进行加密/解密前4轮攻击时,如图3所示,选择轮函数输出为攻击点,即
Figure BSA00000846951200041
作为攻击对象,这里
Figure BSA00000846951200042
是输入第k组明文/密文
Figure BSA00000846951200043
时,第i(i∈{0,1,2,3})轮轮密钥第j(j∈{0,1,2,3})个字节对应的攻击对象,
Figure BSA00000846951200044
是第i轮轮函数的输出,L-1(x)是对L(x)进行一个逆运算,
L - 1 ( x ) = x &CirclePlus; ( x < < < 2 ) &CirclePlus; ( x < < < 4 ) &CirclePlus; ( x < < < 8 ) &CirclePlus; ( x < < < 12 ) &CirclePlus; ( x < < < 14 ) &CirclePlus; ( x < < < 16 ) &CirclePlus;
( x < < < 18 ) &CirclePlus; ( x < < < 22 ) &CirclePlus; ( x < < < 24 ) &CirclePlus; ( x < < < 30 ) ,
Figure BSA00000846951200047
Figure BSA00000846951200048
进行L-1移位后的第j个字节,则
v i , j k = ( L - 1 X i + 4 k ) j = ( L - 1 X i k ) j &CirclePlus; &tau; ( ( X i + 1 , j k &CirclePlus; X i + 2 , j k &CirclePlus; X i + 3 , j k ) &CirclePlus; rk i , j ) , rk i , j &Element; Z 2 8 为第i轮轮密钥
Figure BSA000008469512000411
中的第j个字节,分别为的第j个字节;进行加密/解密后4轮攻击时,相应的密文/明文为已知,如图4所示,选择选择轮函数输入为攻击点,即
Figure BSA00000846951200052
(i∈{31,30,29,28})为攻击对象, v i , j k = ( L - 1 X i k ) j = ( L - 1 X i + 4 k ) j &CirclePlus; &tau; ( ( X i + 1 , j k &CirclePlus; X i + 2 , j k &CirclePlus; X i + 3 , j k ) &CirclePlus; rk i , j ) .
上述选择轮函数为攻击对象进行SM4密码算法侧信道能量分析的应用中,选择轮函数为攻击对象用于对SM4密码算法的CPA/DPA侧信道能量分析。
选择轮函数为攻击对象对SM4密码算法的CPA侧信道能量分析步骤如下:
(1)采集能量迹,具体是进行每组明文/密文进行加密/解密运算,采集测量时间点对应的能量消耗信息,即为能量迹,建立采样能量消耗矩阵;
(2)选择轮函数作为攻击对象;
(3)确定攻击对象和模型后,猜测轮密钥,计算轮运算的中间值确定得到中间值矩阵;
(4)利用上步的中间值及中间值矩阵映射为仿真能量消耗值和仿真能量消耗矩阵;
(5)计算仿真能量消耗矩阵与采样能量消耗矩阵的线性相关系数,得到正确的猜测密钥。
上述选择轮函数为攻击对象对SM4密码算法的CPA侧信道能量分析步骤中,利用CPA进行步骤(3)的具体方法是:猜测第i轮轮密钥rki中的字节rki,j,rki,j的猜测值分别为rki,j,s=s,s∈{0,...,255},对256个猜测密钥字节rki,j,s,分别进行第i轮加密/解密的轮运算,确定256个猜测密钥字节rki,j,s对应的中间值:
Figure BSA00000846951200054
其中,
Figure BSA00000846951200055
为rki,j等于rki,j,s时得到的
Figure BSA00000846951200056
当对N(k∈{0,1,…,N-1})组明文/密文进行加密/解密操作时,依次计算轮密钥字节rki,j,s对应的中间值,得到中间值矩阵V(N×256):
V ( N &times; 256 ) = v i , j , 0 0 . . . v i , j , 255 0 . . . v i , j , s k . . . v i , j , 0 N - 1 . . . v i , j , 255 N - 1 ; 利用CPA进行步骤(4)的具体方法是:(3)步中间值映射的仿真能量消耗为:
Figure BSA00000846951200062
即第k组明文第i轮第j个字节第s个猜测密钥字节对应的仿真能量消耗,HW(x)为x中比特位值为1的个数,对N组明文/密文进行加密/解密操作,确定轮密钥字节rki,j,s对应的仿真能量消耗矩阵为:
上述选择轮函数为攻击对象对SM4密码算法的CPA侧信道能量分析步骤中,利用CPA进行步骤(5)的具体方法是:对步骤(1)的采样能量消耗矩阵 W ( N &times; T ) = s 0 0 . . . s T - 1 0 . . . s t k . . . s 0 N - 1 . . . s T - 1 N - 1 和步骤(4)的仿真能量消耗矩阵H分别计算两者第s列和第t列的相关系数ρs,t
&rho; s , t &ap; r s , t = &Sigma; k = 0 N - 1 [ h i , j , s k - h i , j , s k &OverBar; ] [ s t k - s t k &OverBar; ] &Sigma; k = 0 N - 1 [ h i , j , s k - h i , j , s k &OverBar; ] 2 &Sigma; k = 0 N - 1 [ s t k - s t k &OverBar; ] 2 其中,
Figure BSA00000846951200066
表示为第k个明文/密文、第t个时间点对应的采样能量消耗值,T为能量迹中的时间点个数,
Figure BSA00000846951200067
为矩阵H第s列的平均值,为矩阵W第t列的平均值,ρs,t表示第s个猜测密钥对应的仿真能量消耗与第t个时间点采样能量消耗之间的线性相关系数,rs,t为该相关系数的近似计算值,计算所有列列之间的相关系数,得到仿真能量消耗和采样能量消耗的相关系数矩阵为 R ( 256 &times; T ) = r 0,0 . . . r 0 , T - 1 . . . r s , t . . . r 255,0 . . . r 255 , T - 1 , 选取R中的最大值rm,n=max(rs,t),rm,n对应的猜测密钥rki,j,m为正确的猜测轮密钥字节,即得到正确的第i轮轮密钥第j个字节rki,j;重复第(1)-(5)步,可分别获得轮密钥的其他3个密钥字节,从而得到第i轮正确的轮密钥rki,对于前4轮,使用轮密钥rki进行第i轮密码运算,得到第i轮的N组轮输出,即第i+1轮的轮输入
Figure BSA00000846951200071
依次获得前4轮的加密轮密钥(rk0,rk1,rk2,rk3)=(K4,K5,K6,K7)或解密轮密钥(rk0,rk1,rk2,rk3)=(K35,K34,K33,K32);对于后4轮,使用轮密钥rki进行第i轮密码运算,得到第i-1轮的轮输出
Figure BSA00000846951200072
依次获得后4轮的加密轮密钥(rk31,rk30,rk29,rk28)=(K35,K34,K33,K32)或解密轮密钥(rk31,rk30,rk29,rk28)=(K4,K5,K6,K7);根据密钥扩展算法逆运算得到加/解密密钥。
上述选择轮函数为攻击对象对SM4密码算法的DPA侧信道能量分析步骤如下:
(a)采集能量迹,具体是进行每组明文/密文进行加密/解密运算,采集测量时间点对应的能量消耗信息,即为能量迹,建立采样能量消耗矩阵;
(b)选择轮函数作为攻击对象,确定DPA选择函数;
(c)猜测轮密钥,将平均能量消耗划分为两个平均能耗子集矩阵;
(d)根据(c)步得到的两个平均能耗子集求差,确定正确的猜测密钥。
上述选择轮函数为攻击对象对SM4密码算法的DPA侧信道能量分析步骤中,如图3、图4所示,采用DPA进行前/后4轮攻击时的步骤(b)中选择攻击对象为轮函数
Figure BSA00000846951200073
i∈{0,1,2,3}或
Figure BSA00000846951200074
i∈{31,30,29,28}后,根据攻击时每个字节输出数据的汉明重量期望值
Figure BSA00000846951200081
已知
Figure BSA00000846951200082
以明文/密文及猜测密钥字节rki,j作为参数,则确定DPA选择函数为: D ( X k , j , rk i , j ) = 1 E ( HW ( v i , j k ) ) < 4 0 E ( HW ( v i , j k ) ) > 4
上述选择轮函数为攻击对象对SM4密码算法的DPA侧信道能量分析步骤中,利用DPA进行步骤(c)的具体方法是:猜测第i轮轮密钥rki中的字节rki,j,rki,j的猜测值分别为rki,j,s=s,s∈{0,...,255},猜测轮密钥字节rki,j,s对应的选择函数D(Xk,j,rki,j,s)=1时,则总个数
Figure BSA00000846951200084
rki,j,s对应的选择函数D(Xk,j,rki,j,s)=0时,则总个数对于能量迹中时间点t,得到该点两个的总能量消耗均值:
d 0 i , j , s t = &Sigma; k = 0 N - 1 ( 1 - D ( X k , j , rk i , j , s ) ) s t k n 0 d 1 i , j , s t = &Sigma; k = 0 N - 1 D ( X k , j , rk i , j , s ) s t k n 1 , 其中,
Figure BSA00000846951200088
为使用猜测轮密钥字节rki,j,s进行N组加密/解密操作时,选择函数等于0所对应时间点t的n0组能量消耗平均值;
Figure BSA00000846951200089
为选择函数等于1所对应时间点t的n1组能量消耗平均值,n0+n1=N,由上式对所有的时间点求能耗均值,得到两个能耗矩阵D0(256×T)和D1(256×T),分别为:
D 0 ( 256 &times; T ) = d 0 i , j , 0 0 . . . d 0 i , j , 0 T - 1 . . . d 0 i , j , s t . . . d 0 i , j , 255 0 . . . d 0 i , j , 255 T - 1 D 1 ( 256 &times; T ) = d 1 i , j , 0 0 . . . d 1 i , j , 0 T - 1 . . . d 1 i , j , s t . . . d 1 i , j , 255 0 . . . d 1 i , j , 255 T - 1 ;
利用DPA进行步骤(d)的具体方法是:计算步骤(c)得到的平均能耗矩阵D0(256×T)和D1(256×T)的差矩阵:
&Delta;D = D 1 - D 0 = d 1 i , j , 0 0 - d 0 i , j , 0 0 . . . d 1 i , j , 0 T - 1 - d 0 i , j , 0 T - 1 . . . d 1 i , j , s t - d 0 i , j , s t . . . d 1 i , j , 255 0 - d 0 i , j , 255 0 . . . d 1 i , j , 255 T - 1 - d 0 i , j , 255 T - 1
选择最大的能耗均值差
Figure BSA00000846951200091
Figure BSA00000846951200092
对应的猜测轮密钥字节rki,j,m为正确密钥字节,即得到正确的第i轮轮密钥的第j个字节rki,j=rki,j,m,重复第(a)-(d)步,可分别获得轮密钥的其他3个密钥字节,从而得到第i轮正确的轮密钥rki,对于前4轮,使用轮密钥rki进行第i轮密码运算,得到第i轮的N组轮输出,即第i+1轮的轮输入
Figure BSA00000846951200093
依次获得前4轮的加密轮密钥(rk0,rk1,rk2,rk3)=(K4,K5,K6,K7)或解密轮密钥(rk0,rk1,rk2,rk3)=(K35,K34,K33,K32);对于后4轮,使用轮密钥rki进行第i轮密码运算,得到第i-1轮的轮输出依次获得后4轮的加密轮密钥(rk31,rk30,rk29,rk28)=(K35,K34,K33,K32)或解密轮密钥(rk31,rk30,rk29,rk28)=(K4,K5,K6,K7);根据密钥扩展算法逆运算得到加/解密密钥。
本发明的技术方案具有以下优点,(1)现有对SM4密码算法的能量泄露分析点单一,不能很好地适应各种类型的SM4密码算法的实现。本发明针对SM4密码算法创新地提出了一个新的分析点,使用本发明提出的新方法能够更有效、全面地对SM4密码算法实现进行侧信道能量分析;(2)本发明提出的方法通过不同的分析点选择,使能量泄露的信息包含了S盒输出信息和轮输入信息,使得Pexp值增大,增大了猜测的正确密钥仿真能量信息与采样能量信息的相关性,提高了攻击的成功率。
附图说明
图1是SM4密码算法的加密结构流程图;
图2是SM4密码算法的密钥扩展算法流程图;
图3是SM4密码算法轮函数输出的CPA前4轮攻击点选择位置;
图4是SM4密码算法轮函数输出的CPA末4轮攻击点选择位置;
图5是CPA分析流程图;
图6是DPA分析流程图;
图7是1000组加密运算的采样波形;
图8是对第1轮轮函数输出分析,正确轮轮密钥对应的相关系数波形,分别对应4个S盒;
图9是对第1轮S盒输出分析,正确轮轮密钥对应的相关系数波形,分别4个S盒;
具体实施方式
下面对本发明的技术方案进行具体描述,首先以SM4密码算法的轮函数进行CPA分析为例,说明本发明的技术方案。如图3是SM4密码算法轮函数输出的CPA前4轮攻击点选择位置,图4是SM4密码算法轮函数输出的CPA末4轮攻击点选择位置;图5是CPA分析流程图。对于SM4密码算法的加密运算,若已知加密明文,分析密码算法的前4轮。假设进行N组明文的加密运算,令第k组明文输入为 X k = ( X 0 k , X 1 k , X 2 k , X 3 k ) , k∈{0,...,N-1},第i轮的轮输入为 ( X i k , X i + 1 k , X i + 2 k , X i + 3 k ) , i依次为0,1,2,3,其步骤如下:
(1)采集能量迹,对每组明文进行加密运算,采集测量时间点对应的能量消耗信息,建立采样能量消耗矩阵W(N×T):
W ( N &times; T ) = s 0 0 . . . s T - 1 0 . . . s t k . . . s 0 N - 1 . . . s T - 1 N - 1
其中,表示为第k个明文、第t个时间点对应的采样能量消耗值,T为能量迹中的时间点个数;
(2)选取攻击对象,确定算法攻击模型;本发明选择轮函数的输出作为新型的攻击对象,使用汉明重量(HW)模型进行建模,具体攻击对象如图3所示,根据SM4密码算法的加密结构可知,4个S盒是相互独立,且L移位运算是可逆的,则对轮密钥的4个字节的轮运算也是独立的,因此,可分别选择轮密钥的各密钥字节对应的攻击对象。当输入为第k组明文时,选择第i轮轮密钥
Figure BSA00000846951200111
第j(j∈{0,1,2,3})个字节rki,j对应的攻击对象
Figure BSA00000846951200112
应为
Figure BSA00000846951200113
的第j个字节
Figure BSA00000846951200114
但是经过L移位得到的
Figure BSA00000846951200115
与轮密钥rki,j并不是对应关系,因此必须对
Figure BSA00000846951200116
进行一个L-1逆运算得到 v i , j k = ( L - 1 X i + 4 k ) j , v i , j k = ( L - 1 X i + 4 k ) j = ( L - 1 X i k ) j &CirclePlus; ( ( X i + 1 , j k &CirclePlus; X i + 2 , j k &CirclePlus; X i + 3 , j k ) &CirclePlus; rk i , j ) , 由能量泄漏模型可知:
Figure BSA00000846951200119
其中,Hi为仿真能量消耗,Ptotal为采样能量消耗,ρ为线性相关系数,Ptotal=Pexp+Pnoise,Pexp为可用于能量分析的能量消耗,
Figure BSA000008469512001110
为信噪比。上式可知,信噪比与ρ(Hi,Ptotal)成正比。为了提高ρ(Hi,Ptotal)的大小,应尽可能增大信噪比,提高Pexp信息量。本发明选择轮函数输出作为攻击点,该能量消耗泄漏点包含了S盒输出状态信息和轮输入
Figure BSA000008469512001111
状态信息,增大了Pexp的值,提高了信噪比,从而增大了相关系数ρ(Hi,Ptotal)。
(3)猜测轮密钥,计算轮运算的中间值。
确定攻击对象和模型后,猜测第i轮轮密钥rki第j(j∈{0,1,2,3})个字节rki,j,j依次为0,1,2,3。rki,j的猜测值分别为rki,j,s=s,s∈{0,...,255}。对于256个猜测密钥字节rki,j,s,分别进行第i轮的加密轮运算,256个猜测密钥字节rki,j,s对应的中间值: v i , j , s k = ( L - 1 X i k ) j &CirclePlus; &tau; ( ( X i + 1 , j k &CirclePlus; X i + 2 , j k &CirclePlus; X i + 3 , j k ) &CirclePlus; rk i , j , s ) , 其中,
Figure BSA000008469512001113
Figure BSA000008469512001114
进行L-1移位后的第j个字节。
当对N组明文进行加密操作时,依次计算轮密钥字节rki,j,s对应的中间值,得到中间值矩阵V(N×256):
V ( N &times; 256 ) = v i , j , 0 0 . . . v i , j , 256 0 . . . v i , j , s k . . . v i , j , 0 N - 1 . . . v i , j , 256 N - 1 , 将中间值映射为仿真能量消耗值。
(4)中间值映射为仿真能量消耗值。
根据第(3)步所确定的能量模型,中间值映射的仿真能量消耗为:
Figure BSA00000846951200122
即第k组明文第i轮第j个字节第s个猜测密钥字节对应的仿真能量消耗。
对N组明文进行加密操作,轮密钥字节rki,j,s对应的仿真能量消耗矩阵为:
Figure BSA00000846951200123
(5)计算仿真能量消耗与能量迹的线性相关系数,得到正确的猜测密钥字节。
对步骤(1)中的采样能量消耗矩阵W和仿真能量消耗矩阵H,分别计算两者第s列和第t列的相关系数ρs,t
&rho; s , t &ap; r s , t = &Sigma; k = 0 N - 1 [ h i , j , s k - h i , j , s k &OverBar; ] [ s t k - s t k &OverBar; ] &Sigma; k = 0 N - 1 [ h i , j , s k - h i , j , s k &OverBar; ] 2 &Sigma; k = 0 N - 1 [ s t k - s t k &OverBar; ] 2
其中,
Figure BSA00000846951200125
为矩阵H第s列的平均值,
Figure BSA00000846951200126
为矩阵W第t列的平均值。ρs,t表示第s个猜测密钥对应的仿真能量消耗与第t个时间点采样能量消耗之间的线性相关系数,rs,t为该相关系数的近似计算值。计算所有列列之间的相关系数,得到仿真能量消耗和采样能量消耗的相关系数矩阵为:
R ( 256 &times; T ) = r 0,0 . . . r 0 , T - 1 . . . r s , t . . . r 255,0 . . . r 255 , T - 1 , rs,t越大,则列s与列t的匹配度越大,对应的猜测密钥rki,j,s与采样能量信息的相关性越强。选取R中的最大值rm,n=max(rs,t),rm,n对应的猜测密钥rki,j,m为正确的猜测轮密钥字节,即得到正确的第i轮轮密钥第j个字节。
同理,根据上述第(1)-(5)步,分别获得轮密钥的其他3个密钥字节,从而得到第i轮正确的轮密钥rki
对第i轮密码运算进行CPA分析结束后,使用轮密钥rki进行第i轮加密运算,得到第i轮的N组轮输出,即第i+1轮的轮输入
Figure BSA00000846951200132
k∈{0,1,…,N-1}。根据上述第(1)-(5)步分析方法,依次获得前四轮的轮密钥:(rk0,rk1,rk2,rk3)=(K4,K5,K6,K7)。
根据SM4密码算法的密钥扩展算法逆运算,具体如下:
K i = L &prime; ( &tau; ( K i + 1 &CirclePlus; K i + 2 &CirclePlus; K i + 3 &CirclePlus; CK i ) ) &CirclePlus; K i + 4 ,
( MK 0 , MK 1 , MK 2 , MK 3 ) = ( K 0 &CirclePlus; FK 0 , K 1 &CirclePlus; FK 1 , K 2 &CirclePlus; FK 2 , F 3 &CirclePlus; FK 3 )
由上两式的逆运算,得到SM4密码算法加密运算的密钥(MK0,MK1,MK2,MK3)
若已知加密密文,则分析末4轮加密操作,分析方法与前4轮大致相同,仅在选择攻击对象略有不同,如图4所示。
假设进行N组加密运算时,第k组的密文输出为
Figure BSA00000846951200136
为第i轮的SM4密码算法的轮输出,i依次为31,30,29,28,攻击对象图4所示。当输入为第k组明文时,第i轮轮密钥第j(j∈{0,1,2,3})个字节对应的攻击对象应为
Figure BSA00000846951200137
同理,为了确保攻击中间值与猜测轮密钥字节rki,j的对应关系,需对
Figure BSA00000846951200141
进行L-1移位运算,则最后攻击的中间值为: v i , j k = ( L - 1 X i k ) j = ( L - 1 X i + 4 k ) j &CirclePlus; &tau; ( ( X i + 1 , j k &CirclePlus; X i + 2 , j k &CirclePlus; X i + 3 , j k ) &CirclePlus; rk i , j ) , 根据上述第(1)-(5)步,依次得到末4轮正确的轮密钥(rk31,rk30,rk29,rk28)=(K35,K34,K33,K32),根据密钥扩展算法逆运算,成功分析获得SM4密码算法加密运算的密钥。
对于SM4密码算法的解密运算,同样可使用上述CPA分析方法获取解密密钥。若已知密文,分析SM4密码算法解密运算的前4轮,分析方法与分析SM4密码算法加密运算的前4轮相同,依次得到轮密钥(rk31,rk30,rk29,rk28),根据密钥扩展算法逆运算得到解密密钥;若已知明文,分析SM4密码算法解密运算的末4轮,攻击方法与分析SM4密码算法加密运算的末4轮相同,依次得到轮密钥(rk0,rk1,rk2,rk3),根据密钥扩展算法逆运算得到解密密钥。
按照上述CPA分析方法,对加密运算的第1轮进行分析,分别选择轮函数的输出和S盒的输出作为攻击对象。具体实施步骤如下:
(1)采集1000组对明文加密运算的波形,即能量迹,如图7所示,共5000个时间点,其中,与SM4加密运算相关的采样能量消耗在25μs-34μs之间,与密码运算相对应的时间点共340个,则采样能量消耗矩阵W(1000×340);
2)选择第1轮轮函数的输出作为攻击对象,建立HW模型;
3)猜测轮密钥第1个字节,得到仿真能量消耗矩阵H(1000×256);
4)计算仿真能耗矩阵H与采样能耗矩阵W的相关系数,得到相关系数矩阵R,选择R中的最大值对应的猜测密钥字节作为轮密钥的第1字节。
5)依次分析轮密钥的其他3个字节,得到第1轮轮密钥rk1
分析结果如表1所示,罗列了分析每个轮密钥字节时,前10个最大的相关系数及其对应的猜测密钥字节。对于第1轮的正确轮密钥0x85 23 5C E2,正确的猜测密钥字节对应的相关系数远远大于其他9个错误的猜测密钥字节对应的相关系数。
表1:对加密运算第1轮轮函数输出进行CPA分析结果
Figure BSA00000846951200161
同样,对图5能量迹,选择S盒的输出作为攻击对象,建立汉明重量模型,依照上述(1)-(5)步分析第1轮轮密钥0x 85 23 5C E2,分析结果见表2。从表2可知,前10个最大的相关系数值差别微小,相邻两者均小于0.01,无法判断正确的轮密钥,分析得到错误的轮密钥0x 10 F8 E2 EA;而表1中正确密钥对应的相关系数比其他猜测密钥对应的相关系数大约为0.3,从而很容易区分出正确的轮密钥。
表2:对加密运算第1轮S盒输出进行CPA分析结果
Figure BSA00000846951200162
Figure BSA00000846951200171
此外,图8、图9分别为对轮函数的输出、S盒的输出进行分析时,正确轮密钥字节对应所有时间点的相关系数图。由图8可知,采样点对应相关系数出现一个明显的尖峰,该尖峰表明:当轮密钥猜测正确时,与采样能耗泄露点的相关性远大于其他的时间点;而图9无明显的尖峰,当轮密钥猜测正确时,无法区分真正的能耗泄露点,且所有时间点对应的相关系数远小于图8的尖峰值。因此,当SM4密码算法运算的能量消耗泄露点为轮函数的输出,采用对轮函数的侧信道能量分析方法要优于对S盒的侧信道能量分析方法。
下面以SM4密码算法的轮函数进行DPA分析说明本发明的技术方案。DPA分析与CPA分析在采集能量迹、选择攻击对象的操作是一致的。本发明对SM4密码算法的轮函数进行DPA分析的具体方法如图6:
对于SM4密码算法的加密运算,若已知加密明文,分析密码算法的前4轮。假设进行N组明文的加密运算,令第k组明文输入为 X k = ( X 0 k , X 1 k , X 2 k , X 3 k ) , k∈{0,...,N-1},第i轮的轮输入为
Figure BSA00000846951200182
i依次为0,1,2,3。
(a)采集能量迹,对每组明文进行加密运算,采集测量时间点对应的能量消耗信息(能量迹),建立采样能量消耗矩阵W(N×T)。
(b)同样选择轮函数的输出
Figure BSA00000846951200183
作为攻击对象,使用汉明重量模型进行建模,根据攻击时每个字节输出数据的汉明重量期望值已知
Figure BSA00000846951200185
以明文/密文及猜测密钥字节rki,j作为参数,则确定DPA选择函数为: D ( X k , j , rk i , j ) = 1 HW ( v i , j k ) < 4 0 HW ( v i , j k ) > 4 .
(c)猜测轮密钥,将平均能量消耗划分为两个子集。确定攻击对象和选择函数后,依次猜测第i轮轮密钥第j个字节
Figure BSA00000846951200187
j依次为0,1,2,3,rki,j的猜测值分别为rki,j,s=s,s∈{0,...,255}。
对于256个猜测密钥rki,j,s,分别经过第i轮的加密运算,得到256个相应的攻击中间值: v i , js k = ( L - 1 X i k ) j &CirclePlus; &tau; ( ( X i + 1 , j k &CirclePlus; X i + 2 , j k &CirclePlus; X i + 3 , j k ) &CirclePlus; rk i , j , s ) , 得到相应的选择函数D(Xk,j,rki,j,s),依次对N组明文进行加密运算,猜测轮密钥字节rki,j,s对应的选择函数D(Xk,j,rki,j,s)=1时,则总个数
Figure BSA00000846951200191
rki,j,s对应的选择函数D(Xk,j,rki,j,s=0时,则总个数
Figure BSA00000846951200192
依据选择函数,对于能量迹中时间点t,得到该点两个的总能量消耗均值:
d 0 i , j , s t = &Sigma; k = 0 N - 1 ( 1 - D ( X k , j , rk i , j , s ) ) s t k n 0 d 1 i , j , s t = &Sigma; k = 0 N - 1 D ( X k , j , rk i , j , s ) s t k n 1
其中,
Figure BSA00000846951200195
为使用猜测轮密钥字节rki,j,s进行N组加密操作,选择函数等于0时,对应时间点t的n0组能量消耗平均值;
Figure BSA00000846951200196
为选择函数等于1时,对应时间点t的n1组能量消耗平均值,n0+n1=N。对所有的时间点求能耗均值,得到两个能耗矩阵D0(256×T)和D1(256×T),分别为:
D 0 ( 256 &times; T ) = d 0 i , j , 0 0 . . . d 0 i , j , 0 T - 1 . . . d 0 i , j , s t . . . d 0 i , j , 255 0 . . . d 0 i , j , 255 T - 1 D 1 ( 256 &times; T ) = d 1 i , j , 0 0 . . . d 1 i , j , 0 T - 1 . . . d 1 i , j , s t . . . d 1 i , j , 255 0 . . . d 1 i , j , 255 T - 1 .
(d)计算两平均能耗子集差,得到正确的猜测密钥。计算平均能耗矩阵D0(256×T)和D1(256×T)的差,得到矩阵ΔD=D1-D0
若rki,j,s猜测错误,则对于N组明文输入的加密运算,选择函数为0和1的概率各约为
Figure BSA00000846951200199
对应的平均能量消耗差随着N的增大趋近0;若rki,j,s猜测正确,则对于N组明文输入的加密运算,选择函数为0或为1的概率应为1,对应的平均能量消耗差随着N的增大趋向于能耗的实际影响。综上所述,选择最大的能耗均值差
Figure BSA000008469512001911
对应的猜测轮密钥字节rki,j,m为正确密钥字节,即得到正确的第i轮轮密钥的第j个字节。
同理,根据上述第(a)至(d)步,可分别获得轮密钥的其他3个密钥字节,从而得到第i轮正确的轮密钥rkj
对第i轮密码运算进行DPA分析结束后,得到正确的轮密钥rki,使用轮密钥rki进行第i轮加密运算,得到第i轮的N组轮输出,即第i+1轮的轮输入k∈{0,1,…,N-1)。根据上述第(a)至(d)步分析方法,依次获得前四轮的轮密钥:(rk0,rk1,rk2,rk3)=(K4,K5,K6,K7)。
对密码算法密钥扩展的逆运算,得到SM4密码算法加密运算的密钥(MK0,MK1,MK2,MK3)。
若已知加密密文,则分析SM4密码算法的末4轮加密操作,攻击对象的选择与CPA末4轮是相同的。
假设进行N组加密运算时,第k组的密文输出为
Figure BSA00000846951200203
为第i轮的SM4密码算法轮输出,i依次为31,30,29,28。
根据上述第(a)至(d)步,依次得到末4轮正确的轮密钥(rk31,rk30,rk29,rk28)=(K35,K34,K33,K32),根据密钥扩展算法逆运算式成功分析得到SM4密码算法加密运算的密钥。
对于SM4密码算法的解密运算,同样可使用上述DPA分析方法获取解密密钥。若已知密文,分析SM4密码算法解密运算的前4轮,分析方法与分析SM4密码算法加密运算的前4轮相同,依次得到轮密钥(rk31,rk30,rk29,rk28),根据密钥扩展算法逆运算得到解密密钥;若已知明文,分析SM4密码算法解密运算的末4轮,攻击方法与分析SM4密码算法加密运算的末4轮相同,依次得到轮密钥(rk0,rk1,rk2,rk3),根据密钥扩展算法逆运算得到解密密钥。
上述技术方案仅体现了本发明技术方案的优选技术方案,本技术领域的技术人员对其中某些部分所可能做出的一些变动均体现了本发明的原理,属于本发明的保护范围之内。

Claims (9)

1.选择轮函数为攻击对象进行SM4密码算法侧信道能量分析的应用,其特征在于,加密/解密攻击对象为轮函数。
2.根据权利要求1所述的选择轮函数为攻击对象进行SM4密码算法侧信道能量分析的应用,其特征在于,进行加密/解密前4轮攻击时,选择轮函数输出为攻击点,即
Figure FSA00000846951100011
作为攻击对象,这里
Figure FSA00000846951100012
是输入第k组明文/密文
Figure FSA00000846951100013
时,第i轮轮密钥第j个字节对应的攻击对象,i∈{0,1,2,3},j∈{0,1,2,3},
Figure FSA00000846951100014
是第i轮轮函数的输出,L-1(x)是对L(x)进行一个逆运算,
L - 1 ( x ) = x &CirclePlus; ( x < < < 2 ) &CirclePlus; ( x < < < 4 ) &CirclePlus; ( x < < < 8 ) &CirclePlus; ( x < < < 12 ) &CirclePlus; ( x < < < 14 ) &CirclePlus; ( x < < < 16 ) &CirclePlus;
( x < < < 18 ) &CirclePlus; ( x < < < 22 ) &CirclePlus; ( x < < < 24 ) &CirclePlus; ( x < < < 30 ) ,
Figure FSA00000846951100017
Figure FSA00000846951100018
进行L-1移位后的第j个字节,则 v i , j k = ( L - 1 X i + 4 k ) j = ( L - 1 X i k ) j &CirclePlus; &tau; ( ( X i + 1 , j k &CirclePlus; X i + 2 , j k &CirclePlus; X i + 3 , j k ) &CirclePlus; rk i , j ) , rk i , j &Element; Z 2 8 为第i轮轮密钥
Figure FSA000008469511000111
中的第j个字节,
Figure FSA000008469511000112
分别为
Figure FSA000008469511000113
的第j个字节;进行加密/解密后4轮攻击时,相应的密文/明文
Figure FSA000008469511000114
为已知,选择选择轮函数输入为攻击点,即
Figure FSA000008469511000115
(i∈{31,30,29,28})为攻击对象, v i , j k = ( L - 1 X i k ) j = ( L - 1 X i + 4 k ) j &CirclePlus; &tau; ( ( X i + 1 , j k &CirclePlus; X i + 2 , j k &CirclePlus; X i + 3 , j k ) &CirclePlus; rk i , j ) .
3.根据权利要求1或2所述的选择轮函数为攻击对象进行SM4密码算法侧信道能量分析的应用,其特征在于,选择轮函数为攻击对象用于对SM4密码算法的CPA/DPA侧信道能量分析。
4.根据权利要求3所述的选择轮函数为攻击对象进行SM4密码算法侧信道能量分析的应用,其特征在于,选择轮函数为攻击对象对SM4密码算法的CPA侧信道能量分析步骤如下:
(1)采集能量迹,具体是进行每组明文/密文进行加密/解密运算,采集测量时间点对应的能量消耗信息,即为能量迹,建立采样能量消耗矩阵;
(2)选择轮函数作为攻击对象;
(3)确定攻击对象和模型后,猜测轮密钥,计算轮运算的中间值确定中间值矩阵;
(4)利用上步的中间值及中间值矩阵映射为仿真能量消耗值和仿真能量消耗矩阵;
(5)计算仿真能量消耗矩阵与采样能量消耗矩阵的线性相关系数,得到正确的猜测密钥。
5.根据权利要求4选择轮函数为攻击对象进行SM4密码算法侧信道能量分析的应用,其特征在于,利用CPA进行步骤(3)的具体方法是:猜测第i轮轮密钥rki中的字节rki,j,rki,j的猜测值分别为rki,j,s=s,s∈{0,...,255},对256个猜测密钥字节rki,j,s,分别进行第i轮加密/解密的轮运算,确定256个猜测密钥字节rki,j,s对应的中间值:
Figure FSA00000846951100021
其中,
Figure FSA00000846951100022
为rki,j等于rki,j,s时得到的
Figure FSA00000846951100023
当对N(k∈{0,1,…,N-1})组明文/密文进行加密/解密操作时,依次计算轮密钥字节rki,j,s对应的中间值,得到中间值矩阵V(N×256):
V ( N &times; 256 ) = v i , j , 0 0 . . . v i , j , 255 0 . . . v i , j , s k . . . v i , j , 0 N - 1 . . . v i , j , 255 N - 1 ; 利用CPA进行步骤(4)的具体方法是:(3)步中间值映射的仿真能量消耗为:
Figure FSA00000846951100025
即第k组明文第i轮第j个字节第s个猜测密钥字节对应的仿真能量消耗,HW(x)为x中比特位值为1的个数,对N组明文/密文进行加密/解密操作,确定轮密钥字节rki,j,s对应的仿真能量消耗矩阵为:
Figure FSA00000846951100026
6.根据权利要求4选择轮函数为攻击对象进行SM4密码算法侧信道能量分析的应用,其特征在于,利用CPA进行步骤(5)的具体方法是:对步骤(1)的采样能量消耗矩阵 W ( N &times; T ) = s 0 0 . . . s T - 1 0 . . . s t k . . . s 0 N - 1 . . . s T - 1 N - 1 和步骤(4)的仿真能量消耗矩阵H分别计算两者第s列和第t列的相关系数ρs,t &rho; s , t &ap; r s , t = &Sigma; k = 0 N - 1 [ h i , j , s k - h i , j , s k &OverBar; ] [ s t k - s t k &OverBar; ] &Sigma; k = 0 N - 1 [ h i , j , s k - h i , j , s k &OverBar; ] 2 &Sigma; k = 0 N - 1 [ s t k - s t k &OverBar; ] 2 其中,表示为第k个明文/密文、第t个时间点对应的采样能量消耗值,T为能量迹中的时间点个数,
Figure FSA00000846951100034
为矩阵H第s列的平均值,
Figure FSA00000846951100035
为矩阵W第t列的平均值,ρs,t表示第s个猜测密钥对应的仿真能量消耗与第t个时间点采样能量消耗之间的线性相关系数,rs,t为该相关系数的近似计算值,计算所有列列之间的相关系数,得到仿真能量消耗和采样能量消耗的相关系数矩阵为 R ( 256 &times; T ) = r 0,0 . . . r 0 , T - 1 . . . r s , t . . . r 255,0 . . . r 255 , T - 1 , 选取R中的最大值rm,n=max(rs,t),rm,n对应的猜测密钥rki,j,m为正确的猜测轮密钥字节,即得到正确的第i轮轮密钥第j个字节rki,j=rki,j,m;重复第(1)-(5)步,可分别获得轮密钥的其他3个密钥字节,从而得到第i轮正确的轮密钥rki,对于前4轮,使用轮密钥rki进行第i轮密码运算,得到第i轮的N组轮输出,即第i+1轮的轮输入
Figure FSA00000846951100037
依次获得前4轮的加密轮密钥(rk0,rk1,rk2,rk3)=(K4,K5,K6,K7)或解密轮密钥(rk0,rk1,rk2,rk3)=(K35,K34,K33,K32);对于后4轮,使用轮密钥rki进行第i轮密码运算,得到第i-1轮的轮输出
Figure FSA00000846951100038
依次获得后4轮的加密轮密钥(rk31,rk30,rk29,rk28)=(K35,K34,K33,K32)或解密轮密钥(rk31,rk30,rk29,rk28)=(K4,K5,K6,K7);根据密钥扩展算法逆运算得到加/解密密钥。
7.根据权利要求3所述的选择轮函数为攻击对象进行SM4密码算法侧信道能量分析的应用,其特征在于,选择轮函数为攻击对象对SM4密码算法的DPA侧信道能量分析步骤如下:
(a)采集能量迹,具体是进行每组明文/密文进行加密/解密运算,采集测量时间点对应的能量消耗信息,即为能量迹,建立采样能量消耗矩阵;
(b)选择轮函数作为攻击对象,确定DPA选择函数;
(c)猜测轮密钥,将平均能量消耗划分为两个平均能耗子集矩阵;
(d)根据(c)步得到的两个平均能耗子集求差,确定正确的猜测密钥。
8.根据权利要求7所述的选择轮函数为攻击对象进行SM4密码算法侧信道能量分析的应用,其特征在于,采用DPA进行前/后4轮攻击时的步骤(b)中选择轮函数攻击对象
Figure FSA00000846951100041
i∈{0,1,2,3}或
Figure FSA00000846951100042
i∈{31,30,29,28}后,根据攻击时每个字节输出数据的汉明重量期望值已知
Figure FSA00000846951100044
以明文/密文及猜测密钥字节rki,j作为参数,则确定DPA选择函数为: D ( X k , j , rk i , j ) = 1 E ( HW ( v i , j k ) ) < 4 0 E ( HW ( v i , j k ) ) > 4
9.根据权利要求7所述的选择轮函数为攻击对象进行SM4密码算法侧信道能量分析的应用,其特征在于,利用DPA进行步骤(c)的具体方法是:猜测第i轮轮密钥rki中的字节rki,j,rki,j的猜测值分别为rki,j,s=s,s∈{0,...,255},猜测轮密钥字节rki,j,s对应的选择函数D(Xk,j,rki,j,s)=1时,则总个数
Figure FSA00000846951100051
rki,j,s对应的选择函数D(Xk,j,rki,j,s)=0时,则总个数
Figure FSA00000846951100052
对于能量迹中时间点t,得到该点两个的总能量消耗均值:
Figure FSA00000846951100053
其中,
Figure FSA00000846951100055
为使用猜测轮密钥字节rki,j,s进行N组加密/解密操作时,选择函数等于0所对应时间点t的n0能能量消耗平均值;
Figure FSA00000846951100056
为选择函数等于1所对应时间点t的n1组能量消耗平均值,n0+n1=N,由上式对所有的时间点求能耗均值,得到两个能耗矩阵D0(256×T)和D1(256×T),分别为:
D 0 ( 256 &times; T ) = d 0 i , j , 0 0 . . . d 0 i , j , 0 T - 1 . . . d 0 i , j , s t . . . d 0 i , j , 255 0 . . . d 0 i , j , 255 T - 1 D 1 ( 256 &times; T ) = d 1 i , j , 0 0 . . . d 1 i , j , 0 T - 1 . . . d 1 i , j , s t . . . d 1 i , j , 255 0 . . . d 1 i , j , 255 T - 1 ;
利用DPA进行步骤(d)的具体方法是:计算步骤(c)得到的平均能耗矩阵D0(256×T)和D1(256×T)的差矩阵:
&Delta;D = D 1 - D 0 = d 1 i , j , 0 0 - d 0 i , j , 0 0 . . . d 1 i , j , 0 T - 1 - d 0 i , j , 0 T - 1 . . . d 1 i , j , s t - d 0 i , j , s t . . . d 1 i , j , 255 0 - d 0 i , j , 255 0 . . . d 1 i , j , 255 T - 1 - d 0 i , j , 255 T - 1
选择最大的能耗均值差
Figure FSA000008469511000510
Figure FSA000008469511000511
对应的猜测轮密钥字节rki,j,m为正确密钥字节,即得到正确的第i轮轮密钥的第j个字节,重复第(a)-(d)步,可分别获得轮密钥的其他3个密钥字节,从而得到第i轮正确的轮密钥rki,对于前4轮,使用轮密钥rki进行第i轮密码运算,得到第i轮的N组轮输出,即第i+1轮的轮输入
Figure FSA000008469511000512
依次获得前4轮的加密轮密钥(rk0,rk1,rk2,rk3)=(K4,K5,K6,K7)或解密轮密钥(rk0,rk1,rk2,rk3)=(K35,K34,K33,K32);对于后4轮,使用轮密钥rk1进行第i轮密码运算,得到第i-1轮的轮输出
Figure FSA00000846951100061
依次获得后4轮的加密轮密钥(rk31,rk30,rk29,rk28)=(K35,K34,K33,K32)或解密轮密钥(rk31,rk30,rk29,rk28)=(K4,K5,K6,K7);根据密钥扩展算法逆运算得到加/解密密钥。
CN201310027784.2A 2013-01-25 2013-01-25 选择轮函数为攻击对象进行sm4密码算法侧信道能量分析的应用 Active CN103166752B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310027784.2A CN103166752B (zh) 2013-01-25 2013-01-25 选择轮函数为攻击对象进行sm4密码算法侧信道能量分析的应用

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310027784.2A CN103166752B (zh) 2013-01-25 2013-01-25 选择轮函数为攻击对象进行sm4密码算法侧信道能量分析的应用

Publications (2)

Publication Number Publication Date
CN103166752A true CN103166752A (zh) 2013-06-19
CN103166752B CN103166752B (zh) 2016-04-27

Family

ID=48589506

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310027784.2A Active CN103166752B (zh) 2013-01-25 2013-01-25 选择轮函数为攻击对象进行sm4密码算法侧信道能量分析的应用

Country Status (1)

Country Link
CN (1) CN103166752B (zh)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103441846A (zh) * 2013-08-12 2013-12-11 国家密码管理局商用密码检测中心 一种对p域的ecc算法选择明文侧信道能量分析方法
CN103647637A (zh) * 2013-11-19 2014-03-19 国家密码管理局商用密码检测中心 一种对简单掩码的sm4算法进行二阶侧信道能量分析方法
CN103825722A (zh) * 2013-11-19 2014-05-28 国家密码管理局商用密码检测中心 一种sm4密码算法的二阶侧信道能量分析方法
CN104052590A (zh) * 2014-05-05 2014-09-17 清华大学 基于侧信道相关能量分析的频域分析方法
CN104202145A (zh) * 2014-09-04 2014-12-10 成都信息工程学院 针对sm4密码算法轮函数输出的选择明文或密文侧信道能量分析攻击的方法
CN104753665A (zh) * 2015-03-19 2015-07-01 成都信息工程学院 一种针对sm4密码轮函数输出的侧信道能量攻击方法
CN104753668A (zh) * 2015-03-19 2015-07-01 成都信息工程学院 一种针对sm4密码线性变换输出的侧信道能量攻击方法
CN104811295A (zh) * 2015-05-05 2015-07-29 国家密码管理局商用密码检测中心 一种对具备掩码防护的祖冲之密码算法进行侧信道能量分析方法
CN105324956A (zh) * 2013-06-27 2016-02-10 高通股份有限公司 加密明文数据的方法及设备
CN105553638A (zh) * 2015-12-07 2016-05-04 成都芯安尤里卡信息科技有限公司 针对sm4一阶掩码算法的二阶频域能量分析攻击
CN105897400A (zh) * 2016-06-20 2016-08-24 北京华大信安科技有限公司 一种sm4算法的掩码方法及装置
CN106027226A (zh) * 2016-05-13 2016-10-12 西安电子科技大学 一种分组密码相关密钥不可能差分路径的搜索方法
CN106161004A (zh) * 2015-03-31 2016-11-23 上海复旦微电子集团股份有限公司 一种hmac-sm3密码算法的侧信道能量分析方法及装置
CN106462701A (zh) * 2014-06-12 2017-02-22 密码研究公司 以抵抗外部监视攻击的方式执行密码编译数据处理操作
CN109347636A (zh) * 2018-12-05 2019-02-15 中国信息通信研究院 一种密钥恢复方法、系统、计算机设备及可读介质
CN114297642A (zh) * 2022-01-05 2022-04-08 桂林电子科技大学 一种基于数据聚合的侧信道攻击方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090092245A1 (en) * 2006-03-31 2009-04-09 Axalto Sa Protection Against Side Channel Attacks
CN102508637A (zh) * 2011-11-22 2012-06-20 中国科学院软件研究所 一种指令级密码设备能量消耗信息生成方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090092245A1 (en) * 2006-03-31 2009-04-09 Axalto Sa Protection Against Side Channel Attacks
CN102508637A (zh) * 2011-11-22 2012-06-20 中国科学院软件研究所 一种指令级密码设备能量消耗信息生成方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
何斌等: ""基于汉明距离的相关能量侧信道分析方法研究"", 《第二届全国信息与电子工程学术交流会暨第十三届四川省电子学会曙光分会学术年会论文集》 *
李浪等: ""一种SMS4加密算法差分功耗攻击"", 《计算机科学》 *

Cited By (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105324956A (zh) * 2013-06-27 2016-02-10 高通股份有限公司 加密明文数据的方法及设备
CN105324956B (zh) * 2013-06-27 2019-02-01 高通股份有限公司 加密明文数据的方法及设备
CN103441846A (zh) * 2013-08-12 2013-12-11 国家密码管理局商用密码检测中心 一种对p域的ecc算法选择明文侧信道能量分析方法
CN103441846B (zh) * 2013-08-12 2016-08-10 国家密码管理局商用密码检测中心 一种对p域的ecc算法选择明文侧信道能量分析方法
CN103647637B (zh) * 2013-11-19 2017-01-04 国家密码管理局商用密码检测中心 一种对简单掩码的sm4算法进行二阶侧信道能量分析方法
CN103647637A (zh) * 2013-11-19 2014-03-19 国家密码管理局商用密码检测中心 一种对简单掩码的sm4算法进行二阶侧信道能量分析方法
CN103825722B (zh) * 2013-11-19 2017-02-15 国家密码管理局商用密码检测中心 一种sm4密码算法的二阶侧信道能量分析方法
CN103825722A (zh) * 2013-11-19 2014-05-28 国家密码管理局商用密码检测中心 一种sm4密码算法的二阶侧信道能量分析方法
CN104052590A (zh) * 2014-05-05 2014-09-17 清华大学 基于侧信道相关能量分析的频域分析方法
CN104052590B (zh) * 2014-05-05 2017-06-16 清华大学 基于侧信道相关能量分析的频域分析方法
US11757617B2 (en) 2014-06-12 2023-09-12 Cryptography Research, Inc. Performing cryptographic data processing operations in a manner resistant to external monitoring attacks
US10897344B2 (en) 2014-06-12 2021-01-19 Cryptography Research, Inc. Performing cryptographic data processing operations in a manner resistant to external monitoring attacks
CN106462701A (zh) * 2014-06-12 2017-02-22 密码研究公司 以抵抗外部监视攻击的方式执行密码编译数据处理操作
CN104202145B (zh) * 2014-09-04 2018-07-03 成都信息工程学院 针对sm4密码算法轮函数输出的选择明文或密文侧信道能量分析攻击的方法
CN104202145A (zh) * 2014-09-04 2014-12-10 成都信息工程学院 针对sm4密码算法轮函数输出的选择明文或密文侧信道能量分析攻击的方法
CN104753668B (zh) * 2015-03-19 2018-04-13 成都信息工程学院 一种针对sm4密码线性变换输出的侧信道能量攻击方法
CN104753665A (zh) * 2015-03-19 2015-07-01 成都信息工程学院 一种针对sm4密码轮函数输出的侧信道能量攻击方法
CN104753668A (zh) * 2015-03-19 2015-07-01 成都信息工程学院 一种针对sm4密码线性变换输出的侧信道能量攻击方法
CN104753665B (zh) * 2015-03-19 2018-04-06 成都信息工程学院 一种针对sm4密码轮函数输出的侧信道能量攻击方法
CN106161004A (zh) * 2015-03-31 2016-11-23 上海复旦微电子集团股份有限公司 一种hmac-sm3密码算法的侧信道能量分析方法及装置
CN106161004B (zh) * 2015-03-31 2019-03-26 上海复旦微电子集团股份有限公司 一种hmac-sm3密码算法的侧信道能量分析方法及装置
CN104811295A (zh) * 2015-05-05 2015-07-29 国家密码管理局商用密码检测中心 一种对具备掩码防护的祖冲之密码算法进行侧信道能量分析方法
CN105553638A (zh) * 2015-12-07 2016-05-04 成都芯安尤里卡信息科技有限公司 针对sm4一阶掩码算法的二阶频域能量分析攻击
CN106027226B (zh) * 2016-05-13 2019-03-15 西安电子科技大学 一种分组密码相关密钥不可能差分路径的搜索方法
CN106027226A (zh) * 2016-05-13 2016-10-12 西安电子科技大学 一种分组密码相关密钥不可能差分路径的搜索方法
CN105897400A (zh) * 2016-06-20 2016-08-24 北京华大信安科技有限公司 一种sm4算法的掩码方法及装置
CN109347636A (zh) * 2018-12-05 2019-02-15 中国信息通信研究院 一种密钥恢复方法、系统、计算机设备及可读介质
CN109347636B (zh) * 2018-12-05 2021-09-24 中国信息通信研究院 一种密钥恢复方法、系统、计算机设备及可读介质
CN114297642A (zh) * 2022-01-05 2022-04-08 桂林电子科技大学 一种基于数据聚合的侧信道攻击方法
CN114297642B (zh) * 2022-01-05 2024-03-22 桂林电子科技大学 一种基于数据聚合的侧信道攻击方法

Also Published As

Publication number Publication date
CN103166752B (zh) 2016-04-27

Similar Documents

Publication Publication Date Title
CN103166752B (zh) 选择轮函数为攻击对象进行sm4密码算法侧信道能量分析的应用
CN103138917B (zh) 以s盒输入为基础的汉明距离模型进行sm4密码算法侧信道能量分析方法
CN103227717B (zh) 选择轮密钥异或输入进行sm4密码算法侧信道能量分析的方法
CN103825722B (zh) 一种sm4密码算法的二阶侧信道能量分析方法
CN103647637B (zh) 一种对简单掩码的sm4算法进行二阶侧信道能量分析方法
CN103457719B (zh) 一种对sm3密码算法hmac模式的侧信道能量分析方法
CN103199983B (zh) 侧信道能量分析中的n阶局域能量模型及其应用
CN106788974A (zh) 掩码s盒、分组密钥计算单元、装置及对应的构造方法
CN104796250B (zh) 针对RSA密码算法M-ary实现的侧信道攻击方法
CN105553638A (zh) 针对sm4一阶掩码算法的二阶频域能量分析攻击
CN103530474A (zh) 面向aes算法电路的差分功耗攻击测试方法
CN104836666A (zh) 一种针对sm2解密算法的能量分析攻击的方法
CN104052590A (zh) 基于侧信道相关能量分析的频域分析方法
Duan et al. Differential power analysis attack and efficient countermeasures on PRESENT
CN103916236A (zh) 面向aes算法的抗功耗攻击方法及电路实现
CN104811297B (zh) 针对RSA之M-ary实现模乘余数输入侧信道攻击
CN104780051A (zh) 针对sm2公钥密码加密算法的侧信道攻击的方法
Gui et al. Security vulnerabilities of smart meters in smart grid
CN116073988A (zh) 一种基于混合去噪的抗能量分析攻击能力的检测方法
CN103427980A (zh) 一种基于双矩阵变换的ofdm系统物理层安全算法
CN104967509A (zh) 一种轮输出为算术掩码的zuc序列密码算法掩码防护方法
CN104811295A (zh) 一种对具备掩码防护的祖冲之密码算法进行侧信道能量分析方法
CN103888245A (zh) 一种智能卡的s盒随机化方法和系统
CN102158338B (zh) 一种针对Twofish加密芯片的DFA分析方法及系统
CN108124076A (zh) 基于异构混沌和keccak哈希函数的图像加密方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant