FPGA 设计硬化 Hardening
更新时间:2026-10-01。「硬化(hardening)」在 FPGA 语境里有两层含义:性能层面,把高频/高复用模块从通用 LUT/FF 软逻辑固化为硬宏或专用块;安全层面,把设计和密钥从「谁都能读、能改」的状态加固为防克隆、防篡改、防分析的系统。本篇专家篇聚焦后者——FPGA 设计硬化的安全维度与加固 IP,比特流加密和安全启动的机制细节可先回看 FPGA 安全:比特流加密认证与安全启动,量产烧录工序见 FPGA 量产。
本文要回答的问题
- FPGA 里到底哪些东西是攻击者想要的资产,威胁模型应该按什么口径建?
- 比特流加密的密钥放在 BBRAM 还是 eFUSE,工程上各自绑定了什么代价?
- 光加密不够,认证比特流、安全启动、防回读、JTAG 收敛分别堵住哪条攻击路径?
- 侧信道分析和故障注入是怎么把密钥「算」出来的,RTL 和板级各能做什么?
- AES/SHA/RSA/ECC 用软逻辑实现还是硬化为硬核 IP,资源和吞吐差多少?
一、先钉死威胁模型:资产、对手与六类攻击
安全做不好的项目,共性是威胁模型停留在「我们加个密吧」。先列资产:比特流本身(团队多年 RTL 的完整载体)、密钥(设备身份与通信机密的根)、运行时配置(部分可重配置片段、在线升级包)、片外数据(flash 内容、DDR 中的敏感数据),以及设备行为(产品算法、控制策略)。再按对手能力分层:抄板厂只拆 flash 和复制 JTAG 链,成本几百元;有实验室的对手会上逻辑分析仪、可控温台、电磁探头;国家级对手则有开盖(decapsulation)、聚焦离子束和探针台能力。防护深度跟着对手走,消费级产品做到防抄板即可,金融与国防场景必须按物理攻击设计。
| 威胁 | 典型路径 | 主要后果 | 对手门槛 |
|---|---|---|---|
| 比特流克隆 | 拆下 flash 读出,原样烧到同型号板 | 产品被零成本复制 | 低 |
| 配置回读 | JTAG/SelectMAP 回读配置存储器 | 设计被逆向、网表被还原 | 低-中 |
| 比特流篡改 | 劫持升级通道或替换 flash | 植入后门、运行攻击者逻辑 | 中 |
| IP 盗版 | 比特流反汇编、网表提取 | 核心 IP 流失、竞品复现 | 中 |
| 侧信道分析 | 测功耗/电磁/执行时间差分分析 | 密钥被逐 bit 恢复 | 中-高 |
| 故障注入 | 电压/时钟毛刺、电磁脉冲、激光 | 跳过校验、读出密钥、提权 | 高 |

这张攻击面图把六类威胁落到物理入口:flash 对应克隆,JTAG 和配置接口对应回读与篡改,电源/时钟轨对应故障注入,而侧信道攻击者并不需要「进入」芯片,只在电源管脚或芯片表面用探头被动采集。后文每一层防护都对应封掉图上的一个入口。
二、比特流加密与密钥:eFUSE 与 BBRAM 的工程选择
比特流加密的机制不复杂:综合布局布线后的比特流用 AES-256(CBC/GCM,各厂商模式不同)加密后存入 flash,上电时 FPGA 在片内解密配置;攻击者拿到密文,没有片内密钥就无法在另一块芯片上复现配置。真正决定安全性的是密钥存储和产线流程,而不是算法强度。主流有两种密钥载体:电池备份密钥(BBRAM,Battery-Backed RAM)和 eFUSE 一次性熔丝。
| 维度 | eFUSE 熔丝 | BBRAM 电池备份 RAM |
|---|---|---|
| 可读性 | 物理不可读,只有片内解密电路能用 | 不可读出,但掉电即失 |
| 可改写 | 一次性,烧错/泄露即整块报废 | 可重写,支持密钥轮换 |
| 是否依赖电池 | 不需要 | 需要板上纽扣电池,5-10 年寿命 |
| 产线时机 | 通常量产最后一步,不可逆 | 可在任何工序注入 |
| 典型风险 | 烧录失误无法挽回 | 电池没电/被拆即密钥丢失 |
| 适用场景 | 大批量、密钥长期固定的产品 | 需轮换密钥、高安全可维护设备 |
工程上密钥通常分级:主密钥(master key)保存在 HSM(Hardware Security Module,硬件安全模块)里永不出机房,设备密钥由主密钥加密后在产线安全注入,烧密钥与烧比特流的工序、人员、记录分离。私钥一旦泄露,所有已签比特流的可信度同时崩塌,所以密钥版本、轮换和撤销流程要在产品定义阶段就设计好,而不是出事后追悔。比特流加载的基础机制见 比特流烧录入门。

