周悅 文毅 楊旭 王秀君 李梅
摘 ?要: 針對基于芯片實(shí)現(xiàn)分組密碼算法的物理泄漏安全問題,本文對軟件實(shí)現(xiàn)3DES算法的STM32芯片進(jìn)行了電磁輻射信號采集,通過差分能量分析攻擊成功獲取了密鑰。實(shí)驗(yàn)選擇3DES算法Sbox輸出作為中間值,在算法的中間值開始運(yùn)算時(shí),通過芯片引腳輸出高電平對示波器進(jìn)行觸發(fā),極大地提高了實(shí)驗(yàn)攻擊效率。一則實(shí)現(xiàn)已采集信號占用最小的存儲資源,最大限度只采集中間值運(yùn)算所對應(yīng)的區(qū)間;二則保證已采集曲線未出現(xiàn)失調(diào),在進(jìn)行曲線處理時(shí)無需進(jìn)行對齊操作;三則保證了已采集的信號的質(zhì)量,極大減少攻擊所需的曲線數(shù)目。實(shí)驗(yàn)表明,僅200條電磁信號曲線就能獲取1次DES運(yùn)算的輪密鑰,同時(shí)反映了芯片存在嚴(yán)重的電磁輻射泄露。
關(guān)鍵詞:?3DES算法;差分能量分析攻擊;漢明重量模型;電磁輻射分析
中圖分類號: TP309. 7????文獻(xiàn)標(biāo)識碼:?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
隨著密碼設(shè)備的普及,人們越來越關(guān)注其安全性,一般會在設(shè)備中嵌入一些密碼算法,DES是最常見的密碼算法之一,其改進(jìn)的3DES算法在很多領(lǐng)域都有應(yīng)用,因此對3DES的研究很有現(xiàn)實(shí)意義。差分能量分析(DPA)攻擊是側(cè)信道攻擊的一種,通過分析密碼設(shè)備的能量消耗從而獲得密鑰。在1999年,Kocher等[1]提出DPA攻擊后,DPA就受到國內(nèi)外學(xué)者的廣泛關(guān)注。
本文在研究DPA理論和3DES加密算法特性的基礎(chǔ)上,對執(zhí)行3DES算法的STM32芯片進(jìn)行DPA攻擊實(shí)驗(yàn)。實(shí)驗(yàn)首先搭建了DPA攻擊測試平臺,基于該平臺設(shè)計(jì)合理的DPA攻擊流程,平臺使用一款特定的側(cè)信道分析軟件對采集到的電磁信號進(jìn)行處理分析。對于3DES算法,選擇了S盒的輸出作為DPA攻擊的目標(biāo),使用漢明重量模型對能量進(jìn)行仿真,最后通過分析相關(guān)系數(shù)來完成實(shí)驗(yàn)。
1.1??能量泄露機(jī)理
密碼設(shè)備需要通過數(shù)字電路來設(shè)計(jì)實(shí)現(xiàn),邏輯元件是構(gòu)建數(shù)字電路的關(guān)鍵,而互補(bǔ)型CMOS是一種實(shí)現(xiàn)邏輯元件常用的邏輯結(jié)構(gòu)。CMOS反相器是最簡單的CMOS元件,反相器的能量消耗分為靜態(tài)、動態(tài)能量消耗兩部分,靜態(tài)能量消耗發(fā)生在元件沒有轉(zhuǎn)換活動的時(shí)候,而動態(tài)能量消耗則發(fā)生在信號發(fā)生轉(zhuǎn)換或者元件的負(fù)載電容需要充電的時(shí)候。通常來說靜態(tài)的消耗值很低,動態(tài)能量消耗是總能量損耗的主要因素,而動態(tài)的能量消耗對CMOS電路中所要進(jìn)行處理的數(shù)據(jù)有依賴性。CMOS反相器由NMOS以及PMOS組成,典型電路結(jié)構(gòu)如圖1所示。
Input表示信號的輸入端,Output表示信號的輸出端。當(dāng)Input發(fā)生1→0轉(zhuǎn)換時(shí),由MOS管的特征可知,此時(shí)NMOS晶體管截止,PMOS晶體管導(dǎo)通,電容CL就處于充電的狀態(tài),從電源處獲取電流;當(dāng)Input發(fā)生0→1轉(zhuǎn)換時(shí),NMOS管將導(dǎo)通,PMOS管則截止,負(fù)載電容CL此時(shí)處于放電狀態(tài),不從電源處獲取電流。若輸出端的信號不發(fā)生轉(zhuǎn)換,則邏輯元件僅僅產(chǎn)生靜態(tài)的能量損耗,而不會產(chǎn)生動態(tài)的能量損耗。
1.2??漢明重量模型
CMOS反相器能量消耗和要處理的數(shù)據(jù)有很大的關(guān)系,對于密碼設(shè)備來說,進(jìn)行處理的數(shù)據(jù)不同,所損耗的能量也就不同。在DPA攻擊中,需要對密碼設(shè)備進(jìn)行能量仿真,也就是說將操作數(shù)映射成為對應(yīng)的能量消耗值。本實(shí)驗(yàn)采用漢明重量模型,假設(shè)能量消耗和設(shè)備器件所要處理的數(shù)據(jù)中被置位的比特個(gè)數(shù)是正比關(guān)系,并且忽略此數(shù)據(jù)前面和后面所處理的數(shù)值。
1.3??攻擊步驟[2]
DPA攻擊的策略一般由以下5個(gè)步驟組成:
(1)選擇算法的某個(gè)中間值,用函數(shù)表示,d通常是明文(或密文),k代表的是密鑰的一部分。滿足這些條件的中間值即可用來恢復(fù)k。
(2)測量能量消耗。記錄大量數(shù)據(jù)值d加密(或解密)時(shí)的能量消耗曲線。數(shù)據(jù)值所對應(yīng)的能量消耗的曲線用來表示,其中T代表著這條能量跡的長度。對于D個(gè)數(shù)據(jù)分組來說,用一個(gè)D×T的矩陣T來代表這些數(shù)據(jù)值的能量跡。
(3)計(jì)算假設(shè)的中間值。對密鑰進(jìn)行假設(shè)猜測,用向量來表示,然后計(jì)算出假設(shè)的中間值,用大小為D×K的矩陣V來表示。設(shè)備執(zhí)行操作時(shí)只使用了K中的一個(gè)值,我們用來表示設(shè)備用到的密鑰,DPA攻擊的目標(biāo)就是找出經(jīng)過D次密碼運(yùn)算矩陣V中被處理的那列,進(jìn)而得到。
(4)將假設(shè)中間值映射成能量消耗值。利用能量模型將已經(jīng)假設(shè)好的中間值V映射成相應(yīng)的能量消耗值矩陣H。我們在實(shí)驗(yàn)中采用的是漢明重量模型[3],通過映射得到,映射的效果越好,DPA攻擊就越成功。
(5)對比分析能量跡以及能量消耗值。比較矩陣H和T相應(yīng)列的值,即比較與。事實(shí)上就是拿假設(shè)的能量消耗來與設(shè)備實(shí)際產(chǎn)生的能量跡進(jìn)行比較,用一個(gè)R矩陣來表示比較的結(jié)果,矩陣的大小是K×T,并且其中的每一元素代表著與的相關(guān)性結(jié)果。計(jì)算相關(guān)系數(shù)如公式(1)所示,得到的值越高,就說明與的匹配性越好。
通過公式(1)可形成多條相關(guān)性曲線,每一條曲線對應(yīng)一個(gè)密鑰假設(shè)。相關(guān)系數(shù)矩陣出現(xiàn)的最大值對應(yīng)正確的密鑰假設(shè),在該曲線上表現(xiàn)為一個(gè)明
顯的尖峰,該尖峰同時(shí)也揭示了對所選擇中間值進(jìn)行處理的位置。
2.13DES算法DPA攻擊原理[4]
DES算法通過使用64位的密鑰對輸入的64位明文進(jìn)行一系列操作,使其輸出為64位的密文。算法包含16輪迭代運(yùn)算,每輪有8個(gè)S盒,S盒的輸出包含有明文和密鑰的信息,因此作為我們DPA攻擊的目標(biāo)[5]。由于DES算法的安全強(qiáng)度不夠,所以才有了安全度更高的3DES。3DES的加密公式(2)如下:
其中P代表明文,E是加密運(yùn)算,D是解密運(yùn)算,本實(shí)驗(yàn)3DES算法采用雙倍長(16字節(jié))密鑰,即密鑰K1與K3相同。
實(shí)驗(yàn)首先對第1次DES加密的第1輪運(yùn)算進(jìn)行DPA攻擊,然后在對第2次加密的第16輪運(yùn)算進(jìn)行攻擊,得出密鑰K1在第1輪和第16輪中使用的輪密鑰后,通過窮舉搜索找到正確的K1。接著再攻擊解密的第1輪運(yùn)算,由已得到的密鑰K1,破解出K2的輪密鑰。
2.2攻擊平臺
DPA攻擊的測量配置通常由密碼設(shè)備、時(shí)鐘信號發(fā)生器、計(jì)算機(jī)(PC)、電磁探頭、數(shù)字示波器等幾部分組件構(gòu)成,測量配置框圖如圖2所示
本文研究DPA攻擊使用的是特制的側(cè)信道攻擊平臺,選擇STM32F103RC的單片機(jī)芯片作為攻擊的對象,采集芯片執(zhí)行3DES算法時(shí)輻射的電磁信號,并在裝有3DES算法分析工具的電腦上進(jìn)行處理。實(shí)驗(yàn)使用140Mhz的低通濾波器進(jìn)行濾波,采樣頻率為1GS/s,整個(gè)3DES算法的采樣點(diǎn)為10MS。PC機(jī)運(yùn)行DPA攻擊腳本,不斷發(fā)送隨機(jī)明文給芯片,然后保存下明文、密文,還有每次加密時(shí)示波器采集的電磁輻射信號。
2.3攻擊結(jié)果
首先在3DES算法源代碼中通過GPIO功能使芯片引腳輸出3路信號,分別對應(yīng)3DES算法第1次DES第1輪的Sbox運(yùn)算、第2次DES第1輪的Sbox運(yùn)算、第3次DES第16輪的Sbox運(yùn)算,如圖3所示。
2.3.1 ?對第1次DES第1輪運(yùn)算進(jìn)行DPA攻擊
以第1次DES第1輪Sbox所對應(yīng)的輸出信號作為示波器的觸發(fā)信號,8個(gè)S盒運(yùn)算對應(yīng)8個(gè)觸發(fā)信號。采集200條電磁輻射曲線,如圖4所示。
從已采集的200條曲線中任選3條進(jìn)行顯示,如圖5所示,可知曲線已經(jīng)嚴(yán)格對齊,進(jìn)行曲線處理時(shí),無需進(jìn)行對齊操作。
以此200條電磁曲線,選擇S盒輸出的漢明重量進(jìn)行DPA攻擊,基于相關(guān)系數(shù)的攻擊結(jié)果如下:
SBox1的相關(guān)性排序結(jié)果是:
1、候選子密鑰0[0x00],對應(yīng)相關(guān)性為–0.65709912776947,在點(diǎn)絕對位置1582上
2、候選子密鑰31[0x1f],對應(yīng)相關(guān)性為0.392379492521286,在點(diǎn)絕對位置1582上
SBox2的相關(guān)性排序結(jié)果是:
1、候選子密鑰2[0x02],對應(yīng)相關(guān)性為–0.496553242206573,在點(diǎn)絕對位置4068上
2、候選子密鑰34[0x22],對應(yīng)相關(guān)性為–0.321006268262863,在點(diǎn)絕對位置6228上
SBox3的相關(guān)性排序結(jié)果是:
1、候選子密鑰19[0x13],對應(yīng)相關(guān)性為–0.536363363265991,在點(diǎn)絕對位置6555上
2、候選子密鑰9[0x09],對應(yīng)相關(guān)性為0.36610472202301,在點(diǎn)絕對位置17955上
SBox4的相關(guān)性排序結(jié)果是:
1、候選子密鑰12[0x0c],對應(yīng)相關(guān)性為–0.534933149814606,在點(diǎn)絕對位置9042上
2、候選子密鑰28[0x1c],對應(yīng)相關(guān)性為0.398669868707657,在點(diǎn)絕對位置9042上
SBox5的相關(guān)性排序結(jié)果是:
1、候選子密鑰13[0x0d],對應(yīng)相關(guān)性為–0.514000236988068,在點(diǎn)絕對位置11528上
2、候選子密鑰7[0x07],對應(yīng)相關(guān)性為–0.392057627439499,在點(diǎn)絕對位置16291上
SBox6的相關(guān)性排序結(jié)果是:
1、候選子密鑰34[0x22],對應(yīng)相關(guān)性為–0.624307572841644,在點(diǎn)絕對位置14014上
2、候選子密鑰31[0x1f],對應(yīng)相關(guān)性為0.469585478305817,在點(diǎn)絕對位置14014上
SBox7的相關(guān)性排序結(jié)果是:
1、候選子密鑰0[0x00],對應(yīng)相關(guān)性為–0.403402060270309,在點(diǎn)絕對位置16501上
2、候選子密鑰2[0x02],對應(yīng)相關(guān)性為–0.360525220632553,在點(diǎn)絕對位置16496上
SBox8的相關(guān)性排序結(jié)果是:
1、候選子密鑰5[0x05],對應(yīng)相關(guān)性為–0.385684728622437,在點(diǎn)絕對位置18987上
2、候選子密鑰59[0x3b],對應(yīng)相關(guān)性為0.345604658126831,在點(diǎn)絕對位置11992上
輪密鑰:0024CC362005
對攻擊結(jié)果進(jìn)行可視化顯示,8個(gè)可視化圖對應(yīng)8個(gè)Sbox攻擊結(jié)果,如圖6所示。
通過觀察可知,圖中顯示最高的尖峰,對應(yīng)正確密鑰索引以及對中間值Sbox查表操作進(jìn)行處理的位置。由于STM32芯片3DES加密算法由軟件實(shí)現(xiàn),8個(gè)Sbox查表操作順序執(zhí)行,一個(gè)Sbox查表操作完成后再執(zhí)行下一個(gè)。
2.3.2 ?對第3次DES第16輪運(yùn)算進(jìn)行DPA攻擊
以第3次DES第16輪Sbox所對應(yīng)的輸出信號作為示波器的觸發(fā)信號,采集200條電磁輻射曲線,如圖7所示。
對采集的200條電磁信號原始曲線,選擇S盒輸出的漢明重量進(jìn)行DPA攻擊,基于相關(guān)系數(shù)的攻擊結(jié)果如下:
SBox1的相關(guān)性排序結(jié)果是:
1、候選子密鑰0[0x00],對應(yīng)相關(guān)性為–0.642539024353027,在點(diǎn)絕對位置1151上
2、候選子密鑰58[0x3a],對應(yīng)相關(guān)性為–0.352906137704849,在點(diǎn)絕對位置1151上
SBox2的相關(guān)性排序結(jié)果是:
1、候選子密鑰19[0x13],對應(yīng)相關(guān)性為–0.585478901863098,在點(diǎn)絕對位置3651上
2、候選子密鑰30[0x1e],對應(yīng)相關(guān)性為–0.305856138467789,在點(diǎn)絕對位置8758上
SBox3的相關(guān)性排序結(jié)果是:
1、候選子密鑰16[0x10],對應(yīng)相關(guān)性為–0.474530726671219,在點(diǎn)絕對位置6152上
2、候選子密鑰31[0x1f],對應(yīng)相關(guān)性為–0.366014689207077,在點(diǎn)絕對位置6152上
SBox4的相關(guān)性排序結(jié)果是:
1、候選子密鑰12[0x0c],對應(yīng)相關(guān)性為–0.527862429618835,在點(diǎn)絕對位置8652上
2、候選子密鑰20[0x14],對應(yīng)相關(guān)性為0.390225887298584,在點(diǎn)絕對位置16923上
SBox5的相關(guān)性排序結(jié)果是:
1、候選子密鑰13[0x0d],對應(yīng)相關(guān)性為–0.535461604595184,在點(diǎn)絕對位置11153上
2、候選子密鑰44[0x2c],對應(yīng)相關(guān)性為0.342443287372589,在點(diǎn)絕對位置1321上
SBox6的相關(guān)性排序結(jié)果是:
1、候選子密鑰2[0x02],對應(yīng)相關(guān)性為–0.513921439647675,在點(diǎn)絕對位置13653上
2、候選子密鑰15[0x0f],對應(yīng)相關(guān)性為0.349797010421753,在點(diǎn)絕對位置9491上
SBox7的相關(guān)性排序結(jié)果是:
1、候選子密鑰6[0x06],對應(yīng)相關(guān)性為–0.448327392339706,在點(diǎn)絕對位置16153上
2、候選子密鑰56[0x38],對應(yīng)相關(guān)性為–0.33991950750351,在點(diǎn)絕對位置2015上
SBox8的相關(guān)性排序結(jié)果是:
1、候選子密鑰1[0x01],對應(yīng)相關(guān)性為–0.504002630710602,在點(diǎn)絕對位置18653上
2、候選子密鑰2[0x02],對應(yīng)相關(guān)性為–0.319470077753067,在點(diǎn)絕對位置4347上
輪密鑰:01340C342181
攻擊結(jié)果進(jìn)行可視化顯示,如圖8所示。
通過對第1次DES和第3次DES攻擊,得到第1個(gè)密鑰k1為1111222233334444。
2.3.3??對第2次DES第1輪運(yùn)算進(jìn)行DPA攻擊
以第2次DES第1輪Sbox所對應(yīng)的輸出信號作為示波器的觸發(fā)信號,采集200條電磁輻射曲線,如圖9所示。
進(jìn)行第2次DES攻擊時(shí),將第1個(gè)密鑰帶入。選擇S盒輸出的漢明重量進(jìn)行DPA攻擊,基于相關(guān)系數(shù)的攻擊結(jié)果如下:
SBox1的相關(guān)性排序結(jié)果是:
1、候選子密鑰42[0x2a],對應(yīng)相關(guān)性為–0.629880964756012,在點(diǎn)絕對位置1360上
2、候選子密鑰33[0x21],對應(yīng)相關(guān)性為0.439686805009842,在點(diǎn)絕對位置1360上
SBox2的相關(guān)性排序結(jié)果是:
1、候選子密鑰26[0x1a],對應(yīng)相關(guān)性為–0.643305003643036,在點(diǎn)絕對位置3832上
2、候選子密鑰59[0x3b],對應(yīng)相關(guān)性為0.343240588903427,在點(diǎn)絕對位置9026上
SBox3的相關(guān)性排序結(jié)果是:
1、候選子密鑰24[0x18],對應(yīng)相關(guān)性為–0.462969660758972,在點(diǎn)絕對位置6305上
2、候選子密鑰47[0x2f],對應(yīng)相關(guān)性為–0.312610268592834,在點(diǎn)絕對位置11791上
SBox4的相關(guān)性排序結(jié)果是:
1、候選子密鑰47[0x2f],對應(yīng)相關(guān)性為–0.512154519557953,在點(diǎn)絕對位置8777上
2、候選子密鑰7[0x07],對應(yīng)相關(guān)性為–0.397135555744171,在點(diǎn)絕對位置8777上
SBox5的相關(guān)性排序結(jié)果是:
1、候選子密鑰41[0x29],對應(yīng)相關(guān)性為–0.642742931842804,在點(diǎn)絕對位置11250上
2、候選子密鑰15[0x0f],對應(yīng)相關(guān)性為–0.454308360815048,在點(diǎn)絕對位置11250上
SBox6的相關(guān)性排序結(jié)果是:
1、候選子密鑰22[0x16],對應(yīng)相關(guān)性為–0.580213785171509,在點(diǎn)絕對位置13722上
2、候選子密鑰43[0x2b],對應(yīng)相關(guān)性為0.398896187543869,在點(diǎn)絕對位置13722上
SBox7的相關(guān)性排序結(jié)果是:
1、候選子密鑰46[0x2e],對應(yīng)相關(guān)性為–0.389477849006653,在點(diǎn)絕對位置16195上
2、候選子密鑰16[0x10],對應(yīng)相關(guān)性為–0.330734074115753,在點(diǎn)絕對位置19343上
SBox8的相關(guān)性排序結(jié)果是:
1、候選子密鑰49[0x31],對應(yīng)相關(guān)性為–0.511115372180939,在點(diǎn)絕對位置18667上
2、候選子密鑰32[0x20],對應(yīng)相關(guān)性為0.317385584115982,在點(diǎn)絕對位置862上
輪密鑰:A9A62FA56BB1
對攻擊結(jié)果進(jìn)行可視化顯示,如圖10所示。
由第2次DES的輪密鑰和第1個(gè)密鑰K1,可得到密鑰K2為5555666677778888。連接K1和K2則是3DES完整密鑰K,即11112222333344445555- 666677778888。
本文基于實(shí)際的STM32芯片進(jìn)行了DPA攻擊實(shí)驗(yàn),成功獲得了3DES加密算法的密鑰。實(shí)驗(yàn)結(jié)果表明,芯片存在明顯的電磁輻射信號泄露,DPA攻擊對沒有任何防護(hù)的3DES算法存在嚴(yán)重的威脅性,這種軟件實(shí)現(xiàn)方式并不安全,需要進(jìn)行一些防護(hù)措施。
參考文獻(xiàn)
[1]?Kocher P, Jaffe J, Jun B. Differential Power Analysis[J]. Proc Crypto, 1999, 1666: 388-397.