本應(yīng)用筆記介紹了FPGA (現(xiàn)場可編程門陣列)及其如何保護(hù)系統(tǒng)的關(guān)鍵功能和知識產(chǎn)權(quán)(IP)。本文探討了IP保護(hù)的各種途徑。SHA-1質(zhì)詢-響應(yīng)認(rèn)證被認(rèn)為是最安全的方法。本文提出了一種能夠保護(hù)基于SRAM的FPGA設(shè)計IP的高性價比認(rèn)證方案。介紹了DS28E01和DS28CN01器件的特性。
在過去20年中,F(xiàn)PGA (現(xiàn)場可編程門陣列)已經(jīng)從原型開發(fā)工具演變?yōu)橄M和工業(yè)應(yīng)用的靈活解決方案。隨著FPGA邏輯復(fù)雜性從幾千個邏輯門升至數(shù)百萬個邏輯門,器件可以容納更多的系統(tǒng)關(guān)鍵功能(即知識產(chǎn)權(quán),IP)。
如今,設(shè)計者可以選擇FPGA,利用各種技術(shù)保護(hù)配置數(shù)據(jù)—OTP (一次性可編程)反熔絲、基于閃存的可重復(fù)編程存儲單元以及可重復(fù)編程、基于SRAM的可配置邏輯單元。由于配置數(shù)據(jù)存儲于FPGA芯片,并且芯片具有防止存儲數(shù)據(jù)讀取的機(jī)制,反熔絲和基于閃存的解決方案都提供了相對安全的方案。此外,除非采用非常復(fù)雜的方法,例如解包、微探針、電壓對比電子束顯微鏡和聚焦離子束(FIB)探測,來“竊聽”硅體并使安全機(jī)制失效1,否則數(shù)據(jù)遭到破壞的可能性非常低(關(guān)于FPGA的簡要背景資料,請參考附錄A,F(xiàn)PGA工藝及相關(guān)事項)。
然而,基于靜態(tài)RAM (SRAM)的FPGA幾乎沒有任何安全措施保護(hù)IP (配置數(shù)據(jù)),防止數(shù)據(jù)被非法復(fù)制和剽竊。原因在于,一旦加載數(shù)據(jù),則被存儲于SRAM存儲器單元,而該存儲器很容易被偵測確定其內(nèi)容。此外,缺乏一定的安全機(jī)制保護(hù)加載到芯片之前的配置數(shù)據(jù),該數(shù)據(jù)對各種偵測措施敞開了大門。由于比特流通常儲存在獨立的存儲器芯片,并由FPGA在上電加載配置的模式下進(jìn)行讀取,所以有可能遍歷數(shù)據(jù)。盡管如此,還是可以找到一些簡單方式保護(hù)數(shù)據(jù),防止人為復(fù)制配置數(shù)據(jù)、剽竊IP。
基于SRAM的FPGA的弱點
由于兩芯片方案(FPGA和配置存儲器)中,配置數(shù)據(jù)比特流在上電階段暴露在外部,而FPGA不能分辨比特流是“真實數(shù)據(jù)”還是非法獲得的復(fù)本,配置數(shù)據(jù)所包含的IP完全不受保護(hù)。
通過密鑰和比特流加密可以部分地解決這個問題。但是,由于這種保護(hù)方法成本高昂,只能用于高端FPGA,并不適合消費類產(chǎn)品。
沒有保護(hù)
在沒有比特流加密的情況下,基于SRAM的FPGA設(shè)計特別容易被盜版??梢圆东@配置比特流,并將其重新編程寫入配置PROM,或簡單回放,對原始設(shè)計進(jìn)行克隆。從而使克隆產(chǎn)品與原版產(chǎn)品競爭,竊取研究和開發(fā)投資,降低原制造商的市場份額和效益。
即使沒有加密,反熔絲或基于閃存的FPGA也比基于SRAM的FPGA更加安全,因為配置數(shù)據(jù)沒有暴露在外部。但如果由裝配廠編程FPGA,裝配廠即有可能對更多的設(shè)備(多于授權(quán)數(shù)量)進(jìn)行編程并自行銷售,無需投入任何研發(fā)成本。這種非授權(quán)器件與授權(quán)器件很難區(qū)分,會嚴(yán)重影響公司效益。
在一定程度上提高基于SRAM的FPGA設(shè)計安全性的一種方法是:采用多芯片封裝,并將非易失存儲器與FPGA封裝在一起。但如果有人打開封裝,存儲器和FPGA之間的數(shù)據(jù)接口仍然會暴露在外部,配置模式的安全性仍有可能受到威脅。
配置比特流的結(jié)構(gòu)(即數(shù)據(jù)位的順序、如何編碼和識別)基本沒有正式的文件說明。盡管理論上可行,但比特流的模糊度、復(fù)雜性及其尺寸,使得逆向工程非常困難且耗時1。如果逆向工程成功,即使只對配置數(shù)據(jù)流進(jìn)行部分逆向工程,仍有可能非法侵入機(jī)頂盒以竊取服務(wù)或篡改交通工具的動力設(shè)置,導(dǎo)致原廠的責(zé)任問題。
設(shè)計挑戰(zhàn)
為了防止系統(tǒng)成本劇增,設(shè)計人員還必須繼續(xù)使用不帶加密的基于SRAM的FPGA。但他們必須找到IP保護(hù)的方法,并將安全措施的成本控制在盡可能低的等級,而且不會對生產(chǎn)流程造成大的影響。
把用于安全保護(hù)的硬件電路裝入電路板允許的空間而且不會增加整體功耗,這一點對于設(shè)計非常重要。并且,安全性對于FPGA資源(例如:引腳和邏輯單元的數(shù)量)的影響必須盡可能小。
響應(yīng):認(rèn)證
認(rèn)證過程的目的是在兩個或多個實體之間建立標(biāo)識驗證。基于密鑰的認(rèn)證方法是把密鑰和被驗證數(shù)據(jù)(即“信息”)作為輸入,計算信息驗證代碼(MAC)。然后將 MAC附加在信息中,信息接收方進(jìn)行相同的計算并將其計算的MAC與隨信息傳送的MAC進(jìn)行比較。如果兩個MAC一致,則判斷信息可靠。
該基本模型有一個缺點:被攔截的消息可以由非驗證發(fā)出方隨后重新發(fā)送,并且被誤認(rèn)為是經(jīng)過認(rèn)證的。如果MAC計算包含了由MAC接收方選擇的隨機(jī)質(zhì)詢,則將避免這種簡單的“重放攻擊”的成功幾率。圖1所示為該模式的通用概念。質(zhì)詢碼越長,潛在的重放就越難以記錄所有可能的響應(yīng)。
圖1. 質(zhì)詢-響應(yīng)認(rèn)證過程驗證MAC發(fā)送方的真實性
為了檢驗MAC發(fā)送方的真實性,MAC接收方產(chǎn)生一個隨機(jī)數(shù)字并將其作為質(zhì)詢發(fā)送到發(fā)送方。然后,MAC發(fā)送方必須根據(jù)密鑰、信息和接收方的質(zhì)詢計算新的 MAC。隨后,發(fā)送方將計算結(jié)果返回給接收方。如果發(fā)送方被證實能夠計算任何質(zhì)詢碼的有效MAC,則可以確認(rèn)其已知密碼并被視為可靠。這個過程稱為質(zhì)詢- 響應(yīng)認(rèn)證(參見圖1)。
用于計算MAC的算法有多種,例如Gost-Hash、HAS-160、HAVAL、MDC-2、MD2、 MD4、MD5、RIPEMD、SHA系列、Tiger和WHIRLPOOL。經(jīng)過仔細(xì)審議并被國際認(rèn)可的一種單向散列算法是SHA-1,這種算法由美國國家標(biāo)準(zhǔn)技術(shù)研究所(NIST)開發(fā)。SHA-1已經(jīng)納入國際標(biāo)準(zhǔn)ISO/IEC 10118-3:2004。
通過NIST網(wǎng)站可以查詢SHA-1算法的數(shù)學(xué)依據(jù)2,SHA-1算法具有以下顯著特征:
不可逆:確定與MAC對應(yīng)的輸入在計算上是不可行的。
防沖突:不能找出多個可產(chǎn)生給定MAC的輸入消息。
高雪崩效應(yīng):輸入的任何改變都將導(dǎo)致MAC結(jié)果的重大改變。
由于上述原因,以及國際上對該算法的認(rèn)定,SHA-1成為安全存儲器質(zhì)詢-響應(yīng)認(rèn)證的最佳選擇。
硬件實現(xiàn)
質(zhì)詢-響應(yīng)認(rèn)證方案可以作為基于SRAM的FPGA系統(tǒng)設(shè)計的一部分實施,這種方式成本低廉(圖2)。該例中,安全存儲器件僅通過一個引腳連接到配置為雙向(開漏)通信的FPGA引腳。連
接至VDD的電阻為安全存儲器供電并為漏極開路通信提供偏置。Maxim的DS28E01 1Kb保護(hù)型1-Wire EEPROM帶有SHA-1引擎,非常適合這種設(shè)計。該器件包含一個SHA-1引擎、128字節(jié)用戶存儲器、可用于芯片內(nèi)部操作但不能從外部讀取的密鑰以及唯一的、不可更改的識別碼。
圖2. 該簡化框圖中,利用一片1-Wire安全存儲器保護(hù)FPGA。
DS28E01的1-Wire接口將通信通道減少至單個FPGA引腳,用于質(zhì)詢-響應(yīng)認(rèn)證。因為FPGA的I/O引腳常常受限,這種安全方案對系統(tǒng)的影響最小。另一種可構(gòu)建的實施方案是利用FPGA實現(xiàn)通用I2C接口,通過DS28CN01 (等效于DS28E01的I2C器件)進(jìn)行認(rèn)證,或通過在小規(guī)模ASIC或CPLD中實現(xiàn)SHA-1引擎和其它功能。但是,如果安全保護(hù)是器件的唯一功能,使用ASIC會大大增加成本。
為了加強(qiáng)DS28E01的安全特性,F(xiàn)PGA必須能夠進(jìn)行以下操作:
產(chǎn)生質(zhì)詢隨機(jī)數(shù)(片上隨機(jī)數(shù)發(fā)生器通常產(chǎn)生偽隨機(jī)數(shù),不具備和真隨機(jī)數(shù)同等的安全性)。
已知用于內(nèi)部操作的安全密鑰,但不能從外部偵測。
計算包括密匙、隨機(jī)數(shù)及附加數(shù)據(jù)在內(nèi)的SHA-1 MAC,類似于安全存儲器。
逐字節(jié)比較數(shù)據(jù),使用FPGA實現(xiàn)CPU的異或功能。
關(guān)于SHA-1 MAC計算的詳細(xì)信息,請查詢安全散列標(biāo)準(zhǔn)2。應(yīng)用筆記3675:“保護(hù)您的研發(fā)成果—雙向認(rèn)證及軟件功能保護(hù)”給出了安全存儲器架構(gòu)及其原理的技術(shù)細(xì)節(jié)。
一些主要的FPGA供應(yīng)商提供類似于微控制器功能的宏。Xilinx?微控制器功能占用192個邏輯單元,這僅僅是一片Spartan?-3 XC3S50器件的11%。Altera?器件中相似的微處理器占用850個邏輯單元,相當(dāng)于EP2C5 (Cyclone? II系列的最小規(guī)模)的18.5%。
上電時,F(xiàn)PGA從其配置存儲器開始自行配置。當(dāng)前的FPGA微控制器功能生效并執(zhí)行質(zhì)詢-響應(yīng)認(rèn)證,也稱為敵我識別(IFF),這個識別過程包含以下步驟:
產(chǎn)生一個隨機(jī)數(shù),將其作為質(zhì)詢(Q)發(fā)送至安全存儲器。
通知安全存儲器根據(jù)其密匙、質(zhì)詢、唯一識別碼及其它固定數(shù)據(jù)計算SHA-1 MAC。
根據(jù)相同輸入、安全存儲器使用的常數(shù)以及FPGA密鑰計算SHA-1 MAC,即所預(yù)期的響應(yīng)(MAC1)。
將安全存儲器計算的SHA-1 MAC (讀取認(rèn)證MAC)作為響應(yīng)(MAC2)與所預(yù)期的響應(yīng)(MAC1)進(jìn)行比較。
如果MAC1、MAC2一致,F(xiàn)PGA將其環(huán)境認(rèn)定為“朋友”,因為它顯然知道密鑰。FPGA轉(zhuǎn)變?yōu)檎9ぷ?,激?執(zhí)行所有配置編碼定義的功能。但是,如果兩個MAC不同,環(huán)境則必被認(rèn)定為“敵人”。這種情況下,F(xiàn)PGA執(zhí)行應(yīng)用相關(guān)的操作而不是正常工作。
為什么該過程是安全的?
除了SHA-1提供的固有安全性以外,上述IFF認(rèn)證過程的主要安全單元是密鑰,安全存儲器或FPGA都不能對其進(jìn)行讀取。并且,因為比特流中的數(shù)據(jù)雜亂無章,當(dāng)FPGA自我配置時,對配置流的竊聽不會泄露密鑰。考慮到數(shù)據(jù)字節(jié)的尺寸,對比特流進(jìn)行逆向工程以推測設(shè)計架構(gòu)非常耗時,幾乎不可能完成該項任務(wù)。
另一個至關(guān)重要的安全措施是質(zhì)詢的隨機(jī)性。可預(yù)測的質(zhì)詢(常數(shù))產(chǎn)生可預(yù)測的響應(yīng),該過程可以記錄一次,隨后由模擬安全存儲器的微控制器重放。利用可預(yù)測的質(zhì)詢碼,微控制器可以成功地讓FPGA將其認(rèn)定為“朋友”。IFF方法中質(zhì)詢碼的隨機(jī)性消除了上述憂慮。
如果每個安全存儲器中的密鑰都是與器件相關(guān)的,則可以進(jìn)一步提高安全性:每個具體密鑰都是利用主控密鑰、SHA-1存儲器的唯一識別碼以及相關(guān)的常數(shù)計算得到。如果具體個體密碼被公開,則只影響單個器件,而非整個系統(tǒng)的安全性。為了支持個體密鑰,F(xiàn)PGA需要知道主密鑰并在計算預(yù)期響應(yīng)之前首先計算1- Wire SHA-1存儲器芯片的密鑰。
邏輯問題
對于要構(gòu)建的所有單元,開發(fā)商(OEM)必須向利用嵌入式FPGA制造產(chǎn)品的合同廠商(CM)提供適當(dāng)?shù)念A(yù)編程安全存儲器。這種一對一的關(guān)系限制了CM能夠構(gòu)建的授權(quán)設(shè)備的數(shù)量。為了防止CM竊取安全存儲器 (例如:聲稱由于某些內(nèi)存的編程不正確,需要更多內(nèi)存),建議OEM對安全密鑰設(shè)置寫保護(hù)。
即使其沒有寫保護(hù),也無需擔(dān)心1-Wire EEPROM數(shù)據(jù)存儲器的安全性。設(shè)計保證只有知道密鑰的人才能夠更改該存儲器數(shù)據(jù)。這一附加作用很受歡迎,因為該功能使應(yīng)用設(shè)計者可以進(jìn)行軟件功能管理—FPGA可以根據(jù)從SHA-1安全存儲器讀取的數(shù)據(jù)激活/禁止某些功能。
OEM 并不總是在將存儲器件運送給CM之前先對其進(jìn)行預(yù)編程。為了解決這一問題,安全存儲器制造商可以為OEM設(shè)置SHA-1密鑰和EEPROM陣列預(yù)編程服務(wù)。Maxim為您提供這樣的服務(wù),根據(jù)OEM的輸入,在工廠登記和配置安全存儲器,然后將其直接運送給CM。該服務(wù)具有以下主要優(yōu)勢:
消除OEM向CM透露密鑰的必要性。
避免了OEM實施自己預(yù)編程系統(tǒng)的必要性。
只有OEM授權(quán)的第三方可以訪問注冊器件。
供應(yīng)商保存運輸數(shù)量的記錄,以備OEM審核。
方案驗證
本文介紹的FPGA安全認(rèn)證方案已經(jīng)在Altera和Xilinx產(chǎn)品上進(jìn)行了測試,Altera在其白皮書“An FPGA Design Security Solution Using a Secure Memory Device”中總結(jié)道:“即使配置數(shù)據(jù)比特流被捕獲,這種FPGA安全性設(shè)計的IFF方案也能防止Altera FPGA設(shè)計被克隆。只有在FPGA和安全存儲器的散列算法計算結(jié)果相一致時,用戶設(shè)計才會有效。這種安全設(shè)計可有效保護(hù)FPGA設(shè)計者的IP”3。
同樣,Xilinx也在其應(yīng)用筆記XAPP780中聲明:“該系統(tǒng)的安全性建立在密鑰和安全環(huán)境中加載密鑰的安全性基礎(chǔ)上。整個參考設(shè)計,除密鑰外,都滿足得到普遍應(yīng)用的Kerckhoffs原理。應(yīng)用筆記提供的編程和認(rèn)證的簡單接口簡化了防盜版保護(hù)方案的實施”4 (Flemish語言學(xué)家Auguste Kerckhoffs在其關(guān)于軍事加密領(lǐng)域極具創(chuàng)造性的文章中指出:除了依靠模糊性之外,安全應(yīng)該依靠密鑰的力量。他主張,遭到入侵時只需要更換密鑰,而不是整個系統(tǒng))。
結(jié)論
只需添加一片類似于DS28E01的低成本芯片并更新FPGA配置碼,即可實現(xiàn)IP保護(hù),避免設(shè)計被盜版。利用1-Wire接口,只需將FPGA的一個引腳用于安全性設(shè)計。如果FPGA有更多引腳,則可使用I2C接口的安全存儲器,替代1-Wire設(shè)計。設(shè)計中還需對FPGA配置以及嵌入式微控制器的控制軟件進(jìn)行某些修改。
可以定購固定密鑰或計算密鑰及特殊應(yīng)用數(shù)據(jù)的安全存儲器。然后將預(yù)編程器件僅發(fā)送給OEM,或發(fā)送給經(jīng)過授權(quán)的CM。CM只能生產(chǎn)、提供與預(yù)編程器件相同數(shù)量的產(chǎn)品。
附錄A
FPGA工藝及相關(guān)事項
五家主流FPGA供應(yīng)商—Actel?、Altera、Lattice Semiconductor Corporation?、QuickLogic?和Xilinx—占有將近98%的市場份額。其余2%份額則屬于幾家提供類似FPGA功能的特殊供應(yīng)商。
所有這些廠商都采用外包運作模式,并依靠***、日本、新加坡或德國的晶圓加工廠來為其生產(chǎn)晶片。所以,他們僅僅具有操作與其工廠相關(guān)的技術(shù)部分的權(quán)限,例如利用SRAM功能或高密度浮柵存儲器陣列的快速邏輯。通過充分發(fā)揮標(biāo)準(zhǔn)加工流程的作用,F(xiàn)PGA公司能夠保持其制造成本非常低廉。
然而,Actel和QuickLogic與其加工廠一起將知識產(chǎn)權(quán)反熔絲技術(shù)集成在加工流程中。反熔絲技術(shù)具有某些獨特優(yōu)點:良好的安全性、小單元、耐輻射,當(dāng)然還有非易失性。反熔絲技術(shù)存在一個局限性。與基于閃存的器件不同,一旦配置了單元,將不能對其進(jìn)行重新配置(正如“熔絲”的字面意思)。另外,盡管反熔絲工藝比基于SRAM的FPGA更復(fù)雜,但是其單元更小,導(dǎo)致具有邏輯能力的芯片更小,成本更低。
很長時間以來,SRAM和閃存技術(shù)是相互排斥的;他們不能被方便地集成到一個芯片中。但是這種情況已經(jīng)改變了,由于最近市場需求推動了半導(dǎo)體技術(shù)的發(fā)展。小型競爭者(Actel、Lattice Semiconductor和QuickLogic)現(xiàn)在提供基于閃存的單芯片F(xiàn)PGA (分別為ProASIC、Lattice?XP2和PolarPro)。
例如,從2004年開始,Altera已經(jīng)開始提供基于閃存的 CPLD (MAXII),但是目前沒有將這項技術(shù)應(yīng)用于FPGA。Xilinx早在2007年就推出了基于閃存的FPGA的Spartan-3AN生產(chǎn)線,在單個封裝中安裝兩個芯片(FPGA和閃存)。但是Xilinx沒有單片的基于閃存的FPGA產(chǎn)品5。集成閃存的能力促進(jìn)了通過基于SRAM的FPGA使用外部配置內(nèi)存的IP安全性的改良。通過在一個芯片上進(jìn)行集成,使剽竊存儲器和可配置邏輯陣列之間傳輸?shù)臄?shù)據(jù)更加困難。
滿足所有這些安全要求的一個方法是在FPGA和安全存儲器之間采用質(zhì)詢-響應(yīng)數(shù)據(jù)交換(認(rèn)證)。安全存儲器芯片是十九世紀(jì)80年代后期的發(fā)明。它們首先廣泛應(yīng)用與付費電話卡,然后在十九世紀(jì)90年代應(yīng)用于銀行卡;如今它們是GSM手機(jī)中的重要部分(即SIM卡)。安全芯片卡和主系統(tǒng)之間的常用通信標(biāo)準(zhǔn)是I2C串行總線。
無論是為銀行還是電話應(yīng)用量身定制,安全存儲器用于通用目的都不可行。2000年當(dāng)Dallas Semiconductor (現(xiàn)在的Maxim Integrated Products)推出融合SHA-1散列算法的器件時,這種狀況才得以改變。繼第一代DS2432后又推出了增強(qiáng)型DS28E01。這些器件采用1-Wire接口,用于通信和供電。2007年推出的DS28CN01使用I2C接口,其他方面與DS28E01類似。
由于加工廠通常具有FPGA設(shè)計的詳盡知識,另一個需要考慮的關(guān)于IP安全性的方面是加工廠的誠信。為了防止所有權(quán)信息被非法竊取,信任或嚴(yán)格控制和監(jiān)督是必需的。國內(nèi)的加工廠比國外的加工廠要容易實現(xiàn)這一點。盡管如此,迄今為止,主要的加工廠在安全設(shè)計細(xì)節(jié)上表現(xiàn)了優(yōu)秀的誠信品質(zhì)。
評論
查看更多