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:
Confira 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 de fusível para compartilhar com segurança vários arquivos entre o Android e o 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 com
suporte ao AVF. Essas APIs são opcionais e não fazem parte de
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 Hipervisor.
- 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, na sigla em inglês)
Um ambiente de execução isolado mutuamente não confiável (guest) que é executado com o sistema operacional Android principal (host). Um aspecto importante da segurança de pVM é que, mesmo que o host seja comprometido, ele não tem acesso à memória de uma pVM. O pKVM é o hipervisor padrão para executar pVMs.
Em comparação com os ambientes de execução confiáveis (TEEs) atuais, as pVMs oferecem um ambiente mais rico, incluindo a capacidade de executar uma distribuição mini-Android chamada Microdroid. No entanto, o Microdroid também pode ser executado em uma VM não protegida. As pVMs podem ser usadas de forma dinâmica e oferecem um conjunto padrão de APIs em um ambiente confiável disponível em todos os dispositivos que oferecem suporte a elas.
- 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 uma AVF, consulte Por que usar uma 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 do AOSP.