4、信任根(RoT):什么是信任根、硬件信任根 vs 软件信任根、eFuse与OTP存储
各位同学,今天我们聊一个安全启动里最核心、也最容易被忽视的概念——信任根(Root of Trust,简称 RoT)。
说白了,信任根就是整个安全体系的“第一块砖”。你想想看,如果连这块砖都是歪的,那后面砌再多墙也没用。我做了这么多年嵌入式安全,见过太多产品因为信任根没选好,最后整个安全体系形同虚设。
4.1 什么是信任根?
信任根,英文叫 Root of Trust。它不是一个具体的硬件,也不是一段代码,而是一个不可篡改、绝对可信的起点。
我习惯用一个比喻来解释:想象你要验证一张钞票的真伪。你手里得有一张绝对真的钞票作为对照,对吧?信任根就是那张“绝对真的钞票”。
在安全启动的链条里,信任根负责做三件事:
- 度量(Measure):测量下一级代码的哈希值或签名
- 存储(Store):安全地存放度量结果和密钥
- 报告(Report):向外界证明当前系统的可信状态
这里有个关键点:信任根本身不能被度量。因为它就是起点,没人能站在它前面去检查它。所以,信任根必须从物理上就是安全的。
核心原则:信任根必须是不可伪造、不可篡改、不可绕过的。如果攻击者能修改信任根,那整个安全体系就崩塌了。
4.2 硬件信任根 vs 软件信任根
信任根分两种:硬件信任根和软件信任根。这两者的区别,我当年花了很长时间才真正搞明白。
| 对比维度 | 硬件信任根 | 软件信任根 |
|---|---|---|
| 载体 | 专用安全芯片、SoC内置安全区 | BootROM、不可修改的固件 |
| 防篡改能力 | 物理级防护(抗探针、抗侧信道) | 依赖只读存储,可被物理攻击 |
| 性能 | 硬件加速,速度快 | 纯软件执行,相对较慢 |
| 灵活性 | 出厂后难以更改 | 可通过固件更新修复漏洞 |
| 典型场景 | 金融终端、汽车ECU、服务器 | IoT设备、消费电子 |
| 成本 | 高(额外芯片或面积) | 低(纯逻辑实现) |
硬件信任根,说白了就是“物理上就安全”。比如苹果的 Secure Enclave、ARM 的 TrustZone,它们把密钥和敏感操作隔离在一个独立的硬件区域里。攻击者就算拿到了芯片,也很难直接读取里面的内容。
软件信任根呢?它通常放在 BootROM 里。BootROM 是芯片出厂时固化的一段只读代码,理论上不可修改。但我在项目中遇到过一个问题:有些芯片的 BootROM 有漏洞,攻击者可以通过电压毛刺或激光注入来篡改执行流。嗯,这就是软件信任根的软肋。
我的建议:如果你的产品对安全性要求很高(比如车规级、金融级),别犹豫,上硬件信任根。如果只是消费级 IoT,软件信任根配合好的 OTP 存储也够用。
4.3 eFuse 与 OTP 存储
聊信任根,绕不开 eFuse 和 OTP。这两个东西是信任根的“保险箱”。
4.3.1 什么是 OTP?
OTP 全称 One-Time Programmable,一次性可编程存储器。顾名思义,它只能写一次,写进去就改不了。
OTP 的实现方式有很多种:
- 熔丝(Fuse):出厂时全部导通,编程时熔断某些位
- 反熔丝(Anti-Fuse):出厂时全部断开,编程时导通某些位
- 电荷陷阱(Charge Trap):通过注入电荷改变阈值电压
我最常用的是 eFuse,它是 IBM 发明的一种电熔丝技术。eFuse 的编程原理很简单:通过大电流把金属连线熔断,就像烧断一根保险丝。
4.3.2 eFuse 在安全启动中的角色
eFuse 在安全启动里主要干这几件事:
- 存储根密钥:把公钥哈希或对称密钥烧进 eFuse,作为信任根的锚点
- 控制安全状态:比如“调试接口是否永久关闭”、“是否强制启用安全启动”
- 记录生命周期:芯片从“开发态”到“量产态”再到“报废态”,每一步都通过烧 eFuse 来锁定
我曾经在一个项目里踩过坑:芯片量产时,我们忘了烧录调试锁定位。结果产品出货后,攻击者通过 JTAG 接口直接读出了固件。嗯,从那以后,我每次做量产方案都会在 checklist 里加一条——“确认 eFuse 调试位已烧断”。
避坑指南:eFuse 烧录是不可逆的。一旦烧错,芯片就废了。我建议你在量产前做三件事:1)在开发板上反复验证烧录流程;2)写一个烧录校验脚本,烧完立即回读确认;3)保留至少 10% 的 eFuse 位作为备用,万一需要追加信息呢?
4.3.3 eFuse 的物理安全考量
eFuse 虽然叫“一次性”,但攻击者还是有办法搞破坏:
- 光学显微镜:通过芯片去封装,用显微镜直接观察 eFuse 的熔断状态
- 探针台:用微探针直接读取 eFuse 的电平
- 电压毛刺:在烧录时注入干扰,让 eFuse 处于“半熔断”状态
怎么防?我个人的经验是:
- 使用物理防护层:在 eFuse 区域上方覆盖金属屏蔽层,让光学和探针攻击失效
- 加入主动屏蔽网:一旦检测到芯片被开封,自动擦除敏感数据
- 采用冗余存储:同一个密钥存三份,烧录后逐位比对,防止半熔断攻击
4.4 信任根的整体架构
说了这么多,我们来画一张图,把信任根、eFuse、安全启动的关系理清楚。
从这张图可以看得很清楚:信任根是整个安全启动链的锚点。它通过 eFuse/OTP 存储根密钥,通过 BootROM 执行初始度量,然后一级一级往下传递信任。每一级都验证下一级的签名或哈希,直到整个系统启动完成。
关键认知:信任根不是某个具体的芯片或代码,而是一个信任传递的起点。只要这个起点是安全的,整个链条就是安全的。反之,如果起点被攻破,后面做得再好也没用。
4.5 如何选择信任根方案?
最后,我分享一下在实际项目中怎么选型。没有银弹,只有权衡。
| 项目类型 | 推荐方案 | 理由 |
|---|---|---|
| 低成本 IoT 传感器 | 软件信任根 + 片上 OTP | 成本敏感,攻击门槛低,够用就行 |
| 智能家居网关 | SoC 内置硬件信任根 + eFuse | 需要防远程攻击,但物理攻击风险低 |
| 汽车 ECU | 独立安全芯片(HSM)+ eFuse | 车规级要求,必须防物理攻击和侧信道 |
| 金融 POS 终端 | 安全元素(SE)+ 反熔丝 OTP | PCI 认证要求,需要最高等级防护 |
我个人习惯是:能用硬件信任根就别用软件。虽然成本高一点,但省心。你想想看,一个产品卖出去几万台,万一因为信任根被攻破导致批量召回,那点硬件成本根本不算什么。
好了,信任根的内容就讲到这里。记住一句话:信任根是安全启动的基石,选对了,后面的事就顺了;选错了,后面全是补窟窿。