Trusty 是一种安全的操作系统 (OS),为 Android 提供可信执行环境 (TEE)。Trusty OS 与 Android OS 在同一处理器上运行,但 Trusty 通过硬件和软件与系统的其余部分隔离。Trusty 和 Android 并行运行。Trusty 可以访问设备主处理器的全部功能和内存,但完全隔离。Trusty 的隔离可保护它免受用户安装的恶意应用以及 Android 中可能发现的潜在漏洞的侵害。
Trusty 与 ARM 和 Intel 处理器兼容。在 ARM 系统上,Trusty 使用 ARM 的 Trustzone™ 来虚拟化主处理器并创建安全的可信执行环境。使用 Intel 的虚拟化技术,在 Intel x86 平台上也可获得类似的支持。

图 1. Trusty 概览图。
Trusty 包括:
- 源自 Little Kernel 的小型 OS 内核
- 一个 Linux 内核驱动程序,用于在安全环境和 Android 之间传输数据
- 一个 Android 用户空间库,用于通过内核驱动程序与可信应用(即安全任务/服务)通信
注意:Trusty 和 Trusty API 可能会发生变化。如需了解 Trusty API 的相关信息,请参阅 API 参考。
为何选择 Trusty?
其他 TEE 操作系统传统上由第三方供应商以二进制 blob 的形式提供,或在内部开发。对于芯片上系统 (SoC) 供应商和原始设备制造商 (OEM) 而言,开发内部 TEE 系统或从第三方许可 TEE 可能会付出高昂的代价。货币成本与不可靠的第三方系统相结合,为 Android 创造了一个不稳定的生态系统。Trusty 作为一种可靠且免费的开源替代方案,提供给合作伙伴,用于其可信执行环境。Trusty 提供的透明度级别是闭源系统无法比拟的。
Android 支持各种 TEE 实现,因此您不受限于使用 Trusty。每种 TEE OS 都有其部署可信应用的独特方式。对于试图确保其应用在每台 Android 设备上都能正常运行的可信应用开发者而言,这种碎片化可能是一个问题。使用 Trusty 作为标准有助于应用开发者轻松创建和部署应用,而无需考虑多种 TEE 系统的碎片化问题。Trusty TEE 为开发者和合作伙伴提供透明度、协作、代码可检查性和易于调试性。可信应用开发者可以围绕通用工具和 API 开展协作,以降低引入安全漏洞的风险。这些开发者将确信,他们可以开发一款应用,并在多台设备上重复使用,而无需进一步开发。
应用和服务
Trusty 应用定义为二进制文件(可执行文件和资源文件)、二进制清单和加密签名的集合。在运行时,Trusty 应用作为隔离进程在 Trusty 内核下的非特权模式下运行。每个进程都在其自己的虚拟内存沙盒中运行,利用 TEE 处理器的内存管理单元功能。硬件的构建会改变 Trusty 遵循的确切流程,但例如,内核使用由安全计时器滴答驱动的基于优先级的轮循调度器来调度这些进程。所有 Trusty 应用共享相同的优先级。

图 2. Trusty 应用概览。
第三方 Trusty 应用
目前,所有 Trusty 应用均由单一一方开发,并与 Trusty 内核映像打包在一起。整个映像在启动期间由引导加载程序签名和验证。Trusty 目前不支持第三方应用开发。虽然 Trusty 支持开发新应用,但这样做必须格外谨慎;每个新应用都会增加系统的可信计算基 (TCB) 区域。可信应用可以访问设备机密,并且可以使用这些机密执行计算或数据转换。开发可在 TEE 中运行的新应用的能力为创新开辟了许多可能性。但是,由于 TEE 的定义,这些应用在没有某种形式的信任附加的情况下无法分发。通常,这以数字签名的形式出现,该数字签名由用户运行应用的产品的实体信任。
用途和示例
可信执行环境正迅速成为移动设备的标准配置。用户越来越依赖移动设备来满足日常生活的需求,对安全性的需求也日益增长。配备 TEE 的移动设备比未配备 TEE 的设备更安全。
在配备 TEE 实现的设备上,主处理器通常被称为“不可信”,这意味着它无法访问某些 RAM 区域、硬件寄存器和一次写入熔丝,制造商在这些区域中存储了机密数据(例如,设备特定的加密密钥)。在主处理器上运行的软件将任何需要使用机密数据的操作委托给 TEE 处理器。
Android 生态系统中这方面最广为人知的例子是用于受保护内容的 DRM 框架。在 TEE 处理器上运行的软件可以访问解密受保护内容所需的设备特定密钥。主处理器只能看到加密内容,从而提供高水平的安全性和针对基于软件的攻击的保护。
TEE 还有许多其他用途,例如移动支付、安全银行、多重身份验证、设备重置保护、防重放的持久存储、安全 PIN 码和指纹处理,甚至恶意软件检测。