O Android Virtualization Framework (AVF) fornece ambientes de execução seguros e privados para a execução de código. O AVF é ideal para casos de uso orientados à segurança que exigem garantias de isolamento mais fortes, até mesmo verificadas formalmente, em relação às oferecidas pela sandbox de aplicativos do Android. O Android fornece uma implementação de referência de todos os componentes necessários para implementar o AVF. Atualmente, o AVF é suportado apenas em dispositivos ARM64. A Figura 1 mostra a arquitetura do AVF:
Aqui estão as definições para os termos mais importantes da figura 1:
- apexd e zipfuse
- Monta com segurança APEXes e APKs importados do host.
- authfs
- Um sistema de arquivos fuse para segurança de compartilhamento de vários arquivos entre Android e pVM (host e convidado).
- encadernador
- Meio principal de comunicação entre VMs.
- crosvm
- Um monitor de máquina virtual escrito em ferrugem. O crosvm aloca memória da VM, cria threads de CPU virtuais 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 Android Common Kernel (ACK) e é adequada para ser atualizada na partição de inicialização de um dispositivo Android. Para obter 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 ativos do pVM, mesmo que o Android ou qualquer outro pVM seja comprometido.
- API Java
- As APIs Java do VirtualizationService, que estão presentes apenas em dispositivos com suporte a AVF. Essas APIs são opcionais e não fazem parte do
thebootclasspath
. - Microdroide
- Um mini-sistema operacional Android fornecido pelo Google que é executado em um pVM.
- Microdroid Manager
- Gerencia o ciclo de vida do pVM, dentro do 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 pVM (
pvmfw
) - O primeiro código executado em uma pVM,
pvmfw
verifica a carga útil e deriva o segredo por VM. - máquina virtual protegida (pVM)
Ambientes de execução isolados mutuamente desconfiados ("convidados") que são executados junto com o sistema operacional Android principal ("host"). pVMs são gerenciados pelo pKVM.
Em comparação com os ambientes de execução confiáveis (TEEs) existentes, os pVMs fornecem um ambiente mais rico, incluindo uma distribuição mini-Android chamada Microdroid . Os pVMs podem ser usados dinamicamente e fornecem um conjunto padrão de APIs disponíveis em todos os dispositivos que os suportam.
- Serviço de Virtualização
O serviço Android que gerencia o ciclo de vida dos pVMs.
Qual é o próximo?
- Se você quiser entender melhor a necessidade de FAV, consulte Por que FAV? .
- Para ler sobre como o AVF pode ser usado para compilação isolada, consulte Casos de uso .
- Se desejar uma explicação mais detalhada da arquitetura de implementação de referência do AVF, consulte Arquitetura do AVF .
- Se você quiser aprender sobre o Microdroid, consulte Microdroid .
- Se você estiver interessado em 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 .