FPGA学习-如何对xilinx FPGA进行bit文件加密

本文探讨了Xilinx FPGA如何利用AES256加密保护设计,包括防止逆向工程和数据完整性。介绍了AES算法、CBC模式、eFUSE寄存器及其在FPGA安全中的作用,以及如何设置和操作AES密钥、HMAC认证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

加密的优点

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文件,由软件随机生成好。

cccec6d362de4fc03127170bff1044ed.png

加密的AES key可以存到FPGA内部易失性的BBR或只能烧写一次(OTP)的eFUSE中。

BBR需要电池供电,可以多次编程。eFUSE不需要电池,但只能烧写一次。这里使用eFUSE

eFUSE寄存器

首先来看一下eFUSE寄存器:

3bb4085e517342e54cb97718e6301438.png

一共有四个寄存器,分别是存放AES秘钥,用户信息,设备DNA和eFUSE控制。下面特别关注一下eFUSE控制寄存器:

9efec8de35471916fb286e1c998e1f52.png

8a23ee8661bd32932d4b40a1ef89de87.png

一共有6个bit有用,各种设置的优缺点表里有详细说明,使用参考设置101100就行了。

其中bit0很重要,万一置位了,AES的key又搞丢了,FPGA就变砖头了。

具体的操作步骤如下:

1生成key和加密bit

下面三个key可以自己生成填进去,也可以由软件随机生成。

d14ef1726cfb8b94925711c11a44e2c8.png

c88c9051d182d39799835d5ae0939fb5.png

要打开edit device properties,先要打开sythesized design 或者implement design,然后在generate bitstream右键设置

cd13e8c22dab41102d2644d3069bc0fa.png

493b6b9671a5b1dae1f66283f06f6a47.png

6e2a20b903f53e1f26db89690e553ee0.png2下载eFUSE

aff721a1182bc9e11c800d0747ddd8db.png

0ad31a7e212691f926d7347c39cd7392.png

a97f4725a563b683caa7e98114504fda.png

4dfd3c00b4cb32dd618eb236c97da099.png

3烧写FPGA程序

0486ec3c454b14784e88f4c205ea6b94.png

b0df70a2a951bc2a917dba5e0589d940.png

program

ccf1443d8e23f487af188586575ae4b7.png

e47c4e17567b51d4318310f6d10cf860.png

4验证

很简单,读出mcs然后烧到另一个FPGA里面去,可以看到不能工作。当然,也可以在前面eFUSE设置时选择只能加载AES加密的bit文件,这样换一个不加密的bit下进去也能验证。

f526009ef895aa1adbcc1809c6577601.png

8929b444d8bdca151199e1edbd22c4d3.png

e9066a097d53ad4c684f9e52a3935cde.png

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值