Casos de uso

Este documento contém casos de uso comuns da AVF.

Compilação isolada

Como um enclave protegido por software, uma VM protegida oferece um ambiente seguro para compilar códigos sensíveis à segurança. Esse ambiente permite mover a compilação de bootclasspath e JARs do servidor do sistema (acionados por uma atualização do APEX) de a inicialização antecipada antes da reinicialização e reduz significativamente o tempo de espera atualizar o tempo de inicialização.

A implementação está na com.android.compos APEX Este componente é opcional e pode ser incluído usando um makefile.

Compilação isolada

Figura 1. Compilação de JARs nas atualizações do Mainline

A meta de segurança é compilar fielmente a entrada verificada e produzir a saída isoladamente; O Android, como um cliente não confiável, não pode alterar a compilação. de qualquer maneira que não causar uma falha (quando o Android volta ao tempo de compilação).

O serviço de compilação na VM gera uma assinatura somente se não houver durante toda a compilação. O Android pode recuperar a chave pública a VM para verificação de assinaturas.

A chave da VM é gerada a partir do perfil DICE da VM, definido pelos APEXs e APKs montados na VM, além de outros parâmetros de VM, como e a capacidade de depuração.

Para determinar se a chave pública não é de uma VM inesperada, o Android é inicializado VM para determinar se a chave está correta. A VM é inicializada na primeira inicialização após cada atualização do APEX.

Com a Inicialização verificada da VM protegida, o serviço de compilação é executado apenas o código-fonte. O código pode, portanto, determinar que aceita apenas entradas que satisfaçam certas condições, por exemplo, aceitam um arquivo de entrada apenas onde seu nome e o resumo fs-verity são definidos em uma lista de permissões.

Todas as APIs expostas da VM são superfícies de ataque. Todos os arquivos de entrada e devem ser de um cliente não confiável e precisam ser verificados e examinados antes do processamento.

A integridade dos arquivos de entrada/saída é verificada pela VM, e os arquivos são armazenados o Android como um servidor de arquivos não confiável, da seguinte maneira:

  • O conteúdo de um arquivo de entrada deve ser verificado antes do uso com o Algoritmo fs-verity. Para que um arquivo de entrada seja disponibilizado na VM, O hash raiz precisa ser fornecido em um contêiner (APK) que contribua para a perfil DICE da VM. Com o hash raiz confiável, um invasor não consegue adulterar com a entrada sem ser detectada.
  • A integridade do arquivo de saída precisa ser mantida na VM. Mesmo que um arquivo de saída é armazenado no Android durante a geração, o estado de integridade é mantida com o mesmo formato de árvore fs-verity, mas pode ser dinamicamente atualizado. O arquivo de saída final pode ser identificado com o hash raiz, que fica isolado na VM. O serviço na VM protege a saída arquivos por assinatura.