加密的優(yōu)點
xilinx的V6和7全系列FPGA支持AES256加密,加密的好處:
1,可以防止別人回讀或者對你的程序進行逆向;
2,防止更改燒寫的bit文件。
如果僅僅是防止回讀,可以簡單設置BITSTREAM.READBACK.SECURITY,其中LEVEL1是禁止回讀,LEVEL2禁止回讀和重新燒寫FPGA。
但如果對手的逆向能力很強,比如說在FPGA上電加載bit的時候用邏輯分析儀把用bit文件“讀”出來,這個簡單的設置肯定就不行了。這時候可以使用AES256加密。
AES算法簡介:
AES即高級加密標準,是一種區(qū)塊加密,當然也是對稱加密。區(qū)塊固定為128bit,秘鑰為128,192或256bit。AES有5種加密模式,xliinx采用的是CBC模式。有一個128bit初始向量IV(startCBC),先利用初始向量IV與第一組數(shù)據(jù)進行異或后再進行加密運算生成C1。將C1作為初始向量與第二組數(shù)據(jù)進行異或后再進行加密運算生成C2。以此類推,當最后一組數(shù)據(jù)加密完畢后,將加密結果拼接為最終結果,C = C1C2C3……Cn。
所以采用CBC模式的256AES需要兩個東西,128bit-startCBC和256bit-AES key。
到這里還沒完,完成了bit加密還沒有認證,萬一別人把燒進去bit文件篡改了怎么辦?(重新燒了新的bit文件)。所以xilinx又提供了HMAC的認證,這個就跟校驗差不多了,檢查消息的完整性。
所以還需要提供256bit-HMAC,加上128bit-startCBC和256bit-AES key,一共是三個。這三個key可以自己生成,也可以指定空的 .nky文件,由軟件隨機生成好。
加密的AES key可以存到FPGA內(nèi)部易失性的BBR或只能燒寫一次(OTP)的eFUSE中。
BBR需要電池供電,可以多次編程。eFUSE不需要電池,但只能燒寫一次。這里使用eFUSE
eFUSE寄存器
首先來看一下eFUSE寄存器:
一共有四個寄存器,分別是存放AES秘鑰,用戶信息,設備DNA和eFUSE控制。下面特別關注一下eFUSE控制寄存器:
一共有6個bit有用,各種設置的優(yōu)缺點表里有詳細說明,使用參考設置101100就行了。
其中bit0很重要,萬一置位了,AES的key又搞丟了,F(xiàn)PGA就變磚頭了。
具體的操作步驟如下:
1生成key和加密bit
下面三個key可以自己生成填進去,也可以由軟件隨機生成。
要打開edit device properties,先要打開sythesized design 或者implement design,然后在generate bitstream右鍵設置
2下載eFUSE
3燒寫FPGA程序
program
4驗證
很簡單,讀出mcs然后燒到另一個FPGA里面去,可以看到不能工作。當然,也可以在前面eFUSE設置時選擇只能加載AES加密的bit文件,這樣換一個不加密的bit下進去也能驗證。
審核編輯 :李倩
-
FPGA
+關注
關注
1629文章
21738瀏覽量
603464 -
算法
+關注
關注
23文章
4612瀏覽量
92910 -
Xilinx
+關注
關注
71文章
2167瀏覽量
121444
原文標題:FPGA學習-如何對xilinx FPGA進行bit文件加密
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論