Android 虚拟化框架 (AVF) 为执行代码提供安全且私密的执行环境。AVF 非常适合注重安全性的用例,这些用例需要比 Android 应用沙盒提供的隔离保证更强大甚至经过正式验证的隔离保证。Android 提供了实现 AVF 所需的所有组件的参考实现。目前,AVF 仅在 ARM64 设备上受支持。图 1 显示了 AVF 的架构
以下是图 1 中最重要的术语的定义
- apexd 和 zipfuse
- 安全地挂载从主机导入的 APEX 和 APK。
- authfs
- 一个 fuse 文件系统,用于在 Android 和 pVM(主机和 guest)之间安全地共享多个文件。
- binder
- VM 间通信的主要方式。
- crosvm
- 一个用 Rust 编写的虚拟机监视器。crosvm 分配 VM 内存,创建虚拟 CPU 线程,并实现虚拟设备的后端。
- 通用内核映像 (GKI)
- 一个由 Google 认证的启动映像,其中包含从 Android 通用内核 (ACK) 源代码树构建的 GKI 内核,并且适合刷入 Android 设备的启动分区。有关更多信息,请参阅内核概述。
- hypervisor
- AVF 使用的虚拟化技术,也称为 pKVM。即使主机 Android 或任何其他 pVM 遭到入侵,hypervisor 也能保持执行代码的完整性和 pVM 资产的机密性。
- Java API
- VirtualizationService Java API,仅在支持 AVF 的设备上提供。这些 API 是可选的,不属于
thebootclasspath
。 - Microdroid
- Google 提供的在 pVM 中运行的迷你 Android 操作系统。
- Microdroid 管理器
- 管理 pVM 生命周期、pVM 内部和实例磁盘。
- Native API
- Android Native Developers Kit (NDK) 的子集。
- 受保护的基于内核的虚拟机 (pKVM)
- 请参阅Hypervisor。
- pVM 固件 (
pvmfw
) - 在 pVM 上运行的第一个代码,
pvmfw
验证有效负载并派生每个 VM 的密钥。 - 受保护的虚拟机 (pVM)
与主 Android 操作系统(主机)并行运行的互不信任的隔离执行环境(guest)。pVM 安全性的一个重要方面是,即使主机遭到入侵,主机也无权访问 pVM 的内存。pKVM 是运行 pVM 的标准 hypervisor。
与现有的可信执行环境 (TEE) 相比,pVM 提供了更丰富的环境,包括运行名为 Microdroid 的迷你 Android 发行版的能力(尽管 Microdroid 也可以在不受保护的 VM 上运行)。pVM 可以动态使用,并在所有支持它们的设备上提供一组标准的受信任环境中的 API。
- VirtualizationService
管理 pVM 生命周期 的 Android 服务。
下一步是什么?
- 如果您想更好地了解 AVF 的需求,请参阅为什么选择 AVF?。
- 要了解如何将 AVF 用于隔离编译,请参阅用例。
- 如果您想要更深入地了解 AVF 参考实现的架构,请参阅AVF 架构。
- 如果您想了解 Microdroid,请参阅Microdroid。
- 如果您对 AVF 如何处理安全性感兴趣,请参阅安全性。
- 要了解虚拟化服务的作用,请参阅VirtualizationService。
- 有关 AVF 的源代码或关于各个组件的深入解释,请参阅AOSP 存储库