O Framework de virtualização do Android (AVF, na sigla em inglês) oferece ambientes de execução seguros e particulares para executar códigos. O AVF é ideal para casos de uso orientados à segurança que exigem garantias de isolamentos mais fortes e verificação formal, diferentes do que é oferecido pelo sandbox de apps do Android. O Android oferece uma implementação de referência de todos os componentes necessários para implementar o AVF. No momento, o AVF só é aceito em dispositivos ARM64. A Figura 1 mostra a arquitetura da AVF:
Aqui estão as definições dos termos mais importantes da Figura 1:
- apexd e zipfuse
- Monta com segurança os APEXes e APKs importados do host.
- authfs
- Um sistema de arquivos fusível para compartilhar com segurança vários arquivos entre Android e pVM (host e convidado).
- binder (link em inglês)
- Meio principal de comunicação entre VMs.
- crosvm
- Um monitor de máquina virtual escrito em Rust. O crosvm aloca a memória da VM, cria linhas de execução de CPU virtual e implementa os back-ends do dispositivo virtual.
- Imagem genérica do kernel (GKI)
- Uma imagem de inicialização certificada pelo Google que contém um kernel GKI criado a partir de uma árvore de origem do Kernel comum do Android (ACK, na sigla em inglês) e é adequada para ser transmitida à partição de inicialização de um dispositivo Android. Para mais informações, consulte a Visão geral do kernel.
- hipervisor
- A tecnologia de virtualização usada pela AVF, também conhecida como pKVM. O hypervisor mantém a integridade do código executado e a confidencialidade dos recursos da pVM, mesmo que o host Android ou qualquer uma das outras pVMs sejam comprometidos.
- API Java
- As APIs Java do VirtualizationService, que estão presentes apenas em dispositivos compatíveis com AVF. Essas APIs são opcionais e não fazem parte do
thebootclasspath
. - Microdroid (link em inglês)
- Um mini-SO Android fornecido pelo Google que é executado em uma pVM.
- Microdroid Manager
- Gerencia o ciclo de vida da pVM, dentro da pVM e do disco de instância.
- API nativa
- Um subconjunto do Android Native Developers Kit (NDK).
- máquina virtual protegida baseada em kernel (pKVM)
- Consulte Hypervisor.
- Firmware de pVM (
pvmfw
) - O primeiro código executado em uma pVM,
pvmfw
, verifica o payload e extrai o segredo por VM. - máquina virtual protegida (pVM)
Um ambiente de execução isolado e mutuamente não confiável ("convidado") que é executado com o sistema operacional Android principal ("host"). As pVMs são gerenciadas pelo pKVM.
Em comparação com os ambientes de execução confiáveis (TEEs) atuais, as pVMs oferecem um ambiente mais rico, incluindo uma distribuição mini-Android chamada Microdroid. As pVMs podem ser usadas de forma dinâmica e oferecem um conjunto padrão de APIs disponível em todos os dispositivos compatíveis.
- VirtualizationService
O serviço do Android que gerencia o ciclo de vida das pVMs.
Qual é a próxima etapa?
- Se você quiser entender melhor a necessidade de AVF, consulte Por que AVF?.
- Para saber como usar o AVF para compilação isolada, consulte Casos de uso.
- Para uma explicação mais detalhada da arquitetura da implementação de referência do AVF, consulte Arquitetura do AVF.
- Para saber mais sobre o Microdroid, consulte Microdroid.
- Se você tem interesse em saber como o AVF lida com a segurança, consulte Segurança.
- Para entender o papel do serviço de virtualização, consulte VirtualizationService.
- Para conferir o código-fonte do AVF ou uma explicação detalhada sobre componentes individuais, consulte o repositório AOSP.