大家好,今天咱们聊聊 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文章
2172浏览量
122383
发布评论请先 登录
相关推荐
爱普斯微电子公开全部基于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)
评论