陳 鑫,高良俊,任傳寶,易茂祥,黃正峰
合肥工業(yè)大學(xué) 電子科學(xué)與應(yīng)用物理學(xué)院,合肥230009
隨著集成電路(IC)的快速發(fā)展,IC的設(shè)計(jì)與制造分離已經(jīng)成為一種趨勢,導(dǎo)致IC安全面臨更多威脅。這種分離給攻擊者提供了機(jī)會在原始電路中植入具有惡意功能的冗余電路,稱為硬件木馬(HT),它可以篡改或者破壞載體電路的參數(shù)或正常功能,導(dǎo)致電路功能改變、敏感信息泄露或拒絕服務(wù)等[1-3]。IC芯片被廣泛地應(yīng)用于國防、軍事、金融、交通等領(lǐng)域,一旦受到HT的攻擊,就會造成極大的經(jīng)濟(jì)、安全等方面的損失。同時(shí),“斯諾登棱鏡門”“伊朗震網(wǎng)”等事件的發(fā)生也表明,HT可以作為武器來進(jìn)行信息戰(zhàn)、網(wǎng)絡(luò)戰(zhàn),甚至可以摧毀軍事裝備及關(guān)鍵設(shè)備,給國家和人民的安全帶來嚴(yán)重的威脅。因此,如何檢測出IC中的HT就變得尤為重要。
硬件木馬的檢測方法主要可分為破壞性方法和非破壞性方法。破壞性方法主要指的是逆向工程驗(yàn)證,通過將待測芯片去封裝,然后使用掃描電鏡等設(shè)備對電路逐層進(jìn)行拍照,再與原始版圖作對比,從而判斷芯片中有無硬件木馬,該方法效果較好但成本非常高昂[4]。非破壞性方法包含邏輯測試和旁路分析。基于邏輯測試的檢測技術(shù)主要是通過在電路的輸入端施加各種測試向量,并觀察電路的輸出是否和預(yù)期的輸出一致,從而判斷電路內(nèi)部是否被植入硬件木馬,該方法能夠有效地檢測較小規(guī)模電路中的HT,對于大規(guī)模電路,由于測試向量的獲取較為困難,故HT難于檢測[5];旁路分析方法則是利用在電路中植入HT會對電路的旁路信號產(chǎn)生影響來觀察比較待測電路與原始電路的旁路信息進(jìn)行HT的檢測,該方法能夠檢測出電路中規(guī)模較大的木馬電路,對于較小的木馬電路,由于工藝噪聲的影響,HT對電路產(chǎn)生的影響易被覆蓋,故不易檢測HT[6]。
可信任設(shè)計(jì)方法則是通過在電路上增加額外的電路模塊來輔助促進(jìn)非破壞性硬件木馬檢測方法,減小測試向量的獲取難度或者放大HT對電路參數(shù)的影響。文獻(xiàn)[7]在電路中插入MUX來構(gòu)建RO結(jié)構(gòu),通過構(gòu)建多個(gè)RO來確保電路中每個(gè)門都在環(huán)內(nèi)來檢測HT,但在電路內(nèi)部構(gòu)建多個(gè)RO會改變電路的原始布局,對原始電路的布局布線質(zhì)量會產(chǎn)生較大影響。文獻(xiàn)[8-10]通過構(gòu)建多個(gè)RO覆蓋整個(gè)電路來檢測電路中是否有HT的插入,基于HT在工作時(shí)會產(chǎn)生一個(gè)電壓降的原理,從而將RO作為電源功率監(jiān)測器應(yīng)用于電路,由于構(gòu)建RO的數(shù)量和級數(shù)較多,因此會造成較大的硬件開銷。文獻(xiàn)[11]選擇轉(zhuǎn)換概率比較低的電路節(jié)點(diǎn)作為目標(biāo)節(jié)點(diǎn)來構(gòu)建鎖存結(jié)構(gòu),通過在版圖級選擇合適的參考路徑來盡可能地降低工藝波動(dòng)對鎖存結(jié)構(gòu)檢測HT的影響。文獻(xiàn)[12]提出基于與非門的RO比基于反相器的RO對HT的檢測更敏感。文獻(xiàn)[13]中提出通過調(diào)整RO級數(shù)的方法來提高對HT的檢測敏感度。
因此,對于上述提到的基于可信任設(shè)計(jì)的硬件木馬檢測方法存在硬件開銷較大及HT傾向于在電路轉(zhuǎn)換概率較低的節(jié)點(diǎn)插入的問題,本文提出了在基于電路中轉(zhuǎn)換概率較低的節(jié)點(diǎn)處構(gòu)建RO的HT檢測方法。該方法首先計(jì)算電路節(jié)點(diǎn)的轉(zhuǎn)換概率并挑選出低于轉(zhuǎn)換概率閾值的節(jié)點(diǎn),然后在挑選出的節(jié)點(diǎn)處構(gòu)建RO結(jié)構(gòu),進(jìn)行木馬的檢測。實(shí)驗(yàn)結(jié)果表明,與文獻(xiàn)[7,14]相比,本文提出的方法具有較小的硬件開銷,并在可接受的面積和功耗開銷下,可以檢測到僅有一到兩個(gè)門的小型木馬電路。
由于小型木馬電路規(guī)模較小而具有更低的硬件開銷及對電路的旁路信號的影響較小而具有更高的隱蔽性,現(xiàn)有的硬件木馬檢測方法對小型木馬的檢測具有局限性[15-16]。而硬件木馬對于電路的危害并不是隨HT的規(guī)模線性增加的,因此,小型木馬一旦被激活也會對電路產(chǎn)生較大的惡意后果[17-18]。本文提出的方法則彌補(bǔ)了現(xiàn)有方法對檢測小型HT的不足。
電路節(jié)點(diǎn)的轉(zhuǎn)換概率指的是節(jié)點(diǎn)邏輯值的翻轉(zhuǎn)概率。當(dāng)假定電路中所有主輸入端輸入為“0”和“1”的概率都為0.5時(shí),就能夠根據(jù)邏輯門的類型及電路的拓?fù)浣Y(jié)構(gòu)來計(jì)算出各邏輯門的輸出節(jié)點(diǎn)轉(zhuǎn)換概率,即輸出為“0”和“1”的概率的乘積?;A(chǔ)邏輯門的轉(zhuǎn)換概率計(jì)算公式如表1所示。

