3. 密钥体系与生命周期
在安全启动体系中,密钥不是“配好就完事”的静态文件,而是一个有明确生命周期的安全对象。从生成到销毁,每个阶段都对应不同的威胁模型、操作规范和审计要求。理解密钥全生命周期,是做好密钥轮换与撤销工程的前提。
一、核心原理:密钥生命周期的八个阶段
安全启动涉及的密钥通常包括平台密钥(PK)、密钥交换密钥(KEK)、签名数据库密钥(db/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 销毁指令 | 残留数据可被恢复 |
三、案例场景:一次固件签名密钥轮换
某厂商的固件签名私钥已使用三年,按照合规要求需要轮换。操作流程如下:
- 在 HSM 中生成新的 RSA-3072 密钥对,导出公钥证书。
- 将新公钥加入 KEK 和 db,保留旧公钥,形成双密钥并存状态。
- 使用新私钥对下一版固件签名,旧固件仍可用旧公钥验证。
- 经过两个发布周期后,将旧公钥从 db 移除,并写入 dbx 撤销。
- 通过 fwupd 将 dbx 更新推送到所有在线设备。
- 旧私钥在 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 清除受保护对象。
复盘要点:密钥生命周期管理的核心是“可追溯、可撤销、可轮换”。任何阶段缺少审计记录,都会导致安全事件发生后无法定位影响范围。建议为每个密钥建立唯一标识,记录生成时间、使用范围、轮换时间、撤销时间和销毁时间。
总结来说,密钥体系不是一张静态的证书列表,而是一条贯穿生成、分发、存储、使用、轮换、撤销、归档与销毁的完整链条。只有把每个阶段都纳入工程化管理,安全启动才能真正具备抵御密钥泄露和固件篡改的能力。