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




2.2 稀有節點查找

2.3 稀有節點選擇
3 實驗設計與仿真






4 結論