劉林云,陳開顏,李雄偉,張 陽,劉俊延
(陸軍工程大學石家莊校區 裝備模擬訓練中心,河北 石家莊 050003)
信息時代,信息安全日益成為人們關注的焦點,嵌入加密算法的密碼芯片成為信息安全的有效保障。雖然加密算法在數學理論上安全,但破密者仍可以通過旁路密碼分析手段獲取密鑰和加密信息,對信息安全造成重大威脅。旁路分析(Side Channel Analysis,SCA)[1]在密碼學中是指繞過對加密算法的繁瑣分析,利用密碼算法的硬件實現在運算中泄露的信息,如執行時間、功耗、電磁輻射等,結合統計理論快速地破解密碼系統。這類新發現的物理泄漏信息被研究學者稱為旁路信息(Side-channel Leakage),與之對應的攻擊方法稱為旁路攻擊(Side-channel Attack)。
旁路密碼分析方法分為建模方法和非建模方法。非建模類方法包括差分能量攻擊[2](Differential Power Attack,DPA)、相關系數攻擊[3](Correlation Power Attack,CPA)以及互信息攻擊[4](Mutual Information Attack,MIA);建模類方法包含模板攻擊[5](Template Attack,TA)、基于多層感知器的旁路密碼攻擊(MLPSCA)以及基于卷積神經網絡的旁路密碼攻擊(CNNSCA)。雖然非建模方法攻擊方式簡單直接,但旁路信號微弱或環境噪聲過大會造成攻擊失效,而建模方法能有效分析旁路信號特征,預先獲得攻擊設備的加密知識,更易破獲密鑰。
早期,從信息論角度看,如果有大量的旁路泄露信號(簡稱能量跡),那么傳統建模方法中破密效果最好的是TA[5-9]。但研究人員隨后發現,TA處理高維度旁路信號時存在統計困難,也無法攻擊帶防護加密實現。中期,隨著計算機硬件性能的提升和人工智能領域機器學習的興起,受監督機器學習算法在其他領域中能有效分析類似能量跡的一維數據,一些研究人員開始提出基于機器學習的旁路密碼分析(MLSCA)[10-12],這些方法主要針對帶加密算法AES的設備,自此傳統建模方法向結合機器學習算法的新型建模方法轉變。新型建模方法MLPSCA在攻擊性能上超越了傳統建模方法[8,13],克服了TA不能處理高維度旁路信號的缺陷,但攻擊帶防護的加密實現時也失去效力。如今,隨著機器學習的發展,在圖像分類、目標識別上性能表現優異的深度學習技術開始盛行,已有研究表明深度學習下的卷積神經網絡算法應用在旁路分析上能產生較好的破密性能[14-15],而且CNNSCA能有效攻擊帶防護的加密實現。
目前在SCA領域,對傳統和新型建模方法的匯總分析較少,或者不夠完善,本文將展開旁路建模方法的研究綜述,研究不同時期建模類SCA分析方法的性能特點,這對如何提升信息安全防護有重要的啟發作用。
本文使用SCA領域已公開的數據集做研究分析,采用ASCAD[15]數據庫,并使用統一的符號來表示能量跡、密鑰、明文以及能量跡模型。
最新公布的ASCAD數據庫采集的目標是帶一階掩碼防護的AES-128實現,即8 bit AVR微控制器(ATmega8515),其中能量跡是由采集的電磁輻射轉換的數據信號。敵手針對AES第一輪加密的第3個S盒輸出采集信號,并針對第一個AES密鑰字節發起攻擊,該數據庫遵循MNIST數據庫規則,共提供4個數據集,每個數據集有60 000條能量跡,其中50 000條能量跡用于分析/訓練,10 000條能量跡用于測試/攻擊。前3個ASCAD數據集分別代表設置3種不同隨機時延防護對策的加密實現泄露,分別用信號偏移desync=0,50,100來表示這3個帶掩碼和時延2種策略的數據集。在前3類數據集中所有能量跡都包含700個特征點,這些特征點是在包含100 000個特征點的原始能量跡里選取,選取依據是信號尖峰最大的位置。在掩碼已知的情況下,數據集的信噪比最大值可達0.8,而在掩碼未知的情況下幾乎為0。最后一個ASCAD數據集存放的是原始能量跡。
能量跡是一維向量。用字母χ表示能量跡的集合,大寫字母X表示集合中帶有值的隨機能量跡變量,小寫字母x表示單個變量的隨機分量,則能量跡表示為X={x1,x2,…,xD},X∈RN×D,其中D是每條能量跡時間樣本數或興趣點數(在機器學習中稱為特征點),N表示能量跡采樣總數。令k*表示真實密鑰,k表示任一可能的假設密鑰,k∈K,K={k0,k1,…,k255},k服從均勻分布,大小為一個字節。令隨機變量P表示輸入的明文,P={p1,p2,…,pN},p服從均勻分布。敵手攻擊密鑰時,將能量跡建模為M:{X|(P,K)}(在機器學習中稱為標簽),該模型代表假設密鑰k和已知明文p在執行加密算法后產生的能量跡X,該模型與執行的加密操作密切相關,從而與加密操作中的密鑰密切相關。 后文中將用M代替M:{X|(P,K)}。
建模類旁路分析原理主要是指攻擊方法的攻擊原理,為了量化評估攻擊方法的性能好壞,通常使用破密性能評估方法來對攻擊方法進行評估,以此促進攻擊方法的改進和優化。
2.1.1 攻擊原理
(1) 旁路泄露采集
旁路攻擊者在掌握加密算法知識的前提下,在密碼設備副本上采集N條表征泄漏的能量跡χ={X1,X2,…,XN}作為建模集。能量跡Xi由2部分組成:對密碼設備電路中一個特定操作進行仿真形成的能量跡和服從高斯分布的電子噪聲(即高斯噪聲),電子噪聲是指在同等采樣條件下多次采集的能量跡中產生的波動。能量跡可表示為:
Xi=C(pi⊕k*)+oi,i∈N。
(1)
O={o1,o2,…,oN}表示高斯噪聲,C()表示輪密鑰加操作(AES-128算法第一輪S盒之前的輪密鑰加操作)。攻擊者在目標設備副本上測量額外的Q條能量跡χ={X1,X2,…,XQ}作為攻擊集。
(2) 能量跡建模
敵手攻擊AES-128實現時,按密鑰的每個字節依次展開攻擊,每個字節對應漢明重量(Hamming Weight,HW)模型分為9類模板。對于分類性能強大的卷積神經網絡,256個分類任務很小,因此CNNSCA中直接使用256類標簽(類似傳統建模方法的模板)。重新定義能量跡模型為M:{X|(P,K)},S={s1,s2,…,sN},S表示AES-128算法的S盒。式(1)可轉化為:
Xi=S[C(pi⊕k*)]+oi,i∈N。
(2)
傳統建模方法中,敵手通常選擇敏感中間值的HW模型,通過減少模板數量來避免統計和計算復雜性。由于HW模型對能量跡的合并建模在本質上不平衡,嚴重妨礙機器學習/深度學習的性能[16],因此新型建模方法直接使用敏感中間值模型[17],該能量跡模型需要較大的分析集,可避免建模不平衡問題。
(3) 猜測密鑰

