蔡曉敏,李仁發,李少青,沈 高,鄺世杰
(1.湖南大學信息科學與工程學院,湖南 長沙 410082;2.國防科技大學計算機學院,湖南 長沙 410073)
密碼設備運行時會不可避免地泄露一些物理信息,如功耗、電磁輻射、運行時間等旁路信息。側信道攻擊SCAs(Side Channel Attacks)正是利用物理信息與密鑰的相關性,采集并統計分析物理信息以恢復密碼設備的密鑰。SCAs主要包括了功耗攻擊[1]、電磁輻射攻擊[2]和時間攻擊[3]。 1996 年,Kocher[3]提出了一種基于運行時間攻擊技術,成功破解了密鑰。此后,非侵入式的SCAs技術在信息安全領域掀起了研究熱潮[4-6]。1998年,Kocher等[1]提出了功耗分析PA(Power Analysis)攻擊技術,該技術以其操作簡易、適用范圍廣和成功率高等特點成為SCAs技術中最主要的攻擊手段。如今,PA技術已經成功破解多種加密算法,如高級加密標準AES[7]、數據加密標準DES[8]、公鑰密碼算法RSA[9]以及智能卡[10]等。根據人們對密碼設備的了解程度,PA技術分為簡單功耗分析SPA[1]和差分功耗分析DPA[11]。
傳統的DPA攻擊[12]方法只利用加密算法的一位或多位中間值的功耗信息,其他部分的功耗數據被當作噪聲不予考慮,導致功耗信息的利用率較低,所需功耗樣本量較大。隨著PA技術的不斷優化,王小娟等[13]提出了一種基于類間距離的特征提取方法,提高了功耗信息的利用率。該方法的實現對象是微控制器,面對大規模的ASCI芯片或SoC芯片,攻擊成功率將大幅度降低。劉政林等[14]提出了一種基于最大偏差的AES功耗分析攻擊方法,計算出一組不同明文輸入下的漢明重量和另一組不同明文輸入下的漢明重量,選取2組不同明文輸入下的漢明重量差為改進的功耗模型,但成功破解子密鑰的功耗曲線仍需要5 120條,有效點個數為100。李金良等[15]通過差分峰值找到密鑰的相關位置點,縮小攻擊范圍,只對部分功耗數據點進行分析,但攻擊成功需要的功耗樣本量較大,而且提取部分攻擊點的方法缺乏理論支撐。
本文的貢獻:面向SoC的DPA攻擊過程,為解決功耗樣本量大、提取點數較多的問題,提出了一種基于能量模型的能量跡分類方法,成功定位能量跡中的特征點。分別實測驗證了基于漢明距離和漢明重量模型下得到的特征區間的攻擊效果,大幅降低了DPA攻擊的樣本量和樣本計算量。
目前,集成電路多數使用靜態互補CMOS管實現,正常工作狀態下,電路的功耗由靜態功耗、動態功耗和短路功耗組成。動態功耗占總功耗的比例最大,用公式Pdyn=CLVDD2f0→1表示,其中,CL為負載電容,VDD為電源電壓,f0→1為開關活動性。表1解析了各種輸入狀態下CMOS門電路的功耗情況。

