甄 帥,原義棟,,辛睿山,甘 杰,趙毅強
(1.智能感知與芯片安全技術(shù)實驗室(天津大學(xué)),天津 300072; 2.北京智芯微電子科技有限公司,北京 100192)
侵入式攻擊通常使用聚焦離子束(FIB)和微探針等手段[1],對芯片內(nèi)部電路直接進行探測和修改.安全芯片使用頂層或次頂層金屬走線作為金屬屏蔽層,遮蔽芯片的重要區(qū)域和電路連線,保證其芯片內(nèi)部電路的安全.主動式屏蔽層在頂層金屬網(wǎng)絡(luò)中通入數(shù)字信號,通過對比屏蔽層信號的完整性和一致性,判斷屏蔽層是否受到攻擊.主動屏蔽層易受到針對性的侵入式攻擊,許多學(xué)者對此展開了研究. Cioranesco等[2]提出了在主動屏蔽層的走線中通入加密數(shù)字信號的方法,提高檢測信號的安全性;Wang等[3]提出節(jié)點式布線的方法,復(fù)雜化主動屏蔽層的拓?fù)浣Y(jié)構(gòu).這些手段可以提高攻擊者進行逆向工程的難度,但是在花費一定時間對屏蔽層數(shù)據(jù)進行截取和分析后,攻擊者仍然能找到走線的互聯(lián)關(guān)系[4].Feng等[5]提出一種通過路由節(jié)點改變屏蔽層數(shù)據(jù)傳輸路徑的抗重布線攻擊方法,路由節(jié)點每次重構(gòu)都會從節(jié)點的4個端口中選擇兩個進行隨機連接.多個節(jié)點形成陣列,可控制主動屏蔽層的拓?fù)浣Y(jié)構(gòu),但該方法的節(jié)點在每次重構(gòu)后都存在兩個未連接的端口,與其相連的主動屏蔽線未被通入信號,存在一定安全隱患.
針對主動屏蔽層的安全問題,本文結(jié)合隨機哈密頓回路填充算法[6],提出了一種基于Galois環(huán)振[7]的隨機重構(gòu)主動屏蔽層電路.將主動屏蔽層進行分段重構(gòu),同時利用屏蔽層走線與重構(gòu)節(jié)點的驅(qū)動器實現(xiàn)Galois環(huán)振真隨機數(shù)生成器結(jié)構(gòu),產(chǎn)成高熵值的真隨機數(shù),利用該真隨機數(shù)作為種子產(chǎn)生屏蔽層的檢測隨機數(shù)碼流序列.以Trivium密碼算法電路為目標(biāo)進行防護,并利用該算法生成加密數(shù)據(jù)流對屏蔽層中的檢測碼流進行加密,構(gòu)建了屏蔽層安全系統(tǒng).本文在8通道并行隨機哈密頓回路走線的主動屏蔽層中實現(xiàn),解決了屏蔽層隨機數(shù)檢測碼流上電后初始狀態(tài)相同的問題,并且極大地減少重布線攻擊的失效區(qū)域,可以有效提高屏蔽層安全性.
主動屏蔽層結(jié)構(gòu)如圖1所示,屏蔽層金屬導(dǎo)線以規(guī)定的方式在芯片頂層走線,填滿整個頂層金屬層.通過向金屬線的輸入端發(fā)送生成的隨機數(shù)碼流信號,并在接收端同步檢測數(shù)據(jù)的真實性與完整性,達到檢測物理攻擊的效果.若想獲取芯片內(nèi)部數(shù)據(jù),就必須繞開主動屏蔽層,或是對其進行部分移除.攻擊者通過FIB和微探針等先進的芯片分析和電路修改工具來修改屏蔽層,從而將感應(yīng)電路短路,讓屏蔽層的保護失效的操作被稱為重布線攻擊.

圖1 主動屏蔽層
重布線攻擊的過程如圖2所示,通過對主動屏蔽層走線連接關(guān)系的分析,攻擊者找出長距離走線上相隔較近的節(jié)點進行重布線,使主動屏蔽層部分面積失效,失效導(dǎo)線的長度稱為失效距離,失效導(dǎo)線覆蓋的被保護區(qū)域面積稱之為失效面積.

