Los dispositivos de procesamiento móviles manejan cada vez más cantidades de datos sensibles a la privacidad. La presencia de esos datos sensibles, junto con la conexión constante al mundo exterior, ha generado un aumento de las inversiones de actores maliciosos interesados en aprovechar las vulnerabilidades para lograr sus objetivos.
Los sistemas operativos, con la ayuda de unidades de administración de memoria (MMU) de hardware, proporcionan abstracciones que aíslan los procesos no relacionados entre sí. Solo los componentes que forman parte de la base de procesamiento confiable (TCB) pueden programar directamente estos MMU.
Este modelo ha sido la base de cómo se implementaron la privacidad y la seguridad desde la introducción de los sistemas operativos similares a Unix. Sin embargo, este requisito se volvió 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, pilas de red y protocolos, cachés, analizadores y cargadores ejecutables, y sockets. Se volvió muy difícil garantizar que cada rincón de este sistema complicado 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 de gran ayuda para Android y nuestro ecosistema. Sin embargo, su gran TCB dificulta garantizar la ausencia de vulnerabilidades explotables.
Los proveedores de hardware desarrollaron soluciones, como TrustZone de Arm, que permiten que los procesadores se ejecuten en modo seguro y etiqueten las transacciones de memoria como "seguras" o "no seguras". En esos sistemas, los datos sensibles se almacenan y solo están disponibles directamente 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: solo 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 provoquen la vulneración de 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 casos de uso se registran y se asignan con anticipación. Estas soluciones no son lo suficientemente buenas para los casos de uso dinámicos en los que los recursos se asignan a pedido.
Además, las APIs que se usan fuera del sistema operativo Android están fragmentadas y restringen nuestra capacidad de implementar casos de uso a la escala de Android, incluidos los elementos básicos como Keymint y Gatekeeper.
Para abordar estas limitaciones y permitir que Android proporcione una base sólida para los casos de uso de nueva generación, Android 13 presenta 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 nueva generación.