曹家華, 吳 震, 王 燚, 王 敏
(成都信息工程大學(xué)網(wǎng)絡(luò)空間安全學(xué)院,四川 成都 610225)
密碼算法在理論上得到了密碼學(xué)家的嚴(yán)格審查,但是從物理實(shí)施的角度來看,密碼算法仍然很脆弱,密碼設(shè)備的運(yùn)行過程中不可避免地存在著電磁輻射、能量消耗、時(shí)間變化或之類的側(cè)信道泄露。側(cè)信道攻擊(side channel attack,SCA)就是一種利用這些側(cè)信道泄露來破解秘密信息的攻擊方法。Kocher[1]根據(jù)操作私鑰所需要的時(shí)間,實(shí)現(xiàn)了對RSA算法的側(cè)信道攻擊,大量研究成果表明無保護(hù)措施的密碼設(shè)備基本難以抵抗側(cè)信道攻擊。能量分析攻擊屬于側(cè)信道攻擊中應(yīng)用較為廣泛的一種,其中簡單能量分析[2]、相關(guān)性能量分析[3-4]和差分能量分析[5]常用于直接對目標(biāo)設(shè)備的功耗信息進(jìn)行攻擊。而模板攻擊[6]則需要攻擊者擁有與目標(biāo)設(shè)備相同類型的設(shè)備,并假設(shè)功耗噪聲服從高斯分布來構(gòu)造漢明重量模板或中間值模板,然后利用這些模板對密鑰進(jìn)行恢復(fù)。
S-Box功耗隨機(jī)化[7]是一種抵抗能量分析攻擊的常見策略,主要分為能量值隨機(jī)化和時(shí)間隨機(jī)化。能量值隨機(jī)化方法以添加掩碼來實(shí)現(xiàn),通常可以使用高階差分能量分析[8]完成攻擊。時(shí)間隨機(jī)化方法旨在打亂中間值出現(xiàn)的時(shí)間點(diǎn),導(dǎo)致攻擊者無法有效捕獲中間值的能量信息,差分能量分析攻擊和傳統(tǒng)模板攻擊方法在面對這類防御手段時(shí)往往表現(xiàn)出很差的攻擊效果。
近年來,大量實(shí)驗(yàn)證明卷積神經(jīng)網(wǎng)絡(luò)能夠構(gòu)建更為高效的模板[9]。Cagli等[10]提出了一種卷積神經(jīng)網(wǎng)絡(luò)與數(shù)據(jù)增強(qiáng)相結(jié)合的方法,這種方法不需要對齊能量軌跡和選擇興趣點(diǎn),減少了傳統(tǒng)能量分析攻擊中的任務(wù)量。Benadjila等[11]全面測試了卷積神經(jīng)網(wǎng)絡(luò)中各類參數(shù)對模板攻擊的影響,通過組合每一類參數(shù)的最優(yōu)值,提出了基于VGG-16網(wǎng)絡(luò)結(jié)構(gòu)的卷積神經(jīng)網(wǎng)絡(luò)模型CNNbest,并通過實(shí)驗(yàn)證明了CNNbest在ASCAD數(shù)據(jù)集上的攻擊效果要優(yōu)于傳統(tǒng)模板攻擊、多層感知器模型和原始VGG-16模型。Zaid等[12]提出了一種使用排序損失函數(shù)代替CNNbest中交叉熵?fù)p失函數(shù)的方案,并驗(yàn)證了該方案能夠使CNNbest模型更快地收斂到最佳狀態(tài)。為有效地構(gòu)建S-Box功耗隨機(jī)化的模板,文中將使用卷積神經(jīng)網(wǎng)絡(luò)構(gòu)建基本模型,并從損失函數(shù)的角度對其優(yōu)化。
卷積神經(jīng)網(wǎng)絡(luò)主要通過卷積層、池化層和全連接層實(shí)現(xiàn)對輸入樣本的分類。卷積層通過卷積運(yùn)算和激活函數(shù)將本層輸入數(shù)據(jù)的特征提取出來,然后傳遞給池化層。池化層通過最大池化或平均池化進(jìn)行下采樣,以此降低卷積層的輸出維度,實(shí)現(xiàn)模型的平移不變性。全連接層負(fù)責(zé)在最后對數(shù)據(jù)進(jìn)行分類,通過特征加權(quán)得到每個類別的置信度分?jǐn)?shù),然后經(jīng)過分類函數(shù)的計(jì)算得到輸入樣本的類別。在側(cè)信道攻擊中通常使用一維卷積和一維池化,計(jì)算過程如圖1所示。

