本章将深入探讨ARM TrustZone技术的核心机制,特别关注与Trusty系统相关的安全世界资源划分、内存隔离机制和中断处理策略。
在TrustZone架构中,系统资源被划分为安全世界(Secure World)和非安全世界(Normal World)。Trusty作为安全操作系统,运行在安全世界中,需要明确资源的独占与共享策略。
[示意图:安全世界与非安全世界资源划分]
以下资源通常由Trusty独占使用,非安全世界无法直接访问:
设计建议:Trusty独占资源应在系统初始化阶段完成配置,避免运行时动态修改带来的安全风险。
以下资源可在安全世界和非安全世界之间共享,但需要严格的安全控制:
| 资源类型 | 共享机制 | 安全考虑 |
|---|---|---|
| 内存区域 | 通过TZASC配置为共享区域 | 需要监控访问权限,防止信息泄露 |
| 外设 | 虚拟化或分时复用 | 确保非安全世界无法绕过安全策略 |
| 中断(Group1) | 中断虚拟化 | 防止中断劫持和DoS攻击 |
安全警告:共享资源是攻击的主要目标,必须实现严格的访问控制和状态隔离机制。
TrustZone通过TrustZone Address Space Controller (TZASC)和TrustZone Memory Adapter (TZMA)实现内存的硬件级隔离。
TZASC将物理内存划分为多个区域,每个区域可独立配置为安全或非安全:
// 示例:TZASC区域配置寄存器
#define TZASC_REGION_0_ATTRIBUTES (TZASC_REGION_ENABLE |
TZASC_REGION_SECURE |
TZASC_REGION_SIZE_64MB)
关键配置参数:
TZMA用于更细粒度的内存划分,通常在片内SRAM上实现:
最佳实践:Trusty的代码和数据应完全位于TZASC/TZMA保护的安全内存区域中。
TrustZone将中断分为Group0(安全中断)和Group1(非安全中断),采用不同的处理策略。
[示意图:TrustZone中断处理流程]
Group0中断由安全世界直接处理,特点包括:
Group1中断需要通过虚拟化机制处理:
// 示例:中断虚拟化处理流程
1. 中断触发,进入Monitor模式
2. 保存非安全世界上下文
3. 检查中断源安全性
4. 安全中断:切换到安全世界处理
5. 非安全中断:模拟中断到非安全世界
6. 处理完成后恢复上下文
关键考虑因素:
| 考虑因素 | 解决方案 |
|---|---|
| 中断延迟 | 优化Monitor模式切换流程 |
| 中断劫持 | 严格验证中断源和参数 |
| DoS攻击 | 实现中断频率限制 |
性能提示:频繁的世界切换会显著影响系统性能,应尽量减少不必要的安全世界和非安全世界之间的切换。