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