Android 虚拟化框架 (AVF) 概述

Android 虚拟化框架 (AVF) 为执行代码提供安全且私密的执行环境。AVF 非常适合注重安全性的用例,这些用例需要比 Android 应用沙盒提供的隔离保证更强大甚至经过正式验证的隔离保证。Android 提供了实现 AVF 所需的所有组件的参考实现。目前,AVF 仅在 ARM64 设备上受支持。图 1 显示了 AVF 的架构

AVF architecture

图 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 存储库