表1 轉(zhuǎn)換概率計(jì)算公式
表1中TP表示為該邏輯門輸出節(jié)點(diǎn)的轉(zhuǎn)換概率;Pi0表示第i個(gè)端口輸入為0的概率,同理可得Pi1表示第i個(gè)端口輸入為1的概率。
首先可以假設(shè)攻擊者傾向于將HT插入不容易控制的電路節(jié)點(diǎn)中,即轉(zhuǎn)換概率較低的節(jié)點(diǎn)。這一假設(shè)的基本原理為,高度可控的電路節(jié)點(diǎn)在制造測試階段會有比較大的切換活動(dòng),所以連接到這些節(jié)點(diǎn)的HT引起的旁路效應(yīng)容易被現(xiàn)有的檢測方法檢測到,故攻擊者就會選擇低可控節(jié)點(diǎn)作為HT的插入點(diǎn)[1,11]。
環(huán)形振蕩器(RO)是一種采用奇數(shù)個(gè)具有反向功能的邏輯門組成的一種電路結(jié)構(gòu),且不需要時(shí)鐘來控制其邏輯值的翻轉(zhuǎn)。
如圖1所示為一個(gè)5級的RO結(jié)構(gòu),由1個(gè)與非門和4個(gè)非門組成,其中與非門的一個(gè)輸入端口當(dāng)做使能端(EN)使用。當(dāng)EN=0時(shí),該環(huán)形振蕩器未達(dá)到振蕩條件,不能起振;當(dāng)EN=1時(shí),環(huán)形振蕩器振蕩。RO的振蕩頻率由組成該環(huán)的門的數(shù)量及單個(gè)門的延時(shí)決定。例如,當(dāng)門的平均延時(shí)用td表示,RO的級數(shù)為n,則該RO的振蕩周期為2×n×td,其振蕩頻率為:


