Condivisione sicura della foto e del nome in iMessage
La condivisione della foto e del nome in iMessage consente all’utente di condividere il proprio nome e la propria foto usando iMessage. L’utente può selezionare le informazioni della scheda personale oppure personalizzare il nome e includere un’immagine di sua scelta. La condivisione del nome e della foto con iMessage utilizza un sistema in due passaggi per distribuire il nome e la foto.
I dati vengono suddivisi in campi, ognuno di questi campi viene codificato e autenticato separatamente e poi tutti i campi vengono autenticati insieme secondo il processo descritto a continuazione. Esistono tre campi:
Nome
Foto
Nome file foto
Un primo passaggio per la creazione dei dati è la generazione casuale di una chiave record a 128 bit sul dispositivo. Tale chiave record viene quindi derivata con HKDF-HMAC-SHA256 per creare tre sotto-chiavi: chiave 1:chiave 2:chiave 3 = HKDF(chiave record, “soprannomi”). Per ogni campo viene generato un vettore di inizializzazione a 96 bit casuale e i dati vengono codificati mediante AES-CTR e la chiave 1. Viene poi elaborato un codice di autenticazione del messaggio (MAC) con HMAC-SHA256 tramite la chiave 2 e coprendo il nome del campo, il vettore di inizializzazione del campo e il ciphertext del campo. Infine, viene concatenato l’insieme dei valori MAC dei singoli campi e il relativo MAC viene elaborato con HMAC-SHA256 tramite la chiave 3. Il MAC a 256 bit viene archiviato insieme dati codificati. I primi 128 bit di questo MAC sono utilizzati come recordID.
Questo record codificato viene poi archiviato nel database pubblico di CloudKit come recordID. Questo record non cambia mai e ogni volta che l’utente sceglie di modificare il nome utente e la foto viene generato un nuovo record. Quando l’utente 1 sceglie di condividere nome e foto con l’utente 2, invia una chiave record insieme al recordID all’interno del payload di iMessage, che è codificato.
Quando il dispositivo dell’utente 2 riceve questo payload di iMessage, nota che contiene una chiave e un recordID per soprannome e foto. Il dispositivo dell’utente 2 recupera dal database pubblico di CloudKit il nome e la foto codificati nel recordID e li invia tramite iMessage.
Una volta ricevuto il messaggio, il dispositivo dell’utente 2 decrittografa il payload e verifica la firma usando il recordID stesso. Se la verifica ha esito positivo, l’utente 2 visualizza il nome e la foto e può scegliere di aggiungerli ai contatti o di usarli per Messaggi.