Os dispositivos de computação móvel lidam com quantidades cada vez maiores de dados pessoais confidenciais. A presença de tais dados sensíveis, auxiliada pela ligação constante ao mundo exterior, resultou num aumento dos investimentos de intervenientes maliciosos interessados em explorar vulnerabilidades para promover os seus objetivos.
Os sistemas operacionais, com a ajuda de unidades de gerenciamento de memória de hardware (MMUs), fornecem abstrações que permitem que processos não relacionados sejam isolados uns dos outros. Somente os componentes que fazem parte do TCB podem programar diretamente esses MMUs.
Este modelo tem sido a base de como a privacidade e a segurança têm sido implementadas desde a introdução de sistemas operacionais do tipo Unix. No entanto, esse requisito tornou-se problemático porque o TCB atual é muito grande: inclui a maioria dos drivers de dispositivos e de barramento, escalonadores complexos, sistemas de arquivos, pilha e protocolos de rede, caches, analisadores e carregadores executáveis e soquetes. Tornou-se muito difícil garantir que todos os cantos deste complicado sistema sejam seguros.
O kernel do Linux tem mais de 20 milhões de linhas de código e a taxa de alterações e reescritas é surpreendente. Este crescimento é uma ajuda imensa para o Android e para o nosso ecossistema. No entanto, o seu grande TCB torna difícil garantir a ausência de vulnerabilidades exploráveis.
Os fornecedores de hardware desenvolveram soluções, como o TrustZone da Arm, que permite que os processadores executem 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 apenas disponibilizados diretamente ao mundo seguro, que fornece serviços ao mundo não seguro sob demanda.
A principal limitação deste tipo de soluções é 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 levarão ao comprometimento de todo o dispositivo.
Outra limitação das soluções atuais é que elas foram projetadas para um mundo relativamente estático, no qual todos os recursos dos casos de uso são contabilizados e alocados antecipadamente. Estas soluções não são suficientemente boas para casos de utilização dinâmicos em que os recursos são atribuídos a pedido.
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 fundamentos como Keymint e Gatekeeper.
Para resolver essas limitações e permitir que o Android forneça uma base robusta para os casos de uso da próxima geração, o Android 13 introduz a virtualização segura como 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.