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.