0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

FPGA之家 来源:FPGA之家 2023-01-16 15:22 次阅读

项目终于搞完了,到了发布的关键节点,为了防止自己的心血被别人利用,最好对产品进行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寄存器:

7a1a5cde-94cf-11ed-bfe3-dac502259ad0.png

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

7a2cca86-94cf-11ed-bfe3-dac502259ad0.png

7a5d58b8-94cf-11ed-bfe3-dac502259ad0.png

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

具体的操作步骤如下:

1生成key和加密bit

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

7a6b21dc-94cf-11ed-bfe3-dac502259ad0.png

7a7b15ba-94cf-11ed-bfe3-dac502259ad0.png

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

7aa37622-94cf-11ed-bfe3-dac502259ad0.png

7ab38ed6-94cf-11ed-bfe3-dac502259ad0.png

2下载eFUSE

7ac2038a-94cf-11ed-bfe3-dac502259ad0.png

7aced718-94cf-11ed-bfe3-dac502259ad0.png

7ad8cb42-94cf-11ed-bfe3-dac502259ad0.png

7ae63c5a-94cf-11ed-bfe3-dac502259ad0.png

3烧写FPGA程序

7af2f008-94cf-11ed-bfe3-dac502259ad0.png

7b101688-94cf-11ed-bfe3-dac502259ad0.png

program

7b1d21e8-94cf-11ed-bfe3-dac502259ad0.png

7b29472a-94cf-11ed-bfe3-dac502259ad0.png

4验证

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

7b371260-94cf-11ed-bfe3-dac502259ad0.png

7b454952-94cf-11ed-bfe3-dac502259ad0.png

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1603

    文章

    21328

    浏览量

    593267
  • Xilinx
    +关注

    关注

    70

    文章

    2121

    浏览量

    119388
  • AES
    AES
    +关注

    关注

    0

    文章

    97

    浏览量

    33064

原文标题:如何对xilinx FPGA进行bit文件加密

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    爱普斯微电子公开全部基于Xilinx V5、V6开发板的FPGA下载文件

    爱普斯微电子公开全部基于Xilinx V5、V6开发板的FPGA下载文件 目前,爱普斯微电子公开全部基于Xilinx V5、V6 开发板的Bit
    发表于 02-24 08:41 1591次阅读

    关于Xilinx FPGA如何获取FPGA的Device DNA

    的属性,因为使用的是熔断技术。值得说明的是,在7系列及以前,这个ID都是57bit的,但是在Xilinx的Ultraslace架构下是96bitFPGA的DNA我们一般的使用场景是
    的头像 发表于 01-02 09:44 4239次阅读
    关于<b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b>如何获取<b class='flag-5'>FPGA</b>的Device DNA

    求实现FPGA模块的加密方法

    将生成加密bit文件直接下载到FPGA可否实现子模块加密?将ID验证与子模块一起综合成ngc文件
    发表于 04-18 10:45

    fpga加密方法

    本帖最后由 eehome 于 2013-1-5 09:45 编辑 FPGA加密方法 —用于系列xilinx5/6/7一项设计被抄袭主要通过抄袭电路板和IC解密来完成常用抄板步骤1.复印扫描板卡
    发表于 01-01 20:44

    求助:每次下载bit文件后显示效果不同

    各位高手:本人现在用Xilinx Spartan 6系列FPGA做一个项目,主要内容是将AD采样收到的LVDS数据在FPGA进行处理并在液晶屏上
    发表于 06-03 08:16

    FPGA生成bit文件出错

    错误:Bitgen:26 - Bitgen only supports DRC but not bitstream generation on this device.我用的是Xilinx的A7的片子,所有的都正确只是到生成bit文件
    发表于 01-05 18:25

    exew文件加密:利用破解版exe文件加密器对exe文件进行加密保护

    exew文件加密:利用破解版exe文件加密器对exe文件进行
    发表于 12-19 17:04

    能将过时的Xilinx FPGA的加载文件转换为XilinxFPGA文件吗?

    我有一个用于过时的Xilinx FPGA的加载文件。是否有机会将其转换为XilinxFPGA文件
    发表于 02-13 07:53

    如何使用Xilinx加密我的verilog文件

    你好,如何使用Xilinx加密我的verilog文件?我知道它可以在midelsim中完成,并且使用altera的加密工具,是否有适合Xilinx
    发表于 03-08 13:48

    XILINX FPGA/CPLD ISE详细下载教程

    XILINX FPGA/CPLD ISE下载教程 第一章 XILINX FPGA/CPLD ISE下载教程——下载.bit
    发表于 08-15 00:32

    请问如何对SRAM工艺的FPGA进行加密

    采用SRAM工艺的FPGA芯片的的配置方法有哪几种?如何对SRAM工艺FPGA进行有效加密?如何利用单片机对SRAM工艺的FPGA
    发表于 04-13 06:02

    ISE中下载Xilinxbit文件失败时的处理方案

    在使用ISE进行FPGAbit文件下载时,经常会遇到下载失败的问题,提示:"DONE did not go high".
    发表于 02-11 14:20 5991次阅读

    xilinx FPGA bit 文件加密

    大家好,今天咱们聊聊 xilinx FPGA bit 文件加密 ,当你的项目终于做完了,到了发布的关键节点,为了防止自己的心血被别人利用,最
    的头像 发表于 05-28 11:37 7375次阅读
    <b class='flag-5'>xilinx</b> <b class='flag-5'>FPGA</b> <b class='flag-5'>bit</b> <b class='flag-5'>文件</b><b class='flag-5'>加密</b>

    xilinx FPGA bit 文件加密

    当你的项目终于做完了,到了发布的关键节点,为了防止自己的心血被别人利用,最好对产品进行bit加密。 首先咱们来了解一下加密的优点,
    的头像 发表于 12-01 09:33 5117次阅读
    <b class='flag-5'>xilinx</b> <b class='flag-5'>FPGA</b> <b class='flag-5'>bit</b> <b class='flag-5'>文件</b><b class='flag-5'>加密</b>

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

    AES即高级加密标准,是一种区块加密,当然也是对称加密。区块固定为128bit,秘钥为128,192或256bit。AES有5种
    的头像 发表于 05-17 09:36 1796次阅读