段曉毅 劉承遠(yuǎn) 李 郵
北京電子科技學(xué)院,北京市 100070
能量分析攻擊針對(duì)智能卡或存儲(chǔ)密鑰的專用嵌入式系統(tǒng)具有顯著效果,嚴(yán)重威脅了此類密碼設(shè)備的安全性。 通過(guò)利用能量分析攻擊方法分析智能卡密碼算法的途徑,來(lái)有效揭示智能卡密碼算法在硬件實(shí)現(xiàn)上的安全性問(wèn)題,從而可以顯著提升智能卡芯片的安全設(shè)計(jì)水平,因此開(kāi)展對(duì)密碼芯片能量分析攻擊方法的研究,對(duì)于實(shí)現(xiàn)信息安全的快速發(fā)展具有重大意義。
能量分析攻擊是側(cè)信道攻擊中最強(qiáng)有力的手段之一,具有實(shí)施設(shè)備簡(jiǎn)單,易于實(shí)現(xiàn)的優(yōu)勢(shì)。能量分析攻擊的原理是密碼芯片在執(zhí)行密碼算法時(shí),所消耗的能量與密鑰之間具有一定的相關(guān)性,即利用密碼芯片工作時(shí)泄漏出來(lái)與密鑰信息相關(guān)的能量信息進(jìn)行攻擊的方法。
1999 年,Paul Kocher 和Joshua Jaffe 等人提出了差分能量分析(Differential Power Analysis,DPA)恢復(fù)出DES(Data Encryption Standard)的密鑰[1]。 2003 年,Chari S[2]等人通過(guò)采集大量能量跡樣本建立統(tǒng)計(jì)信息,利用模板攻擊(Template Attack, TA) 獲取密鑰。 2003 年, Eric Brier[3]等提出了使用相關(guān)功耗分析的方法。
近年來(lái),隨著機(jī)器學(xué)習(xí)的不斷發(fā)展,越來(lái)越多的學(xué)者將機(jī)器學(xué)習(xí)應(yīng)用到功率分析攻擊中。2009 年,Massimo Alioto 等人[4]根據(jù)對(duì)稱算法的特點(diǎn)和處理器的結(jié)構(gòu),設(shè)計(jì)了一種通用的預(yù)充電電路多比特功耗模型。 該模型對(duì)預(yù)充電電路具有較高的精度。 2011 年,Gabrielet 等人首次將機(jī)器學(xué)習(xí)技術(shù)應(yīng)用到側(cè)信道攻擊中,利用具有明顯漢明重量泄漏的數(shù)據(jù)集進(jìn)行功率分析攻擊,利用最小二乘支持向量機(jī)(LS-SVM)[5]成功攻擊了一些高級(jí)加密標(biāo)準(zhǔn)(AES)的軟件實(shí)現(xiàn)。 2013年Oswald 研究發(fā)現(xiàn),通過(guò)對(duì)功耗曲線進(jìn)行線性變換,可以準(zhǔn)確量化線性濾波器對(duì)功率分析攻擊的影響,從而有效選擇最優(yōu)線性濾波器提高攻擊效率[6]。 Satoh R 等人提出了一種新的功率分析攻擊方法,可以用來(lái)提高密碼LSI 的抗性評(píng)估效率,該方法不是在傳統(tǒng)的時(shí)域進(jìn)行功率分析,而是在頻域進(jìn)行功率分析[7]。 2014 年,Kim 等人發(fā)現(xiàn)由于功率消耗曲線中存在噪聲信息,攻擊效率會(huì)降低,他們提出了基于原始數(shù)據(jù)的主成分分析方法,提出了相關(guān)系數(shù)分析的思想,該方法首先尋找原始數(shù)據(jù)的主成分,然后根據(jù)主成分選擇質(zhì)量較好的功耗曲線進(jìn)行功耗分析,該方法的效率高于普通方法[8]。 論文[9]探討了使用機(jī)器學(xué)習(xí)技術(shù)來(lái)執(zhí)行功率分析攻擊和處理高維特征向量。 論文[10]研究了SIMON 和LED 輕量級(jí)分組密碼對(duì)差分功率分析(DPA)攻擊的脆弱性。 2015 年P(guān)ozo 針對(duì)采樣率低影響信號(hào)分析的問(wèn)題,將奇異譜分析(SSA)應(yīng)用于功率分析攻擊,提高信號(hào)的信噪比和攻擊效率[11]。 L Guo等人提出了一種基于SM3 算法[12]的動(dòng)態(tài)密碼令牌差分功率分析攻擊。 2016 年,L Guo 等人提出了一種針對(duì)HMAC-SM3[13]的選擇明文差分功率分析攻擊。 Masoumi 等人提出了一種實(shí)用的高級(jí)加密標(biāo)準(zhǔn)(AES-128)算法的智能卡實(shí)現(xiàn),結(jié)合一種簡(jiǎn)單而有效的屏蔽方案,保護(hù)其免受時(shí)域和頻域的一階功率分析攻擊[14]。 論文[15]提出了一種對(duì)SIMECK 進(jìn)行功率分析攻擊的方法。 2017 年,Eleonora 等人提出了一個(gè)基于卷積神經(jīng)網(wǎng)絡(luò)的端到端攻擊方法對(duì)功率曲線錯(cuò)位的問(wèn)題,可有效實(shí)現(xiàn)對(duì)沒(méi)有提前調(diào)整功率曲線的攻擊[16]。 Chakraborty 等人對(duì)STT-MRAM 加密設(shè)計(jì)使用一個(gè)新的功耗模型,提出了一個(gè)通用的相關(guān)功率分析(Correlation Power Analysis,CPA)攻擊策略[17]。 2018 年,Wiemers A 等人基于對(duì)如何量化剩余熵的理論分析,推導(dǎo)出一種實(shí)用的搜索算法,即使在高噪聲或少量能量曲線的環(huán)境中,也可以成功地恢復(fù)整個(gè)AES 密鑰或顯著降低其熵[18]。 2019 年,Kim 等人[19]介紹了一種使用卷積神經(jīng)網(wǎng)絡(luò)分析側(cè)通道的方法。 論文[20]利用卷積神經(jīng)網(wǎng)絡(luò)(CNN)對(duì)單片機(jī)上的算法實(shí)現(xiàn)進(jìn)行了掩碼和抗干擾攻擊。 2020 年,Cai X 等人提出了差分功率分析攻擊[21]的能量曲線壓縮方法。 在論文[22]中段曉毅等使用數(shù)據(jù)增強(qiáng)技術(shù)解決了機(jī)器學(xué)習(xí)中SBOX 輸出值的漢明重量不平衡問(wèn)題。
本文對(duì)功率分析攻擊及其技術(shù)進(jìn)行了綜述。同時(shí),簡(jiǎn)要介紹了一些針對(duì)智能卡和FPGA 的功率分析攻擊。 針對(duì)未知防御的智能卡,本文采用機(jī)器學(xué)習(xí),建立了密鑰和能量曲線的圖譜,成功實(shí)現(xiàn)了針對(duì)未知防御智能卡的攻擊,通過(guò)訓(xùn)練的模型,能量分析攻擊中每個(gè)字節(jié)的猜測(cè)熵為12.4 次,完全攻擊出8 字節(jié)密鑰僅需要12.48次DES 計(jì)算,比暴力攻擊的1288極大地減小了計(jì)算量。 實(shí)驗(yàn)驗(yàn)證了對(duì)未知防御技術(shù)的智能卡來(lái)說(shuō),攻擊點(diǎn)的不同,會(huì)影響攻擊的成功率。 同時(shí),在保證成功率的前提下,通過(guò)采用機(jī)器學(xué)習(xí)算法進(jìn)行建模,會(huì)很大程度提高攻擊效率。 另外,本文實(shí)驗(yàn)驗(yàn)證了使用機(jī)器學(xué)習(xí)算法進(jìn)行能量分析攻擊時(shí),分類模型的不同,也會(huì)導(dǎo)致攻擊成功率和攻擊效率的不同。 本文通過(guò)機(jī)器學(xué)習(xí)算法對(duì)未知防御技術(shù)的智能卡進(jìn)行攻擊,不僅成功破解密鑰,而且提高了攻擊效率。 最后,本文給出了針對(duì)未知防御技術(shù)的智能卡算法模塊的攻擊思路,如圖1 所示。
圖1 針對(duì)未知防御技術(shù)的智能卡算法模塊的攻擊思路
本文的結(jié)構(gòu)如下,在第2 章中,介紹了數(shù)據(jù)加密標(biāo)準(zhǔn)DES 算法的原理及其S 盒輸出特性。在第3 章,介紹了傳統(tǒng)能量分析攻擊原理、基于機(jī)器學(xué)習(xí)能量分析攻擊原理、結(jié)合DES 算法S盒輸出特性進(jìn)行的模型構(gòu)建和能量分析防御技術(shù)。 第4 章中進(jìn)行了實(shí)驗(yàn)驗(yàn)證及討論。 第5 章進(jìn)行了總結(jié)并對(duì)未來(lái)研究進(jìn)行了展望。
數(shù)據(jù)加密標(biāo)準(zhǔn)DES[23],為對(duì)稱密碼算法。它是1972 年美國(guó)IBM 公司研制的一種分組加密算法。 DES 算法密鑰長(zhǎng)度為64 位,其中56 位參與DES 運(yùn)算,其以64 位(8 字節(jié))為分組對(duì)數(shù)據(jù)進(jìn)行加密。 DES 算法加密流程圖如圖2 所示。
圖2 DES 算法加密流程圖
S 盒是DES 算法的關(guān)鍵步驟,它是DES 算法中唯一的非線性部件,它提供了算法所需要的混亂特性,相比于其他步驟,提供了更好的安全性。 DES 算法共有8 個(gè)S 盒。 輸入n 比特輸出m 比特的S 盒本質(zhì)上可以表示為如公式(1)所示的一個(gè)映射。
2.2.1 DES SBOX 輸出完整字節(jié)特性
如圖2 所示,在每一輪運(yùn)算f 中,經(jīng)初始置換IP 后,明文數(shù)據(jù)被分為左右兩個(gè)32 位的分組,分別用Ln、Rn 表示。 通過(guò)擴(kuò)展置換,數(shù)據(jù)的右半部分Rn 從32 位擴(kuò)展到48 位,與用初始密鑰生成的48 位子密鑰進(jìn)行異或,所得數(shù)值分為8 個(gè)6 位的分組,這8 個(gè)分組分別為8 個(gè)S 盒的輸入值。 DES 的每個(gè)S 盒將6 個(gè)輸入位變成4個(gè)輸出位。 因此,對(duì)于DES 算法來(lái)說(shuō),對(duì)于每一字節(jié)明文輸入,S 盒的輸出值都在[0,15]這一區(qū)間,共有16 種可能值。
2.2.2 DES SBOX 輸出漢明重量特性
漢明重量[24]是指一個(gè)二進(jìn)制數(shù)值中1 的個(gè)數(shù),DES 的每個(gè)S 盒將6 個(gè)輸入位變成4 個(gè)輸出位,所以DES 算法,S 盒輸出的漢明重量值在[0,4]這一區(qū)間,共有5 種可能值,因?yàn)镾 盒輸出的“01”平衡性,會(huì)導(dǎo)致漢明重量的不平衡性,DES SBOX 輸出漢明重量特性符合正態(tài)分布。每字節(jié)明文經(jīng)過(guò)S 盒后,輸出的漢明重量分布及其分布概率如表1 所示。
表1 DES 算法S 盒輸出的漢明重量分布及其分布概率
能量分析攻擊是側(cè)信道攻擊中最強(qiáng)有力的手段之一,具有實(shí)施設(shè)備簡(jiǎn)單,易于實(shí)現(xiàn)的優(yōu)勢(shì)。能量分析攻擊的原理是密碼芯片在執(zhí)行密碼算法時(shí),所消耗的能量與密鑰之間具有一定的相關(guān)性,即利用密碼芯片工作時(shí)泄漏出來(lái)與密鑰信息相關(guān)的能量信息進(jìn)行攻擊的方法。
根據(jù)分析方法不同,傳統(tǒng)能量分析攻擊可以分為簡(jiǎn)單功耗分析SPA(Simple Power Analysis)攻擊、差分功耗分析DPA 攻擊、相關(guān)功耗分析CPA 攻擊等不同攻擊類型[25]。
簡(jiǎn)單功耗分析攻擊[25]是一種通過(guò)觀察密碼芯片加密獲得的功耗曲線的特征,來(lái)猜測(cè)密鑰的攻擊方法。 其攻擊方法簡(jiǎn)單,但受噪聲影響較大,在攻擊過(guò)程中很難區(qū)分真實(shí)的運(yùn)算功耗和噪聲,常常導(dǎo)致攻擊失敗。 因此它常用作為差分功耗分析攻擊等攻擊方法的輔助攻擊方法。 例如,首先通過(guò)SPA 攻擊,確定密碼算法執(zhí)行的時(shí)間區(qū)間,然后通過(guò)其他攻擊方法對(duì)這一時(shí)間段進(jìn)行攻擊。
與簡(jiǎn)單功耗分析攻擊相比,差分功耗分析攻擊[1]是一種更強(qiáng)大的攻擊手段,即使所采集到的功耗曲線中包含大量的噪聲,差分功耗分析攻擊也可以成功地從中恢復(fù)出密鑰。 差分功耗分析攻擊關(guān)注的是所有能量跡在同一時(shí)刻的統(tǒng)計(jì)特性。 其需要采集大量的能量曲線,將采集到的能量曲線照一定的規(guī)則劃分成不同的兩個(gè)集合,然后對(duì)這兩個(gè)集合求平均值,最后對(duì)兩個(gè)均值進(jìn)行差值處理。 利用統(tǒng)計(jì)學(xué)分析方法,找到這些能量曲線與密鑰的相關(guān)性,從而恢復(fù)出密鑰。
使用相關(guān)系數(shù)模型改進(jìn)后的差分能量分析被稱為相關(guān)功耗分析[3]。 其中,相關(guān)功耗分析攻擊采用相關(guān)系數(shù)的統(tǒng)計(jì)學(xué)方法。 該方法首先利用功耗模型對(duì)進(jìn)行攻擊的實(shí)際電路進(jìn)行理論功耗的預(yù)測(cè),然后將實(shí)際的電路功耗與預(yù)測(cè)的理論功耗聯(lián)系起來(lái),得出兩者之間的相關(guān)系數(shù)。 因?yàn)槿绻聹y(cè)的密鑰正確,那么根據(jù)電路功耗模型計(jì)算的理論功耗一定與實(shí)際電路的功耗具有一定的相關(guān)性。 根據(jù)相關(guān)性的大小也就是相關(guān)系數(shù)的大小來(lái)判定密鑰的猜測(cè)是否正確。 圖3 為相關(guān)功耗分析攻擊的數(shù)據(jù)處理流程圖。
圖3 相關(guān)功耗分析攻擊的數(shù)據(jù)處理流程圖
如圖3 所示,相關(guān)功耗分析攻擊分為五個(gè)步驟:
第一步:選擇攻擊點(diǎn)。 計(jì)算密碼算法該攻擊點(diǎn)的中間值X。 中間值X 與輸入的N 個(gè)明文Ii( 1 ≤i ≤N)和K 個(gè)密鑰Kj( 1 ≤j≤K)有關(guān)。如公式(2)所示。
式(2)中,Xij表示當(dāng)輸入明文為Ii( 1 ≤i ≤N),密鑰為Kj( 1 ≤j≤K)時(shí)中間變量的值,f由密碼算法決定。
第二步:輸入N 個(gè)不同的明文,得到N 條能量曲線,每條能量曲線上有W 個(gè)采樣點(diǎn)。 因此,得到一個(gè)N 行W 列的實(shí)際功耗矩陣,用P表示。
第三步:當(dāng)?shù)谝徊竭x擇好攻擊點(diǎn)后,輸入N個(gè)明文和K 個(gè)密鑰。 將所有可能的Kj( 1 ≤j≤K)與輸入的明文Ii( 1 ≤i ≤N)計(jì)算得出中間變量xij。 得到的所有中間變量組成了一個(gè)N 行K 列的矩陣。 根據(jù)選擇的功耗模型,將中間值xij映射成理論功耗hij,所有的理論功耗組成了一個(gè)N 行K 列的矩陣,用H 表示。
第四步:利用相關(guān)系數(shù)方法計(jì)算理論功耗矩陣H 的列(記為hi)與實(shí)際功耗矩陣P 的列(記為pj)的線性相關(guān)程度,并得出正確的密鑰。 這些相關(guān)系數(shù)構(gòu)成了一個(gè)K 行W 列的相關(guān)系數(shù)矩陣R。 相關(guān)系數(shù)計(jì)算方法如公式(7)所示的方法。
能量跡的正確分類依賴于正確的猜測(cè)密鑰,當(dāng)密鑰猜測(cè)正確時(shí),相關(guān)功耗分析攻擊出現(xiàn)一個(gè)尖峰,尖峰出現(xiàn)的采樣點(diǎn),表示中間變量正在被執(zhí)行的時(shí)刻;當(dāng)猜測(cè)密鑰錯(cuò)誤時(shí),相關(guān)功耗分析攻擊不會(huì)出現(xiàn)尖峰。
其中c 類是根據(jù)給定密鑰猜測(cè)k*和輸入的泄漏模型計(jì)算的。
3.2.1 SBOX 輸出漢明重量模型
由于DES 中S 盒的非線性度最高,對(duì)于能量分析攻擊來(lái)說(shuō),選擇S 盒作為攻擊點(diǎn),會(huì)得到更多與算法相關(guān)的信息,因此,能量分析攻擊中,經(jīng)常選用SBOX 輸出值為攻擊點(diǎn),其攻擊對(duì)象如圖4 所示。
圖4 能量分析攻擊點(diǎn)
在能量分析攻擊中,一般使用漢明重量模型來(lái)表示芯片中操作數(shù)據(jù)的功耗模型[26]。 對(duì)于DES 算法來(lái)說(shuō),對(duì)于每一字節(jié)明文輸入,S 輸出的漢明重量值都在[0,4]這一區(qū)間,因此,使用機(jī)器學(xué)習(xí)對(duì)密碼芯片SBOX 輸出值的漢明重量建立標(biāo)簽?zāi)P?,首先?xùn)練出一個(gè)5 分類的模型,然后再進(jìn)行測(cè)試攻擊。
3.2.2 SBOX 輸出完整字節(jié)模型
對(duì)于DES 算法來(lái)說(shuō),對(duì)于每一字節(jié)明文輸入,S 盒的輸出值都在[0,15]這一區(qū)間,并且互不相等。 因此,使用機(jī)器學(xué)習(xí)對(duì)密碼芯片SBOX輸出完整字節(jié)建立標(biāo)簽?zāi)P停紫扔?xùn)練出一個(gè)16 分類的模型,然后再進(jìn)行測(cè)試攻擊。
3.2.3 評(píng)估指標(biāo)
為了評(píng)估不同機(jī)器學(xué)習(xí)模型攻擊效果,本文用兩個(gè)指標(biāo)來(lái)評(píng)估模型的性能,這兩個(gè)指標(biāo)是:猜測(cè)熵和精確度。
猜測(cè)熵是Side Channel Attacks (SCA)[2]中評(píng)估攻擊性能的常用指標(biāo)。 其定義如下:設(shè)g 為每次實(shí)驗(yàn)所有可能密鑰的遞減概率排序,設(shè)I 為定義正確密鑰的索引。 在進(jìn)行s 次實(shí)驗(yàn)時(shí),得到一個(gè)矩陣[g1,g2,...gs] 和相應(yīng)的向量[i1,i2,...is],猜測(cè)熵為確定正確密鑰的平均位置如公式(12)所示:
換句話說(shuō),猜測(cè)熵描述了恢復(fù)實(shí)際密鑰所需的平均猜測(cè)次數(shù)。
機(jī)器學(xué)習(xí)中常用的度量標(biāo)準(zhǔn)是精確度。 定義為分類正確的樣本數(shù)除以所有的樣本數(shù),通常來(lái)說(shuō),正確率越高,分類器越好。 二分類模型其定義如公式(13)所示:
其中,TP、TN、FP、FN 均為混淆矩陣,分別表示為將正類預(yù)測(cè)為正類數(shù)、將負(fù)類預(yù)測(cè)為負(fù)類數(shù)、將負(fù)類預(yù)測(cè)為正類數(shù)誤報(bào)和將正類預(yù)測(cè)為負(fù)類數(shù)漏報(bào)。 二分類混淆矩陣[27]如表2 所示。
表2 混淆矩陣
在使用正確率作為性能度量的同時(shí),用查全率(recall)和查準(zhǔn)率(precision)進(jìn)行評(píng)估,能全面的評(píng)價(jià)模型的性能好壞。
則查準(zhǔn)率P[28]為:
查全率R[28]為:
本文使用機(jī)器學(xué)習(xí)對(duì)DES 算法S 盒輸出漢明重量進(jìn)行攻擊并構(gòu)建模型時(shí),分類結(jié)果就不僅僅包括正類和反類,一共包括五類,分別是漢明重量H0-H4,五種類別都看成正類,把分類正確的樣本數(shù)分別記為T(mén)0,T1…T4,分類錯(cuò)誤的樣本數(shù)記為F01(表示將真實(shí)樣本H0 預(yù)測(cè)為H1),F(xiàn)02(表示將真實(shí)樣本H0 預(yù)測(cè)為H2)…F04,F(xiàn)12…F34。 五分類混淆矩陣[27][29]如表3 所示。
表3 五分類混淆矩陣
每一類的查準(zhǔn)率與查全率可以分別使用公式(16)和公式(17)表示[27][29],其中i∈[0,8]。
當(dāng)建立DES 算法SBOX 輸出完整字節(jié)模型時(shí),SBOX 輸出完整字節(jié)分為16 類,當(dāng)直接對(duì)密鑰進(jìn)行攻擊時(shí),需建立256 種分類,其正確率定義均同上。
能量分析攻擊實(shí)施的依據(jù)是密碼芯片的能量消耗依賴于芯片所執(zhí)行的密碼算法的中間值。因此,如果試圖抵御這種攻擊,就要降低甚至消除這種依賴性。 根據(jù)能量分析攻擊防御技術(shù)是否改變算法的中間值,現(xiàn)有的防御技術(shù)可分為掩碼型防御措施和隱藏型防御措施[30]。
3.3.1 隱藏型防御措施
隱藏型防御措施[30]不會(huì)改變算法的中間值,它的思想是通過(guò)隨機(jī)插入偽操作和隨機(jī)亂序等操作,切斷密碼算法中間值和功耗之間的關(guān)系,這樣即使采用了隱藏技術(shù)的密碼芯片和未加任何保護(hù)的密碼芯片執(zhí)行了同樣的算法操作,產(chǎn)生了同樣的中間值,但是相比未加任何保護(hù)的密碼芯片,采用了隱藏技術(shù)的芯片,攻擊者很難從它的能量曲線中獲得相關(guān)的密鑰信息。
隨機(jī)插入偽操作的基本思想是在密碼執(zhí)行過(guò)程中和芯片執(zhí)行前后隨機(jī)插入操作。 它是根據(jù)在每一次執(zhí)行密碼算法時(shí)生成的隨機(jī)數(shù),來(lái)確定在不同位置插入偽操作的數(shù)量。
隨機(jī)亂序操作的基本思想是,通過(guò)改變某些密碼算法中特定操作的執(zhí)行順序來(lái)引入隨機(jī)性。以DES 為例,其每一輪函數(shù)都需要執(zhí)行8 次S盒查表操作,而且這些查表操作相互獨(dú)立,所以可以打亂這些操作的執(zhí)行順序,即在每一次DES算法執(zhí)行中,需要生成隨機(jī)數(shù)用來(lái)確定8 個(gè)S 盒查表操作的執(zhí)行順序。
3.3.2 掩碼型防御措施
掩碼型防御措施[30]會(huì)改變算法的中間值,它是通過(guò)隨機(jī)化密碼芯片所處理的中間值來(lái)使密碼芯片的能量消耗不依賴于密碼芯片所執(zhí)行的密碼算法的中間值。
掩碼技術(shù)首先生成一個(gè)隨機(jī)數(shù),然后使用隨機(jī)數(shù)對(duì)中間敏感數(shù)據(jù)進(jìn)行掩碼,從而使算法所有的中間數(shù)據(jù)隨機(jī)分布,這樣就去除了算法中間數(shù)據(jù)與密鑰之間的相關(guān)性。 具體操作步驟如公式(18)所示。 即密碼芯片在T1,T2,T3 時(shí)刻分別執(zhí)行了三個(gè)操作:生成隨機(jī)數(shù)即掩碼值r、對(duì)中間值x 進(jìn)行掩碼得到xr,掩碼后的結(jié)果xr與密鑰k 異或得到p。
由于r 是隨機(jī)產(chǎn)生的,因此攻擊者無(wú)法獲得經(jīng)過(guò)掩碼計(jì)算的中間結(jié)果p,也就無(wú)法得到中間結(jié)果與密鑰之間的關(guān)系,從而能夠抵御能量分析攻擊。
針對(duì)未知防御技術(shù)的智能卡算法模塊的攻擊思路如圖1 所示。
首先選擇傳統(tǒng)能量分析攻擊方法CPA 進(jìn)行攻擊,選擇包含更多算法信息的S 盒作為攻擊點(diǎn),選擇準(zhǔn)確率更高的漢明重量模型作為攻擊模型。 倘若攻擊失敗,由3.1 節(jié)相關(guān)系數(shù)分析CPA攻擊原理可知,假設(shè)的密鑰形成的理論功耗矩陣H 和實(shí)際功耗矩陣P 不匹配而導(dǎo)致攻擊失敗,這種現(xiàn)象可能是由于該DES 算法加了防護(hù)措施。
當(dāng)傳統(tǒng)能量分析攻擊沒(méi)有攻擊成功時(shí),本文進(jìn)一步選擇更強(qiáng)大的機(jī)器學(xué)習(xí)與能量分析攻擊相結(jié)合的方式進(jìn)行破解密鑰。 攻擊點(diǎn)仍選擇包含更多算法信息的S 盒作為攻擊點(diǎn),選擇準(zhǔn)確率更高的漢明重量模型作為攻擊模型。 倘若實(shí)驗(yàn)結(jié)果表明,其猜測(cè)熵低于或略等于理論上的平均猜測(cè)熵時(shí),此時(shí)本文認(rèn)為基于該方法進(jìn)行能量分析攻擊,攻擊失敗。 因?yàn)樗墓粜Ч麕缀跖c隨機(jī)猜測(cè)的效果相同,甚至略低于隨機(jī)猜測(cè)的效果,對(duì)提高攻擊效率起不到任何的指導(dǎo)作用。
當(dāng)傳統(tǒng)能量分析攻擊沒(méi)有攻擊成功、且基于SBOX 輸出漢明重量模型的能量分析攻擊也未攻擊成功時(shí),本文采用基于SBOX 輸出完整字節(jié)模型進(jìn)行破解密鑰。 倘若實(shí)驗(yàn)結(jié)果表明,它的攻擊效果幾乎與隨機(jī)猜測(cè)的效果相同,甚至略低于隨機(jī)猜測(cè)的效果,對(duì)提高攻擊效率起不到任何的指導(dǎo)作用。 此時(shí)本文認(rèn)為基于該方法進(jìn)行能量分析攻擊,攻擊失敗。
當(dāng)傳統(tǒng)能量分析攻擊和使用機(jī)器學(xué)習(xí)算法選擇S 盒輸出作為攻擊點(diǎn)均攻擊失敗時(shí),說(shuō)明該智能卡算法模塊已經(jīng)添加了安全防護(hù),如進(jìn)行了掩碼型防御措施和隱藏型防御措施。 此時(shí),本文采用基于密鑰的能量分析攻擊,建立密鑰與功耗曲線的關(guān)系。
本實(shí)驗(yàn)的攻擊對(duì)象為一款未知防御技術(shù)的智能卡,采集智能卡加密時(shí)的能量曲線。 通過(guò)依次采用相關(guān)性功率分析CPA 攻擊、基于SBOX輸出漢明重量模型的能量分析攻擊、基于SBOX輸出完整字節(jié)模型的能量分析攻擊和基于密鑰的能量分析攻擊來(lái)對(duì)該未知防御技術(shù)數(shù)據(jù)集進(jìn)行攻擊并進(jìn)行分析,由于智能卡上DES 算法有防御,所以前三種攻擊均未成功,基于密鑰的能量分析攻擊成功。
針對(duì)智能卡上未知防御技術(shù)的能量分析攻擊,本文首先選用傳統(tǒng)能量分析攻擊中最具代表性的攻擊方法-相關(guān)系數(shù)分析CPA 攻擊。 本實(shí)驗(yàn)的攻擊點(diǎn)為SBOX 輸出值,使用漢明重量作為標(biāo)簽。 本實(shí)驗(yàn)設(shè)定功耗曲線條數(shù)為30000 條,每條能量曲線上特征點(diǎn)為1200。 其實(shí)驗(yàn)結(jié)果如圖5 所示。 由圖5 可知,用該方法進(jìn)行能量分析攻擊時(shí),各特征點(diǎn)的皮爾森相關(guān)系數(shù)均小于0.015,即具有極弱的相關(guān)性或不相關(guān),此時(shí),可認(rèn)定為該攻擊方法無(wú)效,即無(wú)法成功破解密鑰。
圖5 CPA 攻擊結(jié)果
針對(duì)智能卡上未知防御技術(shù)的能量分析攻擊,當(dāng)傳統(tǒng)能量分析攻擊沒(méi)有攻擊成功時(shí),本文使用機(jī)器學(xué)習(xí)與能量分析攻擊相結(jié)合的方式進(jìn)行破解密鑰。 根據(jù)DES 算法特性,對(duì)于每一字節(jié)明文輸入,S 盒輸出的漢明重量值都在[0,4]這一區(qū)間,因此,使用機(jī)器學(xué)習(xí)與漢明重量模型進(jìn)行能量分析攻擊時(shí),首先根據(jù)漢明重量標(biāo)簽,訓(xùn)練出一個(gè)5 分類的模型,然后再進(jìn)行測(cè)試攻擊。 本實(shí)驗(yàn)設(shè)定功耗曲線條數(shù)為50000 條,其中40000 條用來(lái)訓(xùn)練模型,10000 條用來(lái)驗(yàn)證。 本實(shí)驗(yàn)采用機(jī)器學(xué)習(xí)算法卷積神經(jīng)網(wǎng)絡(luò),隨著迭代次數(shù)的增加,損失函數(shù)和精確度的變化如圖6 所示。 由圖6 可知,隨著迭代次數(shù)的增加,損失函數(shù)逐漸下降并穩(wěn)定,精確度逐漸上升穩(wěn)定于0.37。 猜測(cè)熵為2.1986。
圖6 損失函數(shù)和精確度的變化
由表1 可知,DES 算法S 盒輸出的漢明重量分布不均勻,呈正態(tài)分布。 對(duì)16 種可能的SBOX 輸出值,定義漢明重量值和權(quán)重占比的映射關(guān)系為f:(0,1,2,3,4) →(1,4,6,4,1),按照先猜測(cè)概率最大的可能密鑰的原則,依次猜測(cè)漢明重量為2 →1 →4 →0 →5 時(shí),其理論上平均的漢明重量猜測(cè)熵如公式(19)所示。
即對(duì)DES 算法,當(dāng)隨機(jī)猜測(cè)一字節(jié)密鑰時(shí),其理論上平均猜測(cè)熵為2.1875。 而通過(guò)基于SBOX 輸出漢明重量模型的能量分析攻擊,實(shí)驗(yàn)結(jié)果顯示猜測(cè)熵為2.1986,略高于理論上平均猜測(cè)熵為2.1875,此時(shí)本文認(rèn)為基于該方法進(jìn)行能量分析攻擊,攻擊失敗。 因?yàn)樗墓粜Ч麕缀跖c隨機(jī)猜測(cè)的效果相同,甚至略低于隨機(jī)猜測(cè)的效果,對(duì)提高攻擊效率起不到任何的指導(dǎo)作用。
針對(duì)智能卡上未知防御技術(shù)的能量分析攻擊,當(dāng)傳統(tǒng)能量分析攻擊沒(méi)有攻擊成功、且基于SBOX 輸出漢明重量模型的能量分析攻擊也未攻擊成功時(shí),本文采用基于SBOX 輸出完整字節(jié)模型進(jìn)行破解密鑰。 對(duì)于DES 算法來(lái)說(shuō),對(duì)于每一字節(jié)明文輸入,S 盒的輸出值都在[0,15]這一區(qū)間,并且互不相等。 因此,使用機(jī)器學(xué)習(xí)與SBOX 輸出完整字節(jié)模型進(jìn)行能量分析攻擊時(shí),首先根據(jù)S 盒輸出完整字節(jié)標(biāo)簽,訓(xùn)練出一個(gè)16 分類的模型,然后再進(jìn)行測(cè)試攻擊。 本實(shí)驗(yàn)設(shè)定功耗曲線條數(shù)為50000 條,其中40000 條用來(lái)訓(xùn)練模型,10000 條用來(lái)驗(yàn)證。 本實(shí)驗(yàn)采用機(jī)器學(xué)習(xí)算法卷積神經(jīng)網(wǎng)絡(luò),隨著迭代次數(shù)的增加,損失函數(shù)和精確度的變化如圖7 所示。 由圖7 可知,隨著迭代次數(shù)的增加,損失函數(shù)逐漸下降并穩(wěn)定,精確度逐漸上升穩(wěn)定于0.069。 猜測(cè)熵為8.424。
圖7 損失函數(shù)和精確度的變化
由2.2.1 小節(jié),DES 算法SBOX 輸出完整字節(jié)特性可知,DES 算法S 盒的輸出值都在[0,15]這一區(qū)間,共有16 種可能值。 當(dāng)隨機(jī)猜測(cè)一個(gè)字節(jié)密鑰時(shí),其理論上猜測(cè)熵為8.5,其計(jì)算方法如公式(20)所示。
而由實(shí)驗(yàn)結(jié)果可知,基于SBOX 輸出完整字節(jié)模型的能量分析攻擊,猜測(cè)熵為8.424,幾乎與隨機(jī)猜測(cè)一個(gè)字節(jié)密鑰時(shí)的理論猜測(cè)熵相等,即使用該攻擊方法的攻擊效果幾乎與隨機(jī)猜測(cè)的效果相同,對(duì)提高攻擊效率起不到任何的指導(dǎo)作用。 此時(shí)本文認(rèn)為基于該方法進(jìn)行能量分析攻擊,攻擊失敗。
針對(duì)智能卡上未知防御技術(shù)的能量分析攻擊,當(dāng)傳統(tǒng)能量分析攻擊和使用機(jī)器學(xué)習(xí)算法選擇S 盒輸出作為攻擊點(diǎn)均攻擊失敗時(shí),說(shuō)明該智能卡算法模塊已經(jīng)添加了安全防護(hù),如進(jìn)行了掩碼型防御措施和隱藏型防御措施。 此時(shí),本文采用基于密鑰的能量分析攻擊,建立密鑰與功耗曲線的關(guān)系。 當(dāng)破解DES 算法一個(gè)字節(jié)密鑰時(shí),首先使用機(jī)器學(xué)習(xí)算法訓(xùn)練出一個(gè)256 分類的模型,然后再進(jìn)行測(cè)試攻擊。 本實(shí)驗(yàn)采用機(jī)器學(xué)習(xí)算法卷積神經(jīng)網(wǎng)絡(luò),隨著迭代次數(shù)的增加,損失函數(shù)和精確度的變化如圖8 所示。 由圖8 可知,隨著迭代次數(shù)的增加,損失函數(shù)逐漸下降并穩(wěn)定,精確度逐漸上升穩(wěn)定于0.1445。 猜測(cè)熵為12.4792,即平均需要猜測(cè)12.4792 次即可恢復(fù)一個(gè)字節(jié)密鑰。
圖8 損失函數(shù)和精確度的變化
DES 算法以8 字節(jié)為分組對(duì)數(shù)據(jù)進(jìn)行加密,即攻擊時(shí)需要攻擊8 字節(jié)的密鑰,用本文的基于密鑰的能量分析攻擊方法,攻擊8 字節(jié)密鑰僅需12.48次即可攻擊成功,與采取暴力攻擊方法需進(jìn)行1288次攻擊相比,非常大程度地提高了攻擊效率,此時(shí),本文認(rèn)為基于該方法進(jìn)行能量分析攻擊,攻擊成功。
本文針對(duì)未知防御技術(shù)的智能卡密碼算法,研究了使用傳統(tǒng)能量分析攻擊方法CPA 以及機(jī)器學(xué)習(xí)能量攻擊方法。 針對(duì)SBOX 輸出漢明重量、輸出完整字節(jié)進(jìn)行攻擊均失敗,最后使用機(jī)器學(xué)習(xí)對(duì)密鑰進(jìn)行建模并攻擊成功。 攻擊對(duì)于未知防御技術(shù)的智能卡中使用DES 算法的密鑰的猜測(cè)熵為12.4,完成DES 算法中8 個(gè)字節(jié)密鑰的攻擊僅需要12.48次暴力破解,比原來(lái)的1288次有很大提高。