ARM TrustZone深度解析

本章将深入探讨ARM TrustZone技术的核心机制,特别关注与Trusty系统相关的安全世界资源划分、内存隔离机制和中断处理策略。

1. 安全世界资源划分(Trusty独占 vs 共享资源)

在TrustZone架构中,系统资源被划分为安全世界(Secure World)和非安全世界(Normal World)。Trusty作为安全操作系统,运行在安全世界中,需要明确资源的独占与共享策略。

[示意图:安全世界与非安全世界资源划分]

1.1 Trusty独占资源

以下资源通常由Trusty独占使用,非安全世界无法直接访问:

设计建议:Trusty独占资源应在系统初始化阶段完成配置,避免运行时动态修改带来的安全风险。

1.2 共享资源

以下资源可在安全世界和非安全世界之间共享,但需要严格的安全控制:

资源类型 共享机制 安全考虑
内存区域 通过TZASC配置为共享区域 需要监控访问权限,防止信息泄露
外设 虚拟化或分时复用 确保非安全世界无法绕过安全策略
中断(Group1) 中断虚拟化 防止中断劫持和DoS攻击

安全警告:共享资源是攻击的主要目标,必须实现严格的访问控制和状态隔离机制。

2. 内存隔离机制(TZASC/TZMA配置)

TrustZone通过TrustZone Address Space Controller (TZASC)和TrustZone Memory Adapter (TZMA)实现内存的硬件级隔离。

2.1 TZASC配置

TZASC将物理内存划分为多个区域,每个区域可独立配置为安全或非安全:

// 示例:TZASC区域配置寄存器
#define TZASC_REGION_0_ATTRIBUTES (TZASC_REGION_ENABLE | 
                                  TZASC_REGION_SECURE | 
                                  TZASC_REGION_SIZE_64MB)

关键配置参数:

2.2 TZMA配置

TZMA用于更细粒度的内存划分,通常在片内SRAM上实现:

最佳实践:Trusty的代码和数据应完全位于TZASC/TZMA保护的安全内存区域中。

3. 中断虚拟化策略(Group0/1中断处理)

TrustZone将中断分为Group0(安全中断)和Group1(非安全中断),采用不同的处理策略。

[示意图:TrustZone中断处理流程]

3.1 Group0中断处理

Group0中断由安全世界直接处理,特点包括:

3.2 Group1中断处理

Group1中断需要通过虚拟化机制处理:

// 示例:中断虚拟化处理流程
1. 中断触发,进入Monitor模式
2. 保存非安全世界上下文
3. 检查中断源安全性
4. 安全中断:切换到安全世界处理
5. 非安全中断:模拟中断到非安全世界
6. 处理完成后恢复上下文

关键考虑因素:

考虑因素 解决方案
中断延迟 优化Monitor模式切换流程
中断劫持 严格验证中断源和参数
DoS攻击 实现中断频率限制

性能提示:频繁的世界切换会显著影响系统性能,应尽量减少不必要的安全世界和非安全世界之间的切换。