本發(fā)明涉及密碼算法分析檢測領(lǐng)域,尤其涉及一種針對sm4密碼算法s盒輸入輸出的聯(lián)合模板攻擊方法。
背景技術(shù):
隨著信息和分析電路技術(shù)的發(fā)展,對硬件密碼電子設(shè)備的破解不再單純的停留在協(xié)議和算法上,而是從其處理數(shù)據(jù)的過程中泄露的信息入手,進(jìn)行破解。硬件密碼電子設(shè)備在處理信息的工程中存在能量、電磁、錯誤和時(shí)間等信息的泄露,利用這些泄露的信息對密碼電子設(shè)備進(jìn)行攻擊,就是所謂的側(cè)信道攻擊(sidechannelattacks),側(cè)信道攻擊可分為能量分析攻擊、電磁攻擊和錯誤攻擊等,其中能量分析攻擊因效率較高,成為側(cè)信道的主要手段。
模板攻擊是基于密碼芯片能量消耗與正在處理數(shù)據(jù)的相關(guān)性的基礎(chǔ)上實(shí)施的。其攻擊過程通常包括兩個(gè)階段:第一個(gè)階段是模板建立,即對所有可能猜測密鑰的能量消耗特征進(jìn)行刻畫;第二個(gè)階段是模板匹配,采集被攻擊密碼芯片上的側(cè)信道信息v,采用多元高斯概率衡量計(jì)算其與所刻畫的能量消耗特征的匹配程度,其中和為的均值能耗和能耗協(xié)方差矩陣。即可得到有關(guān)正確密鑰的信息。由于模板攻擊非常有效、實(shí)現(xiàn)簡單且無需大量資源,所以目前是側(cè)信道分析攻擊研究領(lǐng)域的重點(diǎn)之一。
sm4算法是一個(gè)分組密碼算法,分組長度為128比特,密鑰長度為128比特,加密算法與密鑰擴(kuò)展算法都采用32輪非線性迭代結(jié)構(gòu)。加密算法與解密算法的結(jié)構(gòu)相同,只是輪密鑰的使用順序相反。下面以加密算法和密鑰擴(kuò)展算法為例,介紹sm4算法。
sm4加密算法sm4加密算法的詳細(xì)流程如圖1所示。在該圖中,xi∈z232(z2e表示ebit的向量集),明文輸入為(x0,x1,x2,x3)∈(z232)4,密文輸出為(y0,y1,y2,y3),其中xi、xi+1、xi+2和xi+3為輪迭代運(yùn)算函數(shù)f的輸入,rki∈z232為每輪的輪密鑰,i∈(0,1,2,…,31)。
從加密的流程可以看出,輪迭代函數(shù)f包括的運(yùn)算有異或、非線性變換τ和線性變換l,輪迭代函數(shù)的表達(dá)式如下式(1-1)所示,在(1-1)式中,t表示合成置換,是由非線性變換τ和線性變換l復(fù)合而成,迭代函數(shù)f的詳細(xì)的流程如下圖2所示,在整個(gè)sm4密碼算法的加解密過程中,一共要執(zhí)行32輪這樣的輪迭代函數(shù)f。
xi+4=f(xi,xi+1,xi+2,xi+3,rki)=xi⊕t(xi+1⊕xi+2⊕xi+3⊕rki)(1-4)
非線性變換τ是由4個(gè)并行s盒子構(gòu)成,每個(gè)s盒子為固定的8bit輸入、8bit輸出的置換,輸入和輸出之間是一一對應(yīng)關(guān)系,由輸入不僅可以查到輸出,而且由輸出還可以反推出輸入。
線性變換l的描述如下式(1-5)所示:
bi⊕(bi<<<2)⊕(bi<<<10)⊕(bi<<<18)⊕(bi<<<24)(1-5)
在該式中,ci∈z232、bi∈z232,ci為線性變換l的輸出,bi為線性變換l的輸入,同時(shí)也是非線性變換τ的輸出。
輪密鑰由加密密鑰通過密鑰擴(kuò)展算法生成,其結(jié)構(gòu)與加密變換類似。設(shè)加密密鑰為mk=(mk0,mk1,mk2,mk3),i=0,1,2,3。令ki∈z232,i=0,1,2,…,35,輪密鑰rki∈z232,i=0,1,2,…,31,則輪密鑰生成方法如下式(1-6)和(1-7)所示:
(k0,k1,k2,k3)=(mk0⊕fk0,mk1⊕fk1,mk2⊕fk2,mk3⊕fk3)(1-8)
rki=ki+4=ki⊕t'(ki+1⊕ki+2⊕ki+3⊕cki)(1-9)
其中,t'變換與加密變換中的t變換基本相同,只是其中的線性變換l必須修改為以下l':
l'(b)=b⊕(b<<<13)⊕(b<<<23)(1-10)
系統(tǒng)參數(shù)fki(i=1,2,3)的取值,采用16進(jìn)制表示為:fk0=a3b1bac6,fk1=56aa3350,fk2=677d9197,fk3=b27022dc。
固定參數(shù)ck的取值方法為:設(shè)cki,j為cki的第j字節(jié)(i=0,1,2,…,31;j=0,1,2,3),即cki=(cki,0,cki,1,cki,2,cki,3)∈(z28)4,則cki,j=(4i+j)*7(mod256)。32個(gè)固定參數(shù)cki用16進(jìn)制表示為:
00070e15,1c232a31,383f464d,545b6269,
70777e85,8c939aa1,a8afb6bd,c4cbd2d9,
e0e7eef5,fc030a11,181f262d,343b4249,
50575e65,6c737a81,888f969d,a4abb2b9,
c0c7ced5,dce3eaf1,f8ff060d,141b2229,
30373e45,4c535a61,686f767d,848b9299,
a0a7aeb5,bcc3cad1,d8dfe6ed,f4fb0209,
10171e25,2c333a41,484f565d,646b727
根據(jù)密鑰擴(kuò)展算法,反推出密鑰的方法如下:
a、加密運(yùn)算:
對于加密運(yùn)算,攻擊出前四輪的輪子密鑰rk0,rk1,rk2和rk3,根據(jù)密鑰擴(kuò)展算法得下式:
rk0=k4=k0⊕t(k1⊕k2⊕k3⊕ck0)(1)
rk1=k5=k1⊕t(k2⊕k3⊕k4⊕ck1)(2)
rk2=k6=k2⊕t(k3⊕k4⊕k5⊕ck2)(3)
rk3=k7=k3⊕t(k4⊕k5⊕k6⊕ck3)(4)
由(1)、(2)、(3)和(4)式可得k3,如(5)式所示。
k3=rk3⊕t(rk0⊕rk1⊕rk2⊕ck3)(5)
由(3)和(5)式得k2,如(6)式所示。
k2=rk2⊕t(k3⊕rk0⊕rk1⊕ck2)(6)
由(2)、(5)和(6)式得k1,如(7)式所示。
k1=rk1⊕t(k2⊕k3⊕rk0⊕ck1)(7)
由(2)、(5)和(6)式得k0,如(8)式所示。
k0=rk0⊕t(k1⊕k2⊕k3⊕ck0)(8)
又(k0,k1,k2,k3)=(mk0⊕fk0,mk1⊕fk1,mk2⊕fk2,mk3⊕fk3),所以可得密鑰為mk0=k0⊕fk0,mk1=k1⊕fk1,mk2=k2⊕fk2,mk3=k3⊕fk3。
b、解密運(yùn)算:
對于解密運(yùn)算,攻擊出前四輪的輪子密鑰rk0、rk1、rk2和rk3,根據(jù)密鑰擴(kuò)展算法得下式:
rk0=k35=k31⊕t(k32⊕k33⊕k34⊕ck31)(9)
rk1=k34=k30⊕t(k31⊕k32⊕k33⊕ck30)(10)
rk2=k33=k29⊕t(k30⊕k31⊕k32⊕ck29)(11)
rk3=k32=k28⊕t(k29⊕k30⊕k31⊕ck29)(12)
由(9)、(10)、(11)和(12)式子,得到k32、k33、k34和k35,i取31到0,計(jì)算ki=ki+4⊕t(ki+1⊕ki+2⊕ki+3⊕cki),即可得到k0、k1、k2和k3,又(k0,k1,k2,k3)=(mk0⊕fk0,mk1⊕fk1,mk2⊕fk2,mk3⊕fk3),所以可得密鑰為mk0=k0⊕fk0,mk1=k1⊕fk1,mk2=k2⊕fk2,mk3=k3⊕fk3。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種針對sm4密碼算法s盒輸入輸出的聯(lián)合模板攻擊方法,以解決針對sm4密碼算法進(jìn)行模板攻擊沒有充分利用單條曲線中和密鑰相關(guān)的所有信息,而導(dǎo)致的攻擊所需曲線條數(shù)多和攻擊成功率低的問題。即:sm4密碼算法s盒輸入輸出對應(yīng)的曲線,均泄露了和同一個(gè)密鑰相關(guān)的有用信息,所以可以聯(lián)合s盒輸入輸出來攻擊密鑰,降低攻擊所需曲線條數(shù),同時(shí)可提高成功率。本發(fā)明創(chuàng)造性的選擇sm4密碼算法s盒輸入輸出作為模板攻擊的攻擊點(diǎn),實(shí)現(xiàn)了針對sm4密碼算法s盒輸入輸出的聯(lián)合模板攻擊,增強(qiáng)了分析的有效性和實(shí)用性。
為解決上述技術(shù)問題,本發(fā)明提供一種針對sm4密碼算法s盒輸入輸出的聯(lián)合模板攻擊方法,具體包括以下步驟:
s1:分別選擇sm4密碼算法s盒輸入和輸出建立模板,猜測密鑰,計(jì)算所有能量跡的s盒輸入和輸出的聯(lián)合概率,概率最大對應(yīng)的猜測密鑰即為被攻擊的輪子密鑰rki,其中i=0,1,2,3;
s2:根據(jù)所述前四輪輪函數(shù)的輪子密鑰rk0、rk1、rk2和rk3,通過密鑰擴(kuò)展算法,反推出初始密鑰。
進(jìn)一步地,s1具體包括以下步驟:
s11:攻擊加/解密的第一輪,初始化i=0;
s12:輸入隨機(jī)的已知明文和密鑰,采集能量曲線,計(jì)算每條曲線第i輪對應(yīng)的4個(gè)s盒輸入輸出sinj和soutj,其中j=0,1,2,3,根據(jù)sinj和soutj,分別建立sinj對應(yīng)的能量模板集合ωj,和soutj對應(yīng)的能量模板集合φj;
s13:采集被攻擊密鑰和已知明文下的能量曲線,確定第i輪4個(gè)s盒輸入對應(yīng)的曲線段aj,4個(gè)s盒輸出對應(yīng)的曲線段bj,猜測密鑰,結(jié)合每條曲線對應(yīng)的明文,計(jì)算對應(yīng)的4個(gè)s盒輸入輸出sinj和soutj,根據(jù)sinj在ωj中查找模板tωj,根據(jù)soutj在φj中查找模板tφj,計(jì)算猜測密鑰下所有曲線單個(gè)s盒輸入輸出的聯(lián)合概率,pj=∏ns=1ps(aj,tωj)ps(bj,tφj)其中n表示曲線條數(shù),聯(lián)合概率最大時(shí)對應(yīng)的猜測密鑰,即為被攻擊的密鑰,4個(gè)被出的密鑰即可組成輪子密鑰rki;
s14:輪數(shù)i自加1,返回s12~s14的步驟,直到攻擊出前四輪的輪子密鑰rk0、rk1、rk2和rk3;
附圖說明
圖1為sm4加密算法流程圖;
圖2為sm4密鑰擴(kuò)展流程圖;
圖3為針對sm4密碼算法s盒輸入輸出的聯(lián)合模板攻擊流程圖。
具體實(shí)施方式
下面對本發(fā)明的具體實(shí)施方式進(jìn)行描述,以便于本技術(shù)領(lǐng)域的技術(shù)人員理解本發(fā)明,但應(yīng)該清楚,本發(fā)明不限于具體實(shí)施方式的范圍,對本技術(shù)領(lǐng)域的普通技術(shù)人員來講,只要各種變化在所附的權(quán)利要求限定和確定的本發(fā)明的精神和范圍內(nèi),這些變化是顯而易見的,一切利用本發(fā)明構(gòu)思的發(fā)明創(chuàng)造均在保護(hù)之列。
針對sm4密碼算法s盒輸入輸出的聯(lián)合模板攻擊方法,具體包括以下步驟:
s1:分別選擇sm4密碼算法s盒輸入和輸出建立模板,猜測密鑰,計(jì)算所有能量跡的s盒輸入和輸出的聯(lián)合概率,概率最大對應(yīng)的猜測密鑰即為被攻擊的輪子密鑰rki,其中i=0,1,2,3;
s2:根據(jù)所述前四輪輪函數(shù)的輪子密鑰rk0、rk1、rk2和rk3,通過密鑰擴(kuò)展算法,反推出初始密鑰。
進(jìn)一步地,s1具體包括以下步驟:
s11:攻擊加/解密的第一輪,初始化i=0;
s12:輸入隨機(jī)的已知明文和密鑰,采集能量曲線,計(jì)算每條曲線第i輪對應(yīng)的4個(gè)s盒輸入輸出sinj和soutj,其中j=0,1,2,3,根據(jù)sinj和soutj,分別建立sinj對應(yīng)的能量模板集合ωj,和soutj對應(yīng)的能量模板集合φj;
s13:采集被攻擊密鑰和已知明文下的能量曲線,確定第i輪4個(gè)s盒輸入對應(yīng)的曲線段aj,4個(gè)s盒輸出對應(yīng)的曲線段bj,猜測密鑰,結(jié)合每條曲線對應(yīng)的明文,計(jì)算對應(yīng)的4個(gè)s盒輸入輸出sinj和soutj,根據(jù)sinj在ωj中查找模板tωj,根據(jù)soutj在φj中查找模板tφj,計(jì)算猜測密鑰下所有曲線單個(gè)s盒輸入輸出的聯(lián)合概率,pj=∏ns=1ps(aj,tωj)ps(bj,tφj)其中n表示曲線條數(shù),聯(lián)合概率最大時(shí)對應(yīng)的猜測密鑰,即為被攻擊的密鑰,4個(gè)被出的密鑰即可組成輪子密鑰rki;
s14:輪數(shù)i自加1,返回s12~s14的步驟,直到攻擊出前四輪的輪子密鑰rk0、rk1、rk2和rk3;
sm4密碼算法的單條能量曲線中,s盒輸入和輸出同時(shí)泄露了和同一密鑰相關(guān)的信息,普通的模板攻擊,攻擊時(shí)一般僅選擇單個(gè)信息泄露點(diǎn)來實(shí)施攻擊,而本發(fā)明創(chuàng)造性的同時(shí)選擇s盒輸入和輸出兩個(gè)信息泄露點(diǎn),通過計(jì)算s盒輸入輸出的聯(lián)合概率來實(shí)施攻擊,達(dá)到了充分利用能量曲線中泄露的有用信息,降低攻擊所需曲線條數(shù),提高攻擊率的目的,實(shí)現(xiàn)了針對sm4密碼算法s盒輸入輸出的聯(lián)合模板攻擊。