Table 1 CMOS gate power consumption in different input states表1 不同輸入狀態下CMOS門功耗情況
由表1可看出,不同輸入狀態會產生不同的功耗,反之,不同的功耗必然意味不同輸入狀態,而差分功耗攻擊正是利用功耗與內部數據的相關性來達到恢復密鑰的目的的。
在DPA攻擊中,通常必須將操作數映射為能量值,這是一種對設備的能量仿真。漢明距離模型[16]和漢明重量模型[17]2種能量模型在DPA攻擊中很常見。
漢明重量模型的基本思想是假設能量消耗正比于所處理的操作數中值“1”的比特個數,而忽略在該數據之前和之后處理的數值。在攻擊者對網表的內容一無所知,或者僅知道部分網表卻不清楚該部分數據的前后處理情況下,通常采用漢明重量模型。
漢明距離模型的基本思想是計算數字電路在某個特定操作中0→1轉換和1→0轉換的總數量。值v0和值v1的漢明距離等于v0⊕v1的漢明重量HW(v0⊕v1),也就是v0和v1中相異比特的個數。用式(1)來反映電路在該時段內的能量消耗情況:
E=aHW(v0⊕v1)+b
(1)
其中v0為某一寄存器的先前狀態;v1為同一寄存器的后來狀態;E為寄存器從v0狀態切換到v1狀態的能量消耗;a表示能耗比例系數;b表示與密鑰不相關的能耗和噪聲。
漢明重量模型原理簡單、實現方便,在能量仿真中應用廣泛。
基于均值差的DPA相關性檢驗方法操作簡單,易于實現,其主要原理是攻擊者選擇密碼算法過程中的某一位信號為目標信號(比如某個S-Box的輸出結果),按照目標信號在功耗點時刻H的取值“0”或“1”,對N次加密過程的功耗軌跡劃分為2個類T1=(Ti[j]|H=1)和T0=(Ti[j]|H=0),其中,1≤i≤N;每條功耗軌跡的長度是M,則j代表第i條軌跡的第j個采樣點,1≤j≤M,Ti[j]為對應第j個采樣點的電壓采樣。分別對T1和T0進行算術平均值運算后再相減得到差分功耗ΔH[j],如式(2)所示:
ΔH[j]=∑Ti[j]∈T1Ti[j]/|T1|-
∑Ti[j]∈T0Ti[j]/|T0|
(2)
其中,|T0|和|T1|分別是T0和T1功耗軌跡數目,則|T0|+|T1|=N。當功耗軌跡條數N足夠大時,除了目標信號,功耗軌跡中所有中間信號值均隨機分布,則該部分功耗的均值差趨近0。若所得的差分功耗ΔH[j]曲線出現峰值,密鑰猜測正確;反之,則密鑰猜測錯誤。
若一條能量跡的采樣點數是15 000,條數為2 000,則攻擊過程要計算一個2000×15000大小的矩陣,樣本計算量極大,計算開銷較大。由于噪聲及外界干擾的引入,密碼芯片運行時泄露的功耗并非全部都與密鑰具有相關性。利用大量的采樣點進行攻擊時,可能將一些干擾項也包含在內,降低了攻擊的成功率。若能定位到能量跡中與密鑰具有較相關性的特征點,利用特征區間內的采樣數據實施DPA攻擊,將有效提高攻擊效率。
由于噪聲的存在,實際測量環境下采集到的能量跡存在著數據不對齊的問題,導致難以直接定位到中間值對應的能量跡位置。本文將與密鑰具有最強相關性的采樣點定為特征點。為了能夠精準定位特征點,首先將測量到的能量跡進行分類處理,然后利用均值后做差的方法得到差分曲線,最后差分曲線的最大值即為特征點。利用能量模型定位特征點的方法需要提前掌握被攻擊設備的正確密鑰,因此該方法的適用范圍是被攻擊設備的設計者或者擁有被攻擊設備的同款設備并可對其執行操作的人員。
下面給出定位特征點的具體步驟:
步驟1測量能量跡。測量密碼設備在加密D組明文時的能量跡。將這D組明文記為PT= (PT1,PT2,…,PTi,…,PTD),其中,PTi表示第i組明文,1≤i≤D。運行密碼設備,測量到的多條能量跡記作T(i,j)= (Ti,1,…,Ti,j,…,Ti,N),其中,N表示能量跡的長度,1≤j≤N。全部的能量跡用矩陣T表示:
(3)
步驟2選取密碼算法運行的中間值并映射為假設能量消耗矩陣。選取AES第1輪加密運算S盒的輸出值作為中間值。正確密鑰值假設為kcorrect計算出D組假設中間值。給定數據PTi和密鑰假設kcorrect,對于所有D次加密行為,利用中間函數f計算出中間假設值vi=f(PTi,kcorrect),得到中間數據矩陣V。利用漢明距離能量模型,將假設中間矩陣V映射為假設能量消耗矩陣HHD。利用漢明重量能量模型,將假設中間矩陣V映射為假設能量消耗矩陣HHW。
步驟3按照能量模型的取值對能量跡進行分類。HHD中的元素是能量跡的漢明距離值。HHW中的元素是能量跡的漢明重量值。以向量HHD為依據,將能量跡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類(針對的是2組8 bit數據)。同樣,以向量HHW為依據,將能量跡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分別對類SHDt和類SHWt進行均值處理,得到3條正確密鑰下的均值能量跡RHDt和RHWt。
(6)
其中,每一個|SHDt|為對應類SHDt中能量跡的數量,每一個|SHWt|為對應類SHWt中能量跡的數量。
步驟5選取一個錯誤的密鑰假設kwrong,重復步驟2~步驟4得到kwrong下的3條均值能量跡WHDt和WHWt。RHDt和WHDt相減,得到3條差分跡ΔDHDt。同樣,將RHWt和WHWt相減,得到漢明重量模型下的3條差分跡ΔDHWt。3條ΔDHDt同時出現最大尖峰處的采樣點便是漢明距離模型下得到的特征點PHD。3條ΔDHWt同時出現最大尖峰處的采樣點便是漢明重量模型下得到的特征點PHW。圖1和圖2表示在2種能量模型下得到的ΔDHDt和ΔDHWt曲線。圖1和圖2中的正確密鑰kcorrect是197,錯誤密鑰kwrong是18。漢明距離模型下得到的特征點PHD是6 113,漢明重量模型下得到的特征點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曲線及部分放大圖
首先搭建一個實際能量采集平臺用于測量SoC芯片的能量跡,然后利用能量模型定位方法,確定出2種能量模型下的2個特征點,最后截取特征點附近適量的采樣點構成特征區間并開始實施DPA 攻擊。為了將計算成本由2128降為16×28,DPA攻擊的核心思想是分而治之,實施過程也是8位一組。本文涉及到的密鑰也是指128位AES算法的8位子密鑰。采用文獻[18]的歐氏距離波動系數α評估攻擊結果,0<α<1。α越接近于1,表示結果密鑰對應的尖峰具有越高的獨立性,結果密鑰的可靠性越高。

