4、信任根实现方式:硬件信任根(eFuse/OTP)、软件信任根、混合信任根方案对比
信任根是整个设备信任链的起点。说白了,它就是那个「绝对可信」的锚点。如果信任根被攻破了,整条链就全废了。我在做安全架构评审时,发现很多团队在信任根选型上踩过坑——要么成本太高,要么安全性不够。
今天咱们就把三种主流方案掰开揉碎讲清楚:硬件信任根、软件信任根,以及混合方案。
4.1 硬件信任根:eFuse 与 OTP
硬件信任根,就是把密钥或哈希值烧死在芯片里。最常见的载体是 eFuse 和 OTP(One-Time Programmable,一次性可编程存储器)。
eFuse 的原理有点像保险丝——通过大电流熔断金属连线来存储信息。烧进去就改不了,除非你把芯片物理破坏掉。
OTP 则是通过击穿栅氧化层来存储数据。嗯,本质上也是一次性的。
核心特点:
- 不可篡改性:一旦写入,物理上无法修改
- 抗物理攻击:攻击者很难通过探针或电子显微镜读取内部状态
- 启动即用:上电后硬件自动加载,不需要软件参与
我在项目中遇到过一件事:某款 IoT 芯片的 eFuse 容量只有 128 位,结果客户想把整个证书链都塞进去。这显然不现实。eFuse 通常只存根密钥的哈希,或者一个很小的对称密钥。
| 特性 | eFuse | OTP |
|---|---|---|
| 存储原理 | 熔断金属连线 | 击穿栅氧化层 |
| 写入次数 | 1 次(部分支持多次) | 1 次 |
| 容量 | 通常 128b ~ 4Kb | 通常 256b ~ 8Kb |
| 读取速度 | 快(并行读取) | 快(并行读取) |
| 成本 | 中等 | 较低 |
注意:eFuse 和 OTP 一旦烧录错误,芯片就废了。我曾经见过一个团队在量产阶段烧录脚本写错了位偏移,结果 5000 片芯片全部报废。所以量产前一定要做「干烧」验证——先在小批量上确认流程无误。
4.2 软件信任根:纯代码实现的信任锚点
软件信任根,就是不依赖专用硬件,而是通过 BootROM 中的不可修改代码来建立信任。BootROM 是芯片出厂时固化在只读存储器中的一段代码,用户改不了。
你想想看,BootROM 本身是只读的,攻击者没法篡改它。BootROM 启动后,会校验下一级 Bootloader 的签名。只要签名验证通过,信任链就建立起来了。
软件信任根的优势:
- 零硬件成本:不需要 eFuse 或 OTP,芯片面积更小
- 灵活性高:可以通过升级 Bootloader 来更新信任策略
- 部署简单:不需要额外的烧录工序
但缺点也很明显:
- 公钥存储在 BootROM 中:如果公钥被提取,攻击者可以伪造签名
- 抗物理攻击能力弱:通过激光或聚焦离子束(FIB)可以修改 BootROM 内容
- 启动速度较慢:每次启动都要做签名验证
我的建议:软件信任根适合成本敏感、攻击面较小的设备。比如智能灯泡、传感器节点这类产品。但如果是金融终端或汽车 ECU,我强烈建议上硬件信任根。
4.3 混合信任根:取长补短
混合方案是目前最主流的做法。它把硬件信任根和软件信任根结合起来:用 eFuse/OTP 存储根密钥,用 BootROM 做签名验证逻辑。
具体怎么做?
- 芯片出厂时,在 eFuse 中烧录一个 256 位的根密钥哈希
- BootROM 启动后,从外部 Flash 读取公钥证书
- 计算公钥证书的哈希,与 eFuse 中的哈希比对
- 如果匹配,用该公钥验证下一级 Bootloader 的签名
这样做的好处是:
- 公钥可更新:只要重新烧录 eFuse(如果支持),就能更换公钥
- 安全性高:攻击者即使拿到公钥,也无法篡改 eFuse 中的哈希
- 成本可控:eFuse 只需要存储哈希值,容量要求低
混合方案的核心思想:硬件提供「不可篡改的存储」,软件提供「灵活的验证逻辑」。两者互补,缺一不可。
4.4 三种方案对比总表
| 维度 | 硬件信任根 | 软件信任根 | 混合信任根 |
|---|---|---|---|
| 安全性 | 高(物理不可克隆) | 中(依赖 BootROM 只读性) | 高(硬件+软件双重保护) |
| 成本 | 高(需要额外硬件) | 低(零硬件成本) | 中(小容量 eFuse) |
| 灵活性 | 低(一次性烧录) | 高(可升级 Bootloader) | 中(公钥可更新) |
| 启动速度 | 快(硬件直接加载) | 慢(软件签名验证) | 中(硬件加载+软件验证) |
| 适用场景 | 高安全设备(金融、汽车) | 低成本设备(IoT 传感器) | 大多数消费电子 |
4.5 信任根方案选型决策流程
下面这张图是我自己总结的选型决策流程。每次做新项目,我都会先跑一遍这个流程。
4.6 避坑指南:我踩过的几个坑
做信任根方案这么多年,我总结了几条血泪教训:
- 别把 eFuse 当普通存储用:eFuse 的写入次数有限,而且写入过程会产生热量。我曾经在高温环境下批量烧录,结果部分芯片的 eFuse 熔断不彻底,导致读取错误。
- BootROM 的签名验证算法要留余量:有些芯片的 BootROM 只支持 RSA-2048,但几年后 RSA-2048 可能就不安全了。我建议选支持 ECDSA 或 Ed25519 的芯片。
- 混合方案的哈希比对要防侧信道攻击:如果哈希比对是逐字节进行的,攻击者可以通过时序分析猜出哈希值。一定要用常量时间比较函数。
- 量产烧录流程要自动化:手动烧录 eFuse 太容易出错了。我见过一个团队用 Excel 管理烧录数据,结果把生产环境和测试环境的密钥搞混了。
重要提醒:信任根一旦部署,后期很难更改。所以在方案选型阶段,一定要考虑未来 5-10 年的安全需求。别为了省几毛钱,给产品留下致命漏洞。
4.7 小结
三种信任根方案各有优劣。硬件信任根最安全但成本高,软件信任根最灵活但安全性有限,混合方案是大多数场景下的最佳选择。