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:
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,
pvmfw
weryfikuje ł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.