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.
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.