gk:(X,P)PDF[Xi|(P,K)=(p,k)],i∈N,
(3)
式中,PDF表示概率分布函數(Probability Distribution Function),當采用中間值能量跡模型時,M:{X|(P,K)},式(3)可改寫為:
gk:(X,P)PDF[Xi|S[C(P,K)]=si],i∈N。
(4)
綜合上述3個步驟,可定義建模類旁路密碼分析模型,如圖1所示。

圖1 建模類旁路密碼分析模型
2.1.2 破密性能評估
Standaert等人[18]首次提出了旁路密碼分析的評估方法,將評估指標分為2類:第1類是安全指標,包含成功率、猜測熵(Guess Entropy,GE)以及計算時間[19];第2類是信息指標,包含互信息、條件熵與混淆矩陣[20-21]。通常安全員在評估CNNSCA破密性能時考慮兩方面指標:一是建模時神經網絡模型的訓練準確率Acc指標[22];另一個是攻擊階段采用旁路密碼分析中的安全指標GE[18-19]。
安全指標中,成功率用來衡量敵手的攻擊結果,通過對一定數量能量跡的分析,來反應成功獲取密鑰的能力;而GE用來衡量密鑰破解效率,通過敵手在攻擊階段僅需少能量跡就能破密,來反應破密方法的效率。在旁路分析領域,評估SCA破密性能普遍使用GE指標,GE是通過一個自定義的秩函數R(·)得到,定義為:
(5)
敵手使用建模數據集Dtrain,建立旁路分析模型g,在攻擊階段使用攻擊數據集Dtest中n個能量跡樣本進行n次攻擊,每次攻擊后得到256類假設密鑰的分布概率對數值,組成向量di=[di[1],di[2],…,di[k]],其索引按假設密鑰鍵空間正序排列(索引從零開始計數),其中i∈n,k∈K,K是假設密鑰的鍵空間。每次攻擊結果進行累加。然后,秩函數R(·)將向量di的所有元素按值的大小逆序排序,并保持向量中每個元素對應索引在排序前后的位置與元素的位置一致,得到新的排名向量Di=[Di[1],Di[2],…,Di[k]],其中每個元素Di[k]包含2個值k和d[k],最后輸出已知密鑰k*概率對數元素在Di中的索引,即猜測熵GE(d[k*])。根據本文2.1.1節的詳細敘述,在第i次攻擊時,真實密鑰的能量跡模型匹配率應該最高,其GE(d[k*])的排名就靠前。猜測熵就是每次攻擊輸出的GE(d[k*])排名,在n次攻擊中,破密方法性能越好,效率越高,GE(d[k*])的排名越快收斂于零。說明在第i次攻擊時,猜測熵收斂于零并在后續攻擊中持續收斂,敵手破解密鑰就只需要進行i次攻擊,即只需要i條能量跡就能破密。式(5)可改寫為:
(6)
模板攻擊又稱為多元高斯模板攻擊,最早由Chari等人[5]提出,遵循建模類旁路攻擊原理,已在本文2.1.1節詳細說明。敵手在被攻擊的加密設備副本上,分別對不同的明文Pi,i∈N和密鑰kj,j∈K(K=256)執行特定的指令序列,并記錄對應的能量跡,能量跡按時序切割為多維度的特征點。然后把與(Pi,kj)對應的能量跡按256類密鑰k分組,計算每組能量跡均值向量E和協方差矩陣C。每一組明文和密鑰(Pi,kj)都可以得到一個模板H:(E,C)。最后利用所建模板來破獲密鑰。高斯模板攻擊的詳細步驟如下:
(1) 泄露采集及特征提取
① 在實驗裝置上對每個密鑰k(k∈K)與Q個隨機明文執行加密操作,分別采集大量能量跡,得到256個密鑰的各自樣本集X。
② 計算每個k操作下能量跡樣本的平均值E1,E2,…,EK(K=256)。
③ 計算E1~Ek之間兩兩差值之和,選擇差值中差異大的特征點記為P1,P2,…,PN,用這N個點建立高斯模板。通過對高維度的能量跡進行特征提取來降低數據維度的方法,雖然造成極小的精度損失,但極大地減少了計算開銷。
(2) 構建能量跡特征模板
① 對于每個密鑰,樣本集X的N維噪聲向量為:
Ni(X)=(X[P1]-Ei[P1],...,X[PN]-Ei[PN])。
(7)
② 計算每個樣本集X的噪聲向量協方差矩陣:
∑Ni(u,v)=cov(Ni(Pu),Ni(Pv)),u,v∈N。
(8)
由上得到每個密鑰k的能量跡模板,記為(Ei,∑N)。
(3) 利用模板實施攻擊
用一條能量跡T與模板的均值向量Ei做差,得到噪聲向量x,該噪聲屬于高斯噪聲,文獻[1]中已論證。然后使用模板的協方差矩陣ΣNi,結合N維多元高斯概率分布函數pNi(x)計算噪聲向量x的概率,函數定義如下:
(9)
式中,|ΣNi|表示ΣNi的行列式;Σ-1Ni表示ΣNi的逆。對能量跡T和每一個模板進行計算,得到概率序列P(T|P,kj).概率值的大小反映了T與模板的匹配程度。根據極大似然判定準則,匹配概率最大的模板,其相關的密鑰就是正確密鑰。
早期Chari等人通過標準模板攻擊成功破獲RC4流密碼,并且在理論上提出模板攻擊為當時最強的旁路攻擊。文獻[9]建議僅用一個模板的協方差矩陣應對統計困難,但破密效果一般。在文獻[1]中提出一種折中的辦法,基于漢明重量/距離的模板攻擊,將加密中間值轉換為漢明重量,建立對應9類模板,減少了統計困難,也提高了計算效率和破密性能。然而在具體實施時,模板攻擊存在3類缺陷:① 計算復雜性。如計算過程中出現奇異矩陣,選擇高維特征點建模時計算和存儲壓力過大,獲取能量跡有限時無法使用較多特征點構建模板等。② 模板攻擊的實現依賴多元高斯分布概率密度函數,但目前沒有嚴格的證明,此方法能最好地刻畫捕獲數據。③ 在攻擊帶防護策略的加密實現時,模板攻擊表現一般。
多層神經網絡,也稱多層感知器(Multi-Layer Perceptrons,MLP),這種通過增加網絡層數來提高學習性能的策略稱為深度學習?;诙鄬痈兄鞯呐月贩治?MLPSCA),是利用BP算法[23],在幾個堆疊的全連接層上對訓練/建模數據集進行訓練,得到特征信號的權值模板。然后用分析/攻擊數據集上的樣本,與權值模板進行非線性計算,并輸出特征向量。最后對特征向量分類回歸,得到每個標簽的匹配概率,該匹配概率在機器學習中稱為預測值,根據極大似然準則,將預測值最高的標簽密鑰判定為正確密鑰,到此MLPSCA攻擊完成。Benadjila等人[15]提出MLPSCA的MLP模型結構如圖2所示。

