逸江南

xilinx FPGA的程序加密方法

1
阅读(6050)

Xilinx所有的FPGA器件都有Device DNA,这是一个57bit的二进制序列,在器件生产的时候烧死到芯片里面,每个芯片都是唯一的。我们可以根据这个DNA,并结合相关的加密算法,来设计加密的安全流程。在这里,这个DNA安全流程就类似于ATM交易。在ATM上取钱,需要插入银行卡并输入交易密码。如果卡号和密码与存储在银行系统里的ID匹配,就会批准交易,反之,则禁止交易。具体到FPGA上的实现,如下图所示:

12.jpg

在图中,Device DNA是蓝色的部分,加密算法是绿色部分,外部存储器(Flash)是紫色部分。在使用时,我们通过一个比较器给出授权结果,流程如下:

1、器件上电,加载程序,进行FPGA配置。

2、读取FPGA DNA,并将其发送给加密算法。

3、加密算法生成有效的结果。

4、比较结果和存储的校验值,如果结果和存储的校验值相同,则程序可以正常运行。否则,禁止程序运行,或设置定时炸弹,破坏外部设备。

在这里即使DNA被外部用户读取获知,但由于加密算法(比如使用AES256加密、哈希算法加密等)是自己开发的,别人不知道,这就是整个安全流程的关键,一定要保密。算法是在FPGA架构内实现的,它只是FPGA内几百万个配置位中的少数几位,很难破解。

在这个基础上,还可以根据flash的ID,进一步的加密,如下图:

14.jpg

在FPGA Device DNA的基础上,再结合flash的ID进行二次验证加密,安全性会得到进一度的保障。

另外,在源头上,我们可以设置禁止程序回读的功能,以上几种方法,从硬件和软件上相结合,可以保证设计的安全性。

具体在程序实现时,流程图如下:

26.jpg

有需要该工程测试代码的,可以联系我,互相交流。

我的微信号:734176597


PS:基于FPGA的视频编解码QQ群:623495899 ,有兴趣的可以进来交流学习哈


Baidu
map