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