Aplicativos do DICE

O Device Identifier Composition Engine (DICE) é um recurso de segurança do Android que oferece atestado forte e melhora a integridade do dispositivo criando uma identidade criptográfica exclusiva para cada dispositivo. O DICE é especialmente útil para criar identidades de dispositivos que podem ser usadas em cenários que exigem uma prova de identidade forte e comunicações seguras.

Provisionamento de chaves remoto (RKP)

Há vários benefícios importantes que vêm do uso do DICE para provisionamento de chaves remotas.

Minimização da superfície de ataque

O DICE aprimora o RKP fundamentando a raiz de confiança na menor base de computação confiável (TCB, na sigla em inglês) disponível no dispositivo, geralmente o próprio chip, em vez de dentro do ambiente de execução confiável (TEE). Isso reduz bastante a superfície de ataque e minimiza o risco de comprometimento permanente do RKP.

Recuperação de comprometimentos do TEE

O DICE oferece um mecanismo para recuperar a confiança em dispositivos, mesmo que haja comprometimentos no TEE ou no carregador de inicialização que possam afetar a validade dos atestados de chave gerados pelo KeyMint.

Historicamente, as vulnerabilidades no ambiente de execução confiável (TEE) ou no carregador de inicialização levavam à revogação completa das chaves de atestado de todos os dispositivos afetados, sem um caminho para recuperar a confiança, mesmo que as vulnerabilidades tenham sido corrigidas. Isso ocorreu porque o TEE realizou a verificação remota sobre a imagem do Android carregada pela Inicialização verificada do Android, o que impossibilitou provar a uma parte remota que os patches foram aplicados. O DICE resolve esse problema ativando a verificação remota do estado atual do firmware, mesmo fora do Android, permitindo que os dispositivos afetados recuperem a confiança.

Autenticação mútua de ambientes isolados

Cada domínio de aplicativo em que o processo do DICE é encerrado recebe uma identidade na forma de uma chave com uma cadeia de certificados que se estende até a raiz de confiança compartilhada derivada pelo ROM. O processo de derivação do DICE se separa em diferentes ramos à medida que diferentes caminhos de carregamento divergem, formando uma árvore de certificados que compartilham a mesma raiz e criando uma infraestrutura de chave pública no dispositivo (PKI).

Essa PKI permite que componentes em enclaves seguros separados se autentiquem mutuamente. Um exemplo concreto é o Secretkeeper, uma camada de abstração de hardware (HAL, na sigla em inglês) que permite que máquinas virtuais privilegiadas (pVMs) se comuniquem com o TEE para receber um segredo estável que pode ser usado para armazenar dados persistentes com segurança.