陳 鑫,高良俊,任傳寶,易茂祥,黃正峰
合肥工業(yè)大學 電子科學與應用物理學院,合肥230009
隨著集成電路(IC)的快速發(fā)展,IC的設計與制造分離已經(jīng)成為一種趨勢,導致IC安全面臨更多威脅。這種分離給攻擊者提供了機會在原始電路中植入具有惡意功能的冗余電路,稱為硬件木馬(HT),它可以篡改或者破壞載體電路的參數(shù)或正常功能,導致電路功能改變、敏感信息泄露或拒絕服務等[1-3]。IC芯片被廣泛地應用于國防、軍事、金融、交通等領(lǐng)域,一旦受到HT的攻擊,就會造成極大的經(jīng)濟、安全等方面的損失。同時,“斯諾登棱鏡門”“伊朗震網(wǎng)”等事件的發(fā)生也表明,HT可以作為武器來進行信息戰(zhàn)、網(wǎng)絡戰(zhàn),甚至可以摧毀軍事裝備及關(guān)鍵設備,給國家和人民的安全帶來嚴重的威脅。因此,如何檢測出IC中的HT就變得尤為重要。
硬件木馬的檢測方法主要可分為破壞性方法和非破壞性方法。破壞性方法主要指的是逆向工程驗證,通過將待測芯片去封裝,然后使用掃描電鏡等設備對電路逐層進行拍照,再與原始版圖作對比,從而判斷芯片中有無硬件木馬,該方法效果較好但成本非常高昂[4]。非破壞性方法包含邏輯測試和旁路分析?;谶壿嫓y試的檢測技術(shù)主要是通過在電路的輸入端施加各種測試向量,并觀察電路的輸出是否和預期的輸出一致,從而判斷電路內(nèi)部是否被植入硬件木馬,該方法能夠有效地檢測較小規(guī)模電路中的HT,對于大規(guī)模電路,由于測試向量的獲取較為困難,故HT難于檢測[5];旁路分析方法則是利用在電路中植入HT會對電路的旁路信號產(chǎn)生影響來觀察比較待測電路與原始電路的旁路信息進行HT的檢測,該方法能夠檢測出電路中規(guī)模較大的木馬電路,對于較小的木馬電路,由于工藝噪聲的影響,HT對電路產(chǎn)生的影響易被覆蓋,故不易檢測HT[6]。
可信任設計方法則是通過在電路上增加額外的電路模塊來輔助促進非破壞性硬件木馬檢測方法,減小測試向量的獲取難度或者放大HT對電路參數(shù)的影響。文獻[7]在電路中插入MUX來構(gòu)建RO結(jié)構(gòu),通過構(gòu)建多個RO來確保電路中每個門都在環(huán)內(nèi)來檢測HT,但在電路內(nèi)部構(gòu)建多個RO會改變電路的原始布局,對原始電路的布局布線質(zhì)量會產(chǎn)生較大影響。文獻[8-10]通過構(gòu)建多個RO覆蓋整個電路來檢測電路中是否有HT的插入,基于HT在工作時會產(chǎn)生一個電壓降的原理,從而將RO作為電源功率監(jiān)測器應用于電路,由于構(gòu)建RO的數(shù)量和級數(shù)較多,因此會造成較大的硬件開銷。文獻[11]選擇轉(zhuǎn)換概率比較低的電路節(jié)點作為目標節(jié)點來構(gòu)建鎖存結(jié)構(gòu),通過在版圖級選擇合適的參考路徑來盡可能地降低工藝波動對鎖存結(jié)構(gòu)檢測HT的影響。文獻[12]提出基于與非門的RO比基于反相器的RO對HT的檢測更敏感。文獻[13]中提出通過調(diào)整RO級數(shù)的方法來提高對HT的檢測敏感度。
因此,對于上述提到的基于可信任設計的硬件木馬檢測方法存在硬件開銷較大及HT傾向于在電路轉(zhuǎn)換概率較低的節(jié)點插入的問題,本文提出了在基于電路中轉(zhuǎn)換概率較低的節(jié)點處構(gòu)建RO的HT檢測方法。該方法首先計算電路節(jié)點的轉(zhuǎn)換概率并挑選出低于轉(zhuǎn)換概率閾值的節(jié)點,然后在挑選出的節(jié)點處構(gòu)建RO結(jié)構(gòu),進行木馬的檢測。實驗結(jié)果表明,與文獻[7,14]相比,本文提出的方法具有較小的硬件開銷,并在可接受的面積和功耗開銷下,可以檢測到僅有一到兩個門的小型木馬電路。
由于小型木馬電路規(guī)模較小而具有更低的硬件開銷及對電路的旁路信號的影響較小而具有更高的隱蔽性,現(xiàn)有的硬件木馬檢測方法對小型木馬的檢測具有局限性[15-16]。而硬件木馬對于電路的危害并不是隨HT的規(guī)模線性增加的,因此,小型木馬一旦被激活也會對電路產(chǎn)生較大的惡意后果[17-18]。本文提出的方法則彌補了現(xiàn)有方法對檢測小型HT的不足。
電路節(jié)點的轉(zhuǎn)換概率指的是節(jié)點邏輯值的翻轉(zhuǎn)概率。當假定電路中所有主輸入端輸入為“0”和“1”的概率都為0.5時,就能夠根據(jù)邏輯門的類型及電路的拓撲結(jié)構(gòu)來計算出各邏輯門的輸出節(jié)點轉(zhuǎn)換概率,即輸出為“0”和“1”的概率的乘積?;A邏輯門的轉(zhuǎn)換概率計算公式如表1所示。
表1 轉(zhuǎn)換概率計算公式
表1中TP表示為該邏輯門輸出節(jié)點的轉(zhuǎn)換概率;Pi0表示第i個端口輸入為0的概率,同理可得Pi1表示第i個端口輸入為1的概率。
首先可以假設攻擊者傾向于將HT插入不容易控制的電路節(jié)點中,即轉(zhuǎn)換概率較低的節(jié)點。這一假設的基本原理為,高度可控的電路節(jié)點在制造測試階段會有比較大的切換活動,所以連接到這些節(jié)點的HT引起的旁路效應容易被現(xiàn)有的檢測方法檢測到,故攻擊者就會選擇低可控節(jié)點作為HT的插入點[1,11]。
環(huán)形振蕩器(RO)是一種采用奇數(shù)個具有反向功能的邏輯門組成的一種電路結(jié)構(gòu),且不需要時鐘來控制其邏輯值的翻轉(zhuǎn)。
如圖1所示為一個5級的RO結(jié)構(gòu),由1個與非門和4個非門組成,其中與非門的一個輸入端口當做使能端(EN)使用。當EN=0時,該環(huán)形振蕩器未達到振蕩條件,不能起振;當EN=1時,環(huán)形振蕩器振蕩。RO的振蕩頻率由組成該環(huán)的門的數(shù)量及單個門的延時決定。例如,當門的平均延時用td表示,RO的級數(shù)為n,則該RO的振蕩周期為2×n×td,其振蕩頻率為:
圖1 RO結(jié)構(gòu)示例
由前述可得,基于轉(zhuǎn)換概率及RO結(jié)構(gòu)的硬件木馬檢測流程如圖2。該方法主要步驟如下:
步驟1根據(jù)電路節(jié)點轉(zhuǎn)換概率計算公式及電路的拓撲結(jié)構(gòu)來計算電路節(jié)點的轉(zhuǎn)換概率。
步驟2設置合適的轉(zhuǎn)換概率閾值,挑選出轉(zhuǎn)換概率低于閾值的電路節(jié)點并放入TP_LST集合中。
步驟3根據(jù)TP_LST集合中節(jié)點在電路中的拓撲結(jié)構(gòu)來構(gòu)建RO結(jié)構(gòu)。
步驟4計算電路的面積開銷,根據(jù)設置的Area_max調(diào)整RO的數(shù)量。
步驟5根據(jù)算法產(chǎn)生的測試向量及RO的周期變化來檢測是否有木馬的存在。
圖2基于RO的HT檢測方法
綜上可知,本文方法首先將低于轉(zhuǎn)換概率閾值的電路節(jié)點挑選出來,然后分別配置RO結(jié)構(gòu),可以保證電路中若有HT的插入就會被檢測出來;而判斷構(gòu)建的結(jié)構(gòu)的面積開銷及重新調(diào)整TPth,則可以保證在可接受的硬件開銷下獲得最大的HT檢測范圍;通過算法獲得測試向量則可以保證在測試待測電路時構(gòu)建的RO結(jié)構(gòu)導通,進而檢測HT的存在;對于電路中構(gòu)建的多個RO結(jié)構(gòu),本文方法只需要1個計數(shù)器、1個解碼器及1個多路選擇器,確保了最小的硬件開銷。
本文方法主要針對電路中轉(zhuǎn)換概率較低的節(jié)點進行RO結(jié)構(gòu)的構(gòu)建,且適用于所有ISCAS’85基準電路。為了對該方法構(gòu)建的RO結(jié)構(gòu)有一個直觀的了解,本文選擇將ISCAS’85基準電路中結(jié)構(gòu)相對簡單、規(guī)模適中的C24電路作為示例電路來對所提方法進行分析講解。如圖3所示,黑色部分為原始電路。當假設電路的所有輸入端口輸入“0”和“1”的概率都為0.5時,則可以根據(jù)電路中門的類型及電路的拓撲結(jié)構(gòu)來計算出電路中所有節(jié)點的轉(zhuǎn)換概率,如表2,當轉(zhuǎn)換概率閾值設置為0.2時,可以看到節(jié)點N10、N11、N12的轉(zhuǎn)換概率低于閾值TPth。由于木馬攻擊者傾向于將HT插入不容易控制的電路節(jié)點中,即轉(zhuǎn)換概率較低的節(jié)點,所以提出的方法對示例電路節(jié)點N10、N11、N12進行了RO的構(gòu)建(圖中紅色部分)用來監(jiān)視這些節(jié)點是否被插入硬件木馬。
圖3 示例電路c24
表2 c24電路節(jié)點的轉(zhuǎn)換概率
從圖中可以看出,本文的方法還需要1個計數(shù)器、1個多路選擇器和1個解碼器。解碼器連接電路中RO的EN端口,用來控制選擇RO的振蕩;多路選擇器則連接RO的輸出端口,用來控制將當前振蕩的RO的輸出送到計數(shù)器;然后計數(shù)器計算一定時間范圍內(nèi)RO的振蕩次數(shù)來計算該RO的振蕩周期;圖中2位輸入信號SELECT(SELECT信號位數(shù)與電路構(gòu)建的RO數(shù)量有關(guān))是解碼器和多路選擇器的選擇控制信號。從圖中可以看出,若有HT在電路的低轉(zhuǎn)換節(jié)點插入,則在檢測階段檢測該節(jié)點處的RO的振蕩周期時就會發(fā)現(xiàn)該RO結(jié)構(gòu)的延時增加,從而導致HT被檢測出來;若有具有反向功能的木馬門插入,則當對該RO檢測時會發(fā)現(xiàn)RO未進行振蕩,也會檢測出HT。綜上所述,利用該結(jié)構(gòu)可以有效地檢測HT是否存在。
本實驗是以ISCAS’85基準電路作為實驗對象。首先使用C++編程語言在Visual Studio 2017實驗平臺上計算出基準電路的電路節(jié)點轉(zhuǎn)換概率;然后使用Verilog編程語言在ISE14.7實驗平臺上搭建實驗所需的RO結(jié)構(gòu);根據(jù)RO路徑導通時部分節(jié)點邏輯值及電路的拓撲結(jié)構(gòu)在VS2017上生成電路需要的測試向量;將構(gòu)建好的RO結(jié)構(gòu)下載到SPARTAN6 FPGA開發(fā)板進行實驗并使用ISE中的Chipscope功能進行觀察計數(shù)結(jié)果;最后使用Synopsys公司的DC(Design Compiler)綜合工具在基于Nangate 45nm標準單元庫下對所提方法的面積、功耗及延時信息做出分析。
為實驗的順利進行,需要多組符合RO振蕩條件的測試向量。在電路中,當MUX選擇其中某個RO時,需要輸入的測試向量能夠滿足該RO的振蕩條件(即通過該RO路徑上的邏輯門的其余輸入端的邏輯值為非可控邏輯[11]),讓其振蕩從而求得延時信息。首先,輸入電路的網(wǎng)表結(jié)構(gòu);然后把電路中邏輯門的類型和電路的拓撲結(jié)構(gòu)轉(zhuǎn)換成對應的合取范式(CNF),如表3;再根據(jù)RO路徑部分電路節(jié)點的邏輯值增加額外的約束,使用SAT算法求解出一組測試向量;最后,重復上述步驟來得到不同的RO振蕩所需的測試向量集。
表3 基礎邏輯門CNF表達式
如表4所示第一列為ISCAS’85部分基準電路的名稱,第二列為benchmark電路的門數(shù)量,第三列為各基準電路中轉(zhuǎn)換概率低于設置閾值(TPth)的節(jié)點數(shù)量,第四到第八列分別表示需要構(gòu)建的RO的數(shù)量,構(gòu)建RO需要的額外的非門和與非門數(shù)量,以及計數(shù)器、解碼器和多路選擇器的數(shù)量。
從表中可知,隨著電路邏輯門數(shù)量的增加,構(gòu)建的RO數(shù)量并不是隨之遞增的,而是取決于電路中節(jié)點轉(zhuǎn)換概率低于設定閾值的節(jié)點數(shù)量以及該節(jié)點前后級相鄰的節(jié)點轉(zhuǎn)換概率是否也是低于閾值的節(jié)點數(shù)量;而用來控制RO振蕩及計算周期額外需要的計數(shù)器、解碼器和多路選擇器的數(shù)量都為1,因為每次只選擇某一個RO進行振蕩檢測,所以本文提出的方法中只需要1個計數(shù)器,1個多路選擇器和1個解碼器,并且在不同的benchmark電路上所需要的計數(shù)器,多路選擇器和解碼器的大小不一樣,這取決于電路構(gòu)建的RO數(shù)量及振蕩周期的預計值大小。
如表5所示為示例電路C24的實驗數(shù)據(jù),表中C24-N10、C24-N11、C24-N12分別表示電路C24的三個低于設定轉(zhuǎn)換概率閾值的節(jié)點N10、N11、N12;而表中1G和2G則分別表示插入到電路節(jié)點的1個和2個與門木馬[11,15]。為了減小測量誤差,每個節(jié)點構(gòu)成的RO(插入HT前后)分別進行了10次振蕩來求取平均值;然后根據(jù)在設定時間內(nèi)的振蕩次數(shù)來計算RO的周期值;同時計算出RO中平均單個門延時,約為0.48 ns;表中也給出了在10次振蕩測量中,最大振蕩周期與最小振蕩周期之間的誤差值。由此可看出,若有HT插入,則引起的RO振蕩周期的改變比測量時的誤差大得多,故HT易于被檢測。
表4 ISCAS’85部分電路(TP th=0.01)
表5 示例電路c24數(shù)據(jù)
由于c17、c24、c38基準電路相對較小,故在此未進行分析。而所提出的方法的硬件開銷主要來源于環(huán)形振蕩器,計數(shù)器,多路選擇器和解碼器。
3.4.1功耗
圖4給出了部分ISCAS’85電路在節(jié)點轉(zhuǎn)換概率閾值TPth=0.01時構(gòu)建RO結(jié)構(gòu)前后的功耗分布,圖中w/o表示基準電路原始的功耗,w表示在構(gòu)建RO結(jié)構(gòu)后的電路功耗。在不同的電路中,構(gòu)建RO時盡量選擇只添加一個與非門(當原路徑中有偶數(shù)個具有反相功能的門時)或者一個非門加與非門(當原路徑中有奇數(shù)個具有反相功能的門時)的組合,同時在電路低轉(zhuǎn)換概率節(jié)點的地方觀察該節(jié)點前后級是否還存在其他的低轉(zhuǎn)換概率節(jié)點,若有,則選擇將它們構(gòu)建在一個RO內(nèi),以此來減小硬件開銷。從圖中可以看出,在不同的基準電路,電路的功耗在構(gòu)建RO結(jié)構(gòu)前后相差很小。
3.4.2 面積
如圖5所示,給出了在部分基準電路中構(gòu)建RO結(jié)構(gòu)的面積開銷直方圖。從圖中可以看到,在實驗中共設置了三組不同的轉(zhuǎn)換概率閾值,并在每一次的閾值設定后對基準電路做了相應的實驗,得到其面積開銷數(shù)據(jù);由于在閾值TPth=0.001時,基準電路c432,c499節(jié)點轉(zhuǎn)換概率沒有低于閾值的節(jié)點,故其面積開銷為零;還可以從圖中得出,隨著基準電路的規(guī)模增加以及電路轉(zhuǎn)換概率閾值的不同,每個電路的面積開銷變化都比較小。由此可知,在大型電路中,本文提出的HT檢測方法所占用的面積資源百分比會更低。
圖6所示為本文提出的RO方法與文獻[7]和文獻[14]中提出方法的硬件開銷的比較。縱坐標表示為三種方法結(jié)構(gòu)所需的MOS管數(shù)量,橫坐標表示不同的基準電路。從圖中可以看出,隨著基準電路規(guī)模的增加,本文方法的硬件開銷變化波動較小,而文獻[7]和文獻[14]提出的方法的硬件開銷呈現(xiàn)一個遞增的趨勢且均高于所提方法,因此可得,本文方法相對于文獻[7]和文獻[14]中提出的方法具有更低的硬件開銷。
3.4.3 延時
圖4 功耗開銷
圖5 面積開銷
圖6 三種結(jié)構(gòu)MOS管數(shù)量對比
在原始電路中添加結(jié)構(gòu)會對電路的原始性能造成影響,特別是關(guān)鍵路徑的延時的增加[19]。所以在實驗時要嚴格控制電路的時序,通過在部分ISCAS’85基準電路上進行實驗(節(jié)點轉(zhuǎn)換概率閾值設為TPth=0.01)得到如圖7所示的延時數(shù)據(jù)。
圖7 構(gòu)建RO后電路最大延時與原電路最大延時比例
圖7所示為電路在構(gòu)建RO后與原電路的最大路徑延時比,可以看出,通過選擇將RO的位置控制在低轉(zhuǎn)換概率節(jié)點路徑附近來減少布線的延時,電路的最大路徑延時比不超過1.15,較低程度地影響電路性能。
在本文中,提出在電路的轉(zhuǎn)換概率較低的節(jié)點處構(gòu)建RO來檢測該節(jié)點是否有HT的插入,并通過多路選擇器,解碼器和計數(shù)器來分別控制選擇不同的RO并計算振蕩周期。通過對電路門類型及拓撲結(jié)構(gòu)的分析來計算電路節(jié)點的轉(zhuǎn)換概率;通過測試向量生成算法得到實驗所需的測試向量;通過分析選擇適當?shù)霓D(zhuǎn)換概率閾值來確定所需要構(gòu)建的RO數(shù)量從而來減小所提方法的功耗和面積開銷;同時,通過嚴格控制構(gòu)建RO時的布局布線信息,將電路的最大路徑延時控制在一定范圍內(nèi)。通過實驗分析,電路在構(gòu)建RO結(jié)構(gòu)后,其功耗,面積及延時的增加都在可接受范圍內(nèi),并且提出的方法能夠檢測小型HT,彌補了旁路分析法對檢測小型HT的不足。接下來的研究工作會對不同RO級數(shù)進行實驗,通過尋找合適的RO級數(shù)來提高對HT的檢測精度;對HT攻擊機制進行進一步的研究來尋找HT易于攻擊的節(jié)點并構(gòu)建RO結(jié)構(gòu)來檢測HT的插入。