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:
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