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 的工作流程:
- 注册阶段(Enrollment):芯片上电,读取 SRAM 的初始值,生成“指纹”。
- 辅助数据生成:使用纠错码(ECC)生成 Helper Data,用于后续恢复。
- 重建阶段(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 在中低端市场的份额,但在高安全领域,eFuse 的地位依然稳固。