Device Identifier Composition Engine (DICE) è una funzionalità di sicurezza di Android che fornisce un'attestazione avanzata e migliora l'integrità del dispositivo creando un'identità crittografica univoca per ogni dispositivo. DICE è particolarmente utile per creare identità dei dispositivi che possono essere utilizzate in scenari che richiedono una prova dell'identità e comunicazioni sicure.
Provisioning della chiave da remoto (RKP)
L'utilizzo di DICE per il provisioning delle chiavi da remoto offre diversi vantaggi chiave.
Riduzione al minimo della superficie di attacco
DICE migliora la RKP basando la radice della attendibilità sulla base di calcolo attendibile (TCB) più piccola possibile disponibile sul dispositivo, in genere il chip stesso, anziché all'interno del Trusted Execution Environment (TEE). In questo modo si riduce notevolmente la superficie di attacco e si riduce al minimo il rischio di compromissione permanente del RKP.
Recupero da compromessi del TEE
DICE fornisce un meccanismo per recuperare la fiducia nei dispositivi anche se sono presenti compromessi nel TEE o nel bootloader che potrebbero influire sulla validità delle attestazioni delle chiavi generate da KeyMint.
In passato, le vulnerabilità nel Trusted Execution Environment (TEE) o nel bootloader hanno portato alla revoca completa delle chiavi di attestazione per tutti i dispositivi interessati, senza alcun percorso per recuperare la fiducia anche se le vulnerabilità sono state corrette. Questo perché il TEE ha eseguito la verifica da remoto sull'immagine Android caricata tramite Android Verified Boot, rendendo impossibile dimostrare a una parte remota che le patch erano state applicate. DICE risolve questo problema attivando la verifica da remoto dello stato corrente del firmware, anche al di fuori di Android, consentendo ai dispositivi interessati di recuperare la fiducia.
Autenticazione reciproca di ambienti isolati
Ogni dominio di applicazione in cui termina il processo DICE riceve un'identità sotto forma di chiave con una catena di certificati che si estende fino alla radice di attendibilità condivisa derivata dalla ROM. Il processo di derivazione di DICE si suddivide in diversi rami man mano che i percorsi di caricamento divergono, formando un albero di certificati che condividono tutti la stessa radice e creando un'infrastruttura a chiave pubblica (PKI) sul dispositivo.
Questa PKI consente ai componenti in enclave sicuri separati di autenticarsi reciprocamente. Un esempio concreto è Secretkeeper, un hardware abstraction layer (HAL) che consente alle macchine virtuali privilegiate (pVM) di comunicare con il TEE per ricevere un segreto stabile che può essere utilizzato per archiviare in modo sicuro i dati permanenti.