關 閉

        新聞中心

        EEPW首頁 > 安全與國防 > 基于FPGA的身份識別及防拷貝機制

        基于FPGA的身份識別及防拷貝機制

        ——
        作者:Maxim 時間:2007-05-28 來源:Maxim 收藏

        摘要:本文描述了如何利用存儲器來完成身份識別功能,以實現對FPGA設計的保護。在完成身份識別特性的同時,還可實現軟功能管理和電路板識別功能。本文所涉及的FPGA均來自, Inc.。 

        動機
        開發電子產品,包括嵌入式FPGA的配置代碼,其成本是相當高的。因此應當防止未經授權的機構對這些設計和配置進行拷貝,以保護設計者的知識產權。有很多種方法能實現這樣的保護功能。如在 Virtex-II®和Virtex-4®這類的高端FPGA中,支持對配置數據流的加密操作。這樣僅當FPGA中含有相同的密鑰時,這些數據流才可以工作。但是這種加密的方法對更為廣泛的、對成本很敏感的應用場合來說不甚合適。因此,這里利用另一種可行的身份識別法來防止意外拷貝。這種方法對所有FPGA家族都適用,包括低端的 Spartan-3®系列FPGA。 

        前提
        在身份識別的概念中,要求FPGA的設計者實現與一個存儲器通訊的功能以進行認證工作。圖1是實現該設計的一個簡化原理圖。 

        Figure 1. Simplified schematic of a Dallas Semiconductor 1-Wire memory device providing secure control and protection for an FPGA.

        圖1. Dallas Semiconductor的1-Wire存儲器件為FPGA提供控制和保護的簡化框圖 

        安全存儲芯片需滿足下列要求: 

        包含用于芯片內部操作的密鑰,該密鑰對外界不可見。 
        包含一個唯一的不可改變的識別號。可用該識別號來計算一個與設備綁定的密鑰。 
        能夠進行包含密鑰、隨機數(用做質詢機制)、唯一識別號及附加數據(常數)在內的HASH運算。 
        為了滿足應用所需的安全性,該HASH算法應滿足: 

        不可逆 - 要使從一個HASH結果逆推出與之相關的輸入數據在計算上是不可行的。 
        防“碰撞” - 使用另外一組輸入數據來產生一個相同的HASH結果是不可行的。 
        具有極高的雪崩效應 - 輸入數據的任何變化,都會極大的影響到HASH運算結果。 
        SHA-1算法 - 一個被全面而廣泛驗證的單向HASH算法可以滿足上述需求。該算法由美國國家標準技術局開發,被ISO/IEC 10118-3:2004國際標準所采用。公眾可在NIST的網站上獲得該算法的數學原理。 

        DS28E01-100和DS2432是達拉斯半導體提供的內置SHA-1算法的安全存儲器。這些器件的單總線接口非常適合此類應用,因為他們只需FPGA的一根引腳就可實現這些功能。 

        FPGA需實現下述功能,以利用這些器件的安全特性: 

        產生隨機數。 
        知道一個用于芯片內部運算的密鑰,且該密鑰對外界不可見。 
        同安全存儲器一樣進行包含密鑰、隨機數、附加數據及器件識別號在內的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%。 


        技術的實現
        當器件上電后,FPGA從Flash PROM中讀取數據對自己進行配置。配置完成后FPGA的微處理器功能被啟動并進行認證工作,該認證工作包括下列步驟: 
        產生一組隨機數并作為一個質詢機制(Q)發送給安全存儲器。 
        向安全存儲器發出指令,要求其計算一個基于密鑰、質詢機制、唯一識別號和固定附加數據的HASH結果。 
        FPGA本身計算一個基于其自身存儲密鑰、發送給安全存儲器的相同數據和固定附加數據的期望HASH結果(E)。 
        讀取由安全存儲器件所計算出的HASH結果作為響應(A)與期望HASH結果(E)做比較。 
        如果A和E相匹配,微控制器認為該電路是“友方”電路,因為它擁有正確的密鑰。此時FPGA進入正常工作狀態,開啟/執行其配置數據中的所有功能。如果A和E不匹配,則該電路被認為是一個“敵方”電路。此時FPGA進入非正常運行狀態,只執行有限的功能。 


        此過程的安全性何在?
        對于每個制造單元,設計所有者(OEM)必須為制造帶有嵌入式FPGA產品的一方(制造商或CM)提供一個正確預編程的DS28E01-100或DS2432。這種一對一的關系限制了CM可以制造的授權產品的數量。為防止CM竄改安全存儲器(或許CM會以存儲器沒有被正確編程為由申請需要更多存儲器),因此建議對密鑰進行寫保護。即使不進行寫保護,也無需擔心單總線EEPROM中數據的安全性。在設計上就保證了,只有在知道密鑰的情況才可更改存儲器中的數據。由此產生一個很有用的附加功能,設計者可以利用此特性實現軟特性控制:FPGA可以根據從受SHA-1保護的存儲器中讀出的數據來開啟/關閉FPGA中的相應功能。 
        由OEM來對這類器件在分發到CM手上之前進行編程是不方便或不可行的。為了能較好的解決該問題,達拉斯半導體為OEM客戶提供SHA-1密鑰及EEPROM陣列的預編程服務。在這種服務下,達拉斯半導體的工廠按照客戶的要求對這類器件進行注冊和配置,然后Dallas Semiconductor直接把器件運到CM手里。這類服務的優勢如下: 

        OEM無需向CM泄漏SHA-1密鑰。 
        OEM無需執行系統預編程。 
        只有經過OEM授權第三方才可以訪問登記的器件。 
        Dallas Semiconductor保存發送單元的數量紀錄,以備OEM查賬之需。 
        除了SHA-1本身所具有的安全特性,上述類型的身份識別認證的安全特性依賴于密鑰,而該密鑰不可能從安全存儲器,也不可能從FPGA中讀出。更進一步,該密鑰不可能在FPGA進行配置時,利用竊聽其配置數據流的手段而被發現。如同從一個可執行代碼開始,嘗試破解Windows®應用程序的C++源代碼一樣,通過數據流的反向工程(在該過程中會試圖略去認證過程)來判斷系統設計,將是一個十分艱巨的任務。 

        另一個至關重要的安全因素是隨機質詢機制Q。一個可預測的質詢機制(如一個常數)會引發一個可預測的響應結果,因為該結果可被記錄,然后由一個微控制器來取代安全存儲器。在這種可預測的情況下,微控制器可以讓FPGA認為其是一個“友方”電路。而隨機的質詢機制消除了這種可能性。 

        如果為每個器件綁定一個唯一密鑰就可以進一步提高安全級別。唯一密鑰由公共密鑰(主密鑰)、器件的唯一識別號和由應用所指定的常數計算得來。在這種條件下,如果有一個密鑰被破解,則只會有一個器件受到影響,從而不破壞整個系統的安全性。為實現這種功能,FPGA需要知道主密鑰,并在計算期望響應(E)之前計算存儲器所用的密鑰。 


        更多內容
        這里提供的信息在一個相當抽象的水平上給出了通過FPGA和安全存儲器實施的IFF認證的概念。 欲了解更多信息,請參見以下文件: 
        Dallas應用筆記3675,保護您的研發成果 - 雙向認證及軟件功能保護(安全和系統方面)。 
        Dallas應用筆記1201,白皮書8:1-Wire SHA-1概述(HASH,SHA-1,可信任令牌,交易細節,信息和產品數據手冊的進一步鏈接)。 
        XILINX應用筆記XAPP780, FPGA IFF Copy Protection Using Dallas Semiconductor/ DS2432 Secure EEPROMs (概念的成功實施,如何用FPGA執行的詳細資料)。 
        安全散列標準 (English only),聯邦信息處理標準出版物180-1。 
        Dallas Semiconductor應用筆記178,利用1-Wire產品標識印刷電路板(概念,定義數據,外部測點)。 
        Dallas Semiconductor應用筆記3522,白皮書9: SHA-1器件的安全性是否依然足夠安全? (防“碰撞”,對SHA-1摘要的攻擊)。 

        結語
        利用身份識別(IFF)概念可以保護知識產權,使之免受非法克隆,這只需要增加一塊低成本的芯片并更新FPGA配置代碼。安全存儲芯片及其在線可編程性使設計者可以通過遠程修改配置來實現軟件功能管理,而無需派出技術人員到場。對于那些沒有應用于軟件功能管理的安全存儲空間,就可應用于電路板身份標識。 



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 东乌| 雷山县| 泊头市| 株洲县| 德兴市| 突泉县| 富平县| 广宗县| 兴国县| 双流县| 隆安县| 江门市| 武穴市| 济源市| 张家界市| 昭平县| 溆浦县| 上高县| 肥城市| 淮北市| 肇东市| 格尔木市| 华宁县| 长乐市| 玛沁县| 安乡县| 秦皇岛市| 会东县| 巴彦淖尔市| 临沂市| 视频| 义马市| 尉犁县| 肇源县| 兴山县| 会同县| 墨脱县| 永寿县| 喀什市| 卓资县| 白沙|