《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 采用MAX II器件實現(xiàn)FPGA設(shè)計安全解決方案
采用MAX II器件實現(xiàn)FPGA設(shè)計安全解決方案
電子系統(tǒng)設(shè)計
摘要: 本文提供的解決方案可防止FPGA設(shè)計被拷貝,即使配置比特流被捕獲,也可以保證FPGA設(shè)計的安全性。通過在握手令牌由MAX II器件傳送給FPGA之前,禁止用戶設(shè)計功能來實現(xiàn)這種安全性。選用MAX II器件來產(chǎn)生握手令牌,這是因為該器件具有非易失性,關(guān)電時可保持配置數(shù)據(jù)。而且,對于這種應(yīng)用,MAX II器件是最具成本效益的CPLD。本文還介紹了采用這種方案的一個參考設(shè)計。
關(guān)鍵詞: FPGA MAX II
Abstract:
Key words :

  本文提供的解決方案可防止FPGA設(shè)計被拷貝,即使配置比特流被捕獲,也可以保證FPGA設(shè)計的安全性。這種安全性是通過在握手令牌由MAX II器件傳送給FPGA之前,禁止用戶設(shè)計功能來實現(xiàn)的。

  基于SRAM的FPGA是易失器件,需要外部存儲器來存儲上電時發(fā)送給它們的配置數(shù)據(jù)。在傳送期間,配置比特流可能會被捕獲,用于配置其他FPGA。這種知識產(chǎn)權(quán)盜竊損害了設(shè)計人員的利益。

  本文提供的解決方案可防止FPGA設(shè)計被拷貝,即使配置比特流被捕獲,也可以保證FPGA設(shè)計的安全性。通過在握手令牌由MAX II器件傳送給FPGA之前,禁止用戶設(shè)計功能來實現(xiàn)這種安全性。選用MAX II器件來產(chǎn)生握手令牌,這是因為該器件具有非易失性,關(guān)電時可保持配置數(shù)據(jù)。而且,對于這種應(yīng)用,MAX II器件是最具成本效益的CPLD。本文還介紹了采用這種方案的一個參考設(shè)計。

  硬件實現(xiàn)

  FPGA設(shè)計安全解決方案的硬件實現(xiàn)如圖1所示。MAX II器件產(chǎn)生連續(xù)的握手令牌,發(fā)送至FPGA,以使能用戶設(shè)計。FPGA和MAX II器件之間傳送5個信號:clock、shift_ena、random_number、ready和handshaking_data。

  一旦FPGA經(jīng)過配置后,它向MAX II器件提供連續(xù)時鐘。同時連接至FPGA和MAX II器件的啟動/復(fù)位信號必須置位,以啟動系統(tǒng)工作。FPGA中的隨機數(shù)發(fā)生器(RNG)開始為FPGA和MAX II器件產(chǎn)生初始計數(shù)值(每次上電或者啟動/復(fù)位信號置位時,僅向MAX II器件發(fā)送一次隨機數(shù))。隨機數(shù)準備好后,shift_ena信號變?yōu)楦唠娖?,采用random_number信號,隨機數(shù)串行移位至MAX II器件。隨機數(shù)全部移位至MAX II器件后,ready信號置位,指示FPGA可以接收來自MAX II器件的握手令牌。

  配置之后,由于Enable信號還是邏輯低電平,F(xiàn)PGA中的用戶設(shè)計功能被禁止。只有MAX II器件送出的握手令牌和FPGA內(nèi)部產(chǎn)生的數(shù)據(jù)相匹配,Enable信號才會置位,啟動用戶設(shè)計功能。這兩個數(shù)據(jù)之間出現(xiàn)差異時,Enable信號變?yōu)榈碗娖?,禁止用戶設(shè)計功能。MAX II器件中產(chǎn)生握手令牌和FPGA器件中產(chǎn)生數(shù)據(jù)的方法和過程相同。如果沒有正確的令牌,F(xiàn)PGA器件中的用戶設(shè)計功能被禁用。這樣,即使配置比特流被捕獲,也可以防止用戶設(shè)計被拷貝。

  圖1:FPGA設(shè)計安全方案的硬件實現(xiàn)。

  設(shè)計構(gòu)建模塊

  FPGA的設(shè)計安全組成包括一個時鐘分頻器、隨機數(shù)發(fā)生器(RNG)、安全內(nèi)核、比較器和可靠性部分,而MAX II器件的設(shè)計安全組成只包括圖1所示的安全內(nèi)核。

  FPGA和MAX II器件使用的安全內(nèi)核相同,如圖2所示,由以下部分構(gòu)成:隨機數(shù)接收器、64位計數(shù)器、編碼器、移位器/復(fù)用器。

  圖2:FPGA和MAX II器件的安全內(nèi)核。

  1、時鐘分頻器FPGA中的時鐘分頻器用于從系統(tǒng)時鐘產(chǎn)生速率較低的時鐘,供給FPGA和MAX II器件的安全內(nèi)核使用。這是因為安全內(nèi)核不需要運行在非常高的頻率下。特別是當系統(tǒng)運行頻率非常高時,時鐘分頻器的作用便比較顯著,否則,如果系統(tǒng)運行頻率較低,可以不使用該分頻器。

  2、隨機數(shù)發(fā)生器(RNG)每次啟動/復(fù)位信號置位時,RNG為64位計數(shù)器產(chǎn)生隨機初始值。然后,隨機數(shù)同時串行移位至FPGA和MAX II器件的安全內(nèi)核。參考設(shè)計采用32位RNG。

  3、隨機數(shù)接收器隨機數(shù)接收器接收來自RNG的串行隨機數(shù),并按照正確的順序排列數(shù)據(jù),將其做為初始值送入64位計數(shù)器。

  4、64位計數(shù)器64位計數(shù)器用于產(chǎn)生送入編碼器的64位數(shù)據(jù)。它是按照公式X=X+A進行的一個簡單加法器。X是一個64位初始值,而A是計數(shù)器遞增值,應(yīng)為質(zhì)數(shù)。初始值X來自RNG。參考設(shè)計中,32位來自RNG,其余32位由用戶在設(shè)計代碼中設(shè)置。A可以由用戶在設(shè)計代碼中設(shè)置。計數(shù)器輸出送入編碼器,對數(shù)據(jù)進行加密。編碼器每次完成前一數(shù)據(jù)的加密后,計數(shù)器數(shù)值遞增。

  5、編碼器編碼器可以采用任何難以破譯的加密標準。參考設(shè)計采用了三重數(shù)據(jù)加密標準(3DES)。3DES編碼器的輸入和輸出是64位值,需要48個時鐘周期完成64位數(shù)據(jù)加密。

  6、移位器/復(fù)用器移位器/復(fù)用器將編碼器輸出比特(16位)的一部分按照特定順序,存儲在寄存器中,編碼器準備下一數(shù)值時,將其串行移位至比較器。

  7、比較器比較器將MAX II器件的編碼數(shù)據(jù)(握手令牌)與FPGA內(nèi)部產(chǎn)生的編碼數(shù)據(jù)逐位比較。如果MAX II器件和FPGA的數(shù)據(jù)相匹配,Enable信號置位,使能用戶設(shè)計功能。如果出現(xiàn)不匹配,請參見下面的可靠性保證一節(jié)。這種方式可以重復(fù)幾次,以產(chǎn)生更多的Enable信號,使能用戶設(shè)計的不同部分。這種重復(fù)方式可以防止有人篡改FPGA比特流(這種可能性較低),致使Enable信號變?yōu)楦唠娖?,?dǎo)致設(shè)計安全方案失效。

  8、可靠性可靠性部分處理隨機比特錯誤,這種錯誤可能會導(dǎo)致系統(tǒng)停止工作。參考設(shè)計允許每10個時鐘周期中出現(xiàn)一次數(shù)據(jù)不匹配(這僅僅是一個例子,用戶可以根據(jù)實際應(yīng)用,修改該方法,達到最佳效果)。換句話說,如果10個時鐘周期中,數(shù)據(jù)不匹配不超過一次,Enable信號仍將保持高電平,系統(tǒng)繼續(xù)工作。如果10個時鐘周期中出現(xiàn)兩個錯誤,那么,Enable信號變?yōu)榈碗娖?,禁止用戶設(shè)計功能。在啟動/復(fù)位信號置位,復(fù)位系統(tǒng)前,系統(tǒng)停止工作。

  圖3:不支持安全方案的FPGA設(shè)計。

  用戶設(shè)計模塊

  用戶設(shè)計模塊是真正的FPGA設(shè)計。來自安全模塊的Enable信號低電平時用于禁止用戶設(shè)計模塊。換言之,如果比較器發(fā)現(xiàn)MAX II器件和FPGA的數(shù)據(jù)不匹配,考慮到可靠性之后,將禁止用戶設(shè)計功能。

  圖3是Enable信號低電平時,禁止用戶設(shè)計功能的實例。圖3所示的FPGA用戶設(shè)計具有Clk_en輸入信號,用于使能設(shè)計中的時鐘。只有Clk_en信號高電平時,才啟動設(shè)計功能。為實現(xiàn)設(shè)計安全方案,對用戶設(shè)計稍做修改(增加了一個AND邏輯門),這樣,當來自安全模塊的Enable信號低電平時,禁止用戶設(shè)計,如圖4所示。

  解決方案的安全性

  上電時,當FPGA的配置比特流由外部存儲器傳送至FPGA時,有可能被捕獲。使用捕獲的比特流來配置其他FPGA可以拷貝FPGA設(shè)計。

  采用該解決方案,只有當MAX II器件的握手令牌與FPGA內(nèi)部產(chǎn)生的數(shù)據(jù)相匹配時,F(xiàn)PGA用戶設(shè)計才開始工作。由于被復(fù)制的設(shè)計在沒有握手令牌時無法工作,因此保證了FPGA設(shè)計的拷貝安全性。用于產(chǎn)生握手令牌的MAX II器件具有非易失特性,關(guān)電時可保持其配置。

  解決方案的安全性依賴于MAX II器件產(chǎn)生的握手令牌。要破解該方案,需要拷貝MAX II器件產(chǎn)生的全部令牌比特流,或者計算出編碼器用于產(chǎn)生令牌的密鑰。由于每次上電時,MAX II器件產(chǎn)生的握手令牌都不同,因此,拷貝全部比特流來破解該方案是不可能的。這在于采用了RNG,它在上電時產(chǎn)生不同的數(shù)值送給MAX II器件。

  圖4:支持安全方案的FPGA設(shè)計。

  如果采用了成熟的加密算法,那么破解編碼器使用的密鑰將非常困難。而且,無法從外部看到編碼器輸入數(shù)據(jù),只有一部分加密數(shù)據(jù)串行移出,更難實現(xiàn)純文本攻擊。純文本攻擊分析編碼器的輸入和輸出數(shù)據(jù),猜出密鑰,實施攻擊。因此,該解決方案保護了FPGA設(shè)計。

  為保證該方案正常工作,安全模塊的時鐘應(yīng)和FPGA用戶設(shè)計的時鐘一致,如圖1所示。這樣可以防止有人在Enable信號高電平時,禁用安全模塊時鐘。

  本文小結(jié)

  FPGA設(shè)計安全解決方案保護了Altera FPGA設(shè)計被拷貝(即使配置比特流被捕獲)。在MAX II器件通過握手令牌驗證前,禁止FPGA用戶設(shè)計,實現(xiàn)了該解決方案。只有握手令牌與FPGA內(nèi)部產(chǎn)生的數(shù)據(jù)匹配時,F(xiàn)PGA用戶設(shè)計才被使能。該解決方案還保護了FPGA中的設(shè)計人員知識產(chǎn)權(quán)。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。