圖2 重布線攻擊
若屏蔽層拓?fù)浣Y(jié)構(gòu)較為簡單,攻擊者只需短路較小的距離,就能使大面積屏蔽層失效.提高屏蔽層拓?fù)浣Y(jié)構(gòu)的復(fù)雜度,會提升攻擊者識別屏蔽層連接關(guān)系的時間,但對重布線攻擊手段沒有直接進行防護.本文在主動屏蔽層中插入可重構(gòu)節(jié)點,實現(xiàn)了屏蔽層中數(shù)據(jù)流的通道換序與加密操作,可以將屏蔽層的最大失效面積減小,直接降低了重布線攻擊的成功率.插入節(jié)點的數(shù)量N與屏蔽層導(dǎo)線長度L的關(guān)系為
(1)
式中Lpi為節(jié)點之間每段線的長度,在插入節(jié)點較為均勻分布的情況下Lpi可以表示為
(2)
假定屏蔽層的總面積為A,失效面積為C,失效距離為S,根據(jù)失效導(dǎo)線覆蓋的面積為失效面積這一原則,失效面積與總面積之間的比例可以表示為
(3)
若走線處于最差情況,即攻擊者可以直接對兩個節(jié)點間的導(dǎo)線進行重布線,根據(jù)式(2)、(3)可以推得此時失效距離Smax為
(4)
而最差情況下的節(jié)點間最大失效面積Cmax,可以根據(jù)式(3)、(4)推得:
(5)
插入可重構(gòu)節(jié)點使得屏蔽層走線在節(jié)點前后的數(shù)據(jù)不同,因此跨越節(jié)點的走線不能被短路,屏蔽層的最大失效面積可以等效為節(jié)點間的最大失效面積.若未插入可重構(gòu)節(jié)點的主動屏蔽層最大失效面積為Cn,插入N個節(jié)點后的最大失效面積為Ce,則最大失效面積的差值ΔC可以表示為
ΔC=Cn-Ce.
(6)
而根據(jù)式(5)、(6)可以得出
(7)
可重構(gòu)節(jié)點N的數(shù)目與芯片的安全等級、電路資源的占比、芯片IP的面積等因素相關(guān).在保證芯片安全性的同時,需要確保節(jié)點不會占用過多資源,打亂芯片IP的擺放.本文主動屏蔽層總面積為1×106μm2,IP的單元面積約為220 000 μm2,為了達到較好的防護效果,最大失效面積應(yīng)該小于IP面積,根據(jù)式(5)、(7)得出,節(jié)點的個數(shù)至少為4個,綜合考慮資源占用與安全性本文在屏蔽層中布置了4個可重構(gòu)節(jié)點.
本文提出的主動屏蔽層隨機重構(gòu)電路,在主動屏蔽層中增加了可重構(gòu)節(jié)點來抗重布線攻擊,并利用屏蔽層產(chǎn)生亞穩(wěn)態(tài)振蕩,通過種子采集等模塊對振蕩進行采樣獲取真隨機數(shù).屏蔽層分為檢測模式與隨機數(shù)產(chǎn)生模式,具體結(jié)構(gòu)如圖3所示.

