Android Virtualization Framework (AVF) proporciona entornos de ejecución seguros y privados para ejecutar código. AVF es ideal para casos de uso orientados a la seguridad que requieren garantías de aislamiento más sólidas, incluso verificadas de forma formal, que las que ofrece la zona de pruebas de apps de Android. Android proporciona una implementación de referencia de todos los componentes necesarios para implementar AVF. AVF solo se admite en dispositivos ARM64. En la Figura 1, se muestra la arquitectura de AVF:
Figura 1: Arquitectura de AVF
Estas son las definiciones de los términos más importantes de la Figura 1:
- apexd y zipfuse
- Monta de forma segura los APEX y los APK importados del host.
- authfs
- Un sistema de archivos de fuse para compartir de forma segura varios archivos entre Android y pVM (host y invitado).
- binder
- Medio principal de comunicación entre VMs.
- crosvm
- Un supervisor de máquinas virtuales escrito en Rust. crosvm asigna memoria de VM, crea subprocesos de CPU virtuales y, además, implementa los backends del dispositivo virtual.
- Imagen genérica del kernel (GKI)
- Una imagen de arranque certificada por Google que contiene un kernel de GKI compilado a partir de un árbol de origen del kernel común de Android (ACK) y que es adecuada para flashear en la partición de arranque de un dispositivo Android. Para obtener más información, consulta la Descripción general del kernel.
- hipervisor
- La tecnología de virtualización que usa AVF, también conocida como pKVM. El hipervisor mantiene la integridad del código ejecutado y la confidencialidad de los recursos de la pVM, incluso si se ve comprometido el host de Android o cualquiera de las otras pVMs.
- API de Java
- Las APIs de VirtualizationService Java, que solo están presentes en dispositivos con compatibilidad con AVF. Estas APIs son opcionales y no forman parte de
thebootclasspath. - Microdroid
- Un SO Android mini proporcionado por Google que se ejecuta en una pVM.
- Administrador de Microdroid
- Administra el ciclo de vida de la pVM, dentro de la pVM y el disco de la instancia.
- API nativa
- Un subconjunto del Kit de desarrollo nativo (NDK) de Android.
- Máquina virtual basada en kernel protegida (pKVM)
- Consulta Hipervisor.
- Firmware de pVM (
pvmfw) - El primer código que se ejecuta en una pVM,
pvmfwverifica la carga útil y deriva el secreto por VM. - Máquina virtual protegida (pVM)
Un entorno de ejecución aislado y mutuamente desconfiado (invitado) que se ejecuta junto con el sistema operativo Android principal (host). Un aspecto importante de la seguridad de la pVM es que, incluso si el host se ve comprometido, no tiene acceso a la memoria de una pVM. pKVM es el hipervisor estándar para ejecutar pVMs.
En comparación con los entornos de ejecución confiables (TEEs) existentes, las pVMs proporcionan un entorno más enriquecido, incluida la capacidad de ejecutar una distribución mini de Android llamada Microdroid (aunque Microdroid también se puede ejecutar en una VM no protegida). Las pVMs se pueden usar de forma dinámica y proporcionan un conjunto estándar de APIs en un entorno confiable disponible en todos los dispositivos que las admiten.
- VirtualizationService
El servicio de Android que administra el ciclo de vida de las pVMs.
Próximos pasos
- Si quieres comprender mejor la necesidad de AVF, consulta ¿Por qué AVF?.
- Para leer sobre cómo se puede usar AVF para la compilación aislada, consulta Casos de uso.
- Si quieres obtener una explicación más detallada de la arquitectura de la implementación de referencia de AVF, consulta Arquitectura de AVF.
- Si quieres obtener información sobre Microdroid, consulta Microdroid.
- Si te interesa cómo AVF maneja la seguridad, consulta Seguridad.
- Para comprender el rol del servicio de virtualización, consulta VirtualizationService.
- Para obtener el código fuente de AVF o una explicación detallada sobre los componentes individuales, consulta el repositorio de AOSP.