Figure 3 Energy acquisition platform圖3 能量采集平臺
實現對象為國內某款SoC芯片,設為專用的密碼協處理器。協處理器與其他部件處于同一PCB板上,傳導噪聲較大,增強了準確定位特征點的難度。圖3是搭建的功耗采集平臺,主要包括SoC芯片、工控機箱、采集卡和PC機等。SoC芯片通過2條高速數據線與采集卡連接。采集卡采集SoC芯片內核路徑上的0.1 Ω采樣電阻2端的電壓變化并傳送給上位機軟件。采集卡的采樣頻率為5 GS/s,采樣深度為2 Gpts,采集精度為10 bit。為了驗證特征點的有效性,本文隨機選擇10個不同的正確密鑰。針對每個密鑰隨機選擇輸入2 000個隨機明文,利用能量采集平臺采集到 2 000條能量跡,總共采集20 000條能量跡。
利用第3節的定位方法,得到漢明距離能量模型下的特征點是6 113,漢明重量模型下的特征點是5 616。分別截取特征點附近2,5,10,15,20,50,100,200,400個采樣點構成特征區間,作為DPA攻擊的輸入數據實施攻擊,并記錄攻擊結果的α值,結果如圖4和圖5所示。

Figure 4 Attack results of different characteristic intervals under hamming distance energy model圖4 漢明距離能量模型下的不同特征區間的攻擊結果

Figure 5 Attack results of different characteristic intervals under hamming weight energy model圖5 漢明重量能量模型下的不同特征區間的攻擊結果

Figure 6 Sample size under different attack methods圖6 不同攻擊方法的樣本量統計
從圖4中可看出,漢明距離能量模型下的特征區間長度為5時,α的中位數最大。從圖5中可看出,漢明重量能量模型下的特征區間長度為20時,α達到最大。因此,在最佳特征區間的長度上,漢明距離能量模型得到的特征點具有較低的計算開銷。
作為對比,最佳特征區間與文獻[19]的ICA(Independent Component Analysis)方法和無預處理的傳統DPA方法比較,結果如圖6所示。從圖6可以看出,本文的特征區間方法在樣本量為178時,攻擊成功率達100%,而文獻[19]的ICA方法需要樣本量為600才能達到100%,傳統DPA在樣本量為600時的攻擊成功率為86%。因此,利用漢明距離能量模型得到最佳特征區間所需要的能量跡條數較少,降低了計算開銷。
本文特征區間的結果參數與其他文獻相對比的結果如表2所示,其中“-”代表該文獻中未涉及到該參數.本文芯片的每個周期采樣點為250。一次完整的加密運算占用30個時鐘周期,7 500個采樣點。由表2可知,與文獻[14,15]相比,利用特征區間的方法降低DPA攻擊樣本計算量的效果顯著,本文方法節約比例最大,只占其他文獻的1/2左右;與文獻[14,19]相比,縮減了大量的樣本量。

Table 2 Comparison of parameters of different methods表2 不同方法的參數比較
面向SoC對象,為解決DPA攻擊樣本計算量和樣本量較大的問題,本文提出一種基于能量模型的特征點定位方法。從實驗結果看出,基于漢明距離能量模型得到的特征區間取得了良好的效果,極大地壓縮了破解密鑰的樣本計算量,降低了計算開銷。在未來的研究中,計劃進一步拓展特征點定位方法的適用范圍以及攻擊場景。