项目终于搞完了,到了发布的关键节点,为了防止自己的心血被别人利用,最好对产品进行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控制寄存器:
一共有6个bit有用,各种设置的优缺点表里有详细说明,使用参考设置101100就行了。
其中bit0很重要,万一置位了,aes的key又搞丢了,fpga就变砖头了。
具体的操作步骤如下:
1生成key和加密bit
下面三个key可以自己生成填进去,也可以由软件随机生成。
要打开edit device properties,先要打开sythesized design 或者implement design,然后在generate bitstream右键设置
2下载efuse
3烧写fpga程序
program
4验证
很简单,读出mcs然后烧到另一个fpga里面去,可以看到不能工作。当然,也可以在前面efuse设置时选择只能加载aes加密的bit文件,这样换一个不加密的bit下进去也能验证。
场效应管恒流源电路图(三种电路图分享)
新唐科技N79E875单片机简介
VR将彻底改变未来电子商务模式
电池储能已成为当今储能行业发展的主流
万众瞩目!微软发布全新Surface Laptop搭载尖端处理器
如何对xilinx FPGA进行bit文件加密
关于建筑强弱电的基础知识
5G网络时代无人驾驶和车联网的大幕才能真正拉开
洗衣机新型排水管在-20℃的极端环境下依然抗冻防爆裂
使用GMSL隧道验证远程汽车外设
Smart首发无人驾驶车概念图 将于9月初正式展示
国内首个通过NMPA审批的数字药品:术康APP
大唐在TDD专利上的成绩为5G研发和布局提供了更坚定的信心
多层陶瓷外壳的失效分析和可靠性设计
如何查看自己的手机信号强度?
华为P40摄像头组件曝光 标准版或采用后置三摄设计
富士康爆炸案对iPad 2的影响分析
“智慧法院”!安泽AI导诉机器人成都市高新区人民法院上线!
使用VTune放大器XE的3个更好的OpenMP性能调整秘诀
属于AMD的辉煌时代真正回来了