Partage sécurisé du nom et de la photo par iMessage
Le partage du nom et de la photo par iMessage permet à un utilisateur de partager un nom et une photo avec iMessage. L’utilisateur peut sélectionner sa fiche personnelle ou personnaliser le nom et inclure l’image de son choix. Le partage du nom et de la photo par iMessage utilise un système en deux étapes pour distribuer le nom et la photo.
Les données sont sous-divisées en champs, qui sont chiffrés et authentifiés séparément en plus d’être authentifiés ensemble dans le cadre du processus ci-dessous. Il y a trois champs :
Nom
Photo
Nom de fichier photo
L’une des premières étapes de la création de données consiste à générer de façon aléatoire une clé d’enregistrement 128 bits sur l’appareil. Cette clé est ensuite dérivée à l’aide de la fonction HKDF-HMAC-SHA256 pour créer trois sous-clés : Key 1:Key 2:Key 3 = HKDF(record key, “nicknames”). Pour chaque champ, un vecteur d’initialisation (IV) aléatoire 96 bits est généré, et les données sont chiffrées à l’aide de l’algorithme AES-CTR et de la clé 1. Un code d’authentification de message (MAC) est ensuite calculé avec la fonction HMAC-SHA256 et la clé 2. Il couvre le nom de champ, l’IV de champ et le cryptogramme de champ. Enfin, l’ensemble de valeurs MAC de champ distinctes est lié, et leur MAC est calculé avec la fonction HMAC-SHA256 et la clé 3. Le MAC 256 bits est stocké avec les données chiffrées. Les 128 premiers bits de ce MAC servent d’identificateur d’enregistrement.
Cet enregistrement chiffré est ensuite stocké dans la base de données publique CloudKit sous l’identificateur d’enregistrement. Il n’est jamais muté, et chaque fois que l’utilisateur modifie son nom et sa photo, un nouvel enregistrement chiffré est généré. Lorsque l’utilisateur 1 choisit de partager son nom et sa photo avec l’utilisateur 2, il envoie la clé d’enregistrement avec l’identificateur d’enregistrement à l’intérieur de l’entité iMessage chiffrée.
Lorsque l’appareil de l’utilisateur 2 reçoit cette entité iMessage, il remarque qu’elle contient un identificateur d’enregistrement et une clé de surnom et de photo. L’appareil de l’utilisateur 2 accède ensuite à la base de données publique CloudKit pour récupérer le nom et la photo chiffrés sous l’identifiant d’enregistrement et l’envoie au moyen d’iMessage.
Une fois le message récupéré, l’appareil de l’utilisateur 2 déchiffre l’entité et vérifie la signature directement à l’aide de l’identificateur d’enregistrement. Si la signature passe la vérification, l’utilisateur 2 obtient le nom et la photo, et il peut choisir de l’ajouter à ses contacts ou de l’utiliser pour Messages.