圖2 MLPSCA的神經網絡模型結構
該網絡結構由6個全連接層堆疊構成,對原始輸入信號做一定的降維預處理,在最后一個FC層使用softmax函數(該層也稱SOFT層),得到依賴整個輸入的各個標簽分類概率值,選擇最大值作為全局分類結果。
目前MLP已成功應用于旁路密碼分析。Gilmore[24]使用神經網絡破解了DPA-V4[25]功耗數據集(帶掩碼防護)。賽峰集團Maghrebi[26]分別使用TA、MLSCA、MLPSCA對DPAContest數據集進行攻擊,結果顯示MLPSCA攻擊效果優于MLSCA與TA,且成功率更高。Martinasek及其同事[27-29]在AES-128加密設備上實驗,將MLPSCA與TA、隨機攻擊、MLSCA等旁路攻擊方法進行比較,結果發現MLPSCA破密性能優于TA等傳統旁路攻擊方法,并且也發現MLPSCA破密性能比基于機器學習算法(SVM和隨機森林等)的旁路攻擊效果更好。但MLPSCA的MLP網絡模型參數化程度高,也沒有形成網絡模型超參數的泛化標準,導致現實中該方法的攻擊效果并不穩定。
卷積神經網絡[30]是人工智能領域比較成功的算法之一,是一種新型結構的多層神經網絡。其設計受到視神經感受野研究[31-32]的啟發,CNN的核心部件卷積核是局部感受野的結構體現。它屬于反向傳播訓練的深度網絡,利用數據二維空間關系減少需要學習的參數數目,在一定程度上提高了BP算法的訓練性能。CNN區別于MLP的地方主要是增加了卷積塊結構。
在卷積塊中,輸入數據的一小部分作為網絡結構的原始輸入,數據信息在網絡中逐層向前傳遞,每層通過若干卷積核對輸入的數據進行特征提取[33-34]。
CNN的卷積塊由卷積層CONV、批量歸一化層BN、激活層ACT構成,在該塊之后通常會添加一個池化層POOL以減少特征維度,組成的新卷積塊在網絡模型中重復n次,直到獲得合理大小的輸出為止。然后,引入n個全連接層FC,在最后一個FC層使用分類函數softmax,最后輸出分類預測結果。旁路密碼攻擊的卷積網絡結構如圖3所示。

