De la source Android officielle:
Dès le premier démarrage, l'appareil crée une clé maîtresse de 128 bits générée de manière aléatoire, puis la hache avec un mot de passe par défaut et un sel stocké. (Le mot de passe par défaut est: "default_password").
Cependant, le hachage résultant est également signé à travers un TEE, qui utilise un hachage de la signature pour crypter la clé maîtresse.
Quand l'utilisateur définit le code PIN/mot de passe sur l'appareil, seule la clé de 128 bits est à nouveau cryptée et stockée. (c'est-à-dire que les changements de code PIN/mot de passe/modèle de l'utilisateur ne provoquent pas de re-chiffrement des données utilisateur.)
Cela signifie essentiellement qu'il y a deux clés à comprendre:
- La clé maîtresse
- La clé de chiffrement utilisateur (ou simplement 'clé')
La clé maîtresse est générée lors du premier démarrage uniquement, et ne change jamais (sauf peut-être lors d'une réinitialisation aux paramètres d'usine ou d'un effacement de la partition userdata). Les données dans la partition /data sont chiffrées ou déchiffrées uniquement en utilisant la clé maîtresse. La clé maîtresse ne peut pas être stockée telle quelle (ce n'est pas sûr de le faire, n'est-ce pas?), donc elle est chiffrée en utilisant une autre clé décrite ci-dessous.
La clé de chiffrement utilisateur est la clé à l'aide de laquelle la clé maîtresse chiffrée peut être déchiffrée, car c'est uniquement en utilisant la clé maîtresse que les données chiffrées peuvent être déchiffrées. (Cette clé est calculée en fonction de votre code PIN/mot de passe/autre.)
Les gens ont souvent tendance à penser que ces deux clés sont une seule et même chose, ce qui n'est pas le cas ici.
Lorsque vous modifiez votre code PIN/mot de passe de déverrouillage, seule la clé de chiffrement utilisateur change, pas la clé maîtresse, donc les données ne sont pas re-chiffrées.