Este documento contiene casos de uso comunes de AVF.
Compilación aislada
Como enclave con seguridad de software, una VM protegida proporciona un entorno seguro para
compilar código sensible a la seguridad. Este entorno permite mover la compilación
de bootclasspath
y archivos JAR del servidor del sistema (que se activan con una actualización de APEX) desde
el inicio anticipado antes del reinicio y reduce
significativamente la carga de trabajo de APEX
actualizar tiempo de inicio.
La implementación está en el
com.android.compos
APEX. Este componente es opcional y se puede incluir
con un
makefile.
El objetivo de seguridad es compilar de forma honesta entradas verificadas y producir la salida de forma aislada; Android, como cliente no confiable, no puede alterar la compilación de salida de alguna manera, en lugar de hacer que falle (cuando Android recurre al inicio compilación temporal).
El servicio de compilación en la VM genera una firma solo si no hay durante toda la compilación. Android puede recuperar la clave pública de la VM para la verificación de firma.
La clave de la VM se genera a partir del perfil DICE de la VM, definido por los APEX. y los APK activados en la VM, además de otros parámetros de VM, como la capacidad de depuración.
Para determinar si la clave pública no proviene de una VM inesperada, se inicia Android la VM para determinar si la clave es correcta. La VM se inicia en el inicio anticipado. después de cada actualización de APEX.
Con el inicio verificado de las VMs protegidas, el servicio de compilación solo se ejecuta
código. Por lo tanto, el código puede determinar que solo acepte entradas que cumplan con
ciertas condiciones, por ejemplo, aceptar un archivo de entrada solo donde su nombre y
del resumen de fs-verity
se definen en una lista de entidades permitidas.
Todas las APIs expuestas de la VM son superficies de ataque. Todos los archivos de entrada y se supone que los parámetros provienen de un cliente que no es de confianza y deben verificarse y que se verifican antes de su procesamiento.
La VM verifica la integridad del archivo de entrada/salida, con los archivos almacenados Android como servidor de archivos no confiable, de la siguiente manera:
- Se debe verificar el contenido de un archivo de entrada antes de usarlo con el
fs-verity
. Para que un archivo de entrada esté disponible en la VM, hash raíz se debe proporcionar en un contenedor (APK) que contribuya al Perfil DICE de la VM. Con el hash raíz de confianza, un atacante no puede manipular con la entrada sin ser detectada. - Se debe mantener la integridad del archivo de salida en la VM. Incluso si
de salida se almacena en Android. Durante la generación, el estado
se mantiene con el mismo formato de árbol
fs-verity
, pero puede ser dinámicamente se actualicen. El archivo de salida final se puede identificar con el hash raíz, que está aislado en la VM. El servicio en la VM protege la salida archivos por firma.