圖1 RO結(jié)構(gòu)示例
由前述可得,基于轉(zhuǎn)換概率及RO結(jié)構(gòu)的硬件木馬檢測流程如圖2。該方法主要步驟如下:
步驟1根據(jù)電路節(jié)點(diǎn)轉(zhuǎn)換概率計(jì)算公式及電路的拓?fù)浣Y(jié)構(gòu)來計(jì)算電路節(jié)點(diǎn)的轉(zhuǎn)換概率。
步驟2設(shè)置合適的轉(zhuǎn)換概率閾值,挑選出轉(zhuǎn)換概率低于閾值的電路節(jié)點(diǎn)并放入TP_LST集合中。
步驟3根據(jù)TP_LST集合中節(jié)點(diǎn)在電路中的拓?fù)浣Y(jié)構(gòu)來構(gòu)建RO結(jié)構(gòu)。
步驟4計(jì)算電路的面積開銷,根據(jù)設(shè)置的Area_max調(diào)整RO的數(shù)量。
步驟5根據(jù)算法產(chǎn)生的測試向量及RO的周期變化來檢測是否有木馬的存在。

圖2基于RO的HT檢測方法
綜上可知,本文方法首先將低于轉(zhuǎn)換概率閾值的電路節(jié)點(diǎn)挑選出來,然后分別配置RO結(jié)構(gòu),可以保證電路中若有HT的插入就會被檢測出來;而判斷構(gòu)建的結(jié)構(gòu)的面積開銷及重新調(diào)整TPth,則可以保證在可接受的硬件開銷下獲得最大的HT檢測范圍;通過算法獲得測試向量則可以保證在測試待測電路時(shí)構(gòu)建的RO結(jié)構(gòu)導(dǎo)通,進(jìn)而檢測HT的存在;對于電路中構(gòu)建的多個(gè)RO結(jié)構(gòu),本文方法只需要1個(gè)計(jì)數(shù)器、1個(gè)解碼器及1個(gè)多路選擇器,確保了最小的硬件開銷。
本文方法主要針對電路中轉(zhuǎn)換概率較低的節(jié)點(diǎn)進(jìn)行RO結(jié)構(gòu)的構(gòu)建,且適用于所有ISCAS’85基準(zhǔn)電路。為了對該方法構(gòu)建的RO結(jié)構(gòu)有一個(gè)直觀的了解,本文選擇將ISCAS’85基準(zhǔn)電路中結(jié)構(gòu)相對簡單、規(guī)模適中的C24電路作為示例電路來對所提方法進(jìn)行分析講解。如圖3所示,黑色部分為原始電路。當(dāng)假設(shè)電路的所有輸入端口輸入“0”和“1”的概率都為0.5時(shí),則可以根據(jù)電路中門的類型及電路的拓?fù)浣Y(jié)構(gòu)來計(jì)算出電路中所有節(jié)點(diǎn)的轉(zhuǎn)換概率,如表2,當(dāng)轉(zhuǎn)換概率閾值設(shè)置為0.2時(shí),可以看到節(jié)點(diǎn)N10、N11、N12的轉(zhuǎn)換概率低于閾值TPth。由于木馬攻擊者傾向于將HT插入不容易控制的電路節(jié)點(diǎn)中,即轉(zhuǎn)換概率較低的節(jié)點(diǎn),所以提出的方法對示例電路節(jié)點(diǎn)N10、N11、N12進(jìn)行了RO的構(gòu)建(圖中紅色部分)用來監(jiān)視這些節(jié)點(diǎn)是否被插入硬件木馬。

圖3 示例電路c24

