張浩宇,應(yīng)健鋒,宋晨鈺,王可可,易茂祥
合肥工業(yè)大學(xué) 電子科學(xué)與應(yīng)用物理學(xué)院,合肥230009
隨著集成電路技術(shù)的快速發(fā)展,當(dāng)前IC 芯片的設(shè)計與制造趨于分離,致使IC 芯片面臨諸多的安全威脅[1]。集成電路的外包設(shè)計和制造過程為攻擊者提供了絕佳的機會。攻擊者通過更改IC 芯片的原始設(shè)計或插入具有一定功能的硬件木馬電路。它們在特定條件下觸發(fā),修改電路功能或者直接破壞電路、泄露重要信息等[2]。硬件木馬可以在電路的設(shè)計、制造的任何階段插入。由于IC 構(gòu)成了航空航天、軍事國防、電子通信、工業(yè)制造、醫(yī)療設(shè)備等關(guān)鍵領(lǐng)域,因此預(yù)防和檢測硬件木馬的插入對IC芯片的安全性起著至關(guān)重要的作用。
近年來,硬件木馬的檢測方法主要分為兩類:旁路信號分析法[3-5]和邏輯測試法[6]?;谂月贩治龅姆椒ㄊ峭ㄟ^測量電路旁路信號的參數(shù)(例如延時[7]、功耗[8]、電磁信號等),通過與相同的已確定無硬件木馬插入的電路——“黃金模型”作對比,分析電路旁路信號參數(shù)的變化來判斷是否有硬件木馬的插入。該類方法不僅需要無木馬插入的“黃金模型”作為對比,而且易受到工藝偏差和外部噪聲的影響。特別當(dāng)硬件木馬尺寸比較?。ɡ缇w管級、門級的小型硬件木馬),對電路旁路信號的影響特別小的情況下,工藝偏差和噪聲會掩蓋硬件木馬活動帶來的旁路信號的影響?;谶壿嫓y試的方法是通過大量的測試向量激活隱藏在電路中的硬件木馬,并與“黃金模型”的主輸出響應(yīng)值比較以判斷電路中是否存在硬件木馬[9-10]。但該類方法不能檢測到不改變電路主輸出邏輯值卻通過改變電路內(nèi)部的邏輯值破壞電路正常的工作的硬件木馬。在本文中,針對很難通過傳統(tǒng)的旁路信號分析法檢測到的小型的硬件木馬,本文方法具有顯著的優(yōu)點。
硬件木馬的防插入方法主要體現(xiàn)在可信性設(shè)計方面??尚判栽O(shè)計(Design-for-Trust,DFT)技術(shù)是指設(shè)計者為了實現(xiàn)對芯片更加全面、準(zhǔn)確的檢測,在原始電路設(shè)計中加入一些額外的輔助電路提高硬件木馬檢測覆蓋率或預(yù)防硬件木馬的插入。該方法的優(yōu)點不僅可以針對性地預(yù)防硬件木馬的插入,而且可以節(jié)省檢測成本,此外,該方法也可以與旁路分析檢測技術(shù)、邏輯測試技術(shù)相互結(jié)合、相得益彰,共同組成更加全面的硬件木馬檢測架構(gòu)。
現(xiàn)有的研究中簡化硬件木馬的檢測[11-14]或預(yù)防硬件木馬插入的可信任設(shè)計[15-17]顯得更加的突出。電路中存在許多路徑,每個路徑代表整個電路特性的一部分,而且每個路徑都有著自身的延時屬性[18]。文獻[11]中指出在整個電路中延時最大的路徑稱為關(guān)鍵路徑。在不違反電路的時序約束前提下,攻擊者在電路的關(guān)鍵路徑中植入小型的硬件木馬對電路的延時影響相對較小,通過基于延時的旁路信號檢測方法更難以檢測。因此,一個聰明的攻擊者更傾向于在電路的關(guān)鍵路徑上插入在特殊條件下激活并實施惡意功能的硬件木馬。另外,文獻[12]指出攻擊者可能會選擇轉(zhuǎn)換概率較低的節(jié)點插入硬件木馬,因為轉(zhuǎn)換概率較高的節(jié)點所對應(yīng)的邏輯門具有較大的活動性。不僅對電路的旁路信號影響較大,而且較容易通過邏輯測試法檢測到硬件木馬的插入。文獻[12]以轉(zhuǎn)換概率較低的節(jié)點作為構(gòu)造鎖存結(jié)構(gòu)的目標(biāo)節(jié)點,以此防止硬件木馬在轉(zhuǎn)換概率的目標(biāo)節(jié)點插入。以上研究表明,電路中延時最大的關(guān)鍵路徑及轉(zhuǎn)換概率比較低的節(jié)點是硬件木馬插入的重要目標(biāo)。因此,針對關(guān)鍵路徑和轉(zhuǎn)換概率較低節(jié)點的硬件木馬預(yù)防與檢測是比較具有價值的研究點之一。
本文提出了一種針對電路關(guān)鍵路徑的硬件木馬實時監(jiān)測方法,主要的目的是預(yù)防和檢測小型的硬件木馬在關(guān)鍵路徑的插入。該方法將監(jiān)測器插入電路關(guān)鍵路徑的關(guān)鍵節(jié)點,監(jiān)測器可以檢測并報告目標(biāo)節(jié)點及其相鄰節(jié)點邏輯值的正確性,以此判斷電路的關(guān)鍵路徑是否插入了硬件木馬。硬件木馬可以不改變電路主輸出,而是通過改變電路內(nèi)部邏輯值,破壞電路正常工作。本文方法的主要優(yōu)點是無需檢測電路的主輸出,可以實時監(jiān)測電路關(guān)鍵路徑的關(guān)鍵節(jié)點是否被硬件木馬攻擊。
2.1.1 實時監(jiān)測目標(biāo)選擇
電路中包含多條路徑,不同的路徑具有對應(yīng)的延時屬性。攻擊者在關(guān)鍵路徑中插入小型硬件木馬對電路的影響較小,基于延時的硬件木馬檢測方法難以檢測到硬件木馬的插入。另外,電路中轉(zhuǎn)換概率(Transition Probability,TP)較低的節(jié)點是攻擊者優(yōu)先考慮插入的目標(biāo)。由此,本文把關(guān)鍵路徑中轉(zhuǎn)換概率較小的節(jié)點認(rèn)為是硬件木馬優(yōu)先攻擊的主要目標(biāo)節(jié)點。假設(shè)電路有n條路徑,分別記為P1,P2,…,Pn,各路徑時延分別記為T1,T2,…,Tn,其中T1是時延最大的路徑,Tn是時延最小的路徑,那么T1路徑稱為電路中的“關(guān)鍵路徑”;然后計算關(guān)鍵路徑上所有節(jié)點的轉(zhuǎn)換概率,轉(zhuǎn)換概率較小的優(yōu)先插入監(jiān)測器。
如圖1所示是簡單的c17組合電路,由節(jié)點G3、G9、G12、G16 節(jié)點組成的紅色路徑表示的是c17 組合電路中延時最大的路徑。該路徑上的G9、G12 節(jié)點作為實時監(jiān)測的主要對象,由于G9 節(jié)點的轉(zhuǎn)換概率TpG9=0.187 5 小 于 G12 節(jié) 點 的 轉(zhuǎn) 換 概 率TpG12=0.234 375,所以在一定面積開銷的約束下,優(yōu)先選擇G9節(jié)點插入監(jiān)測器。實時監(jiān)測的主要目標(biāo)是電路的內(nèi)部節(jié)點,由于電路的輸入和輸出是可控可觀測的,且攻擊者一般不會選擇電路的輸入和輸出插入硬件木馬,所以不作為實時監(jiān)測的目標(biāo)。
圖1 簡單的c17電路實時監(jiān)測目標(biāo)選擇
2.1.2 電路節(jié)點轉(zhuǎn)換概率計算
電路的輸入邏輯值可能是“1”,也可能是“0”,如果隨機向量數(shù)量趨于無窮大,那么電路的每一個主輸入的邏輯值是“0”和“1”的概率均趨于1/2。由此,本文中把主輸入的邏輯值為“0”和“1”的概率表示為(1/2,1/2)。電路主輸入端的邏輯值概率根據(jù)邏輯門的類型進行傳播,每種邏輯門的傳播公式如表1 所示。根據(jù)電路的拓撲順序,由傳播公式可以計算得到各個節(jié)點邏輯值為“0”和“1”的概率(Pi0,Pi1)。進而可計算出該節(jié)點的轉(zhuǎn)換概率:Tpi=Pi0×Pi1,即節(jié)點轉(zhuǎn)換概率的計算公式。
2.1.3 電路關(guān)鍵節(jié)點選取算法
電路的關(guān)鍵節(jié)點選取算法偽代碼如算法1 所示。首先輸入電路的門級網(wǎng)表,并設(shè)定轉(zhuǎn)換概率Tp 的閾值Th;然后根據(jù)電路門級網(wǎng)表的拓撲排序找到延時最大的路徑,并用傳播公式計算關(guān)鍵路徑上所有節(jié)點的轉(zhuǎn)換概率;最后統(tǒng)計低于閾值的節(jié)點集合,以此作為優(yōu)先插入監(jiān)測器的選擇對象。
算法1電路關(guān)鍵節(jié)點選取算法偽代碼
Input:The gate level netlist Ng,Tp threshold Th;
Output:The critical node list CNL;
1.Init circuit paramerters.e.g.initial duty cycle,gate delay time,etc;
2.Construct circuit logical structure C according to Ng;3.Topo sort the circuit strctrue C;
4.Forward Propagation: calculate the delay of each gate on topo-sort order;
5.Backward Trace:search path which have the lon‐gest delay as the critical path P;
6.Calculate transition probablity of each gate on the critical path P;
7.Select gate whose transition probability lower than Th as critical gate and put them into the critical gate list CNL;
8.return CNL
2.2.1 監(jiān)測器結(jié)構(gòu)
如圖2 所示是具有相關(guān)性邏輯門組合的監(jiān)測器結(jié)構(gòu)原理圖。紅色節(jié)點A 表示的是電路關(guān)鍵路徑的關(guān)鍵節(jié)點。關(guān)鍵節(jié)點連接的所有邏輯門的輸出都與關(guān)鍵節(jié)點A 直接相關(guān),由此對A 點相關(guān)的邏輯門進行監(jiān)測,這樣可以提高硬件木馬的檢測準(zhǔn)確度。例如圖2 中的⑤監(jiān)測器,當(dāng)節(jié)點A 的邏輯值為1 時,則相對應(yīng)邏輯門的輸出的正確邏輯值分別為D=~B 和E=~C;當(dāng)節(jié)點A 的邏輯值為0 時,邏輯門的正確輸出值D=E=1。如果攻擊者在A 點插入硬件木馬以修改其邏輯值,那么各個節(jié)點邏輯值的相關(guān)性會被干擾。通過監(jiān)測器可以實時監(jiān)測各個節(jié)點的邏輯值變化,并報告監(jiān)測值與預(yù)期值的偏差。當(dāng)節(jié)點A 無木馬插入時,監(jiān)測器的輸出值為“01”;當(dāng)檢測到木馬時,監(jiān)測器的輸出值為“10”;當(dāng)監(jiān)測器發(fā)生故障時,那么監(jiān)測器的輸出值為“11”或“00”,即監(jiān)測器有自檢功能。
電路關(guān)鍵路徑的關(guān)鍵節(jié)點存在著多種類型邏輯門的連接,所以在插入監(jiān)測器時,需要對關(guān)鍵節(jié)點有相關(guān)性的邏輯門進行分析,然后根據(jù)邏輯門的相關(guān)性,構(gòu)建不同算法邏輯的監(jiān)測器。如圖2 中,根據(jù)關(guān)鍵節(jié)點的邏輯相關(guān)性列舉了6 種不同算法邏輯的監(jiān)測器。當(dāng)A 關(guān)鍵節(jié)點無相關(guān)邏輯門連接時,監(jiān)測器是檢測A、B、C 節(jié)點的邏輯值相關(guān)性。當(dāng)A 關(guān)鍵節(jié)點對應(yīng)的是多輸入邏輯門時,除關(guān)鍵節(jié)點外的其他節(jié)點決定了監(jiān)測器H 端邏輯值的變化。如⑥監(jiān)測器表示的是當(dāng)A 關(guān)鍵節(jié)點對應(yīng)的邏輯門是與門(與非門)時,則由(B&C&D)決定H 端邏輯值變化。同理,如果關(guān)鍵節(jié)點對應(yīng)的邏輯門是或門(或非門)時,則由(B|C|D)決定H端邏輯值變化。
表1 電路節(jié)點轉(zhuǎn)換概率的傳播公式
圖2 不同邏輯相關(guān)性的監(jiān)測器
2.2.2 硬件木馬和監(jiān)測器的插入
聰明的攻擊者通過選擇電路關(guān)鍵路徑的關(guān)鍵節(jié)點插入硬件木馬。為了使插入的木馬對電路的影響較小,一般攻擊者會植入小型的組合硬件木馬,其典型結(jié)構(gòu)如圖3 所示。該木馬由一個“與”門和一個“異或”門組成,“與”門作為硬件木馬的觸發(fā)邏輯部分,“異或”門作為硬件木馬的負載部分。當(dāng)觸發(fā)部分“與”門輸入的邏輯值全為“1”時,則負載邏輯“異或”門把M 的邏輯值修改為~M。
圖3 典型的小型組合硬件木馬
圖4 硬件木馬和監(jiān)測器的插入
如圖4(a)是原始電路,紅色的部分是電路的關(guān)鍵路徑,假設(shè)G30 節(jié)點是電路的關(guān)鍵節(jié)點,該節(jié)點是硬件木馬插入的主要攻擊對象。圖4(b)是插入監(jiān)測器(藍色虛線)的電路,假如攻擊者在G30節(jié)點插入硬件木馬(紅色虛線),當(dāng)G10 和G20 邏輯值同時為“1”時,硬件木馬被激活,G30的邏輯值被修改為~G30。當(dāng)G4邏輯值為“0”時,對于任何輸入的測試向量,通過觀測電路主輸出的硬件木馬檢測方法,都檢測不出電路中被激活的硬件木馬。其原因是“與非門”掩蓋了硬件木馬觸發(fā)的影響,而監(jiān)測器可以檢測到硬件木馬的插入。由此可以類推到:如果一個電路中的硬件木馬被激活,可能不會改變電路的主輸出,但是會改變電路內(nèi)部的邏輯信息,使電路內(nèi)部功能紊亂。因此,對于只通過對比電路主輸出的硬件木馬檢測方法,并不能有效地檢測到關(guān)鍵路徑的硬件木馬,而監(jiān)測器可以立即檢測到硬件木馬的激活。
2.2.3 實時監(jiān)測的系統(tǒng)架構(gòu)
如前所述,IC芯片的安全性和可靠性是構(gòu)建電路系統(tǒng)架構(gòu)的首要條件。從整個系統(tǒng)角度而言,芯片存在缺陷是不可避免的,一個芯片產(chǎn)生故障信號,可能是硬件木馬引起的,也有可能是缺陷引起的。硬件木馬是攻擊者故意插入的,而缺陷是由于不完善的制造工藝產(chǎn)生的。具有相同缺陷的兩個芯片的概率是非常低的。若攻擊者把木馬電路偽裝成與工藝缺陷相同的故障信號,則會花費較大的成本。因此,針對多個具有相同故障信號的芯片被認(rèn)為是感染硬件木馬的芯片,故障信號完全不同的芯片是缺陷芯片。在監(jiān)測器的系統(tǒng)架構(gòu)中,可通過對多個芯片的檢測,判斷芯片發(fā)生的故障類型。但如果檢測設(shè)備自身出現(xiàn)故障,則會導(dǎo)致檢測結(jié)果發(fā)生錯誤,甚至?xí)?dǎo)致重大的事故。所以,具有自檢功能的監(jiān)測器對電路故障的檢測尤為重要。
如圖5 所示是電路的實時監(jiān)測的系統(tǒng)架構(gòu)圖。電路中的每個監(jiān)測器的輸出信號為兩位,所有的監(jiān)測器的輸出結(jié)果匯總于最終監(jiān)測器,最終監(jiān)測器形成兩位輸出f和g。如果電路中的任何一個監(jiān)測器檢測到硬件木馬,最終監(jiān)測器則會輸出“10”;沒有檢測到木馬,監(jiān)測器輸出“01”;若監(jiān)測器發(fā)生故障,則最終監(jiān)測器輸出“11”或“00”。對于復(fù)雜的片上系統(tǒng)SoC 來說,監(jiān)測器可以劃分在其不同的IP核中,實時監(jiān)測電路關(guān)鍵路徑上關(guān)鍵節(jié)點邏輯值的變化。
隨著電路規(guī)模的增大,傳統(tǒng)的硬件木馬檢測方法對于小型硬件木馬檢測難度也隨之增大,所以對于電路的關(guān)鍵節(jié)點的防護也尤為重要。本文所提的實時監(jiān)測的系統(tǒng)架構(gòu)在考慮電路規(guī)模與硬件木馬不改變電路主輸出的情況下具有明顯優(yōu)勢。對于小型待測電路,應(yīng)該適當(dāng)合理安排監(jiān)測器的應(yīng)用數(shù)量,避免過大的面積開銷。
如前文所述,在硬件木馬檢測方法中的旁路分析法由于其方法機制的原因,難以檢測到小型硬件木馬的存在。所以本文實驗主要基于邏輯測試法進行了對比實驗,證明基于文章所提監(jiān)測器結(jié)構(gòu)檢測硬件木馬的優(yōu)勢。
本文實驗基于45 nm 工藝庫的ISCAS85 基準(zhǔn)電路,采用C++語言編程實現(xiàn)電路的延時分析和轉(zhuǎn)換概率的計算,實驗平臺VS2017。實驗所用基準(zhǔn)電路的網(wǎng)表是由Synopsys 公司的DC(Design Complier)綜合得到,網(wǎng)表中只由INV、2-4 輸入的NAND 及2-4 輸入的NOR 基本邏輯門單元組成。其中,電源電壓Vdd=0.8 V,溫度設(shè)置為378 K。
3.2.1 關(guān)鍵路徑
表2 所示ISCAS85 基準(zhǔn)電路關(guān)鍵路徑的選取結(jié)果。電路中存在多條路徑,選取延時最大的路徑作為關(guān)鍵路徑,不同電路關(guān)鍵路徑的節(jié)點數(shù)目以及各節(jié)點所對應(yīng)的邏輯門的類型有所區(qū)別。所以需要根據(jù)關(guān)鍵路徑邏輯門的類型設(shè)計監(jiān)測器。
表2 ISCAS85電路的關(guān)鍵路徑
3.2.2 關(guān)鍵節(jié)點的選取和監(jiān)測器的插入
根據(jù)關(guān)鍵路徑各個節(jié)點的轉(zhuǎn)換概率,設(shè)定合理的閾值,使插入監(jiān)測器后的電路的面積開銷控制在理想的范圍內(nèi)。轉(zhuǎn)換概率小于(等于)閾值的節(jié)點稱為“關(guān)鍵節(jié)點”。針對“關(guān)鍵節(jié)點”相關(guān)邏輯門的類型插入監(jiān)測器,實時監(jiān)測關(guān)鍵節(jié)點邏輯值的變化,以檢測電路中是否插入硬件木馬。如表3 所示是各電路在不同閾值下的關(guān)鍵節(jié)點的個數(shù)和插入監(jiān)測器的數(shù)量。從表3 中可以看出,關(guān)鍵節(jié)點的數(shù)目和監(jiān)測器的數(shù)量并非一致,這是因為電路的關(guān)鍵路徑中包含有“非”門,構(gòu)建監(jiān)測器的原理如圖2-②所示。
轉(zhuǎn)換概率的最大值為0.25,當(dāng)Th=0.25時,關(guān)鍵節(jié)點的數(shù)目等于關(guān)鍵路徑上內(nèi)部節(jié)點的數(shù)目。當(dāng)閾值Th降低時,從表3 中可以看出電路中關(guān)鍵節(jié)點及插入監(jiān)測器的數(shù)量也會隨之減少。因此可以說本文的設(shè)計具有可控的面積開銷。
表3 ISCAS85電路在不同閾值下的關(guān)鍵節(jié)點個數(shù)和插入監(jiān)測器的數(shù)量
3.2.3 硬件木馬的檢測結(jié)果
本文基于ISCAS85電路,在轉(zhuǎn)換概率閾值Th=0.25進行實驗設(shè)計與結(jié)果分析。如表4 所示是有監(jiān)測器與無監(jiān)測器的硬件木馬檢測結(jié)果對比。從表中可以看出,沒有檢測器的電路,通過與“黃金模型”的主輸出對比,檢測電路中是否具有硬件木馬。雖然該方法可以檢測使電路主輸出改變的硬件木馬,但是檢測不到某些已經(jīng)激活的但不改變電路主輸出的硬件木馬,本文在2.2.2小節(jié)已舉例闡述。由此,針對關(guān)鍵路徑上的硬件木馬檢測也存在木馬被激活但不改變電路主輸出的情況。
表4 ISCAS85電路在Th=0.25的硬件木馬監(jiān)測與基于電路主輸出的硬件木馬監(jiān)測結(jié)果對比
本文實驗分別對電路施加1 000 個和5 000 個測試向量,統(tǒng)計在測試向量激勵下檢測到硬件木馬激活的次數(shù)。如表4所示,關(guān)鍵路徑中插入一個木馬時,電路C432和電路C5315在1 000個測試向量激勵下,無監(jiān)測器的方法檢測不到電路中有硬件木馬的存在,而本文方法檢測到電路中的有硬件木馬存在的次數(shù)分別為5 次和3 次。當(dāng)測試向量增加到5 000 或關(guān)鍵路徑木馬數(shù)量的增加時,從實驗數(shù)據(jù)可以看出,無監(jiān)測器和有監(jiān)測器檢測到硬件木馬的激活次數(shù)差距明顯地增大,也就意味著無監(jiān)測器的方法檢測不到硬件木馬激活的次數(shù)增加。因此,本文方法針對關(guān)鍵路徑硬件木馬的檢測具有更明顯的優(yōu)勢,可以有效地檢測到關(guān)鍵路徑上激活的硬件木馬。
3.2.4 面積開銷分析
如圖6 所示是ISCAS85 電路在不同轉(zhuǎn)換概率閾值下,插入監(jiān)測器的面積開銷增加率。當(dāng)Th=0.25時,電路關(guān)鍵路徑的所有內(nèi)部節(jié)點皆是關(guān)鍵節(jié)點,所以電路插入監(jiān)測器的面積開銷最大。從圖中可以看出,關(guān)鍵路徑所有關(guān)鍵節(jié)點插入監(jiān)測器的面積增加率最高不到25%,隨著電路規(guī)模的增大,監(jiān)測器所占面積開銷的比例會越來越小。C17 電路的規(guī)模較小,對于監(jiān)測器插入的面積開銷分析不具代表性。除此之外,當(dāng)轉(zhuǎn)換概率的閾值減小時,監(jiān)測器所帶來的面積開銷增加率明顯降低。由此,可以通過設(shè)定轉(zhuǎn)換概率的閾值,使插入監(jiān)測器面積的開銷控制在理想的范圍內(nèi)。
圖6 不同閾值下插入監(jiān)測器的面積開銷
本文針對電路的關(guān)鍵路徑提出了一種硬件木馬實時監(jiān)測與防護的方法。同只檢測電路主輸出的邏輯測試法相比,充分考慮了電路中硬件木馬的激活不改變主輸出的情況。實驗結(jié)果表明,本文方法不僅具有可控的面積開銷,并且可以準(zhǔn)確高效地實時監(jiān)測電路關(guān)鍵路徑上硬件木馬的激活。在最多增加24.23%的面積開銷下,可全面監(jiān)測硬件木馬在ISCAS85電路關(guān)鍵路徑的插入,而且電路規(guī)模越大,電路相對面積開銷率越小。