3、信任根的技术实现方式:eFuse、OTP、SRAM PUF、Flash PUF

信任根不能只是个概念,得落地到芯片里的一块具体硬件。我这些年经手过不少安全芯片方案,说实话,选哪种存储介质来承载信任根,直接影响整个产品的安全等级和成本。今天咱们就把四种主流实现方式掰开揉碎聊清楚。

3.1 eFuse——一次性编程的“物理保险丝”

eFuse 的全称是电子保险丝(Electronic Fuse)。它的原理很简单:芯片内部有一根极细的金属丝或多晶硅线,正常状态下是导通的(代表 0)。当你施加一个较大的电流,这根线就会熔断,变成开路(代表 1)。

熔断是不可逆的。一旦烧进去,神仙也改不回来。这就是 eFuse 作为信任根的核心价值——防篡改。

核心特性:

  • 一次编程,永久生效
  • 物理不可逆,抗篡改能力强
  • 占用芯片面积较大(每个 bit 需要单独的熔丝单元)
  • 编程时需要高压(通常 3-5V),有物理损伤风险

我在一个 IoT 安全芯片项目里用过 eFuse 来存储根密钥。当时有个坑——熔断电流控制不好,会把相邻的熔丝也熔断。后来我们加了电流限制电路,才把良率提上来。嗯,这里要注意:eFuse 的编程时序必须严格遵循 Foundry 的指导手册,别自己瞎调。

3.2 OTP——一次性可编程存储器

OTP(One-Time Programmable)本质上是一种特殊的非易失性存储器。它和 eFuse 最大的区别在于:OTP 用的是存储单元(比如反熔丝结构),而不是物理熔丝。

反熔丝结构默认是开路的,编程时施加高压会在绝缘层上击穿一个导电通道,变成导通状态。你想想看,这和 eFuse 正好相反——eFuse 是从通到断,OTP 是从断到通。

对比维度 eFuse OTP
编程原理 熔断金属/多晶硅 击穿绝缘层形成导电通道
初始状态 导通(0) 开路(1)
单元面积 较大(~1-2μm²) 较小(~0.5-1μm²)
编程电压 3-5V 5-8V
可靠性 中等(熔丝可能再生长) 较高(击穿后稳定)
典型容量 几百 bit ~ 几 Kbit 几 Kbit ~ 几十 Kbit

我个人习惯在需要存储较大信任根数据(比如多个密钥 + 配置信息)时用 OTP。容量大,面积也划算。但要注意:OTP 的编程电压更高,对工艺的可靠性要求也更严。

避坑指南:我曾经在一个项目里发现 OTP 读取时出现位翻转。排查了很久,最后发现是读路径上的 sense amplifier 设计裕量不足。OTP 的读电路设计比 eFuse 更复杂,建议留足仿真余量。

3.3 SRAM PUF——利用芯片“指纹”生成信任根

PUF(Physical Unclonable Function)的思路和前面两种完全不同。它不存储密钥,而是从芯片的物理特性中“提取”出唯一标识。

SRAM PUF 利用的是 SRAM 单元上电时的随机初始状态。每个 SRAM 单元在制造时都有微小的工艺偏差,导致上电后随机偏向 0 或 1。这个随机模式是芯片独有的,而且不可克隆。

说白了,每颗芯片的 SRAM 上电初始值就像人的指纹——独一无二。

SRAM PUF 的工作流程:

  1. 注册阶段(Enrollment):芯片上电,读取 SRAM 的初始值,生成“指纹”。
  2. 辅助数据生成:使用纠错码(ECC)生成 Helper Data,用于后续恢复。
  3. 重建阶段(Reconstruction):每次上电重新读取 SRAM 初始值,结合 Helper Data 恢复出原始密钥。

这里有个关键问题:SRAM 的初始值不是 100% 稳定的。温度、电压变化会导致部分 bit 翻转。所以必须用纠错码。我建议至少用 BCH 码,能纠正 10% 以内的错误 bit。

