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

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

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

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

將正則化處理后的X代入式(2),即可得到L2約束的Softmax交叉熵損失函數,計算結果為

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

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

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

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

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

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

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

本文使用的卷積神經網絡結構設計如圖3所示,輸入是包含700個樣本點的能量軌跡。卷積層所使用的卷積核大小為11、步長為2,激活函數使用Relu,過濾器數量依次為128、256、512。池化層使用大小為2、步長為2的平均池化。首層全連接層有4096個神經元,激活函數使用Relu。末層全連接層有256個神經元,激活函數使用Softmax。

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

圖4 訓練能跡數為30000,偏移量β=50

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

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