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. architekturę AVF,
Oto definicje najważniejszych terminów z rysunku 1:
- apexd i zipfuse
- Bezpiecznie montuje pliki APEX i APK importowane 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 urządzeń wirtualnych.
- Ogólny obraz jądra (GKI)
- Obraz rozruchowy certyfikowany przez Google, który zawiera jądro GKI utworzone z drzewa źródłowego wspólnego jądra Androida (ACK) i nadaje się do zapisania na partycji rozruchowej urządzenia z Androidem. Więcej informacji znajdziesz w omówieniu jądra.
- hiperwizor
- 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 innych 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,
pvmfwweryfikuje ładunek i wyprowadza tajny klucz dla każdej maszyny wirtualnej. - chroniona maszyna wirtualna (pVM)
- Maszyna wirtualna zarządzana przez hiperwizor, działająca w środowisku niezabezpieczonym lub w środowisku realm i odizolowana od systemu operacyjnego Android, dzięki czemu dostęp jest niemożliwy nawet w przypadku naruszenia bezpieczeństwa hosta Androida.
pVM obsługują bogate środowiska, w tym dystrybucje oparte na systemie Linux. Koncepcja pVM nie jest wyłączną własnością Google. Maszyny wirtualne zdefiniowane przez partnera (SoC/OEM), które spełniają ograniczenia dotyczące izolacji i dostępu do pamięci, są również maszynami pVM.
- VirtualizationService
- Usługa Androida, która zarządza cyklem życia pVM.
Co dalej?
- Jeśli chcesz lepiej zrozumieć, dlaczego potrzebujesz 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 referencyjnej implementacji AVF znajdziesz w sekcji Architektura AVF.
- Więcej informacji o Microdroidzie znajdziesz w artykule Microdroid.
- Jeśli chcesz dowiedzieć się, jak AVF radzi sobie z bezpieczeństwem, zapoznaj się z 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.