Android Virtualization Framework (AVF) – Übersicht

Android Virtualization-Framework (AVF) bietet sichere und private Ausführungsumgebungen für die Ausführung von Code. AVF ist ideal für sicherheitsorientierte Anwendungsfälle, die stärkere, sogar formal verifizierte Isolierungsgarantien erfordern als die, die von der App-Sandbox von Android geboten werden. 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 sind die Definitionen der wichtigsten Begriffe aus Abbildung 1:

apexd und zipfuse
Sicheres Bereitstellen von APEX-Dateien und APKs, die vom Host importiert wurden.
authfs
Ein FUSE-Dateisystem zum sicheren Teilen mehrerer Dateien zwischen Android und pVM (Host und Gast).
Binder
Primäres Mittel für die VM-übergreifende Kommunikation.
crosvm
Ein in Rust geschriebener Virtual Machine Monitor. „crosvm“ weist VM-Arbeitsspeicher 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)-Quellcodebaum 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 pKVM genannt. Der Hypervisor sorgt für die Integrität des ausgeführten Codes und die Vertraulichkeit der Assets der pVM, selbst wenn der Android-Host oder eine der anderen pVMs kompromittiert sind.
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 Lebenszyklus der pVM, innerhalb der pVM und des Instanzlaufwerks.
Native API
Eine Teilmenge des Android Native Developers Kit (NDK).
Geschützte kernelbasierte virtuelle Maschine (protected kernel-based virtual machine, pKVM)
Siehe Hypervisor.
pVM-Firmware (pvmfw)
Der erste Code, der auf einer pVM ausgeführt wird. pvmfw überprüft die Nutzlast und leitet das VM-spezifische Secret ab.
Geschützte virtuelle Maschine (protected virtual machine, pVM)

Eine isolierte Ausführungsumgebung (Gast), die parallel zum Hauptbetriebssystem von Android (Host) ausgeführt wird und der beide Seiten nicht vertrauen. Ein wichtiger Aspekt der pVM-Sicherheit ist, dass der Host auch dann keinen Zugriff auf den Arbeitsspeicher einer pVM hat, wenn er kompromittiert ist. pKVM ist der Standard-Hypervisor für die Ausführung von pVMs.

Im Vergleich zu bestehenden vertrauenswürdigen Ausführungsumgebungen (Trusted Execution Environments, TEEs) bieten pVMs eine umfassendere Umgebung, einschließlich der Möglichkeit, eine Mini-Android-Distribution namens Microdroid auszuführen (Microdroid kann aber auch auf einer ungeschützten VM ausgeführt werden). pVMs können dynamisch verwendet werden und bieten eine Reihe von Standard-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.

Nächste Schritte

  • Wenn Sie mehr über die Notwendigkeit von AVF erfahren möchten, lesen Sie den Artikel Warum AVF?.
  • Informationen zur Verwendung von AVF für die isolierte Kompilierung finden Sie unter Anwendungsfälle.
  • Eine ausführlichere Erklärung der Architektur der AVF-Referenzimplementierung finden Sie unter AVF-Architektur.
  • Informationen zu Microdroid finden Sie unter Microdroid.
  • Informationen zur Sicherheit von AVF finden Sie unter Sicherheit.
  • Informationen zur Rolle des Virtualisierungsdienstes finden Sie unter VirtualizationService.
  • Den Quellcode von AVF oder eine ausführliche Erklärung der einzelnen Komponenten finden Sie unter AOSP Repository.