Sikker deling av navn og bilde i iMessage
En bruker kan dele et navn og et bilde ved hjelp av iMessage. Brukeren kan velge informasjonen fra Mitt kort, eller tilpasse navnet og legge ved et valgfritt bilde. Deling av navn og bilde i iMessage bruker et totrinnssystem til å sende navnet og bildet.
Dataene deles inn i felter. Hvert felt krypteres og autentiseres uavhengig og sammen ved hjelp av prosessen nedenfor. Det finnes tre felter:
Navn
Bilde
Bildefilnavn
Et av de første trinnene for å opprette dataene er å generere en vilkårlig 128-bit-nøkkel på enheten. Deretter deriveres nøkkelen med HKDF-HMAC-SHA256 for å opprette tre undernøkler: Nøkkel 1:Nøkkel 2:Nøkkel 3 = HKDF(registernøkkel, «kallenavn»). For hvert felt genereres en vilkårlig 96-bit-initialiseringsvektor (IV), og dataene krypteres med AES-CTR og Nøkkel 1. Deretter beregnes en meldingsautentiseringskode (MAC) med HMAC-SHA256 ved hjelp av Nøkkel 2, som dekker feltnavnet, felt IV og kryptert tekst fra feltet. Til slutt blir settet av MAC-verdier for de individuelle feltene knyttet sammen, og MAC blir beregnet med HMAC-SHA256 ved hjelp av Nøkkel 3. MAC (256-bit) lagres sammen med de krypterte dataene. De første 128 bitene av denne MAC brukes som RecordID.
Denne krypterte oppføringen lagres i den offentlige CloudKit-databasen under RecordID. Denne oppføringen muteres aldri, og når brukeren velger å bytte navn og bilde, genereres en ny kryptert oppføring hver gang. Når bruker 1 velger å dele navn og bilde med bruker 2, sendes oppføringsnøkkelen sammen med RecordID i iMessage-nyttelasten, som er kryptert.
Når enheten til bruker 2 mottar denne iMessage-nyttelasten, registrerer den at nyttelasten inneholder RecordID og nøkkel for kallenavn og bilde. Enheten til bruker 2 går til den offentlige CloudKit-databasen for å hente kryptert navn og bilde og RecordID, og sender informasjonen ved hjelp av iMessage.
Når meldingen er mottatt, dekrypterer enheten til bruker 2 nyttelasten og kontrollerer signaturen ved hjelp av RecordID. Hvis informasjonen blir godkjent, vises navnet og bildet for bruker 2, og brukeren kan velge å legge informasjonen til i kontaktene eller bruke den i Meldinger.