1. 概述
  2. ATF的主要特点和功能包括:
  • 2.1. 启动流程管理:
  • 2.2. 硬件隔离
  • 2.2.1. 内存隔离
  • 2.2.2. 外设隔离
  • 2.2.3. 中断隔离:
  • 2.2.4. 执行状态隔离
  • 2.2.5. 处理器状态隔离
  • 2.3. 安全服务
  • 2.4. 开源和可定制

1. 概述

ATF 官方资料:
https://www.trustedfirmware.org/https://trustedfirmware-a.readthedocs.io/en/latest/
https://www.trustedfirmware.org/projects/op-tee/https://developer.arm.com/documentation/100325/0001/?lang=en


ARM ATF(ARM Trusted Firmware)是ARM公司提供的一款开源安全固件,旨在为基于ARM架构的系统提供信任根(Root of Trust)和安全启动功能。ATF(ARM Trusted Firmware)通过TrustZone技术实现了硬件级别的隔离,在硬件层面上提供安全和非安全区域的隔离,确保敏感数据和代码的保护,确保了系统中的安全和非安全组件能够相互独立运行,从而提高了系统的安全性。

2. ATF的主要特点和功能

2.1. 启动流程管理:

ATF负责管理整个系统的启动流程,包括从最低级别的启动固件(BL1)到操作系统(BL33)的加载和初始化。
ATF支持安全启动,确保系统在启动过程中的每个阶段都经过验证,防止恶意软件的注入和篡改。

ATF的启动流程通常包括以下几个阶段:

  • BL1(Bootloader Level 1):位于ROM中,负责初始化硬件和加载BL2。
  • BL2(Bootloader Level 2):位于RAM中,运行在安全模式下,负责加载BL31。
  • BL31(Bootloader Level 3-1):运行在EL3级别,负责初始化安全服务和加载BL32。
  • BL32(Bootloader Level 3-2):运行在安全EL1级别,通常用于加载TEE(Trusted Execution Environment)操作系统。
  • BL33(Bootloader Level 3-3):运行在非安全EL2或EL1级别,负责加载UEFI固件或Linux内核。

ATF的设计使得它能够适应多种不同的系统架构和安全需求,为基于ARM的设备提供了一个强大且灵活的安全解决方案。

2.2. 硬件隔离

通过TrustZone技术,ATF能够在硬件层面上隔离安全和非安全资源,包括内存、外设和中断等。

AXI与AXI组件:
AXI(Advanced eXtensible Interface)是一种高级可扩展总线接口,由ARM定义,并包含在AMBA(Advanced Microcontroller Bus Architecture)标准中。AXI协议支持高性能、高带宽、低延迟的系统设计,广泛应用于SoC(System on Chip)设计中。 遵循AXI协议并通过AXI总线进行通信的硬件设备被称为AXI组件

TZC、TZMA、TZASC、TZPC、TZIC的简介:

  • TZC(TrustZone Controller)是一个宽泛的概念,可以指代一系列与TrustZone技术相关的控制器组件,包括TZMA、TZASC、TZPC、TZIC,这些控制器负责管理和控制安全与非安全环境之间的隔离。
  • TZMA(TrustZone Memory Adapter)是与片上存储器交互的组件,不是AXI组件,用于将片上(on-chip)ROM或RAM划分安全区域和非安全区域。TZMA的使用有一些限制,它不适用于外部内存的划分,而且只能配置一个安全区域。
  • TZASC(TrustZone Address Space Controller)是一个AXI组件,用于将连接在其下游的AXI从设备(如内存或外设)的地址空间分割成多个不同的地址范围,并且可以设定这些地址区域为安全或非安全空间。TZASC通常位于处理器核心和DDR(动态内存控制器)之间,起到了memory filter的作用。
  • TZPC(TrustZone Protection Controller)通常是在处理器和外设之间或处理器和内存控制器之间,用于配置片上外设或内存的安全属性。TZPC的具体实现取决于SoC的设计和制造商的安全要求。TZPC的功能可能被集成到内存控制器或其他相关硬件组件中,TZPC也可以作为一个独立的模块存在。
  • TZIC(Trust Zone Interrupt Controller):TZIC是一级中断控制器,它管理所有的中断源,并根据配置决定哪些中断是安全的,哪些是非安全的。安全中断直接被送往安全环境处理,而非安全中断则通过GIC或VIC以IRQ形式处理。在某些实现中,TZIC可能与GIC紧密集成,或者某些GIC的实现可能包含了TZIC的功能,但它们的工作方式和目的是有区别的。TZIC确保了安全中断的快速和安全响应,而GIC则提供了更为通用的中断管理功能。

