4、硬件信任根:eFuse与OTP、TPM安全芯片、硬件安全模块(HSM)
安全启动的链条,总得有个起点。这个起点不能是软件,因为软件可以被篡改。它必须是物理世界里的一个锚点——硬件信任根。
说白了,信任根就是「不可更改的初始秘密」。它决定了你的设备到底信谁。我见过不少团队,软件签名做得花里胡哨,结果信任根没锁死,攻击者直接改个公钥就绕过去了。嗯,那真是白忙一场。
这一章,我们聊聊三种主流的硬件信任根方案:eFuse/OTP、TPM 安全芯片,以及硬件安全模块(HSM)。
4.1 eFuse 与 OTP:芯片自带的「熔断开关」
eFuse 和 OTP(One-Time Programmable)是芯片内部的一次性可编程存储单元。你可以把它想象成芯片自带的「熔断开关」——烧断之后,就再也接不回来了。
我个人习惯把 eFuse 叫做「芯片的出厂烙印」。它最常见的用途,就是存储根公钥的哈希值。BootROM 在启动时,会读取这个哈希,然后校验下一级镜像的签名公钥是否匹配。
eFuse 的写入过程是不可逆的。一旦烧写错误,这颗芯片就废了。所以量产时,一定要有严格的校验流程。
| 特性 | eFuse | OTP(反熔丝) |
|---|---|---|
| 物理原理 | 熔断金属连线 | 击穿栅氧化层 |
| 默认状态 | 逻辑 0(未熔断) | 逻辑 1(未击穿) |
| 写入可靠性 | 中等(可能熔断不彻底) | 高(击穿后稳定) |
| 面积开销 | 较大 | 较小 |
| 常见工艺 | 28nm 以下 | 成熟工艺(180nm+) |
你想想看,如果攻击者能物理读取 eFuse 的内容,那存储的密钥就全暴露了。所以,现代 SoC 都会在 eFuse 控制器里加一道「读保护锁」。一旦熔断某个特定的安全位,eFuse 的内容就只能被硬件密码模块使用,软件无法直接读取。
4.2 TPM 安全芯片:独立的「保险柜」
TPM(Trusted Platform Module)是一个独立的密码协处理器。它有自己的 CPU、存储器和密码加速器。私钥在芯片内部生成,也永远留在芯片内部。
我记得第一次接触 TPM 时,最让我惊讶的是它的「密钥永不离开芯片」的设计。就算攻击者物理拆开芯片,也只能看到加密后的密文,真正的私钥在制造时就已经被物理保护起来了。
TPM 在安全启动中的角色,主要是提供平台身份认证和度量启动(Measured Boot)。它会记录每个启动组件的哈希值到 PCR(平台配置寄存器)中。这些 PCR 值只能通过扩展(Extend)操作来更新,无法直接写入。
PCR_new = SHA256(PCR_old || new_measurement)。这意味着启动顺序一旦改变,最终的 PCR 值就会完全不同。远程验证方可以通过比对 PCR 值,判断设备是否被篡改过。
TPM 2.0 规范相比 1.2 版本,增加了更多算法支持和更灵活的授权机制。我个人建议新项目直接上 TPM 2.0,别再用 1.2 了。
- TPM 1.2: 仅支持 SHA-1、RSA-2048。哈希碰撞风险已存在。
- TPM 2.0: 支持 SHA-256、ECC、SM2/SM3(国密)。算法可扩展。
- 固件 TPM(fTPM): 集成在 CPU 的固件中,成本低,但安全性弱于独立芯片。
4.3 HSM:工业级的「密钥保险库」
HSM(Hardware Security Module)是硬件信任根里的「重器」。它通常是一个独立的物理设备,有防篡改外壳、主动入侵检测、以及物理销毁机制。
我在做车规级安全启动方案时,接触过不少 HSM。说实话,第一次看到它的价格时,我吓了一跳——一台入门级的 HSM 就要几万块。但当你了解到它保护的密钥价值时,就会觉得这钱花得值。
HSM 的核心能力包括:
- 安全密钥生成: 使用硬件真随机数发生器(TRNG),确保密钥不可预测。
- 密钥生命周期管理: 从生成、存储、使用到销毁,全程受控。
- 高速密码运算: 专用硬件加速,签名速度可达每秒数千次。
- 多租户隔离: 不同业务域的密钥互相隔离,互不干扰。
- 审计日志: 所有密钥操作都有记录,可追溯。
在安全启动体系中,HSM 通常用于「根签名」环节。产品量产时,用 HSM 对固件进行签名,然后把签名后的固件和公钥一起烧录到设备中。设备端的信任根(eFuse 或 TPM)再校验这个签名。
4.4 三种方案的选型建议
没有最好的方案,只有最合适的方案。我根据项目经验,整理了一个选型参考:
| 场景 | 推荐方案 | 理由 |
|---|---|---|
| 低成本 IoT 设备 | eFuse/OTP | 集成在 SoC 内,零额外成本。存储根公钥哈希即可。 |
| PC/服务器 | 独立 TPM 2.0 | 标准化接口,支持远程证明,生态成熟。 |
| 汽车/工业控制 | HSM 或 安全MCU | 需要防物理攻击,满足功能安全等级(ASIL-D)。 |
| 高安全等级(金融/政务) | HSM + TPM 组合 | HSM 做根签名,TPM 做平台身份,双重保险。 |
嗯,这里要注意一点:不管选哪种方案,信任根的「不可绕过性」才是关键。如果攻击者能通过 JTAG 或其它调试接口跳过信任根校验,那再强的硬件也没用。所以,量产时一定要把调试接口锁死。
硬件信任根是安全启动的基石。它不一定要多复杂,但一定要「硬」——物理上不可篡改,逻辑上不可绕过。下一层,我们就要在这个基石上,搭建完整的签名校验链条了。