圖1 一維卷積與池化
卷積神經(jīng)網(wǎng)絡(luò)中除了各層網(wǎng)絡(luò)結(jié)構(gòu)之外,另一個對模型性能有較大影響的因素是損失函數(shù)。損失函數(shù)能夠表現(xiàn)出模型的預(yù)測值和真實(shí)值之間的差異程度,使用合適的損失函數(shù),并盡可能降低損失函數(shù)的計(jì)算結(jié)果是優(yōu)化模型的一種方法。常見的損失函數(shù)有平均絕對誤差、均方誤差以及交叉熵(cross entropy,CE)等,通常模板攻擊使用Softmax交叉熵作為損失函數(shù)。以AES加密算法為例,以首輪加密中S-Box輸出的一個字節(jié)為中間值,在明文已知的情況下,該中間值和密鑰滿足一一映射的關(guān)系,因此中間值的概率分布與對應(yīng)位置密鑰的概率分布一致。假設(shè)密鑰的取值集合為K={0,1,…,255},定義k∈K表示一個猜測密鑰,yk表示猜測密鑰k對應(yīng)的真實(shí)標(biāo)簽,pk表示猜測密鑰k的預(yù)測概率,可以得到單個樣本的Softmax交叉熵?fù)p失:

卷積神經(jīng)網(wǎng)絡(luò)在功耗泄露明顯的數(shù)據(jù)中能取得很好的訓(xùn)練效果,但對于S-Box功耗隨機(jī)化數(shù)據(jù)的效果卻很差。主要是基于以下兩個原因:一是大多數(shù)卷積神經(jīng)網(wǎng)絡(luò)使用Softmax交叉熵作為損失函數(shù),這無法保證模型學(xué)習(xí)到的正對之間特征差異較小而負(fù)對之間特征差異較大。因此,在泄露信息極少的功耗隨機(jī)化數(shù)據(jù)中,不同密鑰所帶來的功耗差異沒有被有效地提取。Softmax交叉熵以最大化同一批樣本的條件概率之和來降低模型的損失,但是功耗隨機(jī)化導(dǎo)致同一批的各個樣本識別難易程度相差較大,Softmax交叉熵通過讓容易識別的樣本范數(shù)更大,讓難以識別的樣本范數(shù)更小,從而將損失最小化。如果直接使用Softmax交叉熵?fù)p失,很容易讓模型只關(guān)注隨機(jī)化離散程度較低的樣本,而忽略隨機(jī)化離散程度較高的樣本,從而導(dǎo)致訓(xùn)練出來的模型在攻擊數(shù)據(jù)上的表現(xiàn)很差。
L2范數(shù)被廣泛應(yīng)用于機(jī)器學(xué)習(xí)的損失函數(shù)正則化[13],可以提高模型的泛化能力,避免過擬合的發(fā)生。在卷積神經(jīng)網(wǎng)絡(luò)中應(yīng)用L2范數(shù)進(jìn)行正則化處理,其過程如圖2所示。

圖2 L2正則化過程
圖中,L2正則化層將所有樣本的特征進(jìn)行歸一化,Scale層對L2正則化層的結(jié)果進(jìn)行α倍的縮放,這樣可以降低特征范數(shù)對模型的影響,增加正對之間的相似性和負(fù)對之間的差異性。同時(shí),更小的特征范數(shù)也使模型對簡單樣本和困難樣本的關(guān)注程度更相近。
在模板攻擊中找出樣本所對應(yīng)的真實(shí)密鑰是典型的單標(biāo)簽多分類任務(wù)。定義真實(shí)密鑰k*的標(biāo)簽為1,錯誤密鑰的標(biāo)簽為0,即yk在k≠k*時(shí)為0,損失值Loss僅受到猜測密鑰k=k*的預(yù)測概率影響,使用Wk,bk分別表示猜測密鑰k在全連接層的權(quán)重向量和偏置,X表示輸入到全連接層的特征向量,那么可以得到關(guān)于特征向量的Softmax交叉熵?fù)p失:

將正則化處理后的X代入式(2),即可得到L2約束的Softmax交叉熵?fù)p失函數(shù),計(jì)算結(jié)果為

