CN103227717A - 选择轮密钥异或输入进行sm4密码算法侧信道能量分析的应用 - Google Patents

选择轮密钥异或输入进行sm4密码算法侧信道能量分析的应用 Download PDF

Info

Publication number
CN103227717A
CN103227717A CN2013100278046A CN201310027804A CN103227717A CN 103227717 A CN103227717 A CN 103227717A CN 2013100278046 A CN2013100278046 A CN 2013100278046A CN 201310027804 A CN201310027804 A CN 201310027804A CN 103227717 A CN103227717 A CN 103227717A
Authority
CN
China
Prior art keywords
round key
wheel
key
round
energy
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
CN2013100278046A
Other languages
English (en)
Other versions
CN103227717B (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 CN201310027804.6A priority Critical patent/CN103227717B/zh
Publication of CN103227717A publication Critical patent/CN103227717A/zh
Application granted granted Critical
Publication of CN103227717B publication Critical patent/CN103227717B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明公开了选择轮密钥异或输入进行SM4密码算法侧信道能量分析的应用,其核心在于进行SM4密码算法侧信道能量分析过程中,选择S盒或轮函数作为攻击点建立汉明距离模型,以轮密钥异或输入作为汉明距离模型的前续状态v1,对S盒进行攻击时,汉明距离(HD(v1,v2))模型的后继状态v2是S盒输出;对轮函数进行攻击时,汉明距离(HD(v1,v2))模型的后继状态v2是轮函数输出/输入。该方法可应用于SM4密码算法的CPA/DPA侧信道能量分析。利用本发明的方法提高了正确的猜测密钥与能量信息之间的相关性,增强了分析有效性和成功率。

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 BSA00000846958400021
为加密明文,
Figure BSA00000846958400022
为第i轮的算法输入,
Figure BSA00000846958400023
为第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:
Figure BSA00000846958400025
是一个可逆变换,由非线性变换τ和线性变换L复合而成,即T(·)=L(τ(·))。
τ由4个并行的S盒构成,如图2所示,设输入为
Figure BSA00000846958400026
输出为
Figure BSA00000846958400027
则:
( b 0 , b 1 b 2 , b 3 ) = τ ( A ) = ( Sbox ( a 0 ) , Sbox ( a 1 ) , Sbox ( a 2 ) , Sbox ( a 3 ) ) - - - ( 2 )
非线性变换τ的输出是线性变换L的输入。设输入为
Figure BSA00000846958400029
输出为
Figure BSA000008469584000210
则:
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轮,即可以得到输出密文
Figure BSA00000846958400034
上述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 )
根据式(9),可分别获得32轮轮密钥(rk0,rk1,…,rk31),长度均为32比特。
数据解密和数据加密的算法结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。解密时,使用轮密钥序(rk31,rk30,…,rk0)。
对SM4密码算法的能量分析方法通常选取S盒的输出、L移位的输出作为攻击对象,使用汉明重量、单比特模型,利用DPA和CPA方法进行分析。这些方法仅利用了典型的分析点,不能全面有效对SM4密码算法实施分析。此外,当上述分析点可利用的能量泄露信息很少时,将会影响对SM4密码算法分析的成功率。因此,需要提出更有效的侧信道能量分析方法。
发明内容
在SM4密码算法分析中,侧信道能量分析方法是否有效,其关键在于密码算法中的攻击对象选取和相应能量模型的选择,选取恰当的攻击对象可提高采样能量信息的信噪比和分析的成功率。
本发明的目的在于系统分析SM4密码算法的实现特征,创造性地选择包括了SM4密码算法中轮输入信息和密钥信息的轮函数作为侧信道能量分析的攻击点,从而提高了正确的猜测密钥与能量信息之间的相关性,增强了分析有效性和成功率。
实现上述目的本发明的技术方案为,选择轮密钥异或输入进行SM4密码算法侧信道能量分析的应用,在进行SM4密码算法侧信道能量分析过程中,当选择S盒输出或轮函数作为攻击点建立汉明距离模型时,其前续状态v1均为轮密钥异或输入。
上述对S盒输出进行攻击时,汉明距离(HD(v1,v2))模型的后继状态v2是S盒输出;对轮函数进行攻击时,汉明距离(HD(v1,v2))模型的后继状态v2是轮函数输出或输入。对S盒输出前/末4轮进行攻击采用的汉明距离(HD(v1,v2))模型等效于以轮输入和轮函数输出的异或值作为攻击对象采用汉明重量(HW)模型的攻击;对轮函数输出前/末4轮进行的攻击等效于所有的轮输出/输入的异或值作为攻击对象采用汉明重量(HW)模型的攻击。
上述轮密钥异或输入用于对SM4密码算法的CPA/DPA侧信道能量分析。
当选择轮密钥异或输入对SM4密码算法的CPA侧信道能量分析步骤如下:
(1)采集能量迹,具体是进行每组明文/密文进行加密/解密运算,采集测量时间点对应的能量消耗信息,即为能量迹,建立采样能量消耗矩阵;
(2)选取攻击对象,确定算法攻击模型;
(3)确定攻击对象和模型后,猜测轮密钥,计算轮运算的中间值确定中间值矩阵;
(4)利用上步的中间值及中间值矩阵映射为仿真能量消耗值和仿真能量消耗矩阵;
(5)计算仿真能量消耗矩阵与采样能量消耗矩阵的线性相关系数,得到正确的猜测密钥。
上述利用CPA进行步骤(3)的具体方法是:已知第k(k∈{0,...,N-1})组明文/密文输入
Figure BSA00000846958400051
或密文/明文输出
Figure BSA00000846958400052
时,猜测第i轮轮密钥
Figure BSA00000846958400053
中的字节
Figure BSA00000846958400054
rki,j的猜测值分别为rki,j,s=s,s∈{0,...,255},当选择S盒输出前/末4轮进行攻击时,猜测轮密钥字节rki,j,s对应的中间值为
Figure BSA00000846958400055
其中,为进行第k组明文/密文第i轮加密/解密运算,猜测第j个密钥字节为s时对应的中间值,其中,L-1(x)j
Figure BSA00000846958400057
进行L-1移位后的第j个字节,Xi+1,j、Xi+2,j、Xi+3,j分别为中间运算值
Figure BSA000008469584000510
Figure BSA000008469584000511
的第j个字节;选择轮函数输出前4轮和末4轮进行的攻击时,猜测轮密钥字节rki,j,s对应的中间值分别为
Figure BSA00000846958400061
Figure BSA00000846958400062
对N组明/密文进行加/解密操作时,依次计算256猜测轮密钥字节rki,j,s对应的中间值确定中间值矩阵
Figure BSA00000846958400063
利用CPA进行步骤(4)的具体方法是:(3)步中间值映射的仿真能量消耗为:
Figure BSA00000846958400064
即第k组明文第i轮第j个字节第s个猜测密钥字节对应的仿真能量消耗,HW(x)为x中比特位值为1的个数,对N组明文/密文进行加密/解密操作,确定轮密钥字节rki,j,s对应的仿真能量消耗矩阵为:
Figure BSA00000846958400065
上述利用CPA进行步骤(5)的具体方法是:对步骤(1)的采样能量消耗矩阵
Figure BSA00000846958400066
和步骤(4)的仿真能量消耗矩阵H分别计算两者第s列和第t列的相关系数ρs,t
Figure BSA00000846958400067
其中,
Figure BSA00000846958400068
表示为第k个明文/密文、第t个时间点对应的采样能量消耗值,T为能量迹中的时间点个数,
Figure BSA00000846958400069
为矩阵H第s列的平均值,
Figure BSA000008469584000610
为矩阵W第t列的平均值,ρs,t表示第s个猜测密钥对应的仿真能量消耗与第t个时间点采样能量消耗之间的线性相关系数,rs,t为该相关系数的近似计算值,计算所有列列之间的相关系数,得到仿真能量消耗和采样能量消耗的相关系数矩阵为
Figure BSA00000846958400071
选取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 BSA00000846958400072
依次获得前4轮的加密轮密钥(rk0,rk1,rk2,rk3)=(K4,K5,K6,K7)或解密轮密钥(rk0,rk1,rk2,rk3)=(K35,K34,K33,K32);对于后4轮,使用轮密钥rki进行第i轮密码运算,得到第i-1轮的轮输出
Figure BSA00000846958400073
依次获得后4轮的加密轮密钥(rk31,rk30,rk29,rk28)=(K35,K34,K33,K32)或解密轮密钥(rk31,rk30,rk29,rk28)=(K4,K5,K6,K7);根据密钥扩展算法逆运算得到加/解密密钥。
选择轮密钥异或输入对SM4密码算法的DPA侧信道能量分析步骤如下:
(a)采集能量迹,具体是进行每组明文/密文进行加密/解密运算,采集测量时间点对应的能量消耗信息,即为能量迹,建立采样能量消耗矩阵;
(b)选择攻击对象,确定DPA选择函数;已知第i轮轮密钥第j(j∈{0,1,2,3})个字节rki,j对应的攻击对象
Figure BSA00000846958400081
以明文/密文及猜测密钥字节rki,j作为参数,这里定义DPA选择函数为
Figure BSA00000846958400082
(c)猜测轮密钥,将平均能量消耗划分为两个平均能耗子集矩阵;
(d)根据(c)步得到的两个平均能耗子集求差,确定正确的猜测密钥。
利用DPA进行步骤(c)的具体方法是:已知第k(k∈{0,...,N-1})组明文/密文输入
Figure BSA00000846958400083
或密文/明文输出
Figure BSA00000846958400084
时,猜测第i轮轮密钥rki中的字节rki,j,rki,j的猜测值分别为rki,j,s=s,s∈{0,...,255},猜测轮密钥字节rki,j,s对应的选择函数D(Xk,j,rki,j,s)=1时,则总个数
Figure BSA00000846958400085
rki,j,s对应的选择函数D(Xk,j,rki,j,s)=0时,则总个数
Figure BSA00000846958400086
对于能量迹中时间点t,得到该点两个的总能量消耗均值:
Figure BSA00000846958400087
Figure BSA00000846958400088
其中,
Figure BSA00000846958400089
为使用猜测轮密钥字节rki,j,s进行N组加密/解密操作时,选择函数等于0所对应时间点t的n0组能量消耗平均值;
Figure BSA000008469584000810
为选择函数等于1所对应时间点t的n1组能量消耗平均值,n0+n1=N,由上式对所有的时间点求能耗均值,得到两个能耗矩阵D0(256×T)和D1(256×T),分别为:
Figure BSA000008469584000811
Figure BSA000008469584000812
利用DPA进行步骤(d)的具体方法是:计算步骤(c)得到的平均能耗矩阵D0(256×T)和D1(256×T)的差矩阵ΔD=D1-D0,选择最大的能耗均值差
Figure BSA00000846958400091
Figure BSA00000846958400092
对应的猜测轮密钥字节rki,j,m为正确密钥字节,即得到正确的第i轮轮密钥的第j个字节,重复第(a)-(d)步,可分别获得轮密钥的其他3个密钥字节,从而得到第i轮正确的轮密钥rki,对于前4轮,使用轮密钥rki进行第i轮密码运算,得到第i轮的N组轮输出,即第i+1轮的轮输入
Figure BSA00000846958400093
依次获得前4轮的加密轮密钥(rk0,rk1,rk2,rk3)=(K4,K5,K6,K7)或解密轮密钥(rk0,rk1,rk2,rk3)=(K35,K34,K33,K32);对于后4轮,使用轮密钥rki进行第i轮密码运算,得到第i-1轮的轮输出
Figure BSA00000846958400094
依次获得后4轮的加密轮密钥(rk31,rk30,rk29,rk28)=(K35,K34,K33,K32)或解密轮密钥(rk31,rk30,rk29,rk28)=(K4,K5,K6,K7);根据密钥扩展算法逆运算得到加/解密密钥。
上述选取攻击对象时,当选择S盒输出前/末4轮进行攻击采用的汉明距离(HD(v1,v2))模型的前续状态v1是轮密钥异或输入,后继状态v2是S盒输出,其等效于以轮输入和轮函数输出的异或值作为攻击对象采用汉明重量(HW)模型的攻击,即当选择轮函数前/末4轮进行攻击采用的汉明距离(HD(v1,v2))模型的前续状态v1是轮密钥异或输入,后继状态v2是轮函数输出/输入,其等效于所有的轮输出/输入的异或值作为攻击对象采用汉明重量(HW)模型的攻击,即 v i , j k = L - 1 ( X i + 1 k &CirclePlus; X i + 2 k &CirclePlus; X i + 3 k ) j &CirclePlus; L - 1 X i + 4 , j k = L - 1 ( X i + 1 k &CirclePlus; X i + 2 k &CirclePlus; X i + 3 k &CirclePlus; X i + 4 k ) j = L - 1 ( X i k &CirclePlus; X i + 1 k &CirclePlus; X i + 2 k &CirclePlus; X i + 3 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 ) v i , j k = L - 1 ( X i + 1 k &CirclePlus; X i + 2 k &CirclePlus; X i + 3 k ) j &CirclePlus; L - 1 X i , j k = L - 1 ( X i + 1 k &CirclePlus; X i + 2 k &CirclePlus; X i + 3 k &CirclePlus; X i k ) j = L - 1 ( X i + 1 k &CirclePlus; X i + 2 k &CirclePlus; X i + 3 k &CirclePlus; 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 ) , 这里的
Figure BSA00000846958400103
是第i轮的轮输入,
Figure BSA00000846958400104
是第i轮的轮输出,i依次为0,1,2,3或31,30,29,28。
本发明的技术方案具有以下优点,(1)现有对SM4密码算法的能量泄露分析点单一,不能很好地适应各种类型的SM4密码算法的实现。本发明针对SM4密码算法的具体实现,创新地提出了两种新型的汉明距离模型,使用本发明提出的新方法能够更有效、全面地对SM4密码算法实现进行侧信道能量分析;(2)能量消耗主要包括前续与后继两个状态比特0→1,1→0转换的动态能量消耗,HD模型假设这两种转换的能耗值相等,从而建立一个转换数量与能耗之间的正比关系。而HW模型实质是HD模型的一个特例,它假设前续输出状态所有比特全部为0,能量消耗仅与后续状态数值相关,比HD模型更简单,因此HD模型刻画仿真能耗的准确度远远大于HW模型。对于SM4密码算法的硬件实现,寄存器由时钟信号触发,因此每个时钟周期内,寄存器先前与当前状态仅转换一次,通过采用连续时钟周期内寄存器存储数值的汉明距离来进行侧信道能量分析,可加强分析硬件实现的密码模块的有效性。本发明能够有效地分析SM4密码算法,获得密钥信息,扩展了对SM4密码算法的侧信道能量分析方法。
附图说明
图1是SM4密码算法的加密结构流程图;
图2是SM4密码算法的密钥扩展算法流程图;
图3是S盒输出的HD模型攻击对象;
图4是轮函数输出的HD模型前4轮攻击对象;
图5是轮函数输出的HD模型末4轮攻击对象;
图6是CPA分析流程图;
图7是DPA分析流程图;
图8是1000组加密运算的采样波形;
图9是对第1轮S盒输出HD模型分析,正确轮密钥对应的相关系数波形,分别对应4个S盒;
图10是对第1轮S盒输出HW模型分析,正确轮密钥对应的相关系数波形,分别对应4个S盒;
图11是第二实施例中1000组加密运算的采样波形;
图12是第二实施例对第1轮S盒输出HD模型分析,正确轮密钥对应的相关系数波形,分别对应4个S盒;
图13是第二实施例对第1轮S盒输出HW模型分析,正确轮密钥对应的相关系数波形,分别对应4个S盒
具体实施方式
下面对本发明的技术方案进行具体描述,首先以SM4密码算法的轮函数进行CPA分析为例,说明本发明的技术方案。图6是CPA分析流程图,。对于SM4密码算法的加密运算,若已知加密明文,分析密码算法的前4轮。假设进行N组明文的加密运算,令第k组明文输入为
Figure BSA00000846958400111
k∈{0,...,N-1},第i轮的轮输入为
Figure BSA00000846958400112
i依次为0,1,2,3,其步骤如下:(1)采集能量迹,对每组明文进行加密运算,采集测量时间点对应的能量消耗信息,即为能量迹,建立采样能量消耗矩阵W(N×T):
Figure BSA00000846958400121
其中,
Figure BSA00000846958400122
表示为第k个明文、第t个时间点对应的采样能量消耗值,T为能量迹中的时间点个数;
(2)选取攻击对象,确定算法攻击模型;轮密钥异或的输入作为汉明距离的前续状态,分别选取了两个攻击点:S盒的输出和轮函数的输出作为后继状态,建立了两个汉明距离(HD)模型。HD(v1,v2)为v1和v2的汉明距离,即两个状态中比特0→1,1→0变化的个数,HW(v)为v中比特为1的个数,则:
Figure BSA00000846958400123
即前续状态v1与后继状态v2的汉明距离HD(v1,v2)等价于两者异或后的汉明重量
Figure BSA00000846958400124
因此HD模型实际是以前续状态与后继状态异或后的数据作为攻击点的汉明重量(HW)模型。综上可知,以轮密钥异或输入作为前续状态,S盒输出作为后续状态的HD模型实际为以轮密钥异或输入与S盒输出异或值作为攻击点的HW模型;以轮密钥异或输入作为前续状态,轮函数输出作为后续状态的HD模型实际为以轮密钥异或输入与轮函数输出的异或值作为攻击点的HW模型。
对S盒输出的HD模型,对S盒输出的HD模型基于假设:假设SM4密码模块的轮密钥输入值v1与S盒输出值v2存储于同一寄存器,能量泄漏点为两个状态v1、v2的比特翻转,可采用同一寄存器输出状态翻转的HD模型。根据SM4密码算法的加密结构可知,4个S盒是相互独立,且L移位运算是可逆的,则对轮密钥的4个字节的轮运算也是独立的,因此,可分别选择轮密钥的各密钥字节对应的攻击对象。根据前式将HD模型转化为HW模型,则第i轮轮密钥rki的字节rki,j对应的攻击对象为:
Figure BSA00000846958400131
由上式可知,基于轮密钥异或的输入对S盒输出的攻击实际是以轮输入与轮函数输出的异或值作为攻击对象,采用HW模型的攻击。具体攻击对象如图3所示。
对轮函数输出的HD模型,对轮函数输出的HD模型基于假设:假设SM4密码算法的轮密钥异或输入值v1与轮函数输出值v2存储于同一寄存器,能量泄漏点为两个状态v1、v2的比特翻转,可采用同一寄存器输出状态翻转的HD模型。将汉明距离模型转化为汉明重量模型,则第i轮轮密钥rki的字节rki,j对应的攻击对象为:
Figure BSA00000846958400132
由式上式易知,基于轮密钥异或的输入以轮函数输出作为攻击对象的HD模型实际是以该轮所有的轮输出的异或值作为攻击对象的HW模型;也可看成是对该轮所有的轮输入作为前续状态,S盒的输出作为后继状态的HD模型,具体攻击对象如图4所示。
(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轮的加密轮运算。
对S盒输出的HD模型,猜测轮密钥字节rki,j,s对应的中间值: v i , j , s k = L - 1 ( X i + 1 k &CirclePlus; X i + 2 k &CirclePlus; X i + 3 k ) j &CirclePlus; &tau; ( ( X i + 1 , j k &CirclePlus; X i + 2 , j k &CirclePlus; X i + 3 , j k ) &CirclePlus; rk i , k , s ) .
对轮函数输出的HD模型,猜测轮密钥字节rki,j,s对应的中间值: v i , j , s k = L - 1 ( X i k &CirclePlus; X i + 1 k &CirclePlus; X i + 2 k &CirclePlus; X i + 3 k ) j &CirclePlus; &tau; ( ( X i + 1 , j k &CirclePlus; X i + 2 , j k &CirclePlus; X i + 3 , j k ) &CirclePlus; rk i , k , s ) .
当对N组明文进行加密操作时,依次计算256猜测轮密钥字节rki,j,s对应的中间值,分别得到中间值矩阵
Figure BSA00000846958400142
(4)将中间值映射为仿真能量消耗值,根据第(3)步所确定的能量模型,中间值映射的仿真能量消耗为
Figure BSA00000846958400143
Figure BSA00000846958400144
为进行第k组明文第i轮加密运算,猜测第j个密钥字节为s时对应的仿真能量消耗。
对N组明文进行加密操作,256个猜测轮密钥字节rki,j,s对应的仿真能量消耗矩阵为:
(5)计算仿真能量消耗与能量迹的线性相关系数,得到正确的猜测密钥字节。采样能量消耗矩阵W和仿真能量消耗矩阵H,分别计算两者第s列和第t列的相关系数ρs,t
Figure BSA00000846958400147
其中,
Figure BSA00000846958400148
为矩阵H第s列的平均值,
Figure BSA00000846958400149
为矩阵W第t列的平均值。ρs,t表示第s个猜测密钥对应的仿真能量消耗与第t个时间点采样能量消耗之间的线性相关系数,rs,t为该相关系数的近似计算值。计算所有列列之间的相关系数,得到仿真能量消耗和采样能量消耗的相关系数矩阵为:
Figure BSA000008469584001410
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,使用轮密钥rki进行第i轮加密运算,得到第i轮的N组轮输出,即第i+1轮的轮输入
Figure BSA00000846958400151
k∈{0,1,…,N-1}。根据上述第(1)-(5)步分析方法,依次获得前四轮的轮密钥:(rk0,rk1,rk2,rk3)=(K4,K5,K6,K7)。根据SM4密码算法的密钥扩展算法逆运算,具体如下:
Figure BSA00000846958400152
Figure BSA00000846958400153
上两式的逆运算,得到SM4密码算法加密运算的密钥(MK0,MK1,MK2,MK3)。
若已知加密密文,则分析末4轮加密操作,分析方法与前4轮大致相同,仅在选择攻击对象略有不同。
假设进行N组加密运算时,第k组的密文输出为
Figure BSA00000846958400154
Figure BSA00000846958400155
为第i轮的SM4密码算法的轮输出,i依次为31,30,29,28。对两种汉明距离模型的分析方法如下:对S盒输出的HD模型末4轮分析方法,其分析方法与前4轮完全相同。HD模型转化为HW模型后,攻击对象为该轮轮密钥异或输入与S盒输出的异或值,如图3所示。猜测轮密钥字节rki,j,s对应的攻击中间值与前4轮完全一致。依次得到末4轮正确的轮密钥(rk31,rk30,rk29,rk28)=(K35,K34,K33,K32),根据密钥扩展算法逆运算成功分析获得SM4密码算法加密运算的密钥。轮函数输入的HD模型末四轮分析方法,其分析方法与前4轮相同,仅对攻击对象的选择略有不同。HD模型转化为HW模型后,末4轮的攻击对象如图5所示:末四轮的攻击对象实际为该轮所有轮输入的异或值。猜测轮密钥字节rki,j,s对应的攻击中间值为:
Figure BSA00000846958400161
根据上述第(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分析方法,分别采用以轮密钥异或输入与S盒输出的异或值为攻击对象的HW模型(即S盒的HD模型)和以S盒输出为攻击对象的HW模型,对加密运算的第1轮进行分析,已知该轮轮密钥为0x85 23 5C E2。
采集1000组对明文加密运算的波形,即能量迹,如图8所示,与SM4加密运算相关的采样能量消耗在9.7μs-15.3μs之间,选择该部分与密码运算相对应的时间点,得到采样能量消耗矩阵W;按照上述方法分析结果如表1所示,分别列出了猜测4个轮密钥字节时,前10个最大的相关系数及其对应的猜测密钥字节。对于第1轮,正确的猜测密钥字节对应的相关系数远远大于其他9个错误的猜测密钥字节对应的相关系数。
同样,对图8的能量迹,选择S盒的输出作为攻击对象,建立HW模型,依照上述步骤分析第1轮轮密钥0x 85 23 5C E2,分析结果见表2。从表2可知,前10个最大的相关系数值差别微小,相邻两者均小于0.02,无法判断正确的轮密钥,分析得到错误的轮密钥0x CD 5337 F8;而表1中正确密钥对应的相关系数比其他猜测密钥对应的最大相关系数至少大0.4,从而很容易区分出正确的轮密钥。此外,图9、图10分别为选择两种攻击对象分析时正确轮密钥字节对应所有时间点的相关系数图。由图9可知,采样点对应的相关系数出现一个明显的尖峰,该尖峰表明:当轮密钥猜测正确时,与采样能耗泄露点的相关性远大于其他的时间点;而图10无明显的尖峰,当轮密钥猜测正确时,无法区分真正的能耗泄露点,且所有时间点对应的相关系数远小于图9的尖峰值。
表1:对加密运算第1轮的S盒输出HD模型进行CPA分析结果
表2:对加密运算第1轮的S盒输出HW模型进行CPA分析结果
Figure BSA00000846958400182
Figure BSA00000846958400191
按照上述CPA分析方法,分别采用以轮密钥异或输入与轮函数输出异或值为攻击对象的HW模型(即轮函数的HD模型)和以轮函数输出为攻击对象的HW模型,对加密运算的第1轮进行分析。采集1000组对明文加密运算的波形,如图11所示,与SM4加密运算相关的采样能量消耗在9μs-15μs之间,选择该部分与密码运算相对应的时间点,得到采样能量消耗矩阵W,按照前述方法分析结果如表3所示,罗列了分析每个轮密钥字节时,前10个最大的相关系数及其对应的猜测密钥字节。对于第1轮的轮密钥猜测,正确的猜测密钥字节对应的相关系数远远大于其他9个错误的猜测密钥字节对应的相关系数。
同样,对图11的能量迹,选择轮函数的输出作为攻击对象,建立HW模型,依照上述分析第1轮轮密钥0x 85 23 5C E2,分析结果见表4。从表4可知,前10个最大的相关系数值差别极微小,相邻两者的差均小于0.01,因而无法判断正确的轮密钥,分析得到错误的轮密钥0x 40 37 99 A0;而表3中正确密钥对应的相关系数至少比其他猜测密钥对应的最大相关系数大0.3,从而很容易区分出正确的轮密钥。此外,图12、图13分别为选择两种攻击对象分析时正确轮密钥字节对应所有时间点的相关系数图。由图12可知,采样点对应相关系数出现一个明显的尖峰,该尖峰表明:当轮密钥猜测正确时,与采样能耗泄露点的相关性远大于其他的时间点;而图13无明显的尖峰,当轮密钥猜测正确时,无法区分真正的能耗泄露点,且所有时间点对应的相关系数远小于图12的尖峰值。因此,当SM4密码算法运算的能量消耗泄露点为轮密钥异或的输入与轮函数输出状态的转换,采用基于轮密钥异或的轮函数HD模型的侧信道能量分析方法要优于采用轮函数的HW模型的侧信道能量分析方法。
表3:对加密运算第1轮的轮函数输出HD模型进行CPA分析结果
Figure BSA00000846958400201
Figure BSA00000846958400211
Figure BSA00000846958400221
表4:对加密运算第1轮的轮函数输出HW模型进行CPA分析结果
Figure BSA00000846958400222
Figure BSA00000846958400231
下面以SM4密码算法的轮函数进行DPA分析说明本发明的技术方案。DPA分析与CPA分析在采集能量迹、选择攻击对象的操作是一致的。本发明对SM4密码算法的轮函数进行DPA分析的具体方法如图7:DPA分析与CPA分析在采集能量迹、选择攻击对象的操作是一致的。根据上述DPA分析的原理,结合对SM4密码算法结构的分析,本发明对SM4密码算法的轮密钥异或进行DPA分析的具体方法如下:
对于SM4密码算法的加密运算,若已知加密明文,分析密码算法的前4轮。假设进行N组明文的加密运算,令第k组明文输入为
Figure BSA00000846958400232
k∈{0,...,N-1},第i轮的轮输入为
Figure BSA00000846958400233
i依次为0,1,2,3。(a)采集能量迹。对每组明文进行加密运算,采集测量时间点对应的能量消耗信息(能量迹),建立采样能量消耗矩阵W(N×T)。(b)选取攻击对象,确定DPA选择函数。DPA分析方法中的攻击对象选取与CPA方法完全一致。对S盒输出的HD模型,如图3所示,第i轮攻击对象以轮密钥异或输入与S盒输出的异或值作为一种新型的攻击对象。当进行第k组明文输入的第i轮加密运算时,第j个轮密钥字节rki,j对应的攻击对象
Figure BSA00000846958400234
的汉明重量期望值
Figure BSA00000846958400235
定义选择函数以明文、猜测密钥作为参数,则:
对轮函数输出的HD模型,如图4所示,第i轮攻击对象以轮密钥异或输入与轮函数输出的异或值作为一种新型的攻击对象
Figure BSA00000846958400241
同理,定义选择函数以明文、猜测密钥作为参数,则:
Figure BSA00000846958400242
(c)猜测轮密钥,将平均能量消耗划分为两个子集。确定攻击对象和选择函数后,依次猜测第i轮轮密钥字节
Figure BSA00000846958400243
j依次为0,1,2,3。rki,j的猜测值分别为rki,j,s=s,s∈{0,...,255}。
分别对S盒输出的HD模型与轮函数输出的HD模型计算选择函数:对于256个猜测密钥rki,j,s,分别进行第i轮的加密运算,得到256个相应的攻击中间值,将rki,j,s代入得到相应的选择函数D(Xk,j,rki,j,s)。
依次对N组明文进行加密运算,猜测轮密钥字节rki,j,s对应的选择函数D(Xk,j,rki,j,s)=1时,则总个数
Figure BSA00000846958400244
rki,j,s对应的选择函数D(Xk,j,rki,j,s)=0时,则总个数
Figure BSA00000846958400245
对于两种不同的HD模型,分别依据选择函数,对于能量迹中时间点t,得到该点两个总能量消耗均值:
Figure BSA00000846958400246
和,其中,
Figure BSA00000846958400248
为使用猜测轮密钥字节rki,j,s进行N组加密操作,D(Xk,j,rki,j,s)=0时,对应时间点t的n0组能量消耗平均值;为选D(Xk,j,rki,j,s)=1时,对应时间点t的n1组能量消耗平均值,n0+n1=N。
对所有的时间点求能耗均值,得到两个能耗矩阵D0(256×T)和D1(256×T),分别为:
Figure BSA00000846958400251
和,
Figure BSA00000846958400252
计算两平均能耗子集差,得到正确的猜测密钥。计算平均能耗矩阵D0(256×T)和D1(256×T)的差,得到矩阵ΔD=D1-D0
若rki,j,s猜测错误,则对于N组明文输入的加密运算,选择函数为0和1的概率各约为
Figure BSA00000846958400253
对应的平均能量消耗差随着N的增大趋近0;若rki,j,s猜测正确,则对于N组明文输入的加密运算,选择函数为0或1的概率应为1,对应的平均能量消耗差随着N的增大趋向于能耗的实际影响。综上所述,选择最大的能耗均值差
Figure BSA00000846958400254
对应的猜测轮密钥字节rki,j,m为正确密钥字节,即得到正确的第i轮轮密钥的第j个字节。
同理,根据上述第(a)-(d)步,可分别获得轮密钥的其他3个密钥字节,从而得到第i轮正确的轮密钥rki
对第i轮密码运算进行DPA分析结束后,得到正确的轮密钥rki,使用轮密钥rki进行第i轮加密运算,得到第i轮的N组轮输出,即第i+1轮的轮输入
Figure BSA00000846958400256
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 BSA00000846958400261
Figure BSA00000846958400262
为第i轮的SM4密码算法轮输出,i依次为31,30,29,28。如图3所示,对S盒输出的HD模型的攻击对象与CPA末4轮一致,为轮密钥异或输入与S盒输出的异或值;如图5所示,对轮函数输入的HD模型的攻击对象与CPA末4轮一致,为轮密钥异或输入与轮函数输入的异或值。
根据上述第(a)-(b)步的分析方法,依次得到末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 (10)

1.选择轮密钥异或输入进行SM4密码算法侧信道能量分析的应用,其特征在于,进行SM4密码算法侧信道能量分析过程中,当选择S盒输出或轮函数作为攻击点建立汉明距离模型时,其前续状态v1均为轮密钥异或输入。 
2.根据权利要求1所述的选择轮密钥异或输入进行SM4密码算法侧信道能量分析的应用,其特征在于,对S盒输出进行攻击时,汉明距离(HD(v1,v2))模型的后继状态v2是S盒输出;对轮函数进行攻击时,汉明距离(HD(v1,v2))模型的后继状态v2是轮函数。 
3.根据权利要求2所述的选择轮密钥异或输入进行SM4密码算法侧信道能量分析的应用,其特征在于,对S盒输出前/末4轮进行攻击采用的汉明距离(HD(v1,v2))模型等效于以轮输入和轮函数输出的异或值作为攻击对象采用汉明重量(HW)模型的攻击;对轮函数前/末4轮进行的攻击等效于所有的轮输出/输入的异或值作为攻击对象采用汉明重量(HW)模型的攻击。 
4.根据权利要求1、2或3所述的选择轮密钥异或输入进行SM4密码算法侧信道能量分析的应用,其特征在于,轮密钥异或输入用于对SM4密码算法的CPA/DPA侧信道能量分析。 
5.根据权利要求4所述的选择轮密钥异或输入进行SM4密码算法侧信道能量分析的应用,其特征在于,选择轮密钥异或输入对SM4密码算法的CPA侧信道能量分析步骤如下: 
(1)采集能量迹,具体是进行每组明文/密文进行加密/解密运算,采集测量时间点对应的能量消耗信息,即为能量迹,建立采样能量消耗矩阵; 
(2)选取攻击对象,确定算法攻击模型; 
(3)确定攻击对象和模型后,猜测轮密钥,计算轮运算的中间值确定 中间值矩阵; 
(4)利用上步的中间值及中间值矩阵映射为仿真能量消耗值和仿真能量消耗矩阵; 
(5)计算仿真能量消耗矩阵与采样能量消耗矩阵的线性相关系数,得到正确的猜测密钥。 
6.根据权利要求5选择轮密钥异或输入进行SM4密码算法侧信道能量分析的应用,其特征在于,利用CPA进行步骤(3)的具体方法是:当输入第k(k∈{0,...,N-1})组明文明密文输入/输出为
Figure DEST_PATH_FSB00001053788100021
Figure DEST_PATH_FSB00001053788100022
时,猜测第i轮轮密钥
Figure DEST_PATH_FSB00001053788100023
中的字节
Figure DEST_PATH_FSB00001053788100024
rki,j的猜测值分别为rki,j,s=s,s∈{0,...,255},当选择S盒输出前/末4轮进行攻击时,猜测轮密钥字节rki,j,s对应的中间值为 
Figure DEST_PATH_FSB00001053788100025
其中,
Figure DEST_PATH_FSB00001053788100026
为进行第k组明文/密文第i轮加密/解密运算,猜测第j个密钥字节为s时对应的中间值,L-1(x)j进行L-1移位后的第j个字节, 
Figure DEST_PATH_FSB00001053788100028
Figure DEST_PATH_FSB00001053788100029
分别Xi+1,j、Xi+2,j、Xi+3,j分别为中间运算值
Figure DEST_PATH_FSB000010537881000210
的第j个字节;选择轮函数输出前4轮或末4轮进行的攻击时,猜测轮密钥字节rki,j,s对应的中间值分别为
Figure DEST_PATH_FSB000010537881000211
和 
Figure DEST_PATH_FSB000010537881000212
;对N组明文进行加密操作时,依次计算256猜测轮密钥字节rki,j,s对应的中间值确定中间值 矩阵
Figure DEST_PATH_FSB00001053788100031
利用CPA进行步骤(4)的具体方法是:(3)步中间值映射的仿真能量消耗为:
Figure DEST_PATH_FSB00001053788100032
即第k组明文第i轮第j个字节第s个猜测密钥字节对应的仿真能量消耗,HW(x)为x中比特位值为1的个数,对N组明文/密文进行加密/解密操作,确定轮密钥字节rki,j,s对应的仿真能量消耗矩阵为:
Figure DEST_PATH_FSB00001053788100033
7.根据权利要求5选择轮密钥异或输入进行SM4密码算法侧信道能量分析的应用,其特征在于,利用CPA进行步骤(5)的具体方法是:对步骤(1)的采样能量消耗矩阵
Figure DEST_PATH_FSB00001053788100034
和步骤(4)的仿真能量消耗矩阵H分别计算两者第s列和第t列的相关系数ρs,t: 
Figure DEST_PATH_FSB00001053788100035
其中,
Figure DEST_PATH_FSB00001053788100036
表示为第k个明文/密文、第t个时间点对应的采样能量消耗值,T为能量迹中的时间点个数,
Figure DEST_PATH_FSB00001053788100037
为矩阵H第s列的平均值,
Figure DEST_PATH_FSB00001053788100038
为矩阵W第t列的平均值,ρs,t表示第s个猜测密钥对应的仿真能量消耗与第t个时间点采样能量消耗之间的线性相关系数,rs,t为该相关系数的近似计算值,计算所有列列之间的相关系数,得到仿真能量消耗和采样能量消耗的相关系数矩阵为 选取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 DEST_PATH_FSB00001053788100041
,依次获得前4轮的加密轮密钥(rk0,rk1,rk2,rk3)=(K4,K5,K6,K7)或解密轮密钥(rk0,rk1,rk2,rk3)=(K35,K34,K33,K32);对于后4轮,使用轮密钥rki进行第i轮密码运算,得到第i-1轮的轮输出 
Figure DEST_PATH_FSB00001053788100042
,依次获得后4轮的加密轮密钥(rk31,rk30,rk29,rk28)=(K35,K34,K33,K32)或解密轮密钥(rk31,rk30,rk29,rk28)=(K4,K5,K6,K7);根据密钥扩展算法逆运算得到加/解密密钥。 
8.根据权利要求4所述的选择轮密钥异或输入进行SM4密码算法侧信道能量分析的应用,其特征在于,选择轮密钥异或输入对SM4密码算法的DPA侧信道能量分析步骤如下: 
(a)采集能量迹,具体是进行每组明文/密文进行加密/解密运算,采集测量时间点对应的能量消耗信息,即为能量迹,建立采样能量消耗矩阵; 
(b)选择攻击对象,确定DPA选择函数;已知第i轮轮密钥第j(j∈{0,1,2,3})个字节rki,j对应的攻击对象
Figure DEST_PATH_FSB00001053788100043
以明文/密文及猜测密钥字节rki,j作为参数,且期望值
Figure DEST_PATH_FSB00001053788100044
这里定义DPA选择函数为 
Figure DEST_PATH_FSB00001053788100045
(c)猜测轮密钥,将平均能量消耗划分为两个平均能耗子集矩阵; 
(d)根据(c)步得到的两个平均能耗子集求差,确定正确的猜测密 钥。 
9.根据权利要求8所述的选择轮密钥异或输入进行SM4密码算法侧信道能量分析的应用,其特征在于,利用DPA进行步骤(c)的具体方法是:已知第k组明文/密文输入
Figure DEST_PATH_FSB00001053788100051
或密文/明文输出 
Figure DEST_PATH_FSB00001053788100052
时,猜测第i轮轮密钥rki中的字节rki,j,rki,j的猜测值分别为rki,j,s=s,s∈{0,...,255},猜测轮密钥字节rki,j,s对应的选择函数D(Xk,j,rki,j,s)=1时,则总个数
Figure DEST_PATH_FSB00001053788100053
rki,j,s对应的选择函数D(Xk,j,rki,j,s)=0时,则总个数
Figure DEST_PATH_FSB00001053788100054
对于能量迹中时间点t,得到该点两个的总能量消耗均值:和 其中,为使用猜测轮密钥字节rki,j,s进行N组加密/解密操作时,选择函数等于0所对应时间点t的n0组能量消耗平均值;
Figure DEST_PATH_FSB00001053788100058
为选择函数等于1所对应时间点t的n1组能量消耗平均值,n0+n1=N,由上式对所有的时间点求能耗均值,得到两个能耗矩阵D0(256×T)和D1(256×T),分别为: 
Figure DEST_PATH_FSB00001053788100059
利用DPA进行步骤(d)的具体方法是:计算步骤(c)得到的平均能耗矩阵D0(256×T)和D1(256×T)的差矩阵ΔD=D1-D0,选择最大的能耗均值差 
Figure DEST_PATH_FSB000010537881000511
Figure DEST_PATH_FSB000010537881000512
对应的猜测轮密钥字节rki,j,m为正确密钥字节, 即得到正确的第i轮轮密钥的第j个字节,重复第(a)-(d)步,可分别获得轮密钥的其他3个密钥字节,从而得到第i轮正确的轮密钥rki,对于前4轮,使用轮密钥rki进行第i轮密码运算,得到第i轮的N组轮输出,即第i+1轮的轮输入
Figure DEST_PATH_FSB00001053788100061
,依次获得前4轮的加密轮密钥(rk0,rk1,rk2,rk3)=(K4,K5,K6,K7)或解密轮密钥(rk0,rk1,rk2,rk2)=(K35,K34,K33,K32);对于后4轮,使用轮密钥rki进行第i轮密码运算,得到第i-1轮的轮输出 
Figure DEST_PATH_FSB00001053788100062
,依次获得后4轮的加密轮密钥(rk31,rk30,rk29,rk28)=(K35,K34,K33,K32)或解密轮密钥(rk31,rk30,rk29,rk28)=(K4,K5,K6,K7);根据密钥扩展算法逆运算得到加/解密密钥。 
10.根据权利要求5或8所述的选择轮密钥异或输入进行SM4密码算法侧信道能量分析的应用,其特征在于,选取攻击对象时,当选择S盒输出前/末4轮进行攻击采用的汉明距离(HD(v1,v2))模型的前续状态v1是轮密钥异或输入,后继状态v2是S盒输出,其等效于以轮输入和轮函数输出的异或值作为攻击对象采用汉明重量(HW)模型的攻击,即
Figure DEST_PATH_FSB00001053788100063
当选择轮函数前/末4轮进行攻击采用的汉明距离(HD(v1,v2))模型的前续状态v1是轮密钥异或输入,后继状态v2是轮函数输出/输入,其等效于所有的轮输出/输入的异或值作为攻击对象采用汉明重量(HW)模型的攻击,即 
Figure DEST_PATH_FSB00001053788100064
或 
Figure DEST_PATH_FSB00001053788100065
这里的 
Figure DEST_PATH_FSB00001053788100071
是第i轮的轮输入,是第i轮的轮输出,i依次为0,1,2,3或31,30,29,28。 
CN201310027804.6A 2013-01-25 2013-01-25 选择轮密钥异或输入进行sm4密码算法侧信道能量分析的方法 Active CN103227717B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310027804.6A CN103227717B (zh) 2013-01-25 2013-01-25 选择轮密钥异或输入进行sm4密码算法侧信道能量分析的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310027804.6A CN103227717B (zh) 2013-01-25 2013-01-25 选择轮密钥异或输入进行sm4密码算法侧信道能量分析的方法

Publications (2)

Publication Number Publication Date
CN103227717A true CN103227717A (zh) 2013-07-31
CN103227717B CN103227717B (zh) 2016-10-19

Family

ID=48837988

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310027804.6A Active CN103227717B (zh) 2013-01-25 2013-01-25 选择轮密钥异或输入进行sm4密码算法侧信道能量分析的方法

Country Status (1)

Country Link
CN (1) CN103227717B (zh)

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103546277A (zh) * 2013-09-25 2014-01-29 北京握奇数据系统有限公司 一种智能卡sm4算法的dpa攻击与密钥还原方法及系统
CN103647637A (zh) * 2013-11-19 2014-03-19 国家密码管理局商用密码检测中心 一种对简单掩码的sm4算法进行二阶侧信道能量分析方法
CN103825722A (zh) * 2013-11-19 2014-05-28 国家密码管理局商用密码检测中心 一种sm4密码算法的二阶侧信道能量分析方法
CN104202145A (zh) * 2014-09-04 2014-12-10 成都信息工程学院 针对sm4密码算法轮函数输出的选择明文或密文侧信道能量分析攻击的方法
CN104601319A (zh) * 2013-10-31 2015-05-06 上海复旦微电子集团股份有限公司 一种数据加密方法和装置
CN104717054A (zh) * 2015-02-12 2015-06-17 中国科学院信息工程研究所 一种密码实现侧信道安全性快速检测方法
CN104753665A (zh) * 2015-03-19 2015-07-01 成都信息工程学院 一种针对sm4密码轮函数输出的侧信道能量攻击方法
CN104753668A (zh) * 2015-03-19 2015-07-01 成都信息工程学院 一种针对sm4密码线性变换输出的侧信道能量攻击方法
CN104852795A (zh) * 2015-05-05 2015-08-19 国家密码管理局商用密码检测中心 一种轮输出为布尔掩码的zuc序列密码算法掩码防护方法
CN104967509A (zh) * 2015-05-05 2015-10-07 国家密码管理局商用密码检测中心 一种轮输出为算术掩码的zuc序列密码算法掩码防护方法
CN105591739A (zh) * 2016-03-08 2016-05-18 中国人民解放军军械工程学院 一种基于光汉明重量的密钥分析方法
CN105812122A (zh) * 2016-03-08 2016-07-27 中国人民解放军军械工程学院 建立密码芯片汉明重量与光辐射相关关系的方法
CN105812121A (zh) * 2016-03-08 2016-07-27 中国人民解放军军械工程学院 一种高度程式化的密钥高效分析方法
CN105897400A (zh) * 2016-06-20 2016-08-24 北京华大信安科技有限公司 一种sm4算法的掩码方法及装置
CN106385412A (zh) * 2016-09-12 2017-02-08 成都信息工程大学 一种针对sm4密码算法前4轮的约减轮故障分析的方法
CN106712930A (zh) * 2017-01-24 2017-05-24 北京炼石网络技术有限公司 一种sm4加密方法及装置
CN107623568A (zh) * 2016-07-15 2018-01-23 青岛博文广成信息安全技术有限公司 基于依赖密钥的s盒的sm4白盒算法
CN111478742A (zh) * 2020-04-07 2020-07-31 南方电网科学研究院有限责任公司 一种sm4算法的分析方法、系统以及设备
CN112968760A (zh) * 2021-01-29 2021-06-15 北京理工大学 一种基于集成学习的侧信道攻击相关能量分析方法
CN112989395A (zh) * 2021-04-28 2021-06-18 山东省计算中心(国家超级计算济南中心) 一种sm4密码算法的形式化验证方法及系统
CN113343214A (zh) * 2021-07-09 2021-09-03 北京海泰方圆科技股份有限公司 口令认证方法、装置、设备及存储介质
CN114124353A (zh) * 2021-11-19 2022-03-01 东华大学 一种认证加密算法silc的密钥泄漏检测方法
CN114297642A (zh) * 2022-01-05 2022-04-08 桂林电子科技大学 一种基于数据聚合的侧信道攻击方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
DENG GAOMING等: "Adaptive Analysis with HD Model on XOR operation in Cipher Chips", 《2012 SECOND INTERNATIONAL CONFERENCE ON INSTRUMENTATION & MEASUREMENT, COMPUTER, COMMUNICATION AND CONTROL》 *
何斌等: "基于汉明距离的相关能量侧信道分析方法研究", 《第二届全国信息与电子工程学术交流会暨第十三届四川省电子学会曙光分会学术年会论文集》 *
李浪等: "一种SMS4 加密算法差分功耗攻击", 《计算机科学》 *
李浪等: "一种SMS4 加密算法差分功耗攻击", 《计算机科学》, vol. 37, no. 7, 31 July 2010 (2010-07-31) *
沈薇: "SMS4算法的能量分析攻击及其防御研究", 《信息科技辑》 *

Cited By (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103546277B (zh) * 2013-09-25 2016-08-31 北京握奇数据系统有限公司 一种智能卡sm4算法的dpa攻击与密钥还原方法及系统
CN103546277A (zh) * 2013-09-25 2014-01-29 北京握奇数据系统有限公司 一种智能卡sm4算法的dpa攻击与密钥还原方法及系统
CN104601319A (zh) * 2013-10-31 2015-05-06 上海复旦微电子集团股份有限公司 一种数据加密方法和装置
CN104601319B (zh) * 2013-10-31 2017-12-15 上海复旦微电子集团股份有限公司 一种数据加密方法和装置
CN103647637B (zh) * 2013-11-19 2017-01-04 国家密码管理局商用密码检测中心 一种对简单掩码的sm4算法进行二阶侧信道能量分析方法
CN103825722A (zh) * 2013-11-19 2014-05-28 国家密码管理局商用密码检测中心 一种sm4密码算法的二阶侧信道能量分析方法
CN103825722B (zh) * 2013-11-19 2017-02-15 国家密码管理局商用密码检测中心 一种sm4密码算法的二阶侧信道能量分析方法
CN103647637A (zh) * 2013-11-19 2014-03-19 国家密码管理局商用密码检测中心 一种对简单掩码的sm4算法进行二阶侧信道能量分析方法
CN104202145B (zh) * 2014-09-04 2018-07-03 成都信息工程学院 针对sm4密码算法轮函数输出的选择明文或密文侧信道能量分析攻击的方法
CN104202145A (zh) * 2014-09-04 2014-12-10 成都信息工程学院 针对sm4密码算法轮函数输出的选择明文或密文侧信道能量分析攻击的方法
CN104717054A (zh) * 2015-02-12 2015-06-17 中国科学院信息工程研究所 一种密码实现侧信道安全性快速检测方法
CN104717054B (zh) * 2015-02-12 2017-11-14 中国科学院信息工程研究所 一种密码实现侧信道安全性快速检测方法
CN104753668B (zh) * 2015-03-19 2018-04-13 成都信息工程学院 一种针对sm4密码线性变换输出的侧信道能量攻击方法
CN104753668A (zh) * 2015-03-19 2015-07-01 成都信息工程学院 一种针对sm4密码线性变换输出的侧信道能量攻击方法
CN104753665B (zh) * 2015-03-19 2018-04-06 成都信息工程学院 一种针对sm4密码轮函数输出的侧信道能量攻击方法
CN104753665A (zh) * 2015-03-19 2015-07-01 成都信息工程学院 一种针对sm4密码轮函数输出的侧信道能量攻击方法
CN104967509A (zh) * 2015-05-05 2015-10-07 国家密码管理局商用密码检测中心 一种轮输出为算术掩码的zuc序列密码算法掩码防护方法
CN104967509B (zh) * 2015-05-05 2018-05-18 国家密码管理局商用密码检测中心 一种轮输出为算术掩码的zuc序列密码算法掩码防护方法
CN104852795A (zh) * 2015-05-05 2015-08-19 国家密码管理局商用密码检测中心 一种轮输出为布尔掩码的zuc序列密码算法掩码防护方法
CN104852795B (zh) * 2015-05-05 2018-03-30 国家密码管理局商用密码检测中心 一种轮输出为布尔掩码的zuc序列密码算法掩码防护方法
CN105591739A (zh) * 2016-03-08 2016-05-18 中国人民解放军军械工程学院 一种基于光汉明重量的密钥分析方法
CN105812121A (zh) * 2016-03-08 2016-07-27 中国人民解放军军械工程学院 一种高度程式化的密钥高效分析方法
CN105812122A (zh) * 2016-03-08 2016-07-27 中国人民解放军军械工程学院 建立密码芯片汉明重量与光辐射相关关系的方法
CN105591739B (zh) * 2016-03-08 2018-07-31 中国人民解放军军械工程学院 一种基于光汉明重量的密钥分析方法
CN105812122B (zh) * 2016-03-08 2018-10-12 中国人民解放军军械工程学院 建立密码芯片汉明重量与光辐射相关关系的方法
CN105812121B (zh) * 2016-03-08 2018-10-12 中国人民解放军军械工程学院 一种高度程式化的密钥高效分析方法
CN105897400A (zh) * 2016-06-20 2016-08-24 北京华大信安科技有限公司 一种sm4算法的掩码方法及装置
CN107623568A (zh) * 2016-07-15 2018-01-23 青岛博文广成信息安全技术有限公司 基于依赖密钥的s盒的sm4白盒算法
CN107623568B (zh) * 2016-07-15 2022-09-06 青岛博文广成信息安全技术有限公司 基于依赖密钥的s盒的sm4白盒实现方法
CN106385412A (zh) * 2016-09-12 2017-02-08 成都信息工程大学 一种针对sm4密码算法前4轮的约减轮故障分析的方法
CN106712930A (zh) * 2017-01-24 2017-05-24 北京炼石网络技术有限公司 一种sm4加密方法及装置
CN111478742B (zh) * 2020-04-07 2022-04-29 南方电网科学研究院有限责任公司 一种sm4算法的分析方法、系统以及设备
CN111478742A (zh) * 2020-04-07 2020-07-31 南方电网科学研究院有限责任公司 一种sm4算法的分析方法、系统以及设备
CN112968760A (zh) * 2021-01-29 2021-06-15 北京理工大学 一种基于集成学习的侧信道攻击相关能量分析方法
CN112968760B (zh) * 2021-01-29 2022-03-15 北京理工大学 一种基于集成学习的侧信道攻击相关能量分析方法
CN112989395B (zh) * 2021-04-28 2022-05-17 山东省计算中心(国家超级计算济南中心) 一种sm4密码算法的形式化验证方法及系统
CN112989395A (zh) * 2021-04-28 2021-06-18 山东省计算中心(国家超级计算济南中心) 一种sm4密码算法的形式化验证方法及系统
CN113343214B (zh) * 2021-07-09 2022-04-05 北京海泰方圆科技股份有限公司 口令认证方法、装置、设备及存储介质
CN113343214A (zh) * 2021-07-09 2021-09-03 北京海泰方圆科技股份有限公司 口令认证方法、装置、设备及存储介质
CN114124353A (zh) * 2021-11-19 2022-03-01 东华大学 一种认证加密算法silc的密钥泄漏检测方法
CN114124353B (zh) * 2021-11-19 2024-03-29 东华大学 一种认证加密算法silc的密钥泄漏检测方法
CN114297642A (zh) * 2022-01-05 2022-04-08 桂林电子科技大学 一种基于数据聚合的侧信道攻击方法
CN114297642B (zh) * 2022-01-05 2024-03-22 桂林电子科技大学 一种基于数据聚合的侧信道攻击方法

Also Published As

Publication number Publication date
CN103227717B (zh) 2016-10-19

Similar Documents

Publication Publication Date Title
CN103227717A (zh) 选择轮密钥异或输入进行sm4密码算法侧信道能量分析的应用
CN103138917B (zh) 以s盒输入为基础的汉明距离模型进行sm4密码算法侧信道能量分析方法
CN103166752B (zh) 选择轮函数为攻击对象进行sm4密码算法侧信道能量分析的应用
CN103647637B (zh) 一种对简单掩码的sm4算法进行二阶侧信道能量分析方法
CN103825722B (zh) 一种sm4密码算法的二阶侧信道能量分析方法
CN103199983B (zh) 侧信道能量分析中的n阶局域能量模型及其应用
CN106778304B (zh) 一种具有明文相关置乱机制的快速混沌图像加密方法
CN103457719A (zh) 一种对sm3密码算法hmac模式的侧信道能量分析方法
CN104202145A (zh) 针对sm4密码算法轮函数输出的选择明文或密文侧信道能量分析攻击的方法
CN105553638A (zh) 针对sm4一阶掩码算法的二阶频域能量分析攻击
CN104796250B (zh) 针对RSA密码算法M-ary实现的侧信道攻击方法
CN103530474A (zh) 面向aes算法电路的差分功耗攻击测试方法
CN104052590A (zh) 基于侧信道相关能量分析的频域分析方法
Duan et al. Differential power analysis attack and efficient countermeasures on PRESENT
CN103679008A (zh) 一种高效的安全芯片功耗攻击测试方法
CN101951314A (zh) 对称密码加密中s-盒的设计方法
CN103916236A (zh) 面向aes算法的抗功耗攻击方法及电路实现
CN104301095A (zh) Des轮运算方法和电路
CN104780051A (zh) 针对sm2公钥密码加密算法的侧信道攻击的方法
Gui et al. Security vulnerabilities of smart meters in smart grid
CN104811297B (zh) 针对RSA之M-ary实现模乘余数输入侧信道攻击
CN114157408A (zh) 基于混沌系统的数字图像加密方法、解密方法及系统
Wang et al. A power analysis on SMS4 using the chosen plaintext method
Wang et al. Timing evaluation of the known cryptographic algorithms
CN103888245A (zh) 一种智能卡的s盒随机化方法和系统

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