2. 硬件架构基础:ARMv8-A与ARMv7-A的TrustZone硬件扩展

TrustZone技术是ARM架构中提供系统级安全隔离的硬件扩展,最早在ARMv6K中引入,并在ARMv7-A和ARMv8-A架构中持续演进。理解这两个架构代际的TrustZone实现差异,是部署安全固件的首要前提。

2.1 ARMv7-A TrustZone硬件扩展

ARMv7-A架构的TrustZone将处理器核心和系统总线划分为两个虚拟世界:安全世界(Secure World)和非安全世界(Non-Secure World)。这种划分不是通过软件模拟,而是由硬件强制实施的物理隔离。

2.1.1 核心扩展:Monitor模式与安全状态位

ARMv7-A在原有的七种处理器模式(User、FIQ、IRQ、Supervisor、Abort、Undefined、System)之外,新增了Monitor模式(MON)。Monitor模式是唯一可以在安全世界和非安全世界之间切换的执行模式。处理器通过SMC(Secure Monitor Call)指令或硬件异常进入Monitor模式,由Monitor软件(通常是安全固件或TrustZone引导加载程序)完成世界切换。

关键硬件信号: ARMv7-A核心通过NS位(Non-Secure bit)标识当前执行状态。当NS=0时,处理器处于安全世界;NS=1时处于非安全世界。该位由硬件在异常返回时自动设置,不可由非安全世界软件直接修改。

2.1.2 内存系统隔离:TZASC与TZMA

ARMv7-A的TrustZone内存隔离依赖两个关键硬件组件:

  • TZASC(TrustZone Address Space Controller):位于系统总线上的内存控制器,为每个内存区域配置安全属性。TZASC将物理地址空间划分为多个区域,每个区域可配置为安全、非安全或安全可调用。
  • TZMA(TrustZone Memory Adapter):用于片内SRAM的简单安全控制器,通常将SRAM划分为安全和非安全两个固定区域。
组件 保护对象 配置粒度 典型用途
TZASC 外部DRAM/Flash 可编程区域(通常8-16个区域) 安全内存、安全外设映射
TZMA 片内SRAM 固定2个区域(安全/非安全) 安全固件运行时数据
TZPC 外设总线 按外设粒度 安全外设访问控制
实践要点: 在ARMv7-A平台上部署安全固件时,必须确保TZASC在系统启动早期(如BootROM阶段)完成配置,防止非安全世界在安全内存初始化之前访问敏感区域。

2.1.3 外设隔离:TZPC

TZPC(TrustZone Protection Controller)负责控制外设总线的安全属性。每个外设可以独立配置为安全或非安全。当非安全世界尝试访问标记为安全的外设时,总线将返回错误响应,阻止访问。

ARMv7-A TrustZone 硬件隔离架构 安全世界 (Secure World) 非安全世界 (Non-Secure World) ARM Core NS=0 ARM Core NS=1 Monitor模式 SMC/异常切换 ← 上一章 📖 返回目录 下一章 →