I dispositivi informatici mobili gestiscono quantità sempre maggiori di dati personali sensibili. La presenza di dati così sensibili, aiutata dalla connessione costante con il mondo esterno, ha comportato un aumento degli investimenti da parte di attori 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 consentono di isolare tra loro processi non correlati. Solo i componenti che fanno parte del TCB possono programmare direttamente queste MMU.
Questo modello è stato il fondamento del modo in cui la privacy e la sicurezza sono state implementate dall'introduzione dei sistemi operativi simili a Unix. Tuttavia, questo requisito è diventato problematico in quanto il TCB di oggi è troppo grande: include la maggior parte dei driver di dispositivi e bus, pianificatori complessi, file system, stack e protocolli di rete, cache, parser e caricatori eseguibili e socket. È diventato molto difficile garantire che ogni angolo di questo complicato sistema sia sicuro.
Il kernel Linux ha oltre 20 milioni di righe di codice e il tasso di modifiche e riscritture è sorprendente. Questa crescita è di immenso aiuto per Android e per 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 contrassegnare le transazioni di memoria come "sicure" o "non sicure". In tali sistemi, i dati sensibili vengono archiviati e sono direttamente disponibili solo al mondo sicuro, che fornisce servizi su richiesta al mondo non sicuro.
Il limite principale di questo tipo di soluzioni è che i domini sono troppo grossolani: solo sicuri e non sicuri. Man mano che vengono introdotti più casi d’uso che richiedono l’isolamento dal sistema operativo, la superficie di attacco aumenta e le vulnerabilità possono portare alla compromissione dell’intero dispositivo.
Un altro limite delle soluzioni odierne è che sono progettate per un mondo relativamente statico in cui tutte le risorse dei casi d'uso vengono contabilizzate e allocate in anticipo. Queste soluzioni non sono sufficienti per i casi d'uso dinamici in cui le risorse vengono allocate su richiesta.
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 solida base per i casi d'uso di prossima 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 prossima generazione.