基于FPGA的身份識別及防拷貝機制
摘要:本文描述了如何利用安全存儲器來完成身份識別功能,以實現(xiàn)對FPGA設計的保護。在完成身份識別特性的同時,還可實現(xiàn)軟功能管理和電路板識別功能。本文所涉及的FPGA均來自Xilinx, Inc.。
動機
開發(fā)電子產(chǎn)品,包括嵌入式FPGA的配置代碼,其成本是相當高的。因此應當防止未經(jīng)授權的機構對這些設計和配置進行拷貝,以保護設計者的知識產(chǎn)權。有很多種方法能實現(xiàn)這樣的保護功能。如在Xilinx Virtex-II®和Virtex-4®這類的高端FPGA中,支持對配置數(shù)據(jù)流的加密操作。這樣僅當FPGA中含有相同的密鑰時,這些數(shù)據(jù)流才可以工作。但是這種加密的方法對更為廣泛的、對成本很敏感的應用場合來說不甚合適。因此,這里利用另一種可行的身份識別法來防止意外拷貝。這種方法對所有FPGA家族都適用,包括低端的Xilinx Spartan-3®系列FPGA。
前提
在身份識別的概念中,要求FPGA的設計者實現(xiàn)與一個安全存儲器通訊的功能以進行認證工作。圖1是實現(xiàn)該設計的一個簡化原理圖。
圖1. Dallas Semiconductor的1-Wire存儲器件為FPGA提供安全控制和保護的簡化框圖
安全存儲芯片需滿足下列要求:
包含用于芯片內(nèi)部操作的密鑰,該密鑰對外界不可見。
包含一個唯一的不可改變的識別號??捎迷撟R別號來計算一個與設備綁定的密鑰。
能夠進行包含密鑰、隨機數(shù)(用做質詢機制)、唯一識別號及附加數(shù)據(jù)(常數(shù))在內(nèi)的HASH運算。
為了滿足應用所需的安全性,該HASH算法應滿足:
不可逆 - 要使從一個HASH結果逆推出與之相關的輸入數(shù)據(jù)在計算上是不可行的。
防“碰撞” - 使用另外一組輸入數(shù)據(jù)來產(chǎn)生一個相同的HASH結果是不可行的。
具有極高的雪崩效應 - 輸入數(shù)據(jù)的任何變化,都會極大的影響到HASH運算結果。
SHA-1算法 - 一個被全面而廣泛驗證的單向HASH算法可以滿足上述需求。該算法由美國國家標準技術局開發(fā),被ISO/IEC 10118-3:2004國際標準所采用。公眾可在NIST的網(wǎng)站上獲得該算法的數(shù)學原理。
DS28E01-100和DS2432是達拉斯半導體提供的內(nèi)置SHA-1算法的安全存儲器。這些器件的單總線接口非常適合此類應用,因為他們只需FPGA的一根引腳就可實現(xiàn)這些功能。
FPGA需實現(xiàn)下述功能,以利用這些器件的安全特性:
產(chǎn)生隨機數(shù)。
知道一個用于芯片內(nèi)部運算的密鑰,且該密鑰對外界不可見。
同安全存儲器一樣進行包含密鑰、隨機數(shù)、附加數(shù)據(jù)及器件識別號在內(nèi)的HASH計算。
比較HASH計算結果。
以上對FPGA的功能要求需要FPGA具備微控制器的性能,例如PicoBlaze™,它是Xilinx專用于Spartan-3,Virtex-II,Virtex-II Pro®,Virtex-4 FPGA和CoolRunner™-II CPLD的自由宏。PicoBlaze使用192個邏輯單元,僅為Spartan-3 XC3S200器件的5%。
技術的實現(xiàn)
當器件上電后,F(xiàn)PGA從Flash PROM中讀取數(shù)據(jù)對自己進行配置。配置完成后FPGA的微處理器功能被啟動并進行認證工作,該認證工作包括下列步驟:
產(chǎn)生一組隨機數(shù)并作為一個質詢機制(Q)發(fā)送給安全存儲器。
向安全存儲器發(fā)出指令,要求其計算一個基于密鑰、質詢機制、唯一識別號和固定附加數(shù)據(jù)的HASH結果。
FPGA本身計算一個基于其自身存儲密鑰、發(fā)送給安全存儲器的相同數(shù)據(jù)和固定附加數(shù)據(jù)的期望HASH結果(E)。
讀取由安全存儲器件所計算出的HASH結果作為響應(A)與期望HASH結果(E)做比較。
如果A和E相匹配,微控制器認為該電路是“友方”電路,因為它擁有正確的密鑰。此時FPGA進入正常工作狀態(tài),開啟/執(zhí)行其配置數(shù)據(jù)中的所有功能。如果A和E不匹配,則該電路被認為是一個“敵方”電路。此時FPGA進入非正常運行狀態(tài),只執(zhí)行有限的功能。
此過程的安全性何在?
對于每個制造單元,設計所有者(OEM)必須為制造帶有嵌入式FPGA產(chǎn)品的一方(制造商或CM)提供一個正確預編程的DS28E01-100或DS2432。這種一對一的關系限制了CM可以制造的授權產(chǎn)品的數(shù)量。為防止CM竄改安全存儲器(或許CM會以存儲器沒有被正確編程為由申請需要更多存儲器),因此建議對密鑰進行寫保護。即使不進行寫保護,也無需擔心單總線EEPROM中數(shù)據(jù)的安全性。在設計上就保證了,只有在知道密鑰的情況才可更改存儲器中的數(shù)據(jù)。由此產(chǎn)生一個很有用的附加功能,設計者可以利用此特性實現(xiàn)軟特性控制:FPGA可以根據(jù)從受SHA-1保護的存儲器中讀出的數(shù)據(jù)來開啟/關閉FPGA中的相應功能。
由OEM來對這類器件在分發(fā)到CM手上之前進行編程是不方便或不可行的。為了能較好的解決該問題,達拉斯半導體為OEM客戶提供SHA-1密鑰及EEPROM陣列的預編程服務。在這種服務下,達拉斯半導體的工廠按照客戶的要求對這類器件進行注冊和配置,然后Dallas Semiconductor直接把器件運到CM手里。這類服務的優(yōu)勢如下:
OEM無需向CM泄漏SHA-1密鑰。
OEM無需執(zhí)行系統(tǒng)預編程。
只有經(jīng)過OEM授權第三方才可以訪問登記的器件。
Dallas Semiconductor保存發(fā)送單元的數(shù)量紀錄,以備OEM查賬之需。
除了SHA-1本身所具有的安全特性,上述類型的身份識別認證的安全特性依賴于密鑰,而該密鑰不可能從安全存儲器,也不可能從FPGA中讀出。更進一步,該密鑰不可能在FPGA進行配置時,利用竊聽其配置數(shù)據(jù)流的手段而被發(fā)現(xiàn)。如同從一個可執(zhí)行代碼開始,嘗試破解Windows®應用程序的C++源代碼一樣,通過數(shù)據(jù)流的反向工程(在該過程中會試圖略去認證過程)來判斷系統(tǒng)設計,將是一個十分艱巨的任務。
另一個至關重要的安全因素是隨機質詢機制Q。一個可預測的質詢機制(如一個常數(shù))會引發(fā)一個可預測的響應結果,因為該結果可被記錄,然后由一個微控制器來取代安全存儲器。在這種可預測的情況下,微控制器可以讓FPGA認為其是一個“友方”電路。而隨機的質詢機制消除了這種可能性。
如果為每個器件綁定一個唯一密鑰就可以進一步提高安全級別。唯一密鑰由公共密鑰(主密鑰)、器件的唯一識別號和由應用所指定的常數(shù)計算得來。在這種條件下,如果有一個密鑰被破解,則只會有一個器件受到影響,從而不破壞整個系統(tǒng)的安全性。為實現(xiàn)這種功能,F(xiàn)PGA需要知道主密鑰,并在計算期望響應(E)之前計算存儲器所用的密鑰。
更多內(nèi)容
這里提供的信息在一個相當抽象的水平上給出了通過FPGA和安全存儲器實施的IFF認證的概念。 欲了解更多信息,請參見以下文件:
Dallas應用筆記3675,保護您的研發(fā)成果 - 雙向認證及軟件功能保護(安全和系統(tǒng)方面)。
Dallas應用筆記1201,白皮書8:1-Wire SHA-1概述(HASH,SHA-1,可信任令牌,交易細節(jié),信息和產(chǎn)品數(shù)據(jù)手冊的進一步鏈接)。
XILINX應用筆記XAPP780, FPGA IFF Copy Protection Using Dallas Semiconductor/Maxim DS2432 Secure EEPROMs (概念的成功實施,如何用FPGA執(zhí)行的詳細資料)。
安全散列標準 (English only),聯(lián)邦信息處理標準出版物180-1。
Dallas Semiconductor應用筆記178,利用1-Wire產(chǎn)品標識印刷電路板(概念,定義數(shù)據(jù),外部測點)。
Dallas Semiconductor應用筆記3522,白皮書9: SHA-1器件的安全性是否依然足夠安全? (防“碰撞”,對SHA-1摘要的攻擊)。
結語
利用身份識別(IFF)概念可以保護知識產(chǎn)權,使之免受非法克隆,這只需要增加一塊低成本的芯片并更新FPGA配置代碼。安全存儲芯片及其在線可編程性使設計者可以通過遠程修改配置來實現(xiàn)軟件功能管理,而無需派出技術人員到場。對于那些沒有應用于軟件功能管理的安全存儲空間,就可應用于電路板身份標識。
評論