Das Android Virtualization Framework (AVF) bietet sichere und private Ausführungsumgebungen zum Ausführen von Code. AVF eignet sich ideal für sicherheitsorientierte Anwendungsfälle, bei denen stärkere, sogar formell bestätigte Isolationsgarantien erforderlich sind als die, die von der App-Sandbox von Android angeboten werden. Android bietet eine Referenzimplementierung aller Komponenten, die für die Implementierung von AVF erforderlich sind. Derzeit wird AVF nur auf ARM64-Geräten unterstützt. Abbildung 1 zeigt die Architektur von AVF:
Hier finden Sie Definitionen für die wichtigsten Begriffe aus Abbildung 1:
- apexd und zipfuse
- Bereitstellung von vom Host importierten APEX- und APK-Dateien.
- authfs
- Ein Fuse-Dateisystem zum sicheren Freigeben mehrerer Dateien zwischen Android und pVM (Host und Gast).
- Binder
- Primäres Mittel für die Kommunikation zwischen VMs.
- crosvm
- Ein in Rust geschriebener Virtual Machine Monitor. Crosvm weist VM-Speicher zu, erstellt virtuelle CPU-Threads und implementiert die Back-Ends des virtuellen Geräts.
- Generic Kernel Image (GKI)
- Ein von Google zertifiziertes Boot-Image, das einen GKI-Kernel enthält, der aus einem Android Common Kernel (ACK)-Quellbaum erstellt wurde und zum Flashen auf die Bootpartition eines Android-Geräts geeignet ist. Weitere Informationen finden Sie in der Kernel-Übersicht.
- Hypervisor
- Die von AVF verwendete Virtualisierungstechnologie, auch pKVM genannt. Der Hypervisor sorgt für die Integrität des ausgeführten Codes und die Vertraulichkeit der Assets der pVM, auch wenn der Android-Host oder eine der anderen pVMs manipuliert wird.
- Java API
- Die Java APIs von VirtualizationService, die nur auf Geräten mit AVF-Unterstützung vorhanden sind. Diese APIs sind optional und nicht Teil von
thebootclasspath
. - Microdroid
- Ein von Google bereitgestelltes Mini-Android-Betriebssystem, das in einer pVM ausgeführt wird.
- Microdroid-Manager
- Verwaltet den pVM-Lebenszyklus innerhalb der pVM und des Instanzlaufwerks.
- Native API
- Ein Teil des Android Native Development Kits (NDK).
- Protected Kernel-based Virtual Machine (pKVM)
- Hypervisor
- pVM-Firmware (
pvmfw
) - Der erste Code, der auf einer pVM ausgeführt wird,
pvmfw
überprüft die Nutzlast und leitet das VM-spezifische Geheimnis ab. - geschützte virtuelle Maschine (pVM)
Eine wechselseitig nicht vertrauende isolierte Ausführungsumgebung („Gast“), die parallel zum Haupt-Android-Betriebssystem („Host“) ausgeführt wird. pVMs werden von der pKVM verwaltet.
Im Vergleich zu vorhandenen Trusted Execution Environments (TEEs) bieten pVMs eine umfassendere Umgebung, einschließlich einer Mini-Android-Distribution namens Microdroid. pVMs können dynamisch verwendet werden und bieten einen Standardsatz von APIs, die auf allen Geräten verfügbar sind, die sie unterstützen.
- VirtualizationService
Der Android-Dienst, der den Lebenszyklus von pVMs verwaltet.
Wie geht es weiter?
- Weitere Informationen zur Notwendigkeit von AVF finden Sie unter Warum AVF?.
- Weitere Informationen dazu, wie AVF für die isolierte Kompilierung verwendet werden kann, finden Sie unter Anwendungsfälle.
- Eine ausführlichere Erklärung der Architektur der AVF-Referenzimplementierung findest du unter AVF-Architektur.
- Weitere Informationen zu Microdroid finden Sie unter Microdroid.
- Weitere Informationen dazu, wie AVF mit Sicherheit umgeht, finden Sie unter Sicherheit.
- Informationen zur Rolle des Virtualisierungsdienstes finden Sie unter VirtualizationService.
- Quellcode von AVF oder eine ausführliche Erklärung zu einzelnen Komponenten finden Sie im AOSP-Repository.