I dispositivi informatici mobili gestiscono quantità sempre maggiori di dati sensibili. La presenza di questi dati sensibili, favorita dalla connessione costante al 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 astratti che isolano tra loro i processi non correlati. Solo i componenti che fanno parte della base di calcolo attendibile (TCB) sono autorizzati a programmare direttamente queste MMU.
Questo modello è stato la base della modalità di implementazione della privacy e della sicurezza dall'introduzione dei sistemi operativi Unix-like. 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, protocollo e stack di rete, cache, parser ed eseguibili, caricatori e socket. È diventato molto difficile garantire la sicurezza di ogni angolo di questo sistema complicato.
Il kernel di 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 per il nostro ecosistema. Tuttavia, il suo TCB elevato 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 principale limite di questo tipo di soluzioni è che i domini sono troppo granulari: 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à possono portare alla compromissione dell'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 vengono prese in considerazione e allocate in anticipo. Queste soluzioni non sono sufficienti per i casi di utilizzo dinamico 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 larga scala su Android, inclusi elementi fondamentali come Keymint e Gatekeeper.
Per risolvere questi problemi 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.