《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動(dòng)態(tài) > xilinx FPGA bit 文件加密

xilinx FPGA bit 文件加密

2018-05-28
關(guān)鍵詞: Xilinx FPGA BIT

  大家好,,今天咱們聊聊 xilinx FPGA bit 文件加密 ,,當(dāng)你的項(xiàng)目終于做完了,,到了發(fā)布的關(guān)鍵節(jié)點(diǎn),,為了防止自己的心血被別人利用,,最好對(duì)產(chǎn)品進(jìn)行bit加密,。

  首先咱們來了解一下加密的優(yōu)點(diǎn),,xilinx的V6和7全系列FPGA支持AES256加密,,加密的好處: 1. 可以防止別人回讀或者對(duì)你的程序進(jìn)行逆向,; 2. 防止更改燒寫的bit文件。

  如果僅僅是防止回讀,,可以簡單設(shè)置BITSTREAM.READBACK.SECURITY,,其中LEVEL1是禁止回讀,,LEVEL2禁止回讀和重新燒寫FPGA。 但如果對(duì)手的逆向能力很強(qiáng),,比如說在FPGA上電加載bit的時(shí)候用邏輯分析儀把用bit文件“讀”出來,,這個(gè)簡單的設(shè)置肯定就不行了。這時(shí)候可以使用AES256加密,。

  AES算法簡介:AES即高級(jí)加密標(biāo)準(zhǔn),,是一種區(qū)塊加密,當(dāng)然也是對(duì)稱加密,。區(qū)塊固定為128bit,,秘鑰為128,192或256bit,。AES有5種加密模式,,xliinx采用的是CBC模式。有一個(gè)128bit初始向量IV(startCBC),,先利用初始向量IV與第一組數(shù)據(jù)進(jìn)行異或后再進(jìn)行加密運(yùn)算生成C1,。將C1作為初始向量與第二組數(shù)據(jù)進(jìn)行異或后再進(jìn)行加密運(yùn)算生成C2。以此類推,,當(dāng)最后一組數(shù)據(jù)加密完畢后,,將加密結(jié)果拼接為最終結(jié)果,C = C1C2C3……Cn,。 所以采用CBC模式的256AES需要兩個(gè)東西,128bit-startCBC和256bit-AES key,。

  到這里還沒完,,完成了bit加密還沒有認(rèn)證,萬一別人把燒進(jìn)去bit文件篡改了怎么辦,?(重新燒了新的bit文件),。所以xilinx又提供了HMAC的認(rèn)證,這個(gè)就跟校驗(yàn)差不多了,,檢查消息的完整性,。所以還需要提供256bit-HMAC,加上128bit-startCBC和256bit-AES key,,一共是三個(gè),。這三個(gè)key可以自己生成,也可以指定空的 .nky文件,,由軟件隨機(jī)生成好,。

  for example

  ···

  Device xc7a35t;

  Key 0 0f2ec1178ae0d04c8c1431afe8266d08e799b01c5c486c2567f3621f47319aaf;

  Key StartCBC a6262d508c338eeab815340a7832436d;

  Key HMAC d82e72733a7bd7904c802d13db37187b8ad20b972ac163470c5a4d239bce6308;

  ···

  加密的AES key可以存到FPGA內(nèi)部易失性的BBR或只能燒寫一次(OTP)的eFUSE中。 BBR需要電池供電,,可以多次編程,。eFUSE不需要電池,,但只能燒寫一次。這里使用eFUSE.

  eFUSE寄存器

  首先來看一下eFUSE寄存器:

  113159ds1b841kbw8h8hsx.png

  一共有四個(gè)寄存器,,分別是存放AES秘鑰,,用戶信息,設(shè)備DNA和eFUSE控制,。下面特別關(guān)注一下eFUSE控制寄存器:

  

1.png

  

2.png

  一共有6個(gè)bit有用,,各種設(shè)置的優(yōu)缺點(diǎn)表里有詳細(xì)說明,使用參考設(shè)置101100就行了,。 其中bit0很重要,,萬一置位了,AES的key又搞丟了,,F(xiàn)PGA就變磚頭了,。

  具體的操作步驟如下:

  1. 生成key和加密bit

  下面三個(gè)key可以自己生成填進(jìn)去,也可以由軟件隨機(jī)生成,。

 

  要打開edit device properties,先要打開sythesized design 或者implement design,,然后在generate bitstream右鍵設(shè)置

  

6.png

  2. 下載eFUSE

 

7.png

10.png

9.png

  3. 燒寫FPGA程序

  

11.png

13.png

  4. 驗(yàn)證,讀出mcs然后燒到另一個(gè)FPGA里面去,,可以看到不能工作,。當(dāng)然,也可以在前面eFUSE設(shè)置時(shí)選擇只能加載AES加密的bit文件,,這樣換一個(gè)不加密的bit下進(jìn)去也能驗(yàn)證,。

 


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容,、版權(quán)和其它問題,,請及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118;郵箱:[email protected],。