En général, le terme "enchevêtrement" signifie que vous "mélangez" en quelque sorte deux composants en un seul. Cela peut se faire de plusieurs façons.
Dans ce cas précis, l'UID et le code de passe sont mélangés à l'aide d'un algorithme de cryptage AES. L'UID sert de clé pour le cryptage AES, et le code d'accès est utilisé comme texte en clair. Le texte chiffré est alors les données enchevêtrées.
Afin de créer les données enchevêtrées, vous aurez besoin de l'UID et du code de passe.
La raison pour laquelle cela doit se produire sur le dispositif est que l'UID est un numéro unique qui est "fusionné" dans le CPU (c'est-à-dire que chaque CPU a un numéro différent, et il ne peut pas être changé après coup) - et ce numéro n'est pas accessible par le logiciel directement. Cependant, un logiciel peut demander à l'unité centrale de chiffrer des données avec l'algorithme AES en utilisant l'UID comme clé - le logiciel peut alors obtenir le texte chiffré sans jamais connaître l'UID.
Pour ajouter à la complexité, Apple utilise en fait une fonction de dérivation de clé connue sous le nom de PBKDF2, où un calcul supplémentaire est nécessaire pour passer des données de départ aux données réelles utilisées comme clé de cryptage. Apple utilise 80 tours (en fait, des "boucles" de processus de calcul). L'objectif est de ralentir (c'est-à-dire d'utiliser beaucoup de temps CPU) le passage d'un code de passe (que nous essayons de forcer) à la clé de cryptage, même si vous avez accès au CPU contenant l'UID. Le rendre lent signifie que le forçage brutal prend beaucoup plus de temps que d'habitude, ce qui devrait le rendre infaisable.