4、信任根(RoT):什么是信任根、硬件信任根(eFuse/OTP)、软件信任根、信任根的选择标准

聊到安全启动,有个概念绕不开——信任根

说白了,信任根就是整个安全体系的「原点」。你想想看,如果连这个原点都不安全,那后面所有的校验、签名、度量,全都是空中楼阁。我经常跟团队讲一句话:信任根要是塌了,整个城堡就没了

4.1 什么是信任根

信任根,英文叫 Root of Trust,简称 RoT。它是一个绝对可信的实体,是整个信任链的起点。

它的核心职责就两件事:

  • 提供可信的度量:在启动过程中,测量下一级代码的完整性
  • 提供可信的存储:保存密钥、证书、哈希值等敏感信息

我举个例子你就明白了。假设你要验证一张钞票的真伪,你得先有一张「绝对真」的钞票作为参照。信任根就是这个参照物。

在嵌入式系统里,信任根通常分为两类:硬件信任根软件信任根

核心原则:信任根必须是不可篡改的。一旦被篡改,整个信任链就崩塌了。

4.2 硬件信任根(eFuse/OTP)

硬件信任根,顾名思义,是用物理方式实现的信任根。它不可更改,不可绕过。

最常见的实现方式有两种:eFuseOTP

4.2.1 eFuse

eFuse 的全称是电子熔丝。你可以把它想象成芯片上的一排「小保险丝」。

出厂时,所有 eFuse 都是「导通」状态。当你需要写入数据时,通过施加高电压把某些熔丝「烧断」。烧断后,这个状态就永久固定了。

我在项目中遇到过一件事。有个客户想通过软件修改 eFuse 里的密钥,结果发现根本做不到。为什么?因为 eFuse 是单向编程的——只能从 0 变成 1,不能从 1 变回 0。

我的经验:eFuse 适合存储少量、一次性写入的数据。比如根密钥、芯片唯一ID、安全配置位。千万别用它存大块数据,成本太高。

4.2.2 OTP(一次性可编程存储器)

OTP 和 eFuse 本质上是同一类东西,只是实现方式不同。OTP 通常基于浮栅晶体管,写入后电荷被锁住,无法擦除。

OTP 的优点是密度更高,同样面积能存更多数据。缺点是写入速度慢,而且对温度敏感。

我记得有一次做车规级芯片,客户要求在 OTP 里存储校准参数。结果高低温测试时,部分 OTP 单元的数据发生了翻转。嗯,这里要注意——OTP 的可靠性需要仔细评估,尤其是在极端环境下。

特性 eFuse OTP
编程方式 熔断金属丝 注入电荷
存储密度
写入速度
可靠性 中等(受温度影响)
典型用途 密钥、安全配置 校准参数、序列号

4.3 软件信任根

软件信任根,听起来有点矛盾——软件怎么能当「根」呢?软件不是可以修改吗?

你说得对。纯粹的软件信任根确实存在风险。但在某些场景下,我们不得不依赖软件来实现信任根。

典型的例子是 ROM Bootloader。芯片上电后,CPU 从 ROM 里执行第一段代码。这段代码是掩膜固化的,出厂后无法修改。从功能上看,它属于软件;但从不可篡改性看,它又具备硬件特性。

我个人习惯把软件信任根分为两类:

  • ROM 代码:固化在芯片内部,无法修改。这是最可靠的软件信任根。
  • 安全协处理器固件:运行在独立的安全核心上,通过硬件隔离保护。

我曾经参与过一个 IoT 项目,芯片没有硬件信任根,只能用 ROM Bootloader 做信任根。结果发现一个问题——ROM 代码有 bug,但没法修复。最后只能通过安全更新机制绕过这个 bug,但代价是增加了攻击面。

避坑指南:如果你选择软件信任根,一定要确保它满足两个条件:1)不可篡改(ROM 或硬件保护);2)足够小,便于形式化验证。我曾经见过一个项目,ROM 代码写了 200KB,结果漏洞多到数不清。

4.4 信任根的选择标准

选信任根,不是越贵越好,也不是越复杂越好。我总结了四个核心标准:

4.4.1 不可篡改性

这是第一位的。信任根如果可以被篡改,那它就不配叫「根」。

硬件信任根天然具备这个特性。软件信任根则需要通过 ROM 固化或硬件隔离来实现。

4.4.2 性能开销

信任根的操作会影响启动时间。尤其是 eFuse 的读取速度比较慢,如果每次启动都要读大量数据,用户可能会抱怨开机太慢。

我建议:信任根只存储最关键的信息。比如根密钥的哈希值,而不是整个密钥本身。

4.4.3 成本

eFuse 和 OTP 都需要额外的芯片面积。一颗芯片增加 0.1 平方毫米,量产百万颗就是不小的成本。

对于低成本 MCU,很多厂商选择用 ROM Bootloader 做信任根,配合外部 Flash 存储密钥。这是一种折中方案。

4.4.4 灵活性

硬件信任根一旦写入,就无法更改。这在某些场景下是个缺点。

比如,你的产品需要支持密钥轮换,或者需要修复安全漏洞。这时候,硬件信任根反而成了束缚。

我记得有个客户做智能门锁,一开始用了 eFuse 存储根密钥。后来发现密钥泄露了,但 eFuse 改不了。最后只能召回产品。嗯,这个教训挺深刻的。

选择标准 硬件信任根 软件信任根
不可篡改性 ★★★★★ ★★★☆☆
性能开销 ★★★☆☆ ★★★★★
成本 ★★☆☆☆ ★★★★★
灵活性 ★☆☆☆☆ ★★★★☆

我的建议:对于安全等级要求高的产品(如汽车、金融终端),优先选硬件信任根。对于成本敏感、安全等级一般的产品(如智能家居传感器),软件信任根也够用。关键是要清楚自己的威胁模型

好了,信任根的内容就聊到这里。下一章我们聊聊信任链的构建——有了根,怎么把信任传递下去。