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