表2 c24電路節(jié)點(diǎn)的轉(zhuǎn)換概率
從圖中可以看出,本文的方法還需要1個(gè)計(jì)數(shù)器、1個(gè)多路選擇器和1個(gè)解碼器。解碼器連接電路中RO的EN端口,用來控制選擇RO的振蕩;多路選擇器則連接RO的輸出端口,用來控制將當(dāng)前振蕩的RO的輸出送到計(jì)數(shù)器;然后計(jì)數(shù)器計(jì)算一定時(shí)間范圍內(nèi)RO的振蕩次數(shù)來計(jì)算該RO的振蕩周期;圖中2位輸入信號SELECT(SELECT信號位數(shù)與電路構(gòu)建的RO數(shù)量有關(guān))是解碼器和多路選擇器的選擇控制信號。從圖中可以看出,若有HT在電路的低轉(zhuǎn)換節(jié)點(diǎn)插入,則在檢測階段檢測該節(jié)點(diǎn)處的RO的振蕩周期時(shí)就會發(fā)現(xiàn)該RO結(jié)構(gòu)的延時(shí)增加,從而導(dǎo)致HT被檢測出來;若有具有反向功能的木馬門插入,則當(dāng)對該RO檢測時(shí)會發(fā)現(xiàn)RO未進(jìn)行振蕩,也會檢測出HT。綜上所述,利用該結(jié)構(gòu)可以有效地檢測HT是否存在。
本實(shí)驗(yàn)是以ISCAS’85基準(zhǔn)電路作為實(shí)驗(yàn)對象。首先使用C++編程語言在Visual Studio 2017實(shí)驗(yàn)平臺上計(jì)算出基準(zhǔn)電路的電路節(jié)點(diǎn)轉(zhuǎn)換概率;然后使用Verilog編程語言在ISE14.7實(shí)驗(yàn)平臺上搭建實(shí)驗(yàn)所需的RO結(jié)構(gòu);根據(jù)RO路徑導(dǎo)通時(shí)部分節(jié)點(diǎn)邏輯值及電路的拓?fù)浣Y(jié)構(gòu)在VS2017上生成電路需要的測試向量;將構(gòu)建好的RO結(jié)構(gòu)下載到SPARTAN6 FPGA開發(fā)板進(jìn)行實(shí)驗(yàn)并使用ISE中的Chipscope功能進(jìn)行觀察計(jì)數(shù)結(jié)果;最后使用Synopsys公司的DC(Design Compiler)綜合工具在基于Nangate 45nm標(biāo)準(zhǔn)單元庫下對所提方法的面積、功耗及延時(shí)信息做出分析。
為實(shí)驗(yàn)的順利進(jìn)行,需要多組符合RO振蕩條件的測試向量。在電路中,當(dāng)MUX選擇其中某個(gè)RO時(shí),需要輸入的測試向量能夠滿足該RO的振蕩條件(即通過該RO路徑上的邏輯門的其余輸入端的邏輯值為非可控邏輯[11]),讓其振蕩從而求得延時(shí)信息。首先,輸入電路的網(wǎng)表結(jié)構(gòu);然后把電路中邏輯門的類型和電路的拓?fù)浣Y(jié)構(gòu)轉(zhuǎn)換成對應(yīng)的合取范式(CNF),如表3;再根據(jù)RO路徑部分電路節(jié)點(diǎn)的邏輯值增加額外的約束,使用SAT算法求解出一組測試向量;最后,重復(fù)上述步驟來得到不同的RO振蕩所需的測試向量集。

