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 comportato 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 base di calcolo attendibile (TCB) possono programmare direttamente queste MMU.
Questo modello è alla base dell'implementazione di privacy e 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 dispositivi e bus, 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, la sua ampia 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 contrassegnare 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.
Il limite principale di questo tipo di soluzioni è che i domini sono troppo generici: solo sicuri e non sicuri. Con l'introduzione di più 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 sufficienti per i 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.