本發(fā)明屬于集成電路設(shè)計領(lǐng)域,尤其涉及一種驅(qū)動非組合邏輯電路的狀態(tài)機(jī)重新編碼方法。
背景技術(shù):
1、邏輯鎖定技術(shù)通過插入密鑰門的方式保護(hù)集成電路,能夠提供從設(shè)計到制造的全流程保護(hù),被廣泛用于應(yīng)對硬件木馬、知識產(chǎn)權(quán)盜版以及逆向工程等硬件安全問題。循環(huán)邏輯鎖定技術(shù)在電路中增加環(huán)路,使其無法表達(dá)為有向無環(huán)圖,以增加sat(booleansatisfiability)求解的復(fù)雜度,具有結(jié)構(gòu)安全性高、加密開銷小的特點。然而,以cycsat、besat為代表的循環(huán)邏輯解密技術(shù)聚焦于sat求解前電路的“無環(huán)”預(yù)處理,結(jié)合atpg(automatic?test?pattern?generation)識別環(huán)路類型,已成功破解了先進(jìn)的循環(huán)邏輯鎖定方法looplock?2.0。因此,亟需研究更加安全有效的環(huán)路結(jié)構(gòu)及其循環(huán)邏輯鎖定方法。
2、循環(huán)邏輯鎖定基于一個核心假設(shè):循環(huán)結(jié)構(gòu)難以用合取范式(conjunctivenormal?form,cnf)[41]表達(dá),因此sat求解器無法解決。通過在組合電路中引入循環(huán),電路結(jié)構(gòu)不再是有向無環(huán)圖(directed?acyclic?graph,dag)[42],導(dǎo)致傳統(tǒng)的sat攻擊不再有效。
3、循環(huán)邏輯鎖定領(lǐng)域用以增強(qiáng)安全性的核心技術(shù),即是在電路中添加的特定環(huán)路。當(dāng)電路接收到錯誤的密鑰輸入時,這些環(huán)路能夠誘發(fā)輸出信號錯誤,從而影響整體電路功能。通過詳細(xì)分析,識別了目前循環(huán)邏輯鎖定技術(shù)中已經(jīng)引入的環(huán)路類型,共四種:
4、(1)偽環(huán):這種環(huán)路是循環(huán)邏輯鎖定加密技術(shù)中最初采用的一種結(jié)構(gòu)。所謂偽環(huán),指的是在輸入正確密鑰后,芯片正常運行的情況下,環(huán)路內(nèi)的信號將保持靜態(tài),不發(fā)生任何跳轉(zhuǎn),因此這種環(huán)路在電路中實際上不起任何功能作用,僅作為結(jié)構(gòu)環(huán),類似于一條“死電路”。然而,當(dāng)輸入錯誤的密鑰時,偽環(huán)的存在變得關(guān)鍵,它會導(dǎo)致電路輸出信號產(chǎn)生振蕩或具有時序性的變化,從而干擾電路的正常輸出。因此,當(dāng)偽環(huán)從加密網(wǎng)表中被移除時,相應(yīng)的電路便能被解密。這種設(shè)計旨在通過非功能性環(huán)路增強(qiáng)電路的安全性,使得密鑰輸入錯誤時,電路將變?yōu)殄e誤的有環(huán)狀態(tài)。
5、(2)超環(huán):該環(huán)路由srclock加密技術(shù)首次引入,是在偽環(huán)的基礎(chǔ)上通過多層疊加設(shè)計的。這種結(jié)構(gòu)導(dǎo)致電路中形成了數(shù)量眾多且大小不一的環(huán)路。srclock技術(shù)通過增加環(huán)路的復(fù)雜性,極大地增加了cycsat解算器在計算前置的“無環(huán)”條件約束時的計算難度。在本質(zhì)上,超環(huán)與偽環(huán)相似,在芯片使用正確密鑰激活后,超環(huán)同樣不會影響電路的輸出功能,表現(xiàn)為一種“死電路”。因此,一旦從加密網(wǎng)表中移除超環(huán),電路便可被解密。這種設(shè)計策略旨在通過增加電路設(shè)計的復(fù)雜度,提高其安全性,使cycsat解密過程變得更為困難。
6、(3)組合邏輯環(huán):這種環(huán)路亦可稱為功能性組合邏輯環(huán),最初由looplock加密技術(shù)提出。通過采用nm技術(shù),電路中的部分門可以進(jìn)行優(yōu)化合并,最終構(gòu)建出功能性的組合邏輯環(huán)。與偽環(huán)或超環(huán)不同,功能性組合邏輯環(huán)在芯片正常運行時將發(fā)揮關(guān)鍵作用。因此,即便電路輸入正確的密鑰,功能性組合邏輯環(huán)中的數(shù)值仍將發(fā)生變化,并影響電路的輸出信號。一旦從加密網(wǎng)表中移除這些功能性組合邏輯環(huán),電路便無法解密,或者導(dǎo)致解密錯誤。因此,要正確解密電路,攻擊者必須保留這些功能性組合邏輯環(huán)。
7、(4)非組合邏輯環(huán):此類環(huán)路可被稱為非功能性非組合邏輯環(huán),最初由looplock加密技術(shù)提出。與組合邏輯環(huán)的主要區(qū)別在于其時序性特征,環(huán)路中的值不僅依賴于當(dāng)前輸入信號,還依賴于前一時刻的輸入信號,而組合邏輯環(huán)僅依賴于當(dāng)前輸入信號。非組合邏輯環(huán)由于其時序性,當(dāng)其被加入到組合邏輯電路中時,環(huán)路中的值會被視為“x”。在looplock與looplock2.0加密技術(shù)中,為確保組合邏輯電路功能的正確性,邏輯函數(shù)視角下的“x”與一個零值組合使用(邏輯與),這樣“x”不會影響邏輯函數(shù)的輸出,進(jìn)而不影響電路的功能性,因此,這類環(huán)路亦被稱為非功能性非組合邏輯環(huán)。由于其非功能性特征,與偽環(huán)和超環(huán)一樣,一旦加密網(wǎng)表中的非功能性非組合邏輯環(huán)被移除,電路便可被解密。
8、表1目前循環(huán)邏輯鎖定中環(huán)路類型
9、
10、四種現(xiàn)存環(huán)路如表1所示,在上述四種環(huán)路中,偽環(huán)和超環(huán)均從結(jié)構(gòu)角度出發(fā),僅用于在組合邏輯電路中引入虛假的環(huán)路。這兩種環(huán)路在功能上并不影響電路的正常運行,因此可以通過化簡過程消除。例如,偽環(huán)可以通過cycsat工具添加的“無環(huán)”假設(shè)和相關(guān)約束來實現(xiàn)化簡和消除。超環(huán)與偽環(huán)在本質(zhì)上沒有區(qū)別,但是cycsat添加約束所需時間隨密鑰數(shù)量呈指數(shù)增長。在實際電路中,超環(huán)會消耗大量的布局和布線資源,因此在實際應(yīng)用中,這種加密技術(shù)的實用價值較低。
11、不同于偽環(huán)和超環(huán),組合邏輯環(huán)與非組合邏輯環(huán)從電路功能的角度被引入循環(huán)邏輯鎖定。這意味著這兩種環(huán)路在電路正常工作中具有實際的功能性,因此,攻擊者在獲取的加密網(wǎng)表中必須包含這兩種環(huán)路,以保證最終的解密網(wǎng)表的功能正確性。這兩種環(huán)路的主要區(qū)別在于它們的值依賴的變量:組合邏輯環(huán)的環(huán)值直接由當(dāng)前輸入信號決定,其變量只有當(dāng)前輸入信號;而非組合邏輯環(huán)的環(huán)值則依賴于當(dāng)前以及前一時刻的輸入信號,其變量包括當(dāng)前輸入信號和前一拍輸入信號。由于這兩種環(huán)路都從功能角度出發(fā),因此每種環(huán)路都在電路設(shè)計中扮演著特定且重要的角色。
12、盡管looplock加密技術(shù)首次引入了非組合邏輯環(huán),這些環(huán)路最終卻是非功能性的。在構(gòu)建環(huán)的過程中,非組合邏輯環(huán)下游的驅(qū)動電路會嵌入一個阻塞節(jié)點,該節(jié)點的作用是阻止環(huán)值信號的進(jìn)一步傳遞。從邏輯功能的角度來看,這個阻塞節(jié)點將環(huán)值與之前的邏輯0值連接(and)。經(jīng)過阻塞節(jié)點處理后的環(huán)值信號將轉(zhuǎn)變?yōu)橐粋€常數(shù)值(邏輯0),從而確保它不會對電路的最終輸出信號產(chǎn)生任何影響。looplock這種設(shè)計旨在通過控制信號傳遞來維護(hù)電路的核心功能,保持電路為組合邏輯形式的同時,實現(xiàn)加密目的。
13、looplock加密技術(shù)及其升級版looplock?2.0加密技術(shù)中的非組合邏輯環(huán)是非功能性的,這些環(huán)路雖在電路正常運作中產(chǎn)生了環(huán)值的跳變,但從輸出信號的角度考慮,它們實際上可以被視為不活動的電路部分,也就是說,環(huán)值中的不確定狀態(tài)“x”的傳播將止步于電路中的某個節(jié)點。looplock?2.0加密技術(shù)的破解策略正是基于這一特性,即通過atpg技術(shù)識別電路中的阻塞節(jié)點來確定非活動環(huán)路。存在阻塞節(jié)點的環(huán)路可以視為不活動的“死電路”,因此可以被移除并以邏輯0或1替換,并且電路的功能性保持不變。移除加密網(wǎng)表中的非組合邏輯環(huán)后,剩余的密鑰值可以通過sat解密技術(shù)進(jìn)行解密,最終獲得一個僅包含功能性組合邏輯環(huán)的解密網(wǎng)表。盡管解密網(wǎng)表不包含非組合邏輯環(huán),但在功能上與正確的電路網(wǎng)表等價,因此可以證明這種解密方法的有效性。
14、總體而言,盡管當(dāng)前的循環(huán)邏輯鎖定加密技術(shù)引入了非組合邏輯環(huán),但由于引入環(huán)路的非功能性,這些環(huán)路容易被破解,這反映出該領(lǐng)域中加密技術(shù)的一個主要缺陷:目前沒有任何一種加密技術(shù)有效利用了功能性非組合邏輯環(huán)。如果電路中的非組合邏輯環(huán)具備功能性,那么這種環(huán)路將不再被視為“死電路”,從而導(dǎo)致這種環(huán)在解密網(wǎng)表中應(yīng)當(dāng)被保留,而這種保留行為直接打破了目前解密技術(shù)的解密前提。因此,研究能夠有效利用功能性非組合邏輯環(huán)的加密技術(shù),是循環(huán)邏輯鎖定領(lǐng)域中增強(qiáng)電路安全性的關(guān)鍵方向。
15、由于非組合邏輯環(huán)具有時序性質(zhì),所以對于通用電路,直接引入功能性非組合邏輯環(huán),將會使得電路功能不可控,而為了使得任意電路都可以使用功能性非組合邏輯環(huán),需要對狀態(tài)機(jī)編碼進(jìn)行修改,使得修改后的狀態(tài)機(jī)的時序滿足特定限制,在該限制下,功能性非組合邏輯環(huán)才可以安全有效地在電路中工作。
技術(shù)實現(xiàn)思路
1、本發(fā)明目的在于提供一種驅(qū)動非組合邏輯電路的狀態(tài)機(jī)重新編碼方法,以解決上述的技術(shù)問題。
2、為解決上述技術(shù)問題,本發(fā)明的一種驅(qū)動非組合邏輯電路的狀態(tài)機(jī)重新編碼方法的具體技術(shù)方案如下:
3、一種驅(qū)動非組合邏輯電路的狀態(tài)機(jī)重新編碼方法,包括如下步驟:
4、步驟1:狀態(tài)分類;基于keep值是否依賴于狀態(tài)機(jī)的前一狀態(tài)s′來對狀態(tài)機(jī)的編碼進(jìn)行分類;
5、步驟2:狀態(tài)機(jī)跳轉(zhuǎn)分類:根據(jù)狀態(tài)機(jī)編碼的分類以及狀態(tài)跳轉(zhuǎn)的起始與終點狀態(tài)編碼,狀態(tài)機(jī)的跳轉(zhuǎn)細(xì)分為五種類型。
6、步驟3:狀態(tài)機(jī)跳轉(zhuǎn)修改和重新編碼操作;調(diào)整狀態(tài)機(jī),使其狀態(tài)間跳轉(zhuǎn)符合步驟2的五種類型的跳轉(zhuǎn)要求;
7、步驟4:流程與總結(jié)。
8、進(jìn)一步的,所述步驟1中假設(shè)包含非組合邏輯環(huán)的電路的輸出信號用y表示,而電路的邏輯函數(shù)用f表示,則狀態(tài)機(jī)的編碼分為以下兩類:
9、(1)sf(state?free),自由編碼狀態(tài),在此狀態(tài)下,非組合邏輯環(huán)的環(huán)值將不會影響輸出端口,在這種情況下,
10、y=f(s)(3.8)
11、(2)sk(state?keep),保持狀態(tài),在此狀態(tài)下,非組合邏輯環(huán)的環(huán)值將影響電路的輸出端口,在這種情況下,
12、y=f(s,s′)。(3.9)進(jìn)一步的,所述步驟2的五種類型跳轉(zhuǎn)類型為內(nèi)部跳轉(zhuǎn)、sf到sf跳轉(zhuǎn)、sf到sk跳轉(zhuǎn)、sk到sf跳轉(zhuǎn)、sk到sk跳轉(zhuǎn),
13、所述內(nèi)部跳轉(zhuǎn):這種跳轉(zhuǎn)類型中,起始狀態(tài)和終點狀態(tài)的編碼保持不變;所述sf到sf跳轉(zhuǎn):這種跳轉(zhuǎn)類型的起點狀態(tài)和終點狀態(tài)都是sf;
14、所述sf到sk跳轉(zhuǎn):此類跳轉(zhuǎn)會導(dǎo)致sf狀態(tài)下的非組合邏輯環(huán)中的環(huán)值被鎖存至sk狀態(tài);
15、所述sk到sf跳轉(zhuǎn):在這種跳轉(zhuǎn)類型中,終點狀態(tài)為sf。
16、進(jìn)一步的,所述步驟2的每種類型都有其特定的要求和約束,其中某些跳轉(zhuǎn)類型是不被允許的:
17、所述內(nèi)部跳轉(zhuǎn)在電路設(shè)計中是被允許的;
18、所述sf到sf跳轉(zhuǎn):這種狀態(tài)機(jī)的跳轉(zhuǎn)路徑是被允許的;
19、所述sf到sk跳轉(zhuǎn):從sf到sk的跳轉(zhuǎn)必須確保跳轉(zhuǎn)入口是唯一的,這種跳轉(zhuǎn)是被允許的;
20、所述sk到sf跳轉(zhuǎn):在含有非組合邏輯環(huán)的電路中,這種跳轉(zhuǎn)不僅是允許的,而且其跳轉(zhuǎn)次數(shù)也不受限制;
21、所述sk到sk跳轉(zhuǎn):在含有非組合邏輯環(huán)的電路中,這種跳轉(zhuǎn)是不被允許的。
22、進(jìn)一步的,所述步驟2中不同狀態(tài)之間跳轉(zhuǎn)的分類及相關(guān)限制如下:
23、內(nèi)部跳轉(zhuǎn):起始狀態(tài)為s0,終點狀態(tài)為s0,是被允許;
24、sf到sk跳轉(zhuǎn):起始狀態(tài)為s0,終點狀態(tài)為s1,部分允許1;
25、sf到sk跳轉(zhuǎn):起始狀態(tài)為s0,終點狀態(tài)為s2,部分允許2;
26、sf到sf跳轉(zhuǎn):起始狀態(tài)為s0,終點狀態(tài)為s3,是被允許;
27、sk到sf跳轉(zhuǎn):起始狀態(tài)為s1,終點狀態(tài)為s0,是被允許;
28、sf到sf跳轉(zhuǎn):起始狀態(tài)為s0,終點狀態(tài)為s3,是被允許;
29、內(nèi)部跳轉(zhuǎn):起始狀態(tài)為s1,終點狀態(tài)為s1,是被允許;
30、sk到sk跳轉(zhuǎn):起始狀態(tài)為s1,終點狀態(tài)為s2,不被允許;
31、sk到sf跳轉(zhuǎn):起始狀態(tài)為s1,終點狀態(tài)為s3,是被允許;
32、sk到sf跳轉(zhuǎn):起始狀態(tài)為s2,終點狀態(tài)為s0,是被允許;
33、sk到sk跳轉(zhuǎn):起始狀態(tài)為s2,終點狀態(tài)為s1,不被允許;
34、內(nèi)部跳轉(zhuǎn):起始狀態(tài)為s2,終點狀態(tài)為s2,是被允許;
35、sk到sf跳轉(zhuǎn):起始狀態(tài)為s2,終點狀態(tài)為s3,是被允許;
36、sf到sf跳轉(zhuǎn):起始狀態(tài)為s3,終點狀態(tài)為s0,是被允許;
37、sf到sk跳轉(zhuǎn):起始狀態(tài)為s3,終點狀態(tài)為s1,部分允許1;
38、sf到sk跳轉(zhuǎn):起始狀態(tài)為s3,終點狀態(tài)為s2,部分允許2;
39、內(nèi)部跳轉(zhuǎn):起始狀態(tài)為s3,終點狀態(tài)為s3,是被允許;
40、其中,標(biāo)記為“部分允許1”的跳轉(zhuǎn)類別中,兩種可能的跳轉(zhuǎn)只允許選擇其一進(jìn)行實施;同樣地,標(biāo)記為“部分允許2”的跳轉(zhuǎn)類別也只允許其中一種跳轉(zhuǎn)存在。
41、進(jìn)一步的,步驟2中,對任意電路而言,只要其狀態(tài)機(jī)的編碼分類及狀態(tài)跳轉(zhuǎn)符合限制條件,就可以利用該狀態(tài)機(jī)驅(qū)動功能性非組合邏輯環(huán);對于具有多比特的狀態(tài)機(jī),采取拆分策略,將其部分比特視為一個獨立的2比特狀態(tài)機(jī)進(jìn)行處理;此后,分析這個2比特狀態(tài)機(jī)的編碼和跳轉(zhuǎn)是否符合先前提出的要求。
42、進(jìn)一步的,步驟3中,包括一些較為嚴(yán)格的限制,包括:sf到sk的跳轉(zhuǎn),對于編碼為sk的某個狀態(tài),只允許一條跳轉(zhuǎn)入口;sk到sk的跳轉(zhuǎn),這種跳轉(zhuǎn)不被允許。
43、為確保狀態(tài)機(jī)重新編碼后的狀態(tài)跳轉(zhuǎn)滿足上述限制條件,首先需要對狀態(tài)機(jī)的跳轉(zhuǎn)結(jié)構(gòu)進(jìn)行調(diào)整,這包括確保狀態(tài)機(jī)具備多個狀態(tài)只有一個入口跳轉(zhuǎn),隨后將這些狀態(tài)標(biāo)記為sk,接下來,根據(jù)sk和sf的具體編碼要求進(jìn)行重新編碼工作;
44、在對狀態(tài)機(jī)跳轉(zhuǎn)路徑進(jìn)行修改時,首要任務(wù)是確保各狀態(tài)的功能保持不變;接著,對跳轉(zhuǎn)路徑本身進(jìn)行調(diào)整;鑒于前述的兩個限制條件,狀態(tài)拷貝是一個有效的策略,通過這種方法生成具有與原狀態(tài)相同功能的狀態(tài)副本;然后,對原始狀態(tài)及其副本的跳轉(zhuǎn)入口進(jìn)行適當(dāng)?shù)南拗啤?/p>
45、進(jìn)一步的,所述步驟3的具體實施方法為:
46、一個原始狀態(tài)機(jī),包括狀態(tài)si及其他部分,狀態(tài)si具有三個跳轉(zhuǎn)入口a、b、和c,以及兩個跳轉(zhuǎn)出口d和e,若考慮將si作為非組合邏輯環(huán)的驅(qū)動部分,即sk狀態(tài),但因si有三個入口,不滿足sk狀態(tài)僅有一個跳轉(zhuǎn)入口的要求,因此需要將si的跳轉(zhuǎn)入口分為三部分,
47、根據(jù)狀態(tài)機(jī)重新編碼策略,首先對si進(jìn)行拷貝,形成三個副本si0、si1與si2,這些副本在跳出入口上與原si狀態(tài)相同,即都具備d和e兩個出口,而各自繼承si的入口a、b和c,在新的狀態(tài)機(jī)設(shè)計中,這些副本將取代原有的si狀態(tài),如果原狀態(tài)機(jī)中si通過路徑a發(fā)揮作用,在新狀態(tài)機(jī)中相應(yīng)的路徑a將跳轉(zhuǎn)至狀態(tài)si0,si0、si1與si2在電路上的功能與原si保持一致,通過這種狀態(tài)拷貝策略,可以任選si0、si1與si2中的兩個作為sk,然后根據(jù)sk的特定編碼要求對狀態(tài)機(jī)進(jìn)行重新編碼,確保新編碼的狀態(tài)機(jī)能有效驅(qū)動功能性非組合邏輯環(huán)。
48、進(jìn)一步的,所述步驟4包括:
49、狀態(tài)機(jī)重新編碼策略的關(guān)鍵在于首先分析含有非組合邏輯環(huán)的電路,確切地識別每種輸入信號的類型,由于狀態(tài)機(jī)是驅(qū)動這類電路的核心,對每種輸入信號的詳細(xì)分析;
50、在狀態(tài)機(jī)最終將進(jìn)行重新編碼的前提下,當(dāng)前階段無需深入分析現(xiàn)有狀態(tài)機(jī)跳轉(zhuǎn)圖中的sk和sf是否符合特定限制規(guī)則,相反,集中于每一個狀態(tài)的符號化及其跳轉(zhuǎn)路徑的直接分析;
51、對于那些跳轉(zhuǎn)入口數(shù)量大于等于2的狀態(tài),采取狀態(tài)拷貝方法以保持電路功能的不變性,通過拷貝,生成功能與原狀態(tài)相同的副本狀態(tài),這些拷貝后的副本將繼承原狀態(tài)的所有跳轉(zhuǎn)出口,而原狀態(tài)的各個入口則被分配至各個副本,確保每個副本僅有一個獨立的跳轉(zhuǎn)入口;此外,由于進(jìn)行了狀態(tài)拷貝,新生成的狀態(tài)副本之間將不存在直接的跳轉(zhuǎn)關(guān)系,這符合sk狀態(tài)之間不應(yīng)有跳轉(zhuǎn)關(guān)系的要求;
52、每次狀態(tài)拷貝后,得到的副本數(shù)量除以2并取整后得到的數(shù)值就代表了可以驅(qū)動功能性非組合邏輯環(huán)電路的狀態(tài)數(shù)量,同時也等于可以插入的密鑰數(shù)量,一旦拷貝后的狀態(tài)數(shù)量達(dá)到所需的密鑰數(shù)量,狀態(tài)拷貝操作便會停止,隨后,將基于之前分析得到的{sk}和{sf}集合對修改后的狀態(tài)跳轉(zhuǎn)圖進(jìn)行重新編碼,對于多比特狀態(tài)機(jī),其編碼需要將其中部分比特進(jìn)行拆分操作,將其中的比特子集視為一個小型狀態(tài)機(jī),從小型狀態(tài)機(jī)開始進(jìn)行編碼操作。
53、本發(fā)明的一種驅(qū)動非組合邏輯電路的狀態(tài)機(jī)重新編碼方法具有以下優(yōu)點:
54、本發(fā)明可以實現(xiàn)通用電路中狀態(tài)機(jī)的重新編碼,使得其可以直接驅(qū)動帶有非組合邏輯環(huán)的電路。通過狀態(tài)機(jī)跳轉(zhuǎn)圖修改和比特重編碼操作兩大步驟,改造現(xiàn)有的狀態(tài)機(jī),具有廣泛的適用性。改造后的狀態(tài)機(jī)可以驅(qū)動含有非組合邏輯環(huán)的電路,并且該非組合邏輯環(huán)是功能性的,即對電路的輸出有影響。