Android Virtualization Framework (AVF) предоставляет безопасные и частные среды выполнения для выполнения кода. AVF идеально подходит для случаев использования, ориентированных на безопасность, которые требуют более надежных, даже формально проверенных, гарантий изоляции по сравнению с теми, которые предлагает изолированная программная среда приложений Android. Android предоставляет эталонную реализацию всех компонентов, необходимых для реализации AVF. В настоящее время AVF поддерживается только на устройствах ARM64. На рис. 1 показана архитектура AVF:
Вот определения наиболее важных терминов с рисунка 1:
- апексд и зипфьюз
- Надежно монтирует файлы APEX и APK, импортированные с хоста.
- авторизация
- Файловая система Fuse для безопасного обмена несколькими файлами между Android и pVM (хост и гость).
- связующее
- Основное средство связи между виртуальными машинами.
- crosvm
- Монитор виртуальной машины, написанный на rust. crosvm выделяет память ВМ, создает виртуальные потоки ЦП и реализует серверную часть виртуального устройства.
- Общий образ ядра (GKI)
- Загрузочный образ, сертифицированный Google, который содержит ядро GKI, созданное из исходного дерева Android Common Kernel (ACK), и подходит для прошивки в загрузочный раздел устройства Android. Для получения дополнительной информации см. Обзор ядра .
- гипервизор
- Технология виртуализации, используемая AVF, также известная как pKVM . Гипервизор поддерживает целостность исполняемого кода и конфиденциальность активов pVM, даже если Android или любая другая pVM скомпрометированы.
- Java-API
- API-интерфейсы VirtualizationService Java, которые присутствуют только на устройствах с поддержкой AVF. Эти API являются необязательными и не являются частью
thebootclasspath
. - Микродроид
- Предоставленная Google ОС mini-Android, работающая в pVM.
- Менеджер микродроидов
- Управляет жизненным циклом pVM внутри pVM и диском экземпляра.
- Собственный API
- Подмножество Android Native Developers Kit (NDK).
- защищенная виртуальная машина на основе ядра (pKVM)
- См. Гипервизор .
- прошивка пвм (
pvmfw
) - Первый код, который выполняется на pVM,
pvmfw
проверяет полезную нагрузку и извлекает секрет для каждой виртуальной машины. - защищенная виртуальная машина (pVM)
Взаимно недоверяющие изолированные среды выполнения («гости»), работающие вместе с основной операционной системой Android («хост»). pVM управляются pKVM.
По сравнению с существующими доверенными средами выполнения (TEE) pVM обеспечивают более богатую среду, включая дистрибутив mini-Android под названием Microdroid . pVM могут использоваться динамически и предоставляют стандартный набор API-интерфейсов, доступных на всех устройствах, которые их поддерживают.
- Служба виртуализации
Служба Android, которая управляет жизненным циклом pVM.
Что дальше?
- Если вы хотите лучше понять необходимость AVF, обратитесь к разделу Почему AVF? .
- Чтобы прочитать о том, как AVF можно использовать для изолированной компиляции, обратитесь к разделу Варианты использования .
- Если вам нужно более подробное объяснение архитектуры эталонной реализации AVF, обратитесь к архитектуре AVF .
- Если вы хотите узнать о Microdroid, обратитесь к Microdroid .
- Если вас интересует, как AVF обеспечивает безопасность, обратитесь к разделу «Безопасность» .
- Чтобы понять роль службы виртуализации, обратитесь к VirtualizationService .