TZC可以包括多种不同的实现,如TZPC(TrustZone Protection Controller)和TZASC(TrustZone Address Space Controller),它们都是实现TrustZone安全隔离的硬件组件。在实际应用中,TZASC通常用于实现内存的区域隔离,而TZPC则用于控制外设的安全属性。两者共同工作,为基于ARM架构的系统提供了强大的安全隔离能力。

2.2.1. 内存隔离

ATF使用内存过滤组件TZASC(如TZC-400)来控制对内存区域的访问。这些组件可以根据安全状态来允许或拒绝对特定内存区域的访问请求。例如,可以配置某些内存区域为仅在安全状态下可访问,从而防止非安全环境的软件访问敏感数据。

ATF原理-初步认知_ATF

TZC-400 系统示例

2.2.2. 外设隔离

外设隔离是通过一系列的安全机制来实现的,确保系统资源在安全和非安全环境之间得到恰当的访问控制。这些机制包括TZPC和AXI总线的扩展。

TZPC(Trust Zone Protection Controller):
TZPC是一个硬件组件,用于配置和管理片上外设的安全属性。通过使用TZPCDECPROT寄存器,系统设计者可以定义哪些外设是安全的,从而控制安全环境和非安全环境对这些外设的访问权限。这种控制确保了敏感的外设只能在安全环境下被访问,防止了潜在的非安全软件对这些资源的不当访问。

AXI总线扩展:
AXI总线是ARM架构中用于连接处理器和外设的接口。在TrustZone技术中,AXI总线被扩展以包含一个名为NS(Non-Secure)位的额外信息。这个位用于标记访问请求,指示当前操作是安全还是非安全。处理器和外设可以通过检查这个位来判断是否应该允许访问。
当一个安全环境的访问请求到达外设时,NS位会被设置为安全状态,TZPC会识别这个请求并允许访问。
相反,当非安全环境的访问请求到达时,NS位会被设置为非安全状态,TZPC会根据预设的安全策略来决定是否允许这个请求。

除了TZPC和AXI总线的扩展,ATF(ARM Trusted Firmware)还可能使用其他组件如TZMA(Trust Zone Memory Adapter)来增强外设隔离。TZMA可以与TZPC协同工作,对片上静态内存(如RAM)和片上ROM进行安全和非安全区域的划分。这样,不仅外设的访问受到控制,内存资源也得到了相应的保护。

2.2.3. 中断隔离:

通过TZIC实现。

2.2.4. 执行状态隔离

ATF在不同的执行级别(EL)上运行不同的固件组件。例如,BL31运行在EL3级别,负责管理安全服务,而BL32和BL33可能运行在EL1或EL2级别。这种设计确保了不同级别的软件组件之间存在明确的隔离边界。

2.2.5. 处理器状态隔离

处理器状态隔离是指在安全状态和非安全状态之间进行切换时,处理器的上下文信息(如寄存器、程序计数器等)被妥善保存和恢复的过程。这种隔离确保了: (1)当处理器从安全状态切换到非安全状态时,安全环境的敏感信息不会被非安全环境访问。 (2)从非安全状态返回到安全状态时,安全环境能够恢复到切换前的状态,继续安全操作。 为了实现处理器状态隔离,ARM架构提供了一些特殊的寄存器和机制,如银行化的寄存器组,用于在不同安全状态下保存和恢复处理器状态。此外,安全状态之间的切换通常通过安全监控中断(SMC)或安全异常来实现,这些机制确保了切换过程的安全性和一致性。

2.3. 安全服务

ATF提供了一系列的安全服务,如电源状态协调接口(PSCI)和安全监控模式调用(SMC),这些服务允许操作系统和其他软件组件安全地访问硬件资源和执行敏感操作。 安全监控模式调用(SMC):ATF实现了SMC机制,允许非安全环境的软件通过特定的SMC指令与安全环境的软件进行交互。SMC确保了请求的传递和响应都在安全环境下进行,防止了敏感数据的泄露。 这些隔离机制的原理主要基于硬件级别的控制和配置,通过在硬件层面上划分安全和非安全区域,并严格控制对这些区域的访问权限,从而实现了对系统资源的有效隔离。这种隔离不仅提高了系统的安全性,也为安全应用提供了一个受保护的运行环境。

2.4. 开源和可定制

ATF是开源的,允许开发者根据具体需求进行定制和扩展,以适应不同的硬件平台和应用场景。