周梓馨 張功萱 寇小勇 楊 威
(南京理工大學(xué)計算機(jī)科學(xué)與工程學(xué)院 南京 210094)
隨著信息技術(shù)的發(fā)展,嵌入式設(shè)備的數(shù)量日益增長,其安全性越來越受到重視,側(cè)信道攻擊是主要威脅之一[1].側(cè)信道攻擊的核心思想是利用密碼芯片運行過程中泄露的物理信息獲取密鑰信息(如功耗、電磁輻射等).根據(jù)對目標(biāo)設(shè)備的訪問和控制級別,側(cè)信道分析可以分為2類:建模攻擊(如模板攻擊[2])和非建模攻擊(如差分能量攻擊[3]).側(cè)信道建模攻擊假設(shè)攻擊者擁有與目標(biāo)設(shè)備相同類型的設(shè)備,并對其擁有充分的訪問控制權(quán)限,攻擊者通過對相同類型設(shè)備充分學(xué)習(xí)后將擁有對該設(shè)備的刻畫能力,并嘗試將這種刻畫應(yīng)用到目標(biāo)設(shè)備進(jìn)行攻擊.機(jī)器學(xué)習(xí)的方法可以很容易地將非線性處理用于側(cè)信道攻擊[4-8]:Masure等人[9]通過信息論的研究證明了神經(jīng)網(wǎng)絡(luò)在側(cè)信道攻擊中的效果;Valk等人[10]通過引入猜測熵偏差方差分解,進(jìn)一步提高了神經(jīng)網(wǎng)絡(luò)在側(cè)信道攻擊中的可解釋性.
隨著深度學(xué)習(xí)的興起,側(cè)信道攻擊研究者在監(jiān)督學(xué)習(xí)下使用深度神經(jīng)網(wǎng)絡(luò)構(gòu)建攻擊模型進(jìn)行側(cè)信道攻擊[11-13]:Maghrebi等人[11]證明了基于深度學(xué)習(xí)的側(cè)信道攻擊可以有效地攻擊未采用掩碼保護(hù)的AES算法實現(xiàn).Timon[14]首次實現(xiàn)了在非監(jiān)督學(xué)習(xí)下使用深度學(xué)習(xí)進(jìn)行非建模攻擊,攻擊密鑰的一個字節(jié)時,針對密鑰空間的每一個猜測密鑰建立1個模型進(jìn)行攻擊.Maghrebi等人和Cagli等人[11-12]通過構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)攻擊模型成功地過濾了AES實現(xiàn)的失調(diào)對策;Carbone等人[13]成功地攻擊了采用失調(diào)對策的公鑰實現(xiàn):多層感知機(jī)同樣可以很好地攻擊采取失調(diào)對策的加密措施[12,15].Perin等人[1]通過集成學(xué)習(xí)將多個簡單模型進(jìn)行集成來達(dá)到強(qiáng)模型的攻擊效果,為深度學(xué)習(xí)側(cè)信道攻擊領(lǐng)域提供了一種新思路.Maghrebi[16]提出一種新的基于多標(biāo)簽分類的方法,使得模型從8 b密鑰塊到更大的密鑰塊(16 b)的攻擊而不引入額外的開銷.Picek等人[17]深入研究了機(jī)器學(xué)習(xí)側(cè)信道攻擊中存在數(shù)據(jù)不平衡的優(yōu)點與缺點,并使用各種數(shù)據(jù)平衡方法提高攻擊效果,攻擊所需能量跡數(shù)量減少7/8.Cagli等人[12]提出一種基于CNN的端到端的分析方法,在能量跡存在偏差的情況下可以簡化評估過程.Lu等人[18]提出一種基于注意力機(jī)制[19-23]端到端的處理原始能量跡的方法,構(gòu)建了一個基于編碼器架構(gòu)的模型,但該模型的循環(huán)層不能并行化,訓(xùn)練時將耗費大量時間.Kwon等人[24]使用降噪標(biāo)簽,通過真實數(shù)據(jù)中的噪聲訓(xùn)練自編碼器,訓(xùn)練好的自編碼器可以用于預(yù)處理,降低輸入數(shù)據(jù)中的噪聲.Prouff等人[25]提出了特定數(shù)據(jù)集的超參數(shù)選擇方法,但僅僅局限于特定的數(shù)據(jù)集.Zaid等人[26]提出了一種構(gòu)建高效CNN架構(gòu)的方法,依據(jù)可視化技術(shù)(如熱圖、梯度可視化、權(quán)重可視化)的結(jié)果選擇超參數(shù).Rijsdijk[27]使用強(qiáng)化學(xué)習(xí)尋找最佳超參數(shù),但該方法目前僅適用于可訓(xùn)練超參數(shù)比較少的情況.
目前基于深度學(xué)習(xí)的側(cè)信道攻擊攻擊成功仍然需要大量能量跡,模型效率有待進(jìn)一步提升;模型在訓(xùn)練時存在快速過擬合[12,14,25,28]以及深度學(xué)習(xí)所具有的梯度消失、收斂速度慢等問題.通過使用數(shù)據(jù)增強(qiáng)[12]、添加噪聲到輸入能量跡[15]中、隨機(jī)移位[25,28]等方法可以緩解過擬合問題,但無法從根本上解決該問題.Vaswani等人[29]在2017年首次提出自注意力機(jī)制,并基于自注意力機(jī)制提出了可以并發(fā)訓(xùn)練的新模型Transformer,使用全局視角對特征分配注意力,解決了卷積神經(jīng)網(wǎng)絡(luò)的局部特征提取能力不足的問題,同時結(jié)合丟棄層和殘差網(wǎng)絡(luò),解決了傳統(tǒng)神經(jīng)網(wǎng)絡(luò)在模型訓(xùn)練時存在的快速過擬合和梯度消失問題.然而,Transformer結(jié)構(gòu)并不適用于側(cè)信道攻擊,因為其采用了多層編碼器解碼器架構(gòu)用于解決NLP領(lǐng)域中文本前后的關(guān)聯(lián)性,而在側(cè)信道攻擊中,能量跡之間沒有時序關(guān)系.側(cè)信道攻擊模型屬于建模階段建立的一個分類模型,與攻擊階段獨立.本文借鑒了Transformer架構(gòu)中的編碼器設(shè)計,將自注意力機(jī)制引入側(cè)信道攻擊中并提出一個基于自注意力機(jī)制的深度學(xué)習(xí)側(cè)信道攻擊模型SADLSCA,通過開展實驗驗證了SADLSCA的高效性.本文的主要貢獻(xiàn)有3個方面:
1) 引入自注意力機(jī)制用于側(cè)信道攻擊,使深度學(xué)習(xí)側(cè)信道攻擊有新的特征提取方式,并在公開數(shù)據(jù)集ASCAD(1)ASCAD數(shù)據(jù)集獲取地址為https://github.com/ANSSI-FR/ASCAD和CHES CTF 2018(2)CHES CTF 2018數(shù)據(jù)集獲取地址為https://chesctf.riscure.com/2018news上通過實驗驗證了自注意力機(jī)制在側(cè)信道攻擊中有良好的特征提取效果;
2) 基于自注意力機(jī)制構(gòu)建一個深度學(xué)習(xí)側(cè)信道攻擊模型SADLSCA,解決了快速過擬合、梯度消失、收斂速度慢等問題,并在公開數(shù)據(jù)集上表現(xiàn)出良好的攻擊效果,驗證了SADLSCA在側(cè)信道攻擊時的可用性和高效性;
3) 通過對單層編碼器結(jié)構(gòu)的模型進(jìn)行實驗測試,給出了單層編碼器結(jié)構(gòu)的模型達(dá)到最佳性能效果的常用超參數(shù)數(shù)值.
用T表示能量跡集合,T=(t1,t2,…,tN);N表示集合中能量跡的數(shù)量;P表示明文或密文集合;K表示密鑰集合;Y表示與P和K相關(guān)的中間值變量,分別由pi,j,ki,j,yi,j組成,其中i表示能量跡的取值范圍,j表示字節(jié)的索引.
深度學(xué)習(xí)側(cè)信道攻擊本質(zhì)上屬于建模攻擊,模型由深度學(xué)習(xí)構(gòu)建.在構(gòu)建攻擊密鑰的第j個字節(jié)的模型時,使用一個大小為N的訓(xùn)練集,ti,f為訓(xùn)練集中的第i條能量跡的第f個特征值,與ti對應(yīng)的中間值為yi,j=f(pi,j,ki,j).本文使用的泄露函數(shù)為
yi,j=Sbox(pi,j⊕ki,j),
(1)
其中,⊕為異或運算,Sbox對應(yīng)S盒,是AES算法的字節(jié)替換運算.
在建模階段,使用泄露函數(shù)計算每條能量跡的中間值作為其標(biāo)簽.隨機(jī)將數(shù)據(jù)pi和密鑰ki輸入到受控設(shè)備后,采集該設(shè)備泄露的物理信息得到能量跡.訓(xùn)練完成后,從受控設(shè)備采集1個驗證集數(shù)據(jù)用于驗證模型的泛化能力.在攻擊階段,從擁有未知密鑰k*的待攻擊設(shè)備上收集攻擊集數(shù)據(jù),將攻擊集數(shù)據(jù)輸入模型得到輸出.根據(jù)模型的輸出計算可能性最大的猜測密鑰概率pk,并認(rèn)為它是真正的密鑰k*.其理論依據(jù)為貝葉斯公式與極大似然相關(guān):
pk=P[k|T]=
(2)
其中,pk表示使用Na條能量跡攻擊的情況下,根據(jù)模型的輸出計算每個猜測密鑰的概率.在Na越小、正確密鑰k*對應(yīng)的概率pk*越大的情況下,模型效果越好.
Picek等人[17]提出精確率、召回率等常見的機(jī)器學(xué)習(xí)指標(biāo)與成功率、猜測熵等常見的側(cè)信道攻擊指標(biāo)之間存在不一致性,即機(jī)器學(xué)習(xí)常用指標(biāo)并不適合作為側(cè)信道攻擊模型的評估指標(biāo).Standaert等人[30]指出側(cè)信道攻擊中的標(biāo)準(zhǔn)度量是成功率和猜測熵.Zhang等人[31]在數(shù)據(jù)不平衡的條件下使用交叉熵比指標(biāo)比交叉熵指標(biāo)更適用于評估側(cè)信道攻擊中深度學(xué)習(xí)模型的性能.Masure等人[9]證明了在深度學(xué)習(xí)側(cè)信道攻擊模型中選擇最小負(fù)對數(shù)似然損失函數(shù)(NLL)是有效的.Zaid等人[32]提出了排名損失函數(shù),與交叉熵?fù)p失函數(shù)相比,估計誤差減少23%.在模型的訓(xùn)練階段,由于排名損失函數(shù)會耗費極大的計算資源而得不償失,所以只要所選的損失函數(shù)可以保證模型在訓(xùn)練過程中使得輸入所對應(yīng)的輸出分類標(biāo)簽的概率最大即可,最終選擇的損失函數(shù)為交叉熵?fù)p失函數(shù):
(3)
其中,n為能量跡的個數(shù),q(ti)為模型對第i條能量跡預(yù)測的概率分布,p(ti)為第i條能量跡的真實概率分布.在驗證和攻擊階段,使用成功率和猜測熵揭示正確的密鑰.攻擊階段中,給定Na條能量跡,以概率遞減的順序輸出猜測向量:g=(g1,g2,…,g|K|),其中,|K|為密鑰空間大小.成功率定義為g1等于真實密鑰k*的平均經(jīng)驗概率;猜測熵定義為k*在猜測向量g中的平均位置.
在側(cè)信道攻擊領(lǐng)域中, Lu等人[23]首次提出了一種基于注意力機(jī)制的端到端處理原始能量跡的方法.Vaswani等人[29]首次提出自注意力機(jī)制,并基于自注意力機(jī)制提出一種新的簡單的網(wǎng)絡(luò)結(jié)構(gòu)Trasnformer,完全基于注意力機(jī)制,不需要任何卷積操作,具有更高的并行化能力,減少了訓(xùn)練時間.2021年,Dosovitskiy等人[33]提出的模型Vision Transformer是基于Vaswani提出的自注意力機(jī)制構(gòu)建的一種高效圖片分類模型.Vaswani和Dosovitskiy等人提出的自注意力機(jī)制和模型適用于圖像分類,不能用于側(cè)信道攻擊領(lǐng)域,本文對其作了優(yōu)化使其適用于側(cè)信道攻擊.
注意力函數(shù)是將1個查詢Query(Q)和1個鍵值對集合(K,V)映射到1個輸出Output的函數(shù)(此處的K與上文的密鑰集合不同),其中Q,K,V和Output都是向量.輸出Output是由值的加權(quán)和計算得出,分配給每個值的權(quán)重由Q與相應(yīng)的K計算出的矩陣決定.具體結(jié)構(gòu)如圖1(a)所示:
圖1 自注意力機(jī)制
對于能量跡集合T中的第i條能量跡ti,j,其有n個特征點,即j=1,2,…,n,為了簡潔表示,此處記ti,j為Xj,計算注意力的過程如圖1(b)所示.輸入的能量跡、變換后的Q,K,V以及輸出Output都是長度為n的向量.輸出Output是加權(quán)后得到的,重要的特征將會得到更大的值.本文使用的是縮放點積自注意力,公式為
(4)
其中,n為一條能量跡的特征數(shù)量,Dropout以概率p丟棄輸入的每一個特征,丟棄層可以對模型正則化,避免模型快速過擬合.文獻(xiàn)[29]證明了縮放點積自注意力機(jī)制將使模型更快地收斂并且空間效率更高.
與文獻(xiàn)[29]不同的是,能量跡輸入是一維數(shù)據(jù).不考慮能量跡之間的關(guān)聯(lián)性,因為能量跡之間的關(guān)聯(lián)性體現(xiàn)在攻擊階段,建立模板階段只考慮分類問題,這是側(cè)信道模板攻擊和NLP的顯著區(qū)別.因此,放棄了多頭注意力和掩蔽多頭注意力機(jī)制以適應(yīng)對1維能量跡分配注意力的場景.具體地,Input是1條維度為1×n的能量跡,Q,K,V由輸入的能量跡經(jīng)過LayerNormal對其n個點進(jìn)行正則化后分別進(jìn)入3個全連接網(wǎng)絡(luò)學(xué)習(xí)得到,其中LayerNormal歸一化可以加速網(wǎng)絡(luò)收斂速度.然后Q和K進(jìn)行矩陣點積運算進(jìn)入匹配操作,緊接著Softmax層用于歸一化不同特征所分配到的注意力大小.Dropout可以對其正則化,這使得訓(xùn)練出的網(wǎng)絡(luò)模型泛化能力更強(qiáng).然后將最終注意力與V進(jìn)行矩陣點積運算,將不重要的特征點賦予極小的權(quán)值,從而屏蔽能量跡中不重要的點集,賦予大的權(quán)值給重要的特征來提取出對模型分類重要的興趣點,完成特征提取操作.
本節(jié)將詳細(xì)介紹SADLSCA模型.首先用實驗驗證自注意力機(jī)制在側(cè)信道攻擊領(lǐng)域是有效的.對輸入的能量跡進(jìn)行1層全連接分類,如圖2所示,猜測熵沒有收斂到0.然后在輸入和含有256個神經(jīng)元的全連接層之間放入圖1的注意力機(jī)制模塊,再次訓(xùn)練模型,猜測熵可以收斂到0,至此驗證了自注意力模塊可以提取特征.
Transformer結(jié)構(gòu)采用了多層編碼器解碼器架構(gòu)用于解決NLP領(lǐng)域中文本前后的關(guān)聯(lián)性,而在側(cè)信道攻擊中,能量跡之間沒有時序關(guān)系.因此龐大的Transformer架構(gòu)并不適用于側(cè)信道攻擊.本文采納了Transformer和Vision Transformer編碼器部分的優(yōu)點,構(gòu)建了輕量級的適用于側(cè)信道攻擊的模型SADLSCA,如圖3所示.模型分為3部分:輸入數(shù)據(jù)處理、編碼器、分類頭.
圖2 單層神經(jīng)網(wǎng)絡(luò)
圖3 SADLSCA模型結(jié)構(gòu)
輸入數(shù)據(jù)處理由BatchNormal[34],Positional Encoding[29]和Dropout[35]這3個模塊組成.BatchNormal用于對輸入數(shù)據(jù)進(jìn)行歸一化,加速模型的訓(xùn)練速度,使得模型更快地收斂.Positional Encoding用于對輸入數(shù)據(jù)進(jìn)行位置編碼.Vaswani等人[29]指出自注意力機(jī)制的運算方式會丟失特征的時序關(guān)系,所以需要對能量跡的位置信息進(jìn)行編碼,編碼后的每條能量跡特征之間的時序關(guān)系被唯一確定.位置編碼使得能量跡的每個特征都是獨一無二的,避免了打亂特征位置放入模型卻得到相同的輸出.在1條能量跡中,尤其是采用了防護(hù)措施的數(shù)據(jù)集上,能量跡中的特征點的位置關(guān)系極其重要,因為和能量泄露的時間點相關(guān)聯(lián).Vaswani提出相應(yīng)的位置編碼公式,由于能量跡的特征是1維數(shù)字,無法直接使用Vaswani提供的公式,所以選擇了文獻(xiàn)[33]中Dosovitskiy提出的位置編碼思想,直接對輸入的能量跡加上相同維度的可訓(xùn)練參數(shù)即可.Dropout是丟棄層,以概率p丟棄輸入的每個特征,丟棄層可以對模型正則化,避免模型快速過擬合.
編碼器是模型最核心的部分,主要有Self-Attention和MLP Block 2部分.編碼器的設(shè)計使得輸入與輸出保持相同的形狀,因此可以疊加多層編碼器以適應(yīng)大數(shù)據(jù)集的訓(xùn)練,使得模型效果更佳.編碼器總體結(jié)構(gòu)采用2層殘差結(jié)構(gòu)便于梯度反向傳播,使得梯度有效回傳,加快模型收斂的速度,解決了梯度消失和模型收斂速度慢的問題.對于編碼器的輸入X和輸出Y滿足如下公式:
Z=X+W0(fDropout(SATTN(X)))+b0,
(5)
Y=Z+MB(LNORM(Z)),
(6)
MB(X)=fDropout(W2(fDropout(fGELU(W1Z+
b1)))+b2),
(7)
其中:SATTN函數(shù)為圖1對應(yīng)的式(4),用于計算注意力W0,W1,W2為全連接網(wǎng)絡(luò)的矩陣;b0,b2,b2為其對應(yīng)的偏置參數(shù);MB(X)為MLP Block所對應(yīng)的網(wǎng)絡(luò);fDropout為丟棄層網(wǎng)絡(luò).
在編碼器中,LayerNormal用于標(biāo)準(zhǔn)化每條能量跡的特征,加速模型的收斂速度.能量跡進(jìn)入3個不同的全連接網(wǎng)絡(luò)得到3個相同形狀的向量Q,K,V,用于求自注意力.此處的LayerNormal,Q,K,V和自注意力模塊與圖1的結(jié)構(gòu)完全相同,拆分出來僅僅是為了方便觀察殘差結(jié)構(gòu),該模塊可以并行化訓(xùn)練,減少模型的訓(xùn)練時間.編碼器中的線性層和丟棄層與輸入保持相同的形狀,其中丟棄層用于正則化以避免模型在訓(xùn)練過程中快速過擬合的狀況.
編碼器中多層感知機(jī)塊(MLP Block)的設(shè)計借鑒了文獻(xiàn)[33]的結(jié)構(gòu)和經(jīng)驗,一共2層全連接,第1層全連接網(wǎng)絡(luò)的神經(jīng)元個數(shù)是輸入特征個數(shù)的4倍;第2層全連接網(wǎng)絡(luò)的神經(jīng)元個數(shù)與多層感知機(jī)輸入的特征數(shù)量相同,GELU激活函數(shù)避免了模型在輸入數(shù)值比較小的情況下梯度消失的問題,文獻(xiàn)[25]證明了在建模階段GELU激活函數(shù)會表現(xiàn)得更好.2個Dropout層對模型正則化,避免模型快速過擬合.
MLP Head由3層全連接網(wǎng)絡(luò)和2層RELU激活函數(shù)層組成:第1層全連接網(wǎng)絡(luò)的神經(jīng)元個數(shù)是輸入數(shù)據(jù)特征的一半;第2層全連接網(wǎng)絡(luò)用于分類,其神經(jīng)元個數(shù)由泄露函數(shù)決定,取值9或256.第1層全連接網(wǎng)絡(luò)神經(jīng)元個數(shù)減半是為了剔除一半不重要的特征,將重要的特征壓縮,從而提取出比較重要的特征.同理,第2層網(wǎng)絡(luò)在第1層網(wǎng)絡(luò)的基礎(chǔ)上再次減少一半的特征數(shù)量,最終使用第2層全連接網(wǎng)絡(luò)進(jìn)行進(jìn)一步分類達(dá)到更佳效果,這種神經(jīng)網(wǎng)絡(luò)設(shè)計借鑒了卷積網(wǎng)絡(luò)中全連接網(wǎng)絡(luò)展開層的設(shè)計.RELU使模型在輸入數(shù)值大于0 的情況下梯度可以快速地反向傳播,模型會更加關(guān)注對正確分類起到?jīng)Q定性作用的特征.模型在訓(xùn)練過程中不需要Softmax層,直接使用Pytorch集成的交叉熵?fù)p失函數(shù)可以獲得更好的數(shù)值穩(wěn)定性.在攻擊階段需要先使用Softmax層輸出各個類別的所占權(quán)重的比例.
值得注意的是,當(dāng)編碼器只有1個時SADLSCA屬于簡單模型,可以在小數(shù)據(jù)集上訓(xùn)練出很好的效果.當(dāng)數(shù)據(jù)集增大時,為了使得模型效果更好,有2個方法:第一,增加編碼器的個數(shù),雖然模型中使用多個編碼器會訓(xùn)練更長時間,編碼器并行化訓(xùn)練加速模型收斂速度.同時,Vaswani等人[29]指出當(dāng)數(shù)據(jù)集比較大時,編碼器的疊加效果將更好.第二,由于SADLSCA在編碼器個數(shù)為1的情況下仍然屬于簡單模型,并且可以收斂,Perin等人[1]證明了集成方法在機(jī)器學(xué)習(xí)側(cè)信道攻擊領(lǐng)域內(nèi)仍然有效,SADLSCA單層編碼器模型是屬于簡單模型,可以使用集成的方法.
實驗環(huán)境為Python3.8+Pytorch1.8.1+cuda10.1;服務(wù)器內(nèi)存為128 GB,顯卡為GM206GL;顯存為4 GB.
使用的數(shù)據(jù)集為ASCAD和CHES CTF 2018,是采集電磁輻射的能量跡組成的數(shù)據(jù)集.本文的分析同樣可以擴(kuò)展到其他側(cè)信道攻擊泄露數(shù)據(jù)集,如能耗泄露.
1) ASCAD數(shù)據(jù)集.
ASCAD數(shù)據(jù)集[25]是由Prouff發(fā)布的,由屏蔽AES-128在8位微控制器(ATmega8515)上軟件實現(xiàn)時被采集的測量值組成,算法實現(xiàn)采用了布爾掩蔽對策和隨機(jī)延遲對策.在第1輪加密中,與密鑰關(guān)聯(lián)的第1個字節(jié)和第2個字節(jié)未受到掩碼保護(hù),即前2個字節(jié)的掩碼為0,其余14個密鑰字節(jié)掩碼都是隨機(jī)的.其中有2個數(shù)據(jù)集版本,第1版本數(shù)據(jù)集擁有5萬條能量跡用于訓(xùn)練神經(jīng)網(wǎng)絡(luò),1萬條能量跡用于攻擊,且它們的密鑰是固定的,每條能量跡包含700個時間樣本點(特征).注意,這1萬條能量跡拆分成2份,各5 000條分別用于驗證和攻擊,記為ASCAD_fixed_key.第2版本數(shù)據(jù)集包含20萬條能量跡用于訓(xùn)練神經(jīng)網(wǎng)絡(luò)且密鑰可變,10萬條能量軌跡用于攻擊且密鑰固定,每條能量跡包含1 400個時間樣本點(特征).同樣將這1萬條能量跡拆分成2份用于驗證和攻擊,記為ASCAD_variable_key.
2) CHES CTF 2018數(shù)據(jù)集.
該數(shù)據(jù)集是2018年密碼硬件和嵌入式系統(tǒng)會議(the Conference on Cryptographic Hardware and Embedded Systems, CHES)發(fā)布的.該數(shù)據(jù)集由屏蔽AES-128運行在32位STM微控制器上的測量值組成.算法實現(xiàn)采用布爾掩蔽對策且16位掩碼隨機(jī)生成.訓(xùn)練集包含4.5萬條能量跡且密鑰固定,驗證集和攻擊集各含2 500條能量跡且密鑰固定,攻擊集和驗證集密鑰相同但與訓(xùn)練集的密鑰不同.每條能量跡由2 200個時間樣本(特征)組成,記為CHES_CTF_2018.
SADLSCA中網(wǎng)絡(luò)的權(quán)重分布初始化為均值為0、標(biāo)準(zhǔn)差為1的正態(tài)分布,位置編碼可學(xué)習(xí)參數(shù)初始化為0.
在模型訓(xùn)練時選擇了一些超參數(shù),本文參考已有的參數(shù)選擇建議[1,25,29-30],以下的超參數(shù)取值是窮舉了參數(shù)部分取值得出的較好選擇.一些超參數(shù)的選擇如表1所示.
超參數(shù)的介紹和選擇理由如下:
1)batch_size設(shè)置為512,即每批次讀取512條能量跡放入模型進(jìn)行訓(xùn)練.
2)epochs用于控制模型訓(xùn)練的次數(shù).
3)learining_rate的設(shè)置一共3種:0.000 05,0.000 01和0.000 005.
4)leakage_model有很多可選項,模型在ASCAD數(shù)據(jù)集上訓(xùn)練時設(shè)置為具有256個密鑰空間的中間值模型.在CHES_CTF_2018上訓(xùn)練模型時,設(shè)置為漢明重量模型.
5)num_class數(shù)值由泄露模型決定,所以這個超參數(shù)設(shè)置為256和9(對應(yīng)漢明重量模型).
6)target_byte是被攻擊密鑰的字節(jié)索引(從0開始),在攻擊ASCAD數(shù)據(jù)集時設(shè)置為2,即攻擊密鑰的第3個字節(jié).在攻擊CHES_CTF_2018數(shù)據(jù)集時設(shè)置為0.
7)target_dataset有3個可選項,分別為ASCAD_v1_fixed_key, ASCAD_v1_variable_key, CHES_CTF_2018,用于加載不同數(shù)據(jù)集的參數(shù)信息.
8)dropout用于控制丟棄層丟棄神經(jīng)元的概率,可以單獨為每個丟棄層設(shè)置不同的概率,避免快速過擬合的狀況.
9)num_features與數(shù)據(jù)集能量跡的特征數(shù)量保持一致.
10)depth用于設(shè)置編碼器的個數(shù)以適用于不同大小的數(shù)據(jù)集.
11)kr_step用于控制在攻擊階段中求取key rank的步長,可以使得攻擊效果穩(wěn)定,采取Perin的實現(xiàn)源碼的數(shù)值[1],設(shè)置為10.
12)runs用于設(shè)置混洗次數(shù),設(shè)置為100.在攻擊階段求猜測熵時會對模型的輸出混洗多次進(jìn)行攻擊,然后取其平均值作為最終攻擊結(jié)果.
表1 超參數(shù)的選擇
本節(jié)主要通過實驗證明SADLSCA對解決快速過擬合、梯度消失和收斂速度慢等問題的效果,實驗在數(shù)據(jù)集ASCAD_fixed_key上進(jìn)行驗證,實驗參數(shù)與3.6節(jié)的ASCAD_fixed_key實驗中的設(shè)置相同,默認(rèn)為3.4節(jié)中推薦的參數(shù)選擇.
圖4 dropout的不同取值對depth不同模型攻擊時的正則化效果
ASCAD_fixed_key是1個小數(shù)據(jù)集,在訓(xùn)練的過程中最容易發(fā)生快速過擬合的狀況,本文在該數(shù)據(jù)集上通過實驗探究SADLSCA中的dropout層是否能解決機(jī)器學(xué)習(xí)側(cè)信道攻擊領(lǐng)域中快速過擬合的問題.隨著網(wǎng)絡(luò)層數(shù)的加深,模型在訓(xùn)練過程中梯度反向傳播會出現(xiàn)減弱甚至消失的情況,SADLSCA收斂速度會變慢,針對該數(shù)據(jù)集使網(wǎng)絡(luò)模型采用不同depth值進(jìn)行實驗,并分析SADLSCA是否能解決梯度消失和收斂速度慢的問題.其中dropout設(shè)置為0~0.9,步長為0.1;depth設(shè)置為1~6,步長為1;其余超參數(shù)與3.6節(jié)的ASCAD_fixed_key實驗中設(shè)置相同,保持固定.
圖4示出depth為1~6,dropout分別為0.1,0.3,0.5,0.7和0.9,迭代1~600次時模型攻擊成功所需要的能量跡數(shù)量.當(dāng)depth=1時,為了對比效果,將dropout=0時的結(jié)果也進(jìn)行了繪圖,即圖5(a)中depth=1的藍(lán)色曲線,可以很明顯觀察到,其和dropout=0.1時相似,很快可以達(dá)到最佳攻擊效果,SADLSCA僅僅需要迭代100次便可以使用25條能量跡攻擊成功,并且比dropout=0.1時收斂更快,但也很快出現(xiàn)過擬合的狀況,隨著迭代次數(shù)的增加,其攻擊成功所需要的能量跡數(shù)量逐漸增加.然而dropout為0.5,0.7和0.9時就相對平緩很多,沒有出現(xiàn)過擬合的狀況,但隨著dropout的增大,模型的收斂速度會變慢,這是預(yù)料之中的,因為丟棄的概率越大,模型擬合的效果就被削弱得更大,在減少過擬合的同時也減少了模型正常擬合的效果.
隨著depth增加,過擬合狀況會增強(qiáng),以dropout為0.1為例,當(dāng)depth增加到3,4,5時,SADLSCA在迭代600次時想要攻擊成功需要100條左右能量跡數(shù)量,過擬合極其嚴(yán)重,這也反向說明了編碼器塊數(shù)的增加(即模型深度增加)會加速模型擬合效果,網(wǎng)絡(luò)收斂所需要的迭代次數(shù)也明顯減少(depth為1時需要100次迭代,depth為5時僅僅需要50次左右),這也側(cè)面驗證了SADLSCA縱向擴(kuò)展(增加網(wǎng)絡(luò)深度)是有效的.同時也驗證了SADLSCA在網(wǎng)絡(luò)層數(shù)加深的情況下不會出現(xiàn)梯度消失和收斂速度慢的問題,這個效果來源于殘差網(wǎng)絡(luò)結(jié)構(gòu).
depth增加的同時,增加dropout同樣可以抑制過擬合,直觀地看,在該數(shù)據(jù)集上dropout為0.5和0.7時較好,SADLSCA整體表現(xiàn)得較為平緩.若繼續(xù)增加dropout,模型收斂速度太慢,反而丟失了性能,花費太多時間訓(xùn)練模型得不償失,比如在depth為6,dropout為0.9時,圖5中甚至沒有紫色的曲線,這是因為模型在訓(xùn)練600次依舊沒有收斂到很好的攻擊效果,其攻擊成功所需能量跡超過200條,所以不在圖中顯示,事實上其攻擊成功所需要的能量跡已經(jīng)超過500條.
雖然模型攻擊效果的評價指標(biāo)是猜測熵,但模型在訓(xùn)練時采用的交叉熵?fù)p失函數(shù),兩者雖然不是絕對的同步關(guān)系,但相關(guān)性依然很大,否則也不會在模型訓(xùn)練階段采用交叉熵?fù)p失函數(shù).為了驗證droput取值對模型最終猜測熵的影響是否與模型訓(xùn)練時損失值有關(guān),給出了模型depth分別為1,3和5以及各個dropout數(shù)值對模型訓(xùn)練時在驗證集上的損失指標(biāo)變化情況,如圖6所示:
圖5 dropout的不同取值對depth不同模型訓(xùn)練時的正則化效果
圖5說明了當(dāng)dropout增加時會緩解快速過擬合的狀況,不考慮圖中dropout為0.9的情況(因為由圖4和之前的分析,這種情況下模型沒有很好地收斂),即使在depth增加的情況下,dropout的增加依然可以很好地緩解過擬合,這也驗證了dropout可以緩解模型訓(xùn)練時的過擬合狀況.
本文通過公開的數(shù)據(jù)集驗證了SADLSCA用于側(cè)信道攻擊是有效的,這3個數(shù)據(jù)集為ASCAD_fixed_key,ASCAD_variable_key,CHES_CTF_2018.如無特別說明,超參數(shù)默認(rèn)為3.4節(jié)中給出的數(shù)值.
1) ASCAD_fixed_key.
訓(xùn)練集包含5萬條能量跡,驗證集和攻擊集合各500條能量跡用于驗證和攻擊,且密鑰都是固定且相同的,每條能量跡包含700個時間樣本點.設(shè)置學(xué)習(xí)率learining_rate為0.000 01,epochs為200,depth為1,target_byte為2(第3個字節(jié)),runs為100,圖6展示了SADLSCA(黃色和綠色)以及現(xiàn)有的方法模型在訓(xùn)練迭代次數(shù)為134和216情況下150條能量跡對該數(shù)據(jù)集進(jìn)行攻擊的猜測熵(圖6(a))和成功率(圖6(b))的具體變化情況;圖6(a)中紅色曲線所對應(yīng)的模型是由文獻(xiàn)[25]針對ASCAD數(shù)據(jù)集提供的開源的并訓(xùn)練好的最佳CNN模型,模型迭代訓(xùn)練75次,由6層CNN網(wǎng)絡(luò)組成,每層200個神經(jīng)元個數(shù),batch_size=200,num_class=256;圖6(a)中藍(lán)色曲線對應(yīng)的Ensemble模型是由文獻(xiàn)[1]提供的開源集成學(xué)習(xí)模型,且集成的是MLP模型,使用漢明重量泄露模型,num_class為9,按照其最佳參數(shù)設(shè)置模型,一共50個模型,每個模型迭代50次,每個模型的模型超級參數(shù)由給定范圍的數(shù)值區(qū)間中取得.
圖6(a)示出SADLSCA在迭代134和216次情況下的猜測熵變化,SADLSCA猜測熵很快就降到0(為了直觀地通過結(jié)果對比得出結(jié)論,對猜測熵取對數(shù)并繪圖),比最佳CNN模型和集成學(xué)習(xí)模型效果更好.圖6(a)中紅色曲線的震蕩展示了最佳CNN模型攻擊效果的不穩(wěn)定性,這種不穩(wěn)定性一方面來自CNN只能提取局部空間信息的特性,而SADLSCA以全局視角提取特征信息;另一方面來源其runs為1,求得的是單次結(jié)果,中間出現(xiàn)震蕩意味著并沒有真正收斂,而SADLSCA和集成模型的結(jié)果runs為100,求的是平均值,而且自注意機(jī)制擅長以全局視角提取特征,因此SADLSCA的數(shù)值曲線更加穩(wěn)定平滑.藍(lán)色曲線表示的集成學(xué)習(xí)雖然比較穩(wěn)定,但其收斂速度顯然沒有SADLSCA快,甚至在使用了150條能量跡攻擊下猜測熵沒有收斂到0,其最終在數(shù)值350時收斂,這是因為集成學(xué)習(xí)模型的效果比較穩(wěn)定.圖6(b)展示了SADLSCA的成功率,數(shù)值大約在25可以攻擊成功,與最佳CNN模型需要數(shù)值在55附近才能穩(wěn)定相比,減少了54.5%的能量跡數(shù)量,SADLSCA更加穩(wěn)定,整體曲線平滑;與集成學(xué)習(xí)模型需要數(shù)值在350附近才能收斂的結(jié)果相比,減少了91%的能量跡數(shù)量,SADLSCA攻擊效果更好.同時注意到,迭代次數(shù)為134和216的攻擊結(jié)果卻相近,這是由于模型中Dropout模塊起到了正則化的作用,避免了模型快速擬合.
圖6 學(xué)習(xí)率為0.000 01、epochs為134和216的猜測熵和成功率
2) ASCAD_variable_key.
訓(xùn)練集包含20萬條能量跡且密鑰隨機(jī),驗證集和攻擊集各5 000條能量跡用于驗證和攻擊并且密鑰固定,每條能量跡包含1 400個時間樣本點,該數(shù)據(jù)集合比較大.
設(shè)置學(xué)習(xí)率learining_rate為0.000 01,epochs為200,target_byte為2(第3個字節(jié)),runs為100,圖7(a)展示了SADLSCA(黃色和綠色)以及現(xiàn)有的方法模型訓(xùn)練迭代次數(shù)為67和78情況下150條能量跡對該數(shù)據(jù)集進(jìn)行攻擊的猜測熵(圖7(a))和成功率(圖7(b))的具體變化情況.其中紅色曲線所對應(yīng)的模型是最佳CNN模型[25],藍(lán)色曲線所對應(yīng)的Ensemble曲線是集成學(xué)習(xí)模型[1].
圖7 學(xué)習(xí)率為0.000 01、epochs為67和78的猜測熵和成功率
圖7(a)的結(jié)果展示了SADLSCA在迭代67和78次情況下猜測熵的變化,圖7(a)中黃色和綠色曲線是SADLSCA分別在迭代67,78次下的攻擊結(jié)果,最終收斂于數(shù)值50左右.圖7(a)中紅色曲線的震蕩原因與3.4節(jié)ASCAD_fixed_key中的原因相同,最佳CNN模型最終收斂于數(shù)值70左右.同時藍(lán)色曲線表示的集成學(xué)習(xí)收斂速度顯然沒有SADLSCA快,其最終在數(shù)值65左右收斂.圖7(b)同樣清晰展示了SADLSCA的成功率,綠色曲線是SADLSCA迭代78時的攻擊成功率,數(shù)值大約在50~60之間可以攻擊成功,與最佳CNN模型需要數(shù)值在70附近才能穩(wěn)定相比,減少了28.6%的能量跡數(shù)量,SADLSCA更加穩(wěn)定,整體曲線平滑;與集成學(xué)習(xí)模型需要數(shù)值在65附近才能收斂的結(jié)果相比,減少了23.1%的能量跡數(shù)量,同樣彰顯了SADLSCA的高效性.
圖8 epochs為10,13,15,17,18的猜測熵和成功率
3) CHES _CTF_2018.
因為該數(shù)據(jù)集已經(jīng)進(jìn)行過預(yù)處理,所以模型中的BatchNormal對于該數(shù)據(jù)集而言是多余的模塊.訓(xùn)練集包含4.5萬條能量跡且密鑰固定,驗證集和攻擊集各250條能量跡用于驗證和攻擊,密鑰固定且與訓(xùn)練集密鑰不同,每條能量跡包含2 200個時間樣本點.設(shè)置學(xué)習(xí)率learining_rate為0.000 05,epochs為100,depth為1,target_byte為0(第1個字節(jié)),runs為100,dropout為0.1和0.2,leakage_model為HW(漢明重量模型),圖8展示了模型以及使用集成學(xué)習(xí)模型在訓(xùn)練次數(shù)分別為10,13,15,17,18的情況下進(jìn)行攻擊求得的猜測熵(圖8(a))和成功率(圖8(b))的具體變化情況,圖8(a)中藍(lán)色曲線對應(yīng)的Ensemble模型是由文獻(xiàn)[1]提供的開源集成學(xué)習(xí)模型,其余曲線都是SADLSCA在不同迭代次數(shù)下的攻擊效果,具體見圖例.
圖8(a)展示了集成MLP網(wǎng)絡(luò)的方式在處理CHES_CT_2018數(shù)據(jù)集時不能收斂,與文獻(xiàn)[1]結(jié)論相同,這是由于該數(shù)據(jù)集生成的過程中使用了隨機(jī)掩碼,而MLP網(wǎng)絡(luò)空間平移不變性較差,導(dǎo)致MLP模型攻擊效果較差.圖8(b)展示了SADLSCA在數(shù)值大約為175時可以攻擊成功,此時成功率為1.與文獻(xiàn)[1]中使用集成學(xué)習(xí)對50個CNN模型分別訓(xùn)練50次進(jìn)行集成的方法需要300條能量跡攻擊才能收斂相比,攻擊所需能量跡數(shù)量減少了41.7%,同時SADLSCA是單層編碼器且僅需10~20次訓(xùn)練就達(dá)到這個攻擊效果,收斂速度很快并且攻擊效果更好.
本文主要的研究工作是在深度學(xué)習(xí)側(cè)信道攻擊中引入了自注意力機(jī)制,對自注意力機(jī)制作了詳細(xì)介紹并使其適用于深度學(xué)習(xí)側(cè)信道攻擊.基于自注意力機(jī)制構(gòu)建了一個深度學(xué)習(xí)側(cè)信道攻擊模型SADLSCA,解決了基于深度學(xué)習(xí)的側(cè)信道攻擊模型在訓(xùn)練時存在的快速過擬合、梯度消失和收斂速度慢等問題,并在ASCAD_v1_fixed_key,ASCAD_v1_variable_key,CHES_CTF_2018這3個公開數(shù)據(jù)集上進(jìn)行實驗,實驗結(jié)果驗證了SADLSCA的可用性和高效性,同時本文給出了SADLSCA可以達(dá)到很好攻擊效果的常用超參數(shù)數(shù)值.
攻擊階段中,猜測熵的計算所耗費的內(nèi)存空間與攻擊集中能量跡的數(shù)量成正比,計算猜測熵會極大地消耗存儲資源和計算資源.Transformer架構(gòu)[29]的輸出是狀態(tài)的疊加,攻擊過程中猜測熵的求解也是狀態(tài)的疊加,兩者有著天然的關(guān)聯(lián).因此,下一步我們將主要研究使用Transformer解碼器架構(gòu)構(gòu)建模型取代模板攻擊中的攻擊階段,避免攻擊階段中猜測熵的計算,提升攻擊效率.