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 做签名验证逻辑。

具体怎么做?

  1. 芯片出厂时,在 eFuse 中烧录一个 256 位的根密钥哈希
  2. BootROM 启动后,从外部 Flash 读取公钥证书
  3. 计算公钥证书的哈希,与 eFuse 中的哈希比对
  4. 如果匹配,用该公钥验证下一级 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 小结

三种信任根方案各有优劣。硬件信任根最安全但成本高,软件信任根最灵活但安全性有限,混合方案是大多数场景下的最佳选择。