在迁移 ISE 工程至 Vivado 时,可能遇到部分 Verilog 文件被加密的情况。本文介绍如何在 Vivado 中对 Xilinx FPGA 的 Bit 文件进行 AES256 加密。
加密的优点
Xilinx V6 和 7 全系列 FPGA 支持 AES256 加密,主要好处包括:
- 防止别人回读或对程序进行逆向读取;
- 防止更改烧写的 Bit 文件。
简单的 BITSTREAM.READBACK.SECURITY 设置仅能禁止回读或重新烧写,若对手具备逻辑分析仪等硬件能力,建议使用 AES256 加密。
AES 算法简介
AES 是高级加密标准,采用 CBC 模式。需要 128bit 初始向量 (StartCBC) 和 256bit AES Key。此外,Xilinx 提供 HMAC 认证以检查消息完整性。
因此需要三个参数:256bit-HMAC、128bit-StartCBC 和 256bit-AES Key。这些 Key 可自己生成或由软件随机生成。
示例配置:
Device xc7a35t;
Key 0 0f2ec1178ae0d04c8c1431afe8266d08e799b01c5c486c2567f3621f47319aaf;
Key StartCBC a6262d508c338eeab815340a7832436d;
Key HMAC d82e72733a7bd7904c802d13db37187b8ad20b972ac163470c5a4d239bce6308;
加密的 AES Key 可存到 FPGA 内部易失性的 BBR 或只能烧写一次(OTP)的 eFUSE 中。
eFUSE 寄存器
eFUSE 寄存器包含存放 AES 密钥、用户信息、设备 DNA 和控制位。重点关注 eFUSE 控制寄存器,其中 bit0 至关重要,若置位且 AES Key 丢失,FPGA 将变砖。
参考设置值为 101100。
具体操作步骤
1. 生成 Key 和加密 Bit
打开 Edit Device Properties,需先打开 Synthesized Design 或 Implement Design,然后在 Generate Bitstream 右键设置。
2. 下载 eFUSE
按照向导下载 eFUSE 配置文件。
3. 烧写 FPGA 程序
使用 Program 功能烧写 Bit 文件。

