4. 安全启动密钥体系与证书链

Ryzen Embedded 平台的安全启动并不是“一把钥匙开一把锁”,而是一套分层信任的密钥体系。理解这套体系的关键,是分清三个层次:不可更改的硬件信任锚、由 AMD 掌控的根密钥与签名链、以及由 OEM/ODM 掌控的固件签名密钥。三者通过证书链串联,任何一层被破坏或吊销,都会直接影响启动链的信任判定。

一、信任锚:AMD 根密钥(ARK)与硬件熔丝

信任的起点是 AMD 根密钥(AMD Root Key,ARK)。ARK 的公钥哈希被烧录在 SoC 内部的一次性可编程熔丝(eFuse)中,属于硬件信任锚。它不可被软件改写,因此即使攻击者获得了固件写入权限,也无法替换这个根。ARK 通常以自签名根证书形式存在,其私钥由 AMD 在离线高安全环境中保管,用于签发下一级密钥。

在 Ryzen Embedded 上,与安全启动直接相关的熔丝还包括:是否启用安全启动、允许的密钥版本号(Anti-Rollback 计数)、以及调试接口的锁定状态。这些熔丝一旦烧写便不可逆,因此量产前必须确认策略。

二、证书链:从 ARK 到固件签名密钥

AMD 的密钥层级通常为:ARK → ASK(AMD SEV/安全协处理器密钥)→ 固件签名密钥。在嵌入式场景中,更常见的是 ARK 签发 AMD Signing Key(ASK),再由 ASK 签发 OEM 固件签名密钥(FSK)。FSK 的私钥由 OEM 自己保管,用于对 BIOS/UEFI 固件镜像、PSP 目录表(PSP Directory Table)以及各二级引导程序(如 PSP 固件、SMU 固件)进行签名。

验证时,PSP(Platform Security Processor)从熔丝中取出 ARK 公钥哈希,验证 ASK 证书;再用 ASK 公钥验证 FSK 证书;最后用 FSK 公钥验证固件镜像的签名。这条链上任何一环的签名不匹配、证书过期或密钥被吊销,启动都会在 PSP 阶段被拒绝。

Ryzen Embedded 安全启动密钥链与验证路径 SoC eFuse(硬件信任锚) ARK 公钥哈希 密钥版本 / 调试锁定 ARK(AMD 根密钥) 自签名根证书 私钥离线保管 ASK(AMD 签名密钥) 由 ARK 签发 用于签发下级密钥 签发 校验 FSK(OEM 固件签名密钥) 由 ASK 签发 私钥由 OEM 保管 签发 固件镜像 BIOS / PSP / SMU 镜像签名 + 目录表 签名 PSP 启动时验证顺序(自下而上逐级校验) ① 读 eFuse 校验 ARK 哈希 ② 验 ASK 证书 ARK 公钥验签 ③ 验 FSK 证书 ASK 公钥验签 ④ 验固件签名 FSK 公钥验签 密钥吊销 版本号提升 / 证书撤销 旧密钥拒绝启动

三、密钥吊销:Anti-Rollback 与版本号机制

密钥吊销不是“删除密钥”,而是通过版本号提升让旧密钥失效。Ryzen Embedded 的 PSP 在验证证书链时,会检查证书中的密钥版本号是否大于等于 eFuse 中记录的最小允许版本。如果固件使用旧版本密钥签名,即使签名本身有效,也会被拒绝。

实际工程中,吊销通常发生在以下场景:OEM 的 FSK 私钥疑似泄露、某批次固件签名密钥需要作废、或从开发密钥切换到量产密钥。操作上,OEM 需要向 AMD 申请新的 ASK 签发请求,获得新 FSK 证书后,将新固件用新 FSK 签名,并同步提升 eFuse 中的密钥版本号。注意:eFuse 版本号只能单调递增,一旦提升无法回退,因此必须确保新固件已经过完整验证。

密钥版本号提升是不可逆操作。若在量产阶段误提升版本号,而新固件尚未准备好,可能导致设备无法启动。建议在开发阶段使用独立熔丝配置,量产前再执行最终烧写。

四、密钥存储机制:私钥、证书与熔丝的分工

密钥存储需要区分三类对象:私钥、证书和熔丝中的哈希/版本号。它们的存放位置和安全要求完全不同。

对象 存放位置 安全要求 是否可更改
ARK 公钥哈希 SoC eFuse 硬件信任锚,只读 否
ASK 证书 固件镜像内(PSP 目录表) 随固件分发,可公开 可随固件更新
FSK 私钥 OEM 离线 HSM / 签名服务器 最高机密,禁止联网 可轮换
FSK 证书 固件镜像内 可公开,需与 ASK 链匹配 可随固件更新
密钥版本号 eFuse + 证书扩展字段 单调递增,防回滚 仅可提升

在签名流程中,OEM 通常使用 HSM 或离线签名机完成 FSK 私钥操作。签名对象包括:固件镜像的哈希、PSP 目录表的哈希,以及各二级引导程序的哈希。签名结果与 FSK 证书一起打包进固件镜像的签名区。PSP 启动时先读取 eFuse 中的 ARK 哈希,再逐级验证证书链,最后验证固件签名。

五、工程实践中的关键检查点

在 Ryzen Embedded 安全启动项目中,建议在以下节点做明确检查:

  • 熔丝烧写前:确认 ARK 哈希与 AMD 提供的根证书一致,确认密钥版本号与当前固件匹配。
  • 签名前:确认 FSK 证书链完整(FSK → ASK → ARK),确认证书未过期、未被吊销。
  • 固件发布前:确认签名覆盖了所有需要验证的组件,包括 PSP 固件、SMU 固件和 BIOS 区域。
  • 密钥轮换时:先发布使用新密钥签名的固件,再提升 eFuse 版本号,避免设备变砖。
调试阶段可先使用 AMD 提供的开发密钥和未烧写熔丝的 SoC 进行验证,确认证书链和签名流程无误后,再切换到量产密钥并烧写熔丝。这样可以在不可逆操作前发现绝大多数配置错误。

总结来说,Ryzen Embedded 安全启动的密钥体系是一条从硬件熔丝到固件镜像的完整信任链。ARK 提供不可更改的根,ASK 和 FSK 提供可轮换的签名能力,版本号机制提供吊销手段,而私钥、证书和熔丝的分工存储则决定了整个体系的安全边界。理解这四者的关系,是后续进行固件签名、密钥轮换和故障排查的基础。