Android Virtualization Framework (AVF) – Übersicht

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:

AVF-Architektur

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.