ATF官方文档翻译(二四):受信任的板引导 -(Trusted Board Boot)

Trusted Board Boot(TBB)确保通过验证固件镜像防止恶意软件运行。本文档详细介绍了ATF如何实现TBB,包括信任链、证书生成和验证流程,以及涉及的加密框架和工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、Trusted Board Boot-受信任的板引导

我觉得就是硬件可信启动引导。

Trusted Board Boot(TBB)功能通过验证所有固件镜像(包括正常世界引导加载程序),防止恶意固件在平台上运行。它通过使用公钥密码标准(PKCS)建立信任链来实现这一点。

本文档描述了Trusted Firmware-A(TF-A)TBB的设计,它是Trusted Board Boot Requirements(TBBR)规范Arm DEN0006D的实现。它应与固件更新(FWU)设计文件一起使用,该文件实现了TBBR的特定方面。

1.信任链

信任链(CoT)从一组隐式信任组件开始。在Arm开发平台上,这些组件包括:

  • 信任根公钥(ROTPK)的SHA-256哈希。它存储在受信任的根密钥存储寄存器中。或者,可以使用开发ROTPK,并将其散列嵌入到BL1和BL2图像中(仅用于开发目的)。
  • BL1图像,假设它位于ROM中,因此不能被篡改。

CoT中的其余组件是证书或引导加载程序映像。证书遵循X.509 v3标准。该标准允许向证书添加自定义扩展,用于存

<think>好的,我现在需要回答用户关于ARM Trusted Firmware (ATF)和u-boot之间关系及交互方式的问题。首先,我要回顾一下用户提供的引用内容,确保信息准确。 根据引用[1],ATF是ARMv8架构中引入的底层固件,负责引导加载程序、Linux内核和TEEOS的加载和启动,以及正常世界状态和安全世界状态的切换。这说明ATF在启动流程中扮演重要角色。而引用[3]提到ATF实现了Trusted Board Boot,符合TBBR要求,涉及固件映像包的认证和加载,这可能与u-boot的职责有所重叠或分工。 接下来,用户问的是ATF和u-boot的关系。我需要明确两者的层级和职责。u-boot是一个通用的BootLoader,常用于嵌入式系统,负责初始化硬件和加载操作系统。而ATF作为ARM TrustZone的一部分,专注于安全相关的启动和监控。根据引用[2],ATF实现了Secure Monitor和EL3的处理,这可能意味着在ARMv8系统中,ATF运行在更高的异常级别,管理安全状态切换,而u-boot可能在EL2或EL1运行,处理非安全世界的启动。 然后,交互方式方面,引用[2]提到ATF处理SMC调用,这应该是通过SMC指令进行通信的机制。当u-boot需要执行安全相关操作时,比如访问安全内存或切换状态,会触发SMC异常,由ATF的Secure Monitor处理。引用[4]提到BL2阶段,可能涉及ATF的不同引导阶段与u-boot的协作,例如BL2加载BL31(ATF的一部分)和BL33(可能是u-boot)。 我还需要确认两者的启动顺序。通常,ARM系统上电后,首先运行ATF的BL1,然后是BL2,接着加载BL31(Secure Monitor)和BL33。BL33通常是非安全BootLoader,比如u-boot。这样,ATF在启动流程中处于更底层,负责安全相关的初始化,然后将控制权转交给u-boot进行后续的非安全启动。 最后,需要检查是否有遗漏的细节,比如具体如何传递参数,是否有标准的接口规范。引用[3]提到固件映像包(FIP),可能ATF负责验证和加载这些映像,包括u-boot的镜像,确保启动链的安全性。因此,ATF和u-boot的关系是分层协作,ATF提供安全基础,u-boot处理后续引导步骤。</think>ARM Trusted Firmware (ATF) 与 u-boot 在 ARMv8/ARMv9 系统的启动流程中是分层协作关系,共同构成完整的启动链。以下是两者的核心关系及交互方式分析: --- ### 一、功能定位差异 1. **ATF的核心作用** - 作为安全世界(Secure World)的底层固件,运行在最高特权级 **EL3**,负责: - 安全启动链的验证(符合 TBBR 规范)[^3] - 安全与非安全世界状态切换(通过 `SMC` 指令触发)[^1] - 提供电源管理接口(如 PSCI 标准实现)[^2] - 包含 **BL1/BL2/BL31** 等固件阶段,其中 BL31 实现 Secure Monitor 功能[^4]。 2. **u-boot的职责** - 作为非安全世界(Normal World)的 BootLoader(通常对应 **BL33** 阶段)[^3],负责: - 硬件初始化(如 DDR、外设) - 加载 Linux 内核与设备树 - 提供 U-Boot 命令行等调试功能 --- ### 二、启动流程协作 典型 ARMv8 启动顺序如下: ``` BootROM → BL1 (ATF) → BL2 (ATF) → BL31 (ATF, EL3) → BL32 (可选 TEE OS) → BL33 (u-boot, EL2/EL1) ``` **关键交互点**: 1. **镜像加载** - ATF 的 BL2 阶段负责从 FIP(Firmware Image Package)中加载 **BL33(u-boot)镜像**,并验证其完整性[^3]。 - 示例代码片段(ATF 配置文件中定义 BL33 入口): ```C #define BL33_IMAGE_DESC { \ .image_id = BL33_IMAGE_ID, \ .image_info.h.attr = SET_EXEC_STATE(EXECUTABLE), \ .image_info.image_base = BL33_BASE, \ .ep_info.pc = BL33_BASE \ } ``` 2. **状态切换** - u-boot 运行时若需访问安全服务(如调用 PSCI 关闭核心),会通过 `SMC` 指令触发异常,由 ATF 的 BL31(Secure Monitor)接管并处理[^2]。 --- ### 三、接口规范 1. **SMC Calling Convention** - u-boot 通过 **SMC(Secure Monitor Call)指令** 与 ATF 通信,参数通过寄存器传递(如 `X0-X7`),遵循 SMCCC 标准[^2]。 - 示例:u-boot 调用 PSCI 的 `CPU_OFF` 函数: ```C // u-boot 中触发 SMC invoke_psci_fn(PSCI_0_2_FN_CPU_OFF, 0, 0, 0); ``` 2. **设备树传递** - ATF 可将硬件配置信息(如电源管理节点)通过设备树传递给 u-boot,确保非安全世界能正确初始化硬件。 --- ### 四、典型应用场景 1. **安全固件更新** ATF 验证 u-boot 镜像签名后加载,防止恶意篡改[^3]。 2. **多核启动控制** u-boot 通过 ATF 提供的 PSCI 接口唤醒/关闭其他 CPU 核心[^2]。 3. **TrustZone 资源配置** ATF 在初始化阶段划分安全内存区域,u-boot 仅能访问非安全资源。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TrustZone_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值