一種對sm3密碼算法hmac模式的側(cè)信道能量分析方法
【專利摘要】一種對SM3密碼算法HMAC模式的側(cè)信道能量分析方法,該方法分析了SM3密碼算法及其HMAC模式的實現(xiàn)特征,基于DPA和CPA的攻擊方法,結(jié)合SM3密碼算法HMAC模式的特征及能量消耗泄漏點,成功地破解SM3密碼算法HMAC模式,可任意偽造輸出摘要。技術(shù)方案要點是:一、采集HMAC的能量跡;二、分析得到Kin,Kin為第1次雜湊運算中的中間狀態(tài)值,三、分析獲得Kout,Kout為第2次雜湊運算中的中間狀態(tài)值,其中三中的方法與二中方法一致。本發(fā)明的技術(shù)方案為SM3密碼算法的側(cè)信道分析實施提供了解決方案。
【專利說明】—種對SM3密碼算法HMAC模式的側(cè)信道能量分析方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明提供了一種對SM3密碼算法HMAC模式的側(cè)信道能量分析方法,涉及到密碼算法實現(xiàn)、側(cè)信道能量分析、密碼模塊檢測領(lǐng)域。為了對實現(xiàn)SM3密碼算法HMAC模式的密碼模塊進(jìn)行側(cè)信道能量分析,分析和獲取受保護(hù)的密鑰及敏感信息,本發(fā)明提出一種針對SM3密碼算法HMAC模式的側(cè)信道能量分析方法。
【背景技術(shù)】
[0002]隨著信息技術(shù)的發(fā)展,各種密碼算法正被廣泛地應(yīng)用于經(jīng)濟(jì)、軍事、行政等重要部門,保護(hù)信息的安全性。鑒于密碼算法的重要性,對密碼算法軟硬件實現(xiàn)(密碼模塊)的分析研究對保護(hù)信息的安全具有重要的意義。近年來,多種對密碼模塊的攻擊已廣為人知,所有這些攻擊的目標(biāo)都是為了獲取密碼模塊中的密鑰。攻擊可分為侵入式攻擊、半侵入式攻擊和非侵入式攻擊。非侵入式攻擊中的側(cè)信道分析由于實施方便、相對成本低廉被廣泛使用。側(cè)信道分析包括計時分析、能量分析和電磁分析等。其中,側(cè)信道能量分析是眾多分析手段中最常用的方法之一,它突破了傳統(tǒng)密碼算法的分析模式,能力強(qiáng)大,實施相對容易。側(cè)信道能量分析利用了密碼模塊能量消耗與運算數(shù)據(jù)和執(zhí)行的操作之間的相關(guān)性,基于密碼算法實現(xiàn)的能量泄露函數(shù),建立能量模型,使用統(tǒng)計方法,猜測和驗證密碼模塊使用的受保護(hù)密鑰或敏感信息。側(cè)信道能量分析方法一般包括:簡單能量分析(SPA)、差分能量分析(DPA)、相關(guān)能量分析(CPA)和高階差分能量分析(HODPA)。
[0003]其中,DPA原理是:對于N組明文/密文數(shù)據(jù)的加/解密運算,獲取N條能量跡(一次密碼操作過程中采集到的能量消耗測量的一個向量);對每一個猜測密鑰或敏感信息K,產(chǎn)生相應(yīng)的中間值(攻擊對象),根據(jù)中間值確定選擇函數(shù);通過選擇函數(shù)將能量跡集劃分為兩個子集;分別對兩個子集對應(yīng)的能量消耗取平均,并對兩個平均能量消耗值求差,該均值差為選擇函數(shù)對應(yīng)的中間值對能量跡的影響效果。根據(jù)統(tǒng)計理論,若K猜測不正確,當(dāng)能量跡的個數(shù)N趨近無窮大時,兩子集的均值差將趨近于零;若K猜測正確時,在能量跡中的某個樣點,將會出現(xiàn)一個均值差的最大尖峰(絕對值最大值),通過最大尖峰可確定正確的密鑰或敏感信息。CPA原理是:對于N組明文/密文數(shù)據(jù)的加/解密運算,獲取N條能量跡;對每一個猜測密鑰或敏感信息K,產(chǎn)生相應(yīng)的中間值(攻擊對象);根據(jù)中間值建立能量模型;通過能量模型將中間值映射為仿真能量消耗;計算仿真能量消耗與能量跡之間的線性相關(guān)系數(shù),范圍在[_1,1]之間;選取相關(guān)系數(shù)中絕對值的最大值,理論上為1,但是由于采集能量跡過程中不可避免存在噪聲干擾,最大值小于1,該相關(guān)系數(shù)最大值對應(yīng)的猜測值即為正確密鑰或敏感信息。
[0004]對于上述兩種分析方法,必須具備如下條件:必須存在W(攻擊點)具有明顯能量消耗特征,其中,攻擊點W是由兩部分因子結(jié)合運算(.)組成,一部分M為已知可變化,另一部分K為未知但是固定(即攻擊獲取的密鑰或敏感信息),W = M.K。攻擊者通過輸入不同的M,產(chǎn)生不同的W能量消耗特征,結(jié)合W = M.K,分析出K。
[0005]基于雜湊算法的消息鑒別碼(Hash-basedMessage Authentication code,簡稱HMAC)利用雜湊算法,輸入一個密鑰和消息,輸出帶認(rèn)證信息的消息的摘要,用于摘要的接收方能夠?qū)φl(fā)送方的身份正確性和消息有效性進(jìn)行驗證。HMAC與普通的消息摘要的不同之處在于,摘要生成過程中密鑰參與了運算。一個HMAC過程表示為:
[0006]HMAC (K, m) = H( (K ? opad) Il H ((K ? ipad) Ilm)) (I)
[0007]其中,H代表一個雜湊算法(如SHA-256、SHA-1,SM3等)函數(shù),K為鑒別密鑰,m代表一個不定長的消息輸入。用B來表不雜湊算法輸入分組的字節(jié)長度,用L來表不雜湊算法摘要輸出的字節(jié)長度(如MD5中L = 16, SHA-1中L = 20),鑒別密鑰K的長度一般為小于等于B的正整數(shù)值,小于分組長度B時在密鑰K后補(bǔ)O ;若鑒別密鑰K的長度比B大,則使用雜湊算法函數(shù)H對K進(jìn)行摘要運算,輸出的L長度字節(jié)串作為在HMAC中實際使用的密鑰。ipad為B字節(jié)重復(fù)的0x36,opad為B字節(jié)重復(fù)的0x5C。附圖1描述了 HMAC的處理過程,
[0008]IV為雜湊函數(shù)H的初始狀態(tài)值,f為H中壓縮函數(shù),
為輸入的消息分組,Kin, h1; h2,...,hn_1; hn,Kout為每次雜湊運算的中間狀態(tài)。
[0009]
[0010]目前,對雜湊算法HMAC模式的DPA/CPA能量分析已有一定的理論成果。由圖1可知,K ? ipad為第I組輸入消息分組,是固定未知,K ? ipad經(jīng)過壓縮運算后仍得到固定未知值Kin = f(K ? ipad, IV),而第2組輸入消息分組Hi1為已知可變,Kin參與f函數(shù)中的大功耗運算,滿足DPA/CPA分析條件,因此根據(jù)已知可變輸入消息分組Hi1,可分析出Kin,同理,若分析出Kin,hn的值則為已知可變,Kwt = f(K ? opad, IV)為固定未知,Ktjut參與f函數(shù)中的大功耗運算,滿足DPA/CPA分析條件,可分析出K-。通過Kin和Ktjut,攻擊者可偽造出任意消息的消息鑒別碼。
[0011]SM3密碼算法是我國公開發(fā)布的第一個密碼雜湊算法。SM3算法分組輸入長度512比特,摘要輸出長度256比特。初始向量IV = 7380166f 4914b2b9 172442d7 da8a0600a96f30bc 163138aa e38dee4d b0fb0e4e。
[0012]SM3算法的運算步驟分為三步:
[0013]1、填充消息
[0014]假設(shè)消息m的長度為L比特。首先將比特“ I ”添加到消息的末尾,再添加K個“0”,K是滿足L+l+K = 448 mod 512的最小負(fù)整數(shù),然后再添加一個64位的比特串,該比特串是長度L的二進(jìn)制表示。填充后的消息后m'的比特長度為512的整倍數(shù),并可以用消息分組妒)來表示。
[0015]2、迭代壓縮
[0016]將填充后的消息m'按512比特進(jìn)行分組:m' = M(0)M(1)...M(n—1),其中η =(L+K+65)/512。對m'按下列方式迭代:
[0017]for i = O to n_l
[0018]V(i+1) = CF(V⑴,M⑴)(2)
[0019]endfor
[0020]其中CF是壓縮函數(shù),V(°)為256比特初始值IV,分別為字Μω為填充后的消息分組,迭代壓縮的結(jié)果為V(n)。
[0021]2.1消息擴(kuò)展[0022]將消息分組Μω按以下方法擴(kuò)展生成132個字W。,W1,…,W67W ,W/,…,W63',用于壓縮函數(shù)CF:
[0023](I)將消息分組Μω劃分為16個字W。,W1,…,W15 ;
[0024]for j = 16 to 67
[0025](2)Wj = P1 (ffj_16 ? ffj_9 ? (ffj_3 <<< 15)) ? (ffj_13 <<< 7) ? Wj^6 (3)
[0026]end
[0027]for j = 0 to 63
[0028](3)W/ = Wj ? ffJ+4 (4)
[0029]end
[0030]其中,P1(X)=Xe(X <<< 15) ? (X <<< 23),X 為字。
[0031]2.2 壓縮
[0032]令A(yù),B,C,D,E,F(xiàn),G,H 為字寄存器,存放
【權(quán)利要求】
1.一種對SM3密碼算法HMAC模式的側(cè)信道能量分析方法,其特征在于:所述方法包括以下步驟: 步驟一、采集HMAC的能量跡 基于DPA及CPA分析方法,根據(jù)需求采集N組不同明文消息輸入的SM3算法HMAC運算的能量跡,并分析SM3雜湊算法的HMAC模式特征,
HMAC (K, m) = H( (K ? opad) Il H ((K ipad) Ilm))式(I) 式(I)中:H代表一個雜湊算法函數(shù);K為鑒別密鑰;m代表一個不定長的消息輸入;在HMAC處理過程中,定義K ? ipad, Hi1, m2,…,mn, K opad為輸入的消息分組,分別為M(CI)K ipad、K ? opad分別為第1、2次雜湊運算的第I組輸入消息分組,是固定未知,經(jīng)過壓縮運算后仍得到固定未知值Kin = f(K ? ipad, IV)、Kout = f (K opad, IV),Kin, h1; h2,…,hn_1; hn,Kout為每次雜湊運算的中間狀態(tài);第2組輸入消息分組Hi1為已知可變,SM3算法的壓縮函數(shù)V(i+1) = CF (V⑴,M⑴)(OSiSn-1)的計算過程如下:A0B0C0D0E0F0G0H0 一 V(i)式(5)for j = I to 64 . 1.SSlj — ((Ajm <<< 12)+Ejm+(Tj-1 <<< (j-ι)) <<<7
.2.SS2j — SSlj ? (Aj-1 <<< 12) .3.TTlj — FFj-1 (Aj-1, Bjm , Cjm)+0-+882-1-;
.4.TT2j — GGj-1 (Ejm, Fjm, Gj-1) +Hj-+SSlj+ffj- .5.Dj — Cjm . 6.Cj — Bj-1 << 9
.7.Bj — Ajm
.8.Aj-TTIj
.9.Hj — Gjm
.10.Gj — Fj-1 <<<19
.11.F— Ej-1.12.Ej-P0(TOj)
end 式(6) 由于Kin、Kout固定未知,且壓縮函數(shù)中存在明顯能量消耗泄漏,分別選擇雜湊運算第2組消息分組IH1、H((K ? ipad) II m)即hn、在式(6)壓縮函數(shù)運算中第j = 1,2輪迭代中的第1、2、3、4步運算的能量消耗作為分析部分; 步驟二、分析得到Kin 選擇壓縮函數(shù)CF(.)中的能量消耗泄漏點,不斷改變第2組消息分組Hi1的輸入值,一層層地分析出Kin,見式(6);由式(6)壓縮函數(shù)可知,當(dāng)對 第2組輸入消息分組輸入Hi1進(jìn)行壓縮運算時,Kin為壓縮函數(shù)CF(.)的初始狀態(tài)(Atl,B0, C0, D0, F0, G0, H0),是固定值,若想得到完整的Kin,必須分別分析獲得(Atl, B0, C0, D0, F0, G0,H0)各自的值,根據(jù)式(6)的壓縮步驟,分析如下: 當(dāng) j = I 時,由 Kin 固定可知 SSl1= ((A0<<< 12)+E0+T0) <<< 7,882! = SSl1 ? (A0<<< 12)均為固定值; 步驟二一、分析得到TTlpXG = I)對于式(6)中的第3步,由SM3算法的消息擴(kuò)展中的式(4)可知,for j = O to 63
W/ = Wj ? ffJ+4 式(4)
end W' j-1為已知變量,其余均未知;設(shè) TTl1 = FF0 (A0, B0, C0)+00+ss2+w0;中的 FF0 (A0, B0,CciHDdSSZ1為X,易知X值固定,Wc/根據(jù)攻擊者的輸入改變,且TTl1存在能量消耗泄漏,滿足DPA/CPA分析條件,改變輸入Wtl',采集能量跡,使用DPA/CPA分析得到X,并推出TTl1 ;步驟二二、分析得到= I) 同理,對于式(6)中的第4步,Wp1為已知可變輸入,其余均未知= GG0 (E0, F0,C0+Ho+SSl1+ffo中的GGtl (E0,F0, CciHVSSl1為Y,易知Y值固定,W0根據(jù)攻擊者的輸入改變,且TTZ1存在能量消耗泄漏,滿足DPA/CPA分析條件,改變輸入采集能量跡,使用DPA/CPA分析得到Y(jié),并推出; 步驟二三、分析得到Α1、Ε1、Α0、Ε0。.= 1) 當(dāng)j = I時,由式(6)中的第8步和第12步,可分別得到A1J1 ;由于TTl和TT21為已知變量,A0, E0為固定未知值,且Atl和Ap E0和E1的寄存器比特轉(zhuǎn)換時存在能量消耗泄漏,體現(xiàn)在能量跡上,滿足DPA/CPA分析,使用漢明距離模型hcKTTli,A0)、KcKP0(TO1),Etl),進(jìn)行DPA/CPA分析可得到Atl, E0 ;其中,hd(x,y)表示為x ? y中比特為I的個數(shù); 當(dāng)j = 2時,由于A1' E1為已知變量,由式(6)中第I步和第2步可知,SSl2 = ((A1<<< 12)+E1+(T1 <<< I) <<< 7,SS22 = SSl2 ? (A1 <<< 12)為已知變量; 步驟二四、分析得到C1, G1, B0, F0(j = 2) 分別對式(6)的第3、4步中存在能耗泄漏的函數(shù)FF1和GG1進(jìn)行分析,由上述可知,B1=Atl為已知固定值,A1為已知變量,C1 = B0 >>> 9為固定未知,利用DPA/CPA分析對式(6)中的第3步中的函數(shù)FF1進(jìn)行分析,得出C1,推導(dǎo)出FF1,進(jìn)而可恢復(fù)出Btl = Etl為已知固定值,E1為已知變量,G1 = F0 <<< 19為未知常量,同理對函數(shù)GG1進(jìn)行DPA/CPA分析,恢復(fù)出G1,推導(dǎo)出GG1,進(jìn)而恢復(fù)出Ftl ; 步驟二五、分析得到= 2) 再次分別對存在能耗泄漏的式(6)中的第3、4步進(jìn)行分析,由上可知,SS12、SS22、W1,W1'、FF1 (A1, B1, C1)和GGl (E1, F1, G1)均為已知變量,D1和H1為固定未知值,滿足DPA/CPA分析條件,分別使用DPA/CPA分析得到01和氏,進(jìn)而由式(6)中的第5步和第9步得到Ctl和G0 ; 步驟二六、推算得到D0、 H0 (j = I),從而獲得Kin 當(dāng) j = 1時,由于等式 X = FF0(A0,B0, C0)+D0+SS21 和 Y = GG0(E0,F(xiàn)0, C0HVSSl1 中除D0> H0外均為已知值,從而可推算得到Dtl和Htl,從而得到Kin ; 三、同步驟二中方法分析獲得Kwt 通過改變輸入的消息分組Hl1,可得到不同的hn,則hn為已知可變,Kwt為hn進(jìn)行壓縮運算時的初始狀態(tài)(Atl, B0, C0, D0, F0, G0, H0),為未知固定,不斷改變第2組消息分組Hi1的輸入值,進(jìn)而改變hn的值,一層層地分析出Ktjut,具體的分析步驟與Kin —致; 對于Kin和Ktjut,分別使用了 8次DPA/CPA分析,即可恢復(fù)出Kin和Κ_,從而成功分析出SM3密碼算法HMAC模式的敏感信息。
【文檔編號】H04L29/06GK103457719SQ201310310011
【公開日】2013年12月18日 申請日期:2013年7月23日 優(yōu)先權(quán)日:2013年7月23日
【發(fā)明者】羅鵬, 曹偉瓊, 李大為 申請人:國家密碼管理局商用密碼檢測中心