Android Virtualization Framework (AVF) fornisce ambienti di esecuzione sicuri e privati per l'esecuzione di codice. L'AVF è ideale per i casi d'uso incentrati sulla sicurezza che richiedono garanzie di isolamento più stringenti, anche 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. Al momento, AVF è supportato solo su dispositivi ARM64. La Figura 1 mostra l'architettura di AVF:
Di seguito sono riportate le definizioni dei termini più importanti della figura 1:
- apexd e zipfuse
- Installa in modo sicuro gli APEX e gli APK importati dall'host.
- authf
- Un file system Fuse per condividere in sicurezza più file tra Android e la VM protetta (host e guest).
- binder
- Mezzo principale di comunicazione tra VM.
- crosvm
- Un monitor di macchina virtuale scritto in rust. crosvm alloca la memoria della VM, crea thread della CPU virtuale 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 Android Common Kernel (ACK) ed è adatta per essere trasferita 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 VM privata, anche se Android host o una delle altre VM private 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
. - Microdroide
- Un mini sistema operativo Android fornito da Google che viene eseguito in una pVM.
- Microdroid Manager
- Gestisce il ciclo di vita della VM privata, all'interno della VM privata e del disco dell'istanza.
- API nativa
- Un sottoinsieme del Native Development Kit (NDK) per Android.
- macchina virtuale protetta basata su kernel (pKVM)
- Consulta Hypervisor.
- Firmware della pVM (
pvmfw
) - Il primo codice eseguito su una pVM,
pvmfw
verifica il payload e ricava il segreto per VM. - macchina virtuale protetta (pVM)
Un ambiente di esecuzione isolato ("ospite") che viene eseguito insieme al sistema operativo Android principale ("host"). Le pVM sono gestite da pKVM.
Rispetto agli ambienti di esecuzione attendibili (TEE) esistenti, le pVM forniscono un ambiente più ricco, inclusa una distribuzione mini-Android chiamata Microdroid. Le pVM possono essere utilizzate in modo dinamico e forniscono un insieme standard di API disponibili su tutti i dispositivi che le supportano.
- Servizio di virtualizzazione
Il servizio Android che gestisce il ciclo di vita delle pVM.
Passaggi successivi
- Se vuoi capire meglio la necessità di questa funzionalità, consulta l'articolo Perché questa funzionalità?.
- Per scoprire come utilizzare la funzionalità AVF per la compilazione isolata, consulta Casi d'uso.
- Per una spiegazione più approfondita dell'architettura dell'implementazione di riferimento AVF, consulta la sezione Architettura AVF.
- Per saperne di più sui Microdroide, consulta l'articolo Microdroide.
- Se ti interessa sapere in che modo 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 approfondita dei singoli componenti, consulta il repository AOSP