Panoramica del Framework di virtualizzazione di Android (AVF)

Il Framework di virtualizzazione di Android (AVF) fornisce ambienti di esecuzione sicuri e privati per l'esecuzione del codice. AVF è ideale per i casi d'uso orientati alla sicurezza che richiedono garanzie di isolamento più solide, persino formalmente verificate, rispetto a quelle offerte dalla sandbox delle app di Android. Android fornisce un'implementazione di riferimento di tutti i componenti necessari per implementare AVF. AVF è supportato solo sui dispositivi ARM64. La Figura 1 mostra l'architettura di AVF:

Architettura AVF

Figura 1. Architettura AVF.

Di seguito sono riportate le definizioni dei termini più importanti della Figura 1:

apexd e zipfuse
Monta in modo sicuro APEX e APK importati dall'host.
authfs
Un file system FUSE per la condivisione sicura di più file tra Android e pVM (host e guest).
binder
Il mezzo principale di comunicazione tra le VM.
crosvm
Un monitor di macchine virtuali scritto in Rust. crosvm alloca la memoria della VM, crea thread della CPU virtuale e implementa i backend del dispositivo virtuale.
Immagine del kernel generico (GKI)
Un'immagine di avvio certificata da Google che contiene un kernel GKI creato da un albero di origine del kernel comune di Android (ACK) ed è adatta per essere installata nella partizione di avvio di un dispositivo Android. Per ulteriori informazioni, consulta la panoramica del kernel.
hypervisor
La tecnologia di virtualizzazione utilizzata da AVF, nota anche come pKVM. L'hypervisor mantiene l'integrità del codice eseguito e la riservatezza degli asset della pVM, anche se l'host Android o una delle altre pVM sono compromessi.
API Java
Le API Java VirtualizationService, presenti solo sui dispositivi con supporto AVF. Queste API sono facoltative e non fanno parte di thebootclasspath.
Microdroid
Un mini sistema operativo Android fornito da Google che viene eseguito in una pVM.
Microdroid Manager
Gestisce il ciclo di vita della pVM, all'interno della pVM e del disco dell'istanza.
API native
Un sottoinsieme dell'Android Native Developers Kit (NDK).
Macchina virtuale basata su kernel protetto (pKVM)
Vedi Hypervisor.
Firmware pVM (pvmfw)
Il primo codice eseguito su una pVM, pvmfw verifica il payload e deriva il secret per VM.
Macchina virtuale protetta (pVM)

Un ambiente di esecuzione isolato di cui non ci si fida reciprocamente (guest) che viene eseguito insieme al sistema operativo Android principale (host). Un aspetto importante della sicurezza della pVM è che, anche se l'host è compromesso, non ha accesso alla memoria di una pVM. pKVM è l'hypervisor standard per l'esecuzione delle pVM.

Rispetto agli ambienti di esecuzione attendibili (TEE) esistenti, le pVM forniscono un ambiente più ricco, inclusa la possibilità di eseguire una mini distribuzione di Android chiamata Microdroid (anche se Microdroid può essere eseguito anche su una VM non protetta). Le pVM possono essere utilizzate in modo dinamico e forniscono un insieme standard di API in un ambiente attendibile disponibile su tutti i dispositivi che le supportano.

VirtualizationService

Il servizio Android che gestisce il ciclo di vita delle pVM.

Passaggi successivi

  • Se vuoi comprendere meglio la necessità di AVF, consulta Perché AVF?.
  • Per scoprire come AVF può essere utilizzato per la compilazione isolata, consulta Casi d'uso.
  • Se vuoi una spiegazione più approfondita dell'architettura dell'implementazione di riferimento di AVF, consulta Architettura AVF.
  • Se vuoi saperne di più su Microdroid, consulta Microdroid.
  • Se ti interessa il modo in cui AVF gestisce la sicurezza, consulta Sicurezza.
  • Per comprendere il ruolo del servizio di virtualizzazione, consulta VirtualizationService.
  • Per il codice sorgente di AVF o una spiegazione approfondita dei singoli componenti, consulta Repository AOSP