3. 安全存储硬件基础

固件安全存储不是单一技术能解决的问题。一个设备里往往同时存在“不可改写的根密钥”“可安全更新的固件镜像”“运行时隔离的执行环境”“外部可插拔的密码服务”这几类需求,而 OTP、eFuse、安全元件(SE)、TPM/TCM、TrustZone、HSM 恰好分别覆盖其中不同的位置。理解它们的差别,关键不是背参数,而是先问三个问题:存什么(密钥、镜像、度量值还是策略)、谁能读(CPU 可寻址、专用总线、还是只能通过命令接口)、能不能改(一次性烧录、可更新、还是可回滚)。

一、六类硬件的存储角色定位

OTP(One-Time Programmable)是一整块只能写一次、之后只能读的存储区,常见于 MCU 内部,容量从几十字节到几 KB。它适合存放设备唯一 ID、根公钥哈希、生命周期状态字(如“已量产/已锁定”)。OTP 的读取通常和普通 Flash 一样通过地址访问,因此它的安全边界依赖“写保护 + 读保护”配置,一旦读保护被绕过,内容即暴露。

eFuse 本质是 OTP 的一种物理实现:通过熔断或反熔断硅片上的微细熔丝来记录位。它的优势是位级、不可逆、极难物理恢复,常用于安全启动使能位、调试口永久关闭位、密钥哈希、芯片唯一密钥(如某些 SoC 的 Secure Boot Key Hash)。eFuse 容量很小(通常 128 bit~4 Kbit 量级),因此它存的是“指纹”和“开关”,而不是完整密钥或镜像。

安全元件(Secure Element, SE)是一颗独立的安全芯片,内部有 CPU、加密协处理器、受保护的 NVM 和防篡改屏蔽层,通过 ISO 7816、I²C 或 SPI 与主控通信。它不暴露内部存储地址,只提供命令接口(如生成密钥、签名、加解密、安全存储读写)。固件存储中,SE 常用来保存设备身份私钥、许可证、加密后的固件解密密钥,并承担“密钥永不离开芯片”的职责。

TPM/TCM 是平台级安全芯片。TPM 2.0 提供 PCR(平台配置寄存器)、密封存储(Seal/Unseal)、密钥层级和度量日志;TCM 是国内对应标准,功能定位类似。它们与 SE 的最大区别在于:TPM/TCM 的核心价值是度量与绑定——把固件/配置的哈希扩展到 PCR,只有 PCR 值匹配时才能解封密钥。因此它适合“固件完整性决定密钥可用性”的场景,而不是直接存放大块固件。

TrustZone 不是独立芯片,而是 ARM 处理器内的安全/非安全双世界隔离机制。它把 CPU、内存、外设划分到 Secure World 和 Normal World,固件可运行在 Secure World 中,密钥和敏感数据放在只有 Secure World 可访问的 SRAM/Flash 区域。TrustZone 提供的是运行时隔离,它本身不提供不可逆存储,密钥仍需 OTP/eFuse 或 SE 来锚定。

HSM(Hardware Security Module)是面向服务器、产线或云端的密码设备,提供高吞吐的密钥生成、签名、加密和密钥生命周期管理,通常具备 FIPS 140-2/3 或国密认证。在固件存储语境中,HSM 一般不装在终端设备里,而是部署在签名服务器或产线烧录站,负责签发固件镜像、派生每台设备的密钥、保护根 CA 私钥。

固件安全存储:六类硬件的角色与信任链位置 终端设备芯片内部 OTP 设备ID / 根公钥哈希 生命周期状态字 写一次 · 可寻址读 eFuse 安全启动使能位 调试口关闭 / 密钥哈希 位级熔断 · 不可逆 TrustZone 安全世界 Secure SRAM/Flash 密钥 · 敏感固件段 Normal World 应用固件 · 不可见密钥 锚定信任根 固件镜像存储区 加密固件 + 签名 + 版本号 解密密钥由 OTP/eFuse 哈希校验 运行时由 TrustZone 隔离访问 可更新 · 可回滚 · 需度量 芯片外部 / 平台侧 安全元件 SE 设备身份私钥 固件解密密钥 许可证 / 计数器 命令接口 · 密钥不出芯片 TPM / TCM PCR 度量寄存器 密封存储 Seal/Unseal 密钥层级 · 度量日志 PCR 匹配才解封密钥 HSM(产线 / 签名服务器) 根 CA 私钥 · 固件签名 · 密钥派生 每台设备唯一密钥注入 高吞吐 · 认证 · 不随设备出货 产线注入 / 签发 信任链:eFuse/OTP 锚定 → SE/TPM 保护密钥 → TrustZone 隔离执行 → HSM 签发与注入

