4. 安全启动密钥体系总览

安全启动不是“一把钥匙开一把锁”的简单机制,而是一套按信任层级组织起来的密钥体系。nRF54 系列(如 nRF54H20、nRF54L15)在硬件上提供了密钥存储、密钥派生与签名验证的支撑,但真正决定系统安全强度的,是密钥如何分层、如何生成、如何存储、如何轮换与如何销毁。本章从根密钥、签名密钥、加密密钥三类角色出发,梳理它们的分层关系、生命周期,以及 nRF54 支持的密钥类型与存储介质。

一、三类密钥的角色分工

在安全启动链路中,密钥按“信任传递方向”分为三层:

  • 根密钥(Root Key):信任链的起点,通常固化在芯片内部不可读区域或由硬件唯一密钥(如 KMU 中的设备密钥)派生。它不直接参与镜像签名,而是用于验证或派生下一级密钥。根密钥一旦泄露,整条信任链失效,因此其生命周期最长、访问权限最严。
  • 签名密钥(Signing Key):用于对固件镜像、BL2、应用镜像进行数字签名(常见 ECDSA P-256 或 Ed25519)。验证方使用对应公钥或公钥哈希来确认镜像完整性与来源。签名密钥可以有多级:根签名密钥签发中间签名密钥,中间密钥再签发镜像,形成可轮换的层级。
  • 加密密钥(Encryption Key):用于镜像机密性保护,如 AES-128/256 对固件加密,或对密钥材料本身做封装(Key Wrapping)。加密密钥与签名密钥职责分离,签名保证“没被改”,加密保证“看不到”。

三者的关系可以概括为:根密钥锚定信任,签名密钥传递信任,加密密钥保护机密。它们不应共用同一份密钥材料,否则一处泄露会同时破坏完整性与机密性。

nRF54 安全启动密钥分层与信任传递 第 1 层 · 根密钥 Root Key 存储:KMU 不可读槽位 / 硬件唯一密钥派生 / OTP 作用:锚定信任根,验证或派生下级密钥,不直接签镜像 派生 / 验证 第 2 层 · 签名密钥 Signing Key 类型:ECDSA P-256 / Ed25519;可多级(根签名密钥 → 中间签名密钥) 存储:KMU 可读槽位 / 加密外部 Flash / 公钥哈希固化 作用:对 BL2、应用镜像签名,验证方用公钥或哈希校验 签名 / 验证 第 3 层 · 加密密钥 Encryption Key 类型:AES-128/256 镜像加密密钥、Key Wrapping 密钥 存储:KMU 加密槽位 / 受保护 OTP / 由根密钥派生 作用:保护镜像机密性,封装下级密钥材料 生命周期最长 不可导出 泄露即失效 可轮换 支持多级签发 公钥可公开 私钥严格保护 按需派生 可封装存储 与签名密钥分离 支持会话密钥

二、密钥生命周期

密钥不是“生成一次用一辈子”。完整生命周期包括:生成 → 注入/派生 → 存储 → 使用 → 轮换 → 撤销 → 销毁。在 nRF54 上,各阶段的工程要点如下:

  1. 生成:根密钥优先由芯片硬件唯一密钥(如 KMU 的 device key)派生,避免外部生成后注入带来的泄露风险。签名密钥可在安全环境(HSM 或离线签名机)中生成,私钥永不离开安全边界。
  2. 注入/派生:量产阶段通过安全调试接口或加密固件包注入。nRF54 的 KMU 支持将密钥写入指定槽位,并设置读权限(可读/不可读/仅加密使用)。
  3. 存储:根密钥存于不可读槽位或 OTP;签名公钥可存于 KMU 可读槽位或固化为镜像头中的哈希;加密密钥存于加密槽位或由根密钥派生。
  4. 使用:安全启动时,BL2 用根密钥验证签名公钥,再用签名公钥验证应用镜像;若镜像加密,则用加密密钥解密后再校验。
  5. 轮换:通过多级签名密钥实现。根签名密钥签发中间密钥,中间密钥可定期更换,根密钥保持不变。轮换时需保证旧镜像仍可验证,通常保留旧公钥哈希或使用密钥版本号。
  6. 撤销与销毁:发现私钥泄露时,通过撤销列表(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 上构建出可维护、可轮换、可撤销的安全启动密钥体系。