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、根公钥哈希、状态字 | 否(写一次) | 读保护配置位 | 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 部署在产线,负责签发固件和注入每台设备的密钥。
选型时可按以下判断顺序推进:
- 是否需要不可逆的信任根? 是 → 选 eFuse 或 OTP,存哈希和使能位,不存完整密钥。
- 密钥是否需要“永不离开硬件”? 是 → 选 SE 或 TPM/TCM,通过命令接口使用密钥。
- 密钥可用性是否要绑定固件完整性? 是 → 选 TPM/TCM,用 PCR 度量后 Seal/Unseal。
- 是否需要在同一 CPU 上隔离安全与非安全固件? 是 → 选 TrustZone,但密钥仍需外部锚定。
- 是否涉及产线批量签发和密钥注入? 是 → 在产线部署 HSM,终端设备不装 HSM。
四、选型决策表(可填写模板)
下面给出一个可直接用于项目评审的选型决策表模板。使用时逐行填写,最后一行汇总“选定技术”和“理由”。
| 需求项 | 判断问题 | 候选技术 | 选定 | 理由 / 约束 |
|---|---|---|---|---|
| 信任根锚定 | 根公钥哈希存在哪里? | eFuse / OTP | eFuse | 位级不可逆,容量足够存 256 bit 哈希 |
| 设备身份密钥 | 私钥能否离开芯片? | SE / TPM / TrustZone | SE | 命令接口,私钥不出芯片 |
| 固件解密密钥 | 是否绑定固件版本? | SE / TPM | TPM | PCR 度量后解封,防回滚 |
| 运行时隔离 | 安全与非安全固件是否同 CPU? | TrustZone | TrustZone | Secure World 隔离密钥访问 |
| 产线签发 | 是否批量签名与注入? | HSM | HSM | 根 CA 私钥保护,高吞吐 |