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. O AVF é compatível apenas com dispositivos ARM64. A Figura 1 mostra a arquitetura do AVF:

Arquitetura do AVF

Figura 1. Arquitetura do AVF.

Confira as definições dos termos mais importantes da Figura 1:

apexd e zipfuse
Monta com segurança APEXs e APKs importados do host.
authfs
Um sistema de arquivos de fusíveis para compartilhar com segurança vários arquivos entre o Android e a pVM (host e convidado).
binder
Principal meio de comunicação entre VMs.
crosvm
Um monitor de máquina virtual escrito em Rust. O crosvm aloca memória da VM, cria threads de CPU virtual e implementa os back-ends do dispositivo virtual.
Imagem genérica do kernel (GKI, na sigla em inglês)
Uma imagem de inicialização certificada pelo Google que contém um kernel GKI criado em uma árvore de origem do kernel comum do Android (ACK, na sigla em inglês) e é adequada para ser instalada na 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 pelo AVF, também conhecida como pKVM. O hipervisor mantém a integridade do código executado e a confidencialidade dos recursos da pVM, mesmo que o Android host ou qualquer uma das outras pVMs estejam 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 do thebootclasspath.
Microdroid
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 da instância.
API nativa
Um subconjunto do Kit de desenvolvimento nativo do Android (NDK, na sigla em inglês).
máquina virtual protegida baseada em kernel (pKVM)
Consulte Hipervisor.
firmware da pVM (pvmfw)
O primeiro código executado em uma pVM, pvmfw, verifica o payload e deriva o segredo por VM.
máquina virtual protegida (pVM)

Um ambiente de execução isolado mutuamente desconfiado (convidado) que é executado ao lado do sistema operacional principal do Android (host). Um aspecto importante da segurança da pVM é que, mesmo que o host esteja 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, na sigla em inglês) atuais, as pVMs oferecem um ambiente mais rico, incluindo a capacidade de executar uma mini distribuição do Android chamada Microdroid (embora o Microdroid também possa ser executado em uma VM não protegida). As pVMs podem ser usadas dinamicamente e fornecem 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.

A seguir

  • Se você quiser entender melhor a necessidade do AVF, consulte Por que o AVF?.
  • Para saber como o AVF pode ser usado para compilação isolada, consulte Casos de uso.
  • Se você quiser uma explicação mais detalhada da arquitetura da implementação de referência do AVF, consulte Arquitetura do AVF.
  • Se você quiser saber mais sobre o Microdroid, consulte Microdroid.
  • Se você estiver interessado em como o AVF lida com a segurança, consulte Segurança.
  • Para entender o papel do serviço de virtualização, consulte VirtualizationService.
  • Para acessar o código-fonte do AVF ou uma explicação detalhada sobre componentes individuais, consulte o repositório AOSP