Applications de DICE

Le Device Identifier Composition Engine (DICE) améliore la posture de sécurité d'Android de plusieurs manières différentes, et de nouveaux cas d'utilisation sont en cours de développement à mesure que l'intégration de cette architecture se développe.

Provisionnement de clés à distance

Le cas d'utilisation d'origine de DICE était de baser la racine de confiance pour le protocole de provisionnement de clés à distance (RKP) dans le plus petit TCB disponible pour la puce, la ROM, plutôt que dans le TEE. Cela réduit considérablement la surface d'attaque en vue d'une compromission permanente de RKP. Plus important encore, il permet de restaurer la confiance dans les appareils après une compromission du TEE ou du bootloader qui pourrait affecter la validité des attestations de clé générées par KeyMint.

Par le passé, les failles du TEE ou du bootloader entraînaient la révocation complète des clés d'attestation pour tous les appareils concernés, sans possibilité de restaurer la confiance, même si les failles étaient corrigées. En effet, il n'était pas possible de prouver à un tiers que les correctifs avaient été appliqués, car la validation à distance était effectuée par le TEE sur l'image Android chargée via le démarrage validé Android. DICE comble cette lacune en permettant de vérifier à distance l'état actuel du micrologiciel chargé en dehors d'Android.

Authentification mutuelle des environnements isolés

Chaque domaine d'application dans lequel DICE se termine reçoit une identité sous la forme d'une clé avec une chaîne de certificats remontant à la racine de confiance partagée dérivée de la ROM. Étant donné que le processus de dérivation DICE se ramifie à mesure que les chemins de chargement se séparent, cela crée un arbre de certificats qui partagent la même racine. Ainsi, une PKI sur l'appareil est créée pendant le processus DICE.

La PKI créée par le processus de dérivation DICE crée un mécanisme permettant aux composants d'enclaves sécurisées distinctes de s'authentifier mutuellement. SecretKeeper en est un exemple concret. Il s'agit d'un HAL sécurisé qui permet aux pVM de communiquer avec le TEE pour recevoir un secret stable, qui peut être utilisé pour stocker des données persistantes de manière sécurisée.