Os dispositivos móveis de computação estão lidando com quantidades cada vez maiores de dados pessoais sensíveis. A presença desses dados sensíveis, auxiliada pela constante conexão com o mundo externo, resultou em um aumento dos investimentos de agentes maliciosos interessados em explorar vulnerabilidades para atingir seus objetivos.
Os sistemas operacionais, com a ajuda de unidades de gerenciamento de memória de hardware (MMUs, na sigla em inglês), fornecem abstrações que isolam processos não relacionados entre si. Somente componentes que fazem parte da Base de Computação Confiável (TCB, na sigla em inglês) podem programar essas MMUs diretamente.
Esse modelo tem sido a base de como a privacidade e a segurança têm sido implementadas desde a introdução dos sistemas operacionais semelhantes ao Unix. No entanto, esse requisito se tornou problemático, porque o TCB de hoje é muito grande: ele inclui a maioria dos drivers de dispositivo e de barramento, programadores complexos, sistemas de arquivos, pilhas de rede e protocolos, caches, analisadores e carregadores executáveis e soquetes. Ficou muito difícil garantir que todos os cantos desse sistema complicado estejam seguros.
O kernel do Linux tem mais de 20 milhões de linhas de código, e a taxa de mudanças e reescritas é surpreendente. Esse crescimento é de grande ajuda para o Android e nosso ecossistema. No entanto, o grande TCB dificulta a garantia da ausência de vulnerabilidades que podem ser exploradas.
Os fornecedores de hardware desenvolveram soluções, como a Arm's TrustZone, que permitem que os processadores sejam executados no modo seguro e marquem as transações de memória como "seguras" ou "não seguras". Nesses sistemas, os dados sensíveis são armazenados e ficam disponíveis apenas para o mundo seguro, que fornece serviços para o mundo não seguro sob demanda.
A principal limitação desse tipo de solução é que os domínios são muito grosseiros: apenas seguros e não seguros. À medida que mais casos de uso que exigem isolamento do sistema operacional são introduzidos, a superfície de ataque aumenta e as vulnerabilidades provavelmente comprometem todo o dispositivo.
Outra limitação das soluções atuais é que elas são projetadas para um mundo relativamente estático em que todos os recursos do caso de uso são contabilizados e alocados com antecedência. Essas soluções não são boas o suficiente para casos de uso dinâmico em que os recursos são alocados sob demanda.
Além disso, as APIs usadas fora do sistema operacional Android estão fragmentadas e restringem nossa capacidade de implantar casos de uso na escala do Android, incluindo fundamentos como Keymint e Gatekeeper.
Para resolver essas limitações e permitir que o Android forneça uma base sólida para casos de uso de última geração, o Android 13 apresenta a virtualização segura como o Android Virtualization Framework (AVF).
O objetivo principal do AVF é oferecer um ambiente de execução seguro e particular para casos de uso de última geração.