Panoramica del Framework di virtualizzazione di Android (AVF)

Android Virtualization Framework (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 verificate formalmente, 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 condividere in modo sicuro più file tra Android e pVM (host e guest).
binder
Mezzo principale di comunicazione tra le VM.
crosvm
Un monitor delle macchine virtuali scritto in Rust. crosvm alloca la memoria della VM, crea thread CPU virtuali e implementa i backend del dispositivo virtuale.
Generic Kernel Image (GKI)
Un'immagine di avvio certificata da Google che contiene un kernel GKI creato da un albero di origine del kernel comune Android (ACK) ed è adatta per essere flashata 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 Android host o una delle altre pVM sono compromesse.
API Java
Le API Java di VirtualizationService, presenti solo sui dispositivi con supporto di AVF. Queste API sono facoltative e non fanno parte di thebootclasspath.
Microdroid
Una versione ridotta del sistema operativo Android fornita da Google che viene eseguita in una pVM.
Microdroid Manager
Gestisce il ciclo di vita della pVM, all'interno della pVM e del disco dell'istanza.
API nativa
Un sottoinsieme dell'Android Native Developers Kit (NDK).
macchina virtuale basata sul kernel protetto (pKVM)
Vedi Hypervisor.
Firmware pVM (pvmfw)
Il primo codice eseguito su una pVM, pvmfw verifica il payload e deriva il segreto per VM.
macchina virtuale protetta (pVM)

Un ambiente di esecuzione isolato e reciprocamente non attendibile (guest) che viene eseguito insieme al sistema operativo Android principale (host). Un aspetto importante della sicurezza delle 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 ai Trusted Execution Environment (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 la sezione Perché AVF?.
  • Per informazioni su come AVF può essere utilizzato per la compilazione isolata, consulta la sezione Casi d'uso.
  • Se vuoi una spiegazione più approfondita dell'architettura dell'implementazione di riferimento di AVF, consulta Architettura di AVF.
  • Se vuoi saperne di più su Microdroid, consulta Microdroid.
  • Se ti interessa sapere come AVF gestisce la sicurezza, consulta la sezione Sicurezza.
  • Per comprendere il ruolo del servizio di virtualizzazione, consulta VirtualizationService.
  • Per il codice sorgente di AVF o una spiegazione dettagliata dei singoli componenti, consulta il repository AOSP.