蔡曉敏,李仁發(fā),李少青,沈 高,鄺世杰
(1.湖南大學(xué)信息科學(xué)與工程學(xué)院,湖南 長(zhǎng)沙 410082;2.國(guó)防科技大學(xué)計(jì)算機(jī)學(xué)院,湖南 長(zhǎng)沙 410073)
密碼設(shè)備運(yùn)行時(shí)會(huì)不可避免地泄露一些物理信息,如功耗、電磁輻射、運(yùn)行時(shí)間等旁路信息。側(cè)信道攻擊SCAs(Side Channel Attacks)正是利用物理信息與密鑰的相關(guān)性,采集并統(tǒng)計(jì)分析物理信息以恢復(fù)密碼設(shè)備的密鑰。SCAs主要包括了功耗攻擊[1]、電磁輻射攻擊[2]和時(shí)間攻擊[3]。 1996 年,Kocher[3]提出了一種基于運(yùn)行時(shí)間攻擊技術(shù),成功破解了密鑰。此后,非侵入式的SCAs技術(shù)在信息安全領(lǐng)域掀起了研究熱潮[4-6]。1998年,Kocher等[1]提出了功耗分析PA(Power Analysis)攻擊技術(shù),該技術(shù)以其操作簡(jiǎn)易、適用范圍廣和成功率高等特點(diǎn)成為SCAs技術(shù)中最主要的攻擊手段。如今,PA技術(shù)已經(jīng)成功破解多種加密算法,如高級(jí)加密標(biāo)準(zhǔn)AES[7]、數(shù)據(jù)加密標(biāo)準(zhǔn)DES[8]、公鑰密碼算法RSA[9]以及智能卡[10]等。根據(jù)人們對(duì)密碼設(shè)備的了解程度,PA技術(shù)分為簡(jiǎn)單功耗分析SPA[1]和差分功耗分析DPA[11]。
傳統(tǒng)的DPA攻擊[12]方法只利用加密算法的一位或多位中間值的功耗信息,其他部分的功耗數(shù)據(jù)被當(dāng)作噪聲不予考慮,導(dǎo)致功耗信息的利用率較低,所需功耗樣本量較大。隨著PA技術(shù)的不斷優(yōu)化,王小娟等[13]提出了一種基于類間距離的特征提取方法,提高了功耗信息的利用率。該方法的實(shí)現(xiàn)對(duì)象是微控制器,面對(duì)大規(guī)模的ASCI芯片或SoC芯片,攻擊成功率將大幅度降低。劉政林等[14]提出了一種基于最大偏差的AES功耗分析攻擊方法,計(jì)算出一組不同明文輸入下的漢明重量和另一組不同明文輸入下的漢明重量,選取2組不同明文輸入下的漢明重量差為改進(jìn)的功耗模型,但成功破解子密鑰的功耗曲線仍需要5 120條,有效點(diǎn)個(gè)數(shù)為100。李金良等[15]通過(guò)差分峰值找到密鑰的相關(guān)位置點(diǎn),縮小攻擊范圍,只對(duì)部分功耗數(shù)據(jù)點(diǎn)進(jìn)行分析,但攻擊成功需要的功耗樣本量較大,而且提取部分攻擊點(diǎn)的方法缺乏理論支撐。
本文的貢獻(xiàn):面向SoC的DPA攻擊過(guò)程,為解決功耗樣本量大、提取點(diǎn)數(shù)較多的問(wèn)題,提出了一種基于能量模型的能量跡分類方法,成功定位能量跡中的特征點(diǎn)。分別實(shí)測(cè)驗(yàn)證了基于漢明距離和漢明重量模型下得到的特征區(qū)間的攻擊效果,大幅降低了DPA攻擊的樣本量和樣本計(jì)算量。
目前,集成電路多數(shù)使用靜態(tài)互補(bǔ)CMOS管實(shí)現(xiàn),正常工作狀態(tài)下,電路的功耗由靜態(tài)功耗、動(dòng)態(tài)功耗和短路功耗組成。動(dòng)態(tài)功耗占總功耗的比例最大,用公式Pdyn=CLVDD2f0→1表示,其中,CL為負(fù)載電容,VDD為電源電壓,f0→1為開(kāi)關(guān)活動(dòng)性。表1解析了各種輸入狀態(tài)下CMOS門(mén)電路的功耗情況。
Table 1 CMOS gate power consumption in different input states表1 不同輸入狀態(tài)下CMOS門(mén)功耗情況
由表1可看出,不同輸入狀態(tài)會(huì)產(chǎn)生不同的功耗,反之,不同的功耗必然意味不同輸入狀態(tài),而差分功耗攻擊正是利用功耗與內(nèi)部數(shù)據(jù)的相關(guān)性來(lái)達(dá)到恢復(fù)密鑰的目的的。
在DPA攻擊中,通常必須將操作數(shù)映射為能量值,這是一種對(duì)設(shè)備的能量仿真。漢明距離模型[16]和漢明重量模型[17]2種能量模型在DPA攻擊中很常見(jiàn)。
漢明重量模型的基本思想是假設(shè)能量消耗正比于所處理的操作數(shù)中值“1”的比特個(gè)數(shù),而忽略在該數(shù)據(jù)之前和之后處理的數(shù)值。在攻擊者對(duì)網(wǎng)表的內(nèi)容一無(wú)所知,或者僅知道部分網(wǎng)表卻不清楚該部分?jǐn)?shù)據(jù)的前后處理情況下,通常采用漢明重量模型。
漢明距離模型的基本思想是計(jì)算數(shù)字電路在某個(gè)特定操作中0→1轉(zhuǎn)換和1→0轉(zhuǎn)換的總數(shù)量。值v0和值v1的漢明距離等于v0⊕v1的漢明重量HW(v0⊕v1),也就是v0和v1中相異比特的個(gè)數(shù)。用式(1)來(lái)反映電路在該時(shí)段內(nèi)的能量消耗情況:
E=aHW(v0⊕v1)+b
(1)
其中v0為某一寄存器的先前狀態(tài);v1為同一寄存器的后來(lái)狀態(tài);E為寄存器從v0狀態(tài)切換到v1狀態(tài)的能量消耗;a表示能耗比例系數(shù);b表示與密鑰不相關(guān)的能耗和噪聲。
漢明重量模型原理簡(jiǎn)單、實(shí)現(xiàn)方便,在能量仿真中應(yīng)用廣泛。
基于均值差的DPA相關(guān)性檢驗(yàn)方法操作簡(jiǎn)單,易于實(shí)現(xiàn),其主要原理是攻擊者選擇密碼算法過(guò)程中的某一位信號(hào)為目標(biāo)信號(hào)(比如某個(gè)S-Box的輸出結(jié)果),按照目標(biāo)信號(hào)在功耗點(diǎn)時(shí)刻H的取值“0”或“1”,對(duì)N次加密過(guò)程的功耗軌跡劃分為2個(gè)類T1=(Ti[j]|H=1)和T0=(Ti[j]|H=0),其中,1≤i≤N;每條功耗軌跡的長(zhǎng)度是M,則j代表第i條軌跡的第j個(gè)采樣點(diǎn),1≤j≤M,Ti[j]為對(duì)應(yīng)第j個(gè)采樣點(diǎn)的電壓采樣。分別對(duì)T1和T0進(jìn)行算術(shù)平均值運(yùn)算后再相減得到差分功耗ΔH[j],如式(2)所示:
ΔH[j]=∑Ti[j]∈T1Ti[j]/|T1|-
∑Ti[j]∈T0Ti[j]/|T0|
(2)
其中,|T0|和|T1|分別是T0和T1功耗軌跡數(shù)目,則|T0|+|T1|=N。當(dāng)功耗軌跡條數(shù)N足夠大時(shí),除了目標(biāo)信號(hào),功耗軌跡中所有中間信號(hào)值均隨機(jī)分布,則該部分功耗的均值差趨近0。若所得的差分功耗ΔH[j]曲線出現(xiàn)峰值,密鑰猜測(cè)正確;反之,則密鑰猜測(cè)錯(cuò)誤。
若一條能量跡的采樣點(diǎn)數(shù)是15 000,條數(shù)為2 000,則攻擊過(guò)程要計(jì)算一個(gè)2000×15000大小的矩陣,樣本計(jì)算量極大,計(jì)算開(kāi)銷較大。由于噪聲及外界干擾的引入,密碼芯片運(yùn)行時(shí)泄露的功耗并非全部都與密鑰具有相關(guān)性。利用大量的采樣點(diǎn)進(jìn)行攻擊時(shí),可能將一些干擾項(xiàng)也包含在內(nèi),降低了攻擊的成功率。若能定位到能量跡中與密鑰具有較相關(guān)性的特征點(diǎn),利用特征區(qū)間內(nèi)的采樣數(shù)據(jù)實(shí)施DPA攻擊,將有效提高攻擊效率。
由于噪聲的存在,實(shí)際測(cè)量環(huán)境下采集到的能量跡存在著數(shù)據(jù)不對(duì)齊的問(wèn)題,導(dǎo)致難以直接定位到中間值對(duì)應(yīng)的能量跡位置。本文將與密鑰具有最強(qiáng)相關(guān)性的采樣點(diǎn)定為特征點(diǎn)。為了能夠精準(zhǔn)定位特征點(diǎn),首先將測(cè)量到的能量跡進(jìn)行分類處理,然后利用均值后做差的方法得到差分曲線,最后差分曲線的最大值即為特征點(diǎn)。利用能量模型定位特征點(diǎn)的方法需要提前掌握被攻擊設(shè)備的正確密鑰,因此該方法的適用范圍是被攻擊設(shè)備的設(shè)計(jì)者或者擁有被攻擊設(shè)備的同款設(shè)備并可對(duì)其執(zhí)行操作的人員。
下面給出定位特征點(diǎn)的具體步驟:
步驟1測(cè)量能量跡。測(cè)量密碼設(shè)備在加密D組明文時(shí)的能量跡。將這D組明文記為PT= (PT1,PT2,…,PTi,…,PTD),其中,PTi表示第i組明文,1≤i≤D。運(yùn)行密碼設(shè)備,測(cè)量到的多條能量跡記作T(i,j)= (Ti,1,…,Ti,j,…,Ti,N),其中,N表示能量跡的長(zhǎng)度,1≤j≤N。全部的能量跡用矩陣T表示:
(3)
步驟2選取密碼算法運(yùn)行的中間值并映射為假設(shè)能量消耗矩陣。選取AES第1輪加密運(yùn)算S盒的輸出值作為中間值。正確密鑰值假設(shè)為kcorrect計(jì)算出D組假設(shè)中間值。給定數(shù)據(jù)PTi和密鑰假設(shè)kcorrect,對(duì)于所有D次加密行為,利用中間函數(shù)f計(jì)算出中間假設(shè)值vi=f(PTi,kcorrect),得到中間數(shù)據(jù)矩陣V。利用漢明距離能量模型,將假設(shè)中間矩陣V映射為假設(shè)能量消耗矩陣HHD。利用漢明重量能量模型,將假設(shè)中間矩陣V映射為假設(shè)能量消耗矩陣HHW。
步驟3按照能量模型的取值對(duì)能量跡進(jìn)行分類。HHD中的元素是能量跡的漢明距離值。HHW中的元素是能量跡的漢明重量值。以向量HHD為依據(jù),將能量跡T(i,j)分為3類SHDt(1≤t≤3):
SHD1={T(i,j)|HD(T(i,j))∈{0,1,2}},
SHD2={T(i,j)|HD(T(i,j))∈{3,4,5}},
SHD3={T(i,j)|HD(T(i,j))∈{6,7,8}}
(4)
若能量跡T(i,j)的漢明距離為0,1,2,則歸于SHD1類;若能量跡T(i,j)的漢明距離為3,4,5,則歸于SHD2類;若能量跡T(i,j)的漢明距離為6,7,8,則歸于SHD3類(針對(duì)的是2組8 bit數(shù)據(jù))。同樣,以向量HHW為依據(jù),將能量跡T(i,j)分為3類SHWt:
SHW1={T(i,j)|HW(T(i,j))∈{0,1,2}},
SHW2={T(i,j)|HW(T(i,j))∈{3,4,5}},
SHW3={T(i,j)|HW(T(i,j))∈{6,7,8}}
(5)
步驟4分別對(duì)類SHDt和類SHWt進(jìn)行均值處理,得到3條正確密鑰下的均值能量跡RHDt和RHWt。
(6)
其中,每一個(gè)|SHDt|為對(duì)應(yīng)類SHDt中能量跡的數(shù)量,每一個(gè)|SHWt|為對(duì)應(yīng)類SHWt中能量跡的數(shù)量。
步驟5選取一個(gè)錯(cuò)誤的密鑰假設(shè)kwrong,重復(fù)步驟2~步驟4得到kwrong下的3條均值能量跡WHDt和WHWt。RHDt和WHDt相減,得到3條差分跡ΔDHDt。同樣,將RHWt和WHWt相減,得到漢明重量模型下的3條差分跡ΔDHWt。3條ΔDHDt同時(shí)出現(xiàn)最大尖峰處的采樣點(diǎn)便是漢明距離模型下得到的特征點(diǎn)PHD。3條ΔDHWt同時(shí)出現(xiàn)最大尖峰處的采樣點(diǎn)便是漢明重量模型下得到的特征點(diǎn)PHW。圖1和圖2表示在2種能量模型下得到的ΔDHDt和ΔDHWt曲線。圖1和圖2中的正確密鑰kcorrect是197,錯(cuò)誤密鑰kwrong是18。漢明距離模型下得到的特征點(diǎn)PHD是6 113,漢明重量模型下得到的特征點(diǎn)PHW是5 616。其中,均值能量跡WHDt和WHWt的求解公式如式(7)所示:
(7)
Figure 1 Curves ΔDHDt and partial enlargement of hamming distance energy model圖1 漢明距離能量模型下的ΔDHDt曲線及部分放大圖
Figure 2 Curves ΔDHWt and partial enlargement of hamming weight energy model圖2 漢明重量能量模型下的ΔDHWt曲線及部分放大圖
首先搭建一個(gè)實(shí)際能量采集平臺(tái)用于測(cè)量SoC芯片的能量跡,然后利用能量模型定位方法,確定出2種能量模型下的2個(gè)特征點(diǎn),最后截取特征點(diǎn)附近適量的采樣點(diǎn)構(gòu)成特征區(qū)間并開(kāi)始實(shí)施DPA 攻擊。為了將計(jì)算成本由2128降為16×28,DPA攻擊的核心思想是分而治之,實(shí)施過(guò)程也是8位一組。本文涉及到的密鑰也是指128位AES算法的8位子密鑰。采用文獻(xiàn)[18]的歐氏距離波動(dòng)系數(shù)α評(píng)估攻擊結(jié)果,0<α<1。α越接近于1,表示結(jié)果密鑰對(duì)應(yīng)的尖峰具有越高的獨(dú)立性,結(jié)果密鑰的可靠性越高。
Figure 3 Energy acquisition platform圖3 能量采集平臺(tái)
實(shí)現(xiàn)對(duì)象為國(guó)內(nèi)某款SoC芯片,設(shè)為專用的密碼協(xié)處理器。協(xié)處理器與其他部件處于同一PCB板上,傳導(dǎo)噪聲較大,增強(qiáng)了準(zhǔn)確定位特征點(diǎn)的難度。圖3是搭建的功耗采集平臺(tái),主要包括SoC芯片、工控機(jī)箱、采集卡和PC機(jī)等。SoC芯片通過(guò)2條高速數(shù)據(jù)線與采集卡連接。采集卡采集SoC芯片內(nèi)核路徑上的0.1 Ω采樣電阻2端的電壓變化并傳送給上位機(jī)軟件。采集卡的采樣頻率為5 GS/s,采樣深度為2 Gpts,采集精度為10 bit。為了驗(yàn)證特征點(diǎn)的有效性,本文隨機(jī)選擇10個(gè)不同的正確密鑰。針對(duì)每個(gè)密鑰隨機(jī)選擇輸入2 000個(gè)隨機(jī)明文,利用能量采集平臺(tái)采集到 2 000條能量跡,總共采集20 000條能量跡。
利用第3節(jié)的定位方法,得到漢明距離能量模型下的特征點(diǎn)是6 113,漢明重量模型下的特征點(diǎn)是5 616。分別截取特征點(diǎn)附近2,5,10,15,20,50,100,200,400個(gè)采樣點(diǎn)構(gòu)成特征區(qū)間,作為DPA攻擊的輸入數(shù)據(jù)實(shí)施攻擊,并記錄攻擊結(jié)果的α值,結(jié)果如圖4和圖5所示。
Figure 4 Attack results of different characteristic intervals under hamming distance energy model圖4 漢明距離能量模型下的不同特征區(qū)間的攻擊結(jié)果
Figure 5 Attack results of different characteristic intervals under hamming weight energy model圖5 漢明重量能量模型下的不同特征區(qū)間的攻擊結(jié)果
Figure 6 Sample size under different attack methods圖6 不同攻擊方法的樣本量統(tǒng)計(jì)
從圖4中可看出,漢明距離能量模型下的特征區(qū)間長(zhǎng)度為5時(shí),α的中位數(shù)最大。從圖5中可看出,漢明重量能量模型下的特征區(qū)間長(zhǎng)度為20時(shí),α達(dá)到最大。因此,在最佳特征區(qū)間的長(zhǎng)度上,漢明距離能量模型得到的特征點(diǎn)具有較低的計(jì)算開(kāi)銷。
作為對(duì)比,最佳特征區(qū)間與文獻(xiàn)[19]的ICA(Independent Component Analysis)方法和無(wú)預(yù)處理的傳統(tǒng)DPA方法比較,結(jié)果如圖6所示。從圖6可以看出,本文的特征區(qū)間方法在樣本量為178時(shí),攻擊成功率達(dá)100%,而文獻(xiàn)[19]的ICA方法需要樣本量為600才能達(dá)到100%,傳統(tǒng)DPA在樣本量為600時(shí)的攻擊成功率為86%。因此,利用漢明距離能量模型得到最佳特征區(qū)間所需要的能量跡條數(shù)較少,降低了計(jì)算開(kāi)銷。
本文特征區(qū)間的結(jié)果參數(shù)與其他文獻(xiàn)相對(duì)比的結(jié)果如表2所示,其中“-”代表該文獻(xiàn)中未涉及到該參數(shù).本文芯片的每個(gè)周期采樣點(diǎn)為250。一次完整的加密運(yùn)算占用30個(gè)時(shí)鐘周期,7 500個(gè)采樣點(diǎn)。由表2可知,與文獻(xiàn)[14,15]相比,利用特征區(qū)間的方法降低DPA攻擊樣本計(jì)算量的效果顯著,本文方法節(jié)約比例最大,只占其他文獻(xiàn)的1/2左右;與文獻(xiàn)[14,19]相比,縮減了大量的樣本量。
Table 2 Comparison of parameters of different methods表2 不同方法的參數(shù)比較
面向SoC對(duì)象,為解決DPA攻擊樣本計(jì)算量和樣本量較大的問(wèn)題,本文提出一種基于能量模型的特征點(diǎn)定位方法。從實(shí)驗(yàn)結(jié)果看出,基于漢明距離能量模型得到的特征區(qū)間取得了良好的效果,極大地壓縮了破解密鑰的樣本計(jì)算量,降低了計(jì)算開(kāi)銷。在未來(lái)的研究中,計(jì)劃進(jìn)一步拓展特征點(diǎn)定位方法的適用范圍以及攻擊場(chǎng)景。