Nimen ja kuvan suojattu jakaminen iMessagessa
iMessagen nimen ja kuvan jakamisominaisuus mahdollistaa käyttäjälle nimen ja kuvan jakamisen iMessagessa. Käyttäjä voi valita oman korttinsa tiedot tai muokata nimeä ja sisällyttää vapaasti valitsemansa kuvan. iMessagen nimen ja kuvan jakamisominaisuus käyttää kaksivaiheista järjestelmää nimen ja kuvan jakelemiseen.
Data jaetaan pienempiin kenttiin, joista jokainen salataan ja todennetaan erikseen sekä todennetaan yhdessä alla kuvatussa prosessissa. Kenttiä on kolme:
Nimi
Kuva
Kuvan tiedostonimi
Yksi ensimmäisistä toimenpiteistä datan luomisessa on satunnaisen 128-bittisen tietueavaimen muodostaminen laitteessa. Tästä tietueavaimesta muodostetaan sitten HKDF-HMAC-SHA256:ta käyttäen kolme aliavainta: avain 1:avain 2:avain 3 = HKDF(tietueavain, ”lempinimet”). Kullekin kentälle luodaan satunnainen 96-bittinen alkuarvo (Initialization Vector, IV) ja data salataan käyttäen AES-CTR:ää ja avainta 1. Sen jälkeen lasketaan sanoman autentikointikoodi (MAC) HMAC-SHA256:lla käyttäen avainta 2. Se kattaa kentän nimen, kentän alkuarvon ja kentän salatekstin. Lopuksi yksittäisten MAC-arvojen sarja yhdistetään ja niiden MAC lasketaan HMAC-SHA256:lla käyttäen avainta 3. 256-bittinen MAC tallennetaan salattujen tietojen rinnalla. Tämän MAC-koodin ensimmäisiä 128 bittiä käytetään RecordID:nä.
Tämä salattu tietue tallennetaan sitten CloudKitin julkiseen tietokantaan RecordID:n alle. Tätä tietuetta ei koskaan muuteta, ja joka kerta kun käyttäjä päättää muuttaa nimi- ja kuvatietojaan, luodaan uusi salattu tietue. Kun käyttäjä 1 valitsee jakaa nimensä ja kuvansa käyttäjän 2 kanssa, hän lähettää tietueavaimen recordID:n kanssa iMessagen tietosisällössä, joka on salattu.
Kun käyttäjä 2:n laite vastaanottaa tämän iMessage-tietosisällön, se havaitsee, että tietosisältö sisältää lempinimen ja kuvan recordID:n ja avaimen. Käyttäjä 2:n laite noutaa salatun nimen ja kuvan recordID:n alta julkisesta CloudKit-tietokannasta ja lähettää ne iMessagella.
Kun viesti on noudettu, käyttäjän 2 laite purkaa tietosisällön salauksen ja vahvistaa allekirjoituksen käyttäen itse recordID:tä. Jos se hyväksytään, käyttäjälle 2 näytetään nimi ja kuva, ja hän voi valita lisätä ne yhteystietoihinsa tai käyttää niitä Viesteissä.