什么是 ARM TrustZone?
ARM TrustZone 是由 ARM 公司设计并推出的一种硬件级的安全扩展技术,它并非一个独立的芯片或软件,而是集成在 ARM 处理器架构中的一种机制,旨在为系统提供一个安全可靠的执行环境。

TrustZone 技术将一个标准的 SoC(System on a Chip,片上系统)划分成两个独立的、隔离的世界:
- 安全世界
- 普通世界
这两个世界在硬件层面上是相互隔离的,就像一个国家里有两个互不干涉的“特区”,普通世界的应用程序无法直接访问安全世界的资源(如代码、数据、外设),反之亦然,这种隔离性是 TrustZone 安全性的基石。
核心概念:安全世界 vs. 普通世界
为了更好地理解,我们可以用一个银行金库的比喻:
| 特性 | 普通世界 | 安全世界 | 银行比喻 |
|---|---|---|---|
| 主要功能 | 运行日常应用程序、操作系统(如 Android, Linux) | 处理敏感任务、密钥管理、安全启动、生物识别验证 | 银行大厅,处理客户日常业务 |
| 执行环境 | Normal World (EL0/EL1) | Secure World (EL3 / Secure Monitor Mode) | 银行金库,存放贵重物品 |
| 访问权限 | 只能访问自己的资源和通过安全监视器授权的普通资源 | 可以访问所有资源,包括普通世界的资源 | 银行职员和保安,可以进入金库和银行大厅 |
| 资源隔离 | 通过硬件机制隔离,无法直接窥探安全世界 | 硬件隔离,可以主动监控和切换世界 | 物理墙壁和门禁系统隔离金库和大厅 |
| 典型应用 | 操作系统、UI、媒体播放、网络通信 | 安全启动、密钥存储、支付、指纹/人脸识别、DRM(数字版权管理) | 存放现金、重要文件、保险柜 |
工作原理:硬件与软件协同
TrustZone 的安全性是通过硬件和软件紧密配合实现的。

A. 硬件层面
-
ARMv8 架构:在 ARMv8 架构中,安全隔离的核心是异常级别,处理器有四个异常级别,TrustZone 利用了其中最高和最低的两个:
- EL3 (Exception Level 3):安全监视器的运行级别,这是整个系统的最高权限级别,负责管理和切换安全世界和普通世界,它就像一个“门卫”,决定什么时候让哪个世界运行。
- EL2 (Exception Level 2):hypervisor 的运行级别,用于虚拟化。
- EL1 (Exception Level 1):普通世界操作系统的运行级别(如 Linux Kernel, Android Kernel)。
- EL0 (Exception Level 0):普通世界应用程序的运行级别。
-
总线与内存单元:
- 系统总线:SoC 的主总线(如 AXI, AHB)上有一个TrustZone 地址空间控制器,它会检查所有内存和外设的访问请求,根据请求来自哪个世界(安全或普通)以及目标地址是否属于该世界,来决定是否允许访问。
- 内存管理单元:MMU 也会对地址进行标记,区分安全内存和非安全内存,确保普通世界的进程不会访问到安全内存。
- 外设:SoC 中的外设(如摄像头、传感器、加密引擎)可以被配置为安全设备、非安全设备或双角色设备,指纹传感器可以配置为安全设备,其数据只能被安全世界的代码读取。
B. 软件层面
-
安全监视器:
- 这是 TrustZone 软件栈的核心,驻留在 EL3。
- 它是一个极小、高度受信任的固件。
- 主要职责是:
- 世界切换:响应来自普通世界的“安全监视器调用”(SMC, Secure Monitor Call),保存当前上下文,切换到安全世界执行;执行完毕后,再切换回普通世界。
- 资源管理:控制安全世界和普通世界对硬件资源的访问权限。
- 启动管理:负责安全世界的启动和初始化。
-
安全世界软件栈:
(图片来源网络,侵删)- 运行在安全世界,通常是一个专用的、轻量级的操作系统(如 ARM TrustZone OS)或固件。
- 它处理所有敏感任务,
- 安全启动:验证整个系统(包括普通世界的操作系统)的完整性,确保没有被篡改。
- 密钥管理:生成、存储、使用加密密钥,用于数据加密、身份验证等。
- TEE (Trusted Execution Environment):这是安全世界提供给普通世界的一个受信任的执行环境,普通世界可以通过特定的 API(如 GlobalPlatform TEE Standard)请求 TEE 来执行敏感操作,而无需知道内部实现细节。
-
普通世界软件栈:
- 就是我们熟悉的操作系统(如 Android, Linux)和应用程序。
- 当应用需要执行安全操作时(如用户进行指纹支付),它会通过 SMC 请求安全监视器,让安全世界来处理,处理结果(如“验证成功”)会返回给普通世界的应用。
典型应用场景
TrustZone 技术已经广泛应用于各种领域:
-
移动支付与身份认证:
- 指纹/人脸识别:生物特征数据在安全世界中采集、处理和存储,普通世界只能得到一个“验证成功/失败”的结果,防止敏感数据泄露。
- NFC 支付:支付相关的密钥和交易逻辑在安全世界中执行,确保交易安全。
-
数字版权管理:
视频/音乐的解密密钥存储在安全世界中,即使普通世界的播放器被破解,攻击者也无法获取到密钥,从而保护内容版权。
-
企业安全:
在企业设备上,可以创建一个“安全容器”,用于存放公司邮件、文档等敏感数据,即使设备被越狱或 root,普通世界的攻击者也无法访问安全容器内的数据。
-
物联网:
- 保护设备固件的完整性,防止恶意篡改。
- 安全地存储设备身份密钥,用于设备认证和通信加密。
-
车联网:
保护车载信息娱乐系统和车辆控制系统的安全,防止黑客通过网络攻击控制车辆。
优势与挑战
优势
- 硬件级隔离:提供了比纯软件沙箱更强大的安全保障,因为攻击者难以从硬件层面突破。
- 性能开销小:相比于完全独立的两个处理器,共享处理器核心切换的方式性能开销更低。
- 灵活性与可扩展性:可以根据不同产品的需求,灵活配置安全世界和普通世界的功能。
挑战
- 实现复杂:正确实现 TrustZone 需要硬件和软件的深度协同,开发难度大,容易引入漏洞。
- 安全边界:TrustZone 的安全性取决于其实现,如果安全监视器本身存在漏洞,或者安全世界的代码有缺陷,整个安全体系就可能被攻破。
- “侧信道攻击”:即使数据被隔离,攻击者仍可能通过分析功耗、电磁辐射、执行时间等侧信道信息来推断敏感数据。
