大家好,今天咱們聊聊 xilinx FPGA bit 文件加密 ,當你的項目終于做完了,到了發布的關鍵節點,為了防止自己的心血被別人利用,最好對產品進行bit加密。
首先咱們來了解一下加密的優點,xilinx的V6和7全系列FPGA支持AES256加密,加密的好處: 1. 可以防止別人回讀或者對你的程序進行逆向; 2. 防止更改燒寫的bit文件。
如果僅僅是防止回讀,可以簡單設置BITSTREAM.READBACK.SECURITY,其中LEVEL1是禁止回讀,LEVEL2禁止回讀和重新燒寫FPGA。 但如果對手的逆向能力很強,比如說在FPGA上電加載bit的時候用邏輯分析儀把用bit文件“讀”出來,這個簡單的設置肯定就不行了。這時候可以使用AES256加密。
AES算法簡介:AES即高級加密標準,是一種區塊加密,當然也是對稱加密。區塊固定為128bit,秘鑰為128,192或256bit。AES有5種加密模式,xliinx采用的是CBC模式。有一個128bit初始向量IV(startCBC),先利用初始向量IV與第一組數據進行異或后再進行加密運算生成C1。將C1作為初始向量與第二組數據進行異或后再進行加密運算生成C2。以此類推,當最后一組數據加密完畢后,將加密結果拼接為最終結果,C = C1C2C3……Cn。 所以采用CBC模式的256AES需要兩個東西,128bit-startCBC和256bit-AES key。
到這里還沒完,完成了bit加密還沒有認證,萬一別人把燒進去bit文件篡改了怎么辦?(重新燒了新的bit文件)。所以xilinx又提供了HMAC的認證,這個就跟校驗差不多了,檢查消息的完整性。所以還需要提供256bit-HMAC,加上128bit-startCBC和256bit-AES key,一共是三個。這三個key可以自己生成,也可以指定空的 .nky文件,由軟件隨機生成好。
for example
···
Device xc7a35t;
Key 0 0f2ec1178ae0d04c8c1431afe8266d08e799b01c5c486c2567f3621f47319aaf;
Key StartCBC a6262d508c338eeab815340a7832436d;
Key HMAC d82e72733a7bd7904c802d13db37187b8ad20b972ac163470c5a4d239bce6308;
···
加密的AES key可以存到FPGA內部易失性的BBR或只能燒寫一次(OTP)的eFUSE中。 BBR需要電池供電,可以多次編程。eFUSE不需要電池,但只能燒寫一次。這里使用eFUSE.
eFUSE寄存器
首先來看一下eFUSE寄存器:
一共有四個寄存器,分別是存放AES秘鑰,用戶信息,設備DNA和eFUSE控制。下面特別關注一下eFUSE控制寄存器:
![113513sd6yr31djv5d6dhy.png](http://file.elecfans.com/web1/M00/51/7F/pIYBAFsHv5GAMIUrAAEOWDZ51OQ596.png)
一共有6個bit有用,各種設置的優缺點表里有詳細說明,使用參考設置101100就行了。 其中bit0很重要,萬一置位了,AES的key又搞丟了,FPGA就變磚頭了。
具體的操作步驟如下:
1. 生成key和加密bit
下面三個key可以自己生成填進去,也可以由軟件隨機生成。
![115218micdlwquwwcudcqw.png](http://file.elecfans.com/web1/M00/51/68/o4YBAFsHv2CAY2trAADGtYUCuWw980.png)
要打開edit device properties,先要打開sythesized design 或者implement design,然后在generate bitstream右鍵設置
![115219doayz444824chla7.png](http://file.elecfans.com/web1/M00/51/7F/pIYBAFsHv5OAUsx2AAFs6ExNnUU815.png)
![115220sgj90arapkr0un90.png](http://file.elecfans.com/web1/M00/51/7F/pIYBAFsHv5SAOVB2AAFJqwP_OQQ028.png)
2. 下載eFUSE
![115221gjtxflxkxj4pusf1.png](http://file.elecfans.com/web1/M00/51/7F/pIYBAFsHv5SAD86nAAD-meWLQyw095.png)
![115221ua4b5zu38714kqi7.png](http://file.elecfans.com/web1/M00/51/68/o4YBAFsHv2OAbJB9AAFLEtSphIw821.png)
![115221sqnrn0g4qqk7kyoj.png](http://file.elecfans.com/web1/M00/51/68/o4YBAFsHv2OAMaBsAAEu6D0uKDE661.png)
![115220h65knklsl5m5h7l8.png](http://file.elecfans.com/web1/M00/51/7F/pIYBAFsHv5WAGbPWAADwZC5Ifjk341.png)
3. 燒寫FPGA程序
![115222u5tzttgcmzgognox.png](http://file.elecfans.com/web1/M00/51/7F/pIYBAFsHv5WABrSLAAGTuwRPvYU761.png)
![115222niisezbzvambevan.png](http://file.elecfans.com/web1/M00/51/68/o4YBAFsHv2SAEt76AAFD5-Czwpw497.png)
![115223efji55dhd54kd2zp.png](http://file.elecfans.com/web1/M00/51/68/o4YBAFsHv2SAQ_lCAAF2PVwgxqw151.png)
![115223wikjfnm1xeejumc3.png](http://file.elecfans.com/web1/M00/51/7F/pIYBAFsHv5aAU9bZAAD4JkE9DWg661.png)
4. 驗證,讀出mcs然后燒到另一個FPGA里面去,可以看到不能工作。當然,也可以在前面eFUSE設置時選擇只能加載AES加密的bit文件,這樣換一個不加密的bit下進去也能驗證。
![115223js0sm9ayvmq3krvs.png](http://file.elecfans.com/web1/M00/51/7F/pIYBAFsHv5aAEuYNAAFJReDb_iA757.png)
![115224wrorh6h3hrxix0s0.png](http://file.elecfans.com/web1/M00/51/68/o4YBAFsHv2WAIDCaAADZm4gkuwg806.png)
-
Xilinx
+關注
關注
71文章
2171瀏覽量
122134
發布評論請先 登錄
相關推薦
愛普斯微電子公開全部基于Xilinx V5、V6開發板的FPGA下載文件
關于Xilinx FPGA如何獲取FPGA的Device DNA
![關于<b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b>如何獲取<b class='flag-5'>FPGA</b>的Device DNA](https://file.elecfans.com/web1/M00/C8/68/pIYBAF9uHniAc3TZAAF3q3q28Sw668.png)
fpga加密方法
求助:每次下載bit文件后顯示效果不同
FPGA生成bit文件出錯
能將過時的Xilinx FPGA的加載文件轉換為Xilinx新FPGA的文件嗎?
如何使用Xilinx加密我的verilog文件?
XILINX FPGA/CPLD ISE詳細下載教程
Xilinx FPGA bit 文件加密
ISE中下載Xilinx的bit文件失敗時的處理方案
使用XIlinx的FPGA芯片開發的流水燈實驗工程文件免費下載
![使用<b class='flag-5'>XIlinx</b>的<b class='flag-5'>FPGA</b>芯片開發的流水燈實驗工程<b class='flag-5'>文件</b>免費下載](https://file.elecfans.com/web1/M00/9F/47/pIYBAF1A7bOAMgXdAADQ76y39cI260.png)
評論