4. 安全启动密钥体系总览
安全启动不是“一把钥匙开一把锁”的简单机制,而是一套按信任层级组织起来的密钥体系。nRF54 系列(如 nRF54H20、nRF54L15)在硬件上提供了密钥存储、密钥派生与签名验证的支撑,但真正决定系统安全强度的,是密钥如何分层、如何生成、如何存储、如何轮换与如何销毁。本章从根密钥、签名密钥、加密密钥三类角色出发,梳理它们的分层关系、生命周期,以及 nRF54 支持的密钥类型与存储介质。
一、三类密钥的角色分工
在安全启动链路中,密钥按“信任传递方向”分为三层:
- 根密钥(Root Key):信任链的起点,通常固化在芯片内部不可读区域或由硬件唯一密钥(如 KMU 中的设备密钥)派生。它不直接参与镜像签名,而是用于验证或派生下一级密钥。根密钥一旦泄露,整条信任链失效,因此其生命周期最长、访问权限最严。
- 签名密钥(Signing Key):用于对固件镜像、BL2、应用镜像进行数字签名(常见 ECDSA P-256 或 Ed25519)。验证方使用对应公钥或公钥哈希来确认镜像完整性与来源。签名密钥可以有多级:根签名密钥签发中间签名密钥,中间密钥再签发镜像,形成可轮换的层级。
- 加密密钥(Encryption Key):用于镜像机密性保护,如 AES-128/256 对固件加密,或对密钥材料本身做封装(Key Wrapping)。加密密钥与签名密钥职责分离,签名保证“没被改”,加密保证“看不到”。
三者的关系可以概括为:根密钥锚定信任,签名密钥传递信任,加密密钥保护机密。它们不应共用同一份密钥材料,否则一处泄露会同时破坏完整性与机密性。
二、密钥生命周期
密钥不是“生成一次用一辈子”。完整生命周期包括:生成 → 注入/派生 → 存储 → 使用 → 轮换 → 撤销 → 销毁。在 nRF54 上,各阶段的工程要点如下:
- 生成:根密钥优先由芯片硬件唯一密钥(如 KMU 的 device key)派生,避免外部生成后注入带来的泄露风险。签名密钥可在安全环境(HSM 或离线签名机)中生成,私钥永不离开安全边界。
- 注入/派生:量产阶段通过安全调试接口或加密固件包注入。nRF54 的 KMU 支持将密钥写入指定槽位,并设置读权限(可读/不可读/仅加密使用)。
- 存储:根密钥存于不可读槽位或 OTP;签名公钥可存于 KMU 可读槽位或固化为镜像头中的哈希;加密密钥存于加密槽位或由根密钥派生。
- 使用:安全启动时,BL2 用根密钥验证签名公钥,再用签名公钥验证应用镜像;若镜像加密,则用加密密钥解密后再校验。
- 轮换:通过多级签名密钥实现。根签名密钥签发中间密钥,中间密钥可定期更换,根密钥保持不变。轮换时需保证旧镜像仍可验证,通常保留旧公钥哈希或使用密钥版本号。
- 撤销与销毁:发现私钥泄露时,通过撤销列表(Revocation List)或密钥版本号拒绝旧密钥签名的镜像。销毁时清除 KMU 槽位、OTP 位和外部存储中的密钥副本。
三、nRF54 支持的密钥类型与存储介质
nRF54 系列通过 KMU(Key Management Unit)和 CryptoCell/CRACEN 提供密钥管理能力。常见密钥类型与存储位置对应关系如下:
| 密钥类型 | 典型算法 | 推荐存储介质 | 访问权限 |
|---|---|---|---|
| 根密钥 / 设备密钥 | ECDSA P-256、AES-256 | KMU 不可读槽位、OTP | 仅硬件内部使用,不可导出 |
| 签名私钥 | ECDSA P-256、Ed25519 | 离线 HSM、安全签名机 | 永不进入设备 |
| 签名公钥 / 公钥哈希 | ECDSA P-256、SHA-256 | KMU 可读槽位、镜像头、OTP | 可读,用于验证 |
| 镜像加密密钥 | AES-128/256 | KMU 加密槽位、由根密钥派生 | 仅解密引擎可用 |
| Key Wrapping 密钥 | AES-KW、AES-GCM | KMU 加密槽位 | 仅封装/解封使用 |
工程提示:在 nRF54 上,KMU 槽位数量有限,建议按“根密钥 1 个、签名公钥 2~3 个(支持轮换)、加密密钥 1~2 个”规划。公钥哈希可固化在 OTP 中,避免占用 KMU 槽位。
四、分层设计中的常见误区
实际项目中,密钥体系最容易出问题的地方往往不是算法强度,而是分层与生命周期管理:
- 根密钥与签名密钥混用:用同一把密钥既做根又做签名,导致轮换时无法保持信任根稳定。
- 加密密钥与签名密钥同源:一旦签名私钥泄露,攻击者可能推导出加密密钥,机密性同时失守。
- 忽略密钥版本:轮换后旧镜像无法验证或新镜像被旧密钥冒充,缺少版本号与撤销机制。
- 存储介质选择不当:把私钥放在可读 Flash 中,或把根密钥导出到外部,都会直接破坏信任链。
正确的做法是:根密钥只做锚定,签名密钥负责传递信任并支持多级轮换,加密密钥独立派生并严格限制访问。三者各司其职,才能在 nRF54 上构建出可维护、可轮换、可撤销的安全启动密钥体系。