1. TrustZone 基础概念

1.1 ARM TrustZone 技术概述

ARM TrustZone 是一种系统级硬件安全扩展技术,内置于 ARM Cortex-A 系列处理器及部分 Cortex-M 系列处理器中。其核心目标是在同一物理处理器上创建两个独立的执行环境——安全世界(Secure World)与非安全世界(Normal World),从而实现敏感数据与代码的隔离保护。

TrustZone 并非一个独立的操作系统或软件栈,而是一种硬件架构基础,为 TEE(Trusted Execution Environment)的实现提供了底层支撑。通过 TrustZone,开发者可以在安全世界中运行可信操作系统(如 OP-TEE、Trusty、QSEE),处理密钥管理、支付认证、生物特征比对等安全敏感任务。

关键理解: TrustZone 的隔离粒度是“系统级”而非“进程级”。整个系统在任一时刻要么处于安全状态,要么处于非安全状态,切换由硬件强制保证。

1.2 安全世界与非安全世界隔离原理

TrustZone 将处理器的执行状态划分为两个世界,每个世界拥有独立的物理地址空间、系统寄存器视图和中断控制逻辑。隔离的核心机制包括:

  • 地址空间隔离:通过 NS(Non-Secure)位标记内存访问属性。安全世界可访问安全内存与非安全内存,而非安全世界只能访问非安全内存。
  • 系统寄存器隔离:关键系统控制寄存器(如中断控制器、定时器、调试接口)在安全世界和非安全世界拥有独立的副本或访问权限控制。
  • 中断隔离:中断控制器(GIC)支持安全中断(SGI、PPI、SPI)与非安全中断的独立路由,安全中断只能由安全世界处理。
  • 缓存与TLB隔离:通过物理地址空间中的安全位标记,确保非安全世界无法通过缓存侧信道获取安全数据。
隔离维度 安全世界 非安全世界
内存访问 可访问安全内存 + 非安全内存 仅可访问非安全内存
中断处理 可处理安全中断 + 非安全中断 仅可处理非安全中断
调试接口 完全控制调试权限 受限调试,无法访问安全世界
系统控制 可配置安全策略 无法修改安全配置
隔离原则: 非安全世界永远无法直接访问安全世界的物理内存或寄存器。任何跨世界通信都必须通过 Monitor 模式下的 SMC 指令显式完成。
TrustZone 安全世界与非安全世界隔离架构 非安全世界 (Normal World) Rich OS (Linux/Android) 非安全应用 非安全中断 (FIQ/IRQ) 非安全内存 (NS=1) 安全世界 (Secure World) TEE OS (OP-TEE/Trusty) 安全应用 (TA) 安全中断 (FIQ) 安全内存 (NS=0) 硬件隔离墙 跨世界通信:通过 Monitor 模式 + SMC 指令显式切换 非安全世界无法直接读取安全世界内存或寄存器

1.3 Monitor 模式与 SMC 指令

Monitor 模式是 TrustZone 架构中一个特殊的处理器模式,位于安全世界与非安全世界之间,充当两个世界的“门卫”。当系统需要从非安全世界切换到安全世界(或反之)时,必须通过 Monitor 模式完成上下文切换。

SMC(Secure Monitor Call)指令是触发世界切换的唯一软件途径。执行 SMC 指令后,处理器会陷入 Monitor 模式,由 Monitor 软件(通常是安全固件,如 ARM Trusted Firmware)保存当前世界状态,恢复目标世界状态,然后切换到目标世界执行。

安全注意事项: Monitor 模式代码必须极小且经过严格验证,因为它是整个 TrustZone 安全模型的关键信任根。任何 Monitor 模式的漏洞都可能导致安全世界与非安全世界的隔离被完全突破。

世界切换流程

  1. 发起请求:非安全世界(或安全世界)执行 SMC 指令,携带功能标识符和参数。
  2. 陷入 Monitor:处理器硬件自动切换到 Monitor 模式,保存当前世界上下文(寄存器、状态等)。
  3. 安全检查:Monitor 软件验证请求的合法性(如参数范围、调用来源)。
  4. 上下文切换:恢复目标世界的上下文,包括寄存器、系统控制寄存器、中断路由配置。
  5. 返回目标世界:执行 ERET 指令,切换到目标世界继续执行。
步骤 操作 执行模式
1 非安全世界执行 SMC #0 Non-Secure EL1/EL0
2 处理器陷入 Monitor 模式 Monitor (EL3)
3 保存非安全世界上下文 Monitor (EL3)
4 恢复安全世界上下文 Monitor (EL3)
5 ERET 进入安全世界 Secure EL1/EL0
SMC 指令触发的世界切换流程 非安全世界 Linux / Android 执行 SMC 指令 Monitor 模式 (EL3) 保存/恢复上下文 安全检查 安全世界 TEE OS / TA 处理安全请求 ERET 返回 SMC 指令格式示例 ARMv8-A: SMC #0x0 — 标准服务调用 ARMv7-A: SMC #0 — 触发 Monitor 切换 参数通过寄存器 X0-X7 (ARMv8) 或 R0-R7 (ARMv7) 传递

1.4 中断路由与安全中断处理

在 TrustZone 架构中,中断控制器(GIC,Generic Interrupt Controller)支持将中断配置为安全中断或非安全中断。安全中断(如安全定时器、安全外设中断)只能由安全世界处理,非安全世界无法屏蔽或抢占安全中断。

GIC 通过以下机制实现中断隔离:

  • GICD_IGROUPn 寄存器:每个中断源通过该寄存器配置为安全组(Group 0)或非安全组(Group 1)。
  • 安全中断路由:安全中断直接路由到安全世界,即使非安全世界正在执行也无法拦截。
  • FIQ 与 IRQ 分配:通常安全中断使用 FIQ 信号,非安全中断使用 IRQ 信号,但具体分配可配置。
实践要点: 在配置 TEE 时,必须确保安全中断(如安全定时器、安全 DMA 完成中断)被正确配置为 Group 0,并注册对应的安全中断处理程序。非安全世界无法访问 GIC 中与安全中断相关的配置寄存器。
GIC 安全中断路由架构 安全中断源 安全定时器 / 安全外设 Group 0 非安全中断源 普通外设 / 网络 Group 1 GIC 中断控制器 GICD_IGROUPn 配置 安全中断 → FIQ 非安全中断 → IRQ 路由决策 安全世界 处理 FIQ 安全中断 安全中断处理程序 非安全世界 处理 IRQ 非安全中断 非安全中断处理程序 安全中断(FIQ)直接路由到安全世界,非安全世界无法屏蔽或拦截

1.5 本章小结

TrustZone 技术通过硬件强制隔离安全世界与非安全世界,为 TEE 提供了坚实的信任基础。Monitor 模式与 SMC 指令构成了世界切换的唯一通道,而 GIC 的安全中断路由机制确保了安全中断的实时性和隔离性。理解这些基础概念是后续配置安全中断处理与 TEE 世界通信的必备前提。