張潤(rùn)蓮 潘兆軒 李金林 武小年 韋永壯
(密碼學(xué)與信息安全重點(diǎn)實(shí)驗(yàn)室(桂林電子科技大學(xué)) 廣西桂林 541004)
(zhangrl@guet.edu.cn)
側(cè)信道攻擊通過(guò)對(duì)密碼算法在設(shè)備實(shí)際運(yùn)行過(guò)程中泄露的物理信息(如時(shí)間信息、能量信息、電磁信息)進(jìn)行采集和分析,從而恢復(fù)密鑰信息[1]. 側(cè)信道攻擊實(shí)用性強(qiáng)且破壞性大,嚴(yán)重威脅著密碼設(shè)備的安全,是近年來(lái)密碼分析的一個(gè)研究熱點(diǎn). 隨著密碼設(shè)備功能的完善以及新防護(hù)手段的應(yīng)用,傳統(tǒng)側(cè)信道攻擊的效率和成功率越來(lái)越低. 為提高側(cè)信道攻擊的效率和成功率,深度學(xué)習(xí)被引入側(cè)信道攻擊.
深度學(xué)習(xí)具有學(xué)習(xí)能力強(qiáng)、覆蓋范圍廣、適應(yīng)性好等優(yōu)點(diǎn). 基于密碼設(shè)備運(yùn)行過(guò)程中采集的數(shù)據(jù),深度學(xué)習(xí)可以在一定程度上學(xué)習(xí)和提取密碼算法在設(shè)備中進(jìn)行數(shù)據(jù)加密時(shí)的特征信息,實(shí)現(xiàn)對(duì)密碼算法的密鑰恢復(fù)[2-4]. 2016 年,Maghrebi 等人[5]將深度學(xué)習(xí)用于AES(advanced encryption standard)算法在無(wú)掩碼和有掩碼情況下的攻擊,證明基于深度學(xué)習(xí)的側(cè)信道攻擊具有更好的攻擊效果. 2017 年,Cagli 等人[6]基于卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)在不需要對(duì)能量跡對(duì)齊和精確特征點(diǎn)提取的情況下的攻擊. 2020 年,Benadjila 等人[7]提出基于ASCAD 數(shù)據(jù)集的最優(yōu)神經(jīng)網(wǎng)絡(luò)模型,并通過(guò)實(shí)驗(yàn)證明神經(jīng)網(wǎng)絡(luò)模型的攻擊效果優(yōu)于被優(yōu)化的模板攻擊;Wang 等人[8]提出基于聯(lián)邦學(xué)習(xí)的側(cè)信道攻擊,使用9 個(gè)同型號(hào)的不同設(shè)備采集數(shù)據(jù)進(jìn)行聯(lián)合訓(xùn)練,并成功完成攻擊;Perin 等人[9]分析了基于深度學(xué)習(xí)的側(cè)信道分析模型的泛化能力并以集成技術(shù)增強(qiáng)模型的攻擊能力. 2021 年,Won 等人[10]提出將1 維數(shù)據(jù)的原始能量跡的測(cè)量值轉(zhuǎn)化為具有數(shù)據(jù)位置信息的2 維數(shù)據(jù),改進(jìn)了基于深度學(xué)習(xí)的側(cè)信道分析;Zaid 等人[11]則為了減少深度學(xué)習(xí)衡量指標(biāo)與側(cè)信道評(píng)估指標(biāo)的差異,提出一種排名損失函數(shù)并論證了成功攻擊所需的能量跡上界.
基于深度學(xué)習(xí)的側(cè)信道分析,目前普遍的方法是針對(duì)采集的能量跡,基于每個(gè)密鑰字節(jié)對(duì)應(yīng)的泄露數(shù)據(jù)建模,再恢復(fù)該密鑰字節(jié). 例如,針對(duì)AES-128 算法,基于深度學(xué)習(xí)的側(cè)信道分析將128 b 密鑰以每組8 b 劃分為16 個(gè)密鑰字節(jié),為了恢復(fù)16 個(gè)正確密鑰需要分別對(duì)每個(gè)密鑰字節(jié)建模再進(jìn)行恢復(fù)[12].深度學(xué)習(xí)高度依賴(lài)數(shù)據(jù),數(shù)據(jù)量越大,其學(xué)習(xí)效果越好. 因此,為提高攻擊的準(zhǔn)確率,上述方式需要采集大量數(shù)據(jù)且單獨(dú)訓(xùn)練16 個(gè)模型,效率較低. 而對(duì)側(cè)信道攻擊來(lái)說(shuō),數(shù)據(jù)采集由于外部因素的限制,攻擊者可能無(wú)法采集到足夠的數(shù)據(jù),而數(shù)據(jù)不足會(huì)嚴(yán)重影響神經(jīng)網(wǎng)絡(luò)的訓(xùn)練效果. 如何在數(shù)據(jù)采集要求無(wú)法被滿(mǎn)足的情況下,提高深度學(xué)習(xí)側(cè)信道攻擊的效率和準(zhǔn)確率,成為開(kāi)展深度學(xué)習(xí)側(cè)信道攻擊的關(guān)鍵. 針對(duì)該問(wèn)題,數(shù)據(jù)增強(qiáng)技術(shù)被使用. 2020 年,王愷等人[12]通過(guò)對(duì)原始功耗曲線(xiàn)增加抖動(dòng)和高斯噪聲實(shí)現(xiàn)數(shù)據(jù)增強(qiáng),并將增強(qiáng)后的數(shù)據(jù)用于殘差網(wǎng)絡(luò)訓(xùn)練實(shí)現(xiàn)密鑰恢復(fù);同年,Wang 等人[13]將條件生成對(duì)抗網(wǎng)絡(luò)(conditional generative adversarial network,CGAN)用于側(cè)信道領(lǐng)域,通過(guò)條件生成對(duì)抗網(wǎng)絡(luò)生成新的數(shù)據(jù)集進(jìn)行訓(xùn)練數(shù)據(jù)集的擴(kuò)充,從而提高能量跡不足情況下的攻擊效率. 2021 年,Luo 等人[14]和Karim 等人[15]運(yùn)用Mixup技術(shù)[16]生成能量跡,增加模型攻擊效果.然而,數(shù)據(jù)增強(qiáng)方法需要先訓(xùn)練網(wǎng)絡(luò)生成所需能量跡,增加了側(cè)信道攻擊中數(shù)據(jù)訓(xùn)練的復(fù)雜性.
針對(duì)上述問(wèn)題,提出一種基于多源數(shù)據(jù)聚合的神經(jīng)網(wǎng)絡(luò)側(cè)信道攻擊方法,以AES-128 算法為攻擊對(duì)象,先基于16 個(gè)密鑰字節(jié)的泄露數(shù)據(jù)訓(xùn)練16 個(gè)模型,并分別實(shí)現(xiàn)對(duì)相應(yīng)16 個(gè)密鑰字節(jié)的恢復(fù);進(jìn)一步以每個(gè)模型分別恢復(fù)其他的密鑰字節(jié),了解每個(gè)模型在特征學(xué)習(xí)過(guò)程中的泛化效果;針對(duì)每個(gè)模型對(duì)所有密鑰字節(jié)的攻擊效果打分并排序,篩選出對(duì)所有密鑰字節(jié)攻擊效果好的模型所對(duì)應(yīng)的泄露數(shù)據(jù),構(gòu)建和訓(xùn)練一個(gè)基于多密鑰字節(jié)泄露數(shù)據(jù)的多源數(shù)據(jù)聚合模型,再恢復(fù)所有的密鑰字節(jié). 實(shí)驗(yàn)結(jié)果表明,該方法在較少能量跡情況下不需要數(shù)據(jù)增強(qiáng)處理也能夠提高側(cè)信道攻擊的準(zhǔn)確率,降低了模型訓(xùn)練的開(kāi)銷(xiāo),減少了成功恢復(fù)密鑰所需要的能量跡數(shù)量.
多層感知器(multi-layer perceptron, MLP)是一種由多個(gè)感知器單元組成的神經(jīng)網(wǎng)絡(luò),包括輸入層、輸出層和1 個(gè)或多個(gè)隱藏層,每一層包含1 個(gè)或多個(gè)感知器單元,每一層的所有感知器與下一層的所有感知器進(jìn)行全連接,MLP 的結(jié)構(gòu)如圖1 所示.
Fig.1 The structure of MLP圖1 MLP 結(jié)構(gòu)
MLP 網(wǎng)絡(luò)模型的核心思想是通過(guò)前向傳播得到誤差,再把誤差通過(guò)反向傳播實(shí)現(xiàn)權(quán)重的修正,最終得到最優(yōu)模型. 在反向傳播過(guò)程中通常使用隨機(jī)梯度下降法對(duì)權(quán)重值進(jìn)行修正,梯度下降法的原理是計(jì)算損失函數(shù)關(guān)于所有內(nèi)部變量的梯度,并進(jìn)行反向傳播.
目前采用神經(jīng)網(wǎng)絡(luò)針對(duì)AES 算法的側(cè)信道分析,主要利用采集的能量跡分別為每一個(gè)密鑰字節(jié)在第1 輪S 盒處的泄露點(diǎn)進(jìn)行建模,再恢復(fù)該密鑰字節(jié),如對(duì)AES-128 算法需要建立和訓(xùn)練16 個(gè)模型. 這種方法需要采集大量的數(shù)據(jù)進(jìn)行訓(xùn)練,能量跡采集和訓(xùn)練開(kāi)銷(xiāo)大、效率低;若采集的能量跡不足,會(huì)導(dǎo)致模型的準(zhǔn)確率低. 針對(duì)上述問(wèn)題,提出基于多源數(shù)據(jù)聚合的模型構(gòu)建方法,針對(duì)AES-128 算法篩選出對(duì)各個(gè)密鑰字節(jié)攻擊效果較好的數(shù)據(jù)集建立多源數(shù)據(jù)聚合模型,再進(jìn)行密鑰恢復(fù).
在AES-128 算法加密過(guò)程中,16 個(gè)密鑰字節(jié)加密明文的操作是一個(gè)時(shí)序操作,所有的泄露都在采集的一條能量跡中. 在整個(gè)時(shí)序中,由于每個(gè)密鑰字節(jié)在加密不同明文時(shí)所泄露的能量信息具有相同特征,因此在采用深度學(xué)習(xí)方法進(jìn)行側(cè)信道分析時(shí),通常是對(duì)單個(gè)密鑰字節(jié)的泄露數(shù)據(jù)建模,在攻擊階段根據(jù)訓(xùn)練結(jié)果恢復(fù)出對(duì)應(yīng)字節(jié)的密鑰.
在傳統(tǒng)側(cè)信道攻擊中,通常使用能量消耗模型模擬真實(shí)情況下泄露的能量消耗. 能量消耗模型有不同的精度級(jí)別,一般而言,精度越高的模型攻擊效果越好,但所需要的資源也越多. 漢明重量模型是攻擊者刻畫(huà)總線(xiàn)與寄存器能量消耗常用的能量消耗模型,它的基本原理是假設(shè)能量消耗與寄存器中存儲(chǔ)數(shù)據(jù)比特1 的數(shù)目成正比. 而密碼設(shè)備S 盒置換的非線(xiàn)性操作在寄存器中引發(fā)的能量變化較為突出,因此主要針對(duì)S 盒的輸出通過(guò)能量消耗模型尋找相關(guān)特征.
能量跡的特征依賴(lài)于密鑰與明文,理論上針對(duì)單密鑰字節(jié)所建立的模型并以其恢復(fù)對(duì)應(yīng)密鑰字節(jié)的效果是最佳的. 模型的建立需要先對(duì)采用的數(shù)據(jù)集進(jìn)行數(shù)據(jù)處理,即完成數(shù)據(jù)標(biāo)簽. 數(shù)據(jù)的標(biāo)簽實(shí)際上是將每條能量跡的特征通過(guò)能量消耗模型重新刻畫(huà),即將每條能量跡的分類(lèi)類(lèi)別由明文和密鑰轉(zhuǎn)化為標(biāo)簽值函數(shù)計(jì)算后的標(biāo)簽值. 假設(shè)一條能量跡中某S 盒泄露點(diǎn)x的明文數(shù)據(jù)為p,該單密鑰字節(jié)為k,假設(shè)采用漢明重量函數(shù)HW( )計(jì)算,則標(biāo)簽值z(mì)計(jì)算方法為
對(duì)于其他能量跡,同樣在該泄露位置x計(jì)算對(duì)應(yīng)的標(biāo)簽值z(mì),完成對(duì)所有能量跡在泄露點(diǎn)x的標(biāo)簽. 采用同樣的方法,繼續(xù)針對(duì)所有能量跡的其他泄露點(diǎn)完成數(shù)據(jù)標(biāo)簽. 以所有能量跡在某個(gè)泄露點(diǎn)標(biāo)簽后的數(shù)據(jù),訓(xùn)練建立一個(gè)單密鑰字節(jié)模型,并以該模型恢復(fù)該泄露點(diǎn)對(duì)應(yīng)的密鑰字節(jié).
AES-128 算法中,使用了16 個(gè)S 盒,但這16 個(gè)S盒的真值表是相同的. 這使得基于這16 個(gè)S 盒進(jìn)行運(yùn)算后的數(shù)據(jù)間可能存在一定的關(guān)聯(lián)性,即所采集的能量跡不同泄露點(diǎn)的數(shù)據(jù)可能會(huì)表現(xiàn)出相似的特征. 對(duì)能量跡的標(biāo)簽計(jì)算,也會(huì)將這些相似特征表現(xiàn)出來(lái),即在對(duì)這些能量跡進(jìn)行標(biāo)簽時(shí),通過(guò)標(biāo)簽值函數(shù)f(p,k)標(biāo)簽,不同泄露點(diǎn)的標(biāo)簽結(jié)果也可能會(huì)被歸于同一類(lèi). 基于這種特征,以某個(gè)泄露點(diǎn)訓(xùn)練的模型,若能夠有效恢復(fù)出其他泄露點(diǎn)對(duì)應(yīng)的密鑰字節(jié),則可以有效降低能量跡采集和模型訓(xùn)練的開(kāi)銷(xiāo).
為評(píng)估以某個(gè)泄露點(diǎn)訓(xùn)練的模型恢復(fù)其他泄露點(diǎn)對(duì)應(yīng)密鑰字節(jié),針對(duì)AES-128 算法,先采集算法運(yùn)行時(shí)的能量跡,再將其劃分為16 個(gè)密鑰字節(jié)的泄露數(shù)據(jù)集,進(jìn)行數(shù)據(jù)標(biāo)簽處理,以這16 個(gè)密鑰字節(jié)的數(shù)據(jù)集分別訓(xùn)練出16 個(gè)模型. 進(jìn)一步地,利用這16個(gè)模型,先分別恢復(fù)該泄露數(shù)據(jù)集對(duì)應(yīng)的密鑰字節(jié),再分別去恢復(fù)其他密鑰字節(jié).
采用Benadjila 等人[7]于2020 年對(duì)ASCAD 數(shù)據(jù)集提出的MLP-best 模型建立MLP 神經(jīng)網(wǎng)絡(luò)模型,MLP 模型一共有6 層,第1 層為輸入層,其是大小為96 的1 維向量,輸入層神經(jīng)元數(shù)對(duì)應(yīng)單個(gè)密鑰字節(jié)在S 盒操作處的96 個(gè)能量采樣點(diǎn)數(shù)據(jù). 中間4 層為隱藏層,每層隱藏層都有200 個(gè)神經(jīng)元;為了在快速收斂的同時(shí)避免梯度消失并提高網(wǎng)絡(luò)的精度,激活函數(shù)采用RELU 函數(shù). 最后一層是輸出層,其大小與實(shí)驗(yàn)選擇的能量消耗模型有關(guān). ASCAD 公開(kāi)數(shù)據(jù)集只提供第3 個(gè)S 盒處的泄露數(shù)據(jù),本文方法需分析AES 算法的16 個(gè)S 盒的所有泄露數(shù)據(jù),在此選用提供了全部字節(jié)泄露的DPAContest_V4 數(shù)據(jù)集. MLPbest 在ASCAD 數(shù)據(jù)集上有局部最優(yōu)效果,但并不適用于采用RSM(rotating S-box masking)掩碼方案[17]的DPAContest_V4 數(shù)據(jù)集[18]. 針對(duì)DPAContest_V4 數(shù)據(jù)集,構(gòu)造新的標(biāo)簽值函數(shù)計(jì)算標(biāo)簽值:
將標(biāo)簽值f′(p,k)作為不同明文對(duì)應(yīng)能量跡的標(biāo)簽值時(shí),根據(jù)AES 的S 盒輸入異或輸出共163 種異或結(jié)果,因此輸出層設(shè)置為163 個(gè)神經(jīng)元,對(duì)應(yīng)163種不同標(biāo)簽值的分類(lèi)結(jié)果. 為提高分類(lèi)的準(zhǔn)確率,輸出層的激活函數(shù)選擇適用于多分類(lèi)場(chǎng)景下的Softmax 函數(shù),以將輸出映射為各個(gè)類(lèi)別的分類(lèi)概率.
基于上述建立的模型,利用AES-128 算法16 個(gè)密鑰字節(jié)的標(biāo)簽好的數(shù)據(jù)集訓(xùn)練出16 個(gè)模型,分別命名為Mi(i=1,2,…,16). 為區(qū)分不同密鑰字節(jié)的標(biāo)簽數(shù)據(jù)集,以Sj(j=1,2,…,16)表示依據(jù)S 盒操作順序并完成標(biāo)簽的數(shù)據(jù)集. DPAContest_V4 數(shù)據(jù)集中每個(gè)數(shù)據(jù)集Sj分別有10 000 條能量跡,從中隨機(jī)抽取8 000條作為訓(xùn)練集訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型Mi,剩下的2 000 條作為測(cè)試集用以恢復(fù)對(duì)應(yīng)密鑰字節(jié). 為保證效果一致,在每個(gè)模型訓(xùn)練過(guò)程中統(tǒng)一設(shè)置相關(guān)參數(shù):訓(xùn)練的epoch=300,batchsize=100,學(xué)習(xí)率設(shè)為0.000 01,優(yōu)化器使用RMSprop,使用交叉熵?fù)p失函數(shù).
基于上述建立的16 個(gè)模型,利用相應(yīng)的測(cè)試集數(shù)據(jù)分別去恢復(fù)16 個(gè)密鑰字節(jié),各個(gè)模型恢復(fù)對(duì)應(yīng)密鑰字節(jié)所用的最少能量跡數(shù)如表1 所示.
Table 1 Minimum Number of Traces for Sixteen Models Recovering the Corresponding Key Byte表1 16 個(gè)模型恢復(fù)對(duì)應(yīng)密鑰字節(jié)的最少能量跡數(shù)
進(jìn)一步地,為評(píng)估以某個(gè)泄露點(diǎn)訓(xùn)練的模型是否能夠恢復(fù)其他泄露點(diǎn)對(duì)應(yīng)密鑰字節(jié),基于同樣的實(shí)驗(yàn)環(huán)境,利用這16 個(gè)模型中的每一個(gè)模型,分別以每個(gè)密鑰字節(jié)對(duì)應(yīng)的測(cè)試集數(shù)據(jù)去恢復(fù)相應(yīng)的密鑰字節(jié),各模型完成對(duì)各密鑰字節(jié)恢復(fù)的最少能量跡數(shù)如表2 所示.
Table 2 Number of Traces for Sixteen Models Recovering Sixteen Key Bytes表2 16 個(gè)模型恢復(fù)16 個(gè)密鑰字節(jié)的能量跡數(shù)
表2 中,每一行的數(shù)值表示第i個(gè)模型Mi恢復(fù)不同密鑰字節(jié)的最少能量跡數(shù). 從表2 中可以看出,以某個(gè)泄露點(diǎn)對(duì)應(yīng)的密鑰字節(jié)數(shù)據(jù)建立的模型,在恢復(fù)該泄露點(diǎn)對(duì)應(yīng)的密鑰字節(jié)時(shí),除M10外都具有最佳效果;而以某個(gè)模型去恢復(fù)其他密鑰字節(jié)時(shí),也都可以恢復(fù),只是需要使用更多的能量跡數(shù)量.
表2 結(jié)果表明,基于神經(jīng)網(wǎng)絡(luò)進(jìn)行單密鑰字節(jié)模型訓(xùn)練時(shí),由于AES 算法中S 盒特性,密鑰泄露數(shù)據(jù)集之間存在可能相似的特征,每個(gè)模型可以一定程度上學(xué)習(xí)到其他密鑰字節(jié)的泛化特征,能夠恢復(fù)出其他泄露點(diǎn)對(duì)應(yīng)的密鑰字節(jié). 在因運(yùn)行環(huán)境等原因無(wú)法大量采集能量跡的情況下,為減少數(shù)據(jù)采集和模型訓(xùn)練,基于密鑰字節(jié)泄露數(shù)據(jù)集之間可能相似的特征,可以選用部分密鑰字節(jié)的泄露數(shù)據(jù)集訓(xùn)練一個(gè)多源數(shù)據(jù)聚合模型去恢復(fù)所有密鑰字節(jié).
為保證訓(xùn)練的聚合模型具有更好的泛化效果,需要篩選出對(duì)其他所有密鑰字節(jié)的攻擊效果總體上最好的數(shù)據(jù)集進(jìn)行訓(xùn)練. 具體地,設(shè)計(jì)一種打分機(jī)制進(jìn)行評(píng)估. 先基于不同泄露數(shù)據(jù)集構(gòu)建的16 個(gè)模型中的每個(gè)模型對(duì)所有密鑰字節(jié)的攻擊結(jié)果,根據(jù)每個(gè)模型恢復(fù)各個(gè)密鑰字節(jié)的能量跡數(shù)量進(jìn)行升序排序并進(jìn)行打分,排序靠前的模型得分高,排序靠后的被認(rèn)為對(duì)恢復(fù)密鑰的作用較小,得分降低甚至忽略不計(jì). 以Cx(Mi,Sj)表示模型Mi在密鑰字節(jié)Sj上排序位置為x時(shí)的得分,打分方法為
根據(jù)Cx(Mi,Sj)計(jì)算出各個(gè)模型Mi在密鑰字節(jié)Sj上的得分. 基于該方法,計(jì)算每個(gè)模型Mi在所有16 個(gè)密鑰字節(jié)上的得分并求總分,以CT(Mi)表示模型Mi的總得分,則
根據(jù)表2 中不同單密鑰字節(jié)模型對(duì)各個(gè)密鑰字節(jié)恢復(fù)所需要的能量跡數(shù),采用式(4)分別計(jì)算每個(gè)模型在恢復(fù)所有密鑰字節(jié)時(shí)的得分情況如表3 所示.
Table 3 Scores of Each Model表3 各個(gè)模型的得分
根據(jù)表3 中各個(gè)模型的得分進(jìn)行升序排序,結(jié)果如表4 所示.
Table 4 Ranking of Each Model According to Scores表4 由得分得到的各個(gè)模型的排序
為構(gòu)建一個(gè)具有較好泛化效果的聚合模型,選取排序靠前的幾個(gè)模型分別對(duì)應(yīng)的密鑰字節(jié)泄露數(shù)據(jù)集進(jìn)行聚合,訓(xùn)練出一個(gè)多源數(shù)據(jù)聚合模型,再以聚合模型進(jìn)行密鑰恢復(fù).
在多源數(shù)據(jù)聚合模型訓(xùn)練中,仍然采用Benadjila等人[7]提出的MLP-best 模型建立MLP 神經(jīng)網(wǎng)絡(luò)模型,聚合模型的層數(shù)、激活函數(shù)和參數(shù)均與2.1 節(jié)中基于單密鑰字節(jié)構(gòu)建模型相同.
采用Python 語(yǔ)言,基于Keras 深度學(xué)習(xí)開(kāi)源庫(kù)(keras 2.2.4)和TensorFlow 后端(Tensorflow 1.12.0)在硬件配置為Intel(R)CoreTMi5-6300HQ CPU@2.30 GHz、內(nèi)存8 GB 和 NVIDIA GeForce GTX 960 M 顯卡的計(jì)算機(jī)上實(shí)現(xiàn)MLP 神經(jīng)網(wǎng)絡(luò)模型,基于DPAContest_V4數(shù)據(jù)集構(gòu)建并訓(xùn)練16 個(gè)單密鑰字節(jié)模型和多源數(shù)據(jù)聚合模型,并進(jìn)行密鑰恢復(fù)測(cè)試. 針對(duì)多源數(shù)據(jù)聚合模型,完成了其進(jìn)行密鑰恢復(fù)的能量跡數(shù)量及與其他模型的對(duì)比測(cè)試.
根據(jù)表4 中單密鑰字節(jié)模型對(duì)不同密鑰字節(jié)恢復(fù)的打分排名結(jié)果,按照排名情況選取各個(gè)模型對(duì)應(yīng)的密鑰字節(jié)數(shù)據(jù)進(jìn)行聚合,訓(xùn)練多源數(shù)據(jù)聚合模型,再進(jìn)行密鑰恢復(fù). 為更好地評(píng)估不同密鑰字節(jié)數(shù)據(jù)集聚合的泛化攻擊效果,根據(jù)表4 的排名情況分別以得分排名前6,8,10,12,14,16 的模型對(duì)應(yīng)的密鑰字節(jié)數(shù)據(jù)集進(jìn)行多源數(shù)據(jù)聚合,建立和訓(xùn)練聚合模型Mix_6,Mix_8,Mix_10,Mix_12,Mix_14,Mix_16,對(duì)不同密鑰字節(jié)數(shù)據(jù)進(jìn)行恢復(fù),并與各個(gè)單密鑰字節(jié)模型Mi恢復(fù)相應(yīng)密鑰字節(jié)數(shù)據(jù)的結(jié)果進(jìn)行對(duì)比,各自所需要的能量跡數(shù)如圖2 所示.
Fig.2 Number of traces for each key byte recovered by different models圖2 不同模型恢復(fù)各密鑰字節(jié)的能量跡數(shù)
圖2 結(jié)果表明,多源數(shù)據(jù)聚合模型都能夠以所聚合的部分密鑰字節(jié)泄露數(shù)據(jù)集訓(xùn)練模型并有效恢復(fù)出所有密鑰字節(jié),包括那些沒(méi)有參與聚合訓(xùn)練的密鑰字節(jié);同時(shí),多源數(shù)據(jù)聚合模型較單密鑰字節(jié)模型的攻擊效果更好,其恢復(fù)各密鑰字節(jié)所需要的能量跡數(shù)量更少. 從對(duì)每一個(gè)密鑰字節(jié)數(shù)據(jù)的攻擊結(jié)果看,隨著聚合的數(shù)據(jù)集增加,聚合模型的攻擊效果提升,恢復(fù)該密鑰字節(jié)所需的能量跡數(shù)量減少,這表明聚合模型可以在更多的數(shù)據(jù)集中更好地學(xué)習(xí)到泛化特征.在聚合模型進(jìn)行特征學(xué)習(xí)過(guò)程中,當(dāng)聚合的數(shù)據(jù)集較少時(shí),噪聲容易干擾學(xué)習(xí)結(jié)果,攻擊效果并沒(méi)有顯著提升;隨著聚合數(shù)據(jù)集的增加,噪聲干擾降低,在聚合6 個(gè)數(shù)據(jù)集進(jìn)行訓(xùn)練后,對(duì)整體子密鑰的恢復(fù)效果基本趨于穩(wěn)定并優(yōu)于單密鑰字節(jié)模型的攻擊結(jié)果.
多源數(shù)據(jù)聚合模型基于深度學(xué)習(xí)的強(qiáng)大學(xué)習(xí)能力,能夠基于部分采集的能量跡數(shù)據(jù)有效恢復(fù)算法整體密鑰,這在數(shù)據(jù)采集不便的情況下也能夠?qū)崿F(xiàn)高效的攻擊;由于不需要訓(xùn)練多個(gè)模型也使得模型訓(xùn)練和分析測(cè)試工作有效減少.
現(xiàn)有針對(duì)密碼算法的基于深度學(xué)習(xí)的側(cè)信道分析方法,更多的仍然是針對(duì)密碼算法不同的密鑰字節(jié)分別建模和分析. 針對(duì)AES-256 算法,文獻(xiàn)[13]基于卷積神經(jīng)網(wǎng)絡(luò) (convolutional neural network,CNN)和DPAV4 數(shù)據(jù)集,以第1 輪掩碼S 盒輸出值的最低有效位作為訓(xùn)練標(biāo)簽,針對(duì)其選擇的某個(gè)密鑰字節(jié)對(duì)應(yīng)的泄露數(shù)據(jù)集分別建模和訓(xùn)練測(cè)試,使用1 000條能量跡作為訓(xùn)練集,2000 條作為驗(yàn)證集,2000 條作為測(cè)試集,完成對(duì)該密鑰字節(jié)的恢復(fù),其恢復(fù)該密鑰字節(jié)所需要的能量跡為550 條.
采用多源數(shù)據(jù)聚合模型方法,按表4 分別取前8,10 個(gè)數(shù)據(jù)集聚合訓(xùn)練模型Mix_8,Mix_10,與文獻(xiàn)[13]在同樣數(shù)據(jù)集大小條件下進(jìn)行模型訓(xùn)練并對(duì)前16 個(gè)密鑰字節(jié)進(jìn)行恢復(fù);同時(shí),根據(jù)算法原始的密鑰字節(jié)順序選取前8,10 個(gè)密鑰字節(jié)的泄露數(shù)據(jù)集,采用本文的多源數(shù)據(jù)聚合思想以同樣數(shù)據(jù)集大小聚合訓(xùn)練模型MO_8,MO_10 并恢復(fù)前16 個(gè)密鑰字節(jié),與在同樣數(shù)據(jù)集大小情況下采用單密鑰字節(jié)泄露數(shù)據(jù)訓(xùn)練模型Mi的密鑰恢復(fù)結(jié)果對(duì)比,各自所需能量跡數(shù)如表5 所示.
Table 5 Recovery Results of Six Models for 16 Key Bytes表5 6 個(gè)模型對(duì)16 個(gè)密鑰字節(jié)的恢復(fù)結(jié)果
文獻(xiàn)[13]通過(guò)已知的掩碼計(jì)算掩碼S 盒的輸出,將其轉(zhuǎn)換為一個(gè)不受保護(hù)的實(shí)現(xiàn),本實(shí)驗(yàn)中采用式(2)的標(biāo)簽方案并未對(duì)掩碼進(jìn)行額外操作,因此在只有1 000 條訓(xùn)練數(shù)據(jù)下訓(xùn)練的單密鑰字節(jié)模型效果不太理想,但在2 000 條能量跡內(nèi)也能恢復(fù)正確密鑰.
表5 結(jié)果也顯示多源數(shù)據(jù)聚合模型恢復(fù)密鑰字節(jié)的效果都優(yōu)于文獻(xiàn)[13],所需能量跡數(shù)量更少;隨著聚合數(shù)據(jù)集的增加,聚合模型對(duì)密鑰字節(jié)的恢復(fù)效果更好,所需要的能量跡數(shù)減少. 模型Mix_8,Mix_10 的攻擊效果分別優(yōu)于模型MO_8,MO_10,這表明基于打分排名后篩選的多源數(shù)據(jù)聚合模型具有更好的泛化特征學(xué)習(xí)能力,其攻擊效果要優(yōu)于不做數(shù)據(jù)篩選的多源數(shù)據(jù)聚合模型,恢復(fù)密鑰字節(jié)所需使用的能量跡數(shù)更少.
文獻(xiàn)[9]基于MLP 網(wǎng)絡(luò)和DPAV4 數(shù)據(jù)集,進(jìn)行50 次隨機(jī)超參數(shù)搜索訓(xùn)練得到50 個(gè)MLP 網(wǎng)絡(luò)并使用引導(dǎo)聚集(bootstrap aggregating)算法進(jìn)行集成,針對(duì)第1 個(gè)密鑰字節(jié)的數(shù)據(jù)進(jìn)行訓(xùn)練與恢復(fù),以第1 輪掩碼S 盒輸出值的漢明重量作為訓(xùn)練標(biāo)簽,34 000 條能量跡作為訓(xùn)練集,1 000 條作為驗(yàn)證集,1 000 條作為測(cè)試集進(jìn)行實(shí)驗(yàn). 采用同樣的數(shù)據(jù)集規(guī)模,基于多源數(shù)據(jù)聚合模型方法,按表4 分別取前8,10,12 個(gè)數(shù)據(jù)集聚合訓(xùn)練模型Mix_8,Mix_10,Mix_12 進(jìn)行密鑰恢復(fù);同時(shí),根據(jù)算法原始的密鑰字節(jié)順序選取前8,10,12 個(gè)密鑰字節(jié)的泄露數(shù)據(jù)集,采用本文的多源數(shù)據(jù)聚合方法以同樣數(shù)據(jù)集大小聚合訓(xùn)練模型MO_8,MO_10,MO_12 并恢復(fù)密鑰,各自所需能量跡數(shù)如表6所示.
Table 6 Recovery Results of Seven Models for 16 Key Bytes表6 7 個(gè)模型對(duì)16 個(gè)密鑰字節(jié)的恢復(fù)結(jié)果
表6 結(jié)果顯示,相較于文獻(xiàn)[9]中的結(jié)果,采用聚合模型進(jìn)行攻擊,各個(gè)模型中參與了訓(xùn)練的密鑰字節(jié)的恢復(fù)所需要的能量跡在4 條左右,未參與訓(xùn)練的密鑰字節(jié)的恢復(fù)需要更多的能量跡數(shù);但采用聚合模型僅需要訓(xùn)練1 個(gè)模型,開(kāi)銷(xiāo)小、時(shí)間短,且在聚合12 個(gè)密鑰字節(jié)的泄露數(shù)據(jù)集后,對(duì)未參與訓(xùn)練的密鑰字節(jié)恢復(fù)密鑰的能量跡數(shù)量都有效減少,而文獻(xiàn)[9]需要訓(xùn)練50 個(gè)不同的模型才完成對(duì)第1個(gè)密鑰字節(jié)的攻擊,要完成對(duì)16 個(gè)密鑰字節(jié)的攻擊,其模型訓(xùn)練的開(kāi)銷(xiāo)極大、時(shí)間過(guò)長(zhǎng).
相比于表5 中的結(jié)果,表6 結(jié)果也顯示聚合模型中相應(yīng)密鑰恢復(fù)所需要的能量跡數(shù)量進(jìn)一步減少.這表明隨著數(shù)據(jù)規(guī)模的增加,神經(jīng)網(wǎng)絡(luò)可以充分地學(xué)習(xí)到訓(xùn)練數(shù)據(jù)的特征,聚合模型的攻擊成功率更高;其次,采用基于打分排名后篩選的數(shù)據(jù)聚合模型具有更好的泛化特征學(xué)習(xí)能力,其總體攻擊效果仍然優(yōu)于不做數(shù)據(jù)篩選的聚合模型;同時(shí),隨著參與訓(xùn)練的數(shù)據(jù)量增加,泄露數(shù)據(jù)參與了訓(xùn)練的密鑰字節(jié)更容易被恢復(fù),因其特征能夠被更好地提取出來(lái).
使用MathMagic 側(cè)信道分析儀,搭載目標(biāo)芯片STC89C52 單片機(jī),實(shí)現(xiàn)無(wú)防護(hù)的AES-128 算法,模擬數(shù)據(jù)采集困難、所采集的能量跡少的情景,共采集3 500 條能量跡,以其中3 000 條能量跡作為訓(xùn)練集,剩下500 條能量跡作為測(cè)試集. 實(shí)驗(yàn)中先通過(guò)相關(guān)性分析確定密鑰字節(jié)在能量跡中的泄露位置,采用式(1)進(jìn)行計(jì)算,由于漢明重量模型對(duì)應(yīng)9 種類(lèi)別,因此在保持MLP 模型結(jié)構(gòu)參數(shù)與2.1 節(jié)模型參數(shù)其余部分不變的基礎(chǔ)上,將輸出層節(jié)點(diǎn)數(shù)設(shè)置為9. 對(duì)每個(gè)密鑰字節(jié)獨(dú)立建模并攻擊,各單密鑰字節(jié)模型記為Mi. 采用多源數(shù)據(jù)聚合模型方法,按表4 選取前8,10 個(gè)泄露數(shù)據(jù)集聚合訓(xùn)練模型Mix_8,Mix_10,同時(shí)按密碼算法原始密鑰字節(jié)順序選取前8,10 個(gè)數(shù)據(jù)集聚合訓(xùn)練模型MO_8,MO_10,并分別恢復(fù)各密鑰字節(jié),各個(gè)模型完成密鑰恢復(fù)所需的能量跡數(shù)對(duì)比結(jié)果如表7 所示.
Table 7 Recovery Results of Five Models for 16 Key Bytes表7 5 個(gè)模型對(duì)16 個(gè)密鑰字節(jié)的恢復(fù)結(jié)果
表7 結(jié)果表明,由于訓(xùn)練數(shù)據(jù)的不足,采用單密鑰字節(jié)建模并進(jìn)行密鑰恢復(fù)時(shí),僅恢復(fù)出其中的3個(gè)字節(jié),其他模型因不能學(xué)習(xí)到足夠的特征,無(wú)法恢復(fù)密鑰;采用多源數(shù)據(jù)聚合模型方法都有效完成了密鑰恢復(fù),優(yōu)于單密鑰字節(jié)模型攻擊結(jié)果. 在Mix_8,Mix_10 中,恢復(fù)前3 個(gè)密鑰字節(jié)的能量跡數(shù)較MO_8,MO_10 所需的能量跡數(shù)稍多,主要原因在于這些密鑰字節(jié)泄露數(shù)據(jù)在Mix_8,Mix_10 中未參與訓(xùn)練,而在MO_8,MO_10 中參與了訓(xùn)練,在訓(xùn)練數(shù)據(jù)不足的情況下未參與訓(xùn)練的密鑰字節(jié)特征學(xué)習(xí)效果相對(duì)減弱. 但總體上,與采用公用數(shù)據(jù)集訓(xùn)練模型一樣,采用實(shí)測(cè)數(shù)據(jù)集訓(xùn)練模型時(shí),基于打分排名后篩選的多源數(shù)據(jù)聚合模型仍然具有更好的泛化特征學(xué)習(xí)能力,其攻擊效果優(yōu)于不做數(shù)據(jù)篩選的多源數(shù)據(jù)聚合模型,恢復(fù)密鑰字節(jié)所需使用的能量跡數(shù)更少. 此外,相對(duì)于加掩防護(hù)的公用數(shù)據(jù)集實(shí)驗(yàn),實(shí)測(cè)實(shí)驗(yàn)針對(duì)的是未加掩碼防護(hù)的AES-128 算法,因此更容易完成攻擊,恢復(fù)密鑰所需的能量跡數(shù)大大減少.
為評(píng)估本文方法的通用性,將聚合模型應(yīng)用于Present 算法,驗(yàn)證數(shù)據(jù)聚合模型的分析效果. Present算法是一個(gè)4 b 的S 盒且SPN 結(jié)構(gòu)的輕量級(jí)密碼算法. 使用osrtoolkit 功耗采集平臺(tái),搭載目標(biāo)芯片ATMEGA2560,實(shí)現(xiàn)無(wú)防護(hù)的Present 算法,采集3 500條能量跡,以其中3 000 條能量跡作為訓(xùn)練集,500 條能量跡作為測(cè)試集. 實(shí)驗(yàn)中先通過(guò)相關(guān)性分析確定密鑰半字節(jié)在能量跡中的泄露位置,以真實(shí)密鑰作為身份標(biāo)簽,訓(xùn)練的epoch=300,batchsize=100,學(xué)習(xí)率設(shè)為0.000 01,優(yōu)化器使用RMSprop,使用交叉熵?fù)p失函數(shù),將輸出層節(jié)點(diǎn)數(shù)設(shè)置為16. 對(duì)16 個(gè)密鑰半字節(jié)分別獨(dú)立建模并攻擊,各密鑰半字節(jié)模型記為Mi.利用這16 個(gè)模型中的每一個(gè)模型,分別以每個(gè)密鑰半字節(jié)對(duì)應(yīng)的測(cè)試集數(shù)據(jù)去恢復(fù)所有的密鑰半字節(jié),各模型完成對(duì)各密鑰半字節(jié)恢復(fù)的最少能量跡數(shù)如表8 所示.
Table 8 Number of Traces for Sixteen Models Recovering Sixteen Key Nibbles for Present Algorithms表8 針對(duì)Present 算法16 個(gè)模型恢復(fù)16 個(gè)密鑰字節(jié)的能量跡數(shù)
根據(jù)式(4),基于表8 的結(jié)果計(jì)算每個(gè)模型在恢復(fù)所有密鑰半字節(jié)時(shí)的得分,結(jié)果如表9 所示.采用多源數(shù)據(jù)聚合模型方法,對(duì)表9 以得分高低排序后選取前8,10,12,16 個(gè)泄露數(shù)據(jù)集聚合訓(xùn)練模型Mix_8,Mix_10,Mix_12,Mix_16,分別恢復(fù)各密鑰半字節(jié),所需的能量跡數(shù)與單密鑰半字節(jié)建?;謴?fù)的結(jié)果對(duì)比情況如表10 所示.
Table 9 Scores of Sixteen Models表9 16 個(gè)模型的得分
Table 10 Recovery Results of Different Models for Each Key Nibble表10 不同模型對(duì)各密鑰半字節(jié)的恢復(fù)結(jié)果
表10 結(jié)果表明,在聚合模型中,由于密鑰半字節(jié)S5和S9對(duì)應(yīng)模型得分較低,相應(yīng)數(shù)據(jù)集未能在Mix_8,Mix_10 中參與訓(xùn)練,無(wú)法被恢復(fù). 但在Mix_12模型中,S5對(duì)應(yīng)的數(shù)據(jù)集盡管沒(méi)有參與訓(xùn)練,但由于有更多數(shù)據(jù)集參與訓(xùn)練,相應(yīng)特征被學(xué)習(xí),也能夠被有效恢復(fù). 而基于所有數(shù)據(jù)集的聚合模型,能夠以更少的能量跡數(shù)量恢復(fù)所有密鑰半字節(jié). 從所有聚合模型恢復(fù)的結(jié)果看,若數(shù)據(jù)集參與了聚合模型訓(xùn)練,其恢復(fù)相應(yīng)密鑰半字節(jié)所需要的能量跡數(shù)量均少于單密鑰半字節(jié)模型的結(jié)果;在單密鑰半字節(jié)模型中無(wú)法恢復(fù)的其他密鑰半字節(jié),在聚合模型中除1 或2個(gè)密鑰半字節(jié)外,其他的都能夠有效恢復(fù),這表明多源數(shù)據(jù)聚合模型具有更好的泛化特征學(xué)習(xí)能力,相對(duì)于單密鑰半字節(jié)模型,有效提升了其恢復(fù)密鑰的能力. 針對(duì)不同算法的攻擊結(jié)果,表明了本文提出的多源數(shù)據(jù)聚合模型在攻擊時(shí)具有較好的通用性.
為降低在實(shí)際應(yīng)用中基于深度學(xué)習(xí)進(jìn)行側(cè)信道攻擊所需要的數(shù)據(jù)采集和模型訓(xùn)練開(kāi)銷(xiāo),提出一種基于多源數(shù)據(jù)聚合的神經(jīng)網(wǎng)絡(luò)側(cè)信道攻擊方法. 該方法針對(duì)AES-128 算法,通過(guò)評(píng)估單密鑰字節(jié)模型的泛化效果,篩選出對(duì)各密鑰字節(jié)恢復(fù)效果最好的部分密鑰字節(jié)泄露數(shù)據(jù)集,構(gòu)建多源數(shù)據(jù)聚合模型,再進(jìn)行密鑰恢復(fù). 實(shí)驗(yàn)測(cè)試結(jié)果表明,多源數(shù)據(jù)聚合模型具有良好的泛化效果,有效提高了密鑰恢復(fù)的準(zhǔn)確率和效率,降低了恢復(fù)密鑰所需的能量跡數(shù)量,可在能量跡采集困難、能量跡較少的情況下依然具有較好的攻擊效果. 在今后工作中,將考慮結(jié)合數(shù)據(jù)增強(qiáng)技術(shù),進(jìn)一步提升在能量跡不足情況下的密鑰恢復(fù)效果. 與此同時(shí),也將研究針對(duì)深度學(xué)習(xí)側(cè)信道攻擊的防御措施,提高密碼算法應(yīng)用的安全性. 深度學(xué)習(xí)側(cè)信道攻擊主要針對(duì)S 盒部件的泄露數(shù)據(jù)開(kāi)展攻擊. 因此,為有效預(yù)防深度學(xué)習(xí)側(cè)信道攻擊,一方面是在密碼部件設(shè)計(jì)中,考慮S 盒抗側(cè)信道攻擊的能力,并研究密碼算法結(jié)構(gòu)整體的安全性;另一方面是研究針對(duì)側(cè)信道攻擊的掩碼防護(hù)技術(shù),消除密碼算法功耗泄露與中間值之間的可預(yù)測(cè)關(guān)系,達(dá)到防護(hù)的目的.
作者貢獻(xiàn)聲明:張潤(rùn)蓮設(shè)計(jì)研究方案,撰寫(xiě)初稿;潘兆軒參與方案討論、實(shí)驗(yàn)研究及結(jié)果分析;李金林采集數(shù)據(jù),參與實(shí)驗(yàn)研究及結(jié)果分析;武小年參與設(shè)計(jì)研究方案及論文修改;韋永壯參與論文修改.