Platforma wirtualizacji Androida (AVF) zapewnia bezpieczne i prywatne środowiska wykonywania kodu. AVF idealnie nadaje się do zastosowań związanych z bezpieczeństwem, które wymagają większej, a nawet formalnie zweryfikowanej izolacji niż ta oferowana przez piaskownicę aplikacji na Androidzie. Android udostępnia implementację referencyjną wszystkich komponentów potrzebnych do wdrożenia AVF. AVF jest obsługiwany tylko na urządzeniach z architekturą ARM64. Rysunek 1 przedstawia architekturę AVF:
Rysunek 1. Architektura AVF.
Oto definicje najważniejszych terminów z rysunku 1:
- apexd i zipfuse
- Bezpiecznie montuje pakiety APEX i APK zaimportowane z hosta.
- authfs
- System plików FUSE do bezpiecznego udostępniania wielu plików między Androidem a pVM (hostem i gościem).
- binder
- Podstawowy sposób komunikacji między maszynami wirtualnymi.
- crosvm
- Monitor maszyny wirtualnej napisany w języku Rust. Crosvm przydziela pamięć maszyny wirtualnej, tworzy wątki wirtualnego procesora i implementuje backendy wirtualnych urządzeń.
- Ogólny obraz jądra (GKI)
- Obraz rozruchowy certyfikowany przez Google, który zawiera jądro GKI zbudowane z drzewa źródłowego wspólnego jądra Androida (ACK) i nadaje się do zapisania w partycji rozruchowej urządzenia z Androidem. Więcej informacji znajdziesz w omówieniu jądra.
- hypervisor
- Technologia wirtualizacji używana przez AVF, znana też jako pKVM. Hiperwizor zachowuje integralność wykonywanego kodu i poufność zasobów pVM, nawet jeśli bezpieczeństwo hosta Androida lub którejkolwiek z pozostałych pVM zostało naruszone.
- Java API
- Interfejsy API Java VirtualizationService, które są dostępne tylko na urządzeniach obsługujących AVF. Te interfejsy API są opcjonalne i nie są częścią usługi
thebootclasspath
. - Microdroid
- Miniaturowy system operacyjny Android dostarczony przez Google, który działa w pVM.
- Menedżer Microdroida
- Zarządza cyklem życia pVM w pVM i na dysku instancji.
- Interfejs Native API
- Podzbiór pakietu Android Native Developers Kit (NDK).
- chroniona maszyna wirtualna oparta na jądrze (pKVM)
- Zobacz Hypervisor.
- Oprogramowanie pVM (
pvmfw
) - Pierwszy kod uruchamiany na pVM,
pvmfw
weryfikuje ładunek i wyprowadza tajny klucz dla każdej maszyny wirtualnej. - chroniona maszyna wirtualna (pVM)
Wzajemnie nieufne, izolowane środowisko wykonawcze (gość), które działa równolegle z głównym systemem operacyjnym Android (gospodarz). Ważnym aspektem bezpieczeństwa pVM jest to, że nawet jeśli host zostanie naruszony, nie będzie miał dostępu do pamięci pVM. pKVM to standardowy hiperwizor do uruchamiania pVM.
W porównaniu z dotychczasowymi zaufanymi środowiskami wykonawczymi (TEE) maszyny pVM zapewniają bogatsze środowisko, w tym możliwość uruchomienia minidystrybucji Androida o nazwie Microdroid (chociaż Microdroid może też działać na niechronionej maszynie wirtualnej). Maszyny pVM mogą być używane dynamicznie i zapewniają 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 potrzebne jest AVF, przeczytaj artykuł Dlaczego AVF?.
- Więcej informacji o tym, jak AVF może być używany do kompilacji izolowanej, znajdziesz w sekcji Przypadki użycia.
- Szczegółowe wyjaśnienie architektury implementacji referencyjnej AVF znajdziesz w sekcji Architektura AVF.
- Więcej informacji o Microdroidzie znajdziesz w artykule Microdroid.
- Jeśli chcesz dowiedzieć się, jak AVF dba o bezpieczeństwo, przeczytaj sekcję Bezpieczeństwo.
- Aby dowiedzieć się więcej o roli usługi wirtualizacji, zapoznaj się z artykułem VirtualizationService.
- Kod źródłowy AVF lub szczegółowe wyjaśnienie poszczególnych komponentów znajdziesz w repozytorium AOSP.