胡 濤,佃松宜,蔣榮華
(四川大學 電氣工程學院,成都 610065)
由于集成電路(Integrated Circuit,IC)的設計越來越復雜,且其設計和制造朝著全球化的方向發展,半導體公司已不能完全自行設計和制造出所有的集成電路,這導致部分集成電路的設計和制造將外包給世界各地的其他公司,而外包公司可能在半導體公司不知情的情況下惡意設計集成電路[1]。已有研究表明,集成電路不僅在制造外包過程中容易受到惡意操作,而且整個集成電路的開發鏈也容易受到惡意操作,這增加了集成電路中存在硬件木馬的可能性。硬件木馬是指一種惡意修改電路,常以旁路電路的形式添加在原本電路中,并在攻擊者的操控下達到破壞電路或者竊取數據的目的[2]。
硬件木馬的檢測方式多種多樣,目前國內外的檢測方式主要包括邏輯檢測、延時特征檢測、失效性檢測、側道信息檢測等[3]。其中,側道信息檢測方法是通過檢測集成電路的側道信號來分析待識別芯片中是否存在硬件木馬,與其他檢測方法相比,側道信息檢測具有無損傷、低開銷、高性能等優點。基于此,本文采用的檢測方法也屬于側道信息檢測方法。
文獻[4]通過支持向量機(Support Vector Machine,SVM)驗證了包含觸發電路的硬件木馬檢測的可行性。文獻[5]提出一種基于自組織競爭神經網絡的硬件木馬檢測方法,利用無監督的學習算法對母本電路和待測電路進行分類判別,自組織競爭神經網絡可以有效分辨微弱信號,而無監督學習機制可以減少人為干預,降低人為建立的數學模型不精確帶來的負面影響。文獻[6]提出一種基于激活路徑時延的硬件木馬檢測方法,擺脫對母本電路的依賴。文獻[7]通過主成分分析(Principal Component Analysis,PCA)結合歐式距離實現硬件木馬的檢測,并發現PCA對硬件木馬檢測的識別率有一定的改善。文獻[8]通過基于粒子群算法和遺傳變異算法優化的SVM指出,當木馬面積較小時SVM無法準確識別硬件木馬。文獻[9]通過梅爾頻率倒譜系數提取側道信息的梅爾頻譜,通過K均值算法初始化隱馬爾可夫模型的初始狀態,實現了利用時序特征的硬件木馬檢測,但是該方法對長時間序列的處理效果欠佳。
目前有關側道信息的研究多數是將整體側道信息作為分類器的輸入特征向量,未充分利用側道信息的時序特征。本文提出一種基于PCA和長短時記憶(Long Short-Term Memory,LSTM)神經網絡的硬件木馬檢測方法,利用PCA壓縮時序特征,使用LSTM神經網絡對側道電流信息的時序特征進行學習,以達到準確判斷待測電路中是否植入了硬件木馬的目的。此外,本文還探究了在硬件木馬插入不同位置的情況下該方法的檢測效果。
本文檢測方法主要由PCA模塊和LSTM神經網絡模塊兩部分構成。通過PCA算法將高維樣本投影到其低維子空間中,解決樣本維度過高帶來的計算爆炸和數據冗余等問題,再把降維后的特征向量輸入給LSTM神經網絡來進行正常芯片和木馬芯片的分類。
PCA算法是一種常見的通過線性變換將高維特征向量映射到低維空間中的方法,其基于最大方差理論,使得降維后的特征向量盡可能保留最大方差。本文使用PCA算法的主要目的是用于降低計算量,防止計算爆炸,加快訓練速度。同時,PCA算法在其實現步驟上存在歸一化的步驟,可以在一定程度上抑制由工藝偏差帶來的噪聲。PCA算法的具體實現流程如下:

步驟2求解協方差矩陣R,計算方法如下:
(1)
步驟3求解協方差矩陣R的特征值λi和特征向量ui,計算方法如下:
λiui=Rui
(2)
其中,λi表示第i個特征值,ui表示其對應的特征向量。直接求式(3)時,要求協方差矩陣R必須為方陣,直接對R進行求解容易引起維度爆炸,因此常常利用奇異值分解(Singular Value Decomposition,SVD)原理進行處理。
步驟4取出SVD后按大小順序排列前k個特征值對應的特征向量,并構成變換矩陣Um×k=(u1,u2,…,uk)。其中,k由前k個方差貢獻率η決定,當η大于設定的閾值時,認為前k個分量包含了原始特征向量的主要信息。方差貢獻率η的計算公式為:
(3)
步驟5對原始數據歸零化后再進行線性變換,得到降維過后的特征向量X,計算公式為:
(4)
LSTM神經網絡是一種特殊的循環神經網絡(Recurrent Neural Network,RNN),其具有時間遞歸的性質,適用于處理時序相關的問題,解決了RNN難以解決的時間序列長期依賴、梯度爆炸和梯度消失等問題。由于本文用來檢測硬件木馬的側道信息是時序相關的電流信息,因此可以使用LSTM神經網絡來檢測硬件木馬。一個LSTM神經網絡的內部結構如圖1所示。

