王 愷, 嚴(yán)迎建, 郭朋飛, 朱春生, 蔡爵嵩
戰(zhàn)略支援部隊(duì)信息工程大學(xué), 鄭州450001
隨著嵌入式密碼設(shè)備的廣泛應(yīng)用, 側(cè)信道攻擊(Side Channel Analysis/Attack, SCA) 成為其主要安全威脅之一, 攻擊者通過對密碼算法物理實(shí)現(xiàn)過程中的泄漏信息進(jìn)行分析, 進(jìn)而恢復(fù)密鑰信息. Kocher 于1996 年首次提出側(cè)信道攻擊[1], 通過對時(shí)間序列分析進(jìn)而恢復(fù)密鑰, 隨后于1999 年提出了更強(qiáng)大和更通用的攻擊形式, 稱為差分能量分析(DPA)[2], de Mulder 等人于2006 年提出了差分電磁攻擊(DEMA)技術(shù)[3]. 除了簡單和差分分析攻擊外, 模板攻擊[4]被認(rèn)為是最有效的攻擊方式, 它假設(shè)攻擊者在分析階段可以獲得一個相同的目標(biāo)設(shè)備, 并對目標(biāo)設(shè)備完全可控, 利用泄漏信號對隨機(jī)變量統(tǒng)計(jì)特性進(jìn)行建模, 在攻擊階段用判別分析的方法獲取目標(biāo)設(shè)備泄漏信息中所隱藏的秘密信息, 因此, 相應(yīng)的抗能量攻擊技術(shù)也成為當(dāng)前的研究熱點(diǎn)[5].
近年來, 密碼學(xué)界探索了基于機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的能量分析攻擊新方法, 這對加密算法實(shí)現(xiàn)的安全性造成了威脅. 深度學(xué)習(xí)使用深度神經(jīng)網(wǎng)絡(luò)從復(fù)雜數(shù)據(jù)中學(xué)習(xí)特征, 并對另一組數(shù)據(jù)分析做出決策, 具有良好的特征提取和分類功能, 深度神經(jīng)網(wǎng)絡(luò)在圖像識別、自然語言處理等方面取得了很好的效果[6]. 基于深度學(xué)習(xí)的能量分析攻擊方法主要應(yīng)用于模板型的攻擊場景, 劉飚等人[7,8]使用支持向量機(jī)(SVM) 方法對電磁泄漏信息進(jìn)行分析, 從而實(shí)現(xiàn)密鑰的恢復(fù). Lerman 等人[9]通過實(shí)驗(yàn)驗(yàn)證了SVM 算法可以對加掩碼防護(hù)的AES 算法實(shí)現(xiàn)攻擊. Maghrebi 等人[10]最早研究了深度學(xué)習(xí)在密碼算法實(shí)現(xiàn)中的應(yīng)用, 將多層感知器(MLP) 和卷積神經(jīng)網(wǎng)絡(luò)(CNN) 等深度學(xué)習(xí)模型應(yīng)用于SCA. Benadjila 等人[11]通過實(shí)驗(yàn)給出了MLP 模型和CNN 模型的超參數(shù)選擇的方案, 進(jìn)一步證明了深度學(xué)習(xí)在模板型SCA 中的強(qiáng)大功能, 他們的另一成果是發(fā)布了ASCAD 公開數(shù)據(jù)庫, 該數(shù)據(jù)庫可以對基于機(jī)器學(xué)習(xí)或深度學(xué)習(xí)的SCA 進(jìn)行效率和準(zhǔn)確性評估.
深度學(xué)習(xí)技術(shù)也可以用于非模板型攻擊和非對稱密碼體制的攻擊. Timon 等人[12]提出了的利用深度學(xué)習(xí)進(jìn)行側(cè)信道信息泄漏檢測, 針對非模板型攻擊的場景, 使用MLP 和CNN 進(jìn)行敏感性分析實(shí)現(xiàn)泄漏檢測, 并將其作為神經(jīng)網(wǎng)絡(luò)是否學(xué)習(xí)的新指標(biāo). Carbone 等人[13]提出了一種基于CNN 的模板型SCA, 通過深度學(xué)習(xí)技術(shù)對安全實(shí)現(xiàn)的RSA 算法實(shí)施攻擊, 使用CNN 模型對寄存器的地址或值進(jìn)行分類, 實(shí)驗(yàn)結(jié)果表明CNN 也可以攻擊非對稱密碼體制.
在典型的能量分析攻擊方法和上述基于深度學(xué)習(xí)的能量分析攻擊方法中, 都是假設(shè)在攻擊階段已知明文、密文或中間值信息, 但是在實(shí)際攻擊場景中, 很難滿足這個假設(shè), 為此, 羅漫[14]等人提出了使用“分而治之” 的方法, 直接以密鑰的最后2 個比特為攻擊目標(biāo), 在完全未知密文、明文及泄漏中間值的情況下,對電磁泄漏進(jìn)行了攻擊, 該模型使用典型的殘差網(wǎng)絡(luò)[15]進(jìn)行訓(xùn)練和測試, 但是該模型的不足是將一維電磁信號擴(kuò)展到二維后, 可能損失有效信息, 同時(shí)存在模型參數(shù)過多、恢復(fù)完整密鑰需要模型數(shù)量較多、建模過程需要的能量跡較多的缺點(diǎn). 宋治[16]使用Inception ResNet V2 對電磁泄漏信號進(jìn)行分類, 對AES密鑰進(jìn)行4 分類、8 分類、16 分類等一系列實(shí)驗(yàn).
本文的主要工作: 基于羅漫[14]等人的研究成果, 繼續(xù)對直接恢復(fù)密鑰的能量分析攻擊方法進(jìn)行深入研究, 針對FPGA 實(shí)現(xiàn)的AES 分組密碼算法進(jìn)行攻擊, 在建模和攻擊階段中, 采用“分而治之” 的策略,將分塊大小設(shè)置為8 比特, 分別對每個字節(jié)進(jìn)行建模和恢復(fù), 只需要16 個模型即可完成128 比特密鑰的恢復(fù), 有效減少了恢復(fù)完整密鑰所需的模型數(shù)量. 本文的創(chuàng)新點(diǎn)是使用數(shù)據(jù)增強(qiáng)技術(shù)對改進(jìn)的深度殘差網(wǎng)絡(luò)進(jìn)行訓(xùn)練, 對原始能量跡增加高斯噪聲和隨機(jī)相位抖動, 減少了訓(xùn)練階段過擬合現(xiàn)象的發(fā)生, 可以在較小的原始數(shù)據(jù)集條件下取得良好的訓(xùn)練和測試效果; 同時(shí)針對能量分析攻擊中的泄漏信息為一維時(shí)間序列的特點(diǎn), 使用一維卷積核代替二維卷積核進(jìn)行計(jì)算, 并且減少了全連接層節(jié)點(diǎn)的數(shù)量, 設(shè)計(jì)了1D-ResNet模型, 有效減少了模型的參數(shù)和訓(xùn)練時(shí)間, 節(jié)約了計(jì)算資源. 該模型在明文和密文完全未知的情況下對密鑰的1 個字節(jié)進(jìn)行恢復(fù), 平均測試精度達(dá)到65.48%, 相比于CNN 神經(jīng)網(wǎng)絡(luò)和MLP 神經(jīng)網(wǎng)絡(luò)模型分別提高了16.63% 和54.27%, 達(dá)到同樣的訓(xùn)練精度該模型的訓(xùn)練時(shí)間約為CNN 模型的一半. 通過在ASCAD公開數(shù)據(jù)庫上進(jìn)行測試和評估, 該模型要優(yōu)于文獻(xiàn)[11] 提出的MLP_best 和CNN_best 神經(jīng)網(wǎng)絡(luò)模型.
本文結(jié)構(gòu)安排如下: 第2 節(jié)簡要介紹殘差網(wǎng)絡(luò)的原理; 第3 節(jié)介紹了改進(jìn)殘差網(wǎng)絡(luò)的模型設(shè)計(jì)和攻擊流程; 第4 節(jié)介紹實(shí)驗(yàn)流程并分析實(shí)驗(yàn)結(jié)果, 驗(yàn)證了本文提出的1D-ResNet 模型的有效性; 第5 節(jié)對全文進(jìn)行總結(jié).
殘差網(wǎng)絡(luò)(Residual Network, ResNet) 是由何愷明博士于2015 年提出的[15], 在圖像識別與分類領(lǐng)域有廣泛應(yīng)用[17], 在ImageNet 比賽Classification 任務(wù)上獲得第一名. 當(dāng)前, 隨著高性能GPU 的發(fā)展,計(jì)算能力極大提高, 神經(jīng)網(wǎng)絡(luò)的層數(shù)可以非常深, 具有相當(dāng)大的潛在學(xué)習(xí)能力. 從理論上來說, 越深的神經(jīng)網(wǎng)絡(luò)越能提取出復(fù)雜的特征, 越能取得良好的分類效果, 但是深層神經(jīng)網(wǎng)絡(luò)的缺點(diǎn)需要訓(xùn)練的參數(shù)非常多,導(dǎo)致需要大量的計(jì)算資源, 并且在實(shí)際計(jì)算中, 隨著網(wǎng)絡(luò)層數(shù)的加深, 梯度大小會急劇下降, 存在梯度消失的現(xiàn)象, 這會導(dǎo)致學(xué)習(xí)速率非常緩慢. 在極少數(shù)情況下也會出現(xiàn)梯度急劇上升, 即梯度爆炸現(xiàn)象, 具體表現(xiàn)為在訓(xùn)練階段的精度比淺層網(wǎng)絡(luò)有所下降. 深度殘差網(wǎng)絡(luò)模型由于引入了殘差結(jié)構(gòu), 很好的解決了深層次網(wǎng)絡(luò)下梯度消失以及網(wǎng)絡(luò)難以訓(xùn)練的問題. 殘差結(jié)構(gòu)如圖1所示.
殘差塊通過引入x 的恒等映射連接,在網(wǎng)絡(luò)層數(shù)過深時(shí),通過將Y =F(x)+x 中F(x)擬合為0 來實(shí)現(xiàn)網(wǎng)絡(luò)恒等映射, 解決了網(wǎng)絡(luò)退化問題, 并且由于x 的引入使得反向傳播過程中導(dǎo)數(shù)值總是大于1, 防止了梯度消失. 文獻(xiàn)[15] 提出的殘差網(wǎng)絡(luò)包含了恒等塊(Identity Block) 和卷積塊(Convolutional Block)兩種結(jié)構(gòu), 如圖2 所示, 恒等塊的輸入與卷積層的輸出相連, 共同作為激活函數(shù)的輸入, 卷積塊將輸入經(jīng)過多層卷積和單層卷積結(jié)果相連后作為激活函數(shù)的輸入, 在每個卷積層后都使用批量歸一化層(Batch Normalization), 其作用是使輸出規(guī)范化為均值為0、方差為1 的正態(tài)分布, 保證所有訓(xùn)練數(shù)據(jù)為相同數(shù)量級, 使用以上這兩種模塊為基本單位, 搭建的ResNet-18 結(jié)構(gòu)如圖3 所示.
圖3 ResNet-18 結(jié)構(gòu)圖Figure 3 ResNet-18 structure
ResNet-18 由于面向上千種圖像分類任務(wù), 輸入數(shù)據(jù)為圖像, 輸出為上千種分類結(jié)果, 使用二維的卷積核進(jìn)行運(yùn)算, 模型參數(shù)量較大, 降低了訓(xùn)練與識別速度, 考慮到用于能量分析攻擊的輸入數(shù)據(jù)為一維時(shí)間序列, 并且分類結(jié)果是由所選擇密鑰的位數(shù)決定的, 當(dāng)選擇N 位密鑰時(shí), 分類結(jié)果最多為2N 種, 因此本文設(shè)計(jì)并提出了一維卷積殘差網(wǎng)絡(luò)(one-Dimensional Convolution Residual Network, 1D-ResNet) 模型, 有效減少了模型參數(shù)和訓(xùn)練時(shí)間, 具體結(jié)構(gòu)如圖4 所示.
圖4(a) 是殘差塊結(jié)構(gòu), 由恒等塊和卷積塊組成, 層間使用ReLu 作為激活函數(shù), 輸入經(jīng)過短路連接后通過最大值池化層輸出, 使用一維卷積核, 卷積核大小為N; 圖4(b) 是1D-ResNet 主體結(jié)構(gòu), 各殘差塊的卷積核個數(shù)分別為64、128、256、512, 全連接層的單元個數(shù)為512, 選擇8 比特密鑰為攻擊目標(biāo)時(shí), 模型輸出維度為28=256, 分別對應(yīng)256 種可能的密鑰(0x00、0x01、0x02、···、0xFE、0xFF).
表1 列出了1D-ResNet 與原始ResNet-18 的主要結(jié)構(gòu)及其參數(shù)量, 從對比結(jié)果可以看出, 當(dāng)卷積核大小N =3 時(shí), 1D-ResNet 的參數(shù)量約為ResNet-18 參數(shù)量的60%, 可以有效減少訓(xùn)練時(shí)間和計(jì)算資源.
數(shù)據(jù)增強(qiáng)(Data Augmentation) 是通過合成或者轉(zhuǎn)換的方式, 從有限的數(shù)據(jù)中生成新的數(shù)據(jù)的技術(shù),數(shù)據(jù)增強(qiáng)技術(shù)是一種克服數(shù)據(jù)不足和提高模型泛化能力的有效手段[18]. 在深度學(xué)習(xí)中, 一般要求樣本的數(shù)量要充足. 樣本數(shù)量越多, 訓(xùn)練出來的模型效果越好, 模型的泛化能力越強(qiáng). 通常在圖像分類任務(wù)中, 對于輸入的圖像進(jìn)行一些簡單的平移、縮放、顏色變換、對比度變換、增加噪聲等, 不會影響圖像的類別. 在小規(guī)模數(shù)據(jù)集上訓(xùn)練的神經(jīng)網(wǎng)絡(luò)很容易出現(xiàn)過擬合的問題, 因此針對這一難題, 在能量分析攻擊中, 為了訓(xùn)練后的神經(jīng)網(wǎng)絡(luò)模型具有更強(qiáng)的范化能力, 確保在較小的數(shù)據(jù)集條件下可以取得較好的訓(xùn)練效果, 本文使用了3 種數(shù)據(jù)增強(qiáng)技術(shù), 對采集到的原始能量跡增加高斯噪聲和進(jìn)行隨機(jī)相位抖動, 有效解決了訓(xùn)練數(shù)據(jù)集不足、深度神經(jīng)網(wǎng)絡(luò)模型過擬合和對原始能量跡過度記憶的問題, 提高了模型的魯棒性.
模型 1D-ResNet 模型 ResNet-18 模型輸入層 1×N, 64, stride2 7×7, 64, stride2[ 1×N,64 1×N,64]]×2[ 3×3,64 3×3,64×2[ 1×N,128 1×N,128]×2[ 3×3,128 3×3,128]×2主體結(jié)構(gòu)[ 1×N,256 1×N,256]×2[ 3×3,256 3×3,256]×2[ 1×N,512 1×N,512]×2[ 3×3,512 3×3,512]×2參數(shù)個數(shù) 2.05×107(N = 3) 3.4×107
3.2.1 增加高斯噪聲
噪聲通常是由外界干擾、儀器誤差、設(shè)備故障等原因引起, 常見的噪聲有隨機(jī)噪聲、高斯噪聲和泊松噪聲等. 使用高斯噪聲更能有效模擬能量跡的噪聲, 在原始能量跡采集完畢后, 使用以下步驟完成噪聲插入.
步驟1: 計(jì)算整條能量跡的均值M 和方差V;
步驟2: 選取合適的噪聲閾值T, 設(shè)置隨機(jī)噪聲點(diǎn)的個數(shù)為n=T ×N, 其中N 為曲線樣本點(diǎn)個數(shù);
步驟3: 在N 個樣本點(diǎn)中隨機(jī)選取n 個點(diǎn), 將其值更新為隨機(jī)值Urandom, 其取值范圍服從均值為M和方差為V 的正態(tài)分布.
采集到的原始能量跡如圖5(a) 所示, 當(dāng)噪聲閾值T 選擇0.1 時(shí), 增加高斯噪聲后的曲線如圖5(b) 所示, 可以看出噪聲點(diǎn)較多, 整條曲線的輪廓越變得不明顯.
3.2.2 隨機(jī)相位抖動
由于在波形采集過程中觸發(fā)信號存在誤差, 或者被測設(shè)備使用隨機(jī)延時(shí)、隨機(jī)時(shí)鐘頻率等防護(hù)對策,導(dǎo)致所采集的波形不能嚴(yán)格對齊, 因此在典型的相關(guān)能量分析、差分能量分析和模板攻擊的過程中, 首先需要對原始信號進(jìn)行對齊處理, 才能進(jìn)行后續(xù)的實(shí)驗(yàn)和分析. 根據(jù)經(jīng)驗(yàn), 未對齊波形的誤差主要包括相位誤差和振幅誤差, 處理振幅誤差相對容易, 但是處理相位誤差具有一定的難度. 因此, 為了提高神經(jīng)網(wǎng)絡(luò)對非對齊能量跡的處理能力, 在本實(shí)驗(yàn)中將采集到的原始信號添加隨機(jī)相位抖動Doffset, 其中Doffset 的取值范圍是[?d,d], d 為抖動范圍的最大值. 使用10 條原始能量跡進(jìn)行繪圖, 如圖6(a) 所示, 當(dāng)隨機(jī)抖動范圍d 為50 時(shí), 10 條能量跡如圖6(b) 所示, 可以看出波形相位移動較明顯.
3.2.3 同時(shí)增加高斯噪聲和隨機(jī)相位抖動
該方法是上述兩種方法的組合, 首先對能量跡數(shù)據(jù)增加高斯噪聲, 然后對數(shù)據(jù)進(jìn)行隨機(jī)相位抖動, 旨在進(jìn)一步提高所訓(xùn)練模型的泛化能力, 以解決深度學(xué)習(xí)小樣本訓(xùn)練的難題. 如圖7 所示, 使用10 條能量跡增加高斯噪聲, 噪聲閾值T 選擇為0.1, 然后進(jìn)行隨機(jī)相位抖動, 隨機(jī)抖動范圍d 為50, 可以看出各曲線完全錯亂.
圖7 同時(shí)增加高斯噪聲和隨機(jī)相位抖動后的能量跡Figure 7 Power traces with Gaussian noise and random phase jitter
3.3.1 數(shù)據(jù)采集
使用實(shí)驗(yàn)平臺對能量跡進(jìn)行采集, 并且完成能量跡相位和振幅進(jìn)行對齊. 以128 比特密鑰的最后8 比特作為建模和攻擊目標(biāo), 因此分別選取256 種固定密鑰, 使用隨機(jī)明文進(jìn)行加密, 每種密鑰采集100 條能量跡, 共計(jì)25 600 條能量跡. 最終隨機(jī)選取22 000 條能量跡構(gòu)建數(shù)據(jù)集, 其中20 000 條曲線為訓(xùn)練集,2000 條曲線為測試集, 單條能量跡的有效樣本點(diǎn)為2000 個.
3.3.2 數(shù)據(jù)預(yù)處理
使用3.2 節(jié)提出的三種數(shù)據(jù)增強(qiáng)方法, 對原始能量跡增加高斯噪聲和隨機(jī)相位抖動, 因此共得到4個數(shù)據(jù)集用于后續(xù)實(shí)驗(yàn): 數(shù)據(jù)集A 為原始能量跡; 數(shù)據(jù)集B 為增加高斯噪聲后的能量跡, 噪聲閾值T = 0.10; 數(shù)據(jù)集C 為隨機(jī)相位抖動后的能量跡, 抖動范圍取值d = 50; 數(shù)據(jù)集D 為同時(shí)增加高斯噪聲和隨機(jī)相位抖動的能量跡, 噪聲閾值T =0.10, 抖動范圍取值d=50.
3.3.3 模型參數(shù)選擇
將ResNet-18 網(wǎng)絡(luò)中二維卷積核改進(jìn)為一維卷積核后, 為了訓(xùn)練出最優(yōu)的1D-ResNet 模型, 使用數(shù)據(jù)集A 對激活函數(shù)類型、卷積核大小、訓(xùn)練批量大小設(shè)置等參數(shù)進(jìn)行選擇, 通過實(shí)驗(yàn)選取用于能量分析攻擊的最優(yōu)參數(shù). 同時(shí)對多層感知器神經(jīng)網(wǎng)絡(luò)(MLP 模型) 和卷積神經(jīng)網(wǎng)絡(luò)(CNN 模型) 進(jìn)行參數(shù)選擇,使用數(shù)據(jù)集A 對MLP 模型的全連接層數(shù)、各層節(jié)點(diǎn)數(shù)、各層激活函數(shù)和學(xué)習(xí)率進(jìn)行選擇; 對CNN 模型的卷積核大小、個數(shù)和卷積步長、卷積層數(shù)、池化層數(shù)、全連接層數(shù)進(jìn)行選擇, 確保各模型在數(shù)據(jù)集A 上達(dá)到最佳訓(xùn)練精度.
3.3.4 模型訓(xùn)練和測試
完成數(shù)據(jù)采集、預(yù)處理和模型參數(shù)選擇后, 分別對4 個數(shù)據(jù)集進(jìn)行訓(xùn)練和測試. 使用20000 條訓(xùn)練集數(shù)據(jù)進(jìn)行訓(xùn)練, 訓(xùn)練批量大小設(shè)置為200, 為了對比各種模型的預(yù)測精度并節(jié)約訓(xùn)練時(shí)間, 迭代次數(shù)epoch統(tǒng)一設(shè)置為100. 每次訓(xùn)練完畢后, 記錄訓(xùn)練精度和訓(xùn)練損失曲線, 并保存模型用于測試. 在測試階段, 使用2000 條測試集數(shù)據(jù)進(jìn)行測試, 記錄測試精度, 對模型的有效性進(jìn)行評價(jià), 攻擊流程如圖8 所示.
本文實(shí)驗(yàn)使用SAKURA-G 開發(fā)板, FPGA 芯片為XILINX SPARTAN-6 系列芯片, 控制芯片型號為XC6SLX9, AES 加密算法芯片為XC6SLX75, 示波器采樣率設(shè)置為250 MSa/s. 實(shí)驗(yàn)中使用的AES算法由SAKURA 官方網(wǎng)站提供[19]. 使用Python 語言為編程環(huán)境, 使用TensorFlow 框架進(jìn)行神經(jīng)網(wǎng)絡(luò)的訓(xùn)練和測試.
本文實(shí)驗(yàn)所使用的能量跡采集平臺如圖9 所示, 主要包括數(shù)字示波器、PC、FPGA 開發(fā)板和外接電源, 采集流程如下:
(1) PC 將AES 算法加密所需要的明文、密鑰發(fā)送至FPGA 開發(fā)板;
(2) FPGA 開發(fā)板中控制芯片接收PC 輸入, 并控制加密芯片開始工作, 同時(shí)向示波器發(fā)出觸發(fā)信號;
(3) 示波器收到觸發(fā)信號后開始采集能量跡數(shù)據(jù), 并將數(shù)據(jù)儲存;
(4) PC 收到FPGA 返回的加密信息, 并從示波器中讀取能量跡, 記錄明文、密鑰、密文信息, 完成一次能量跡采集;
(5) 重量上述(1)–(4) 步驟, 完成實(shí)驗(yàn)所需要的大批量數(shù)據(jù).
圖9 能量跡采集平臺示意圖Figure 9 Schematic diagram of power traces acquisition platform
4.2.1 噪聲閾值和抖動范圍值選擇
通過設(shè)置不同的噪聲閾值和抖動范圍值生成訓(xùn)練數(shù)據(jù), 并使用1D-ResNet 模型對數(shù)據(jù)進(jìn)行訓(xùn)練, 訓(xùn)練精度和訓(xùn)練損失如圖10 所示. 圖10(a) 和圖10(b) 分別為噪聲閾值T = 0、0.05、0.10 和0.15 時(shí)的訓(xùn)練精度和訓(xùn)練損失曲線, 其中T = 0 為原始能量跡, 可以看出噪聲閾值越大, 訓(xùn)練精度的上升和訓(xùn)練損失的下降越慢; 圖10(c) 和圖10(d) 分別為抖動范圍值d = 0、50、100 和150 時(shí)的訓(xùn)練精度和訓(xùn)練損失曲線,其中d = 0 為原始能量跡, 可以看出抖動范圍值越大, 訓(xùn)練精度的上升和訓(xùn)練損失的下降越慢. 從圖10 中可以看出, 除原始能量跡外, 當(dāng)T = 0.10 和d = 50 時(shí)訓(xùn)練效果最好, 因此在生成數(shù)據(jù)集B、C、D 時(shí)將噪聲閾值T 設(shè)置為0.10, 抖動范圍值d 設(shè)置為50.
4.2.2 激活函數(shù)類型選擇
使用數(shù)據(jù)集A 分別對ReLu 激活函數(shù)、tanh 激活函數(shù)和線性激活函數(shù)進(jìn)行實(shí)驗(yàn), 訓(xùn)練批量大小設(shè)置為200, 共進(jìn)行50 次迭代, 訓(xùn)練精度和訓(xùn)練損失曲線如圖11所示, 可以看出ReLu 激活函數(shù)性能最好, 進(jìn)行15 次迭代后訓(xùn)練精度達(dá)到90%, 線性激活函數(shù)性能最差. 模型訓(xùn)練完畢后使用測試集對模型進(jìn)行測試,測試精度分別為81.3%、81.2%、44.8%, 未發(fā)生過擬合現(xiàn)象, 因此1D-ResNet 模型使用ReLu 函數(shù)為激活函數(shù).
4.2.3 卷積核大小選擇
使用數(shù)據(jù)集A 進(jìn)行實(shí)驗(yàn), 使用ReLu 激活函數(shù), 訓(xùn)練批量大小設(shè)置為200, 共進(jìn)行50 次迭代, 一維卷積核大小分別設(shè)置為3、5、7、9、11, 卷積步長設(shè)置為1. 訓(xùn)練精度和訓(xùn)練損失如圖12 所示, 測試結(jié)果對比如表2 所示, 可以看出當(dāng)一維卷積核大小設(shè)置為9 或11 時(shí), 訓(xùn)練精度上升較快, 當(dāng)卷積核大小為11 時(shí),測試精度并沒有提高, 相反訓(xùn)練時(shí)間變長, 因此在本文實(shí)驗(yàn)中卷積核大小選取為9.
卷積核大小 3 5 7 9 11訓(xùn)練精度 99.98% 99.99% 99.78% 99.98% 99.93%測試精度 81.25% 82.50% 83.05% 84.35% 83.50%
4.3.1 不同模型性能對比
使用數(shù)據(jù)集A 對1D-ResNet 模型、CNN 模型和MLP 模型進(jìn)行訓(xùn)練和測試并尋找最優(yōu)參數(shù). CNN模型的卷積核大小為11、卷積步長為2、使用ReLu 激活函數(shù), 共有12 個卷積層、6 個池化層和2 個全連接層; MLP 模型的全連接層數(shù)為8 層、各層節(jié)點(diǎn)數(shù)為300、各層間使用ReLu 激活函數(shù)、學(xué)習(xí)率為0.000 06. 數(shù)據(jù)集A 的訓(xùn)練精度曲線和訓(xùn)練損失曲線如圖13 所示, 可以看出1D-ResNet 模型經(jīng)過20 次迭代后訓(xùn)練精度達(dá)到90% 以上, MLP 模型和CNN 模型訓(xùn)練精度增長較慢.
4.3.2 1D-ResNet 模型性能對比
分別使用4 個數(shù)據(jù)集, 對1D-ResNet 模型進(jìn)行訓(xùn)練, 訓(xùn)練精度曲線和訓(xùn)練損失曲線如圖13 所示. 可以看出使用訓(xùn)練集A 進(jìn)行訓(xùn)練時(shí), 訓(xùn)練精度提升很快, 訓(xùn)練損失下降也很快, 經(jīng)過30 次迭代, 訓(xùn)練精度接近100%. 使用數(shù)據(jù)增強(qiáng)后的的3 個訓(xùn)練集進(jìn)行訓(xùn)練時(shí), 訓(xùn)練精度上升較慢, 尤其是使用原始數(shù)據(jù)進(jìn)行隨機(jī)相位偏后生成的訓(xùn)練集C 進(jìn)行訓(xùn)練時(shí), 在迭代60 次左右時(shí)訓(xùn)練精度才接近100%.
4.3.3 使用ASCAD 數(shù)據(jù)庫訓(xùn)練
ASCAD 數(shù)據(jù)庫是由Benadjila 等人在文獻(xiàn)[11] 中提出的, 該數(shù)據(jù)庫可以對基于機(jī)器學(xué)習(xí)或深度學(xué)習(xí)的SCA 進(jìn)行效率和準(zhǔn)確性評估. ASCAD 數(shù)據(jù)庫由50 000 條訓(xùn)練曲線和10 000 條測試曲線構(gòu)成, 單條曲線樣本點(diǎn)個數(shù)為700 個. 文獻(xiàn)[11] 對比了MLP 模型和CNN 模型不同參數(shù)對模型性能的影響, 最終通過實(shí)驗(yàn)訓(xùn)練出MLP_best 和CNN_best 兩個最優(yōu)模型. 本實(shí)驗(yàn)中使用1D-ResNet 模型對ASCAD 數(shù)據(jù)庫進(jìn)行訓(xùn)練和測試, 根據(jù)文獻(xiàn)[11] 中相關(guān)結(jié)論, 訓(xùn)練批量大小設(shè)置為200, 共進(jìn)行75 次迭代, 訓(xùn)練完畢后使用文獻(xiàn)[11] 中提出的方法對最優(yōu)模型進(jìn)行性能測試和評估.
4.4.1 測試結(jié)果分析
為了對比實(shí)驗(yàn)效果, 同時(shí)使用4 個數(shù)據(jù)集分別對1D-ResNet 模型、CNN 模型、MLP 模型進(jìn)行訓(xùn)練,并記錄實(shí)驗(yàn)結(jié)果. 使用數(shù)據(jù)集A 對各模型的最優(yōu)參數(shù)進(jìn)行選擇, 使用數(shù)據(jù)集B、C、D 對模型進(jìn)行測試和對比, 訓(xùn)練精度和測試精度對比如表3所示.
模型名稱 模型 數(shù)據(jù)集A 數(shù)據(jù)集B 數(shù)據(jù)集C 數(shù)據(jù)集D 平均值1D-ResNet 訓(xùn)練精度 99.98% 99.99% 99.78% 99.98% 99.93%測試精度 83.45% 56.00% 73.35% 49.10% 65.48%CNN 訓(xùn)練精度 64.89% 58.45% 67.09% 59.60% 62.51%測試精度 56.10% 43.45% 52.65% 43.20% 48.85%MLP 訓(xùn)練精度 37.62% 55.71% 23.62% 66.34% 45.82%測試精度 21.10% 3.40% 19.05% 1.30% 11.21%
從表3 可以看出, 經(jīng)過100 次迭代后, 各個數(shù)據(jù)集上1D-ResNet 模型的訓(xùn)練精度都接近于100%,CNN 模型和MLP 模型的訓(xùn)練精度分別比1D-ResNet 模型低37.42% 和54.11%, 說明1D-ResNet 模型對能量跡數(shù)據(jù)有很強(qiáng)的特征提取能力. MLP 模型使用數(shù)據(jù)集B 和數(shù)據(jù)集D 進(jìn)行訓(xùn)練和測試時(shí), 訓(xùn)練精度要遠(yuǎn)大于測試精度, 說明在訓(xùn)練期間使用數(shù)據(jù)增強(qiáng)時(shí)模型發(fā)生了過擬合和過度記憶訓(xùn)練數(shù)據(jù)的問題, 所以在模型測試時(shí)表現(xiàn)極差, 錯誤率很高, 因此增加高斯噪聲對MLP 模型影響較大, 通過噪聲進(jìn)行數(shù)據(jù)增強(qiáng)不適用于MLP 模型. 1D-ResNet 模型的平均測試精度分別比CNN 模型和MLP 模型高16.63% 和54.27%, 平均測試精度為65.48%.
不同模型性能對比如表4 所示, 1D-ResNet 模型相比于其它兩種神經(jīng)網(wǎng)絡(luò)模型, 訓(xùn)練精度和測試精度都比較高, 在相同硬件配置的條件下, 訓(xùn)練時(shí)間為CNN 模型的1.8 倍, 參數(shù)個數(shù)是CNN 模型的1.4 倍.引入噪聲和隨機(jī)相位抖動后, 訓(xùn)練精度為60% 時(shí), 所需迭代次數(shù)只需要CNN 模型的十分之一. 該模型相比于文獻(xiàn)[14] 中使用的4 分類模型預(yù)測精度要低26.32%, 主要原因是256 分類任務(wù)相比于4 分類任務(wù),所使用的訓(xùn)練集所包含的有效信息變少, 導(dǎo)致分類精度下降.
對比內(nèi)容 1D-ResNet 模型 CNN 模型 MLP 模型單個epoch 時(shí)間 36.55 s 20.38 s 2.73 s模型參數(shù)個數(shù) 2.89×108 2.02×108 1.22×107激活函數(shù)類型 Relu Relu Relu模型層數(shù) 18 20 8訓(xùn)練精度達(dá)30% 時(shí)epoch 數(shù) 2 15 73
4.4.2 ASCAD 數(shù)據(jù)庫測試結(jié)果分析
使用ASCAD 數(shù)據(jù)庫經(jīng)過75 次迭代后完成1D-ResNet 模型訓(xùn)練, 訓(xùn)練精度為98.00%, 訓(xùn)練消耗總時(shí)間與文獻(xiàn)[11] 中CNN_best 模型基本相同. 使用文獻(xiàn)[11] 中提出的rank 函數(shù)對模型性能進(jìn)行測試和評估, rank 函數(shù)是側(cè)信道攻擊中用于評估攻擊性能的常用指標(biāo). 使用3000 條測試曲線對模型進(jìn)行測試, 結(jié)果如圖15所示, 其橫坐標(biāo)為曲線數(shù)量, 縱坐標(biāo)為rank 值, 當(dāng)rank 值為0 時(shí)代表當(dāng)前密鑰恢復(fù)正確.圖15(a) 為曲線最大抖動值Nmax=50 時(shí)測試結(jié)果, 可以看出當(dāng)曲線數(shù)量為350 時(shí), 紅色曲線rank 值降低為0, 可以恢復(fù)出正確密鑰; 圖15(b) 為曲線最大抖動值Nmax= 100 時(shí)測試結(jié)果, 當(dāng)曲線數(shù)量為2400時(shí), 可以恢復(fù)出正確密鑰. 因此, 1D-ResNet 模型性能要優(yōu)于文獻(xiàn)[11] 中的MLP_best 和CNN_best 兩個最優(yōu)模型.
本文使用改進(jìn)的殘差網(wǎng)絡(luò)對FPGA 實(shí)現(xiàn)的AES 密碼算法進(jìn)行了能量分析攻擊, 以密鑰字節(jié)為攻擊目標(biāo), 采用“分而治之” 的策略逐個進(jìn)行恢復(fù). 針對經(jīng)典殘差網(wǎng)絡(luò)在能量分析攻擊中的不足, 提出一種改進(jìn)的一維卷積殘差網(wǎng)絡(luò)1D-ResNet 模型, 該模型將二維卷積核替換為適用于處理能量跡的一維卷積核, 有效減少了模型參數(shù)和訓(xùn)練時(shí)間. 在訓(xùn)練過程中, 為了避免模型在小樣本數(shù)據(jù)集難以訓(xùn)練和出現(xiàn)過擬合的問題, 使用數(shù)據(jù)增強(qiáng)技術(shù), 通過引入高斯噪聲和隨機(jī)相位抖動, 提升了模型的性能, 確保模型在較小的數(shù)據(jù)集下能取得較好的訓(xùn)練和測試效果. 在攻擊階段對明文和密文完全未知的情況下, 直接對8 比特密鑰進(jìn)行256 分類的預(yù)測, 平均測試精度可以達(dá)到65.48%. 同時(shí)為了驗(yàn)證1D-ResNet 模型的有效性, 在ASCAD公開數(shù)據(jù)上進(jìn)行測試和評估, 結(jié)果表明該模型要優(yōu)于MLP_best 模型和CNN_best 模型, 通過實(shí)驗(yàn)驗(yàn)證了該模型的可行性和有效性, 為能量分析攻擊提供了一種新的思路. 但本文實(shí)驗(yàn)僅對128 比特密鑰中的最后8 比特進(jìn)行了恢復(fù), 如果使用該方法完成全部128 比特密鑰建模需要的曲線數(shù)量較多, 因此如何使用有限數(shù)量的曲線進(jìn)行建模和恢復(fù)完整密鑰, 并將深度學(xué)習(xí)技術(shù)應(yīng)用于非模板型能量分析攻擊, 是下一步的研究方向.