CN103166752A - 选择轮函数为攻击对象进行sm4密码算法侧信道能量分析的应用 - Google Patents
选择轮函数为攻击对象进行sm4密码算法侧信道能量分析的应用 Download PDFInfo
- 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
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了选择轮函数为攻击对象进行SM4密码算法侧信道能量分析的应用,其核心在于加密/解密攻击对象为轮函数。该应用在对SM4密码算法的CPA侧信道能量分析步骤如下:(1)采集能量迹,建立采样能量消耗矩阵;(2)选择轮函数作为攻击对象;(3)确定攻击对象和模型后,猜测轮密钥,计算轮运算的中间值确定中间值矩阵;(4)中间值及中间值矩阵映射为仿真能量消耗值和仿真能量消耗矩阵;(5)计算仿真能量消耗矩阵与采样能量消耗矩阵的线性相关系数,得到正确的猜测密钥。本发明的方法提高了正确的猜测密钥与能量信息之间的相关性,增强了分析有效性和成功率。
Description
技术领域
本发明属于密码算法分析检测技术领域,具体来说是涉及在密码算法实现、侧信道能量分析、密码模块检测过程中,针对实现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密码算法的结构如下:
其中,T:是一个可逆变换,由非线性变换τ和线性变换L复合而成,即T(.)=L(τ(.))。
(b0,b1,b2,b3)=τ(A)=(Sbox(a0),Sbox(a1),Sbox(a2),Sbox(a3)) (2)
假设Ai为第i轮S盒的输入,Bi为第i轮S盒的输出、L移位的输入,Ci为第i轮L移位的输出。根据算法满足如下:
Bi=τ(Ai) (5)
Ci=L(Bi) (6)
根据上式(4)、(5)、(6)、(7),可得第i+1轮的轮输入(Xi+1,Xi+2,Xi+3,Xi+4),依次运算32轮,即可以得到输出密文 上述SM4密码算法的加密结构流程如图1所示。
SM4密码算法的密钥扩展算法与加密算法结构类似,如图2,仅线性变换L移位函数不一致。令初始加密密钥为(MK0,MK1,MK2,MK3)。
其中,(FK0,FK1,FK2,FK3)为已知常量。
其中,τ函数与上述SM4密码算法加密结构中的τ函数一致,rki为第i轮的加密密钥,i=0,1,…,31,CKi为已知常量。
线性变换L′为:
根据式(9),可分别获得32轮轮密钥(rk0,rk1,…,rk31),长度均为32比特。
数据解密和数据加密的算法结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。解密时,使用轮密钥序(rk31,rk30,…,rk0)
对SM4密码算法的能量分析方法通常选取S盒的输出、L移位的输出作为攻击对象,使用汉明重量、单比特模型,利用DPA和CPA方法进行分析。这些方法仅利用了典型的分析点,不能全面有效对SM4密码算法实施分析。此外,当上述分析点可利用的能量泄露信息很少时,将会影响对SM4密码算法分析的成功率。因此,需要提出更有效的侧信道能量分析方法。
发明内容
在SM4密码算法分析中,侧信道能量分析方法是否有效,其关键在于密码算法中的攻击对象选取和相应能量模型的选择,选取恰当的攻击对象可提高采样能量信息的信噪比和分析的成功率。
本发明的目的在于系统分析SM4密码算法的实现特征,创造性地选择包括了SM4密码算法中轮输入/输出信息和密钥信息的轮函数作为侧信道能量分析的攻击点,从而提高了正确的猜测密钥与能量信息之间的相关性,增强了分析有效性和成功率。
实现上述目的本发明的技术方案为,选择轮函数为攻击对象进行SM4密码算法侧信道能量分析的应用,其加密/解密攻击对象为轮函数。
上述选择轮函数为攻击对象进行SM4密码算法侧信道能量分析的应用时,进行加密/解密前4轮攻击时,如图3所示,选择轮函数输出为攻击点,即作为攻击对象,这里是输入第k组明文/密文时,第i(i∈{0,1,2,3})轮轮密钥第j(j∈{0,1,2,3})个字节对应的攻击对象,是第i轮轮函数的输出,L-1(x)是对L(x)进行一个逆运算,
上述选择轮函数为攻击对象进行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对应的中间值:其中,为rki,j等于rki,j,s时得到的当对N(k∈{0,1,…,N-1})组明文/密文进行加密/解密操作时,依次计算轮密钥字节rki,j,s对应的中间值,得到中间值矩阵V(N×256):
上述选择轮函数为攻击对象对SM4密码算法的CPA侧信道能量分析步骤中,利用CPA进行步骤(5)的具体方法是:对步骤(1)的采样能量消耗矩阵 和步骤(4)的仿真能量消耗矩阵H分别计算两者第s列和第t列的相关系数ρs,t:
上述选择轮函数为攻击对象对SM4密码算法的DPA侧信道能量分析步骤如下:
(a)采集能量迹,具体是进行每组明文/密文进行加密/解密运算,采集测量时间点对应的能量消耗信息,即为能量迹,建立采样能量消耗矩阵;
(b)选择轮函数作为攻击对象,确定DPA选择函数;
(c)猜测轮密钥,将平均能量消耗划分为两个平均能耗子集矩阵;
(d)根据(c)步得到的两个平均能耗子集求差,确定正确的猜测密钥。
上述选择轮函数为攻击对象对SM4密码算法的DPA侧信道能量分析步骤中,如图3、图4所示,采用DPA进行前/后4轮攻击时的步骤(b)中选择攻击对象为轮函数i∈{0,1,2,3}或i∈{31,30,29,28}后,根据攻击时每个字节输出数据的汉明重量期望值已知以明文/密文及猜测密钥字节rki,j作为参数,则确定DPA选择函数为:
上述选择轮函数为攻击对象对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时,则总个数rki,j,s对应的选择函数D(Xk,j,rki,j,s)=0时,则总个数对于能量迹中时间点t,得到该点两个的总能量消耗均值:
利用DPA进行步骤(d)的具体方法是:计算步骤(c)得到的平均能耗矩阵D0(256×T)和D1(256×T)的差矩阵:
选择最大的能耗均值差则对应的猜测轮密钥字节rki,j,m为正确密钥字节,即得到正确的第i轮轮密钥的第j个字节rki,j=rki,j,m,重复第(a)-(d)步,可分别获得轮密钥的其他3个密钥字节,从而得到第i轮正确的轮密钥rki,对于前4轮,使用轮密钥rki进行第i轮密码运算,得到第i轮的N组轮输出,即第i+1轮的轮输入依次获得前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组明文输入为 k∈{0,...,N-1},第i轮的轮输入为 i依次为0,1,2,3,其步骤如下:
(1)采集能量迹,对每组明文进行加密运算,采集测量时间点对应的能量消耗信息,建立采样能量消耗矩阵W(N×T):
其中,表示为第k个明文、第t个时间点对应的采样能量消耗值,T为能量迹中的时间点个数;
(2)选取攻击对象,确定算法攻击模型;本发明选择轮函数的输出作为新型的攻击对象,使用汉明重量(HW)模型进行建模,具体攻击对象如图3所示,根据SM4密码算法的加密结构可知,4个S盒是相互独立,且L移位运算是可逆的,则对轮密钥的4个字节的轮运算也是独立的,因此,可分别选择轮密钥的各密钥字节对应的攻击对象。当输入为第k组明文时,选择第i轮轮密钥第j(j∈{0,1,2,3})个字节rki,j对应的攻击对象应为的第j个字节但是经过L移位得到的与轮密钥rki,j并不是对应关系,因此必须对进行一个L-1逆运算得到 且 由能量泄漏模型可知:其中,Hi为仿真能量消耗,Ptotal为采样能量消耗,ρ为线性相关系数,Ptotal=Pexp+Pnoise,Pexp为可用于能量分析的能量消耗,为信噪比。上式可知,信噪比与ρ(Hi,Ptotal)成正比。为了提高ρ(Hi,Ptotal)的大小,应尽可能增大信噪比,提高Pexp信息量。本发明选择轮函数输出作为攻击点,该能量消耗泄漏点包含了S盒输出状态信息和轮输入状态信息,增大了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对应的中间值: 其中,为进行L-1移位后的第j个字节。
当对N组明文进行加密操作时,依次计算轮密钥字节rki,j,s对应的中间值,得到中间值矩阵V(N×256):
(4)中间值映射为仿真能量消耗值。
(5)计算仿真能量消耗与能量迹的线性相关系数,得到正确的猜测密钥字节。
对步骤(1)中的采样能量消耗矩阵W和仿真能量消耗矩阵H,分别计算两者第s列和第t列的相关系数ρs,t:
其中,为矩阵H第s列的平均值,为矩阵W第t列的平均值。ρs,t表示第s个猜测密钥对应的仿真能量消耗与第t个时间点采样能量消耗之间的线性相关系数,rs,t为该相关系数的近似计算值。计算所有列列之间的相关系数,得到仿真能量消耗和采样能量消耗的相关系数矩阵为:
同理,根据上述第(1)-(5)步,分别获得轮密钥的其他3个密钥字节,从而得到第i轮正确的轮密钥rki。
对第i轮密码运算进行CPA分析结束后,使用轮密钥rki进行第i轮加密运算,得到第i轮的N组轮输出,即第i+1轮的轮输入k∈{0,1,…,N-1}。根据上述第(1)-(5)步分析方法,依次获得前四轮的轮密钥:(rk0,rk1,rk2,rk3)=(K4,K5,K6,K7)。
根据SM4密码算法的密钥扩展算法逆运算,具体如下:
由上两式的逆运算,得到SM4密码算法加密运算的密钥(MK0,MK1,MK2,MK3)
若已知加密密文,则分析末4轮加密操作,分析方法与前4轮大致相同,仅在选择攻击对象略有不同,如图4所示。
假设进行N组加密运算时,第k组的密文输出为令为第i轮的SM4密码算法的轮输出,i依次为31,30,29,28,攻击对象图4所示。当输入为第k组明文时,第i轮轮密钥第j(j∈{0,1,2,3})个字节对应的攻击对象应为同理,为了确保攻击中间值与猜测轮密钥字节rki,j的对应关系,需对进行L-1移位运算,则最后攻击的中间值为: 根据上述第(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分析结果
同样,对图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分析结果
此外,图8、图9分别为对轮函数的输出、S盒的输出进行分析时,正确轮密钥字节对应所有时间点的相关系数图。由图8可知,采样点对应相关系数出现一个明显的尖峰,该尖峰表明:当轮密钥猜测正确时,与采样能耗泄露点的相关性远大于其他的时间点;而图9无明显的尖峰,当轮密钥猜测正确时,无法区分真正的能耗泄露点,且所有时间点对应的相关系数远小于图8的尖峰值。因此,当SM4密码算法运算的能量消耗泄露点为轮函数的输出,采用对轮函数的侧信道能量分析方法要优于对S盒的侧信道能量分析方法。
下面以SM4密码算法的轮函数进行DPA分析说明本发明的技术方案。DPA分析与CPA分析在采集能量迹、选择攻击对象的操作是一致的。本发明对SM4密码算法的轮函数进行DPA分析的具体方法如图6:
(a)采集能量迹,对每组明文进行加密运算,采集测量时间点对应的能量消耗信息(能量迹),建立采样能量消耗矩阵W(N×T)。
(c)猜测轮密钥,将平均能量消耗划分为两个子集。确定攻击对象和选择函数后,依次猜测第i轮轮密钥第j个字节j依次为0,1,2,3,rki,j的猜测值分别为rki,j,s=s,s∈{0,...,255}。
对于256个猜测密钥rki,j,s,分别经过第i轮的加密运算,得到256个相应的攻击中间值: 得到相应的选择函数D(Xk,j,rki,j,s),依次对N组明文进行加密运算,猜测轮密钥字节rki,j,s对应的选择函数D(Xk,j,rki,j,s)=1时,则总个数rki,j,s对应的选择函数D(Xk,j,rki,j,s=0时,则总个数依据选择函数,对于能量迹中时间点t,得到该点两个的总能量消耗均值:
其中,为使用猜测轮密钥字节rki,j,s进行N组加密操作,选择函数等于0时,对应时间点t的n0组能量消耗平均值;为选择函数等于1时,对应时间点t的n1组能量消耗平均值,n0+n1=N。对所有的时间点求能耗均值,得到两个能耗矩阵D0(256×T)和D1(256×T),分别为:
(d)计算两平均能耗子集差,得到正确的猜测密钥。计算平均能耗矩阵D0(256×T)和D1(256×T)的差,得到矩阵ΔD=D1-D0。
若rki,j,s猜测错误,则对于N组明文输入的加密运算,选择函数为0和1的概率各约为对应的平均能量消耗差随着N的增大趋近0;若rki,j,s猜测正确,则对于N组明文输入的加密运算,选择函数为0或为1的概率应为1,对应的平均能量消耗差随着N的增大趋向于能耗的实际影响。综上所述,选择最大的能耗均值差则对应的猜测轮密钥字节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轮是相同的。
根据上述第(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密码算法侧信道能量分析的应用,其特征在于,加密/解密攻击对象为轮函数。
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对应的中间值:其中,为rki,j等于rki,j,s时得到的当对N(k∈{0,1,…,N-1})组明文/密文进行加密/解密操作时,依次计算轮密钥字节rki,j,s对应的中间值,得到中间值矩阵V(N×256):
6.根据权利要求4选择轮函数为攻击对象进行SM4密码算法侧信道能量分析的应用,其特征在于,利用CPA进行步骤(5)的具体方法是:对步骤(1)的采样能量消耗矩阵 和步骤(4)的仿真能量消耗矩阵H分别计算两者第s列和第t列的相关系数ρs,t: 其中,表示为第k个明文/密文、第t个时间点对应的采样能量消耗值,T为能量迹中的时间点个数,为矩阵H第s列的平均值,为矩阵W第t列的平均值,ρs,t表示第s个猜测密钥对应的仿真能量消耗与第t个时间点采样能量消耗之间的线性相关系数,rs,t为该相关系数的近似计算值,计算所有列列之间的相关系数,得到仿真能量消耗和采样能量消耗的相关系数矩阵为 选取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轮的轮输入依次获得前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);根据密钥扩展算法逆运算得到加/解密密钥。
7.根据权利要求3所述的选择轮函数为攻击对象进行SM4密码算法侧信道能量分析的应用,其特征在于,选择轮函数为攻击对象对SM4密码算法的DPA侧信道能量分析步骤如下:
(a)采集能量迹,具体是进行每组明文/密文进行加密/解密运算,采集测量时间点对应的能量消耗信息,即为能量迹,建立采样能量消耗矩阵;
(b)选择轮函数作为攻击对象,确定DPA选择函数;
(c)猜测轮密钥,将平均能量消耗划分为两个平均能耗子集矩阵;
(d)根据(c)步得到的两个平均能耗子集求差,确定正确的猜测密钥。
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时,则总个数rki,j,s对应的选择函数D(Xk,j,rki,j,s)=0时,则总个数对于能量迹中时间点t,得到该点两个的总能量消耗均值:知其中,为使用猜测轮密钥字节rki,j,s进行N组加密/解密操作时,选择函数等于0所对应时间点t的n0能能量消耗平均值;为选择函数等于1所对应时间点t的n1组能量消耗平均值,n0+n1=N,由上式对所有的时间点求能耗均值,得到两个能耗矩阵D0(256×T)和D1(256×T),分别为:
利用DPA进行步骤(d)的具体方法是:计算步骤(c)得到的平均能耗矩阵D0(256×T)和D1(256×T)的差矩阵:
选择最大的能耗均值差则对应的猜测轮密钥字节rki,j,m为正确密钥字节,即得到正确的第i轮轮密钥的第j个字节,重复第(a)-(d)步,可分别获得轮密钥的其他3个密钥字节,从而得到第i轮正确的轮密钥rki,对于前4轮,使用轮密钥rki进行第i轮密码运算,得到第i轮的N组轮输出,即第i+1轮的轮输入依次获得前4轮的加密轮密钥(rk0,rk1,rk2,rk3)=(K4,K5,K6,K7)或解密轮密钥(rk0,rk1,rk2,rk3)=(K35,K34,K33,K32);对于后4轮,使用轮密钥rk1进行第i轮密码运算,得到第i-1轮的轮输出依次获得后4轮的加密轮密钥(rk31,rk30,rk29,rk28)=(K35,K34,K33,K32)或解密轮密钥(rk31,rk30,rk29,rk28)=(K4,K5,K6,K7);根据密钥扩展算法逆运算得到加/解密密钥。
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)
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)
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 | 中国科学院软件研究所 | 一种指令级密码设备能量消耗信息生成方法 |
-
2013
- 2013-01-25 CN CN201310027784.2A patent/CN103166752B/zh active Active
Patent Citations (2)
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)
Title |
---|
何斌等: ""基于汉明距离的相关能量侧信道分析方法研究"", 《第二届全国信息与电子工程学术交流会暨第十三届四川省电子学会曙光分会学术年会论文集》 * |
李浪等: ""一种SMS4加密算法差分功耗攻击"", 《计算机科学》 * |
Cited By (30)
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 |