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