Обзор платформы виртуализации Android (AVF)

Android Virtualization Framework (AVF) предоставляет безопасную и конфиденциальную среду выполнения кода. AVF идеально подходит для случаев использования, ориентированных на безопасность, которые требуют более строгих, даже формально проверенных, гарантий изоляции по сравнению с теми, которые предлагает изолированная программная среда приложений Android. Android предоставляет эталонную реализацию всех компонентов, необходимых для реализации AVF. В настоящее время AVF поддерживается только на устройствах ARM64. На рисунке 1 показана архитектура AVF:

Архитектура AVF

Рисунок 1. Архитектура AVF

Вот определения наиболее важных терминов из рисунка 1:

апексд и zipfuse
Надежно монтирует файлы APEX и APK, импортированные с хоста.
авторизация
Файловая система Fuse для безопасного обмена несколькими файлами между Android и pVM (хостом и гостем).
связующее
Основные средства связи между виртуальными машинами.
кросвм
Монитор виртуальной машины, написанный на ржавчине. crosvm выделяет память виртуальной машины, создает потоки виртуального процессора и реализует серверную часть виртуального устройства.
Общий образ ядра (GKI)
Загрузочный образ, сертифицированный Google, который содержит ядро ​​GKI, созданное на основе исходного дерева общего ядра Android (ACK), и подходит для прошивки в загрузочный раздел устройства Android. Дополнительную информацию см. в обзоре ядра .
гипервизор
Технология виртуализации, используемая AVF, также известная как pKVM . Гипервизор сохраняет целостность исполняемого кода и конфиденциальность активов pVM, даже если Android или любая другая pVM будут скомпрометированы.
Java API
API-интерфейсы Java VirtualizationService, которые присутствуют только на устройствах с поддержкой AVF. Эти API являются необязательными и не являются частью thebootclasspath .
Микродроид
Мини-ОС Android от Google, работающая на pVM.
Микродроид-менеджер
Управляет жизненным циклом pVM внутри pVM и на диске экземпляра.
Собственный API
Подмножество Android Native Developers Kit (NDK).
защищенная виртуальная машина на базе ядра (pKVM)
См. Гипервизор .
Прошивка пВМ ( pvmfw )
Первый код, который выполняется на pVM, pvmfw проверяет полезную нагрузку и получает секрет каждой виртуальной машины.
защищенная виртуальная машина (pVM)

Не вызывающая взаимного доверия изолированная среда выполнения («гости»), работающая вместе с основной операционной системой Android («хост»). pVM управляются pKVM.

По сравнению с существующими доверенными средами выполнения (TEE), pVM предоставляют более богатую среду, включая дистрибутив мини-Android под названием Microdroid . PVM можно использовать динамически и предоставлять стандартный набор API, доступный для всех устройств, которые их поддерживают.

Служба виртуализации

Служба Android, управляющая жизненным циклом PVM.

Что дальше?

  • Если вы хотите лучше понять необходимость AVF, обратитесь к разделу «Почему AVF?». .
  • Чтобы прочитать о том, как AVF можно использовать для изолированной компиляции, обратитесь к разделу Варианты использования .
  • Если вам нужно более подробное объяснение архитектуры эталонной реализации AVF, обратитесь к архитектуре AVF .
  • Если вы хотите узнать о Microdroid, обратитесь к Microdroid .
  • Если вас интересует, как AVF обеспечивает безопасность, обратитесь к разделу Безопасность .
  • Чтобы понять роль службы виртуализации, обратитесь к VirtualizationService .
  • Исходный код AVF или подробное объяснение отдельных компонентов можно найти в репозитории AOSP .