4、信任根与安全存储:信任根(RoT)的概念、OTP(一次性可编程)存储、eFuse与安全密钥的烧录策略

好,咱们今天聊点硬核的——信任根和安全存储。说实话,这是整个安全启动体系的基石。你想想看,如果连最底层的信任都建立不起来,上面再花哨的校验都是空中楼阁。

4.1 信任根(RoT)到底是什么?

信任根,英文叫 Root of Trust,简称 RoT。说白了,它就是整个系统里绝对可信的那个起点。就像你信任你的父母一样,不需要任何理由。

在嵌入式系统里,RoT 通常是一个硬件模块。它负责做三件事:

  • 度量:测量下一级代码的完整性
  • 存储:保管最核心的密钥
  • 报告:向外界证明自己的身份

我个人习惯把 RoT 比作「保安队长」。他手里拿着唯一一把真正的钥匙,其他人要进大楼,都得先过他这一关。我在项目中遇到过一种情况:某芯片厂商把 RoT 做在了软件里,结果被攻击者用电压毛刺攻击直接绕过。嗯,从那以后我坚决要求 RoT 必须硬件化。

核心原则:信任根必须是不可篡改的、不可绕过的、不可伪造的。这三个「不可」缺一不可。

4.2 OTP 存储——一次写,终生读

OTP 是 One-Time Programmable 的缩写。一次可编程,写进去就改不了。这玩意儿在安全领域太重要了。

为什么需要 OTP?因为密钥不能存在 Flash 里。Flash 可以被擦除、被读出来、被篡改。而 OTP 一旦烧录,物理上就锁死了。

常见的 OTP 实现方式有几种:

类型 原理 特点
熔丝型 烧断金属丝 不可逆,物理破坏
反熔丝型 击穿绝缘层 面积小,可靠性高
eFuse 电迁移效应 可编程,精度高

我记得有一次做项目,客户要求密钥必须 100% 不可恢复。我们最后选了反熔丝型 OTP,因为它的物理破坏程度最高,即使做芯片逆向也读不出来。

注意:OTP 烧录是一次性的。一旦烧错,芯片就废了。所以烧录前的验证流程必须严格。我曾经见过一个团队,因为脚本写错了,把测试密钥烧进了量产芯片,结果 10 万片全部报废。

4.3 eFuse——更灵活的 OTP

eFuse 是 IBM 发明的一种技术。它利用电迁移效应,让金属丝在电流作用下断裂。和传统熔丝比,eFuse 有几个优势:

  • 可以在封装后编程
  • 支持多次验证(先读再烧)
  • 精度更高,可以按位控制

但 eFuse 也有坑。它需要较大的编程电流,而且烧录后电阻值会漂移。我在项目中遇到过一个问题:某批次芯片的 eFuse 烧录后,过了一段时间电阻值回升,导致读出的数据出错。后来查出来是工艺偏差,只能加严测试标准。

eFuse 的典型应用场景:

  1. 芯片唯一 ID:每颗芯片烧录不同的序列号
  2. 密钥存储:烧录根密钥,用于安全启动
  3. 配置锁定:锁定芯片的调试接口、JTAG 等
  4. 版本控制:记录芯片的版本号、修订号

4.4 安全密钥的烧录策略

好,到了最关键的环节——密钥怎么烧进去?

你想想看,如果密钥在烧录过程中被截获了,那整个安全体系就形同虚设。所以烧录策略必须精心设计。

4.4.1 烧录环境

密钥烧录必须在安全环境中进行。我建议:

  • 使用专用的烧录设备,不能和产线共用
  • 烧录过程全程加密传输
  • 烧录完成后,密钥从主机内存中立即擦除

4.4.2 密钥分层

不要把所有鸡蛋放在一个篮子里。密钥也要分层:

层级 名称 存储位置 用途
L0 根密钥 OTP/eFuse 验证 BootROM
L1 设备密钥 OTP 或安全 RAM 验证 Bootloader
L2 应用密钥 加密后存 Flash 验证应用固件

这样做的好处是:即使应用密钥泄露了,根密钥还在,系统依然可控。

4.4.3 烧录流程

我推荐一个经过验证的烧录流程:

1. 芯片上电,进入烧录模式
2. 主机发送加密的密钥包
3. 芯片用内置的硬件解密引擎解密
4. 将解密后的密钥写入 OTP/eFuse
5. 回读验证,确认烧录正确
6. 锁定 OTP 区域,防止再次写入
7. 主机清除所有临时密钥数据

小技巧:烧录完成后,一定要做「读回验证」。我曾经遇到过烧录器接触不良,导致某几位没烧进去,结果芯片在产线上全挂了。后来我们加了一道「烧录后校验」的工序,问题就解决了。

4.5 避坑指南

做安全存储这么多年,我踩过的坑不少。分享几个典型的:

  • 坑一:OTP 容量不够。设计初期没算好,密钥太大放不下。后来只能压缩密钥长度,降低了安全性。建议留 20% 的余量。
  • 坑二:烧录时序不对。eFuse 对时序要求很严,电压不稳就会烧失败。我建议在烧录时监控电源,用示波器抓一下波形。
  • 坑三:密钥备份问题。OTP 烧坏了怎么办?没有备份。后来我们设计了一个「双 OTP 区域」的方案,主区域烧坏了还有备用区域。
  • 坑四:测试密钥混入量产。这个前面提过,一定要用独立的密钥管理系统,测试和量产严格隔离。

4.6 总结

信任根和安全存储,说白了就是给系统装上一把「打不开的锁」。OTP 和 eFuse 是这把锁的材料,密钥烧录策略是锁的构造。材料选对了,构造合理了,系统才能真正安全。

我个人觉得,做安全最怕的就是「差不多就行」。差一点,可能就差了一个安全漏洞。所以,该花的成本要花,该做的验证要做。别等到产品上市了才发现问题,那时候就晚了。

下一章,咱们聊聊安全启动的具体实现。到时候我会拿一个实际芯片的启动流程来拆解,保证干货满满。