FPGA在運行期間,把配置文件存儲在SRAM中。SRAM是易失性的。掉電之后會丟失,所以FPGA每次上電都要從外部的Flash中加載數據到FPGA。這樣在加載時Flash中的數據很有可能被攔截,被攔截的數據如果沒有被加密則很有可能被盜用。
通俗的講加密的原理就是,用戶用自己的密鑰把配置文件進行加密,并把密鑰燒寫到FPGA;FPGA通過該密鑰再對配置文件解密,并把解密后的數據存放在SRAM中。
這里以一個實驗來描述AES的操作步驟,軟件采用QuartusPrame 18.1 Standard版本,硬件采用的是arrow的Cylone V soc demo板。
步驟如下:
1、通過用戶寄密鑰生成.ekp 文件,并加密配置數據。
2、將用生成的密鑰加密編程到FPGA 中。
3、配置FPGA 器件。
1、通過用戶寄密鑰生成.ekp 文件,并加密配置數據。
這里以Arria10為例。
在菜單File -》 Convert Programming File
選擇sof燒寫文件,點擊Properties,打開Bitsteam Encryption對話框。
添加密鑰的兩種方式,一種是手動256位16進制數字,一種是添加文件。
(1)添加key文件。
key文件的后綴為.key。格式為:
The “#” symbol is used to denote comments. Each valid key line has the following format: 《key identity》《white space》《256-bit hexadecimal key》。
(2)通過按鍵輸入密鑰
點擊Add。在這里Key Name我們命名為‘aa‘,Key要求256位,這里手動添加了’0123456789abcfef0123456789abcfef0123456789abcfef0123456789abcfef’。這讓我想起以做加密的時候遇到的一個問題:就是數據的LSB是指0還是指f呢?當然這里是完全不需要關注的。
設置完成后點擊ok,再Convert Programming File對話框中的Generate就生成了加密的.ekp和加密和配置文件(這里以jic為例)。
2、將用生成的密鑰加密編程到FPGA 中。
FPGA 內嵌一個專用的解密模塊,通過運用AES 算法對采用用戶定義的256-bit 密鑰的配置數據進行解密。您必須在接收到加密數據前將用戶定義的256- bit 密鑰寫入器件中。
FPGA 支持易失性以及非易失性密鑰存儲。易失性密鑰需要電池來存儲和更新密鑰,而
非易失性密鑰存儲僅支持對一個密鑰進行編程,不需要電池。電池的供電PIN為VCCBAT.
并通過Tools-》Options-》Programmer來配置燒寫的密鑰寄存器位置。
勾選Configure volatile design security key when available來配置易失性密鑰寄存器。
不勾選 Configure volatile design security key when available則配置非易失性密鑰寄存器。
mode模式選擇JTAG.先燒寫.ekp文件到密鑰寄存器,再燒寫jic文件配置器件。
下圖是燒寫時可能遇到的錯誤。
3、配置FPGA 器件。
FPGA 內嵌一個專用的解密模塊,通過運用AES 算法對采用用戶定義的256-bit 密鑰的配置數據進行解密。FPGA上電之后會把配置芯片的數據加載到FPGA通過密鑰和解密模塊對加密的數據進行解密,再把解密后的配置數據加載到SRAM中去。
要說明的是成功地將易失性密鑰編程到FPGA 器件中后,該器件既能夠接受加密的配置數據,也能夠接受未加密的配置數據。如果用帶有使用錯誤的密鑰進行加密的配置文件對FPGA 進行配置,都將導致配置的失敗。如果這種情況發生,那么來自FPGA 的nSTATUS 信號將變低。
另外FPGA還可以設置篡改保護位,對FPGA的燒寫應用會也有很大的影響。詳細的文檔說明請看an556,an556_cn.
文章出處:【微信公眾號:FPGA及視頻處理】歡迎添加關注!文章轉載請注明出處。
編輯:jq
-
FPAG
+關注
關注
0文章
9瀏覽量
12026
原文標題:intel FPAG AES應用筆記
文章出處:【微信號:gh_c3e093594afc,微信公眾號:FPGAfighter】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論