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