一种对SM3密码算法HMAC模式的侧信道能量分析方法,该方法分析了SM3密码算法及其HMAC模式的实现特征,基于DPA和CPA的攻击方法,结合SM3密码算法HMAC模式的特征及能量消耗泄漏点,成功地破解SM3密码算法HMAC模式,可任意伪造输出摘要。技术方案要点是:一、采集HMAC的能量迹;二、分析得到Kin,Kin为第1次杂凑运算中的中间状态值,三、分析获得Kout,Kout为第2次杂凑运算中的中间状态值,其中三中的方法与二中方法一致。本发明专利技术的技术方案为SM3密码算法的侧信道分析实施提供了解决方案。
【技术实现步骤摘要】
【专利摘要】一种对SM3密码算法HMAC模式的侧信道能量分析方法,该方法分析了SM3密码算法及其HMAC模式的实现特征,基于DPA和CPA的攻击方法,结合SM3密码算法HMAC模式的特征及能量消耗泄漏点,成功地破解SM3密码算法HMAC模式,可任意伪造输出摘要。技术方案要点是:一、采集HMAC的能量迹;二、分析得到Kin,Kin为第1次杂凑运算中的中间状态值,三、分析获得Kout,Kout为第2次杂凑运算中的中间状态值,其中三中的方法与二中方法一致。本专利技术的技术方案为SM3密码算法的侧信道分析实施提供了解决方案。【专利说明】—种对SM3密码算法HMAC模式的侧信道能量分析方法
本专利技术提供了一种对SM3密码算法HMAC模式的侧信道能量分析方法,涉及到密码算法实现、侧信道能量分析、密码模块检测领域。为了对实现SM3密码算法HMAC模式的密码模块进行侧信道能量分析,分析和获取受保护的密钥及敏感信息,本专利技术提出一种针对SM3密码算法HMAC模式的侧信道能量分析方法。
技术介绍
随着信息技术的发展,各种密码算法正被广泛地应用于经济、军事、行政等重要部门,保护信息的安全性。鉴于密码算法的重要性,对密码算法软硬件实现(密码模块)的分析研究对保护信息的安全具有重要的意义。近年来,多种对密码模块的攻击已广为人知,所有这些攻击的目标都是为了获取密码模块中的密钥。攻击可分为侵入式攻击、半侵入式攻击和非侵入式攻击。非侵入式攻击中的侧信道分析由于实施方便、相对成本低廉被广泛使用。侧信道分析包括计时分析、能量分析和电磁分析等。其中,侧信道能量分析是众多分析手段中最常用的方法之一,它突破了传统密码算法的分析模式,能力强大,实施相对容易。侧信道能量分析利用了密码模块能量消耗与运算数据和执行的操作之间的相关性,基于密码算法实现的能量泄露函数,建立能量模型,使用统计方法,猜测和验证密码模块使用的受保护密钥或敏感信息。侧信道能量分析方法一般包括:简单能量分析(SPA)、差分能量分析(DPA)、相关能量分析(CPA)和高阶差分能量分析(HODPA)。其中,DPA原理是:对于N组明文/密文数据的加/解密运算,获取N条能量迹(一次密码操作过程中采集到的能量消耗测量的一个向量);对每一个猜测密钥或敏感信息K,产生相应的中间值(攻击对象),根据中间值确定选择函数;通过选择函数将能量迹集划分为两个子集;分别对两个子集对应的能量消耗取平均,并对两个平均能量消耗值求差,该均值差为选择函数对应的中间值对能量迹的影响效果。根据统计理论,若K猜测不正确,当能量迹的个数N趋近无穷大时,两子集的均值差将趋近于零;若K猜测正确时,在能量迹中的某个样点,将会出现一个均值差的最大尖峰(绝对值最大值),通过最大尖峰可确定正确的密钥或敏感信息。CPA原理是:对于N组明文/密文数据的加/解密运算,获取N条能量迹;对每一个猜测密钥或敏感信息K,产生相应的中间值(攻击对象);根据中间值建立能量模型;通过能量模型将中间值映射为仿真能量消耗;计算仿真能量消耗与能量迹之间的线性相关系数,范围在之间;选取相关系数中绝对值的最大值,理论上为1,但是由于采集能量迹过程中不可避免存在噪声干扰,最大值小于1,该相关系数最大值对应的猜测值即为正确密钥或敏感信息。对于上述两种分析方法,必须具备如下条件:必须存在W(攻击点)具有明显能量消耗特征,其中,攻击点W是由两部分因子结合运算(.)组成,一部分M为已知可变化,另一部分K为未知但是固定(即攻击获取的密钥或敏感信息),W = M.K。攻击者通过输入不同的M,产生不同的W能量消耗特征,结合W = M.K,分析出K。基于杂凑算法的消息鉴别码(Hash-basedMessage Authentication code,简称HMAC)利用杂凑算法,输入一个密钥和消息,输出带认证信息的消息的摘要,用于摘要的接收方能够对摘要发送方的身份正确性和消息有效性进行验证。HMAC与普通的消息摘要的不同之处在于,摘要生成过程中密钥参与了运算。一个HMAC过程表示为:HMAC (K, m) = H( (K ? opad) Il H ((K ? ipad) Ilm)) (I)其中,H代表一个杂凑算法(如SHA-256、SHA-1,SM3等)函数,K为鉴别密钥,m代表一个不定长的消息输入。用B来表不杂凑算法输入分组的字节长度,用L来表不杂凑算法摘要输出的字节长度(如MD5中L = 16, SHA-1中L = 20),鉴别密钥K的长度一般为小于等于B的正整数值,小于分组长度B时在密钥K后补O ;若鉴别密钥K的长度比B大,则使用杂凑算法函数H对K进行摘要运算,输出的L长度字节串作为在HMAC中实际使用的密钥。ipad为B字节重复的0x36,opad为B字节重复的0x5C。附图1描述了 HMAC的处理过程,IV为杂凑函数H的初始状态值,f为H中压缩函数, 为输入的消息分组,Kin, h1; h2,...,hn_1; hn,Kout为每次杂凑运算的中间状态。目前,对杂凑算法HMAC模式的DPA/CPA能量分析已有一定的理论成果。由图1可知,K ? ipad为第I组输入消息分组,是固定未知,K ? ipad经过压缩运算后仍得到固定未知值Kin = f(K ? ipad, IV),而第2组输入消息分组Hi1为已知可变,Kin参与f函数中的大功耗运算,满足DPA/CPA分析条件,因此根据已知可变输入消息分组Hi1,可分析出Kin,同理,若分析出Kin,hn的值则为已知可变,Kwt = f(K ? opad, IV)为固定未知,Ktjut参与f函数中的大功耗运算,满足DPA/CPA分析条件,可分析出K-。通过Kin和Ktjut,攻击者可伪造出任意消息的消息鉴别码。SM3密码算法是我国公开发布的第一个密码杂凑算法。SM3算法分组输入长度512比特,摘要输出长度256比特。初始向量IV = 7380166f 4914b2b9 172442d7 da8a0600a96f30bc 163138aa e38dee4d b0fb0e4e。SM3算法的运算步骤分为三步:1、填充消息假设消息m的长度为L比特。首先将比特“ I ”添加到消息的末尾,再添加K个“0”,K是满足L+l+K = 448 mod 512的最小负整数,然后再添加一个64位的比特串,该比特串是长度L的二进制表示。填充后的消息后m'的比特长度为512的整倍数,并可以用消息分组妒)来表示。2、迭代压缩将填充后的消息m'按512比特进行分组:m' = M(0)M(1)...M(n—1),其中η =(L+K+65)/512。对m'按下列方式迭代:for i = O to n_lV(i+1) = CF(V⑴,M⑴)(2)endfor其中CF是压缩函数,V(°)为256比特初始值IV,分别为字Μω为填充后的消息分组,迭代压缩的结果为V(n)。2.1消息扩展将消息分组Μω按以下方法扩展生成132个字W。,W1,…,W67W ,W/,…,W63',用于压缩函数CF:(I)将消息分组Μω划分为16个字W。,W1,…,W15 ;for j = 16 to 67(2)Wj = P1 (ffj_16 ? ffj_9 ? (ffj_3 &本文档来自技高网...
【技术保护点】
一种对SM3密码算法HMAC模式的侧信道能量分析方法,其特征在于:所述方法包括以下步骤:步骤一、采集HMAC的能量迹基于DPA及CPA分析方法,根据需求采集N组不同明文消息输入的SM3算法HMAC运算的能量迹,并分析SM3杂凑算法的HMAC模式特征,HMAC(K,m)=H((K⊕opad)‖H((K⊕ipad)‖m))??式(1)式(1)中:H代表一个杂凑算法函数;K为鉴别密钥;m代表一个不定长的消息输入;在HMAC处理过程中,定义K⊕ipad,m1,m2,…,mn,K⊕opad为输入的消息分组,分别为M(0)M(1)…M(n?1),K⊕ipad、K⊕opad分别为第1、2次杂凑运算的第1组输入消息分组,是固定未知,经过压缩运算后仍得到固定未知值Kin=f(K⊕ipad,IV)、Kout=f(K⊕opad,IV),Kin,h1,h2,…,hn?1,hn,Kout为每次杂凑运算的中间状态;第2组输入消息分组m1为已知可变,SM3算法的压缩函数V(i+1)=CF(V(i),M(i))(0≤i≤n?1)的计算过程如下:A0B0C0D0E0F0G0H0←V(i)???式(5)for?j=1?to?641.SS1j←((Aj?1<<<12)+Ej?1+(Tj?1<<<(j?1))<<<72.SS2j←SS1j⊕(Aj?1<<<12)3.TT1j←FFj?1(Aj?1,Bj?1,Cj?1)+Dj?1+SS2j+Wj?1′4.TT2j←GGj?1(Ej?1,Fj?1,Gj?1)+Hj?1+SS1j+Wj?15.Dj←Cj?16.Cj←Bj?1<<<97.Bj←Aj?18.Aj←TT1j9.Hj←Gj?110.Gj←Fj?1<<<1911.Fj←Ej?112.Ej←P0(TT2j)end????式(6)由于Kin、Kout固定未知,且压缩函数中存在明显能量消耗泄漏,分别选择杂凑运算第2组消息分组m1、H((K⊕ipad)‖m)即hn、在式(6)压缩函数运算中第j=1,2轮迭代中的第1、2、3、4步运算的能量消耗作为分析部分;步骤二、分析得到Kin选择压缩函数CF(.)中的能量消耗泄漏点,不断改变第2组消息分组m1的输入值,一层层地分析出Kin,见式(6);由式(6)压缩函数可知,当对第2组输入消息分组输入m1进行压缩运算时,Kin为压缩函数CF(.)的初始状态(A0,B0,C0,D0,F0,G0,H0),是固定值,若想得到完整的Kin,必须分别分析获得(A0,B0,C0,D0,F0,G0,H0)各自的值,根据式(6)的压缩步骤,分析如下:当j=1时,由Kin固定可知SS11=((A0<<<12)+E0+T0)<<<7、SS21=SS11⊕(A0<<<12)均为固定值;步骤二一、分析得到TT11、X(j=1)对于式(6)中的第3步,由SM3算法的消息扩展中的式(4)可知,for?j=0?to?63Wj′=Wj⊕Wj+4??式(4)endW′j?1为已知变量,其余均未知;设TT11=FF0(A0,B0,C0)+D0+SS21+W0′中的FF0(A0,B0,C0)+D0+SS21为X,易知X值固定,W0′根据攻击者的输入改变,且TT11存在能量消耗泄漏,满足DPA/CPA分析条件,改变输入W0′,采集能量迹,使用DPA/CPA分析得到X,并推出TT11;步骤二二、分析得到TT21、Y(j=1)同理,对于式(6)中的第4步,Wj?1为已知可变输入,其余均未知;设TT21=GG0(E0,F0,C0)+H0+SS11+W0中的GG0(E0,F0,C0)+H0+SS11为Y,易知Y值固定,W0根据攻击者的输入改变,且TT21存在能量消耗泄漏,满足DPA/CPA分析条件,改变输入W0,采集能量迹,使用DPA/CPA分析得到Y,并推出TT21;步骤二三、分析得到A1、E1、A0、E0(j=1)当j=1时,由式(6)中的第8步和第12步,可分别得到A1,E1;由于TT11和TT21为已知变量,A0、E0为固定未知值,且A0和A1、E0和E1的寄存器比特转换时存在能量消耗泄漏,体现在能量迹上,满足DPA/CPA分析,使用汉明距离模型hd(TT11,A0)、hd(P0(TT21),E0),进行DPA/CPA分析可得到A0,E0;其中,hd(x,y)表示为x⊕y中比特为1的个数;当j=2时,由于A1、E1为已知变量,由式(6)中第1步和第2步可知,SS12=((A1<<<12)+E1+(T1<<<1)<<<7,SS22=SS12⊕(A1<<<12)为已知变量;步骤二四、分...
【技术特征摘要】
【专利技术属性】
技术研发人员:罗鹏,曹伟琼,李大为,
申请(专利权)人:国家密码管理局商用密码检测中心,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。