经验之谈:SRAM PUF 不需要额外的非易失存储单元,成本低。但它的可靠性依赖纠错码设计。我在一个车规芯片项目里,因为温度范围太宽(-40°C ~ 125°C),不得不把纠错能力从 5% 提升到 15%。

3.4 Flash PUF——基于闪存单元的物理指纹

Flash PUF 的原理和 SRAM PUF 类似,但用的是 Flash 存储单元的编程/擦除特性差异。Flash 单元在编程时,电子穿过隧穿氧化层注入浮栅。由于氧化层厚度和掺杂浓度的微观差异,每个单元的编程速度都不一样。

利用这个差异,可以生成芯片唯一的“指纹”。

对比维度 SRAM PUF Flash PUF
物理来源 SRAM 上电初始值 Flash 编程/擦除特性
稳定性 受温漂影响较大 相对稳定
是否需要额外硬件 需要 SRAM(通常芯片已有) 需要 Flash 控制器支持
抗攻击能力 中等(易受电压毛刺攻击) 较强(需要更复杂的测量)
典型应用 低成本 IoT 芯片 安全 MCU、TPM 芯片

Flash PUF 的一个优势是:Flash 单元在芯片中已经很常见,不需要额外增加工艺步骤。但它的缺点是测量过程比较复杂,需要精确控制编程脉冲宽度和电压。

注意:Flash PUF 的 Helper Data 必须存储在非易失区域。如果 Helper Data 被篡改,密钥恢复就会失败。我曾经见过一个方案,Helper Data 直接明文存在外部 SPI Flash 里——这等于把钥匙放在门口垫子下面。Helper Data 必须做完整性保护,至少加个 HMAC。

3.5 四种实现方式的综合对比

为了让你一眼看清差异,我画了张对比表:

特性 eFuse OTP SRAM PUF Flash PUF
存储类型 非易失 非易失 易失(需每次重建) 非易失(指纹固定)
可编程次数 1 次 1 次 无限(重建) 无限(重建)
抗物理攻击 强 强 中等 较强
成本 高(面积大) 中 低(复用 SRAM) 中(需 Flash 控制器)
可靠性 中等 高 依赖纠错码 较高
典型容量 ~1 Kbit ~16 Kbit ~256 bit(指纹) ~512 bit(指纹)

3.6 如何选择?我的建议

没有银弹。选哪种取决于你的产品定位:

  • 高安全等级(金融、政府):eFuse 或 OTP 存储根密钥,配合物理防护层。别用 PUF,稳定性不够。
  • 消费级 IoT(智能家居、可穿戴):SRAM PUF 性价比最高。芯片里本来就有 SRAM,零成本增加。
  • 车规/工业(宽温、高可靠):Flash PUF 或 OTP。SRAM PUF 在极端温度下纠错压力太大。
  • 低成本大批量(传感器、标签):SRAM PUF 是唯一选择。eFuse 和 OTP 的面积成本扛不住。

最后,我画了一张结构图,帮你理清这四种技术的关系和适用场景:

信任根技术实现方式对比图 信任根技术实现方式 非易失存储型 物理指纹型(PUF) eFuse OTP SRAM PUF Flash PUF 熔断金属丝 不可逆 面积大 击穿绝缘层 不可逆 容量较大 上电初始值 需纠错码 成本最低 编程速度差异 较稳定 需Flash控制器 适用场景:金融/政府 → eFuse/OTP | 消费IoT → SRAM PUF | 车规/工业 → Flash PUF/OTP

这张图把四种技术按“非易失存储型”和“物理指纹型”分成两大类。左边是传统方案,右边是新兴方案。我个人判断,未来五年 PUF 会逐步替代 eFuse 和 OTP 在中低端市场的份额,但在高安全领域,eFuse 的地位依然稳固。