張 穎 李 森 陳 鑫 姚嘉祺 毛志明
(南京航空航天大學電子信息工程學院 南京 211106)
隨著集成電路芯片全球化產(chǎn)業(yè)鏈模式的發(fā)展,硬件安全問題日益成為繼軟件安全問題后存在的新隱患。硬件木馬電路可能會在芯片設計階段和制造階段被插入到芯片中[1,2]。目前硬件木馬電路的檢測技術主要分為動態(tài)檢測和靜態(tài)檢測兩類。動態(tài)檢測方法指在對待測電路施加外部激勵的情況下,觀察模擬電路或?qū)嶋H電路的行為從而檢測是否存在木馬電路,旁路分析法是其主流方式之一[3,4]。文獻[5]在系統(tǒng)層次對傳統(tǒng)的旁路分析檢測方法進行改進,提出一種基于支持向量機 (Support Vector Machine,SVM)算法檢測的方案。考慮到木馬電路的觸發(fā)結(jié)構通常較為隱蔽且不易觸發(fā),動態(tài)檢測需要建立特殊的測試激勵來提高木馬電路的觸發(fā)概率[6]。文獻[7]提出了一種基于變異分析的統(tǒng)計測試生成方法,以激活電路中存在的低活躍性硬件木馬。文獻[8]通過獲取信號的可測性和可觀性,使用聚類的機器學習算法進行硬件木馬檢測。文獻[9]首次提出了一種利用路徑延遲順序的檢測方法。
靜態(tài)檢測方法不需要對電路進行仿真測試,利用木馬電路與普通電路的差異分析對木馬電路進行檢測。文獻[10]通過靜態(tài)布爾函數(shù)分析得到具有弱影響力的輸入,將其標記為可疑信號。但該方法不易檢測時序電路木馬,并且不適用于大規(guī)模集成電路。伴隨著新型木馬電路的不斷涌現(xiàn),近年來,機器學習算法成為解決硬件木馬靜態(tài)檢測的有效方法之一[11,12]。文獻[13]提出一種基于隨機森林的木馬檢測方法。首先提出51個硬件木馬特征,最終選擇其中11個特征作為最終特征用于機器學習訓練和分類。文獻[14]是在文獻[13]的基礎上,針對文獻[13]中不足提出的一種基于邊界檢測的優(yōu)化方法。
動態(tài)檢測在順序觸發(fā)木馬和不可觀測性木馬方面相對靜態(tài)檢測會更有優(yōu)勢,而靜態(tài)檢測在組合觸發(fā)、隱式觸發(fā)、可觀測性木馬上有較大優(yōu)勢。因此,本文提出一種基于XGBoost算法的動態(tài)和靜態(tài)檢測相結(jié)合的混合模式門級硬件木馬檢測方法。
本文的貢獻主要體現(xiàn)在以下方面:
(1)提出一種基于XGBoost算法的混合模式門級硬件木馬檢測方法。這是首次提出并使用靜態(tài)檢測和動態(tài)檢測相結(jié)合的多層次檢測方法對硬件木馬進行檢測,為硬件木馬檢測提供新方向。
(2)提出了兩種新的靜態(tài)木馬電路特性:3級觸發(fā)網(wǎng)絡和環(huán)形振蕩器結(jié)構,并作為特征用于硬件木馬電路靜態(tài)檢測的機器學習算法中。實驗結(jié)果證明,這兩種特征對木馬檢測具有積極效應。
(3)針對掃描鏈中存在木馬電路的風險,提出基于掃描鏈的木馬電路特征和檢測方法,進一步優(yōu)化了靜態(tài)硬件木馬檢測方法。
(4)對木馬電路的基準測試集Trust-Hub[15]和DeTrust[16]木馬電路實施檢測,所得的實驗結(jié)果表明,與現(xiàn)有的其他檢測方法相比,該方法在大多數(shù)情況下具有更準確的硬件木馬電路檢測效果,對Trust-Hub測試集可以達到94.0%的平均真陽率(True Positive Rate,TPR)和99.3%的平均真陰率(True Negative Rate,TNR)的檢測精度。對自實現(xiàn)的DeTrust木馬電路可達到平均82.1%TPR和92.2%TNR的檢測精度。
本節(jié)通過分析木馬電路和普通電路存在的差異,提出兩種全新的靜態(tài)木馬電路特征并與傳統(tǒng)木馬電路特征相結(jié)合,用于實現(xiàn)靜態(tài)硬件木馬檢測。檢測方法以電路的每個線網(wǎng)類型作為節(jié)點來提取一系列木馬特征,傳統(tǒng)的木馬電路特征包括邏輯門的扇入數(shù)量、多路復用器、循環(huán)結(jié)構、觸發(fā)器、原始輸入輸出距離等,兩種新提出的木馬特征為3級觸發(fā)網(wǎng)絡和環(huán)形振蕩器結(jié)構。
在組合邏輯電路中,相比于普通電路,木馬電路具有觸發(fā)信號常為單一觸發(fā)或少數(shù)觸發(fā)且觸發(fā)結(jié)構復雜等特點[17,18]。針對這一特點進行分析,提出一種3級觸發(fā)網(wǎng)絡特征。設net是待測電路的線網(wǎng),3級觸發(fā)信號(three_trigger_line)定義為連續(xù)通過3層邏輯級的輸出信號,每一邏輯級為基本邏輯門中的1個或多個且該信號的第1級扇入數(shù)大于16。扇入數(shù)的閾值為16是根據(jù)對Trust-Hub木馬庫中同類特征電路進行統(tǒng)計分析而設定的。3級觸發(fā)網(wǎng)絡(three_level_trigger)定義為與3級觸發(fā)信號(three_trigger_line)相關聯(lián)的所有輸入信號。3級觸發(fā)網(wǎng)絡特征如圖1所示。
圖1 3級觸發(fā)網(wǎng)絡特征示意圖
3級觸發(fā)信號通過多級基本邏輯門等低觸發(fā)的開關門電路,一定程度上減少了該信號在組合電路中觸發(fā)的概率,契合木馬電路觸發(fā)概率低的特點。同時,較大的第1級扇入數(shù)契合木馬觸發(fā)電路具有復雜邏輯結(jié)構的特點。所以,本文將3級觸發(fā)網(wǎng)絡作為區(qū)分木馬電路與普通電路的特征之一,并將在4.2節(jié)中給出其有效性的驗證。
環(huán)形振蕩器定義為由奇數(shù)個反相器首尾相連組成的環(huán)形電路。在相當一部分的硬件攻擊中,環(huán)形振蕩器電路會被用作木馬電路的負載模塊[17,18]。例如,圖2所示電路通過木馬觸發(fā)信號控制一個29級環(huán)形振蕩器木馬負載,以便降低電路性能。
圖2 環(huán)形振蕩器結(jié)構特征示意圖
因此,本文首次提出一種環(huán)形振蕩器的靜態(tài)特征提取方案,以靜態(tài)特征檢測的方式對環(huán)形振蕩器木馬負載進行檢測。設net是待測電路的一個線網(wǎng)類型,環(huán)形振蕩器特征定義為線網(wǎng)類型net連續(xù)經(jīng)過3級邏輯級以上的反相器結(jié)構,該線網(wǎng)類型net視為木馬可疑信號。由于正常電路中也可能存在環(huán)形振蕩器結(jié)構,所以環(huán)形振蕩器特征還要附加一個判斷條件:如果環(huán)形振蕩器的原始觸發(fā)信號為已經(jīng)檢測出的木馬可疑信號且該信號通過一種開關門電路,則該環(huán)形振蕩器結(jié)構中所有的信號為木馬信號。環(huán)形振蕩器特征的有效性將在3.2節(jié)中通過實驗證明。
基于XGboost的混合模式多層級硬件木馬檢測方法具體結(jié)構如圖3所示。該方法將靜態(tài)檢測與動態(tài)檢測相結(jié)合,采用多層級的結(jié)構對待測電路進行木馬檢測。首先通過分析門級網(wǎng)表的靜態(tài)特征,應用XGBoost算法實現(xiàn)第1層級的硬件木馬檢測;繼而對網(wǎng)表中的掃描鏈路進行分析,檢測可能存在的針對掃描電路的木馬攻擊,完成第2層級的木馬檢測;最后利用動態(tài)檢測和翻轉(zhuǎn)率的數(shù)據(jù)分析,進行第3層級的木馬檢測,最終實現(xiàn)優(yōu)化的混合多層級門級硬件木馬檢測。
圖3 基于XGBoost的混合多層級硬件木馬檢測框圖
3.1.1 硬件木馬特征提取
為了便于機器學習算法的執(zhí)行,需要將待測電路的門級網(wǎng)表劃分為信號模塊和門電路結(jié)構模塊。其中,輸入信號、輸出信號、線網(wǎng)信號均屬于信號模塊,它們也被分別放入相應的列表中。門電路結(jié)構模塊將進行規(guī)范化處理,即將所有門級單元獨立出來,包括門級單元的類型、名稱、輸入輸出信號。
規(guī)范化處理后的門級單元將以文本匹配的方式對其進行分析。以線網(wǎng)類型net作為信號的起點,確定該信號所經(jīng)過的門級單元類型以及該門級單元的輸入輸出信號。每個門級單元建立一個有向圖節(jié)點,該節(jié)點的標簽表示該門級單元的具體門結(jié)構。根據(jù)門級單元的輸入輸出信號的相互連接建立有向圖的邊,其中輸入方向的最后一個節(jié)點為當前節(jié)點,輸出方向的第1個節(jié)點為當前節(jié)點,這樣就形成了具有輸入輸出特征的有向圖。通過對得到的有向圖的節(jié)點特性分析,可獲得前文所述的各節(jié)點的木馬電路特征,從而得到待檢測電路的靜態(tài)特征數(shù)據(jù)集。該數(shù)據(jù)集為第1層級檢測中機器學習算法的處理對象。
3.1.2 XGBoost算法
XGBoost算法是一種梯度提升算法,由多棵回歸樹組成,其核心思想是將許多弱分類器集成在一起,形成一個強分類器,每一個新的分類器都是在原分類器的基礎上沿著損失函數(shù)的負梯度方向生成[17]。相比于只通過1階導數(shù)對函數(shù)進行優(yōu)化的傳統(tǒng)梯度提升樹(Gradient Boosting Decision Tree,GBDT)算法,XGBoost算法則是對函數(shù)進行2階泰勒展開,這使得XGBoost算法具有更快的模型收斂速度。此外,通過在損失函數(shù)中添加正則化項來抑制模型復雜度,XGBoost算法還可以有效地防止過擬合。而本文擬使用的實驗樣本數(shù)據(jù)相較于大規(guī)模的機器學習相對較小,較易出現(xiàn)過擬合的現(xiàn)象。此外,提取的門級木馬特征在量綱和單位均有所不同,導致對應的特征值具有較大差異,可能造成機器學習模型難以收斂,而數(shù)值高的特征可能具備對模型的較大影響力?;跊Q策樹的XGBoost算法是通過分析特征數(shù)據(jù)的分布以及數(shù)據(jù)特征之間的條件概率來進行葉子節(jié)點分裂的,并不是參考特征的具體數(shù)值,因而對上述現(xiàn)象具有較好的包容性,因而較為適合用于門級硬件木馬的檢測。
3.1.3 檢測流程
靜態(tài)特征的木馬檢測方法的流程是基于靜態(tài)特征集和標準木馬庫Trust-Hub所得的訓練數(shù)據(jù)集,使用XGBoost算法的訓練過程,進行特征集和算法模型的優(yōu)化,得到最佳特征集和最優(yōu)參數(shù)配置的訓練模型,最后對測試數(shù)據(jù)集進行硬件木馬檢測,并進行準確率的分析。
其中,最佳特征集是通過交叉驗證的方式對待測電路中提取的靜態(tài)特征進行篩選而得到?;诿總€特征對檢測結(jié)果的重要性排名,設置閾值來篩選特征,最終通過檢測結(jié)果的準確率來選擇特征構建最佳特征集。
通過將最佳特征集得到的訓練數(shù)據(jù)送到機器學習算法中進行模型訓練。針對檢測準確率方面對模型進行評估,調(diào)整訓練參數(shù),得到最優(yōu)的訓練模型。在參數(shù)調(diào)優(yōu)過程中對模型性能影響較大的參數(shù)主要有學習率、迭代次數(shù)、最大樹深度和最小樣本權重。
測試集和訓練集是采用留一法從Trust-Hub的14個門級木馬電路得到的,即每次將14種待測電路中的一種電路作為測試電路,其余的13種電路都作為訓練電路。留一法可以保證每個待測電路對于機器學習模型都是未知的電路結(jié)構,為實驗的科學性提供了保證。
作為典型的可測性設計技術之一,掃描鏈通常會被添加到門級網(wǎng)表,以提升后期制造測試的效率,然而,由于掃描鏈提供了電路的訪問通路,也極易被木馬制造者所利用。例如,旁路檢測方法需要向待測電路中輸入測試激勵,動態(tài)的分析電路實際工作情況,木馬制造者則可能對門級掃描鏈的電路結(jié)構進行修改,從而避免木馬電路在測試階段暴露。通過分析硬件木馬電路在掃描鏈電路存在的效應,提出兩種掃描鏈結(jié)構中的硬件木馬特征。旨在對基于機器學習的木馬檢測方法進行補充,從而得到更加完善的靜態(tài)硬件木馬檢測方案。
3.2.1 掃描鏈使能木馬信號
在添加掃描鏈的過程中,每個正常的時序電路單元都會被轉(zhuǎn)換為掃描時序單元。例如,原始電路中的D觸發(fā)器(D Flip-Flop,DFF)結(jié)構在添加過程中會被轉(zhuǎn)化為掃描D觸發(fā)器(Scan D Flip-Flop,SDFF)。木馬制造者可以將木馬電路的觸發(fā)信號設置為SE使能信號經(jīng)過反相器的輸出信號,如圖4中的使能木馬信號所示。這將使得木馬電路在整體電路進行功能測試時一直處于未激活狀態(tài),成功躲避功能檢測。因此掃描鏈使能木馬信號定義為:掃描鏈使能信號SE經(jīng)過反相器的輸出信號。
3.2.2 未轉(zhuǎn)換可疑信號
在添加掃描鏈的過程中,還有一些木馬電路的序列單元在木馬設計者的操作下不會被轉(zhuǎn)換為掃描測試單元,如圖4的未轉(zhuǎn)換模塊所示。該電路為泄露信息型木馬電路,在添加掃描鏈階段,設計者故意未將木馬電路中的D觸發(fā)器轉(zhuǎn)換為掃描D觸發(fā)器,導致在進行功能測試時,木馬電路并未接入掃描電路中,從而躲避檢測。因此,未轉(zhuǎn)換可疑信號定義為:在添加掃描鏈的過程中,未被轉(zhuǎn)換成掃描測試單元的正常時序單元中的所有信號。
圖4 掃描鏈中木馬電路結(jié)構特征
3.2.3 掃描鏈特征檢測
通過對掃描鏈木馬電路的特征分析,在第2層級對待測電路進行掃描鏈靜態(tài)檢測。由于木馬電路在掃描鏈中所展現(xiàn)的特征是獨特的,且是正常電路不可能具備的特征。所以,可以直接對掃描鏈中的木馬電路特征進行提取,將具備特征的信號定義為木馬可疑信號。掃描鏈特征提取使用正則匹配方式,將符合上述提出的特征信號標記為木馬可疑信號。在第2層級檢測中針對第1層級檢測分類出的正常電路繼續(xù)進行掃描鏈靜態(tài)檢測,并將電路分離為正常電路和木馬電路。
通過總結(jié)相關工作,靜態(tài)檢測對于木馬電路檢測存在一定的局限性。為了進一步提升檢測效率,在第3層級,將經(jīng)由第2層級掃描鏈靜態(tài)檢測得到的正常電路進行動態(tài)檢測,利用動態(tài)特征檢測和靜態(tài)特征檢測的相互補充,進一步提升檢測方法的準確率。
動態(tài)檢測的出發(fā)點在于,實際電路工作時,木馬觸發(fā)電路的活動率通常低于普通電路,統(tǒng)計分析信號活動率的差異,可以用于鑒別可疑木馬信號。動態(tài)翻轉(zhuǎn)率可以用于標示信號在實際工作時的活動率,假設在m個時鐘周期內(nèi)節(jié)點的翻轉(zhuǎn)次數(shù)為n,則其動態(tài)翻轉(zhuǎn)率為n/m。
選取Trust-Hub上的電路為測試基準,根據(jù)電路的功能,注入相應的測試激勵,分析可得木馬電路的平均觸發(fā)概率為9.46–10,因此,動態(tài)翻轉(zhuǎn)率小于平均觸發(fā)概率的信號將被標記為可疑信號。實驗中,使用Synopsys EDA工具VCS,信號翻轉(zhuǎn)次數(shù)可以從VCS生成的報告中提取。對經(jīng)由第2層級掃描鏈靜態(tài)檢測得到的正常電路進行動態(tài)檢測,可得到最終的木馬電路鑒別結(jié)果。
目前被廣泛認可的可作為測試基準的數(shù)字型木馬電路為Trust-Hub木馬庫和DeTrust項目[19],其中,Trust-Hub提供了門級、RTL級和板級的多種基準木馬電路,DeTrust則是給出了優(yōu)化隱蔽性的木馬電路設計方法。我們選擇Trust-Hub中的14個基準門級木馬電路和5個自實現(xiàn)的DeTrust木馬作為待測電路,使用基于XGBoost的混合模式檢測方法對待測電路進行檢測。特征提取框架由Python語言構建,使用XGBoost工具庫[20]。靜態(tài)特征提取實驗在Win7服務器上進行,使用Intel E5-1607中央處理器,運行頻率為3.1 GHz,內(nèi)存為16 GB。實驗結(jié)果可通過以下指標反映:被標示為木馬樣本(負樣本)的木馬數(shù)目(True Negative,TN)、被標示為正確樣本的木馬數(shù)目(False Positive,FP)、被標示為木馬的正確樣本數(shù)目 (False Negative,FN)、被標示為正確的正確樣本數(shù)目 (True Positive,TP),TPR,TNR。其中,TPR,TNR為最重要的檢測準確率指標,分別表示正確樣本被標示為正確的比率、木馬樣本被標示為木馬的比率。而TPR,TNR指標的計算方法為
為了驗證第2節(jié)中木馬特征的有效性,進行如下實驗:采用添加新特征的特征數(shù)據(jù)集和不添加新特征的特征數(shù)據(jù)集分別對待測電路進行靜態(tài)檢測??紤]到測試電路的基準性,對Trust-Hub中的14個電路進行實驗,根據(jù)實驗結(jié)果繪制箱線圖,如圖5所示。從箱狀圖中可以看出在添加新特征后,無論TPR值方面還是TNR值方面都有所提高。從箱體結(jié)構來看,添加新特征后箱體展現(xiàn)出更優(yōu)的數(shù)據(jù)分布,箱體長度明顯縮短,對每個待測電路呈現(xiàn)出較小的波動,有更好的適應性。從平均值來看,TPR平均值提高了8%,TNR平均值提高了2%。這足以證明新提出的特征對特征數(shù)據(jù)集存在積極效應,有助于獲得更精準的靜態(tài)檢測結(jié)果。
圖5 特征有效性箱型圖結(jié)果對比
經(jīng)過對19種待測電路檢測,多層級硬件木馬檢測方法對待測電路的檢測時間平均為2.85~5 s。這表明檢測方法在面對數(shù)萬門以上的較大規(guī)模的集成電路時,仍然可以在較短的時間內(nèi)完成待測電路的木馬檢測。待測電路在檢測方法中各層級的檢測結(jié)果如表1所示。檢測結(jié)果表明,采用多層級檢測平均可以提高3.9%TPR準確率,其中Trust-Hub電路中可提高5.6%TPR準確率,在s38417-T100中甚至提高了36.4%TPR準確率。隨著待測電路通過每個測試層級,檢測方法的檢測效果逐漸提高。在第1層靜態(tài)檢測,Trust-Hub電路的TPR平均值為88.4%,DeTrust電路的TPR平均值為80.1%。這證明第1層的靜態(tài)檢測可以有效地對木馬電路進行篩選。在經(jīng)過第2層級檢測后,Trust-Hub電路TPR的平均值增加為90.6%,這表明第2層掃描鏈檢測對檢測結(jié)果進行了優(yōu)化。由于88.4%的木馬電路在第1層級中已經(jīng)被識別,導致未被檢測到的木馬電路剩余數(shù)量基數(shù)稀少,且剩余木馬電路檢測難度更加困難。因此,TPR平均值增加2.2%對Trust-Hub電路的第2層級檢測已是較優(yōu)的結(jié)果。由于我們實現(xiàn)的DeTrust電路中并沒包含掃描鏈電路,所以其TPR值并沒變化。經(jīng)過第3層動態(tài)檢測后,Trust-Hub電路TPR的平均值增加為94.0%,DeTrust電路TPR的平均值增加為82.1%,DeTrust電路TNR的平均值增加為92.2%。這證明動態(tài)特征檢測與靜態(tài)特征檢測相互補充的有效性。同時,最終檢測結(jié)果相比于第2層級平均提高了2.8%,這也充分詮釋對木馬電路進行動態(tài)靜態(tài)結(jié)合檢測的必要性。
表1 各層級檢測結(jié)果詳細參數(shù)
現(xiàn)有的門級硬件木馬檢測方法的相關文獻的檢測對象均為Trust-Hub庫中的門級硬件木馬電路,因此在本節(jié),將通過與現(xiàn)有的其他機器學習檢測方法對于Trust-Hub木馬檢測結(jié)果的比較,分析多層級檢測方法的優(yōu)勢。由于文獻[13]檢測方法使用的測試基準與我們使用的測試基準相同,且文獻[13]無論在檢測效果上還是檢測方法影響因數(shù)上都有出色的表現(xiàn)。所以,選擇文獻[13]作為對比較為合適。多層級檢測方法與文獻[13]檢測方法的TPR和TNR的比較結(jié)果如圖6所示。
圖6 兩種方法檢測結(jié)果比較
從圖6中可以看出在大多數(shù)電路中,多層級檢測方法的TPR值均高于文獻[13]檢測方法。特別在一些電路中,如s35932-T200 (網(wǎng)表中具有較為明顯的本文提出的特征),多層級檢測方法相對于文獻[13]高出75%。在平均值方面,多層級檢測方法可以達到94.0%的TPR值,明顯高于文獻[13]的72.8%。這表明多層級檢測方法可以更準確地從待測電路中識別出木馬電路。在TNR方面,從圖6中可以看出兩種檢測方法的TNR值幾乎持平。由于多層級檢測方法需要對木馬進行精準的多層級檢測,可能會導致TNR的值相較于文獻[13]略有不足。硬件木馬檢測方法的主要目的是防止惡意的第三方廠商在電路中插入木馬電路,識別出待測電路中所有的木馬電路是檢測方法的首要任務。所以,可將關注點主要集中在TPR的檢測率,在確保得到較高的TPR檢測率的基礎上,同時保證獲得較高的TNR檢測率。與文獻[13]相較于TNR減少0.4%,多層檢測方法在TPR方面提高21.2%的精度。這對門級硬件木馬電路的檢測效果是最優(yōu)的且最有效的提高。
基于XGBoost算法的混合模式多層級硬件木馬檢測方法能夠?qū)﹄娐分械拿總€線網(wǎng)類型節(jié)點進行判別分類,并采用動態(tài)檢測與靜態(tài)檢測相結(jié)合的方式識別待測電路中的木馬電路,為硬件木馬檢測提供一個新方向。實驗結(jié)果表明,該檢測方法可以高效地識別出大部分木馬電路,且識別效率顯著優(yōu)于現(xiàn)有的門級電路硬件木馬檢測方法。未來,為了進一步完善混合模式的硬件木馬檢測方法,可以與RTL級的木馬電路檢測相結(jié)合,搭建全面且高效的硬件木馬檢測平臺。