圖3 主動屏蔽層系統(tǒng)
圖3中隨機數(shù)碼流生成模塊使用線性移位反饋寄存器(LFSR)結(jié)構(gòu),負(fù)責(zé)產(chǎn)生屏蔽層檢測碼流與重構(gòu)節(jié)點隨機控制信號;種子采樣部分為D觸發(fā)器組與異或網(wǎng)絡(luò),用來實現(xiàn)屏蔽層真隨機數(shù)生成器功能,在隨機數(shù)產(chǎn)生模式下收集屏蔽層環(huán)振產(chǎn)生的真隨機數(shù)并暫存,之后將其作為種子發(fā)送給LFSR與密碼算法模塊;可重構(gòu)節(jié)點為設(shè)計的核心部分,其隨機重構(gòu)功能用來抗重布線攻擊,加密功能用來混淆出入節(jié)點的數(shù)據(jù)流.密碼算法模塊為4組Trivium算法電路,在本文中作為被保護電路,算法也使用真隨機數(shù)種子產(chǎn)生密碼隨機數(shù)序列,通入可重構(gòu)節(jié)點對屏蔽層中檢測碼流進行進一步加密;檢測電路對屏蔽層中的數(shù)據(jù)流進行解密與比對,輸出報警信號.
與主動屏蔽層系統(tǒng)配套的電路結(jié)構(gòu)需要較小的資源占用,并且在每次上電后其檢測碼流生成結(jié)構(gòu)都可以產(chǎn)生不同的數(shù)據(jù)流.真隨機數(shù)生成器作為安全芯片中的重要結(jié)構(gòu),可以達到上電后隨機數(shù)據(jù)狀態(tài)的效果.
在數(shù)字電路中通常使用低頻時鐘信號控制D觸發(fā)器,對奇數(shù)個反相器形成的環(huán)形振蕩器的高頻振蕩進行采樣來獲取真隨機數(shù).該方法簡單、容易實現(xiàn),但缺點明顯,此方法得到的真隨機數(shù)統(tǒng)計屬性受環(huán)振頻率與時鐘頻率的影響較大,熵值較低,通常需要較多的后處理電路來滿足高質(zhì)量隨機數(shù)的使用要求.帶有反饋的環(huán)形振蕩器能夠產(chǎn)生高熵不穩(wěn)定振蕩狀態(tài),Dichtl 等[8]在2006年首先提出了兩種帶有反饋連接的Fibonacci環(huán)振和Galois環(huán)振的概念,其具體結(jié)構(gòu)如圖4所示.

圖4 Galois和Fibonacci環(huán)形振蕩器
圖中fi決定環(huán)振的反饋連接,fi=1時反饋開關(guān)閉合,fi=0反饋連接斷開,可以用公式表示為
(8)
式中n為反相器個數(shù).為保證輸出不會有固定不變的狀態(tài),反饋多項式需要滿足條件:
f(x)=(1+x)h(x),
(9)
f(x)可以被1+x整除,但h(x)不可以被1+x整除[9].Fibonacci環(huán)振的級數(shù)不能為2且h(1)必須為1,Galois環(huán)振的級數(shù)只能是奇數(shù).
Fibonacci環(huán)振的反饋是每級反相器的輸出分別異或后送入第1級,而Galois環(huán)振的反饋是第1級輸出分別與每一級的輸入異或,Galois環(huán)振這種異或與反相器在同側(cè)相間隔的電路特點與本文的可重構(gòu)節(jié)點設(shè)計匹配,并且符合屏蔽層驅(qū)動的設(shè)計思路.因此,本文改進了主動屏蔽層結(jié)構(gòu),使其集成Galois環(huán)形振蕩器,作為數(shù)字真隨機數(shù)的熵源結(jié)構(gòu).采用多路選擇器與開關(guān)控制反饋連接的通斷,實際電路中根據(jù)效果選擇最大熵值的環(huán)振反饋連接,屏蔽層Galois環(huán)振的剖面示意圖如圖5所示.

圖5 主動屏蔽層Galois環(huán)形振蕩器
圖5中R為可重構(gòu)節(jié)點,本文將主動屏蔽層的驅(qū)動端口,分別替換為異或門與反相器,并與節(jié)點相連.系統(tǒng)會根據(jù)不同工作狀態(tài)下的控制信號,使用MUXn-1,MUXn-2等多路選擇器,選擇通過異或門注入屏蔽層中的數(shù)據(jù)類型.MUX的控制信號為0時,屏蔽層為檢測模式,異或門作為異或加密的運算模塊接收密碼算法產(chǎn)生的密碼隨機數(shù)流,屏蔽層通道中輸入檢測碼流,可重構(gòu)節(jié)點R對通道之間進行隨機重構(gòu);控制信號為1時,屏蔽層為隨機數(shù)產(chǎn)生模式,每個通道走線的輸出都通過一個反相器Inv-c連接到自己的輸入端,在隨機數(shù)產(chǎn)生模式下節(jié)點不對屏蔽層進行重構(gòu),作為開關(guān)直接導(dǎo)通,異或門作為反饋輸入,由另一組選通開關(guān)根據(jù)給定的反饋多項式?jīng)Q定fi是否閉合.
屏蔽層的每個通道都形成了一個Galois型環(huán)振結(jié)構(gòu),通過采樣時鐘對環(huán)振進行采樣,并將每個通道的采樣輸出進行異或,就可以得到較高熵值的真隨機數(shù)種子.主動屏蔽層真隨機生成器結(jié)構(gòu)如圖6表示,L1~L8為8通道的主動屏蔽層形成了多個反饋連接不同的Galois環(huán)振,分別用D觸發(fā)器對其采樣,并對獲得的采樣數(shù)據(jù)進行異或,最終得到真隨機數(shù)輸出TRNG_OUT信號.