圖1 LSTM神經網絡內部結構
在圖1中,t表示時間序列的順序,Xt表示輸入端,Ct表示當前時刻的胞體狀態,σ表示一個sigmoid函數,其作用是將信息映射到0~1之間,表示是否允許信息通過,?表示逐點相乘,通常接在sigmoid函數后用來對信息進行篩選,⊕表示向量相加,ht表示當前時刻的輸出,tanh表示一層激活函數為tanh的神經網絡層,W,b分別表示輸入信息到各個門的權向量和偏置向量。
LSTM神經網絡的前向傳播過程按照式(5)的順序完成:
(5)
LSTM神經網絡的訓練一般通過跨時間的梯度反向傳播(Back Propagation Through Time,BPTT)算法對其各個參數進行迭代更新[10]。
本文的檢測流程分為以下3個步驟:
步驟1對電路進行仿真,提取側道電流信息。
步驟2通過PCA算法對數據降維,然后劃分訓練集、測試集、驗證集,其中測試集是由與訓練集木馬插入位置相同的電路側道信息構成,驗證集是由與訓練集插入位置不同的電路側道信息構成。
步驟3訓練分類器。
本文檢測方法的主要流程如圖2所示。

圖2 本文檢測方法的主要流程
其中,每一步的具體操作如下:
步驟1本文構建的ISCAS89電路基于SMIC 0.18 μm工藝庫。通過Hspice仿真平臺得到多組電路的電流信息,第1組仿真實驗以s9234電路作為母本電路,記作s9234。然后分別以1個、2個、3個s27電路作為木馬植入到s9234電路[11],分別記作s9234_1s27、s9234_2s27、s9234_3s27。利用Design Compiler綜合后得到的木馬電路分別占總電路面積的0.74%、1.33%、2.10%。這幾種木馬并沒有實際的攻擊功能,只是作為測試的旁路電路來驗證本文方法的有效性。
為了進一步驗證木馬插入的位置對檢測有效性的影響。第2組仿真實驗在第1組仿真實驗的基礎上,分別以1個、2個、3個s27電路作為木馬植入到與第1組不同位置的s9234電路中,分別記作valid_s9234_1s27、valid_s9234_2s27、valid_s9234_3s27。
此外,本文利用Hspice基于蒙特卡羅方法模擬實際生產芯片時的工藝偏差(工藝偏差服從標準正態分布),得到160組側信道電流信息。
步驟2利用PCA算法對第1組仿真實驗得到的數據降維,提取方差特征值貢獻率為前95%的特征向量矩陣Um×k,通過特征向量矩陣Um×k對第1組數據進行變換得到降維后的特征向量X。接下來將特征向量X隨機劃分為訓練集和測試集,本文選取33%的樣本作為測試集,記作test_s9234。
驗證集由木馬插入位置不同的樣本構成,通過特征向量矩陣Um×k對第2組數據進行變換得到降維后的特征向量,記作valid_s9234。
步驟3利用訓練集訓練LSTM神經網絡分類器,并在測試集上檢驗本文分類器的準確率,當測試集的準確率不再提升時即完成訓練,然后在驗證集上檢驗分類器的準確率。
本文的LSTM神經網絡只包含一個LSTM層,且LSTM層內的節點數為128個。在LSTM層后添加一層節點數為128、激活函數為Relu的全連接神經網絡(Artificial Neural Network,ANN)層,對該全連接層的每個輸出節點以0.15的概率進行Dropout,以增強網絡的泛化性[12],然后在Dropout層上添加激活函數為Softmax的全連接層作為整個網絡的最終輸出。此外,對整個網絡采用滑動平均模型的方式來提高網絡的健壯性[13],使用學習率隨訓練過程衰減的方式來增強網絡的學習能力[14],且基學習率為0.001,衰減率為0.99,網絡的訓練算法為Adam算法。本文LSTM神經網絡的運算圖如圖3所示。

