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 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:
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 VirtualizationService, presenti solo sui dispositivi con
supporto 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,
pvmfwverifica il payload e deriva il secret per VM. - macchina virtuale protetta (pVM)
- Una VM gestita da un hypervisor, in esecuzione nel mondo non sicuro o realm ed è isolata dal sistema operativo host Android, in modo che l'accesso sia impedito anche in caso di host Android compromesso.
Le pVM supportano ambienti avanzati, incluse le distribuzioni basate su Linux. Il concetto di pVM non è esclusivo di Google. Anche le VM definite dal partner (SoC/OEM) che soddisfano le limitazioni di isolamento / accesso alla memoria sono pVM.
- 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.