ARM TrustZone是ARM处理器架构中提供硬件级安全隔离的技术,它通过将系统划分为安全世界(Secure World)和非安全世界(Normal World)来实现硬件级别的安全隔离。这种架构为敏感操作和数据提供了安全的执行环境。
图1: ARM TrustZone架构示意图
TrustZone通过在处理器核心中引入安全状态的概念,实现了两个虚拟处理器的隔离:
注意:两个世界的隔离是硬件级别的,即使非安全世界的操作系统被完全攻陷,也无法直接访问安全世界的资源。
安全世界和非安全世界之间的切换通过监控模式(Monitor Mode)完成:
SMC(Secure Monitor Call)指令触发异常安全考虑:世界切换是潜在的攻击面,必须确保监控模式的代码(通常由ARM Trusted Firmware提供)是安全可靠的。
TrustZone的实现依赖于一系列硬件扩展:
NS-bit是TrustZone架构中的核心概念,它标记了当前执行环境的安全状态:
| NS-bit值 | 含义 | 访问权限 |
|---|---|---|
| 0 | 安全世界 | 可以访问所有资源(安全和非安全) |
| 1 | 非安全世界 | 只能访问非安全资源 |
NS-bit存在于:
Monitor模式是处理器的一个特殊执行模式,负责管理世界切换:
SMC指令执行或安全配置异常时进入// 简化的世界切换示例
monitor_mode_handler:
// 保存当前世界上下文
push {r0-r12, lr}
// 判断当前NS-bit状态
mrc p15, 0, r0, c1, c1, 0 // 读取SCR寄存器
tst r0, #1 // 检查NS-bit
// 根据NS-bit决定切换到哪个世界
beq switch_to_normal_world
bne switch_to_secure_world
图2: TrustZone硬件扩展示意图
实际应用:在OP-TEE系统中,TZASC用于隔离安全世界和非安全世界的内存区域,确保即使非安全世界被攻陷,也无法读取安全世界的内存内容。