圖3 旁路攻擊場景下的卷積網絡結構
基于卷積神經網絡的旁路密碼分析CNNSCA涉及的算法原理有以下幾點:
① 卷積計算
將卷積核在一維向量上滑動,每次移動的步數稱為步長,每次滑動進行卷積計算得到一個數值,一輪計算完成后得到一個表示向量特征的特征向量。數值運算規則是將一個一維卷積核與一個一維向量對應位置的數值相乘然后再求和。
② 池化計算
池化有最大池化(Max-Pooling)、平均池化(Mean-Pooling)和隨機池化(Stochastic Pooling)3種方式。最大池化是提取池化窗口內數值的最大值,平均池化是提取池化窗口內數值的平均值,隨機池化是隨機提取池化窗口內的數值。
③softmax函數
該函數對輸出值進行歸一化操作,把所有輸出值都轉化為概率,概率之和為1,softmax的公式為:
(10)
式中,xi為softmax層第i個神經元的輸入;xj為softmax層所有神經元的輸入;Σj是對xj的計算求和。函數結果作為第i個神經元標簽的擬合概率。
④ 權值調整原理
使用代價函數與梯度下降算法[23],網絡模型每訓練一次,權值往誤差減少的方向自動調整一次,這樣重復訓練調參,直到所有迭代結束,權值調整完成。
本文實驗涉及算法均使用Python語言編程,并使用深度學習架構Keras庫[35](版本2.4.3)或直接使用GPU版Tensorflow庫[36](版本2.2.0)。實驗在配備16 GB RAM和8GB GPU(Nvidia GF RTX 2060)的普通計算機上進行。
基于本文2.2節TA存在的問題,2.3節MLPSCA存在的缺陷,為驗證新型旁路分析方法的性能優勢,實驗將采用傳統建模方法中表現最好的基于HW的TA[1],與Benadjila等人[15]提出的MLPSCA和CNNSCA方法進行破密性能比較。以下3個實驗使用本文1.1節的ASCAD公共數據集,并使用本文2.1.2節的猜測熵評估方法,進行破密性能評估。
實驗1對已知掩碼的ASCAD數據集進行攻擊,代表攻擊無防護狀態的加密實現,目的是檢測旁路分析方法有效性。實驗結果如圖4所示。