圖6 主動屏蔽層真隨機數(shù)生成器
Galois環(huán)形振蕩器在反相器環(huán)振的基礎(chǔ)上引入了反饋抽頭結(jié)構(gòu),結(jié)合了數(shù)學(xué)方法[10],得到了較為混沌的振蕩特性.復(fù)用屏蔽層的Galois型環(huán)振真隨機數(shù)電路,符合在小面積下能產(chǎn)生高熵值隨機數(shù)的設(shè)計要求.
可重構(gòu)節(jié)點由切換單元和加密單元構(gòu)成.切換單元包含多組多路選擇器,根據(jù)控制信號碼流和預(yù)設(shè)的通道準(zhǔn)入規(guī)則選擇節(jié)點兩端屏蔽層金屬線的連接順序.加密單元復(fù)用主動屏蔽層的驅(qū)動異或門,其作用是在屏蔽層連接順序改變后,對每條線的數(shù)據(jù)進行異或加密,以防止長時間的微探針攻擊觀測到并行金屬線通道的切換順序.
圖7是重構(gòu)節(jié)點的結(jié)構(gòu)圖,I,O分別為流入與流出重構(gòu)節(jié)點的屏蔽層數(shù)據(jù)流,C1C2C3為發(fā)送端的LFSR產(chǎn)生的3 bit隨機數(shù)控制信號,K[7:0]為密碼算法模塊產(chǎn)生的密鑰隨機數(shù)流.檢測模式下,屏蔽層數(shù)據(jù)首先由切換單元進行通道切換,通道中的數(shù)據(jù)根據(jù)控制信號進行多次隨機更換“信息通路”,之后進入加密單元與密鑰隨機數(shù)流進行異或加密,最后輸出重構(gòu)單元進入屏蔽層中繼續(xù)傳輸.

圖7 可重構(gòu)節(jié)點電路原理圖
本文中密碼算法模塊利用真隨機數(shù)種子,產(chǎn)生高質(zhì)量隨機數(shù)密碼序列,提供給可重構(gòu)節(jié)點的加密單元作為異或加密的密鑰流,該隨機數(shù)也可以供芯片其他模塊使用.模塊使用的Trivium算法,是由Canniàre等[11]提出的eSTREAM計劃入選流密碼算法之一,其結(jié)構(gòu)由3個非線性移位反饋寄存器(NFSR)組成,長度分別為93、84、111 bit,如圖8所示.

