Moteur de composition des identifiants d'appareil

Le Device Identifier Composition Engine (DICE) est une spécification du Trusted Computing Group (TCG) qui a été adoptée dans Android. Il crée un ensemble d'identités cryptographiques fortes et immuables pour chaque micrologiciel chargé lors de la séquence de démarrage. Ces identités permettent de vérifier à distance la stratégie de sécurité d'un appareil, qui ne peut être contournée qu'en compromettant la ROM.

Processus de dérivation DICE

Processus de dérivation DICE simplifié

Figure 1. Processus simplifié de dérivation du DICE.

Le processus de dérivation DICE garantit que tout changement apporté à une image de micrologiciel génère un nouvel identifiant unique pour cette étape et pour toutes les étapes suivantes. En effet, chaque étape du micrologiciel chargé mesure et certifie la suivante, générant des identités uniques et des clés associées qui empêchent le contournement ou la falsification. La mémoire morte (ROM) traite la mesure, la configuration et le secret de l'appareil unique (UDS) à l'aide d'une fonction de dérivation de clé (KDF) pour dériver le secret à charger pour l'étape suivante. Ce secret est appelé identifiant d'appareil composé (CDI).

Étape 0: Initialisation

Le processus DICE commence par le chargement de la ROM du chipset dans la UDS à partir d'une banque de données immuables, généralement des fusibles. Cette UDS est provisionnée de manière sécurisée avec une valeur aléatoire cryptographiquement lors du processus de production de la puce. Après avoir lu la table UDS, la ROM utilise un mécanisme de verrouillage matériel dépendant du fournisseur, tel qu'un loquet, pour verrouiller l'accès à la table UDS jusqu'au prochain démarrage.

Étape 1: Dérivation de clé initiale

La ROM utilise l'UDS comme entrée d'une fonction de dérivation de clé (KDF) pour générer la paire de clés asymétriques permanente qui identifie de manière unique cet appareil. Il mesure l'étape suivante du micrologiciel, y compris les métadonnées sur l'environnement de démarrage, par exemple si le démarrage sécurisé est activé. La ROM combine ensuite l'UDS, la mesure du micrologiciel et les données de configuration dans le KDF pour dériver le premier CDI, qui est transmis à l'étape suivante en tant que secret.

Étapes 2 à n: dérivation de clé récursive

Le processus se répète ensuite. À toutes les étapes suivantes, le CDI de l'étape précédente sert d'entrée pour un nouveau KDF. Ce KDF utilise le CDI et le hachage de l'image du micrologiciel suivant pour générer un nouveau CDI dérivé. Chaque étape génère sa propre paire de clés et l'utilise pour signer un certificat contenant des mesures spécifiques à l'étape et d'autres métadonnées associées.