表3 基礎(chǔ)邏輯門CNF表達(dá)式
如表4所示第一列為ISCAS’85部分基準(zhǔn)電路的名稱,第二列為benchmark電路的門數(shù)量,第三列為各基準(zhǔn)電路中轉(zhuǎn)換概率低于設(shè)置閾值(TPth)的節(jié)點(diǎn)數(shù)量,第四到第八列分別表示需要構(gòu)建的RO的數(shù)量,構(gòu)建RO需要的額外的非門和與非門數(shù)量,以及計(jì)數(shù)器、解碼器和多路選擇器的數(shù)量。
從表中可知,隨著電路邏輯門數(shù)量的增加,構(gòu)建的RO數(shù)量并不是隨之遞增的,而是取決于電路中節(jié)點(diǎn)轉(zhuǎn)換概率低于設(shè)定閾值的節(jié)點(diǎn)數(shù)量以及該節(jié)點(diǎn)前后級相鄰的節(jié)點(diǎn)轉(zhuǎn)換概率是否也是低于閾值的節(jié)點(diǎn)數(shù)量;而用來控制RO振蕩及計(jì)算周期額外需要的計(jì)數(shù)器、解碼器和多路選擇器的數(shù)量都為1,因?yàn)槊看沃贿x擇某一個(gè)RO進(jìn)行振蕩檢測,所以本文提出的方法中只需要1個(gè)計(jì)數(shù)器,1個(gè)多路選擇器和1個(gè)解碼器,并且在不同的benchmark電路上所需要的計(jì)數(shù)器,多路選擇器和解碼器的大小不一樣,這取決于電路構(gòu)建的RO數(shù)量及振蕩周期的預(yù)計(jì)值大小。
如表5所示為示例電路C24的實(shí)驗(yàn)數(shù)據(jù),表中C24-N10、C24-N11、C24-N12分別表示電路C24的三個(gè)低于設(shè)定轉(zhuǎn)換概率閾值的節(jié)點(diǎn)N10、N11、N12;而表中1G和2G則分別表示插入到電路節(jié)點(diǎn)的1個(gè)和2個(gè)與門木馬[11,15]。為了減小測量誤差,每個(gè)節(jié)點(diǎn)構(gòu)成的RO(插入HT前后)分別進(jìn)行了10次振蕩來求取平均值;然后根據(jù)在設(shè)定時(shí)間內(nèi)的振蕩次數(shù)來計(jì)算RO的周期值;同時(shí)計(jì)算出RO中平均單個(gè)門延時(shí),約為0.48 ns;表中也給出了在10次振蕩測量中,最大振蕩周期與最小振蕩周期之間的誤差值。由此可看出,若有HT插入,則引起的RO振蕩周期的改變比測量時(shí)的誤差大得多,故HT易于被檢測。

表4 ISCAS’85部分電路(TP th=0.01)

表5 示例電路c24數(shù)據(jù)
由于c17、c24、c38基準(zhǔn)電路相對較小,故在此未進(jìn)行分析。而所提出的方法的硬件開銷主要來源于環(huán)形振蕩器,計(jì)數(shù)器,多路選擇器和解碼器。
3.4.1功耗
圖4給出了部分ISCAS’85電路在節(jié)點(diǎn)轉(zhuǎn)換概率閾值TPth=0.01時(shí)構(gòu)建RO結(jié)構(gòu)前后的功耗分布,圖中w/o表示基準(zhǔn)電路原始的功耗,w表示在構(gòu)建RO結(jié)構(gòu)后的電路功耗。在不同的電路中,構(gòu)建RO時(shí)盡量選擇只添加一個(gè)與非門(當(dāng)原路徑中有偶數(shù)個(gè)具有反相功能的門時(shí))或者一個(gè)非門加與非門(當(dāng)原路徑中有奇數(shù)個(gè)具有反相功能的門時(shí))的組合,同時(shí)在電路低轉(zhuǎn)換概率節(jié)點(diǎn)的地方觀察該節(jié)點(diǎn)前后級是否還存在其他的低轉(zhuǎn)換概率節(jié)點(diǎn),若有,則選擇將它們構(gòu)建在一個(gè)RO內(nèi),以此來減小硬件開銷。從圖中可以看出,在不同的基準(zhǔn)電路,電路的功耗在構(gòu)建RO結(jié)構(gòu)前后相差很小。
3.4.2 面積
如圖5所示,給出了在部分基準(zhǔn)電路中構(gòu)建RO結(jié)構(gòu)的面積開銷直方圖。從圖中可以看到,在實(shí)驗(yàn)中共設(shè)置了三組不同的轉(zhuǎn)換概率閾值,并在每一次的閾值設(shè)定后對基準(zhǔn)電路做了相應(yīng)的實(shí)驗(yàn),得到其面積開銷數(shù)據(jù);由于在閾值TPth=0.001時(shí),基準(zhǔn)電路c432,c499節(jié)點(diǎn)轉(zhuǎn)換概率沒有低于閾值的節(jié)點(diǎn),故其面積開銷為零;還可以從圖中得出,隨著基準(zhǔn)電路的規(guī)模增加以及電路轉(zhuǎn)換概率閾值的不同,每個(gè)電路的面積開銷變化都比較小。由此可知,在大型電路中,本文提出的HT檢測方法所占用的面積資源百分比會更低。
圖6所示為本文提出的RO方法與文獻(xiàn)[7]和文獻(xiàn)[14]中提出方法的硬件開銷的比較??v坐標(biāo)表示為三種方法結(jié)構(gòu)所需的MOS管數(shù)量,橫坐標(biāo)表示不同的基準(zhǔn)電路。從圖中可以看出,隨著基準(zhǔn)電路規(guī)模的增加,本文方法的硬件開銷變化波動(dòng)較小,而文獻(xiàn)[7]和文獻(xiàn)[14]提出的方法的硬件開銷呈現(xiàn)一個(gè)遞增的趨勢且均高于所提方法,因此可得,本文方法相對于文獻(xiàn)[7]和文獻(xiàn)[14]中提出的方法具有更低的硬件開銷。
3.4.3 延時(shí)

