efuse 加密文件 linux,Xilinx FPGA bit 文件加密

大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。

今天给大侠带来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寄存器:

50e93df1b61537e9928faae179e42f14.png

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

3a113d7a384d75e0107e5b74cf725360.png

f8c53251afab9b7c62860c598d99086c.png

一共有6个bit有用,各种设置的优缺点表里有详细说明,使用参考设置101100就行了。其中bit0很重要,万一置位了,AES的key又搞丢了,FPGA就变砖头了。

具体的操作步骤如下:

1、生成key和加密bit

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

f4fd066497d038dc562c77c94a705b80.png

44a12c2faf506dfa3cdfa5d2ba8a847e.png

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

674aec2400751c729310e4b0e5f85d1b.png

dafc875278669ce192efd8883f38d9c5.png

2、下载eFUSE

56421e9e36e70e902cd621813def0948.png

49d25225d2b17058d2ef880880a2cddc.png

4aadab857cfd5e09c81c6ba0dc754237.png

11fe4fe71902b5d735c70949d34276d1.png

3、烧写FPGA程序

529f05d673b40b2e9aa7bc4beaf350a4.png

73039167f94a2ee06b1c4ac32913cdf1.png

d7f4bca006fb7cfd6b88525dfe07b5e3.png

43ccc25f60467e1c1f02e7a5006bedfd.png

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

ec56ada215844a196c580820c6787549.png

b1c361d9fe06d31c72049e55757249ef.png

后续会持续更新,带来Vivado、 ISE、Quartus II 、candence等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续关注。

大侠们,江湖偌大,继续闯荡,愿一切安好,有缘再见!

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值