Casos de uso

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.

Compilación aislada

Figura 1: Compilación de archivos JAR en actualizaciones de línea principal

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.