Os dispositivos de computação móvel estão lidando com quantidades cada vez maiores de dados pessoais sensíveis. A presença desses dados sensíveis, auxiliada pela conexão constante com o mundo externo, resultou em um aumento nos investimentos de agentes mal-intencionados interessados em explorar vulnerabilidades para alcançar os próprios 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 uns dos outros. 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 foram implementadas desde a introdução de sistemas operacionais parecidos com o Unix. No entanto, esse requisito se tornou problemático porque a TCB atual é muito grande: ela inclui a maioria dos drivers de dispositivo e barramento, programadores complexos, sistemas de arquivos, protocolos e pilha de rede, 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 alterações e substituições é 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.
Fornecedores de hardware desenvolveram soluções, como o TrustZone do Arm, que permite que os processadores sejam executados no modo seguro e marquem 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 são fragmentadas e restringem nossa capacidade de implantar casos de uso na escala do Android, incluindo conceitos básicos 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 principal objetivo do AVF é fornecer um ambiente de execução seguro e privado para casos de uso de próxima geração.