Los dispositivos informáticos móviles manejan cantidades cada vez mayores de datos personales sensibles. La presencia de datos tan sensibles, ayudada por la conexión constante con el mundo exterior, ha dado lugar a mayores inversiones por parte de actores maliciosos interesados en explotar vulnerabilidades para promover sus objetivos.
Los sistemas operativos, con la ayuda de unidades de administración de memoria de hardware (MMU), proporcionan abstracciones que permiten aislar procesos no relacionados entre sí. Sólo los componentes que forman parte del TCB pueden programar directamente estas MMU.
Este modelo ha sido la base de cómo se han implementado la privacidad y la seguridad desde la introducción de sistemas operativos tipo Unix. Sin embargo, este requisito se ha vuelto problemático porque el TCB actual es demasiado grande: incluye la mayoría de los controladores de dispositivos y buses, programadores complejos, sistemas de archivos, protocolos y pilas de red, cachés, analizadores y cargadores ejecutables y sockets. Se ha vuelto muy difícil garantizar que cada rincón de este complicado sistema sea seguro.
El kernel de Linux tiene más de 20 millones de líneas de código y la tasa de cambios y reescrituras es asombrosa. Este crecimiento es una inmensa ayuda para Android y nuestro ecosistema. Sin embargo, su gran TCB dificulta garantizar la ausencia de vulnerabilidades explotables.
Los proveedores de hardware han desarrollado soluciones, como TrustZone de Arm, que permiten a los procesadores ejecutarse en modo seguro y etiquetar las transacciones de memoria como "seguras" o "no seguras". En dichos sistemas, los datos confidenciales se almacenan y solo están directamente disponibles para el mundo seguro, que proporciona servicios al mundo no seguro a pedido.
La principal limitación de este tipo de soluciones es que los dominios son demasiado generales: sólo seguros y no seguros. A medida que se introducen más casos de uso que requieren aislamiento del sistema operativo, la superficie de ataque aumenta y es probable que las vulnerabilidades comprometan todo el dispositivo.
Otra limitación de las soluciones actuales es que están diseñadas para un mundo relativamente estático en el que todos los recursos de los casos de uso se contabilizan y asignan con antelación. Estas soluciones no son lo suficientemente buenas para casos de uso dinámicos en los que los recursos se asignan según demanda.
Además, las API utilizadas fuera del sistema operativo Android están fragmentadas y restringen nuestra capacidad para implementar casos de uso a escala de Android, incluidos fundamentos como Keymint y Gatekeeper.
Para abordar estas limitaciones y permitir que Android proporcione una base sólida para los casos de uso de próxima generación, Android 13 introduce la virtualización segura como Android Virtualization Framework (AVF).
El objetivo principal de AVF es proporcionar un entorno de ejecución seguro y privado para casos de uso de próxima generación.