3. 密钥体系与生命周期

在安全启动体系中,密钥不是“配好就完事”的静态文件,而是一个有明确生命周期的安全对象。从生成到销毁,每个阶段都对应不同的威胁模型、操作规范和审计要求。理解密钥全生命周期,是做好密钥轮换与撤销工程的前提。

一、核心原理:密钥生命周期的八个阶段

安全启动涉及的密钥通常包括平台密钥(PK)、密钥交换密钥(KEK)、签名数据库密钥(db/dbx)以及用于固件签名的私钥。这些密钥从产生到消亡,需要经过八个阶段,每个阶段都有明确的输入、输出与安全目标。

密钥生命周期八阶段:生成 → 分发 → 存储 → 使用 → 轮换 → 撤销 → 归档 → 销毁。前四阶段保证密钥“可用且可信”,后四阶段保证密钥“可控且可退”。

其中,生成阶段决定密钥强度与算法合规性;分发阶段决定密钥如何安全到达使用方;存储阶段决定密钥是否会被非授权读取;使用阶段决定密钥是否只在受控环境内参与签名或验证;轮换与撤销是安全启动密钥管理的核心难点;归档与销毁则决定历史密钥能否被追溯、能否被彻底清除。

安全启动密钥全生命周期 生成 → 分发 → 存储 → 使用 → 轮换 → 撤销 → 归档 → 销毁 生成 HSM/TRNG 分发 加密通道 存储 TPM/NVRAM 使用 签名/验签 轮换 新旧并存 撤销 dbx/吊销 归档 只读留存 销毁 零化/擦除 新密钥生效 关键控制点 • 生成:使用硬件真随机数,私钥不可导出;• 分发:加密传输 + 完整性校验;• 存储:TPM/NVRAM 防回滚; • 使用:仅在安全环境内签名;• 轮换:新旧密钥并存过渡;• 撤销:更新 dbx 并同步所有节点; • 归档:只读保存,保留审计链;• 销毁:多次覆写或物理销毁,防止残留恢复。

二、方法流程:各阶段的关键操作

下面以 UEFI 安全启动的密钥管理为例,说明每个阶段应执行的关键操作。

阶段 关键操作 常用工具/接口 风险点
生成 在 HSM 或 TPM 内生成非对称密钥对,私钥不可导出 OpenSSL、TPM2_Create、HSM 使用软件随机数导致密钥可预测
分发 通过加密通道传输公钥或密钥句柄,校验指纹 TLS、SSH、签名信封 中间人替换公钥
存储 公钥写入 UEFI 变量,私钥保存在 HSM/TPM 内 efivarfs、TPM NV Index NVRAM 被物理篡改或回滚
使用 固件签名、内核模块签名、db/dbx 验签 sbsign、pesign、mokutil 私钥泄露或签名环境被入侵
轮换 生成新密钥,更新 KEK/db,保留旧密钥过渡 KeyTool、efi-updatevar 轮换窗口内新旧密钥冲突
撤销 将泄露密钥哈希写入 dbx,同步到所有设备 dbxtool、fwupd 撤销列表未同步导致漏网
归档 将历史公钥、证书、审计日志只读保存 版本库、对象存储 WORM 归档密钥被误用
销毁 对私钥执行零化、多次覆写或物理销毁 TPM2_Clear、HSM 销毁指令 残留数据可被恢复

三、案例场景:一次固件签名密钥轮换

某厂商的固件签名私钥已使用三年,按照合规要求需要轮换。操作流程如下:

  1. 在 HSM 中生成新的 RSA-3072 密钥对,导出公钥证书。
  2. 将新公钥加入 KEK 和 db,保留旧公钥,形成双密钥并存状态。
  3. 使用新私钥对下一版固件签名,旧固件仍可用旧公钥验证。
  4. 经过两个发布周期后,将旧公钥从 db 移除,并写入 dbx 撤销。
  5. 通过 fwupd 将 dbx 更新推送到所有在线设备。
  6. 旧私钥在 HSM 中执行销毁,归档旧公钥和审计日志。
# 查看当前 db 中的密钥
efi-readvar -v db

# 将新证书加入 db
efi-updatevar -a -c new_cert.pem -k KEK.pem db

# 将旧证书哈希加入 dbx
efi-updatevar -a -c old_cert.der -k KEK.pem dbx

# 验证 dbx 是否生效
efi-readvar -v dbx

提示:轮换时务必保留旧公钥一段时间,否则已签名的旧固件将无法通过验证,导致设备无法启动。撤销则相反,必须尽快同步到所有节点,避免泄露密钥继续被利用。

四、误区与复盘

误区一:只轮换不撤销。轮换只是换新密钥,旧密钥如果泄露仍然有效。必须配合撤销,将旧密钥哈希写入 dbx,才能彻底阻断。

误区二:撤销列表不同步。dbx 更新后,如果部分设备离线或未执行更新,攻击者仍可利用旧密钥签名固件。需要建立设备清单和同步机制,并定期审计。

误区三:归档密钥可继续使用。归档密钥应设置为只读,禁止再次用于签名。归档的目的是审计和追溯,不是备用。

误区四:销毁不彻底。私钥销毁不能只删除文件,应对 HSM 执行零化指令,或对存储介质进行多次覆写。对于 TPM,可使用 TPM2_Clear 清除受保护对象。

复盘要点:密钥生命周期管理的核心是“可追溯、可撤销、可轮换”。任何阶段缺少审计记录,都会导致安全事件发生后无法定位影响范围。建议为每个密钥建立唯一标识,记录生成时间、使用范围、轮换时间、撤销时间和销毁时间。

总结来说,密钥体系不是一张静态的证书列表,而是一条贯穿生成、分发、存储、使用、轮换、撤销、归档与销毁的完整链条。只有把每个阶段都纳入工程化管理,安全启动才能真正具备抵御密钥泄露和固件篡改的能力。