傅子晗,吳新春*,朱書霖,魏紅梅
(1.西南交通大學(xué) 信息科學(xué)與技術(shù)學(xué)院,四川 成都 611756;2.寧波漢達信息科技有限公司,浙江 寧波 315048)
硬件木馬能改變原始電路功能,嚴(yán)重影響芯片安全,因此很有必要對硬件木馬進行研究。近年來,硬件木馬檢測研究主要集中在反向剖析檢測法、旁路信號分析檢測法、邏輯測試檢測法等。Nasr. A等人提出了一種高效的面向梯度的反向剖析硬件木馬檢測方法[1],該方法利用方向梯度直方圖自動提取和描述電路布局的特點。Chakraborty R S等人提出了MERO的硬件木馬向量優(yōu)化檢測方法[2],它是一種基于內(nèi)部節(jié)點稀有邏輯條件多重激勵的測試模式生成技術(shù)。Voyiatzis等人提出的基于組合測試的硬件木馬檢測方法[3],將重點放在觸發(fā)硬件木馬的效率上。
與國外相比,國內(nèi)在硬件木馬領(lǐng)域的研究起步較晚。在旁路信號分析檢測方面鄧高明等分析了是否含硬件木馬的密碼芯片對應(yīng)旁路信號在主成分分析結(jié)果上的差異,并以此對DES密碼原型芯片進行了檢測實驗[4]。徐力等提出一種在電路設(shè)計過程中插入二選一數(shù)據(jù)選擇器,提高電路節(jié)點翻轉(zhuǎn)概率的方法。將電路功耗作為旁路信號,利用旁路信號分析法進行硬件木馬檢測[5]。在反向剖析檢測方面,胡星等針對芯片照相和拼接過程中存在圖片信息位置偏移的問題,提出了一種基于偏差統(tǒng)計的校正算法[6]。在邏輯測試檢測方面,主要集中在提高硬件木馬活性、提高硬件木馬被激活可能性等方向[7]。本論文主要研究邏輯測試檢測方法中基于稀有節(jié)點的向量優(yōu)化,包括稀有節(jié)點的查找和選擇。
邏輯測試的核心思想就是讓硬件木馬得到激活,改變原始電路的功能,從而確定存在硬件木馬。由于現(xiàn)在芯片規(guī)模不斷增大,它的輸入輸出端口也不斷增多。對于一個N輸入端口的芯片,有了2N個輸入向量,而木馬的隱蔽性可能會讓2N-1個向量不能激活木馬,只能由一個向量激活木馬。這無疑增加了邏輯測試的難度,為了解決此問題,可采用侵入式或非侵入式邏輯測試方法。
侵入式邏輯測試是指在對原始電路做設(shè)計時,額外加入電路方便測試,從而使電路在測試過程中更容易控制內(nèi)部觸發(fā)器,使嵌入的硬件木馬被激活的概率大大增加,從而減少硬件木馬被植入的風(fēng)險。如文獻[5]提出的通過插入二選一數(shù)據(jù)選擇器來提高硬件木馬激活概率的方法。
非侵入式邏輯測試通常是基于自動測試向量生成技術(shù)來生成大量的測試向量,并對其進行優(yōu)化,然后選擇優(yōu)化后的向量集來測試電路。文獻[8]提出了基于貪婪算法的測試向量優(yōu)化算法。
稀有節(jié)點就是電路中翻轉(zhuǎn)概率低于閾值θ的節(jié)點,不同的電路需要根據(jù)電路情況選擇不同的閾值θ。稀有節(jié)點分為兩種情況,即稀有0節(jié)點:p0< 基于稀有節(jié)點的檢測方法的目的是通過提前分析電路信息,找出電路中的稀有節(jié)點,以更高的激活稀有節(jié)點轉(zhuǎn)換概率為目標(biāo)進行對測試向量進行優(yōu)化,減小測試向量容量。 電路節(jié)點的翻轉(zhuǎn)概率是節(jié)點為1的概率p1和節(jié)點為0的概率p0的積TP,即 TP =p0×p1 (1) 由一般性的數(shù)學(xué)規(guī)律可以得出節(jié)點的翻轉(zhuǎn)概率在p0=p1=0.5時取得最大值為:TP_max=0.025。當(dāng)任意有p0或者p1偏離0.5時,TP就會減小。 由真值表得出,n4節(jié)點在np節(jié)點輸出為1時,結(jié)果就不正確。 表2 節(jié)點0/1概率及翻轉(zhuǎn)概率 當(dāng)四個節(jié)點為正常節(jié)點時,p1(nA_n)=0.25,p1(nB_n)=0.25,p1(nP_n)=6.25×10-2。而當(dāng)四個節(jié)點為稀有節(jié)點時則p1(nA_a)=0.0025 , p1(nB_a)=0.0025 ,p1(nP_a)=6.25×10-6。兩者的概率直接相差了4個數(shù)量級,在相同激活邏輯情況下,選擇稀有節(jié)點木馬的激活概率顯著下降。 對于此類硬件木馬如果采用非侵入式的邏輯檢測方法,基于稀有節(jié)點的觸發(fā)方式就有了用武之地。以圖1的木馬為例,如果測試向量集以觸發(fā)n0、n1、n2、n3為目標(biāo),或者說向量集全都觸發(fā)n0、n1、n2、n3這四個節(jié)點,木馬被激活的概率提高很多。 圖1 硬件木馬 稀有節(jié)點的查找有兩種方法:邏輯分析法和隨機仿真法。 2.2.1 邏輯分析 邏輯分析法按信號走向規(guī)律,從左至右依次對電路節(jié)點以及經(jīng)過邏輯門后的節(jié)點翻轉(zhuǎn)概率進行計算,得出每個節(jié)點的翻轉(zhuǎn)概率。如圖2所示,輸入的8個端口0/1概率分別為1/2,通過一個兩輸入的與門后0/1概率分別變?yōu)?/4、1/4,再通過一個兩輸入的與門或者一個兩輸入的或門,0/1概率分別變?yōu)?5/16、1/16和9/16、7/16,最后通過一個兩輸入的與門,0/1概率分別變?yōu)?49/256、7/256。從而,每個節(jié)點的翻轉(zhuǎn)概率也可知道,最后再設(shè)置閾值,稀有節(jié)點即可找到。邏輯分析方法優(yōu)點明顯,直接快速,特別是對于邏輯簡單、規(guī)模較小的電路,而且邏輯分析計算的概率是一個確切值。但是對于復(fù)雜電路,如復(fù)雜反饋回路、復(fù)雜時序邏輯、規(guī)模較大,邏輯分析比較復(fù)雜,效率較低。 圖2 邏輯分析原理 2.2.2 隨機仿真 隨機仿真通過對待測電路施加隨機向量,統(tǒng)計各節(jié)點的0/1存在時間,繼而算出節(jié)點的翻轉(zhuǎn)概率。隨機仿真存在誤差,且與施加的隨機向量個數(shù)直接相關(guān),需要使用大量的隨機向量來解決誤差的問題。隨機仿真的優(yōu)點是方便處理復(fù)雜電路,不需考慮電路的邏輯問題。而缺點是隨機向量多,仿真時間長,數(shù)據(jù)處理量大,以及存在誤差。 稀有節(jié)點選擇時考慮閾值θ,如果閾值θ較小,θ≤0.25,選擇的節(jié)點數(shù)量少,可能會遺漏一些木馬的植入節(jié)點,如果閾值θ較大,選擇的節(jié)點數(shù)量多,起不到應(yīng)有的效果。為了能讓設(shè)置的閾值θ效果良好,閾值θ設(shè)置在能區(qū)分30%左右節(jié)點較為合適。另外,需要考慮翻轉(zhuǎn)概率為0錯誤節(jié)點,即一直保持邏輯1或者邏輯0,如GND和VDD,需要將錯誤節(jié)點剔除。 搭建的仿真測試平臺主要包括四個部分:電路信息的讀取,并查找統(tǒng)計稀有節(jié)點;選擇稀有節(jié)點,并向原始電路植入硬件木馬;在Visual Studio完成測試向量優(yōu)化;將隨機向量集和優(yōu)化向量集分別施加于原始電路和感染電路,對檢測結(jié)果進行分析。本文選擇的待測電路是學(xué)術(shù)界公認(rèn)的ISCAS'89基準(zhǔn)電路中的S1423電路[9]。 針對本文提出的兩種稀有節(jié)點的查找辦法分別設(shè)計了兩種查找平臺。 第一種查找稀有節(jié)點平臺使用了Modelsim電路仿真和用Python數(shù)據(jù)處理,如圖3所示。 圖3 稀有節(jié)點查找統(tǒng)計平臺1 (1)python產(chǎn)生隨機向量。本文共產(chǎn)生2000條隨機向量,并保存在.txt文件中。 (2)Modelsim讀取向量并仿真。仿真時testbench從.txt文件讀取向量,作為激勵對電路進行仿真。 (3)VCD文件生成。VCD是一種基于ASCII碼的文件格式,它記錄了Modelsim仿真過程中節(jié)點的翻轉(zhuǎn)情況。Modlesim腳本仿真時,加上vcd生成代碼能得到vcd文件,如圖4所示,腳本中vcd file s1423.vcd表示生成vcd文件,vcd flush表示把最后一條節(jié)點信息寫入文件。 圖4 vcd 文件產(chǎn)生 (4)Python處理VCD文件并統(tǒng)計每個節(jié)點的0/1概率。vcd文件的格式如圖5所示,左圖2596行,n1053gat的節(jié)點屬于wire型,vcd文件中用符號z:表示。右圖表示在39181ns時,每個符號代表的邏輯值,如3125287行中的E@符號代表的節(jié)點在39181ns時為邏輯1。通過節(jié)點的邏輯值,即可求出0/1概率。 圖5 vcd 文件 第二種查找稀有節(jié)點平臺流程如圖6所示。 圖6 稀有節(jié)點查找統(tǒng)計平臺2 (1)設(shè)計c語言程序讀取S1423的RTL代碼。 (2)修改RTL代碼風(fēng)格,方便讀取電路信息。 (3)將電路的輸入節(jié)點的0/1概率設(shè)為50%。 (4)計算邏輯門輸入節(jié)點0/1概率。 (5)判斷邏輯門輸入節(jié)點概率是否都已計算。 (6)如果否則轉(zhuǎn)到第(4)步,如果是計算輸出節(jié)點0/1概率。 (7)判斷所有節(jié)點概率是否全部計算。 (8)如果否跳回第(5)步,如果是則計算所有節(jié)點翻轉(zhuǎn)概率。 S1423電路節(jié)點翻轉(zhuǎn)概率情況分布如圖7所示,稀有節(jié)點翻轉(zhuǎn)概率統(tǒng)計結(jié)果如表3所示。S1423電路節(jié)點的翻轉(zhuǎn)概率集中在0.2-0.25之間,共472個節(jié)點,占總結(jié)點數(shù)約63.02%,0.1-0.2之間的節(jié)點共199個,0.01-0.1之間的節(jié)點共60個,小于等于10-2的節(jié)點為18個。 圖7 稀有節(jié)點翻轉(zhuǎn)概率 表3 S142 3節(jié)點翻轉(zhuǎn)概率情況分布 單位(個) 本文研究了如何找到電路中翻轉(zhuǎn)概率較低的稀有節(jié)點,提出了兩種稀有節(jié)點的查找方法:邏輯分析法和隨機仿真法。為保證硬件木馬能夠被激活并且向量集精簡,確定合適的稀有節(jié)點觸發(fā)次數(shù)。選擇ISCAS'89基準(zhǔn)電路作為實驗對象,搭建驗證平臺,完成了稀有節(jié)點查找和選擇的仿真。2.1 基于稀有節(jié)點檢測硬件木馬的可行性分析
2.2 稀有節(jié)點查找
2.3 稀有節(jié)點選擇
3 實驗設(shè)計與仿真
4 結(jié)論