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:
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.