圖4 TA、MLPSCA、CNNSCA攻擊無防護設備的猜測熵
由圖4可以看出,新型旁路分析方法MLPSCA、CNNSCA的猜測熵收斂情況明顯優于傳統旁路分析方法TA。
實驗2在實驗1的基礎上對已知掩碼的ASCAD數據集添加高斯噪聲,代表攻擊有環境噪聲干擾的加密實現。添加高斯噪聲的方法是在實驗1使用的原數據集基礎上任選1/3的能量跡,然后在這1/3的能量跡上逐條添加高斯分量,用它模擬采集信號時的高斯噪聲[1]。在一維旁路信號中添加高斯噪聲的措施,類似于二維圖像數據在進行模型訓練之前的數據增強手段[32],數據增強有助于避免CNN模型學習不相關的特征,提升CNN模型的整體性能。實驗結果如圖5所示。

圖5 TA、MLPSCA、CNNSCA攻擊加高斯噪聲數據集的猜測熵
由圖5可以看出,CNNSCA的猜測熵明顯收斂最快,在未加高斯噪聲前其猜測熵完全收斂至零的攻擊次數是650左右(如圖4所示),添加之后是270左右(如圖5所示)。說明對旁路信號使用數據增強手段,能提高原CNNSCA模型的性能。而TA的猜測熵收斂情況變差,向下收斂后,總是在排名零附近波動。MLPSCA的猜測熵收斂情況與實驗1相比也變差。
實驗3在實驗1的基礎上,改換信號偏移desync=100的ASCAD數據集攻擊,代表攻擊有時延防護對策的加密設備。實驗結果如圖6所示。

圖6 TA、MLPSCA、CNNSCA攻擊帶防護設備的猜測熵
由圖6可以看出,只有CNNSCA的猜測熵依然往真實密鑰的排名方向收斂,TA、MLPSCA的猜測熵沒有收斂趨勢,攻擊已經失效。
本文介紹了不同時期破密性能較好的3個建模方法(TA、MLPSCA、CNNSCA),并通過同一數據庫的不同數據集進行實驗,發現攻擊理想低噪的旁路信號時,新型建模方法MLPSCA、CNNSCA破密性能明顯優于傳統模板攻擊TA。在新型建模方法中,比較MLPSCA與CNNSCA依賴的網絡模型,發現MLP模型僅關注輸入數量級不考慮數據拓撲結構,而CNN具有更為魯棒的結構特性,對失真功耗數據依舊具有良好的識別性能。因此,CNNSCA能有效攻擊因噪聲和防護對策而產生畸變的旁路信號。深度學習的CNN算法是當今人工智能領域比較成熟和熱門的算法,CNNSCA雖然成功攻擊了無防護的加密設備,但攻擊有防護的加密設備時,其破密性能仍有很大提升空間。今后可以利用CNN的優異特性,繼續探索更適合攻擊帶防護設備的CNN結構,這對高效攻擊帶防護設備有重要意義。