圖4 功耗開銷

圖5 面積開銷

圖6 三種結(jié)構(gòu)MOS管數(shù)量對比
在原始電路中添加結(jié)構(gòu)會對電路的原始性能造成影響,特別是關(guān)鍵路徑的延時(shí)的增加[19]。所以在實(shí)驗(yàn)時(shí)要嚴(yán)格控制電路的時(shí)序,通過在部分ISCAS’85基準(zhǔn)電路上進(jìn)行實(shí)驗(yàn)(節(jié)點(diǎn)轉(zhuǎn)換概率閾值設(shè)為TPth=0.01)得到如圖7所示的延時(shí)數(shù)據(jù)。

圖7 構(gòu)建RO后電路最大延時(shí)與原電路最大延時(shí)比例
圖7所示為電路在構(gòu)建RO后與原電路的最大路徑延時(shí)比,可以看出,通過選擇將RO的位置控制在低轉(zhuǎn)換概率節(jié)點(diǎn)路徑附近來減少布線的延時(shí),電路的最大路徑延時(shí)比不超過1.15,較低程度地影響電路性能。
在本文中,提出在電路的轉(zhuǎn)換概率較低的節(jié)點(diǎn)處構(gòu)建RO來檢測該節(jié)點(diǎn)是否有HT的插入,并通過多路選擇器,解碼器和計(jì)數(shù)器來分別控制選擇不同的RO并計(jì)算振蕩周期。通過對電路門類型及拓?fù)浣Y(jié)構(gòu)的分析來計(jì)算電路節(jié)點(diǎn)的轉(zhuǎn)換概率;通過測試向量生成算法得到實(shí)驗(yàn)所需的測試向量;通過分析選擇適當(dāng)?shù)霓D(zhuǎn)換概率閾值來確定所需要構(gòu)建的RO數(shù)量從而來減小所提方法的功耗和面積開銷;同時(shí),通過嚴(yán)格控制構(gòu)建RO時(shí)的布局布線信息,將電路的最大路徑延時(shí)控制在一定范圍內(nèi)。通過實(shí)驗(yàn)分析,電路在構(gòu)建RO結(jié)構(gòu)后,其功耗,面積及延時(shí)的增加都在可接受范圍內(nèi),并且提出的方法能夠檢測小型HT,彌補(bǔ)了旁路分析法對檢測小型HT的不足。接下來的研究工作會對不同RO級數(shù)進(jìn)行實(shí)驗(yàn),通過尋找合適的RO級數(shù)來提高對HT的檢測精度;對HT攻擊機(jī)制進(jìn)行進(jìn)一步的研究來尋找HT易于攻擊的節(jié)點(diǎn)并構(gòu)建RO結(jié)構(gòu)來檢測HT的插入。