摘 要:針對傳統DPA攻擊方法需要波形數據精確對齊的缺點,提出了一種基于離散傅里葉變換的增強DPA攻擊方法,并對目前常用的嵌入式芯片以DES加密算法為例進行了DPA攻擊實驗。實驗結果表明采用這種增強的DPA攻擊方法能夠克服傳統DPA攻擊方法的缺點。
關鍵詞:差分功耗分析; 數據加密標準; 離散傅里葉變換; 旁路攻擊
中圖分類號:TP309.7
文獻標志碼:A
文章編號:1001-3695(2010)02-0712-02
doi:10.3969/j.issn.1001-3695.2010.02.085
Enhanced DPA technique for embed encrypted CMOS chip
YIN Wen-long, DING Guo-liang, LIU Chang-jie, GUO Hua
(Dept. of Computer Engineering, Ordnance Engineering College, Shijiazhuang 050003, China)
Abstract:This paper presented an enhanced DPA technique to defeat the popular DPA shortcoming, which was that the waveform data must be precise alignment. And made waveform matching based on discrete Fourier transforms. After that performed the standard analysis. The experiment demonstrates the enhanced DPA technique can overcome the shortcoming of popu-lar DPA.
Key words:differential power analysis(DPA); DES; discrete Fourier transforms; side channel attacks(SCA)
0 引言
對嵌入式加密芯片進行DPA(差分功耗分析)[1]攻擊是獲取這些加密系統密鑰的有效途徑。DPA是SCA(旁路攻擊)技術的一種,DPA攻擊的思想為:以電路的功耗特性為基礎,利用功耗與內部密鑰的關系,將大量采樣到的包含該內部密鑰運算的功耗波形數據根據所猜測的密鑰進行劃分,使得所劃分的兩部分具有不同的功耗特性。最后,對兩部分的功耗數據相減得到功耗差分曲線,如果猜測正確,差分曲線將出現明顯的尖鋒,如圖1所示。
DPA攻擊能夠成功的前提是所有功耗波形相對于某一加密運算過程必須精確對齊,如果往功耗波形中加入隨機延時,或功耗數據采集時有偏差,由于各條功耗曲線相同操作時間點不對齊,加密系統處理不同數據(0和1)的功耗差異不能在大量采集樣本中得到累積,DPA攻擊將會失敗[2]。為此,本文提出了一種增強的DPA攻擊方法對常用的嵌入式加密芯片(單片機、智能卡、FPGA芯片)進行攻擊,并以DSE(data encryption standard,數據加密標準)算法為例對攻擊過程作了詳細說明,其他加密算法(3DES、AES、RSA)與此類似。
1 攻擊的總體方案
1.1 功耗波形數據采集
功耗波形數據采集就是采集包含所要分析功耗分量的功耗數據。對于不同的加密算法,要分析的功耗分量不同,因此功耗數據的采集時機也不盡相同,如對DES算法常采集第一輪或最后一輪的功耗數據。而波形采集次數一般會比較多,并且在采集同一批數據的時候芯片內部的密鑰是不變化的。只有這樣,所有被采集的功耗波形中才會擁有相同的密鑰信息。
針對同一密鑰,本文對嵌入式加密芯片輸入M組明文PTi(0≤i≤M-1)。利用數字示波器進行功耗數據采樣,記為Si[j],設采樣點為N個(0≤j≤N-1),Si[j]為輸入明文PTi后加密過程功耗采樣的第j個采樣點。對應于明文PTi的密文輸出記為CTi。
1.2 波形數據預處理
由于嵌入式加密芯片加入了隨機延時或在采樣時存在偏差,在1.1節中采集到的波形數據間存在偏移,如果直接進行分析處理,結果會很不理想。因此采用基于離散傅里葉變換的方法對波形數據進行匹配處理,具體方法如下:
設兩個波形信號f(n)和g(n),假設n的范圍是(-M,…,M),因此波形長度M=2M+1。讓F(k)和G(k)表示兩個波形的離散傅里葉變換(discrete Fourier transform,DFT),則
F(k)=∑Mn=-M f(n)WknN=AF(k)ejθF(k)(1)
G(k)=∑Mn=-M g(n)WknN=AG(k)ejθG(k)(2)
其中:WknN=e-j2πN。AF(k)和AG(k)為振幅,ejθF(k)和ejθG(k)為相位。交叉相位頻譜(或規格化交叉頻譜)R(k)定義為
R(k)=F(k)G(k)|F(k)G(k)|=ejθ(k)(3)
其中:G(k)表示G(k)的共軛,而且θ(k)=θF(k)-θG(k)。 POC(phase-only correlation)函數r(n)是R(k)的逆離散傅里葉變換(inverse discrete Fourier transform,IDFT),表示為
r(n)=1N∑Mk=-MR(k)W-knN(4)
如果兩個波形間有相似,POC函數給出了明顯的急劇峰值(當f(n)=g(n),POC函數變成Kronecker delta函數);如果兩個波形間沒有相似,峰值不明顯。波峰的高度表示波形的匹配程度,而波峰的位置表示波形間的偏移。因此,如果將原始波形中加入噪聲,那么POC函數中波峰的高度將會下降。現在考慮連續區間中的波形,設fc(t)是實數變量t在連續區間中的波形,本文用δ表示波形的偏移,因此偏移后的波形可以表示為fc(t-δ),假定f(n)和g(n)是fc(t)和fc(t-δ) 的采樣波形,則
f(n)=fc(t)|t=nT(5)
g(n)=fc(t-δ)|t=nT(6)
其中:T是采樣間隔,變量n=-M,…,M。為簡單起見,設定T=1,則f(n)與g(n)之間的交叉相位頻譜和POC函數為
R(k)=F(k)G(k)|F(k)G(k)|≈ej2πNkδ(7)
r(n)=1N∑Mk=-MR(k)W-knN≈αNsin{π(n+δ)}sin{πN(n+δ)}(8)
其中:δ為兩個波形間的偏移值;α為峰值,表示兩個波形的相似度,α=1表示兩個波形是一樣的,當給波形中加入噪聲時,α的值會減小,在實際應用中α≤1。
在匹配中,首先任意選擇一個波形作為參考,根據式(8)計算POC函數r(n),從而確定其他波形和參考波形間的偏移誤差δ;然后根據偏移誤差δ調整其他的波形,實現了所有波形的精確對齊(波形匹配)。
1.3 波形數據分析
DES將64位的明文輸入經過16輪加密等一系列變換輸出64位密文,64位密鑰中的56位用于加密,其余8位用于奇偶校驗。詳細的DES算法描述可參見文獻[3]。對DES進行DPA攻擊時可以采用第一輪或對后一輪的功耗數據進行分析攻擊,在此本文選用最后一輪的功耗數據。
最后一輪DES加密的流程如圖2所示。第15輪操作輸出的密文為64位,等分成左(L15)、右(R15)兩部分。R15經過一個E變化擴展成48位,然后與第16輪子密鑰K16進行異或操作,結果再經過8個6變4的S變化為32位。再經過一個P換位操作,與L15進行異或操作得到第16輪輸出的左32位L16,而R16直接由R15得到。第16輪的輸出再經過一個置換操作即可得到密文CT。
攻擊的第一步是獲取第16輪的子密鑰K16(48位),再通過K16獲取最終的64位密鑰。把K16等分成8個子密鑰塊(K 116,…,K 816),每個子密鑰塊為6個二進制位,其取值范圍為0~63。具體的攻擊方法為:對每個子密鑰塊從0~63進行遍歷,在每次遍歷時選取一個D函數對波形數據進行分類;然后對兩組波形數據取平均值,最后做差。如果最終的曲線出現尖峰說明子密鑰塊猜測正確。D函數為L15中的某一位。
2 攻擊實驗
2.1 對單片機或智能卡的攻擊
對單片機攻擊的實驗的原理如圖3所示。示波器(Tektronix DPO4104,1 GHz BW, 5G sample/s)的2通道接收單片機(89C52)加密模塊的觸發信號,1通道用電壓探針(Tektronix P6139A,500 MHz 8.0 pF)采集來采集電阻R兩端電壓數據。攻擊過程如下:在PC機上生成64位隨機明文,通過串口發送至單片機。單片機收到明文后利用存儲在其中的密鑰對明文進行DES加密,在加密過程中加入隨機延時,并在第16輪加密操作時對示波器產生數據采集的觸發信號。示波器在收到觸發信號之后,采集電阻R兩端電壓數據(可反映單片機的功耗),并將數據通過USB總線送至PC機,最后在PC機上運行分析程序攻擊出64位的密鑰。
設定明文輸入和電壓數據采樣為500組,采樣深度100 000點,采樣頻率500 MS/s。如圖3所示,為第一個子密鑰塊K 116猜測正確功率差分曲線(出現明顯的尖峰),采用相同的方法可以攻擊出其他7個子密鑰塊,由此可以得到K16。對于智能卡由于其內部為一個C51的單片機核,可以用單片機來模擬對智能卡的攻擊,攻擊的實驗平臺和攻擊過程與單片機類似。
2.2 對FPGA的攻擊
目前FPGA的種類很多,但其中有大于50%的份額被Xilinx公司搶占,在此本文選用Xilinx公司的Spartan3(PQ208),對其他種類的FPGA的攻擊與此類似。Spartan3在工作時需要三個工作電壓,即內核電壓(1.2 V)、輔助電壓(2.5 V)、I/O電壓(3.3 V)。而Spartan3芯片的所有地線是并結在一起的。在進行數據采集時實質是要采集內核電壓所引起的功耗變化。在對Spartan3進行功耗數據采集有兩種方案:a)芯片的地線和電源地線之間串聯一個電阻,通過電壓探針采集電阻兩端的電壓的變化,但此時電壓變化反映的是總功耗變化,只能近似地表示內核的功耗變化;b)在內核電壓和芯片之間置一個電流探針(Tektronix CT-2,1.2 kHz~200 MHz),通過電流的變化反映內核的功耗變化。在實際的應用中本文采用第二種方案。對FPGA攻擊的其他步驟與單片機類似。
3 結束語
實驗證明,對采取插入隨機延時防護措施的加密芯片,或無法獲取精確的采集觸發信號的加密芯片,傳統的DPA攻擊方法失效,但本文的增強DPA攻擊方法仍然能夠快速、準確地找到正確密鑰,這對嵌入式加密系統又提出了新的挑戰。