二、选型决策表

下表把六类硬件的关键维度并列,便于按“存什么、能否改、谁能读、典型位置”快速筛选。表中“可更新”指该介质本身能否被重写;“读保护”指是否依赖配置位而非物理隔离。

技术 典型存储内容 可更新 读保护方式 典型位置 固件存储中的角色
OTP 设备ID、根公钥哈希、状态字 否(写一次) 读保护配置位 MCU/SoC 内部 信任根锚点,存“指纹”
eFuse 安全启动使能、调试关闭、密钥哈希 否(位级熔断) 物理不可逆 SoC 内部 不可逆开关与哈希锚定
安全元件 SE 身份私钥、解密密钥、许可证 受控更新 命令接口隔离 独立芯片 密钥保险箱,密钥不出芯片
TPM/TCM PCR 度量值、密封密钥 PCR 可扩展 命令接口 + 授权 独立芯片/固件 TPM 度量绑定,完整性决定密钥可用
TrustZone Secure SRAM/Flash 中的密钥与固件段 随固件更新 硬件世界隔离 CPU 内部 运行时隔离,不提供不可逆存储
HSM 根 CA 私钥、签名密钥、派生密钥 受控轮换 认证 + 物理防护 产线/服务器 签发与注入,不随设备出货

三、组合使用与选型判断

实际工程中很少只用一种。一个典型的 IoT 设备固件存储方案是:eFuse 烧录安全启动使能位和根公钥哈希;OTP 存设备唯一 ID 和生命周期状态;SE 保存设备身份私钥和固件解密密钥;TrustZone 在运行时隔离密钥访问;TPM/TCM 在需要“固件度量决定密钥解封”时加入;HSM 部署在产线,负责签发固件和注入每台设备的密钥。

选型时可按以下判断顺序推进:

  1. 是否需要不可逆的信任根? 是 → 选 eFuse 或 OTP,存哈希和使能位,不存完整密钥。
  2. 密钥是否需要“永不离开硬件”? 是 → 选 SE 或 TPM/TCM,通过命令接口使用密钥。
  3. 密钥可用性是否要绑定固件完整性? 是 → 选 TPM/TCM,用 PCR 度量后 Seal/Unseal。
  4. 是否需要在同一 CPU 上隔离安全与非安全固件? 是 → 选 TrustZone,但密钥仍需外部锚定。
  5. 是否涉及产线批量签发和密钥注入? 是 → 在产线部署 HSM,终端设备不装 HSM。
注意:TrustZone 和 TPM/TCM 常被误认为“可以替代 eFuse”。实际上 TrustZone 提供的是运行时隔离,TPM/TCM 提供的是度量与密封,二者都不提供不可逆的物理锚点。没有 eFuse/OTP 锚定根公钥哈希,安全启动的信任链就缺少起点。

四、选型决策表(可填写模板)

下面给出一个可直接用于项目评审的选型决策表模板。使用时逐行填写,最后一行汇总“选定技术”和“理由”。

需求项 判断问题 候选技术 选定 理由 / 约束
信任根锚定 根公钥哈希存在哪里? eFuse / OTP eFuse 位级不可逆,容量足够存 256 bit 哈希
设备身份密钥 私钥能否离开芯片? SE / TPM / TrustZone SE 命令接口,私钥不出芯片
固件解密密钥 是否绑定固件版本? SE / TPM TPM PCR 度量后解封,防回滚
运行时隔离 安全与非安全固件是否同 CPU? TrustZone TrustZone Secure World 隔离密钥访问
产线签发 是否批量签名与注入? HSM HSM 根 CA 私钥保护,高吞吐