Omówienie platformy Android Virtualization Framework (AVF)

Platforma wirtualizacji Androida (AVF) zapewnia bezpieczne i prywatne środowisko do wykonywania kodu. AVF jest idealny do zastosowań związanych z bezpieczeństwem, które wymagają silniejszej, nawet formalnie zweryfikowanej izolacji niż ta oferowana przez piaskownicę aplikacji na Androida. Android udostępnia implementację referencyjną wszystkich komponentów potrzebnych do implementacji AVF. Obecnie AVF jest obsługiwana tylko na urządzeniach ARM64. Rysunek 1 przedstawia architekturę AVF:

Architektura AVF

Rysunek 1. Architektura AVF

Oto definicje najważniejszych terminów z rysunku 1:

apexd i zipfuse
Bezpiecznie montuje pliki APEX i pliki APK zaimportowane z hosta.
authfs
System plików fuse do bezpiecznego udostępniania wielu plików między Androidem a pVM (host i gościn).
zszywacz
Główny sposób komunikacji między maszynami wirtualnymi.
crosvm
Monitor maszyny wirtualnej napisany w języku Rust. crosvm przydziela pamięć maszynie wirtualnej, tworzy wątki wirtualnego procesora i wdraża zaplecze wirtualnego urządzenia.
Generic Kernel Image (GKI)
Obraz rozruchowy certyfikowany przez Google, który zawiera jądro GKI utworzone na podstawie drzewa źródłowego Android Common Kernel (ACK) i jest odpowiedni do zaflashowania na partycji rozruchowej urządzenia z Androidem. Więcej informacji znajdziesz w omówieniu jądra.
hypervisor
Technologia wirtualizacji używana przez AVF, znana również jako pKVM. Hiperwizor zapewnia integralność wykonywanego kodu i poufność zasobów pVM, nawet jeśli host Android lub którykolwiek z innych pVM został naruszony.
Java API
Interfejsy API VirtualizationService w języku Java, które są dostępne tylko na urządzeniach z obsługą AVF. Te interfejsy API są opcjonalne i nie są częścią thebootclasspath.
Microdroid
Minisystem operacyjny Android udostępniany przez Google, który działa w pVM.
Menedżer Microdroid
Zarządza cyklem życia pVM, wewnątrz pVM i dysku instancji.
Natywna wersja interfejsu API
Podzbiór funkcji z pakietu Native Development Kit (NDK) na Androida.
chroniona maszyna wirtualna z jądrem (pKVM)
Zobacz Hypervisor.
Firmware pVM (pvmfw)
Pierwszy kod, który działa na pVM, pvmfwweryfikuje ładunek i wyprowadza tajny klucz dla danej maszyny wirtualnej.
chroniona maszyna wirtualna (pVM)

Wzajemnie nieufne odizolowane środowisko wykonawcze (gost), które działa równolegle z głównym systemem operacyjnym Android (gospodarz). Jednym z ważnych aspektów zabezpieczeń pVM jest to, że nawet jeśli host zostanie skompromitowany, nie będzie miał dostępu do pamięci pVM. pKVM to standardowy hypervisor do uruchamiania pVM.

W porównaniu z dotychczasowymi zaufanymi środowiskami wykonawczymi (TEE) maszyny wirtualne z dostępem do sieci zapewniają bogatsze środowisko, w tym możliwość uruchamiania dystrybucji mini-Androida o nazwie Microdroid (chociaż Microdroid może też działać na niezabezpieczonej maszynie wirtualnej). Maszyny wirtualne z dostępem do sieci można wykorzystywać dynamicznie. Zapewniają one standardowy zestaw interfejsów API w zaufanym środowisku dostępnym na wszystkich urządzeniach, które je obsługują.

VirtualizationService

Usługa Androida, która zarządza cyklem życia pVM.

Co dalej?

  • Jeśli chcesz lepiej zrozumieć, dlaczego potrzebujesz AVF, przeczytaj artykuł Dlaczego warto korzystać z AVF?.
  • Więcej informacji o używaniu AVF do kompilacji odizolowanej znajdziesz w sekcji Przypadki użycia.
  • Jeśli chcesz dowiedzieć się więcej o architekturze implementacji referencyjnej AVF, zapoznaj się z artykułem Architektura AVF.
  • Więcej informacji o Microdroid znajdziesz w artykule Microdroid.
  • Jeśli chcesz się dowiedzieć, jak AVF radzi sobie z bezpieczeństwem, zapoznaj się z artykułem Bezpieczeństwo.
  • Aby dowiedzieć się, jaką rolę pełni usługa wirtualizacji, zapoznaj się z artykułem VirtualizationService.
  • Kod źródłowy AVF lub szczegółowe informacje o poszczególnych komponentach znajdziesz w repozytorium AOSP.