圖3 LSTM神經網絡運算圖
其中,箭頭表示數據的流動方向,Input表示輸入PCA降維后的數據及其類別標簽,LSTM表示一個LSTM神經網絡層,ANN表示一層全連接神經網絡,Dropout表示Dropout層,Output表示預測結果,Loss表示交叉熵損失函數,Train Operate表示用滑動平均、學習率衰減、Adam算法對網絡進行訓練。
為了驗證本文方法的有效性,實驗主要對SVM[15]、ANN[16]、隨機森林(Random Forest,RF)[17]、XGBoost等4種分類器結合PCA算法在相同的電路條件下進行對比。
對比實驗表明,SVM算法在小樣本、非線性樣本的判別中表現良好[18]。多次實驗后,本文選取多項式核作為核函數,懲罰參數C設置為10,核函數最高次冪degress設置為120,核函數系數gamma設置10,核函數的常數項為1。ANN具有極強的非線性映射能力,2個隱層的神經網絡足以擬合任意非線性函數[19]。經過多次試驗后,本文的ANN包含2個隱藏層,每層128個節點,使用Relu激活函數,同樣采用滑動平均和學習率衰減的方式來提高網絡的健壯性,且其基學習率為0.001,衰減率為0.99,網絡的訓練算法為Adam算法。RF算法在處理高維數據時具有良好的泛化能力以及時間開銷低等優點,本文選擇RF算法的決策樹數目為50個[20]。XGBoost是一種極端的基于梯度提升機制的改進算法,通過重復學習生成模型的殘差最終產生多個樹模型,從而組合成準確率較高的綜合模型[21-22]。經過多次試驗后,本文選擇的XGBoost算法中每棵樹對訓練樣本的隨機采樣率subsample為0.8,特征采樣率colsample_bytree為0.8,損失函數為均方差損失函數。
本文檢測方法在測試集test_s9234和驗證集valid_s9234上對于每一個待測電路的分類結果如圖4所示。

圖4 本文分類器在測試集和驗證集上的分類結果
由圖4可知,在木馬插入位置相同的測試集上,檢測準確率為100.00%,本文提出的分類器可有效識別木馬電路,因此不再單獨列出s9234_1s27、s9234_2s27、s9234_3s27的檢測準確率。
在木馬插入位置不同的驗證集上,檢測準確率為83.13%,對正常電路s9234的召回率為100.00%,對面積比為0.74%的valid_s9234_1s27木馬電路召回率為97.44%,對面積比為1.33%的valid_s9234_2s27木馬電路召回率為82.05%,對面積比為2.10%的valid_s9234_3s27木馬電路召回率為53.85%。由此可見,隨著驗證集木馬面積比的增大,檢測準確率并沒有隨之增大,這是因為木馬插入位置不同導致其激活頻率不同,進而導致每一種木馬電路的側道信息時序特征和訓練集存在差異。在這種條件下,分類器只能判斷出電路是否植入了木馬電路,不能有效判斷具體插入了哪一種類型的木馬電路。若只考慮是否植入了木馬電路,則本文方法對正常電路的召回率為100.00%,對木馬電路的召回率為99.17%。
所有分類器在測試集、驗證集的準確率如表1所示。

表1 不同分類器的檢測結果
本文提出的PCA+LSTM分類器在測試集test_s9234上的準確率為100.00%,因此其混淆矩陣不在此列出。在驗證集valid_s9234上的分類結果如表2所示。

表2 本文分類器的分類結果
為了綜合評價分類器的分類性能,用每個分類器的每一個電路類別的F1評價指標的加權平均值作為分類器的綜合評價指標。每個分類器的加權F1綜合評價指標如圖5所示。由表1和圖5可知,并不是所有的分類器都能有效識別硬件木馬,在用PCA方式作為提取特征向量的手段時,傳統的機器學習分類器SVM、RF、XGBoost無法檢測出硬件木馬,分析原因在于這3類分類器的學習能力還不足以處理當硬件木馬面積占比很小時,由木馬產生的側道電流信息被生產工藝偏差帶來的電流偏差所覆蓋的問題。但是PCA+ANN分類器和本文提出的PCA+LSTM分類器都可以有效處理上述缺陷,分析原因在于ANN和LSTM具有比傳統的機器學習分類器更強的學習能力。

圖5 5種分類器在測試集和驗證集上的加權F1評價指標
本文主要對比PCA+LSTM和PCA+ANN分類器的性能。從圖5可以看出,在測試集test-s9234上,使用PCA+LSTM分類器的加權F1值為1.00,相較于PCA+ANN分類器提高了6.38%,在驗證集valid-s9234上的加權F1值為0.83,相較于PCA+ANN分類器提高了16.90%。
本文提出一種將PCA和LSTM神經網絡相結合的硬件木馬檢測方法,并通過實驗驗證了該方法的可行性。在測試集上的實驗結果說明本文方法可以有效檢測出硬件木馬,但是在驗證集上的實驗結果也暴露出一些問題,如硬件木馬植入位置不同會導致硬件木馬的激活率發生改變,進而使其時序特征發生改變,無法準確判斷植入的木馬類型。因此在接下來的工作中,將會進一步深入探究硬件木馬的激活率與時序特征的關系。