图中要注意的是密钥的流向:密钥永远不经过片外总线,flash 里只有密文,注入环节是它唯一一次「旅行」,这就是产线安全成为整个体系最薄弱环节的原因。
三、认证比特流与安全启动:从「看不懂」到「改不了」
加密只解决机密性(防读、防克隆),不解决完整性。攻击者不需要看懂密文,只要能让设备加载一段他构造或篡改过的比特流,就能植入后门。认证比特流用 RSA 或 ECC 私钥对比特流哈希签名(轻量场景用 HMAC),FPGA 的启动 ROM 内置公钥,签名校验失败一律拒绝配置。在 Zynq 这类 SoC FPGA 上,它进一步做成一条信任链:固化在硅中的 BootROM 是不可更改的信任根(RoT, Root of Trust),先验 FSBL(First Stage Boot Loader,第一级启动程序)签名,FSBL 再验比特流和后续固件,信任逐级传递;版本号熔丝提供防回滚,拒绝刷回带漏洞的旧版本。Zynq UltraScale+ 和 Versal 还把 RSA-4096、SHA-3/384、AES-GCM 做进了片内硬化的启动模块。

读图抓住两点:信任只能从 BootROM 单向向下传,任一环验签失败链路即断;防回滚靠的是片内版本号只能单向增大,攻击者即使有旧版合法签名包也刷不回去。SoC 侧细节见 Zynq UltraScale+ 与 Versal。
四、防回读与调试口收敛
加密比特流配下去之后,如果 JTAG 仍能回读配置存储器,攻击者就能拿到解密后的实际配置,加密形同虚设。防护是组合拳:量产时烧 eFUSE 永久关闭回读;JTAG 选择「永久禁用 / 密码或挑战响应认证 / 产线测试后关闭」三档;SelectMAP、ICAP 等配置口禁止加载未认证数据。代价必须在产品定义时认账:JTAG 永久关闭后,现场 ILA 调试和返修诊断都没了,不少产品因此保留一个带认证的恢复口。需要强调,禁用 JTAG 只封住一个入口——flash 明文照样被抄、侧信道照样能测,安全永远是分层叠加。调试链的工作原理见 JTAG 链进阶。
五、防侧信道与防故障注入:从算法到板级
加密算法的数学强度和它的实现安全性是两件事。简单功耗分析(SPA)直接从功耗曲线辨认密钥相关的操作分支;差分功耗分析(DPA)对成千上万条曲线做统计相关性,逐 bit 恢复密钥;电磁分析(EMA)在芯片表面近场定位,比功耗更难靠滤波防护;时间攻击利用条件分支造成的执行时长差异。故障注入则是另一族:时钟/电压毛刺让某条跳转指令出错从而跳过签名校验,电磁脉冲和激光能把翻转定位到单个寄存器。
| 攻击 | 可观察/可利用的现象 | RTL/算法对策 | 电路/板级对策 |
|---|---|---|---|
| SPA | 单条曲线辨认操作 | 恒权编码(如 WDDL)、消除密钥相关分支 | 电源去耦、均衡负载 |
| DPA/EMA | 多条曲线统计相关 | 一阶/高阶掩码、密钥随机刷新 | 噪声注入、电磁屏蔽、稳压器选型 |
| 时间攻击 | 执行时长随密钥变化 | 常量时间实现、填充到固定周期 | — |
| 毛刺/欠压 | 指令跳错、校验被绕过 | 关键比较冗余化、安全状态机 | 电压/频率监测器、 brown-out 复位 |
| 电磁脉冲/激光 | 单 bit 翻转 | 双模/三模冗余、错误校验 | 金属屏蔽层、主动网格、开盖即清零 |
掩码(masking)的思路是把每个中间值用随机数拆成份额,使功耗与真实值无关;随机插入(dummy cycles)打乱时序对齐。这些对策都有实打实的代价:一阶掩码大约让 AES 的面积和功耗翻倍、频率下降,且必须由懂侧信道的团队实现——自己写的「掩码」在实测台上经常一攻就破。故障注入侧,安全器件(tamper-resistant 器件)把电压、温度、时钟传感器和绕顶层金属的防篡改网格做进封装,检测到异常立即清零密钥(zeroization)。这类器件是 FPGA 设计硬化在物理层的终极形态,常见于 POS、HSM 和军工领域。
六、加密算法 IP:AES/SHA/RSA/ECC 的资源与吞吐
安全功能最终要在 FPGA 里落地,这正是性能意义上的硬化与安全加固的交汇点。加密算法 IP 有三种来源:通用软逻辑综合(开源或自研 RTL)、厂商固化硬宏(如部分器件内置的 AES-GCM 块)、以及第三方认证加固 IP。下表给出中端器件(约 200K LUT 量级、300 MHz 时钟)上的典型工程数据,实际值随架构和工具波动,量级用于决策足够。
| 算法 IP | 软逻辑典型资源 | 软实现吞吐 | 硬化/流水线后 | 关键加速手段 |
|---|---|---|---|---|
| AES-256-GCM | 3-6K LUT + 若干 BRAM/DSP | 0.5-2 Gb/s | 10-50 Gb/s | 全展开轮函数、流水线 |
| SHA-256 | 1-2K LUT | 1-3 Gb/s | 5-15 Gb/s | 多轮压缩、多通道并行 |
| RSA-2048 | 8-15K LUT + DSP/BRAM | 数十-数百次签名/秒 | 数千次/秒 | Montgomery、硬化乘法器 |
| ECC P-256 | 5-10K LUT + DSP | 数百-数千次签名/秒 | 上万次/秒 | 点乘流水线、常数时间 |
| TRNG 真随机数 | 数百 LUT + 噪声源 | — | 须按熵源认证 | 抖动振荡器 + 健康检测 |
规律很清楚:对称算法和哈希结构规整,全展开加流水线后用面积线性换吞吐;RSA/ECC 的瓶颈在大整数乘法,DSP 块和硬化乘法器收益最大。把高频、复用面广的加密通道做成固化布局的硬宏(hard macro),相比每次重新综合的软逻辑,时序确定、面积通常省 20%-40%,代价正是 IP 核使用入门 和 IP 版本管理 里反复强调的:绑定器件、绑定速度等级、绑定工具版本。在 eFPGA 和 ASIC 化项目里,团队常直接把 AES/SHA/公钥加速器(PKA)连同密钥库做成固定硅块——这就是「硬化」一词两层含义合流的地方。

