1. SDM 概述:Secure Device Manager 在 Agilex SoC FPGA 中的角色与功能架构
Secure Device Manager(SDM)是 Intel Agilex SoC FPGA 系列中一个专用的、不可编程的硬核安全与管理单元。它作为整个芯片的“信任根”与“系统控制器”,独立于 FPGA 架构和 HPS 子系统运行,负责所有安全敏感操作与系统级启动管理。
1.1 SDM 的核心角色
SDM 在 Agilex 器件中承担以下关键职责:
- 信任根(Root of Trust, RoT):作为硬件信任锚点,所有安全启动链的验证起点。
- 启动控制器:管理 FPGA 配置、HPS 启动以及双镜像(Active/Inactive)切换逻辑。
- 固件升级引擎:执行 SDM 固件自身的现场升级,支持回滚保护与镜像验证。
- 密钥与证书管理:存储、派生和使用加密密钥,处理认证与解密操作。
- 系统监控与错误报告:监测启动状态、安全事件,并通过专用接口向主机报告。
关键概念: SDM 是 Agilex 中唯一能够访问片上 OTP(一次性可编程)存储和硬核加密加速器的模块。所有对安全敏感资源的访问都必须经过 SDM 授权。
1.2 功能架构概览
SDM 的内部架构由多个功能模块组成,这些模块协同工作以提供安全、可靠的系统管理能力。下表列出了主要功能模块及其职责:
| 功能模块 | 职责描述 | 安全属性 |
|---|---|---|
| 启动 ROM | 芯片上电后第一个执行的不可变代码,负责初始化 SDM 并验证第一个外部镜像。 | 不可更改(Mask ROM) |
| 安全处理器 | 运行 SDM 固件的专用 CPU 核心,执行安全策略、密钥管理和协议处理。 | 隔离执行环境 |
| 加密加速器 | 硬件加速的 AES、SHA、ECDSA 等密码学运算单元,用于镜像验证与解密。 | 防侧信道设计 |
| 密钥存储 | OTP eFuse 阵列与内部 SRAM,用于存储根密钥、设备密钥和临时会话密钥。 | 物理防篡改 |
| 配置控制器 | 管理 FPGA 配置数据流(通过 Avalon-ST 或 Avalon-MM 接口)和配置序列。 | 访问控制 |
| 双镜像管理器 | 维护 Active/Inactive 镜像状态,执行启动尝试计数与自动回滚逻辑。 | 防砖化保护 |
| 系统接口 | 提供 JTAG、SPI、I2C、UART 等外部通信接口,以及内部 AXI 总线桥接。 | 接口认证 |
1.3 SDM 软件架构层次
从软件视角看,SDM 固件栈分为三个层次,每一层都建立在前一层的安全基础之上:
- 硬件抽象层(HAL):直接操作 SDM 硬件寄存器,提供底层驱动(如 SPI 控制器、加密引擎、定时器)。
- 安全服务层:实现加密库、密钥管理、镜像解析与验证、安全策略执行等核心逻辑。
- 应用管理层:处理来自 HPS 或外部主机的命令(如配置请求、固件升级指令、状态查询),并协调底层服务完成操作。
开发提示: 在编写 SDM 固件升级流程时,理解安全服务层中的镜像验证顺序(签名验证 → 哈希校验 → 解密)至关重要。任何一步失败都会触发安全错误处理流程。
1.4 SDM 系统集成关系图
下图展示了 SDM 在 Agilex SoC 中的位置及其与 FPGA Fabric、HPS、外部存储器和调试接口的连接关系:
1.5 安全启动与双镜像的关系
SDM 的双镜像安全启动机制是其核心安全特性之一。该机制确保即使主镜像损坏或升级失败,系统仍能回滚到已知良好的备份镜像,从而避免设备“变砖”。
安全注意事项: 双镜像配置依赖于 SDM 固件中的启动计数器和镜像状态寄存器。在固件升级过程中,切勿手动擦除或修改 Inactive 镜像区域,否则可能导致双镜像机制失效。
下表总结了 SDM 在双镜像安全启动流程中的关键操作:
| 启动阶段 | SDM 操作 | 安全校验 |
|---|---|---|
| 上电复位 | 执行 Boot ROM,初始化安全处理器与加密引擎 | Boot ROM 完整性(硬件保证) |
| 镜像选择 | 读取双镜像状态寄存器,确定 Active 镜像地址 | 状态寄存器防篡改 |
| 镜像验证 | 加载镜像头部,验证签名(ECDSA)与哈希(SHA-384) | 公钥链验证 |
| 解密(可选) | 使用设备唯一密钥解密镜像数据 | AES-256-GCM 解密 |
| 配置加载 | 将有效镜像写入 FPGA 配置逻辑或 HPS 启动内存 | 访问权限控制 |
| 启动确认 | 等待 HPS 或用户逻辑发送“启动成功”信号,更新镜像状态 | 看门狗超时回滚 |