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