圖8 Trivium算法電路結(jié)構(gòu)
Trivium算法的密鑰輸出來自多個級聯(lián)的NFSR,密鑰輸出部分對其狀態(tài)轉(zhuǎn)移周期無影響,因此本文對該算法的密鑰輸出部分進行了修改,使用后續(xù)電路分別提取了A,C寄存器的59~66 bit,B寄存器的61~69 bit,與原寄存器的輸出部分進行異或,以獲得多通道隨機數(shù)密鑰輸出.
本文中采用16位LFSR并使用本原多項式進行連接,產(chǎn)生的狀態(tài)序列包含65 535個時鐘周期.但如果攻擊者獲取了整個序列,便可以推算出LFSR的初始狀態(tài),因此本文通過在狀態(tài)轉(zhuǎn)移序列的半周期中更換LFSR的種子,防止攻擊者進行長時間監(jiān)控屏蔽層獲取LFSR的反饋連接與初始狀態(tài).
這一過程體現(xiàn)在系統(tǒng)的工作時序中,由圖9所示.屏蔽層工作狀態(tài)由數(shù)個工作周期Tn組成,隨機數(shù)產(chǎn)生模式與檢測模式在工作周期內(nèi)分別對應(yīng)兩個時期:種子采集期Sn和攻擊檢測期Cn.在種子采集期中,采樣時鐘使能信號EN_SAMPLE置高,高頻隨機數(shù)采樣時鐘CLK_SAMPLE啟動,MUX選擇可重構(gòu)節(jié)點的異或門接入反饋連接,屏蔽層進入環(huán)振狀態(tài)并開始真隨機數(shù)生成.在采樣到足夠數(shù)量的真隨機數(shù)種子后,EN_SAMPLE信號置低,采樣時鐘關(guān)閉,降低系統(tǒng)功耗.同時真隨機數(shù)種子被賦給屏蔽層發(fā)送端的LFSR與Trivium算法模塊,系統(tǒng)此時進入攻擊檢測期,采樣模塊關(guān)閉,其余模塊在低頻檢測時鐘CLK_COMP下工作,主動屏蔽層中開始通入檢測碼流,可重構(gòu)節(jié)點對其進行重構(gòu)與加密.在經(jīng)過較多的時鐘周期數(shù)后,攻擊檢測期結(jié)束,系統(tǒng)開始重新采集屏蔽層隨機數(shù)種子,進入新一輪工作周期Tn+1.

圖9 系統(tǒng)工作時序
在系統(tǒng)首次上電后,會進入初始化狀態(tài),此時為種子采集期S1,采樣到的種子中,有160 bit提供給密碼算法模塊,用來產(chǎn)生密鑰隨機數(shù)流. Trivium算法的周期由經(jīng)驗公式[12]表明,包含一個周期長度不小于296-3-1的隨機序列;其次,如果該算法的初始值足夠隨機,則生成的序列周期長度為2288,因此可以近似的認(rèn)為在有限的觀察時間內(nèi),該算法是足夠安全的.
本文中,系統(tǒng)的檢測時鐘周期長度為采樣時鐘的1 000倍,由于中途只更換LFSR的種子,因此除初始采集期S1稍長外,每個采集期Sn僅需占用較少的時間進行采集,不影響屏蔽層的檢測效果.
根據(jù)電路原理圖,使用SMIC0.18 μm工藝實現(xiàn)了8通道主動屏蔽層設(shè)計,完成可重構(gòu)節(jié)點的布置與真隨機數(shù)采樣部分的搭建.利用蒙特卡洛分析和傳輸噪聲分析的方法,對真隨機數(shù)種子生成器進行了仿真.圖10為真隨機數(shù)生成器的瞬態(tài)仿真結(jié)果,證明在不同的噪聲環(huán)境下TRNG有不同的輸出曲線.圖11是蒙特卡洛仿真結(jié)果圖,表示的是環(huán)振在2 us時的電壓分布,其輸出處于亞穩(wěn)態(tài),有較高的熵值.

圖10 真隨機數(shù)仿真結(jié)果

圖11 蒙特卡洛仿真結(jié)果
在真隨機數(shù)采樣期間,平均功耗為6.123 6 mW.不同噪聲頻率下得到的16位隨機數(shù)種子部分輸出結(jié)果見表1所示,表中噪聲種子是Spectre傳輸噪聲分析工具噪聲產(chǎn)生器的初始值,可以用于生成不同的噪聲狀態(tài),利用同一個種子產(chǎn)生的噪聲可以被復(fù)現(xiàn)[13].

表1 不同噪聲環(huán)境真隨機數(shù)種子
得到的種子通過后處理并使用Trivium密碼算法產(chǎn)生高質(zhì)量真隨機數(shù)序列,對生成的8組10 M數(shù)據(jù)量的隨機數(shù)進行NIST SP800-22測試[14],輸出P值大于0.000 1即可認(rèn)為該項測試通過.測試結(jié)果見表2,產(chǎn)生的隨機數(shù)可以通過測試,且每項測試的通過率較高.