貝葉斯個性排序[14](Bayesian personalized ranking,BPR)是推薦系統(tǒng)中一種基于Pairwise方法的排序算法。以商品推薦為例,BPR算法將每個用戶對應(yīng)的所有商品按權(quán)重排序,然后向用戶推薦排名靠前的商品,以此從極大數(shù)量的商品集中推選出更符合用戶需要的商品。基于此思想,不拘泥于對真實(shí)密鑰權(quán)重的提升,而是直接對模板攻擊中Rank指標(biāo)進(jìn)行優(yōu)化,更適用于分類難度較高的S-Box功耗隨機(jī)化數(shù)據(jù)。
Rank指標(biāo)是一種典型的模板攻擊評價(jià)標(biāo)準(zhǔn)[15],將模型的預(yù)測結(jié)果進(jìn)行排序得到猜測密鑰k的排序名次Rank(k),k的排名越靠前,Rank(k)越低,k為真實(shí)密鑰的可能性越大。當(dāng)Rank(k*)=1時(shí),表示真實(shí)密鑰k*的預(yù)測結(jié)果排在第一位,即成功恢復(fù)出了密鑰。在卷積神經(jīng)網(wǎng)絡(luò)中,把全連接層輸出的置信度分?jǐn)?shù)作為猜測密鑰k的得分s(k),將所有猜測密鑰的得分進(jìn)行降序排序得到排序名次Rank(k),真實(shí)密鑰k*的排名Rank(k*)的計(jì)算方法為

在BPR中k*>tk為能量軌跡t的一個偏序關(guān)系,表示k*的真實(shí)排名在k的前面,即Rank(k*)

由于能量軌跡的密鑰是獨(dú)立隨機(jī)的,因此可以得到P(>t)=1/2,根據(jù)式(5)可以得到:

最大化 P(θ|>t)等價(jià)于最大化 P(>t|θ)和 P(θ)。對于P(>t|θ),模板攻擊中關(guān)鍵是獲得真實(shí)密鑰的排序關(guān)系,因此令式(6)的>t=k*>tk,得到:

P(k*>tk|θ)表示在參數(shù)為θ的情況下,真實(shí)密鑰比猜測密鑰排名靠前的概率。對于k*>tk這一事件,使用卷積神經(jīng)網(wǎng)絡(luò)全連接層輸出的置信度分?jǐn)?shù)s(k*)-s(k)>0來表示,使用Sigmoid函數(shù)來代替發(fā)生這一事件的概率,為

對于P(θ),假設(shè)參數(shù)θ的概率分布滿足均值為0,協(xié)方差矩陣為λI的正態(tài)分布,那么其對數(shù)與成正比。

最大化P(θ|>t)等價(jià)于最小化其對數(shù)的負(fù)值,使用 P(>t|θ)和 P(θ)代替 P(θ|>t),得到 BPR 的損失函數(shù):

本文使用的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)如圖3所示,輸入是包含700個樣本點(diǎn)的能量軌跡。卷積層所使用的卷積核大小為11、步長為2,激活函數(shù)使用Relu,過濾器數(shù)量依次為128、256、512。池化層使用大小為2、步長為2的平均池化。首層全連接層有4096個神經(jīng)元,激活函數(shù)使用Relu。末層全連接層有256個神經(jīng)元,激活函數(shù)使用Softmax。

圖3 網(wǎng)絡(luò)結(jié)構(gòu)圖
實(shí)驗(yàn)環(huán)境所使用的卷積神經(jīng)網(wǎng)絡(luò)基于Python Tensorflow 2.0進(jìn)行搭建,然后在搭載了4塊NVIDIA Ge-Force RTX 2080 Ti GPU的服務(wù)器上訓(xùn)練模板并進(jìn)行攻擊。
實(shí)驗(yàn)數(shù)據(jù)使用法國國家網(wǎng)絡(luò)安全局側(cè)信道數(shù)據(jù)庫(ANSSI SCA Database,ASCAD)提供的ASCAD.h5和ASCAD_desync50.h5數(shù)據(jù)。ASCAD.h5由50000條訓(xùn)練數(shù)據(jù)和10000條攻擊數(shù)據(jù)組成,每一條數(shù)據(jù)都有700個樣本點(diǎn),包含了AES第一輪加密的第三個S-box輸出操作的功耗信息。ASCAD_desync50.h5由ASCAD.h5進(jìn)行非對齊操作后得到,具體實(shí)現(xiàn)為將ASCAD.h5中的每一條數(shù)據(jù)向左隨機(jī)偏移,其中偏移量β∈{0,1,…,50}。
對圖3所示的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)分別應(yīng)用Softmax交叉熵?fù)p失函數(shù)、L2約束的損失函數(shù)和BPR損失函數(shù),所有模型均訓(xùn)練150個Epochs,其中L2約束的損失函數(shù)中縮放倍數(shù) α=2,BPR損失函數(shù)中 λ=0.0001。通過Rank值隨攻擊能跡數(shù)的變化來表示攻擊效果,當(dāng)攻擊能跡數(shù)相同時(shí),Rank值越低則表示模型攻擊效果越好。
圖4、圖5是當(dāng)選取30000條訓(xùn)練能跡數(shù)時(shí),3種損失函數(shù)模型在有隨機(jī)偏移和無偏移的數(shù)據(jù)集上的攻擊效果。根據(jù)對比可以看出,BPR損失函數(shù)和L2約束的損失函數(shù)在無偏移的數(shù)據(jù)集上能夠更快地降低Rank值,但三者成功恢復(fù)密鑰需要的攻擊能跡數(shù)相近。當(dāng)數(shù)據(jù)存在隨機(jī)偏移之后,BPR損失函數(shù)和L2約束的損失函數(shù)產(chǎn)生的攻擊效果明顯優(yōu)于傳統(tǒng)Softmax交叉熵?fù)p失函數(shù)。其中,BPR損失函數(shù)的效果最好,能夠以582條攻擊能跡數(shù)達(dá)到Rank值為1的攻擊效果,而另外兩種損失函數(shù)達(dá)到這一效果則需要800條左右的攻擊能跡。

