袁潤杰, 朱翔, 韓建偉, 李悅, 馬英起, 上官士鵬, 王添
1. 中國科學院國家空間科學中心, 北京 100190
2. 中國科學院大學, 北京 100049
隨著集成電路設計制造過程全球化的發(fā)展, 硬件木馬造成的安全問題日益突出. 硬件木馬是設計者在芯片或者電子系統(tǒng)中故意植入的特殊模塊或缺陷模塊, 在被某些特殊條件觸發(fā)后能夠實現(xiàn)對芯片的功能破壞或者信息泄露. 硬件木馬普遍具有隱藏性高、難以觸發(fā)、設計靈活、易于植入等特性, 這導致針對芯片安全的研究與防護具有很高難度[1,2].
目前主要的硬件木馬檢測方法有失效分析檢測方法、邏輯測試檢測方法、側信道檢測方法及軟件檢測方法等. 失效分析屬于破壞性檢測, 需對被測電路逐層掃描后進行逆向分析, 從而檢測木馬功能及位置[3].這將嚴重破壞芯片, 具有檢測難度大、成本高等缺點. 邏輯測試檢測方法通過生成測試向量, 檢測芯片輸入、輸出及寄存器信息等電路狀態(tài), 從而分析木馬電路的功能[4–7]. 該檢測方法成本低, 但是針對不同功能、觸發(fā)概率的硬件木馬, 檢測難度大、消耗時間長. 側信道檢測方法基于對芯片功耗、瞬間信號、泄露電流、電磁輻射等的分析判斷硬件木馬功能與位置, 但受電路工藝偏差影響嚴重[8–14]. 軟件檢測方法可以利用機器學習對門級、寄存器級等網(wǎng)表硬件電路進行檢測, 針對特定特征的硬件木馬甄別程度高[15–17]. 但是需要獲取電路的網(wǎng)表級代碼, 應用場景受限.
激光注入技術具有較高的時間和空間分辨性, 是高效的故障注入手段之一[18,19]. 本文創(chuàng)新點在于首次提出將激光注入技術應用于硬件木馬檢測的方法, 可以彌補現(xiàn)階段檢測方法的不足, 以形成更為高效、精準的檢測方法. 基于激光注入技術的硬件木馬檢測方法具有直接性強、應用場景廣泛的特點. 通過激光快速掃描主動激活芯片中的硬件木馬, 可以達到快速識別的功能. 相比于邏輯測試通過生成測試向量激活硬件木馬的方法更為直接; 相比于側信道檢測方法, 基本不受電路工藝偏差影響. 這是一種器材經(jīng)濟性出色、實施方便、可控性高的非破壞性檢測方法. 由于激光作用于木馬觸發(fā)結構的輸出信號存儲節(jié)點, 只有含有邏輯觸發(fā)結構的硬件木馬可以被此檢測方法激活.
本文以基于Xilinx 公司XC7K325T 芯片為載體的異步累加器硬件木馬作為研究對象, 使用激光注入技術成功激活不同觸發(fā)條件的異步累加器硬件木馬, 詳細闡述了該實驗的流程和方法, 分析了不同組合邏輯硬件木馬觸發(fā)結構對其激活概率的影響, 具體通過以下幾個部分展開: (1) 異步累加器硬件木馬的特征及FPGA 實現(xiàn); (2) 激光故障注入實驗原理及裝置; (3) 激光注入激活硬件木馬實驗過程及結果; (4) 上述實驗結果的總結與展望.
硬件木馬主要由觸發(fā)結構和負載結構組成, 其中負載結構的功能為實現(xiàn)攻擊行為, 觸發(fā)結構的功能為控制木馬攻擊時機[2]. 密碼芯片是實現(xiàn)信息保密性、安全性的核心硬件載體, 易成為硬件木馬的攻擊對象.本文以基于FPGA 實現(xiàn)的AES 加密電路為研究對象, 植入設計的異步累加器硬件木馬, 開展激光故障注入激活硬件木馬的研究.
累加器型硬件木馬通常具有一定激活時間, 屬于延時激活硬件木馬. 累加器型硬件木馬可以分為同步累加器和異步累加器硬件木馬. 其中異步累加器硬件木馬屬于組合型硬件木馬, 木馬觸發(fā)條件與內部信號組合邏輯相關, 屬于內部激活型硬件木馬. 異步累加器硬件木馬結構如圖1 所示, 其觸發(fā)結構僅由多位比較器與計數(shù)器組成, 通過設計組合邏輯可控制木馬激活時機, 具有結構簡單、觸發(fā)概率低等特點.
圖1 異步累加器型硬件木馬Figure 1 Asynchronous accumulator hardware Trojan
AES 高級加密算法屬于對稱加密算法, 算法加解密使用同一密鑰, 流程如圖2 所示. 明文與密鑰進入AES 加密核心后生成密文, 再與密鑰輸入AES 解密核心輸出明文. AES 是基于有限域運算的SPN 結構迭代分組密碼, 本文所使用AES 算法分組長度為128 位, 加密輪數(shù)為10 輪. 首先將明文與初始密鑰執(zhí)行異或運算, 再進行10 輪運算后輸出密文. 每輪的具體操作依次為: 字節(jié)變換、行移位、列混淆以及輪密鑰加運算, 其中第10 輪不執(zhí)行列混合運算.
圖2 AES 高級加密算法加解密流程Figure 2 Encrypt and decrypt process of AES
本文使用Xilinx 公司XC7K325T 芯片作為實驗對象, 該芯片使用28 nm 工藝, 含有326 080 個可配置邏輯塊(configurable logic block, CLB), 基本CLB 的邏輯資源如表1 所示.
表1 單CLB 邏輯資源Table 1 Resources of single CLB
在FPGA 的邏輯單元中, “或”、“與” 的邏輯功能由LUT 實現(xiàn), 其功能如圖3 所示. 在芯片初始化階段, LUT 將寫入不同地址對應的1 bit 輸出數(shù)據(jù), 并存儲在16 bit 的SRAM 中. 電路運行階段, LUT 根據(jù)不同的地址輸入, 輸出1 bit 信號控制硬件木馬負載結構的狀態(tài). 對于“與” 的狀態(tài), 只有地址線“dcba”為“0xFF” 時, 輸出線輸出高電平, 其余情況輸出低電平; 對于“或” 的狀態(tài), 地址線“dcba” 中含有大于等于一位為高電平時, 輸出線則輸出高電平, 否則輸出低電平.
圖3 LUT 原理圖Figure 3 Principle of LUT
本文基于FPGA 實現(xiàn)原型硬件木馬用于激光注入實驗, 硬件木馬FPGA 實現(xiàn)方法如圖4 所示.FPGA 的主要功能是將上位機輸入的明文與密鑰在AES 加密核心中加密, 將密文返回上位機. 其中“加密控制模塊” 的功能為解析上位機命令, 將128 位明文、密鑰輸入至“AES 加密核心模塊”; “AES 加密核心模塊” 進行加密操作. 所設計的異步累加器硬件木馬植入于兩個模塊之間, 所傳輸?shù)拿魑摹癉ata”被硬件木馬觸發(fā)結構采集, 當其與木馬觸發(fā)模塊的組合邏輯比較器預設值相同時, 觸發(fā)結構產(chǎn)生一個觸發(fā)信號輸入至負載結構; 負載結構篡改所傳輸數(shù)據(jù), 并將錯誤數(shù)據(jù)傳入“AES 加密核心模塊”, 完成篡改數(shù)據(jù)的功能.
圖4 硬件木馬功能示意圖Figure 4 Function of hardware Trojan
通過改變硬件木馬觸發(fā)結構的組合邏輯, 可以實現(xiàn)不同功能. 本文以探究激光注入激活硬件木馬的機理作為實驗目的, 將以基礎的“或門”、“與門” 組合邏輯硬件木馬作為實驗對象. 在兩模塊數(shù)據(jù)傳輸時, 所傳輸數(shù)據(jù)“Data” 中(除最低位) 任意選擇9、4、2 位數(shù)據(jù)與木馬比較器預設值進行異或運算, 再將所有異或運算結果進行“與”、“或” 運算, 如圖5 所示. 邏輯門輸出的信號作為硬件木馬的觸發(fā)信號, 直接影響硬件木馬的狀態(tài).
圖5 硬件木馬觸發(fā)結構功能Figure 5 Trigger mechanism of hardware Trojan
AES 電路總計占用1769 個LUT, 其中硬件木馬電路占用2 至14 個LUT, 硬件木馬規(guī)模占整體電路的比重為0.11% 至0.79%, 具有較低的資源占用率. 在輸入數(shù)據(jù)不滿足木馬觸發(fā)條件下, 硬件木馬將不對電路產(chǎn)生影響.
2.4.1 “或” 組合邏輯硬件木馬設計
本文設計的累加器硬件木馬觸發(fā)條件為9 位相或、4 位相或、2 位相或, 其分別占用14 個、5 個、1個查找表(look-up-table, LUT) 以及若干觸發(fā)器, 觸發(fā)結構等效門數(shù)量分別為21、9、3. 其中4 位相或硬件木馬結構圖如圖6 所示, 以此為例進行討論.
圖6 4 位觸發(fā)結構硬件木馬邏輯圖Figure 6 Diagram of 4-bit trigger mechanism of hardware Trojan
4 位相或觸發(fā)結構邏輯單元“CLB 1” 至“CLB 4” 分別占用一個查找表, 功能為分別判斷4 位二進制數(shù)據(jù)“Data 1” 至“Data 4” 是否與木馬設定值相同, 分別輸出相應信號至“CLB load” 中. 邏輯單元“CLB load” 負責判斷是否激活木馬功能, 并輸出負載信號. 其中“或門” 的實現(xiàn)取決于“LUT load”SRAM 中存儲的數(shù)據(jù), 該LUT 通過多路選擇器控制是否激活硬件木馬. 若激活硬件木馬, MUX 線路選擇輸入信號“LUT Load” 翻轉, 并輸出“Data 0” 的反值, 將錯誤數(shù)據(jù)傳輸至后續(xù)模塊. 其余9 位相或、2位相或電路結構與上述類似.
2.4.2 “與” 組合邏輯硬件木馬設計
將觸發(fā)條件為9 位相與、4 位相與、2 位相與運算的3 組異步累加器硬件木馬作為實驗對象, 其分別占用14 個、5 個、1 個查找表以及若干觸發(fā)器, 觸發(fā)結構等效門數(shù)量分別為22、6、2, 其中4 位相與硬件木馬結構如圖6 所示.
4 位相與觸發(fā)結構邏輯單元“CLB 1” 至“CLB 4” 分別占用一個查找表, 功能為分別判斷4 位二進制數(shù)據(jù)“Data 1” 至“Data 4” 是否與木馬設定值相同, 分別輸出相應信號至“CLB load” 中. 邏輯單元“CLB load” 負責判斷是否激活木馬功能, 并輸出負載信號. 其中“與門” 的實現(xiàn)取決于“LUT load”SRAM 中存儲的數(shù)據(jù), 該LUT 通過多路選擇器控制是否激活硬件木馬. 若激活硬件木馬, MUX 線路選擇輸入信號翻轉, 并輸出“Data 0” 的反, 將錯誤數(shù)據(jù)傳輸至后續(xù)模塊. 其余9 位相與、2 位相與電路結構與上述類似.
圖6 所示的反相器和多路選擇器構成硬件木馬的負載結構, 其功能是在收到觸發(fā)信號后將“Data 0”取反并取代原始數(shù)據(jù).
為防止激光注入對AES 加密功能產(chǎn)生影響, 本研究使用PlanAhead 分別約束硬件木馬電路與AES加密電路至芯片不同位置. 由于該系列FPGA 背部襯底方向向上, 實際情況中硬件木馬位置與所約束位置左右相對, 如圖7 所示. 通過控制激光掃描區(qū)域以避免激光對其他模塊產(chǎn)生影響.
圖7 硬件木馬約束位置Figure 7 Position of hardware Trojan
CMOS 工藝的硅基靜態(tài)存儲器(SRAM) 使用觸發(fā)器的狀態(tài), 即截止和飽和來表示“0” 或“1”. 正常情況下, 只有片選和寫信號線共同有效并且地址被選中, 才能改變觸發(fā)器的狀態(tài), 進而改寫所存儲的內容.但激光注入產(chǎn)生的瞬態(tài)脈沖信號不受這些限制[20–22], 當輻照光子能量大于1.14 eV 時可產(chǎn)生額外電子空穴對, 截止的PN 結將收集積累的大量電荷而導通. 本文使用的FPGA 中LUT 主要結構由SRAM 組成.SRAM 由兩個交叉耦合的反相器組成, 如圖8 所示, 含有2 個PMOS 晶體管M2 與M4、與2 個NMOS晶體管M1 與M3. 若假設Q點高電平,Q′低電平, 即存儲數(shù)據(jù)“1”; M1、M3 為截止狀態(tài), M2、M4 為導通狀態(tài); 此時激光注入之MOS 管M3, M3 將變?yōu)閷顟B(tài), 使得Q為低電平, 將M1 與M2 組成的反相器輸出信號變?yōu)楦唠娖? 最終導致該SRAM 存儲數(shù)據(jù)發(fā)生翻轉.
圖8 SRAM 結構圖Figure 8 Structure of SRAM
硬件木馬的激活是由于負載結構MUX 線路選擇信號發(fā)生翻轉,從而輸出錯誤數(shù)據(jù),如圖6 所示. AES電路處于正常工作狀態(tài)下, 當觸發(fā)信號滿足觸發(fā)條件, 負載結構輸入端信號翻轉將激活木馬. 復雜的觸發(fā)條件會顯著降低硬件木馬的觸發(fā)率, 提高檢測難度. 而激光注入檢測方法不僅可以通過激活觸發(fā)條件觸發(fā)硬件木馬, 也可通過直接翻轉硬件木馬負載結構輸入端信號觸發(fā)硬件木馬. 可以避免復雜觸發(fā)條件對激活時間的影響, 達到快速激活木馬的目的.
對于多位觸發(fā)條件的硬件木馬, 其存在判定結構電路決定激活負載功能的時機, 該判定電路為激光故障注入的主要攻擊目標. LUT 作為FPGA 實現(xiàn)邏輯功能的主要載體, 具有實現(xiàn)判定電路的功能, 而LUT中的SRAM 為激光注入的敏感區(qū)域, 其數(shù)據(jù)翻轉將導致LUT 輸出信號的變化, 從而影響判定電路的輸出結果. 而判定電路的輸出直接影響硬件木馬負載結構的激活狀態(tài). 本文中所涉及的“與邏輯” 硬件木馬為模擬激光激活“多觸發(fā)條件硬件木馬” 的手段, 實驗結果表明激光掃描可以有效的激活該類多觸發(fā)條件的硬件木馬.
激光故障注入系統(tǒng)如圖9 所示, 主要分為六個部分: 1064 nm 皮秒脈沖激光器、聚焦透鏡及成像系統(tǒng)、微米級精密三維電動平移臺、FPGA 被測電路、上位機和同步控制計算機. 上位機與被測器件通過串口進行實時通訊, 每相隔固定時間進行一次AES 加密運算, 上位機記錄所有的通信數(shù)據(jù); 激光器使用內部觸發(fā)信號, 頻率1000 Hz; 同步控制計算機實現(xiàn)對激光器和移動臺的同步控制, 利用三維電動平移臺x-y 方向的移動自動完成掃描. 并將每個輻照位置的激光脈沖能量、激光注入的物理坐標輸入至同步控制計算機.
圖9 激光注入平臺Figure 9 Platform of laser injection
激光故障注入激活硬件木馬功能的實驗流程如圖10 所示, 將被測器件按照圖9 所示位置擺放. 按照硬件木馬被約束的位置設置激光掃描的范圍. 初始化芯片, 并于測試器件中寫入程序、設置激光器參數(shù)、聚焦激光, 其中光斑直徑約為1.8 um. 通過CCD 相機的實時圖像, 將激光焦點定位在測試原點. 設置激光單脈沖能量于670 pJ 至700 pJ 之間, 該能量范圍可以使本實驗所用FPGA 芯片SRAM 發(fā)生翻轉, 同時不會損傷電路. 由于需要控制變量、易于實驗, 使用激光器原廠1000 Hz 內觸發(fā)信號. 同時設置掃描起點A、折點B及掃描終點N, 使激光掃描區(qū)域可以完全覆蓋木馬電路區(qū)域, 如圖11 所示. 隨后由控制計算機控制三維平移臺按照設定進行掃描, 設置步距為1 um. 為易于甄別硬件木馬觸發(fā)狀態(tài)、賦予串口足夠的緩沖時間, 上位機將128 位明文以500 ms 的間隔通過串口發(fā)送至被測電路, 并接收返回密文. 由于木馬設定, 其在無激光注入時不會觸發(fā). 直至上位機接收明文最低位取反, 記錄光斑相對位置, 并初始化電路繼續(xù)掃描. 此時激光成功激活硬件木馬, 所記錄光斑位置為硬件木馬敏感區(qū)域. 由于激光光斑相對于芯片位置可知, 所以可以根據(jù)該光斑位置確定木馬于芯片中的位置.
圖10 實驗流程圖Figure 10 Diagram experiment
圖11 激光掃描路徑示意圖Figure 11 Path of laser
為防止測試向量激活硬件木馬影響實驗結果, 根據(jù)2.4 節(jié)所示硬件木馬觸發(fā)條件篩選相應的測試向量.對于4 位“與邏輯” 硬件木馬, 若其激活負載功能的條件為第2/3/4/5 位分別為1/0/0/1, 則128 位測試向量“xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxx1 001x” 將激活硬件木馬,所以該測試向量將被過濾.
實驗結果如表2 所示. 若激光注入至硬件木馬觸發(fā)結構輸出信號所在SRAM, 有幾率將靜默信號翻轉為觸發(fā)信號, 從而激活其負載結構的相關功能. 本實驗通過FPGA 傳輸至上位機的明文最低位是否發(fā)生翻轉為判斷依據(jù), 統(tǒng)計若干次實驗中硬件木馬的激活次數(shù), 計算激活概率. 為了排除木馬自動激活的情況,所有輸入測試向量均避免了激活木馬的可能性.
表2 “或邏輯” 異步累加器硬件木馬激活概率表Table 2 Activity ratio of “OR” hardware Trojan
由實驗結果可知, 使用激光激活“或邏輯” 觸發(fā)條件硬件木馬的概率均高于60%, 驗證了基于激光故障注入的方法激活異步累加器硬件木馬的可行性. 該木馬分別含有14 個、4 個、1 個LUT, 每個LUT被激光注入故障后, 均有概率直接激活硬件木馬. 不同位數(shù)“或邏輯” 硬件木馬激活概率存在差異, 是由于激光注入其不同觸發(fā)結構或負載結構輸入端造成的. 由實驗原理可知, 僅含有1 個LUT 的硬件木馬, 為FPGA 可以實現(xiàn)硬件木馬功能的最小單元. 這表明激光在1 um 的掃描步距下, 能否激活“或邏輯” 硬件木馬與其觸發(fā)條件位數(shù)與LUT 數(shù)量無關.
實驗結果如表3 所示, 使用激光激活“與邏輯” 觸發(fā)條件硬件木馬的概率約為60%, 與實驗1 結果接近. 這表明激光在1 um 的步距條件下, 能否激活“與邏輯” 硬件木馬與其觸發(fā)條件或LUT 數(shù)量無關.
表3 “與邏輯” 異步累加器硬件木馬激活概率表Table 3 Activity ratio of “AND” Hardware Trojan
根據(jù)3.2 節(jié)所闡述的實驗原理, “與邏輯” 觸發(fā)條件硬件木馬的激活是由于激光注入其負載結構輸入端, 導致激活信號翻轉造成的. 這表明激光注入激活“與邏輯” 硬件木馬的檢測方法基本不受其低觸發(fā)概率特性的影響. 實驗結果表明對于具有邏輯觸發(fā)結構的硬件木馬, 激光注入方法與硬件木馬的觸發(fā)條件無關.
本文以基于FPGA 的AES 加密電路異步累加器型硬件木馬作為實驗對象, 使用1 um 步距激光故障注入的方法, 成功激活處于靜默狀態(tài)下的硬件木馬. 實驗表明, 使用激光注入檢測方法, 具有較高概率主動激活常見異步累加器硬件木馬, 并且激活概率受木馬低觸發(fā)概率特性的影響低, 不會破壞電路功能, 器材經(jīng)濟性出色. 同時激光單次掃描的時間短, 不同掃描次數(shù)下激活概率相近, 從而可以通過優(yōu)化掃描路線、掃描次數(shù)的方法進一步減少檢測時間. 激光故障注入適用于含有邏輯觸發(fā)結構的硬件木馬, 其不足在于實際情況下硬件木馬位置存在不確定性. 激光注入激活硬件木馬的情況外, 也會使AES 加密電路本身發(fā)生故障. 但由于激光故障注入具有注入位置可知的優(yōu)勢, 當激光注入AES 加密電路時, 由于加密信息的隨機性導致產(chǎn)生隨時間無規(guī)律變化的故障, 同時AES 加密過程中的錯誤可以通過密碼分析排除故障源[19]. 而注入于硬件木馬電路后其故障表現(xiàn)規(guī)律是固定的, 在特定情況下可以作為激活硬件木馬的依據(jù). 為了有效甄別硬件木馬引發(fā)的故障, 需要研究相應的統(tǒng)計規(guī)律, 這是下一步研究的重點. 綜上所述, 基于激光注入的硬件木馬檢測方法具有激活概率高、可實現(xiàn)木馬定位等特點, 具有重要研究意義和廣泛應用前景.