表2 隨機數(shù)NIST測試結(jié)果
根據(jù)系統(tǒng)原理,使用Verilog硬件描述語言對系統(tǒng)數(shù)字電路進行自頂向下的設(shè)計,利用AMS工具對數(shù)字和模擬部分進行混合后仿,得到系統(tǒng)的運行仿真結(jié)果如圖12、13所示.
圖12中顯示的是系統(tǒng)的第1個周期T1中種子采集期S1和攻擊檢測期C1,采集到的真隨機數(shù)在采樣使能信號en_sample置低后被賦予給seedl和KEY信號,作為LFSR和密碼算法起始種子.采樣時鐘CLK_SAMPLE額外工作了一段時間是為了滿足Trivium算法的初始化過程,之后采樣時鐘關(guān)閉,系統(tǒng)進入攻擊檢測期C1.圖13中所示為系統(tǒng)工作中的一個種子采集期Cn,圖13中B信號為主動屏蔽層通道輸出,可以清晰的看出通過采樣時鐘對屏蔽層中的亞穩(wěn)態(tài)震蕩進行了采樣,輸出隨機數(shù)為TRNG_OUT信號,并獲得了新的隨機數(shù)種子seedl,在下一個CLK_COMP信號的上升沿被賦給主動屏蔽層的輸入lfsr_out信號.

圖12 起始階段

圖13 工作過程中種子采集階段
在完成芯片后端設(shè)計之后,得到系統(tǒng)的各個模塊資源占用見表3. 其中,攻擊檢測與重構(gòu)節(jié)點部分占總面積的20%,插入式重構(gòu)節(jié)點與真隨機數(shù)采樣結(jié)構(gòu)占比2.2%,對于更大面積的芯片,重構(gòu)節(jié)點部分將有更小的資源占比.

表3 模塊資源消耗
插入重構(gòu)節(jié)點與真隨機數(shù)模塊前后電路指標(biāo)對比見表4.增加的主動屏蔽層節(jié)點,只占用較小的系統(tǒng)資源,并獲得較高的防護效果.

表4 插入重構(gòu)節(jié)點與真隨機數(shù)模塊前后電路指標(biāo)對比
芯片版圖如圖14所示,紅色區(qū)域為芯片主動屏蔽層,框圖為芯片各主要模塊的布局,箭頭為各模塊之間的端口連接關(guān)系,圖中橙色圓圈為重構(gòu)節(jié)點的布置位置,放大的圖中可以看到可重構(gòu)節(jié)點屏蔽層驅(qū)動器的具體電路版圖.

圖14 抗物理攻擊主動屏蔽層系統(tǒng)版圖
表5列出了本文與部分已發(fā)表設(shè)計的對比,本文在屏蔽層圖形上使用了多通道隨機哈密頓回路填充,相較于迂回、平行等簡單走線方式安全性較高,相較于文獻[15]中的單通道多層哈密頓回路,在結(jié)構(gòu)上占用面積較少,且容易布置,適用范圍較廣.相較于其他文獻中的可重構(gòu)節(jié)點布置方式,本文的節(jié)點位置較為自由,并且不會引入未通入信號的屏蔽層走線.對比其他文獻中的使用偽隨機數(shù)對屏蔽層數(shù)據(jù)進行加密的方法,本設(shè)計中使用屏蔽層產(chǎn)生的真隨機數(shù)密碼,再重新加密主動屏蔽層中的檢測碼流,資源占用少并且安全性較高.此外,本文在功耗和面積上控制的較為均衡.由此可見,本文較其他設(shè)計在綜合性能上有明顯的提升.

表5 本文與其他設(shè)計指標(biāo)對比
1)本文使用重構(gòu)和復(fù)用的方法,設(shè)計了一種隨機重構(gòu)的改良型主動屏蔽層控制電路.在主動屏蔽層中插入可重構(gòu)節(jié)點,使屏蔽層中數(shù)據(jù)重構(gòu)與加密.
2)本文復(fù)用通道與節(jié)點驅(qū)動,在占用較小電路資源的基礎(chǔ)上,實現(xiàn)了能產(chǎn)生較高熵值的真隨機數(shù)生成器,并利用該真隨機數(shù)作為種子產(chǎn)生密碼序列,對芯片進行進一步防護.
3)本文的電路功耗和面積較小,芯片在加入可重構(gòu)節(jié)點之后資源開銷無明顯增加.電路適用于多通道主動屏蔽層,能為小硬件開銷的芯片提供高等級的安全防護.