汪 平, 鄭夢(mèng)策, 南杰慧, 羅志敏, 胡紅鋼
中國(guó)科學(xué)技術(shù)大學(xué) 中國(guó)科學(xué)院電磁空間信息重點(diǎn)實(shí)驗(yàn)室, 合肥230027
側(cè)信道攻擊(Side Channel Attack, SCA) 是一種利用運(yùn)行加密算法的物理設(shè)備所泄露的側(cè)信息來(lái)恢復(fù)秘密信息的攻擊[1]. 常用的側(cè)信息包括時(shí)間、能量消耗、電磁輻射等. 側(cè)信道攻擊主要分為建模攻擊和非建模攻擊, 其中建模攻擊近年來(lái)得到了迅速的發(fā)展, 尤其是與深度學(xué)習(xí)(Deep Learning, DL) 的結(jié)合.建模攻擊主要包括建模階段和攻擊階段. 在建模階段, 假設(shè)攻擊者有一個(gè)與目標(biāo)設(shè)備相同且完全控制的建模設(shè)備, 然后通過(guò)建模算法對(duì)建模設(shè)備的泄露特征進(jìn)行刻畫(huà)并構(gòu)建模板, 攻擊階段直接利用模板來(lái)恢復(fù)目標(biāo)設(shè)備的秘密信息.
模板攻擊(Template Attack,TA)[2]可以看作是最早的建模攻擊,其原理是利用多元高斯正態(tài)分布對(duì)泄露噪聲進(jìn)行建模. 隨著建模攻擊的發(fā)展, 一系列基于機(jī)器學(xué)習(xí)(Machine Learning, ML) 的建模攻擊被提出, 其中兩個(gè)比較常用的模型是支持向量機(jī)(Support Vector Machine, SVM)[3]和隨機(jī)森林(Random Forest, RF)[4], 在攻擊無(wú)防護(hù)和有防護(hù)的密碼實(shí)現(xiàn)上都取得了不錯(cuò)的成果[5,6]. 近年來(lái), 隨著DL 的發(fā)展,更多基于DL 的建模攻擊被不斷提出, 其中Maghrebi 等人最早嘗試將DL 應(yīng)用在建模攻擊上[7]. 相比于傳統(tǒng)建模攻擊, 無(wú)需進(jìn)行興趣點(diǎn)選取、對(duì)齊等預(yù)處理操作, 并且某些網(wǎng)絡(luò)結(jié)構(gòu)具有天然的抵抗側(cè)信道防護(hù)的性質(zhì), 比如卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN) 的平移不變性可以減輕軌跡抖動(dòng)帶來(lái)的影響[8]. 后續(xù)又有很多研究者對(duì)于深度學(xué)習(xí)在建模攻擊上的應(yīng)用做了很多優(yōu)化工作[9,10].
在建模攻擊中, 我們通常要選擇泄露模型來(lái)計(jì)算每條軌跡對(duì)應(yīng)中間值的標(biāo)簽, 比如說(shuō)漢明重量、漢明距離以及最低最高有效位等. 假設(shè)針對(duì)的是一個(gè)8 位S 盒, 其輸出結(jié)果范圍是0 到255, 如果直接使用該S 盒輸出作為標(biāo)簽, 那么數(shù)據(jù)就是平衡的, 因?yàn)樵诓杉壽E時(shí)通常輸入的是隨機(jī)明文, 所以S 盒輸出可以看作是均勻分布的. 而如果使用HW/HD 這樣的泄露模型來(lái)計(jì)算標(biāo)簽, 就會(huì)導(dǎo)致數(shù)據(jù)不平衡問(wèn)題. 這里我們以HW 為例, 當(dāng)HW 為0 或8 時(shí), 那么只有當(dāng)S 盒的輸出為全0 或全1 時(shí)才滿(mǎn)足, 而這樣的數(shù)據(jù)只占1/256; 同樣的, 當(dāng)HW 等于4 時(shí), 數(shù)據(jù)占有最高的比例70/256. 當(dāng)我們?cè)谶@樣的不平衡數(shù)據(jù)集上進(jìn)行建模時(shí), 就會(huì)導(dǎo)致模型的類(lèi)別預(yù)測(cè)比例也不平衡[11,12], 降低模型的攻擊效果. 需要說(shuō)明的一點(diǎn)是, 盡管使用HW/HD 這樣的泄露模型存在數(shù)據(jù)不平衡的問(wèn)題, 但其縮減標(biāo)簽空間的高效性是不可忽視的, 假設(shè)中間值是16 位, 如果直接使用中間值作為標(biāo)簽, 那么就有65 536 種類(lèi)別, 而使用HW/HD 計(jì)算的標(biāo)簽只有17種, 當(dāng)數(shù)據(jù)的類(lèi)別過(guò)多時(shí), 不僅會(huì)大大增加計(jì)算代價(jià), 也難以訓(xùn)練出有效的模型. 另一方面, 在適用的場(chǎng)景下HW/HD 能量模型可以準(zhǔn)確刻畫(huà)泄露的差異性, 從而更有效地構(gòu)建模型.
解決這種不平衡問(wèn)題的方法有多種, 一種比較常見(jiàn)的方法就是利用數(shù)據(jù)擴(kuò)張來(lái)構(gòu)建平衡的數(shù)據(jù)集.Picek 等人使用多種數(shù)據(jù)采樣的方法, 尤其是合成少數(shù)類(lèi)過(guò)采樣技術(shù)(Synthetic Minority Oversampling Technique, SMOTE) 取得了不錯(cuò)的效果[12]. 當(dāng)然也有其它類(lèi)型的方法, 比如可以利用分層建模的方式來(lái)緩解這種不平衡問(wèn)題[13]. 本文將繼續(xù)延伸數(shù)據(jù)擴(kuò)張技巧在側(cè)信道建模攻擊中數(shù)據(jù)不平衡問(wèn)題上的應(yīng)用,我們首次提出使用生成對(duì)抗網(wǎng)絡(luò)來(lái)生成軌跡, 并利用生成軌跡擴(kuò)張?jiān)嫉牟黄胶鈹?shù)據(jù)集, 從而提高訓(xùn)練模型的攻擊效果. 實(shí)驗(yàn)結(jié)果也表明相比于直接利用原始軌跡來(lái)合成的軌跡, 由生成對(duì)抗網(wǎng)絡(luò)所生成的軌跡,能夠更有效地降低數(shù)據(jù)不平衡問(wèn)題對(duì)攻擊結(jié)果的影響, 減少攻擊成功所需的軌跡條數(shù).
本文的章節(jié)安排如下: 第2 節(jié)介紹相關(guān)背景知識(shí), 第3 節(jié)介紹條件生成對(duì)抗網(wǎng)絡(luò)的原理, 以及生成軌跡時(shí)訓(xùn)練集的構(gòu)建方法, 第4 節(jié)為實(shí)驗(yàn)結(jié)果與分析, 第5 節(jié)為本文結(jié)論.
使得似然得分最大的猜測(cè)密鑰就是我們認(rèn)為正確的密鑰:
通常我們所使用的側(cè)信道評(píng)估指標(biāo)猜測(cè)熵(Guess Entropy, GE)[14]就是指猜測(cè)密鑰對(duì)應(yīng)似然得分所構(gòu)成的降序向量中, 正確密鑰k?所處的位置.
數(shù)據(jù)擴(kuò)張(Data Augmentation, DA)[15]是一種正則化的技巧, 用來(lái)處理模型在訓(xùn)練過(guò)程中出現(xiàn)的過(guò)擬合現(xiàn)象, 從而構(gòu)建更健壯的模型. 當(dāng)然, 這一方法更多的還是運(yùn)用在圖像領(lǐng)域, 比如對(duì)圖像做平移和反射, 改變圖像通道的強(qiáng)度等操作有效地降低了錯(cuò)誤率[16]. 而在側(cè)信道領(lǐng)域中, 近幾年來(lái)也有一些研究者將DA 引入到建模攻擊中, Eleonora Cagli 等人最早利用DA 這一技巧來(lái)減少模型的過(guò)擬合, 主要是通過(guò)對(duì)軌跡平移和添加抖動(dòng)來(lái)合成新的軌跡[8]. Picek 等人通過(guò)數(shù)據(jù)采樣的方法, 來(lái)緩解數(shù)據(jù)不平衡問(wèn)題對(duì)建模攻擊的影響[12]. 此外, 還有一些其它相關(guān)的工作[17,18].
生成對(duì)抗網(wǎng)絡(luò)(Generative Adversarial Network, GAN) 是由Ian J. Goodfellow 于2014 年提出的[19], 主要作為一個(gè)生成模型來(lái)學(xué)習(xí)數(shù)據(jù)的分布. 為了學(xué)習(xí)真實(shí)數(shù)據(jù)x的分布pdata, 我們需要通過(guò)一個(gè)非線(xiàn)性函數(shù)G(z;θg) 將一個(gè)先驗(yàn)噪聲分布pz(z) 映射到pdata, 而這個(gè)非線(xiàn)性函數(shù)G就是生成器, 假設(shè)生成器學(xué)習(xí)到的數(shù)據(jù)分布為pg, 我們的目標(biāo)是盡可能的讓pg接近pdata.
判別器同樣是一個(gè)非線(xiàn)性函數(shù)D(x;θd), 給出一個(gè)樣本來(lái)自pdata而不是pg的概率. 然后我們交替的訓(xùn)練判別器和生成器,并調(diào)整判別器的參數(shù)θd和生成器的參數(shù)θg,使得logD(X)最大,log(1?D(G(z)))最小. 這一訓(xùn)練過(guò)程可以看作生成器G和判別器D之間的最大最小游戲, 使用一個(gè)目標(biāo)函數(shù)表示就是:
我們?cè)诨贛L、DL 進(jìn)行側(cè)信道建模攻擊時(shí), 訓(xùn)練集中每條軌跡都有對(duì)應(yīng)的label, 而GAN 本身是無(wú)監(jiān)督學(xué)習(xí), 生成的軌跡是沒(méi)有標(biāo)簽的. 所以使用有條件的GAN 即CGAN[20]來(lái)生成軌跡, CGAN 與GAN 的不同之處就在于, 在訓(xùn)練G和D時(shí), 需要加入額外的信息y, 可以是數(shù)據(jù)的label, 也可是某一分布下的數(shù)據(jù). 此時(shí)的目標(biāo)函數(shù)則變成了:
圖1 展示了CGAN 的簡(jiǎn)單架構(gòu), 生成器G的輸入為噪聲和指定label, 判別器D的輸入為真實(shí)軌跡和生成軌跡及其對(duì)應(yīng)label.
圖1 條件生成對(duì)抗網(wǎng)絡(luò)Figure 1 Conditional generative adversarial network
3.1.1 CGAN
我們所使用生成器和判別器的主體構(gòu)成是全連接網(wǎng)絡(luò), 當(dāng)然也可以使用其它類(lèi)型的網(wǎng)絡(luò)結(jié)構(gòu), 比如基于卷積的. 這里給出兩者的整體結(jié)構(gòu), 以ASCAD.h5 數(shù)據(jù)集所使用的模型為例, 如圖2 所示.
對(duì)于圖2(a) 的生成器, 首先是通過(guò)embedding 層將標(biāo)簽編碼成與噪聲維度相同的向量, 接著通過(guò)multiply 層將噪聲與標(biāo)簽結(jié)合起來(lái)(也可以使用其它的實(shí)現(xiàn)方式, 比如通過(guò)numpy 中的concatenate 函數(shù)來(lái)直接拼接兩個(gè)向量), 然后輸入到Sequential 中, Sequential 代表的是生成器的主體部分, 可以看到輸入是100 維, 輸出即為軌跡的維度700. Sequential 由(Dense, LeakyReLU, BatchNormalization) 這三層按順序重復(fù)堆疊N次,N的選取依據(jù)具體的數(shù)據(jù)集. 圖2(b) 的判別器的輸入部分是類(lèi)似的, 只不過(guò)標(biāo)簽要變成與軌跡維度相同的向量, 然后與軌跡相結(jié)合, 中間層類(lèi)似, 而輸出是一個(gè)標(biāo)量, 代表對(duì)輸入軌跡真假的判斷得分. 對(duì)于ASCAD.h5、AES_HD、AES_RD 三個(gè)數(shù)據(jù)集, 我們?cè)谟?xùn)練CGAN 模型時(shí), 使用的優(yōu)化器是Adam, 訓(xùn)練參數(shù)學(xué)習(xí)率、迭代次數(shù)、批處理尺寸依次為[(0.0001, 100, 100), (0.0001, 150, 200),(0.0001, 100, 200)], 這里給出的是直接使用不平衡數(shù)據(jù)集生成軌跡的訓(xùn)練參數(shù), 3.2 節(jié)將要提到的另外三種方法在訓(xùn)練CGAN 時(shí)對(duì)應(yīng)的訓(xùn)練參數(shù)有微小的差異, 需要進(jìn)行微調(diào). 關(guān)于生成軌跡的更多細(xì)節(jié), 包括軌跡的質(zhì)量評(píng)估等請(qǐng)參考我們的另一篇文獻(xiàn)[21].
注1 embedding、multiply、Sequential 等這些都是Keras 深度學(xué)習(xí)開(kāi)源庫(kù)(keras-2.2.4) 中的相關(guān)函數(shù).
3.1.2 攻擊模型
這里我們所選取的攻擊模型是多層感知機(jī). 對(duì)于ASCAD 數(shù)據(jù)集, 模型使用了文獻(xiàn)[9] 中對(duì)應(yīng)的超參數(shù); 而AES_HD、AES_RD 兩個(gè)數(shù)據(jù)集, 則是使用10 折疊交叉驗(yàn)證來(lái)選取模型的超參數(shù), 包括結(jié)構(gòu)參數(shù)和訓(xùn)練參數(shù). 10 折疊交叉驗(yàn)證的含義是, 將建模集劃分成訓(xùn)練集和驗(yàn)證集(每次劃分是不一樣的), 然后分別訓(xùn)練10 次, 并將10 次在驗(yàn)證集上的結(jié)果取平均. 數(shù)據(jù)集ASCAD.h5、AES_HD、AES_RD 對(duì)應(yīng)模型的隱藏層和每層神經(jīng)元個(gè)數(shù)分別為[(200, 200, 200, 200, 200), (200, 200, 200, 200, 256), (200,256,256, 256, 200)]. 中間層和最后一層的激活函數(shù)分別為ReLU 和Softmax. 三個(gè)模型對(duì)應(yīng)的訓(xùn)練參數(shù)學(xué)習(xí)率、迭代次數(shù)、批尺寸依次為[(0.0001, 100, 200), (0.00001, 150, 256), (0.00001, 100, 200)], 所使用的優(yōu)化器都是RSMProp. 另外, 要補(bǔ)充的一點(diǎn)是當(dāng)我們將生成的軌跡加入到原始訓(xùn)練集后, 重新訓(xùn)練模型時(shí),有可能之前的超參數(shù)此時(shí)并不是最優(yōu)的, 因此可以進(jìn)行簡(jiǎn)單的微調(diào).
在使用CGAN 生成軌跡的時(shí)候, 如果我們直接使用原始的訓(xùn)練集來(lái)生成軌跡, 那么CGAN 模型同樣會(huì)受到數(shù)據(jù)不平衡問(wèn)題的影響, 可能會(huì)導(dǎo)致生成的軌跡更偏像于主類(lèi)軌跡, 所以我們?cè)O(shè)計(jì)了四種不同的方法來(lái)構(gòu)建CGAN 的訓(xùn)練集, 減少這一問(wèn)題帶來(lái)的影響, 方法如下:
(1) 直接使用原始不平衡的數(shù)據(jù)集來(lái)生成軌跡(generate with imbalanced data).
(2) 考慮到label = 4 的軌跡所占比例最高, 而且通常不平衡數(shù)據(jù)下所訓(xùn)練模型對(duì)測(cè)試集的預(yù)測(cè)也更偏向label = 4, 甚至大多數(shù)時(shí)候模型對(duì)測(cè)試集的整體預(yù)測(cè)精度在27%[11]左右, 而這一精度實(shí)際上也是label = 4 的軌跡所占比例, 因此label = 4 是不平衡問(wèn)題中最主要的影響因素, 所以我們將label = 4 的軌跡單獨(dú)拿出, 然后將剩余的軌跡作為CGAN 的訓(xùn)練集(generate without label= 4).
(3) 選擇類(lèi)別占比相同的軌跡作為一個(gè)訓(xùn)練集, 比如說(shuō), label= 0, 8 對(duì)應(yīng)的軌跡組成一個(gè)CGAN 的訓(xùn)練集, 生成軌跡對(duì)應(yīng)的label 也等于0 和8, 因此, 我們需要分別將label = 0, 8、label = 1, 7、label = 2, 6、label = 3, 5 對(duì)應(yīng)的軌跡分成四組訓(xùn)練集, 然后分別生成軌跡(generate with two labels).
(4) 將所有類(lèi)別的軌跡數(shù)量減少到占比最少的類(lèi)別對(duì)應(yīng)的軌跡數(shù)量, 然后構(gòu)成CGAN 的平衡訓(xùn)練集,舉個(gè)例子, label = 0 的軌跡在原始訓(xùn)練集中有128 條, 然后我們從其他類(lèi)別中也分別取128 條軌跡, 構(gòu)成一個(gè)平衡的訓(xùn)練集(generate with balanced data).
生成軌跡并不像生成圖片一樣, 即使看起來(lái)與原始軌跡相似, 但無(wú)法觀察到是否包含了與原始軌跡一致的泄露. 我們通常使用相關(guān)能量分析(Correlation Power Analysis, CPA)[22]對(duì)軌跡進(jìn)行興趣點(diǎn)選取也即泄露分析, 這一方法同樣適用于生成軌跡. 因此, 結(jié)合生成軌跡與原始軌跡的CPA 結(jié)果并對(duì)比兩者的泄露位置以及強(qiáng)度, 可以有效的對(duì)生成軌跡進(jìn)行簡(jiǎn)單評(píng)估[21]. 經(jīng)過(guò)CPA 評(píng)估后, 需要將生成軌跡加入到原始訓(xùn)練集中, 重新構(gòu)建攻擊模型, 驗(yàn)證是否能改善攻擊結(jié)果. 除此之外, 利用差分能量分析(Differential Power Analysis, DPA)[23]同樣可以評(píng)估生成軌跡, 只不過(guò)是非線(xiàn)性的.
在文獻(xiàn)[8,12] 中, 雖然都使用了數(shù)據(jù)擴(kuò)張的方法, 但對(duì)于如何擴(kuò)張?jiān)紨?shù)據(jù)的實(shí)現(xiàn)細(xì)節(jié)并未給出. 在本文中, 我們以主類(lèi)label = 4 的軌跡數(shù)量為基準(zhǔn), 擴(kuò)充其它類(lèi)別的軌跡數(shù)量. 這里以label = 0 為例, 假設(shè)所有類(lèi)別的軌跡數(shù)量共有1000 條, 依據(jù)漢明重量分布(1/256, 8/256, 28/256, 56/256, 70/256, 56/256,28/256, 8/256, 1/256), 可以得到類(lèi)別為0 和4 的軌跡分別約有4 和273 條, 那么我們需要生成269 條label 為0 的軌跡并加入這1000 條軌跡集中, 使得label 為0 和4 對(duì)應(yīng)的軌跡數(shù)量相同. 實(shí)際場(chǎng)景下, 訓(xùn)練集中各類(lèi)別的數(shù)量是接近這個(gè)分布的, 沒(méi)有必要去計(jì)算每個(gè)類(lèi)別的真實(shí)數(shù)量, 結(jié)合漢明重量分布, 直接使用總的軌跡數(shù)量來(lái)估算每個(gè)類(lèi)別對(duì)應(yīng)的軌跡數(shù)量, 就像我們上面的舉例. 因此, 除了label = 4 對(duì)應(yīng)的軌跡不需要生成, 其它類(lèi)別的軌跡都需要生成.
此外, 在擴(kuò)充原始訓(xùn)練集時(shí), 并不是加入的生成軌跡越多越好. 因?yàn)樯绍壽E的分布與原始軌跡的分布仍然存在差異, 當(dāng)我們加入的生成軌跡越來(lái)越多, 會(huì)導(dǎo)致模型所學(xué)習(xí)的泄露分布偏向生成軌跡, 反而使得模型的攻擊效果降低.
首先, 分別訓(xùn)練原始訓(xùn)練集和擴(kuò)充后的訓(xùn)練集并構(gòu)建模型, 接著對(duì)測(cè)試集進(jìn)行100 次攻擊, 然后取平均作為最終的攻擊結(jié)果, 并對(duì)比平衡前與平衡后的模型攻擊效果. 每次測(cè)試集中的軌跡都是從攻擊集中隨機(jī)選取的一個(gè)子集, 對(duì)于AES_RD 數(shù)據(jù)集, 因?yàn)檎麄€(gè)攻擊集中的軌跡都作為測(cè)試集, 因此我們通過(guò)打亂軌跡的順序來(lái)保證平均結(jié)果的可靠性.
首先要說(shuō)明的一點(diǎn)是, 我們并未攻擊無(wú)防護(hù)的AES 軟件實(shí)現(xiàn), 主要的原因是對(duì)無(wú)防護(hù)的AES 進(jìn)行建模攻擊確實(shí)要容易很多. 所以, 在不平衡的數(shù)據(jù)下訓(xùn)練出來(lái)的模型也可以使用很少的軌跡完成一次成功攻擊, 那么即使用了一些平衡數(shù)據(jù)集的技巧, 攻擊結(jié)果并不會(huì)有太明顯的提升. 這一點(diǎn)我們從文獻(xiàn)[12] 中對(duì)DPAv4 的攻擊結(jié)果也可以看出來(lái).
4.1.1 AES_HD
首先, 我們對(duì)一個(gè)無(wú)防護(hù)的AES 硬件實(shí)現(xiàn)進(jìn)行攻擊測(cè)試, 因?yàn)锳ES 的硬件實(shí)現(xiàn), 有很多并行操作, 所以信噪比很低, 攻擊難度很大. 該AES 算法是由VHDL 編寫(xiě)并在帶有Xilinx Virtex-5 FPGA 的Sasebo GII 上實(shí)現(xiàn). 能量軌跡通過(guò)放置在電源線(xiàn)上解耦電容的高靈敏度近場(chǎng)電磁探針來(lái)完成采集, 并由Teledyne LeCroy Waverunner 610zi 示波器進(jìn)行采樣. AES_HD 共包含了100 000 條軌跡, 每條軌跡有1250 個(gè)樣本點(diǎn), 并且適合攻擊的地方是最后一輪中將密文寫(xiě)入寄存器時(shí):
這里c12和c8都是子密文. 求c12與密鑰k?異或值的S 盒逆, 實(shí)際上是求c12所在寄存器上一次寫(xiě)入的值, 因此有一個(gè)寄存器跳變的關(guān)系, 所以適合的泄露模型為HD.
注2 AES_HD 軌跡集可以在https://github.com/AESHD/AES_HD_Dataset 上獲取.
4.1.2 ASCAD
接著, 我們針對(duì)有一階掩碼防護(hù)的AES 實(shí)現(xiàn)進(jìn)行攻擊, 測(cè)試帶有高階防護(hù)的軌跡. ASCAD 是由Prouff等人提供的一個(gè)公開(kāi)數(shù)據(jù)集[9], 旨在為未來(lái)基于深度學(xué)習(xí)的測(cè)信道相關(guān)工作提供一個(gè)評(píng)估基準(zhǔn). 該數(shù)據(jù)庫(kù)中的軌跡來(lái)自于帶有一節(jié)掩碼防護(hù)的AES 軟件實(shí)現(xiàn), 包含了對(duì)齊與非對(duì)齊兩種類(lèi)型的軌跡. 這里我們使用了對(duì)齊的軌跡集ASCAD.h5, ASCAD.h5 由兩部分組成, 建模軌跡集50 000 條和攻擊軌跡集10 000 條. 每條軌跡包含了700 個(gè)樣本點(diǎn), 并且對(duì)應(yīng)于第一輪的第三個(gè)S 盒執(zhí)行過(guò)程. 結(jié)合HW 泄露模型, 我們的建模對(duì)象是:
注3 ASCAD 軌跡集可以在https://github.com/ANSSI-FR/ASCAD 上獲取.
4.1.3 AES_RD
最后, 我們測(cè)試了帶有非對(duì)齊防護(hù)措施的AES 軟件實(shí)現(xiàn). 該加密算法是在一個(gè)有8 位Atmel AVR微控制器的智能卡上實(shí)現(xiàn), 同時(shí)加入了隨機(jī)延遲的防護(hù)措施[24], 此防護(hù)的目的是使攻擊者所采集到的軌跡是非對(duì)齊的, 增加攻擊的難度. AES_RD 數(shù)據(jù)集共有50 000 條軌跡, 每條軌跡有3500 個(gè)樣本點(diǎn), 攻擊的對(duì)象是第一輪的第一個(gè)S 盒:
注4 AES_RD 軌跡集可以在https://github.com/ikizhvatov/randomdelays-traces 上獲取.
4.2.1 ASCAD 攻擊結(jié)果
ASCAD.h5 共有50 000 條訓(xùn)練集, 我們按照漢明重量分布對(duì)label 從0 到8, 不包括label = 4, 分別生成了對(duì)應(yīng)數(shù)量為(13 450, 12 100, 8200, 2700, 2700, 8200, 12 100, 13 450) 的軌跡, 然后加入到原始訓(xùn)練集中, 攻擊結(jié)果如圖3 所示.
圖3 ASCAD.h5 的攻擊結(jié)果Figure 3 Attack results of ASCAD.h5
從圖3 的攻擊結(jié)果可以看到, 對(duì)原始訓(xùn)練集進(jìn)行平衡, 有效地減少了成功攻擊所需的軌跡條數(shù), 其中由3.2 節(jié)方法(2) 構(gòu)成的訓(xùn)練集所生成的軌跡加入到原始訓(xùn)練集后, 訓(xùn)練出的模型具有最好的攻擊效果,僅需約700 條軌跡就能夠恢復(fù)出密鑰, 而原始訓(xùn)練集構(gòu)建的模型需要2000 條以上的軌跡才有可能成功恢復(fù)密鑰, 在文獻(xiàn)[9] 中, 其關(guān)于使用HW 作為標(biāo)簽的攻擊結(jié)果中可以看出在使用1000 條軌跡后GE 收斂到0 仍然需要不少的軌跡. 其它三種方法需要約1100 條軌跡可以進(jìn)行一次成功的攻擊.
4.2.2 AES_HD 攻擊結(jié)果
對(duì)于AES_HD 數(shù)據(jù)集, 我們同樣是使用了50 000 條軌跡作為訓(xùn)練集, 各類(lèi)別的軌跡所生成的數(shù)量與ASCAD 實(shí)驗(yàn)中是一致的, 具體的攻擊結(jié)果如圖4 所示.
圖4 AES_HD 的攻擊結(jié)果Figure 4 Attack results of AES_HD
從圖4 可以看到, 原始不平衡訓(xùn)練集得到的模型在25 000 條軌跡內(nèi)是無(wú)法恢復(fù)出密鑰的, 而我們的方法, 最少只需用約11 000 條軌跡就能夠進(jìn)行一次成功的攻擊, 對(duì)應(yīng)的CGAN 訓(xùn)練集構(gòu)成方法為同比例類(lèi)別的軌跡兩兩組合來(lái)生成軌跡. 在文獻(xiàn)[12] 中同樣是基于MLP 模型, 對(duì)AES_HD 進(jìn)行攻擊, 使用了SMOTE 技巧, GE 是在約15 000 條軌跡后收斂到零. 相比之下, 我們的方法對(duì)不平衡問(wèn)題具有更好效果,或者說(shuō)CGAN 生成的軌跡能夠?yàn)槟P蛶?lái)更多有用信息.
4.2.3 AES_RD 攻擊結(jié)果
AES_RD 數(shù)據(jù)集共有50 000 條軌跡, 我們使用了25 000 條軌跡作為訓(xùn)練集, 按照漢明重量分布, 對(duì)各類(lèi)別添加的軌跡數(shù)量為(6725, 6065, 4100, 1350, 1350, 4100, 6050, 6725), 攻擊結(jié)果如圖5 所示.
圖5 AES_RD 的攻擊結(jié)果Figure 5 Attack results of AES_RD
在文獻(xiàn)[12] 中, 對(duì)應(yīng)的攻擊結(jié)果在25 000 條攻擊軌跡下, 即使用SMOTE 技巧來(lái)平衡原始訓(xùn)練集,GE 仍然無(wú)法收斂到零. 而我們的方法能夠帶來(lái)顯著的提升, 四種方法在25 000 條軌跡之內(nèi)都能夠成功恢復(fù)密鑰, 并且只需使用將近一半的攻擊軌跡. 其中最好的結(jié)果是只需約7500 條軌跡, 對(duì)應(yīng)的方法是直接基于原始訓(xùn)練集來(lái)生成軌跡.
(1) 盡管可以看到我們的方法對(duì)于攻擊結(jié)果有明顯的改善, 但只從攻擊結(jié)果上無(wú)法看出是如何改善不平衡問(wèn)題的. 因此, 這里我們以ASCAD 的實(shí)驗(yàn)為例, 分別繪制出使用原始不平衡訓(xùn)練集所構(gòu)建模型以及優(yōu)化后模型的類(lèi)別預(yù)測(cè)比例, 兩次攻擊都使用相同的3000 條軌跡. 圖6(a) 中正確預(yù)測(cè)的類(lèi)別label = 4 所占比例最高, 其它正確預(yù)測(cè)的類(lèi)別個(gè)數(shù)很少, 甚至label = 0, 1, 7, 8 對(duì)應(yīng)的軌跡沒(méi)有一條被正確分類(lèi). 而通過(guò)CGAN 所生成的軌跡對(duì)原始訓(xùn)練集平衡后, 模型的類(lèi)別預(yù)測(cè)比例有了明顯的改善, 其中l(wèi)abel = 2, 3, 5, 6 的對(duì)應(yīng)軌跡被正確預(yù)測(cè)的數(shù)量大幅增加, 并且原始訓(xùn)練集中占比很少的類(lèi)別也出現(xiàn)了被正確預(yù)測(cè)的軌跡, 比如label = 1, 7. 從整個(gè)混淆矩陣來(lái)看,優(yōu)化后模型的類(lèi)別預(yù)測(cè)比例更加平衡, 而不是只集中在像label = 3, 4, 5 這樣的主類(lèi)上.
圖6 ASCAD 攻擊結(jié)果的混淆矩陣Figure 6 Confusion matrices for attack results of ASCAD
(2) 關(guān)于四種構(gòu)成CGAN 訓(xùn)練集的方法, 從上面的三個(gè)實(shí)驗(yàn)中, 可以看到?jīng)]有哪一種方法是絕對(duì)的好, 要實(shí)際測(cè)試過(guò)后才能確定. 比如上面的關(guān)于ASCAD 的實(shí)驗(yàn), 去除主類(lèi)label = 4 對(duì)應(yīng)的軌跡來(lái)構(gòu)成CGAN 的訓(xùn)練集是最好的方法, 我們從其原始訓(xùn)練集對(duì)應(yīng)模型的類(lèi)別預(yù)測(cè)比例可以看出, label = 4 對(duì)模型的影響很大, 因此直接拿掉label = 4 的軌跡來(lái)做軌跡生成, 效果更好. 而在AES_RD 的實(shí)驗(yàn)中, 我們也看到直接使用不平衡的原始訓(xùn)練來(lái)生成軌跡, 效果更好, 這也說(shuō)明在某些情況下, CGAN 的訓(xùn)練集需要由所有類(lèi)別的軌跡來(lái)構(gòu)成. 因此, 在使用CGAN 生成軌跡解決不平衡問(wèn)題時(shí), 要盡可能多嘗試幾種構(gòu)建其訓(xùn)練集的方法.
(3) 對(duì)比Picek 等[12]的相關(guān)工作, 我們的方法顯然更加有效. 直觀上來(lái)看, 兩種方法都是利用原始訓(xùn)練集中的軌跡來(lái)合成新的軌跡, 從信息論的角度來(lái)說(shuō), 信息并未增多, 但實(shí)際上合成的軌跡能夠增加信息的完整性. 簡(jiǎn)單地說(shuō)就是, 某一少數(shù)類(lèi)別的軌跡都來(lái)自同一分布, 由于相應(yīng)的軌跡數(shù)量過(guò)少, 無(wú)法表現(xiàn)出這一分布下的全部信息. 相比于SMOTE 中的軌跡合成方法, CGAN 是通過(guò)學(xué)習(xí)輸入軌跡所包含的分布, 盡可能使所生成的軌跡靠近原有分布, 這樣生成的軌跡顯然能夠體現(xiàn)出原有分布中的更多信息, 更好地對(duì)少數(shù)類(lèi)別樣本缺失的信息進(jìn)行彌補(bǔ).
本文研究了在基于機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的側(cè)信道建模攻擊中, 使用HW 和HD 作為標(biāo)簽帶來(lái)的數(shù)據(jù)不平衡問(wèn)題. 我們首次提出使用條件生成對(duì)抗網(wǎng)絡(luò)來(lái)生成軌跡, 從而構(gòu)建平衡的數(shù)據(jù)集. 實(shí)驗(yàn)結(jié)果表明, 由平衡后的訓(xùn)練集所構(gòu)建的模型具有更好的類(lèi)別預(yù)測(cè)比例, 能夠有效減少成功攻擊所需的軌跡條數(shù), 在有一階掩碼防護(hù)軟件實(shí)現(xiàn)、非對(duì)齊防護(hù)軟件實(shí)現(xiàn)以及無(wú)防護(hù)硬件實(shí)現(xiàn)的三種AES 數(shù)據(jù)集上均有很好的攻擊效果.
致謝
感謝中國(guó)科學(xué)技術(shù)大學(xué)信息科學(xué)實(shí)驗(yàn)中心提供的軟硬件服務(wù).