这张加固安全子系统图对应实际产品里的组织方式:信任根、密钥库、TRNG 和算法引擎构成一个边界清晰的「安全岛」,密钥相关信号不出岛,用户逻辑通过 AXI-DMA 只交换明文/密文数据。评估 IP 时除了资源和吞吐,还要问三件事:有没有侧信道评估报告、是否常量时间实现、随机数来源是否独立。
七、合规:从威胁模型到认证证据
高安全产品最终要把工程动作变成认证证据。常见框架包括:FIPS 140-3(美国联邦密码模块标准,分级到物理防篡改等级,审核算法、密钥管理和零化)、Common Criteria(通用准则,按 EAL 等级评估整个产品)、以及支付领域的 PCI PTS。合规不是最后补文档——FIPS 要求算法带合法运行模式、密钥进入与清零全程可审计、侧信道在对应等级有实测报告。建议在设计阶段就按目标认证建追溯表:每条威胁对应哪项设计措施、由哪个 IP 实现、证据是哪份测试报告。没有这张表,认证阶段往往被迫返工重选 IP,这是比写驱动昂贵得多的代价。
八、常见坑
- 威胁模型照搬别家:不区分抄板厂和开盖对手,要么过度设计、要么漏掉物理攻击。
- 以为开了比特流加密万事大吉:回读没关、JTAG 裸奔,解密后的配置照样被读走。
- 密钥流程缺位:明文密钥出现在产线电脑和日志里,最坚固的芯片配最松散的工序。
- 自研掩码不上台测:数学上「像掩码」和实测抗 DPA 是两回事,必须用评估台验证。
- 只比 LUT 数选加密 IP:忽略侧信道报告、常量时间和 TRNG 质量,认证阶段推倒重来。
- 硬宏交付不给时序模型与约束:集成方时序无法收敛,换一个工具版本宏就失效。
- 永久关闭 JTAG 不留恢复口:量产后现场无法诊断,返修成本远超省下的认证口成本。
这一篇在知识体系里的位置
- 机制基础:FPGA 安全:比特流加密认证与安全启动 讲清比特流加密与信任链细节,本篇在其之上展开威胁模型、攻击防护与加固 IP 选型。
- 工程配套:FPGA 量产 覆盖烧录工序,IP 版本管理 处理硬宏版本绑定,JTAG 链进阶 对应调试口收敛。
- 可靠性背景:FPGA SEU 可靠性 是辐射与配置翻转的另一层「加固」语境,与安全故障注入互为镜像。
总结
FPGA 设计硬化在安全维度上是一道分层防线:以资产和对手能力为起点建威胁模型,用片内 AES 解密和 eFUSE/BBRAM 密钥防克隆、签名认证与信任根防篡改、回读关闭和 JTAG 收敛防逆向、掩码恒权与传感器网格防侧信道和故障注入;AES/SHA/RSA/ECC 按吞吐目标在软逻辑与固化硬核之间取舍,并把每条威胁对应到 FIPS 140-3 等认证证据——加密算法的强度永远不是短板,密钥流程、物理入口和实现侧信道才是。