Das Android Virtualization-Framework (AVF) bietet sichere und private Ausführungsumgebungen für die Ausführung von Code. Das AVF ist ideal für sicherheitsorientierte Anwendungsfälle, die eine stärkere, sogar formal verifizierte Isolierung erfordern als die, die durch die App-Sandbox von Android geboten wird. Android bietet eine Referenzimplementierung aller Komponenten, die für die Implementierung von AVF erforderlich sind. AVF wird nur auf ARM64-Geräten unterstützt. Abbildung 1 zeigt die Architektur von AVF:
Abbildung 1: AVF-Architektur.
Hier finden Sie Definitionen für die wichtigsten Begriffe aus Abbildung 1:
- apexd und zipfuse
- Sicheres Einbinden von APEX-Dateien und APKs, die vom Host importiert wurden.
- 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 der virtuellen Geräte.
- Generic Kernel Image (GKI)
- Ein von Google zertifiziertes Boot-Image, das einen GKI-Kernel enthält, der aus einem ACK-Quellbaum (Android Common Kernel) erstellt wurde und sich zum Flashen auf die Boot-Partition eines Android-Geräts eignet. Weitere Informationen finden Sie in der Kernelübersicht.
- Hypervisor
- Die von AVF verwendete Virtualisierungstechnologie, auch bekannt als pKVM. Der Hypervisor sorgt für die Integrität des ausgeführten Codes und die Vertraulichkeit der Assets der pVM, selbst wenn das Host-Android oder eine der anderen pVMs gehackt werden.
- Java API
- Die VirtualizationService-Java-APIs, 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 in der pVM und auf der Instanzfestplatte.
- Native API
- Eine Teilmenge des Android Native Developers Kit (NDK).
- Auf dem geschützten Kernel basierende virtuelle Maschine (pKVM)
- Weitere Informationen finden Sie unter Hypervisor.
- pVM-Firmware (
pvmfw
) - Der erste Code, der auf einer pVM ausgeführt wird,
pvmfw
, prüft die Nutzlast und leitet das VM-spezifische Secret ab. - Geschützte virtuelle Maschine (pVM)
Eine isolierte Ausführungsumgebung (Gast), die parallel zum Hauptbetriebssystem Android (Host) ausgeführt wird und in der sich die beiden Umgebungen nicht gegenseitig vertrauen. Ein wichtiger Aspekt der pVM-Sicherheit ist, dass der Host auch dann nicht auf den Speicher einer pVM zugreifen kann, wenn er manipuliert wurde. pKVM ist der Standard-Hypervisor für die Ausführung von pVMs.
Im Vergleich zu vorhandenen vertrauenswürdigen Ausführungsumgebungen (Trusted Execution Environments, TEEs) bieten pVMs eine umfangreichere Umgebung, einschließlich der Möglichkeit, eine Mini-Android-Distribution namens Microdroid auszuführen (Microdroid kann jedoch auch auf einer ungeschützten VM ausgeführt werden). pVMs können dynamisch verwendet werden und bieten einen Standardsatz von APIs in einer vertrauenswürdigen Umgebung, die auf allen Geräten verfügbar ist, die sie unterstützen.
- VirtualizationService
Der Android-Dienst, der den Lebenszyklus von pVMs verwaltet.
Und jetzt?
- Wenn Sie mehr über die Notwendigkeit von AVF erfahren möchten, lesen Sie den Abschnitt Warum AVF?.
- Informationen dazu, wie AVF für die isolierte Kompilierung verwendet werden kann, finden Sie unter Anwendungsfälle.
- Eine ausführlichere Beschreibung der Architektur der AVF-Referenzimplementierung finden Sie unter AVF-Architektur.
- Weitere Informationen zu Microdroid finden Sie unter Microdroid.
- Wenn Sie mehr darüber erfahren möchten, wie AVF Sicherheit handhabt, lesen Sie den Abschnitt Sicherheit.
- Informationen zur Rolle des Virtualisierungsdienstes finden Sie unter VirtualizationService.
- Den Quellcode von AVF oder eine detaillierte Beschreibung der einzelnen Komponenten finden Sie im AOSP-Repository.