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 só é compatível 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 APEXes e APKs importados do host.
authfs
Um sistema de arquivos de fusão 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 de 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 em uma árvore de origem do kernel comum do Android (ACK, na sigla em inglês) e pode ser gravada 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 esteja comprometido.
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
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 Android Native Developers Kit (NDK).
máquina virtual baseada em kernel protegida (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 (convidado) que funciona com o sistema operacional Android principal (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) atuais, as pVMs oferecem um ambiente mais completo, incluindo a capacidade de executar uma mini distribuição do Android chamada Microdroid (embora o Microdroid também possa ser executado em uma VM desprotegida). As pVMs podem ser usadas dinamicamente e oferecem um conjunto padrão de APIs em um ambiente confiável disponível em todos os dispositivos compatíveis.

VirtualizationService

O serviço do Android que gerencia o ciclo de vida das pVMs.

Quais são as próximas etapas?

  • Se quiser entender melhor a necessidade de AVF, consulte Por que AVF?.
  • Para saber como o AVF pode ser usado 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ê quiser saber como o AVF lida com a segurança, consulte Segurança.
  • Para entender a função 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.