Visão geral do Framework de virtualização do Android (AVF)

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:

Arquitetura AVF

Figura 1. Arquitetura 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.