Hvordan iMessage sender og mottar meldinger på en sikker måte
Brukerne starter en ny iMessage-samtale ved å skrive inn en adresse eller et navn. Hvis de oppgir et telefonnummer eller en e-postadresse, kontakter enheten Apple Identity Service (IDS) for å hente de offentlige nøklene og APNs-adressene til alle enhetene som er tilknyttet adressaten. Hvis brukeren oppgir et navn, benytter enheten først brukerens Kontakter-app til å samle inn telefonnumre og e-postadresser som er tilknyttet dette navnet, og deretter hentes de offentlige nøklene og APNs-adressene fra IDS.
Brukerens utgående melding krypteres individuelt for hver av mottakerens enheter. De offentlige krypterings- og signeringsnøklene til mottakerenhetene hentes fra IDS. Senderenheten genererer en tilfeldig 88-bit-verdi for hver mottakerenhet og bruker den som en HMAC-SHA256-nøkkel for å konstruere en 40-bit-verdi som er avledet fra senderens og mottakerens offentlige nøkkel og klarteksten. Sammenkjedingen av 88-bit- og 40-bit-verdiene danner en 128-bit-nøkkel, som krypterer meldingen med den ved hjelp av AES i CTR-modus. 40-bit-verdien brukes av mottakersiden til å bekrefte integriteten til den dekrypterte klarteksten. Denne meldingsspesifikke AES-nøkkelen krypteres ved hjelp av RSA-OAEP til den offentlige nøkkelen til mottakerenheten. Kombinasjonen av den krypterte meldingsteksten og den krypterte meldingsnøkkelen får så en SHA-1-hash, og hashen signeres med Elliptic Curve Digital Signature Algorithm (ECDSA) ved hjelp av senderenhetens private signeringsnøkkel. I iOS 13 og nyere og iPadOS 13.1 og nyere kan enheter bruke en Elliptic Curve Integrated Encryption Scheme-kryptering (ECIES-kryptering) i stedet for RSA-kryptering.
Meldingene som kommer ut av dette, én for hver mottakerenhet, består av den krypterte meldingsteksten, den krypterte meldingsnøkkelen og senderens digitale signatur. Deretter sendes de av gårde til APNs for levering. Metadata, for eksempel tidsmerker og ruteinformasjon for APNs, krypteres ikke. Kommunikasjon med APNs krypteres ved hjelp en såkalt «forward secret» TLS-kanal.
Avhengig av hvilken iOS- eller iPadOS-versjon som brukes, kan APNs kun videreformidle meldinger som har en størrelse på inntil 4 eller 16 kB. Hvis meldingsteksten er for lang, eller hvis et vedlegg som for eksempel et bilde er lagt ved, blir vedlegget kryptert ved hjelp av AES i CTR-modus med en 256-bit-nøkkel som genereres tilfeldig, og lastet opp til iCloud. AES-nøkkelen for vedlegget, Uniform Resource Identifier (URI) og en SHA-1-hash for nøkkelens krypterte form blir så sendt til mottakeren som innhold i en iMessage, der konfidensialitet og integritet er beskyttet gjennom vanlig iMessage-kryptering, som vist i diagrammet nedenfor.
Hvis det gjelder gruppesamtaler, gjentas denne prosessen for alle mottakerne og enhetene deres.
Alle mottakerenhetene mottar en kopi av meldingen fra APNs og mottar om nødvendig vedlegget fra iCloud. Senderens innkommende telefonnummer eller e-postadresse sammenlignes med mottakerens kontakter slik at navnet vises når det er mulig.
I likhet med alle pushvarslinger slettes meldingen fra APNs når den har blitt levert. Til forskjell fra andre APNs-varslinger legges imidlertid iMessage-meldinger i kø for å bli levert til frakoblede enheter. Meldinger lagres på Apples tjenere i inntil 30 dager.