信任根(RoT)设计:硬件信任根的概念、PUF与eFuse技术、信任根存储与保护

好,我们接着聊信任根。说白了,信任根就是整个安全体系的「锚点」。你想想看,如果这个锚点本身就不牢靠,那后面再多的安全措施都是白搭。我在做安全启动设计时,第一件事就是先把信任根的位置和实现方式定下来。

硬件信任根的概念

什么是硬件信任根?简单说,就是一组不可伪造、不可篡改的硬件实体。它负责提供最底层的身份证明和密钥派生能力。整个安全启动链条,从 BootROM 开始,一级级验证下去,最终都要追溯到这颗「根」上。

我个人习惯把信任根分成两类:

  • 静态信任根:固化在芯片内部,出厂后不可更改。比如 BootROM 中的公钥哈希。
  • 动态信任根:在每次启动时动态建立,比如通过测量启动环境的哈希值来生成会话密钥。

嗯,这里要注意:静态信任根虽然安全,但灵活性差;动态信任根灵活,但实现复杂度高。实际项目中,我通常会把两者结合起来用。

核心原则:信任根必须满足三个条件——不可克隆性、不可篡改性、可验证性。缺一个,整个信任链就断了。

PUF 与 eFuse 技术

接下来我们看看两种主流的信任根实现方式:PUF 和 eFuse。

eFuse:一次性可编程存储

eFuse 本质上是一种一次性可编程(OTP)存储器。芯片出厂时,所有 eFuse 单元都是「0」。通过施加高电压,可以把某些位熔断成「1」。一旦熔断,就再也回不去了。

我在项目中遇到过一个问题:某款芯片的 eFuse 编程电压没控制好,导致整批芯片的信任根密钥全部写偏了。后来我们加了一个编程校验流程——每写一个字节,就读回来验证一次。这个坑踩得值。

特性 eFuse PUF
存储方式 物理熔断 物理特性提取
可编程性 一次性,不可逆 每次上电重新生成
抗物理攻击 中等(可被探针读取) 高(无静态存储)
成本 低 较高(需要模拟电路)
典型用途 存储公钥哈希、芯片序列号 生成设备唯一密钥

PUF:物理不可克隆函数

PUF 利用芯片制造过程中不可避免的工艺偏差来生成唯一标识。同一片晶圆上,相邻两个晶体管的阈值电压都会有微小差异。PUF 就是把这些差异「读」出来,变成一串二进制数。

你想想看,这玩意儿有多妙?攻击者即使拿到同一份掩模版,造出来的芯片 PUF 值也不一样。而且 PUF 值只在芯片上电时存在,断电就消失——没有静态存储,物理探针根本读不到。

不过 PUF 也有坑。我记得有一次,某款芯片的 PUF 输出在高温下发生了位翻转,导致密钥派生失败。后来我们加了纠错码(ECC)和模糊提取器(Fuzzy Extractor),才把稳定性提上去。

我的建议:如果芯片面积允许,优先用 PUF 生成根密钥,用 eFuse 存储公钥和配置信息。两者互补,效果最好。

信任根存储与保护

信任根存哪儿?怎么存?这问题比你想的复杂。我见过不少方案,把根密钥直接放在 Flash 里,然后用软件加密——这跟把钥匙放在门垫下面有什么区别?

存储位置

  • BootROM:只读,出厂固化。适合放根公钥哈希。
  • eFuse:一次性写入,适合放芯片唯一密钥或设备证书哈希。
  • 专用安全存储器:比如 TrustZone 保护的 SRAM,适合放运行时派生的工作密钥。

保护措施

光存好还不够,还得防攻击。我总结了几条硬规矩:

  1. 物理屏蔽:信任根存储区域上方覆盖多层金属层,防止 FIB(聚焦离子束)探针直接读取。
  2. 访问控制:只有 BootROM 代码能读信任根,应用处理器无权直接访问。
  3. 错误注入检测:在读取路径上加电压/时钟毛刺检测电路,一旦发现异常,立即清零密钥。
  4. 生命周期管理:芯片进入 RMA(退货授权)模式时,必须擦除所有信任根数据。

警告:千万不要把信任根密钥暴露在芯片外部总线上。我曾经见过一个设计,BootROM 把根密钥通过 AHB 总线传给加密引擎——结果攻击者在总线上焊了根探针,密钥直接裸奔。正确的做法是:密钥在安全域内部传递,全程不离开安全边界。

信任根架构图

下面这张图展示了典型的信任根架构。你可以看到,整个安全启动的信任链从 BootROM 开始,经过 eFuse 和 PUF 的支撑,最终建立起完整的信任体系。

信任根架构图 硬件信任根 eFuse(OTP存储) PUF(物理指纹) 公钥哈希 芯片序列号 安全配置 生命周期状态 设备唯一密钥 密钥派生 身份认证 防克隆 安全启动信任链 说明: eFuse 提供不可篡改的静态存储,PUF 提供动态生成的唯一密钥。两者结合,构成完整的硬件信任根体系。

小结

信任根设计,说白了就是回答三个问题:根在哪儿?根是什么?根怎么保护?eFuse 和 PUF 各有千秋,我建议根据芯片的安全等级要求和成本预算来选。低端 IoT 芯片,一个 eFuse 就够了;高端安全芯片,PUF + eFuse 的组合才是正解。