1. Ryzen Embedded安全启动工程导论

在嵌入式设备中,安全启动并不是一个“可选的加固项”,而是整条信任链的起点。设备上电后,最先执行的代码决定了后续所有软件的可信程度。如果这段代码可以被替换、篡改或降级,那么操作系统、应用、密钥乃至整个业务逻辑都失去了可信基础。Ryzen Embedded 平台把安全启动能力做进了芯片内部,但要真正把它用好,工程人员必须先理解威胁模型、信任根,以及平台提供了哪些可用的安全构件。

威胁模型:我们到底在防谁

安全启动的威胁模型不是泛泛的“防止黑客攻击”,而是要明确攻击者的能力边界和攻击面。对 Ryzen Embedded 设备而言,常见的威胁可以归为几类。

第一类是固件篡改。攻击者通过物理接触或软件漏洞,替换 SPI Flash 中的 UEFI 固件或引导程序,植入持久化后门。这类攻击的特点是“一次写入、长期生效”,即使重装系统也无法清除。

第二类是降级攻击。攻击者不修改代码,而是把固件或系统回滚到存在已知漏洞的旧版本,再利用旧漏洞获取控制权。这类攻击说明:只做完整性校验还不够,必须同时校验版本。

第三类是密钥与凭据窃取。如果签名私钥或设备密钥以明文形式存放在外部存储中,攻击者可以直接读取并伪造合法镜像。信任根必须把密钥保护在芯片内部。

第四类是供应链与调试接口滥用。未关闭的 JTAG、未熔断的调试口、未锁定的 Flash 写保护,都会让攻击者绕过所有软件层校验。安全启动工程必须把“关闭调试通道”作为交付条件之一。

需要强调的是,安全启动不能防御运行时的内存攻击、侧信道攻击或已获得合法签名的恶意代码。它解决的是“启动阶段代码来源是否可信”的问题,边界必须清楚。

信任根:信任链的锚点

信任根(Root of Trust, RoT)是整个安全启动体系的锚点。它的核心特征是:不可修改、不可绕过、可验证。在 Ryzen Embedded 平台上,信任根由芯片内部的片上 ROM 代码和硬件熔丝(eFuse)中的公钥哈希共同构成。

上电后,片上 ROM 首先执行,它读取 SPI Flash 中的第一阶段引导程序(通常称为 Boot Block 或 PSP 固件),用 eFuse 中存储的公钥哈希验证其签名。验证通过后,控制权才交给下一阶段。下一阶段再用同样的方式验证再下一阶段,如此逐级传递,形成信任链。

这里有一个关键工程约束:信任根一旦熔断就不可逆。公钥哈希写入 eFuse 后无法更改,这意味着密钥管理必须在量产前完成规划。如果私钥泄露或需要轮换,只能通过预留的密钥槽位或后续阶段的密钥更新机制来处理,而不能重新熔断信任根。

Ryzen Embedded 安全启动信任链与威胁边界 信任根(不可修改 · 不可绕过) 片上 ROM 代码 上电首执行 · 硬件固化 eFuse 公钥哈希 熔断后不可逆 · 密钥锚点 ⚠ 熔断不可逆 量产前必须完成密钥规划 PSP 固件 阶段 1 · 签名验证 UEFI BIOS 阶段 2 · 签名验证 OS Bootloader 阶段 3 · 签名验证 验证 验证 威胁边界:安全启动覆盖范围 ✓ 可防御:固件篡改 · 降级攻击 · 未授权镜像 · 调试口滥用 ✗ 不覆盖:运行时内存攻击 · 侧信道攻击 · 已签名恶意代码 · 物理拆解 工程目标 ① 建立从 ROM 到 OS 的完整信任链 ② 密钥保护在芯片内部 ③ 关闭所有调试通道 ④ 支持安全版本回滚控制 ⑤ 量产前完成 eFuse 熔断与密钥规划

Ryzen Embedded 平台的安全特性概览

Ryzen Embedded 平台的安全启动能力不是单一功能,而是一组协同工作的硬件与固件机制。理解这些机制的分工,是后续工程配置的基础。

AMD Secure Processor(PSP)是平台安全启动的核心执行单元。它是一个独立于 x86 核心的 ARM 微控制器,负责在 x86 核心启动之前完成固件验证、密钥管理和安全策略执行。PSP 运行自己的固件,该固件本身也经过签名验证,形成“信任根验证 PSP,PSP 验证后续阶段”的层级结构。

eFuse 熔丝阵列用于存储公钥哈希、安全启动使能位、调试锁定状态等不可逆配置。工程上需要区分“可编程一次”和“可编程多次”的熔丝区域,前者用于信任根锚定,后者可用于版本计数或策略更新。

SPI Flash 保护机制包括写保护引脚、区域锁定和签名验证。即使攻击者物理接触 Flash,也无法在不触发签名校验失败的情况下修改内容。

安全密钥存储支持将私钥或对称密钥保存在芯片内部的密钥库中,外部接口无法直接读取。这对于设备身份认证和后续阶段的密钥派生至关重要。

工程目标与实施路径

从工程角度看,安全启动的落地不是“打开一个开关”,而是一条需要提前规划、分阶段验证的路径。典型的工程目标包括:建立从 ROM 到操作系统的完整信任链;确保所有密钥在芯片内部受保护;关闭所有未使用的调试接口;实现版本回滚控制;以及在量产前完成 eFuse 熔断和密钥规划。

实施路径通常分为四个阶段。第一阶段是密钥体系设计,确定签名算法(如 RSA-3072 或 ECDSA P-384)、密钥层级和轮换策略。第二阶段是固件签名与验证流程搭建,包括签名工具链、镜像格式和验证策略配置。第三阶段是平台配置与熔断,将公钥哈希写入 eFuse,使能安全启动,锁定调试接口。第四阶段是验证与回归,包括正常启动验证、篡改镜像拒绝验证、降级镜像拒绝验证和调试口关闭验证。

关键提醒:eFuse 熔断是不可逆操作。在熔断前,必须完成所有密钥的生成、备份和验证,并在开发板上完整走通签名与验证流程。一旦熔断错误,芯片可能无法启动,且无法恢复。

安全启动工程的核心矛盾在于:安全性越高,灵活性越低。信任根熔断后无法更改,调试口关闭后无法在线调试,版本回滚控制可能阻止合法的维护操作。因此,工程目标不是“最大化安全”,而是在安全需求、生产可行性和维护便利性之间找到平衡点。这个平衡点的选择,将直接影响后续每一章的配置决策。