圖4 訓(xùn)練能跡數(shù)為30000,偏移量β=50

圖5 訓(xùn)練能跡數(shù)為30000,無偏移量
對訓(xùn)練所使用的能跡數(shù)量進(jìn)行增加,然后對比3種損失函數(shù)在ASCAD_desync50.h5數(shù)據(jù)集上的效果,記錄攻擊階段Rank值等于1時(shí)所需要的最少能跡數(shù)量,其結(jié)果如表1所示。

表1 攻擊成功所需的能跡數(shù)量
由表1可知,當(dāng)訓(xùn)練能跡數(shù)量足夠大時(shí),3種模型的攻擊效果比較接近,但是隨著訓(xùn)練能跡數(shù)的減少,Softmax交叉熵?fù)p失函數(shù)模型的攻擊效果下降得更加明顯,而BPR受到的影響則相對較小。當(dāng)側(cè)信道攻擊中無法大量捕獲到目標(biāo)設(shè)備的功耗時(shí),優(yōu)化Rank值的BPR模型比Softmax交叉熵模型更適用于神經(jīng)網(wǎng)絡(luò)的模板攻擊。
綜上,在基于Rank值的評價(jià)標(biāo)準(zhǔn)下,本文提出的CNN-BPR對于功耗數(shù)據(jù)的隨機(jī)偏移具備一定的抵抗能力。在訓(xùn)練樣本數(shù)較少的情況下,BPR和L2約束的損失函數(shù)由于正則項(xiàng)的影響,訓(xùn)練出的模型具有更好的魯棒性,在噪聲較大的數(shù)據(jù)集上優(yōu)于傳統(tǒng)Softmax交叉熵?fù)p失函數(shù)。
基于交叉熵的卷積神經(jīng)網(wǎng)絡(luò)在分類任務(wù)中,關(guān)注的是每一個樣本的真實(shí)標(biāo)簽被預(yù)測到的程度,真實(shí)標(biāo)簽的預(yù)測概率越大則效果越好,當(dāng)需要檢測某一個樣本的種類時(shí),通過這一關(guān)注點(diǎn)能夠很好地構(gòu)造模型。然而,使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行模板攻擊的任務(wù)目標(biāo)卻不完全與分類任務(wù)相同。這是因?yàn)樵谀0骞糁?攻擊階段的樣本通常使用同一密鑰,即攻擊階段的樣本具有相同的標(biāo)簽。因此,只需要使真實(shí)密鑰在攻擊樣本集合上的綜合概率最大即可,這一目標(biāo)通過盡可能地提高真實(shí)密鑰的Rank值來達(dá)到。本文提出了一種基于BPR損失函數(shù)的卷積神經(jīng)網(wǎng)絡(luò)模型CNN-BPR,并在ASCAD.h5和ASCAD_desync50.h5這兩組數(shù)據(jù)集上進(jìn)行了驗(yàn)證。實(shí)驗(yàn)結(jié)果表明,BPR損失函數(shù)相較于交叉熵?fù)p失函數(shù)能夠構(gòu)造魯棒性更高的模型,且能有效減少成功恢復(fù)密鑰所需要的攻擊能跡數(shù)量。
雖然提出的CNN-BPR模型相比使用交叉熵?fù)p失函數(shù)的模型有一定的優(yōu)化,但當(dāng)訓(xùn)練能跡數(shù)量充足時(shí),過擬合不再是約束模型性能的主要問題,因此正則化損失函數(shù)帶來的優(yōu)化效果并不明顯。在這種情況下,如何繼續(xù)改善網(wǎng)絡(luò)模型,還需要進(jìn)一步研究。