本發(fā)明涉及密碼算法分析檢測(cè)領(lǐng)域,尤其涉及一種針對(duì)sm3密碼算法消息擴(kuò)展的側(cè)信道分析攻擊的方法。
背景技術(shù):
隨著信息和分析電路技術(shù)的發(fā)展,對(duì)硬件密碼電子設(shè)備的破解不再單純的停留在協(xié)議和算法上,而是從其處理數(shù)據(jù)的過程中泄露的信息入手,進(jìn)行破解。硬件密碼電子設(shè)備在處理信息的工程中存在能量、電磁、錯(cuò)誤和時(shí)間等信息的泄露,利用這些泄露的信息,結(jié)合密碼學(xué)和統(tǒng)計(jì)學(xué)原理等,對(duì)密碼電子設(shè)備進(jìn)行攻擊,就是所謂的側(cè)信道分析攻擊(sidechannelattacks)。在側(cè)信道分析攻擊中,比較常用的是差分分析攻擊和相關(guān)性分析攻擊。
其中,差分分析攻擊的過程如下:
(1)隨機(jī)選擇n組不相同明文或密文mi(i∈[1,n])進(jìn)行加/解密運(yùn)算,采集每組明文進(jìn)行加密運(yùn)算時(shí)設(shè)備產(chǎn)生的能量或者電磁曲線ti(t),t∈{1,…,k},其中k為曲線軌跡的采樣點(diǎn)數(shù);
(2)選擇密鑰kl(l∈ω,ω為密鑰空間),計(jì)算在kl和mi條件下,密碼算法進(jìn)行加密運(yùn)算時(shí)在被攻擊點(diǎn)產(chǎn)生的中間值di,l;
(3)根據(jù)中間值di,l確定選擇函數(shù)f(mi,kl),根據(jù)選擇函數(shù)將ti(t)分為兩個(gè)子集s0和s1,定義式如下:
s0={ti(t)|f(mi,kl)=0}
s1={ti(t)|f(mi,kl)=1}
(4)計(jì)算每個(gè)采樣點(diǎn)上兩個(gè)子集的能量平均之差,如
s=quote
若kl選擇不正確,當(dāng)n比較大時(shí),兩個(gè)子集均值差s將趨近于零;若kl選擇正確,在均值差s中將會(huì)出現(xiàn)一個(gè)最大尖峰,通過該尖峰即可確定kl選擇正確。
相關(guān)性攻擊的過程如下:
(1)隨機(jī)選擇n組不相同明文或密文mi(i∈[1,n])進(jìn)行加/解密運(yùn)算,采集每組明文進(jìn)行加密運(yùn)算時(shí)設(shè)備產(chǎn)生的能量或者電磁曲線ti(t),t∈{1,…,k},其中k為曲線軌跡的采樣點(diǎn)數(shù);
(2)選擇密鑰kl(l∈ω,ω為密鑰空間),計(jì)算在kl和mi條件下,密碼算法進(jìn)行加密運(yùn)算時(shí)在被攻擊點(diǎn)產(chǎn)生的中間值di,l;
(3)取中間值di,l的漢明距離或者漢明重量建立能量模型hi,l,根據(jù)
(4)取相關(guān)系數(shù)最大值時(shí)對(duì)應(yīng)的kl,即為實(shí)際密鑰。
動(dòng)態(tài)令牌是動(dòng)態(tài)口令系統(tǒng)的重要組成部分,是一種一定周期內(nèi)生成一個(gè)動(dòng)態(tài)口令的設(shè)備,每個(gè)口令各不相同,為用戶提供身份認(rèn)證。
動(dòng)態(tài)令牌使用雜湊算法或分組算法,結(jié)合截位函數(shù),根據(jù)用戶密鑰和時(shí)間產(chǎn)生動(dòng)態(tài)口令,基于sm3密碼算法的動(dòng)態(tài)令牌實(shí)現(xiàn)過程如下所示:
(1)s=f(k,id),其中f為sm3雜湊密碼算法,s為sm3雜湊密碼算法的輸出,k是長(zhǎng)度不少于128bit的運(yùn)算密鑰,id是長(zhǎng)度不少于128bit變化的信息;
(2)od=truncate(s),其中,truncate()是截位函數(shù),od為截位函數(shù)的輸出;
(3)p=od%(10^n),n是令牌或其它終端顯示口令的位數(shù),p為最終顯示的動(dòng)態(tài)口令。
sm3密碼雜湊算是雜湊值為256bit的國(guó)產(chǎn)商用密碼算法,運(yùn)算過程包括消息填充、消息擴(kuò)展和迭代壓縮。
消息擴(kuò)展是將512比特的消息分組b按以下方法擴(kuò)展生成132個(gè)字w0,w1,…,w67,w0',w1',…,w63',消息擴(kuò)展過程描述如下:
(1)將消息分組劃分為16個(gè)字w0,w1,…,w15;
(2)forj=16to67
wj<-p1(wj-16⊕wj-9⊕(wj-3<<<15))⊕(wj-13<<<15)⊕wj-6
endfor
forj=0to63
w1'=wj⊕wj+4
endfor
其中,p1為置換函數(shù),為p1(x)=x⊕(x<<<15)⊕(x<<<23)
迭代壓縮是利用壓縮函數(shù)生成256bit雜湊值,壓縮函數(shù)vi+1=cf(v(i),b(i))(0
abcdefgh<-vi
forj=0to63
ss1<-((a<<<12)+e+(tj<<<j))<<<7
ss2<-ss1⊕(a<<<12)
tt1<-ffj(a,b,c)+d+ss2+wj'
tt2<-ggj(e,f,g)+h+ss1+wj
d<-c
c<-b<<<9
b<<<a
a<<<tt1
h<<<g
g<-f<<<19
f<<<e
e<-p0(tt2)
endfor
vi+1=abcdefgh⊕vi
在壓縮函數(shù)中,ffj(x,y,z)={x^y^z0≤j≤15;(x&y)|(x&z)|(y&z)16≤j≤63}和ggj(x,y,z)={x^y^z0≤j≤15;(x&y)|(~x&z)16≤j≤63},p0(x)=x^(x<<<9)^(x<<<17)為置換函數(shù),tj={79cc45190≤j≤15;7a879d8a16≤j≤63}。
目前,尚未有選擇sm3密碼算法消息擴(kuò)展wj作為攻擊點(diǎn),選擇消息擴(kuò)展中置換函數(shù)的輸出作為攻擊的目標(biāo),針對(duì)sm3密碼算法的側(cè)信道分析攻擊。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供針對(duì)sm3密碼算法消息擴(kuò)展的側(cè)信道分析攻擊方法,解決置換函數(shù)p1(x)的擴(kuò)散混淆作用導(dǎo)致直接對(duì)sm3密碼算法進(jìn)行側(cè)信道分析攻擊破解密鑰,存在密鑰搜索空間大和攻擊時(shí)間長(zhǎng)的問題。本發(fā)明首先側(cè)信道分析攻擊出消息擴(kuò)展運(yùn)算中置換函數(shù)的運(yùn)算結(jié)果后,將所有的攻擊結(jié)果聯(lián)立方程組,根據(jù)置換函數(shù)的逆置換函數(shù),對(duì)方程組求解,即可破解出動(dòng)態(tài)令牌中的密鑰。從而不僅實(shí)現(xiàn)了針對(duì)sm3密碼算法的側(cè)信道分析攻擊,而且降低了密鑰的搜索空間和減少了側(cè)信道分析攻擊樣本數(shù),增強(qiáng)了攻擊效率、靈活性、有效性和成功率。
為解決上述技術(shù)問題,本發(fā)明提供針對(duì)sm3密碼算法消息擴(kuò)展的側(cè)信道分析攻擊方法,具體包括以下步驟:
s1:選擇消息擴(kuò)展運(yùn)算的結(jié)果為攻擊中間變量,選擇消息擴(kuò)展運(yùn)算中置換函數(shù)的輸出作為攻擊的目標(biāo),進(jìn)行側(cè)信道分析攻擊;
s2:將攻擊結(jié)果聯(lián)立方程組,根據(jù)逆置換函數(shù)求解方程組,即可破解最終密鑰。
進(jìn)一步,s1具體包括以下步驟:
s11:初始化i=16;
s12:選擇sm3進(jìn)行擴(kuò)展運(yùn)算wi作為攻擊的中間變量;
s13:根據(jù)sm3密碼算法消息,進(jìn)行側(cè)信道分析攻擊,如果i=16,選擇k1=p1(w0)⊕(w3<<<7)作為攻擊目標(biāo),如果i=17,選擇k2=p1(w1)作為攻擊目標(biāo),如果i=18,選擇k3=p1(w2)作為攻擊目標(biāo),如果i=19,選擇k4=p1(w3)⊕p1(k1<<<15)作為攻擊目標(biāo),所述側(cè)信道分析攻擊方法采用相關(guān)性攻擊方法或差分攻擊方法;
s14:使i自增1,返回步驟s12繼續(xù)進(jìn)行攻擊,直到最終攻擊出k1、k2、k3、k4。
進(jìn)一步,s2具體包括以下步驟:
s21:將k1、k2、k3、k4聯(lián)立構(gòu)建關(guān)于w0、w1、w2、w3的方程組;
s22:根據(jù)逆置換函數(shù)x=y⊕(y<<<5)⊕(y<<<13)⊕(y<<<14)⊕(y<<<15)⊕(y<<<21)⊕(y<<<23)⊕(y<<<29)⊕(y<<<30),對(duì)步驟s21中的方程組求解,即可得到最終密鑰字節(jié)w0、w1、w2、w3;
本發(fā)明的有益效果為:針對(duì)sm3密碼算法消息擴(kuò)展的側(cè)信道分析攻擊方法,創(chuàng)造性的引入消息擴(kuò)展運(yùn)算中置換函數(shù)的輸出作為攻擊的對(duì)象,在側(cè)信道分析攻擊時(shí),可以選擇單次攻擊任意比特,經(jīng)過多次攻擊的方法來實(shí)施,最后將攻擊結(jié)果聯(lián)立方程組,根據(jù)逆置換函數(shù)求解方程組,即可破解最終密鑰。本方法的密鑰搜索空間可根據(jù)實(shí)際的計(jì)算能力選擇任意比特,所需實(shí)驗(yàn)樣本少,且易實(shí)現(xiàn),使針對(duì)sm3密碼算法消息擴(kuò)展的側(cè)信道分析攻擊具有更實(shí)際的應(yīng)用性,從而增強(qiáng)了攻擊的效率、有效性和成功率。
附圖說明
圖1為針對(duì)sm3密碼算法消息擴(kuò)展的側(cè)信道分析攻擊方法的流程圖。
具體實(shí)施方式
下面對(duì)本發(fā)明的具體實(shí)施方式進(jìn)行描述,以便于本技術(shù)領(lǐng)域的技術(shù)人員理解本發(fā)明,但應(yīng)該清楚,本發(fā)明不限于具體實(shí)施方式的范圍,對(duì)本技術(shù)領(lǐng)域的普通技術(shù)人員來講,只要各種變化在所附的權(quán)利要求限定和確定的本發(fā)明的精神和范圍內(nèi),這些變化是顯而易見的,一切利用本發(fā)明構(gòu)思的發(fā)明創(chuàng)造均在保護(hù)之列。
針對(duì)sm3密碼算法消息擴(kuò)展的側(cè)信道分析攻擊方法,具體包括以下步驟:
s1:選擇消息擴(kuò)展運(yùn)算的結(jié)果為攻擊中間變量,選擇消息擴(kuò)展運(yùn)算中置換函數(shù)的輸出作為攻擊的目標(biāo),進(jìn)行側(cè)信道分析攻擊;
s2:將攻擊結(jié)果聯(lián)立方程組,根據(jù)逆置換函數(shù)求解方程組,即可破解最終密鑰。
其中,s1具體包括以下步驟:
s11:初始化i=16;
s12:選擇sm3進(jìn)行擴(kuò)展運(yùn)算wi作為攻擊的中間變量;
s13:根據(jù)sm3密碼算法消息,進(jìn)行側(cè)信道分析攻擊,如果i=16,選擇k1=p1(w0)⊕(w3<<<7)作為攻擊目標(biāo)。如果i=17,選擇k2=p1(w1)作為攻擊目標(biāo),如果i=18,選擇k3=p1(w2)作為攻擊目標(biāo),如果i=19,選擇k4=p1(w3)⊕p1(k1<<<15)作為攻擊目標(biāo),所述側(cè)信道分析攻擊方法采用相關(guān)性攻擊方法或差分攻擊方法;
s14:使i自增1,返回步驟s12繼續(xù)進(jìn)行攻擊,直到最終攻擊出k1、k2、k3、k4。
進(jìn)一步地,s13中采用的側(cè)信道分析攻擊方法為相關(guān)性攻擊方法,具體包括以下步驟:
s1311:采集n組基于sm3密碼算法的動(dòng)態(tài)令牌在進(jìn)行動(dòng)態(tài)口令運(yùn)算時(shí)的能量或者電磁曲線表示為tn(t),
s1312:如果i=16,選擇k1=p1(w0)⊕(w3<<<7)作為攻擊目標(biāo);如果i=17,選擇k2=p1(w1)作為攻擊目標(biāo);如果i=18,選擇k3=p1(w2)作為攻擊目標(biāo);如果i=19,選擇k4=p1(w3)⊕p1(k1<<<15)作為攻擊目標(biāo);
s1313:選擇要攻擊的比特長(zhǎng)度為
s1314:猜測(cè)攻擊目標(biāo)
s1315:tn(t)和h的相關(guān)性
s1316:最大值時(shí)對(duì)應(yīng)的c,即為
s1317:計(jì)算j=j+
s13中采用的側(cè)信道分析攻擊方法為差分攻擊方法,具體包括以下步驟:
s1321:采集n組基于sm3密碼算法的動(dòng)態(tài)令牌在進(jìn)行動(dòng)態(tài)口令運(yùn)算時(shí)的能量或者電磁曲線表示為tn(t),
s1322:如果i=16,選擇k1=p1(w0)⊕(w3<<<7)作為攻擊目標(biāo);如果i=17,選擇k2=p1(w1)作為攻擊目標(biāo);如果i=18,選擇k3=p1(w2)作為攻擊目標(biāo);如果i=19,選擇k4=p1(w3)⊕p1(k1<<<15)作為攻擊目標(biāo);
s1323:選擇要攻擊的比特長(zhǎng)度為
s1324:如果
s1325:根據(jù)s=
s1326:計(jì)算j=j+
其中,s2具體包括以下步驟:
s21:將k1、k2、k3、k4聯(lián)立構(gòu)建關(guān)于w0、w1、w2、w3的方程組;
s22:根據(jù)逆置換函數(shù)x=y⊕(y<<<5)⊕(y<<<13)⊕(y<<<14)⊕(y<<<15)⊕(y<<<21)⊕(y<<<23)⊕(y<<<29)⊕(y<<<30),對(duì)步驟s21中的方程組求解,即可得到最終密鑰字節(jié)w0、w1、w2、w3;
選擇sm3密碼算法中擴(kuò)展運(yùn)算中置換函數(shù)的運(yùn)算結(jié)果作為攻擊目標(biāo),再講將所有的攻擊結(jié)果聯(lián)立方程組,根據(jù)置換函數(shù)的逆置換函數(shù),對(duì)方程組求解,即可破解出動(dòng)態(tài)令牌中的密鑰。創(chuàng)造性的解決了置換函數(shù)p1(x)的擴(kuò)散混淆作用導(dǎo)致直接對(duì)sm3密碼算法進(jìn)行側(cè)信道分析攻擊破解密鑰,存在密鑰搜索空間大的問題,降低了密鑰的搜索空間和減少了側(cè)信道分析攻擊樣本數(shù),增強(qiáng)了攻擊效率、靈活性、有效性和成功率。