I dispositivi informatici mobili gestiscono quantità sempre maggiori di dati personali sensibili. La presenza di dati così sensibili, favorita dalla connessione costante con il mondo esterno, ha portato a un aumento degli investimenti da parte di malintenzionati interessati a sfruttare le vulnerabilità per raggiungere i propri obiettivi.
I sistemi operativi, con l'aiuto delle unità di gestione della memoria hardware (MMU), forniscono astrazioni che isolano i processi non correlati tra loro. Solo i componenti che fanno parte della Trusted Computing Base (TCB) possono programmare direttamente queste MMU.
Questo modello è alla base dell'implementazione della privacy e della sicurezza dall'introduzione dei sistemi operativi di tipo Unix. Tuttavia, questo requisito è diventato problematico in quanto il TCB di oggi è troppo grande: include la maggior parte dei driver di bus e di dispositivo, scheduler complessi, file system, stack di rete e protocolli, cache, analizzatori ed eseguibili e socket. È diventato molto difficile garantire la sicurezza di ogni angolo di questo sistema complesso.
Il kernel Linux ha oltre 20 milioni di righe di codice e il tasso di modifiche e riscritture è sorprendente. Questa crescita è di grande aiuto per Android e il nostro ecosistema. Tuttavia, il suo ampio TCB rende difficile garantire l'assenza di vulnerabilità sfruttabili.
I fornitori di hardware hanno sviluppato soluzioni, come TrustZone di Arm, che consentono ai processori di funzionare in modalità sicura e di taggare le transazioni di memoria come "sicure" o "non sicure". In questi sistemi, i dati sensibili vengono archiviati e sono disponibili direttamente solo per il mondo sicuro, che fornisce servizi al mondo non sicuro su richiesta.
La limitazione principale di questo tipo di soluzioni è che i domini sono troppo generici: solo sicuri e non sicuri. Con l'introduzione di un numero maggiore di casi d'uso che richiedono l'isolamento dal sistema operativo, la superficie di attacco aumenta e le vulnerabilità potrebbero compromettere l'intero dispositivo.
Un altro limite delle soluzioni attuali è che sono progettate per un mondo relativamente statico in cui tutte le risorse dei casi d'uso sono contabilizzate e allocate in anticipo. Queste soluzioni non sono adatte a casi d'uso dinamici in cui le risorse vengono allocate on demand.
Inoltre, le API utilizzate al di fuori del sistema operativo Android sono frammentate e limitano la nostra capacità di implementare casi d'uso su scala Android, inclusi elementi fondamentali come Keymint e Gatekeeper.
Per risolvere queste limitazioni e consentire ad Android di fornire una base solida per i casi d'uso di nuova generazione, Android 13 introduce la virtualizzazione sicura come Android Virtualization Framework (AVF).
L'obiettivo principale di AVF è fornire un ambiente di esecuzione sicuro e privato per i casi d'uso di nuova generazione.