趙毅強(qiáng) 蒯 鈞 馬浩誠 張啟智 高 雅 葉 茂 何家驥
(天津大學(xué)微電子學(xué)院 天津 300072)
隨著集成電路(Integrated Circuit, IC)工藝節(jié)點(diǎn)的不斷縮小,摩爾定律趨于失效,半導(dǎo)體產(chǎn)業(yè)已逐步進(jìn)入后摩爾時(shí)代。硅工藝技術(shù)逐漸逼近物理極限,使得不斷攀升的芯片性能、功耗、成本需求,已無法單純依靠提升工藝滿足,而要依賴于更為復(fù)雜與精巧的設(shè)計(jì)架構(gòu)與實(shí)現(xiàn)策略。知識(shí)產(chǎn)權(quán)核(Intellectual-Property core, IP core)的出現(xiàn),能夠在一定程度上緩解高昂的一次性工程成本與漫長的產(chǎn)品開發(fā)周期等問題。但是,基于逆向工程技術(shù)分析電路并獲取芯片原始設(shè)計(jì),已成為一項(xiàng)越來越嚴(yán)重的硬件安全威脅,并以此衍生出IP竊取、IC過度生產(chǎn)、IC偽造、硬件木馬植入等諸多硬件安全問題。
目前,針對(duì)逆向工程的防御技術(shù)主要分為IC偽裝技術(shù)與邏輯混淆技術(shù)。IC偽裝技術(shù),主要通過虛假連接等方式設(shè)計(jì)結(jié)構(gòu)相似但功能不同的邏輯單元,從而抵抗攻擊者基于物理版圖識(shí)別門級(jí)網(wǎng)表。邏輯混淆技術(shù),主要通過向門級(jí)網(wǎng)表中植入混淆單元,從而抵抗攻擊者基于門級(jí)網(wǎng)表識(shí)別邏輯功能,具體分為基于組合邏輯的邏輯混淆與基于時(shí)序邏輯的邏輯混淆?;诮M合邏輯,Baumgarten等人[1]通過嵌入可重構(gòu)邏輯塊,混淆電路輸入到輸出的數(shù)據(jù)路徑。Dupuis等人[2]通過插入與門和或門,混淆網(wǎng)表低可控性節(jié)點(diǎn)。文獻(xiàn)[3,4]基于點(diǎn)函數(shù)或比較器邏輯實(shí)現(xiàn)邏輯混淆,以抵抗可滿足性檢查(SATisfiability checking, SAT)攻擊。文獻(xiàn)[5]采用基于反相器與多路選擇器的混淆單元,防止攻擊者通過識(shí)別單元結(jié)構(gòu)獲取密鑰,并結(jié)合物理不可克隆函數(shù)(Physical Unclonable Function, PUF)生成混淆密鑰?;跁r(shí)序邏輯,Chakraborty等人[6]采用Harpoon策略向有限狀態(tài)機(jī)(Finite State Machine, FSM)中引入額外狀態(tài)以實(shí)現(xiàn)邏輯鎖定,從而保證電路在未解鎖時(shí)混淆FSM。Hu等人[7]基于FSM實(shí)現(xiàn)對(duì)電路不定時(shí)的多次認(rèn)證,從而指數(shù)提升針對(duì)SAT攻擊的抵抗屬性。文獻(xiàn)[8]針對(duì)不同F(xiàn)PGA的PUF響應(yīng)值生成特定的增強(qiáng)FSM,實(shí)現(xiàn)了按設(shè)備付費(fèi)許可的邏輯混淆策略。張會(huì)紅等人[9]采用版圖偽裝、異或門混淆、FSM混淆等技術(shù),實(shí)現(xiàn)物理-邏輯-行為的3級(jí)協(xié)同混淆。
然而,隨著近年來逆向工程技術(shù)的高速發(fā)展,基于門級(jí)網(wǎng)表的逆向技術(shù)為邏輯混淆帶來了新的挑戰(zhàn)。通過分析網(wǎng)表寄存器的拓?fù)溥B接關(guān)系與扇入扇出邏輯相似性,基于門級(jí)網(wǎng)表的逆向技術(shù)可以恢復(fù)寄存器傳輸級(jí)(Register-Transition Level, RTL)的詞級(jí)Reg型變量與變量間運(yùn)算函數(shù)。文獻(xiàn)[10,11]通過分析寄存器連接與功能匹配度,實(shí)現(xiàn)數(shù)據(jù)通路詞級(jí)結(jié)構(gòu)的提取。文獻(xiàn)[12,13]基于位片識(shí)別與聚合,以及寄存器結(jié)構(gòu)匹配等方式,從非結(jié)構(gòu)化網(wǎng)表中提取移位寄存器、計(jì)數(shù)器、RAM、加法器等關(guān)鍵組件。文獻(xiàn)[14-16]基于寄存器輸入結(jié)構(gòu)的相似度區(qū)分狀態(tài)寄存器與數(shù)據(jù)寄存器,以分割電路控制邏輯,并進(jìn)一步恢復(fù)FSM。Albartus等人[17]采用基于數(shù)據(jù)流的網(wǎng)表分析技術(shù),通過結(jié)合控制信息與結(jié)構(gòu)信息的獨(dú)立度量結(jié)果,在任意展平的網(wǎng)表中提取詞級(jí)寄存器結(jié)構(gòu)。
基于組合邏輯與FSM的混淆策略,可以很好地實(shí)現(xiàn)電路運(yùn)算函數(shù)與狀態(tài)控制邏輯的混淆,然而其主要混淆了數(shù)據(jù)寄存器組間用于邏輯運(yùn)算的組合邏輯、狀態(tài)寄存器組用于狀態(tài)切換的組合邏輯,對(duì)網(wǎng)表中寄存器網(wǎng)絡(luò)的拓?fù)溥B接關(guān)系沒有影響。逆向攻擊者依然可采用基于門級(jí)網(wǎng)表的逆向技術(shù)恢復(fù)RTL級(jí)寄存器詞級(jí)變量,從而非法獲取電路RTL設(shè)計(jì)架構(gòu)細(xì)節(jié),或識(shí)別敏感數(shù)據(jù)寄存器并嵌入惡意電路。
本文提出一種基于遺傳算法的自動(dòng)化邏輯混淆方法,通過分析寄存器拓?fù)渚W(wǎng)絡(luò)結(jié)構(gòu),篩選混淆節(jié)點(diǎn)對(duì)并創(chuàng)建冗余連接,從而混淆寄存器的拓?fù)湎嗨菩蕴卣鳎梢栽诘兔娣e開銷下,有效地抵抗逆向工具從門級(jí)網(wǎng)表中恢復(fù)RTL級(jí)詞級(jí)信息、控制邏輯與數(shù)據(jù)通路,實(shí)現(xiàn)良好的門級(jí)網(wǎng)表抗逆向攻擊效果。主要貢獻(xiàn)如下:
第一,針對(duì)SM4電路網(wǎng)表正確逆向了其RTL級(jí)詞級(jí)信息,證明了網(wǎng)表逆向攻擊對(duì)電路存在安全威脅;第二,提出一種基于混淆寄存器拓?fù)浣Y(jié)構(gòu)的邏輯混淆方法,并證明了該方法抵抗網(wǎng)表逆向的有效性;第三,采用兩步式遺傳算法篩選混淆節(jié)點(diǎn),提升了本文方法的混淆效率并降低了開銷。
具體結(jié)構(gòu)安排如下:第2節(jié)介紹門級(jí)網(wǎng)表逆向工程的技術(shù)原理,第3節(jié)介紹本文提出的抗網(wǎng)表逆向的邏輯混淆方法,第4節(jié)通過實(shí)驗(yàn)分析了本文方法的抗逆向效果、混淆效率、性能面積開銷與安全性,第5節(jié)對(duì)本文內(nèi)容進(jìn)行了總結(jié)。
在基于硬件描述語言(如Verilog)的正向設(shè)計(jì)流程中,設(shè)計(jì)者通常采用RTL級(jí)模型對(duì)數(shù)字電路進(jìn)行建模描述:通過定義多比特位寬詞級(jí)Reg型變量及變量間的運(yùn)算函數(shù),將數(shù)字電路建模為控制邏輯與數(shù)據(jù)通路兩部分。通過翻譯、映射與優(yōu)化,邏輯綜合工具將RTL級(jí)設(shè)計(jì)模型轉(zhuǎn)換為門級(jí)網(wǎng)表描述:由組合邏輯門與寄存器連接而成的拓?fù)渚W(wǎng)表。RTL級(jí)描述中的詞級(jí)Reg型變量被綜合為由多個(gè)寄存器組成的寄存器組;變量間的轉(zhuǎn)換函數(shù)被綜合為由多個(gè)組合邏輯門組成的組合邏輯云。
基于此,在門級(jí)網(wǎng)表中,數(shù)據(jù)通路體現(xiàn)為由多個(gè)組合邏輯云橋接的多個(gè)數(shù)據(jù)寄存器組,寄存器組實(shí)現(xiàn)數(shù)據(jù)的暫存,組合邏輯云實(shí)現(xiàn)數(shù)據(jù)間運(yùn)算函數(shù)。如圖1(a)中,寄存器組a/b/c/d分別暫存其數(shù)據(jù)A/B/C/D,寄存器a/b與c間通過加法器邏輯橋接,寄存器c與d間通過乘法器邏輯橋接,實(shí)現(xiàn)數(shù)據(jù)A/B的求和、求和結(jié)果C取平方的數(shù)據(jù)流通路。
控制邏輯為由單個(gè)狀態(tài)寄存器組與組合邏輯云實(shí)現(xiàn)的自反饋結(jié)構(gòu),寄存器組實(shí)現(xiàn)當(dāng)前狀態(tài)的保持,組合邏輯云實(shí)現(xiàn)狀態(tài)切換函數(shù),寄存器組輸出經(jīng)過組合邏輯云運(yùn)算,結(jié)果返回寄存器組輸入端作為下個(gè)狀態(tài)。如圖1(b)中,寄存器組current_state保持當(dāng)前狀態(tài),狀態(tài)切換邏輯基于當(dāng)前狀態(tài)與輸入(in_a/in_b)運(yùn)算得到下個(gè)狀態(tài)并返回寄存器組輸入端,實(shí)現(xiàn)3 bit位寬的有限狀態(tài)機(jī)。
圖1 邏輯綜合與門級(jí)網(wǎng)表結(jié)構(gòu)
相較于RTL級(jí)設(shè)計(jì),由于門級(jí)網(wǎng)表中寄存器各自分立,丟失了分組信息,且往往存在復(fù)雜的數(shù)據(jù)交互關(guān)系與控制反饋環(huán)路,因此攻擊者無法通過直接查閱網(wǎng)表獲取高層次的設(shè)計(jì)信息。
為了恢復(fù)RTL級(jí)信息,門級(jí)網(wǎng)表逆向技術(shù)通過分析分立寄存器的拓?fù)溥B接相似性特征,對(duì)寄存器進(jìn)行聚類與合并,從而恢復(fù)寄存器組等高層次設(shè)計(jì)信息。一般基于如下相似性特征規(guī)則對(duì)網(wǎng)表進(jìn)行逆向分析,如圖2所示,其中圓形代表單個(gè)寄存器,箭頭代表寄存器間的組合邏輯連接路徑,且箭頭起始端寄存器被稱為箭頭末端寄存器的前序寄存器,末端寄存器被稱為起始端寄存器的后序寄存器:
(1)有相同前序或后序寄存器的寄存器應(yīng)屬于同一個(gè)寄存器組,如圖2(a);
(2)前序或后序寄存器處于同一寄存器組的寄存器應(yīng)屬于同一個(gè)寄存器組,如圖2(b);
(3)相同組的寄存器,其前序寄存器或后序寄存器的數(shù)量是相近的,如圖2(c);
(4)相同組的寄存器,其與前序寄存器或后序寄存器的間的組合邏輯函數(shù)是類似的,如圖2(c);
(5)處于相同組的寄存器,數(shù)據(jù)應(yīng)該在同一時(shí)鐘周期同步到達(dá),若同一寄存器出現(xiàn)在兩個(gè)周期節(jié)拍中,則合并兩個(gè)節(jié)拍周期所有寄存器,并在子集內(nèi)部進(jìn)行2次分割,如圖2(d)。
圖2 同組寄存器相似性特征分析規(guī)則
為了避免逆向結(jié)果與單條特征產(chǎn)生過擬合,兩兩組合上述5條相似性特征從而得到10條聚類分析規(guī)則。分別執(zhí)行10條規(guī)則對(duì)寄存器進(jìn)行分析聚類,并對(duì)不同規(guī)則得到的所有聚類結(jié)果進(jìn)行多數(shù)投票,得到本次逆向結(jié)果。迭代地執(zhí)行該過程,直到聚類得到的寄存器組結(jié)果逐漸收斂,最終輸出逆向分析的寄存器組聚類結(jié)果,以及寄存器組間的連接關(guān)系,如圖3。
圖3 門級(jí)網(wǎng)表逆向過程
完成寄存器組恢復(fù)后,針對(duì)狀態(tài)寄存器組,分析其后續(xù)組合邏輯云以確定狀態(tài)切換函數(shù),并以復(fù)位狀態(tài)為初始狀態(tài),通過遍歷不同輸入下的下個(gè)狀態(tài)恢復(fù)完整狀態(tài)機(jī);針對(duì)數(shù)據(jù)寄存器組,分析組間組合邏輯云以確定數(shù)據(jù)運(yùn)算函數(shù),分析寄存器組間連接關(guān)系以獲取數(shù)據(jù)流向圖,最終實(shí)現(xiàn)從門級(jí)網(wǎng)表到RTL級(jí)設(shè)計(jì)的完整逆向過程。
為了抵抗逆向工具從門級(jí)網(wǎng)表恢復(fù)RTL級(jí)詞級(jí)變量、數(shù)據(jù)通路與控制邏輯,本文提出一種基于遺傳算法的邏輯混淆方法,通過篩選不同寄存器組的扇入與扇出節(jié)點(diǎn)作為混淆節(jié)點(diǎn)對(duì),并植入混淆單元以創(chuàng)建冗余連接,從而混淆寄存器拓?fù)渚W(wǎng)絡(luò),消除同組寄存器的相似性特征。
具體步驟如下:
(1)基于廣度優(yōu)先原則,對(duì)網(wǎng)表進(jìn)行遍歷,提取寄存器拓?fù)渚W(wǎng)絡(luò)與扇入扇出匯聚節(jié)點(diǎn);
(2)基于寄存器拓?fù)渚W(wǎng)絡(luò)結(jié)構(gòu)與扇入扇出邏輯,采用遺傳算法篩選各寄存器組的扇出混淆點(diǎn)與扇入混淆點(diǎn),并組成混淆節(jié)點(diǎn)對(duì);
(3)基于混淆節(jié)點(diǎn)對(duì)選取并植入混淆單元,創(chuàng)建扇出混淆點(diǎn)到扇入混淆點(diǎn)的邏輯通路,從而向寄存器拓?fù)渚W(wǎng)絡(luò)引入冗余連接,同時(shí)修改網(wǎng)表單元的實(shí)例化名稱以混淆語義信息,最終完成混淆網(wǎng)表的自動(dòng)化生成。
為了方便進(jìn)行后續(xù)的混淆對(duì)篩選與混淆單元植入,首先采用廣度優(yōu)先搜索算法,對(duì)網(wǎng)表進(jìn)行寄存器拓?fù)渚W(wǎng)絡(luò)分析。相較于深度優(yōu)先,廣度優(yōu)先搜索算法可以避免節(jié)點(diǎn)回溯操作,因此具有更快的處理速度。該算法以寄存器端口為起點(diǎn),通過逐層向后遍歷并跳過該寄存器的扇出組合邏輯,從而得到該寄存器的后序寄存器與扇出邏輯節(jié)點(diǎn)。具體算法如下,流程圖如圖4所示:
首先,選取待分析寄存器R。創(chuàng)建扇出邏輯節(jié)點(diǎn)集合L,并初始化為寄存器R的輸出節(jié)點(diǎn);創(chuàng)建后序寄存器集合Or,并初始化為空;隨后,遍歷集合L,逐個(gè)選取邏輯節(jié)點(diǎn)N。針對(duì)邏輯節(jié)點(diǎn)N,遍歷其扇出邏輯單元集合Oc,逐個(gè)選取單元C:若該單元為寄存器(電路輸出端口也被視為寄存器),則將該寄存器添加到集合Or中;若該單元為組合邏輯門,則將該組合邏輯門的輸出節(jié)點(diǎn)添加到集合L中。最終,當(dāng)集合L中所有邏輯節(jié)點(diǎn)均被遍歷,存儲(chǔ)當(dāng)前集合Or為寄存器R的后序寄存器,存儲(chǔ)當(dāng)前集合L為寄存器R的扇出組合邏輯節(jié)點(diǎn)。
同理,通過向前遍歷扇入組合邏輯得到該寄存器的前序寄存器與扇入邏輯節(jié)點(diǎn)。最終提取以寄存器為節(jié)點(diǎn)、以組合邏輯門為連接鏈的網(wǎng)狀拓?fù)浣Y(jié)構(gòu)。
隨后針對(duì)每個(gè)寄存器組,計(jì)算各寄存器的扇入或扇出邏輯節(jié)點(diǎn)集合L之間是否存在重復(fù)節(jié)點(diǎn),從而分析該組寄存器的扇出路徑或扇入路徑是否存在匯聚,并提取匯聚的扇入邏輯節(jié)點(diǎn)或扇出邏輯節(jié)點(diǎn)。通過篩選匯聚節(jié)點(diǎn),并在后續(xù)混淆節(jié)點(diǎn)篩選過程中優(yōu)先選取匯聚節(jié)點(diǎn),可以有效提高單個(gè)混淆節(jié)點(diǎn)對(duì)引入的冗余連接數(shù),從而提升混淆效率并降低面積開銷。
如圖4示例所示,通過省略圖5(a)所示的門級(jí)網(wǎng)表結(jié)構(gòu)中的組合邏輯門,最終得到圖5(b)中由寄存器間連接關(guān)系構(gòu)成的寄存器拓?fù)渚W(wǎng)絡(luò),圖5(b)中黑色圓點(diǎn)即表示不同寄存器間數(shù)據(jù)路徑的匯聚節(jié)點(diǎn),匯聚點(diǎn)A即為寄存器a與寄存器b的扇出邏輯路徑匯聚點(diǎn)。
圖4 寄存器拓?fù)渚W(wǎng)絡(luò)提取算法
圖5 寄存器拓?fù)渚W(wǎng)絡(luò)與匯聚節(jié)點(diǎn)提取效果
為了混淆同組寄存器的相似性特征,采用如下混淆策略:
首先選取兩個(gè)寄存器組,并在第1個(gè)組中選取扇出邏輯節(jié)點(diǎn)、第2個(gè)組中選取扇入邏輯節(jié)點(diǎn),組成一個(gè)混淆節(jié)點(diǎn)對(duì)。然后通過將節(jié)點(diǎn)對(duì)中的扇出邏輯節(jié)點(diǎn)連接到扇入邏輯節(jié)點(diǎn)上,則可創(chuàng)建兩個(gè)寄存器組間的冗余連接,如圖6所示。迭代地重復(fù)上述步驟,以向所有寄存器組引入冗余連接,使得每組的任意兩個(gè)寄存器之間:前序寄存器數(shù)量、后序寄存器數(shù)量、前序寄存器歸屬的寄存器組、后序寄存器歸屬的寄存器組均不相同,以達(dá)成混淆同組寄存器相似性特征的結(jié)果。
圖6 篩選混淆節(jié)點(diǎn)對(duì)并創(chuàng)建冗余連接
由于混淆節(jié)點(diǎn)對(duì)的選取,顯著影響著混淆的效果與效率。為了提升混淆效果并降低開銷,采用遺傳算法進(jìn)行混淆對(duì)的篩選。遺傳算法通過模擬遺傳學(xué)機(jī)理與自然選擇的進(jìn)化過程,進(jìn)行最優(yōu)解搜索。其首先在求解空間中生成一個(gè)初始種群,基于評(píng)價(jià)函數(shù)選擇對(duì)環(huán)境適應(yīng)度更高的個(gè)體,然后通過交叉與變異產(chǎn)生子代。不斷重復(fù)選擇、交叉、變異的過程,直到種群的適應(yīng)度達(dá)到目標(biāo)閾值,則輸出適應(yīng)度最高的個(gè)體作為最優(yōu)解求解結(jié)果。遺傳算法主要用于求解離散變量的組合最優(yōu)化問題,因此很適合在網(wǎng)表中篩選混淆節(jié)點(diǎn)對(duì)。
本方法兩步遞進(jìn)式地采用遺傳算法進(jìn)行混淆節(jié)點(diǎn)對(duì)篩選,縮小求解空間大小,從而提升算法性能。
第1步:針對(duì)每組寄存器,分別在扇入與扇出邏輯節(jié)點(diǎn)中篩選匯聚節(jié)點(diǎn)作為混淆節(jié)點(diǎn),使得在給定混淆節(jié)點(diǎn)數(shù)量N下,各寄存器所連接的混淆節(jié)點(diǎn)差異最大化,其中差異采用評(píng)價(jià)函數(shù)E1進(jìn)行評(píng)估。采用的評(píng)價(jià)函數(shù)E1如下所示,函數(shù)值越小,代表差異越大,混淆效果越理想,具體為
其中,F(xiàn)i為混淆后該組第i個(gè)寄存器的扇入或扇出混淆節(jié)點(diǎn)集合;O為N個(gè)混淆節(jié)點(diǎn)中出現(xiàn)重復(fù)節(jié)點(diǎn)的個(gè)數(shù),通過與懲罰因子Punish相乘,淘汰出現(xiàn)重復(fù)節(jié)點(diǎn)的求解結(jié)果。本文中遺傳算法搜索評(píng)價(jià)函數(shù)的最小值,因此Punish使用正值10000?;煜?jié)點(diǎn)個(gè)數(shù)N取決于該寄存器組中寄存器數(shù)量M,應(yīng)滿足如式(2)的關(guān)系,以使評(píng)價(jià)函數(shù)結(jié)果存在收斂為理想最優(yōu)值的最優(yōu)解
第2步:基于找到的各組混淆節(jié)點(diǎn),選取扇入混淆節(jié)點(diǎn)與扇出混淆節(jié)點(diǎn)得到混淆節(jié)點(diǎn)對(duì),使得混淆后同組寄存器間的前序/后序寄存器數(shù)量、前序/后序寄存器所屬的寄存器組差異最大化,其中差異采用評(píng)價(jià)函數(shù)E2進(jìn) 行評(píng)估。采用的評(píng)價(jià)函數(shù)E2如式(3)所示,函數(shù)值越小,代表差異越大,混淆效果越理想,具體為
其中,Ui為混淆后第i個(gè)寄存器的前序或后序寄存器數(shù)量,Vi為第i個(gè)寄存器的前序或后序寄存器所屬的寄存器組集合。
完成混淆節(jié)點(diǎn)對(duì)的篩選后,通過向網(wǎng)表中植入混淆單元,以完成冗余連接的創(chuàng)建。為了不影響電路原始功能,且避免逆向攻擊者通過識(shí)別混淆結(jié)構(gòu)攻破混淆,本文設(shè)計(jì)了多種混淆單元,具有不同的密鑰位寬、正確密鑰值與邏輯門類型,如圖7所示。其中,圖7(a)、圖7(b)為兩種不同結(jié)構(gòu)的密鑰為單比特0的混淆單元;圖7(c)為密鑰為兩比特00的混淆單元;圖7(d)、圖7(e)為兩種不同結(jié)構(gòu)的密鑰為單比特1的混淆單元;圖7(f)為密鑰為兩比特11的混淆單元。
圖7 混淆單元邏輯結(jié)構(gòu)
每個(gè)混淆單元都存在密鑰輸入端,當(dāng)該輸入端被置為正確密鑰時(shí),引入的冗余連接被屏蔽,使得電路處于正常工作狀態(tài)。除密鑰輸入端外,每個(gè)混淆單元存在原始節(jié)點(diǎn)輸入端與冗余節(jié)點(diǎn)輸入端。通過將混淆單元植入到原始節(jié)點(diǎn)處,則可創(chuàng)建由冗余節(jié)點(diǎn)到原始節(jié)點(diǎn)后序寄存器的冗余邏輯路徑。此外,不同的混淆單元具備不同的組合邏輯結(jié)構(gòu),通過隨機(jī)選取不同的混淆單元,可以避免攻擊者通過識(shí)別特定混淆結(jié)構(gòu)從而定位并刪除植入的邏輯混淆單元。在網(wǎng)表的自動(dòng)化混淆過程中,針對(duì)每個(gè)混淆節(jié)點(diǎn)對(duì),以節(jié)點(diǎn)對(duì)中扇入混淆節(jié)點(diǎn)為原始節(jié)點(diǎn)、扇出混淆節(jié)點(diǎn)為冗余節(jié)點(diǎn),隨機(jī)選取混淆單元進(jìn)行植入。完成混淆單元植入后,隨機(jī)修改各寄存器的實(shí)例化單元名,以隱藏網(wǎng)表中的語義信息,最終輸出混淆后的網(wǎng)表。
本文選定SM4國密算法電路,對(duì)其進(jìn)行門級(jí)網(wǎng)表逆向、邏輯混淆與混淆效果評(píng)估?;赟MIC 180 nm工藝,使用Design compiler工具對(duì)RTL級(jí)設(shè)計(jì)進(jìn)行邏輯綜合,獲得門級(jí)網(wǎng)表。采用VCS工具對(duì)門級(jí)網(wǎng)表進(jìn)行仿真以驗(yàn)證電路的邏輯功能正確性。采用文獻(xiàn)[17]中開源逆向工具DANA進(jìn)行網(wǎng)表逆向攻擊。網(wǎng)表規(guī)模為200000門級(jí),具有129059個(gè)邏輯單元,其中寄存器數(shù)量為2432。
為了評(píng)估本文混淆方法的抗網(wǎng)表逆向效果,使用該方法混淆原始設(shè)計(jì)網(wǎng)表,并分別對(duì)原始網(wǎng)表與混淆后的網(wǎng)表進(jìn)行逆向攻擊,最終評(píng)估其逆向結(jié)果的正確程度差異。針對(duì)網(wǎng)表逆向的效果評(píng)估,本文基于標(biāo)準(zhǔn)化互信息(Normalized Mutual Information, NMI)指標(biāo)進(jìn)行分析。該指標(biāo)被廣泛應(yīng)用于聚類問題的效果評(píng)估,也是當(dāng)前主流的網(wǎng)表逆向工具評(píng)估逆向效果的主要指標(biāo)[14-17]。該指標(biāo)值域?yàn)閇0, 1],值越高代表聚類結(jié)果越準(zhǔn)確。
在評(píng)估過程中,以真實(shí)正確的寄存器分組情況作為標(biāo)準(zhǔn)集GT,以逆向網(wǎng)表得到的寄存器分組情況作為評(píng)估集P,通過分析標(biāo)準(zhǔn)集與評(píng)估集的相關(guān)度,并采用信息熵完成歸一化,最終得到網(wǎng)表逆向結(jié)果的正確度指標(biāo),具體公式為
其中,CGT為標(biāo)準(zhǔn)集中的寄存器組個(gè)數(shù),CP為評(píng)估集中寄存器組個(gè)數(shù),Nij為標(biāo)準(zhǔn)集中第i組與評(píng)估集中第j組的重復(fù)元素個(gè)數(shù),N為所有Nij之和,Ni?為Nij矩陣中第i行之和,N?j為Nij矩陣中第j列之和。
對(duì)SM4電路的原始網(wǎng)表進(jìn)行逆向分析,其評(píng)估集P如圖8所示:輸入密鑰、32個(gè)輪密鑰所對(duì)應(yīng)的共計(jì)33個(gè)寄存器組被完整地恢復(fù)在綠色區(qū)域,輸入明文、32個(gè)輪密文、輸出密文所對(duì)應(yīng)的共計(jì)34個(gè)寄存器組被完整地恢復(fù)在藍(lán)色區(qū)域。該結(jié)果與標(biāo)準(zhǔn)集GT完全一致,寄存器組間的數(shù)據(jù)流向與運(yùn)算函數(shù)可以得到清晰完整的識(shí)別。同時(shí),NMI評(píng)估值為1,表明所有的寄存器都得到了正確的分組。因此,對(duì)于未經(jīng)混淆的該原始網(wǎng)表,逆向工具實(shí)現(xiàn)了理想的逆向效果,寄存器分組與電路數(shù)據(jù)流向得到了正確且完整的恢復(fù)。
圖8 SM4國密算法電路 網(wǎng)表逆向分析結(jié)果
采用本文混淆方法對(duì)原始網(wǎng)表進(jìn)行混淆,通過植入280個(gè)混淆單元引入280條冗余連接,混淆引入的額外開銷為0.216%。對(duì)混淆后網(wǎng)表進(jìn)行逆向分析,結(jié)果如圖9所示。相較于標(biāo)準(zhǔn)集GT的67個(gè)寄存器組,網(wǎng)表寄存器在評(píng)估集P中被錯(cuò)誤地聚類為362個(gè)寄存器組,擴(kuò)大了4.4倍;寄存器組間的拓?fù)溥B接條數(shù)由126條變?yōu)榱?870條,擴(kuò)大了61.46倍,寄存器組間的拓?fù)溥B接復(fù)雜度得到了指數(shù)提升。同時(shí),NMI評(píng)估值為0.542,2432個(gè)寄存器中2048個(gè)(84.2%)發(fā)生了錯(cuò)誤的聚類:即逆向得到的每個(gè)寄存器組中,各寄存器在標(biāo)準(zhǔn)集GT中都屬于不同的寄存器組。只有輸入明文、輸入密鑰、輸出密文3個(gè)寄存器組,共384個(gè)寄存器,因與輸入輸出端口直接相連而被逆向工具恢復(fù)。因此,經(jīng)本文方法混淆后,寄存器的分組信息完全被隱藏,寄存器組間拓?fù)鋸?fù)雜度也得到指數(shù)提升。
圖9 SM4國密算法電路 抗逆向效果分析
由于傳統(tǒng)基于組合邏輯或有限狀態(tài)機(jī)的邏輯混淆方法不會(huì)創(chuàng)建寄存器間的冗余連接,對(duì)于詞級(jí)寄存器組逆向不具備混淆效果,因此,為了比較并評(píng)估本文混淆方法的混淆效率與面積開銷,分別使用本文混淆方法、以及隨機(jī)混淆方法對(duì)網(wǎng)表進(jìn)行混淆,并進(jìn)行逆向攻擊。隨機(jī)混淆方法隨機(jī)地從網(wǎng)表中選取邏輯節(jié)點(diǎn)并創(chuàng)建冗余連接。如圖10為逆向攻擊結(jié)果的NMI值與面積開銷的曲線圖。面積開銷通過植入的邏輯單元個(gè)數(shù)進(jìn)行定量表征?;煜释ㄟ^曲線斜率表征。
圖10 面積開銷與混淆效率分析
隨著混淆開銷的增加,NMI值不斷降低,并最終逐漸收斂。對(duì)于隨機(jī)混淆方法,當(dāng)植入單元個(gè)數(shù)達(dá)到579時(shí),NMI值逐漸收斂為0.65,面積開銷為0.3874%;而本文方法在植入單元個(gè)數(shù)達(dá)到280時(shí),NMI值收斂為0.54,面積開銷為0.216%??蓪⒈疚姆椒ɑ煜蕯M合為0.0016428/每單元,隨機(jī)方法混淆效率擬合為0.0006045/每單元,因此本文方法效率為隨機(jī)方法的2.718倍。同時(shí)如表1所示,相較于隨機(jī)混淆方法,隨著混淆效果的提升,本文方法的面積開銷優(yōu)勢逐漸凸顯。當(dāng)NMI值為0.65時(shí),本文方法面積開銷為169,隨機(jī)混淆面積開銷為579,開銷降低了70.8%。此外,對(duì)比兩種方法的NMI收斂值,本文混淆方法相較于隨機(jī)混淆方法下降16.9%,因而具有更好的的混淆效果。
表1 面積開銷對(duì)比
數(shù)字電路性能主要體現(xiàn)為電路可正常工作的最高時(shí)鐘頻率,其主要受限于電路中時(shí)序關(guān)鍵路徑(即寄存器與寄存器間的延遲最大的連接通路)的延遲。延遲越高,電路最高時(shí)鐘頻率越低。在本文混淆方法中,混淆單元被植入原有的時(shí)序路徑中,同時(shí)混淆單元也引入了新的時(shí)序路徑。采用Design compiler或Primetime工具,對(duì)混淆后的門級(jí)網(wǎng)表進(jìn)行時(shí)序分析。分析混淆單元對(duì)原始時(shí)序路徑的影響,提取網(wǎng)表中含有混淆單元的時(shí)序關(guān)鍵路徑:其中混淆單元延遲為0.42 ns,其余單元時(shí)序延遲為18.93 ns,則混淆單元對(duì)部分時(shí)序路徑引入的時(shí)序性能開銷最大為2.21%。
分析混淆單元引入的時(shí)序路徑,當(dāng)混淆密鑰被賦值為正確值后,可等待多個(gè)周期再執(zhí)行電路的正常功能,因此該時(shí)序路徑并不影響電路運(yùn)行的實(shí)際性能。在數(shù)字開發(fā)流程中,可以直接使用如寬松的多周期路徑時(shí)序約束、或直接禁用該條路徑的時(shí)序弧(timing arc),以禁止EDA工具分析優(yōu)化該條路徑的時(shí)序?qū)傩?,從而避免該條路徑的時(shí)序影響。
此外,針對(duì)文中算法的性能,隨著電路規(guī)模的逐漸增大,基于建立時(shí)間對(duì)寄存器間的組合邏輯延遲的時(shí)序約束,電路規(guī)模的增加體現(xiàn)為寄存器組與組合邏輯云數(shù)量的增加,單個(gè)組合邏輯云的邏輯門數(shù)量規(guī)模不變。而本文提出的拓?fù)浞治雠c混淆節(jié)點(diǎn)對(duì)篩選算法針對(duì)單個(gè)組合邏輯云進(jìn)行逐個(gè)分析,因此隨著電路規(guī)模的逐漸增大,本文算法的時(shí)間開銷線性增加。
邏輯混淆密鑰,主要受到暴力攻擊、故障敏化攻擊與SAT攻擊。暴力攻擊通過窮舉所有可能的密鑰值并判斷電路功能是否正常,從而獲取正確密鑰。而本文設(shè)計(jì)提出的每個(gè)混淆單元均可引入至少1 bit密鑰,因此僅在100個(gè)邏輯門的硬件開銷下,密鑰搜索空間可達(dá)2100,不可接受的時(shí)間開銷將使暴力攻擊不再現(xiàn)實(shí)。
故障敏化攻擊通過尋找特定輸入模式,使單比特輸出值的正確性只對(duì)單比特密鑰敏感,從而根據(jù)單比特輸出結(jié)果獲取該比特密鑰的正確值[18]。而本文方法通過創(chuàng)建寄存器拓?fù)渚W(wǎng)絡(luò)的冗余連接,可明顯提升密鑰各比特間的相關(guān)性,從而使得各輸出位均受多比特密鑰值影響,指數(shù)提升攻擊需要搜索的密鑰空間。針對(duì)SM4電路進(jìn)行實(shí)驗(yàn),結(jié)果分析表明,當(dāng)基于本文方法植入門數(shù)量為390時(shí),各密鑰輸出節(jié)點(diǎn)的扇入路徑中所存在的密鑰比特?cái)?shù)平均為43.49,最大值為180,因而能較好地抵抗故障敏化攻擊。此外,當(dāng)植入門數(shù)量為150時(shí),隨機(jī)混淆方案對(duì)應(yīng)的密鑰比特?cái)?shù)平均值為10.62,本文混淆方法為24.08,相較于隨機(jī)混淆方法提升1.27倍,因而相較于隨機(jī)混淆,本文混淆方法在提升密鑰相關(guān)度時(shí)具有更高的效率。
SAT攻擊將求解組合邏輯電路密鑰的問題視作求解布爾函數(shù)的可滿足性問題,通過正確輸入輸出對(duì)迭代排除錯(cuò)誤密鑰集合,以最終獲取正確密鑰。針對(duì)時(shí)序邏輯電路,SAT攻擊需通過創(chuàng)建電路副本展開時(shí)序反饋環(huán)路,從而將時(shí)序邏輯電路展開為等效的組合邏輯電路[19]。目前,如文獻(xiàn)[7]等已提出了相關(guān)的基于時(shí)序邏輯混淆的不定時(shí)多次認(rèn)證方案,可針對(duì)SAT攻擊實(shí)現(xiàn)指數(shù)的安全性提升。然而,基于時(shí)序邏輯混淆的抗SAT攻擊方案依然存在一定的不足之處。第一,流水線的電路結(jié)構(gòu)可以被簡化,從而降低SAT攻擊需展開的時(shí)序周期輪數(shù),縮減展開后電路的布爾函數(shù)復(fù)雜度與等效密鑰位寬。而本文方法創(chuàng)建的冗余連接可引入大量時(shí)序反饋環(huán)路,從而破壞流水線結(jié)構(gòu)特征。針對(duì)全流水線SM4加密電路的實(shí)驗(yàn)結(jié)果表明,在未經(jīng)混淆的全流水線結(jié)構(gòu)中不存在時(shí)序反饋環(huán)路,而經(jīng)本文方法植入390個(gè)混淆單元后,除首末級(jí)外的共2048個(gè)寄存器中,2022個(gè)寄存器處于時(shí)序反饋環(huán)路中,流水線結(jié)構(gòu)破壞比率為98.73%。第二,攻擊者可基于狀態(tài)寄存器恢復(fù)電路有限狀態(tài)機(jī)[20],以獲取解鎖過程狀態(tài)跳轉(zhuǎn)路徑對(duì)應(yīng)的激勵(lì)序列。而本文方法混淆了狀態(tài)寄存器與數(shù)據(jù)寄存器,且引入的時(shí)序反饋環(huán)路將使得部分?jǐn)?shù)據(jù)寄存器在混淆狀態(tài)下并入狀態(tài)寄存器反饋環(huán)路,消除了同組寄存器的相似性特征與扇入扇出特征,因而無法通過恢復(fù)電路有限狀態(tài)機(jī)的方式攻破基于時(shí)序邏輯的混淆策略。如4.1節(jié)實(shí)驗(yàn)結(jié)果分析表明,在植入門數(shù)量為280時(shí),寄存器網(wǎng)絡(luò)拓?fù)鋸?fù)雜度提升61.46倍,NMI評(píng)估值下降46%,狀態(tài)寄存器特征得到了有效混淆。
針對(duì)傳統(tǒng)邏輯混淆方法無法混淆寄存器間拓?fù)潢P(guān)系的局限性,本文提出一種基于遺傳算法的邏輯混淆方法,通過創(chuàng)建冗余連接,混淆詞級(jí)寄存器相似性特征,從而抵抗網(wǎng)表逆向技術(shù)恢復(fù)RTL級(jí)詞級(jí)Reg變量、控制邏輯與數(shù)據(jù)通路。針對(duì)SM4基準(zhǔn)電路的實(shí)驗(yàn)中,本文方法使得逆向結(jié)果的正確度下降46%,拓?fù)鋸?fù)雜度提高61.46倍,開銷僅為0.216%。同時(shí),相較于隨機(jī)混淆方法,本文方法混淆效率提升為2.718倍,面積降低70.8%,因此能為超大規(guī)模芯片在低面積開銷水平下提供有效的網(wǎng)表逆向防護(hù)。