周悅 文毅 楊旭 王秀君 李梅



摘 ?要: 針對基于芯片實現分組密碼算法的物理泄漏安全問題,本文對軟件實現3DES算法的STM32芯片進行了電磁輻射信號采集,通過差分能量分析攻擊成功獲取了密鑰。實驗選擇3DES算法Sbox輸出作為中間值,在算法的中間值開始運算時,通過芯片引腳輸出高電平對示波器進行觸發,極大地提高了實驗攻擊效率。一則實現已采集信號占用最小的存儲資源,最大限度只采集中間值運算所對應的區間;二則保證已采集曲線未出現失調,在進行曲線處理時無需進行對齊操作;三則保證了已采集的信號的質量,極大減少攻擊所需的曲線數目。實驗表明,僅200條電磁信號曲線就能獲取1次DES運算的輪密鑰,同時反映了芯片存在嚴重的電磁輻射泄露。
關鍵詞:?3DES算法;差分能量分析攻擊;漢明重量模型;電磁輻射分析
中圖分類號: TP309. 7????文獻標識碼:?A????DOI:10.3969/j.issn.1003-6970.2019.09.001
本文著錄格式:周悅,文毅,楊旭,等. 基于3DES密碼算法的差分能量分析攻擊方法的研究[J]. 軟件,2019,40(9):01-07
Research on Differential Power Analysis Attack Method Based on?3DES Cryptographic Algorithm
ZHOU Yue1, WEN Yi1, YANG Xu2, WANG Xiu-jun1, LI Mei2
(1.?National Application Software Testing Labs (Beijing Software Testing & QA Center), Beijing 100193,?China;2.?School of Information Engineering, China University Of Geosciences, Beijing 100083,?China)
【Abstract】: Aiming at the physical leakage security problem based on chip implementation of block cipher algorithm, this paper collects the electromagnetic radiation signal of STM32 chip which implements 3DES algorithm, and we can reveal the key successfully through differential power analysis attack. The experiment selects the 3DES algorithm Sbox output as the intermediate result. When the intermediate result of the algorithm starts to operate, the oscilloscope is triggered by the high level of the chip pin output, which greatly improves the experimental attack efficiency. First of all, the collected signal occupies the smallest storage resource, and only collects the interval corresponding to the intermediate result operation; secondly, it ensures that the acquired Power Trace does not appear to be misaligned, and does not need to perform alignment operation when performing traces processing; At last, The quality of the signal greatly reduces the number of traces required for the attack. Experiments show that only 200 electromagnetic signal traces can reveal the round key of DES operation, and it also reflects the serious electromagnetic radiation leakage of the chip.
【Key words】: Triple DES; Differential power analysis attack; Hamming-weight; Electromagnetic radiation analysis
隨著密碼設備的普及,人們越來越關注其安全性,一般會在設備中嵌入一些密碼算法,DES是最常見的密碼算法之一,其改進的3DES算法在很多領域都有應用,因此對3DES的研究很有現實意義。差分能量分析(DPA)攻擊是側信道攻擊的一種,通過分析密碼設備的能量消耗從而獲得密鑰。在1999年,Kocher等[1]提出DPA攻擊后,DPA就受到國內外學者的廣泛關注。
本文在研究DPA理論和3DES加密算法特性的基礎上,對執行3DES算法的STM32芯片進行DPA攻擊實驗。實驗首先搭建了DPA攻擊測試平臺,基于該平臺設計合理的DPA攻擊流程,平臺使用一款特定的側信道分析軟件對采集到的電磁信號進行處理分析。對于3DES算法,選擇了S盒的輸出作為DPA攻擊的目標,使用漢明重量模型對能量進行仿真,最后通過分析相關系數來完成實驗。
1.1??能量泄露機理
密碼設備需要通過數字電路來設計實現,邏輯元件是構建數字電路的關鍵,而互補型CMOS是一種實現邏輯元件常用的邏輯結構。CMOS反相器是最簡單的CMOS元件,反相器的能量消耗分為靜態、動態能量消耗兩部分,靜態能量消耗發生在元件沒有轉換活動的時候,而動態能量消耗則發生在信號發生轉換或者元件的負載電容需要充電的時候。通常來說靜態的消耗值很低,動態能量消耗是總能量損耗的主要因素,而動態的能量消耗對CMOS電路中所要進行處理的數據有依賴性。CMOS反相器由NMOS以及PMOS組成,典型電路結構如圖1所示。
Input表示信號的輸入端,Output表示信號的輸出端。當Input發生1→0轉換時,由MOS管的特征可知,此時NMOS晶體管截止,PMOS晶體管導通,電容CL就處于充電的狀態,從電源處獲取電流;當Input發生0→1轉換時,NMOS管將導通,PMOS管則截止,負載電容CL此時處于放電狀態,不從電源處獲取電流。若輸出端的信號不發生轉換,則邏輯元件僅僅產生靜態的能量損耗,而不會產生動態的能量損耗。
1.2??漢明重量模型
CMOS反相器能量消耗和要處理的數據有很大的關系,對于密碼設備來說,進行處理的數據不同,所損耗的能量也就不同。在DPA攻擊中,需要對密碼設備進行能量仿真,也就是說將操作數映射成為對應的能量消耗值。本實驗采用漢明重量模型,假設能量消耗和設備器件所要處理的數據中被置位的比特個數是正比關系,并且忽略此數據前面和后面所處理的數值。
1.3??攻擊步驟[2]
DPA攻擊的策略一般由以下5個步驟組成:
(1)選擇算法的某個中間值,用函數
表示,d通常是明文(或密文),k代表的是密鑰的一部分。滿足這些條件的中間值即可用來恢復k。
(2)測量能量消耗。記錄大量數據值d加密(或解密)時的能量消耗曲線。數據值
所對應的能量消耗的曲線用
來表示,其中T代表著這條能量跡的長度。對于D個數據分組來說,用一個D×T的矩陣T來代表這些數據值
的能量跡。
(3)計算假設的中間值。對密鑰進行假設猜測,用向量
來表示,然后計算出假設的中間值![]()
,用大小為D×K的矩陣V來表示。設備執行操作時只使用了K中的一個值,我們用
來表示設備用到的密鑰,DPA攻擊的目標就是找出經過D次密碼運算矩陣V中被處理的那列,進而得到
。
(4)將假設中間值映射成能量消耗值。利用能量模型將已經假設好的中間值V映射成相應的能量消耗值矩陣H。我們在實驗中采用的是漢明重量模型[3],通過映射得到
,映射的效果越好,DPA攻擊就越成功。
(5)對比分析能量跡以及能量消耗值。比較矩陣H和T相應列的值,即比較
與
。事實上就是拿假設的能量消耗來與設備實際產生的能量跡進行比較,用一個R矩陣來表示比較的結果,矩陣的大小是K×T,并且其中的每一元素
代表著
與
的相關性結果。計算相關系數
如公式(1)所示,得到的
值越高,就說明
與
的匹配性越好。
通過公式(1)可形成多條相關性曲線,每一條曲線對應一個密鑰假設。相關系數矩陣出現的最大值對應正確的密鑰假設,在該曲線上表現為一個明
顯的尖峰,該尖峰同時也揭示了對所選擇中間值進行處理的位置。
2.13DES算法DPA攻擊原理[4]
DES算法通過使用64位的密鑰對輸入的64位明文進行一系列操作,使其輸出為64位的密文。算法包含16輪迭代運算,每輪有8個S盒,S盒的輸出包含有明文和密鑰的信息,因此作為我們DPA攻擊的目標[5]。由于DES算法的安全強度不夠,所以才有了安全度更高的3DES。3DES的加密公式(2)如下:
其中P代表明文,E是加密運算,D是解密運算,本實驗3DES算法采用雙倍長(16字節)密鑰,即密鑰K1與K3相同。
實驗首先對第1次DES加密的第1輪運算進行DPA攻擊,然后在對第2次加密的第16輪運算進行攻擊,得出密鑰K1在第1輪和第16輪中使用的輪密鑰后,通過窮舉搜索找到正確的K1。接著再攻擊解密的第1輪運算,由已得到的密鑰K1,破解出K2的輪密鑰。
2.2攻擊平臺
DPA攻擊的測量配置通常由密碼設備、時鐘信號發生器、計算機(PC)、電磁探頭、數字示波器等幾部分組件構成,測量配置框圖如圖2所示
本文研究DPA攻擊使用的是特制的側信道攻擊平臺,選擇STM32F103RC的單片機芯片作為攻擊的對象,采集芯片執行3DES算法時輻射的電磁信號,并在裝有3DES算法分析工具的電腦上進行處理。實驗使用140Mhz的低通濾波器進行濾波,采樣頻率為1GS/s,整個3DES算法的采樣點為10MS。PC機運行DPA攻擊腳本,不斷發送隨機明文給芯片,然后保存下明文、密文,還有每次加密時示波器采集的電磁輻射信號。
2.3攻擊結果
首先在3DES算法源代碼中通過GPIO功能使芯片引腳輸出3路信號,分別對應3DES算法第1次DES第1輪的Sbox運算、第2次DES第1輪的Sbox運算、第3次DES第16輪的Sbox運算,如圖3所示。
2.3.1 ?對第1次DES第1輪運算進行DPA攻擊
以第1次DES第1輪Sbox所對應的輸出信號作為示波器的觸發信號,8個S盒運算對應8個觸發信號。采集200條電磁輻射曲線,如圖4所示。
從已采集的200條曲線中任選3條進行顯示,如圖5所示,可知曲線已經嚴格對齊,進行曲線處理時,無需進行對齊操作。
以此200條電磁曲線,選擇S盒輸出的漢明重量進行DPA攻擊,基于相關系數的攻擊結果如下:
SBox1的相關性排序結果是:
1、候選子密鑰0[0x00],對應相關性為–0.65709912776947,在點絕對位置1582上
2、候選子密鑰31[0x1f],對應相關性為0.392379492521286,在點絕對位置1582上
SBox2的相關性排序結果是:
1、候選子密鑰2[0x02],對應相關性為–0.496553242206573,在點絕對位置4068上
2、候選子密鑰34[0x22],對應相關性為–0.321006268262863,在點絕對位置6228上
SBox3的相關性排序結果是:
1、候選子密鑰19[0x13],對應相關性為–0.536363363265991,在點絕對位置6555上
2、候選子密鑰9[0x09],對應相關性為0.36610472202301,在點絕對位置17955上
SBox4的相關性排序結果是:
1、候選子密鑰12[0x0c],對應相關性為–0.534933149814606,在點絕對位置9042上
2、候選子密鑰28[0x1c],對應相關性為0.398669868707657,在點絕對位置9042上
SBox5的相關性排序結果是:
1、候選子密鑰13[0x0d],對應相關性為–0.514000236988068,在點絕對位置11528上
2、候選子密鑰7[0x07],對應相關性為–0.392057627439499,在點絕對位置16291上
SBox6的相關性排序結果是:
1、候選子密鑰34[0x22],對應相關性為–0.624307572841644,在點絕對位置14014上
2、候選子密鑰31[0x1f],對應相關性為0.469585478305817,在點絕對位置14014上
SBox7的相關性排序結果是:
1、候選子密鑰0[0x00],對應相關性為–0.403402060270309,在點絕對位置16501上
2、候選子密鑰2[0x02],對應相關性為–0.360525220632553,在點絕對位置16496上
SBox8的相關性排序結果是:
1、候選子密鑰5[0x05],對應相關性為–0.385684728622437,在點絕對位置18987上
2、候選子密鑰59[0x3b],對應相關性為0.345604658126831,在點絕對位置11992上
輪密鑰:0024CC362005
對攻擊結果進行可視化顯示,8個可視化圖對應8個Sbox攻擊結果,如圖6所示。
通過觀察可知,圖中顯示最高的尖峰,對應正確密鑰索引以及對中間值Sbox查表操作進行處理的位置。由于STM32芯片3DES加密算法由軟件實現,8個Sbox查表操作順序執行,一個Sbox查表操作完成后再執行下一個。
2.3.2 ?對第3次DES第16輪運算進行DPA攻擊
以第3次DES第16輪Sbox所對應的輸出信號作為示波器的觸發信號,采集200條電磁輻射曲線,如圖7所示。
對采集的200條電磁信號原始曲線,選擇S盒輸出的漢明重量進行DPA攻擊,基于相關系數的攻擊結果如下:
SBox1的相關性排序結果是:
1、候選子密鑰0[0x00],對應相關性為–0.642539024353027,在點絕對位置1151上
2、候選子密鑰58[0x3a],對應相關性為–0.352906137704849,在點絕對位置1151上
SBox2的相關性排序結果是:
1、候選子密鑰19[0x13],對應相關性為–0.585478901863098,在點絕對位置3651上
2、候選子密鑰30[0x1e],對應相關性為–0.305856138467789,在點絕對位置8758上
SBox3的相關性排序結果是:
1、候選子密鑰16[0x10],對應相關性為–0.474530726671219,在點絕對位置6152上
2、候選子密鑰31[0x1f],對應相關性為–0.366014689207077,在點絕對位置6152上
SBox4的相關性排序結果是:
1、候選子密鑰12[0x0c],對應相關性為–0.527862429618835,在點絕對位置8652上
2、候選子密鑰20[0x14],對應相關性為0.390225887298584,在點絕對位置16923上
SBox5的相關性排序結果是:
1、候選子密鑰13[0x0d],對應相關性為–0.535461604595184,在點絕對位置11153上
2、候選子密鑰44[0x2c],對應相關性為0.342443287372589,在點絕對位置1321上
SBox6的相關性排序結果是:
1、候選子密鑰2[0x02],對應相關性為–0.513921439647675,在點絕對位置13653上
2、候選子密鑰15[0x0f],對應相關性為0.349797010421753,在點絕對位置9491上
SBox7的相關性排序結果是:
1、候選子密鑰6[0x06],對應相關性為–0.448327392339706,在點絕對位置16153上
2、候選子密鑰56[0x38],對應相關性為–0.33991950750351,在點絕對位置2015上
SBox8的相關性排序結果是:
1、候選子密鑰1[0x01],對應相關性為–0.504002630710602,在點絕對位置18653上
2、候選子密鑰2[0x02],對應相關性為–0.319470077753067,在點絕對位置4347上
輪密鑰:01340C342181
攻擊結果進行可視化顯示,如圖8所示。
通過對第1次DES和第3次DES攻擊,得到第1個密鑰k1為1111222233334444。
2.3.3??對第2次DES第1輪運算進行DPA攻擊
以第2次DES第1輪Sbox所對應的輸出信號作為示波器的觸發信號,采集200條電磁輻射曲線,如圖9所示。
進行第2次DES攻擊時,將第1個密鑰帶入。選擇S盒輸出的漢明重量進行DPA攻擊,基于相關系數的攻擊結果如下:
SBox1的相關性排序結果是:
1、候選子密鑰42[0x2a],對應相關性為–0.629880964756012,在點絕對位置1360上
2、候選子密鑰33[0x21],對應相關性為0.439686805009842,在點絕對位置1360上
SBox2的相關性排序結果是:
1、候選子密鑰26[0x1a],對應相關性為–0.643305003643036,在點絕對位置3832上
2、候選子密鑰59[0x3b],對應相關性為0.343240588903427,在點絕對位置9026上
SBox3的相關性排序結果是:
1、候選子密鑰24[0x18],對應相關性為–0.462969660758972,在點絕對位置6305上
2、候選子密鑰47[0x2f],對應相關性為–0.312610268592834,在點絕對位置11791上
SBox4的相關性排序結果是:
1、候選子密鑰47[0x2f],對應相關性為–0.512154519557953,在點絕對位置8777上
2、候選子密鑰7[0x07],對應相關性為–0.397135555744171,在點絕對位置8777上
SBox5的相關性排序結果是:
1、候選子密鑰41[0x29],對應相關性為–0.642742931842804,在點絕對位置11250上
2、候選子密鑰15[0x0f],對應相關性為–0.454308360815048,在點絕對位置11250上
SBox6的相關性排序結果是:
1、候選子密鑰22[0x16],對應相關性為–0.580213785171509,在點絕對位置13722上
2、候選子密鑰43[0x2b],對應相關性為0.398896187543869,在點絕對位置13722上
SBox7的相關性排序結果是:
1、候選子密鑰46[0x2e],對應相關性為–0.389477849006653,在點絕對位置16195上
2、候選子密鑰16[0x10],對應相關性為–0.330734074115753,在點絕對位置19343上
SBox8的相關性排序結果是:
1、候選子密鑰49[0x31],對應相關性為–0.511115372180939,在點絕對位置18667上
2、候選子密鑰32[0x20],對應相關性為0.317385584115982,在點絕對位置862上
輪密鑰:A9A62FA56BB1
對攻擊結果進行可視化顯示,如圖10所示。
由第2次DES的輪密鑰和第1個密鑰K1,可得到密鑰K2為5555666677778888。連接K1和K2則是3DES完整密鑰K,即11112222333344445555- 666677778888。
本文基于實際的STM32芯片進行了DPA攻擊實驗,成功獲得了3DES加密算法的密鑰。實驗結果表明,芯片存在明顯的電磁輻射信號泄露,DPA攻擊對沒有任何防護的3DES算法存在嚴重的威脅性,這種軟件實現方式并不安全,需要進行一些防護措施。
參考文獻
[1]?Kocher P, Jaffe J, Jun B. Differential Power Analysis[J]. Proc Crypto, 1999, 1666: 388-397.