Sikker afsendelse og modtagelse af beskeder via iMessage
Brugerne starter en ny iMessage-samtale ved at skrive en adresse eller et navn. Hvis de skriver et telefonnummer eller en e-mailadresse, kontakter enheden IDS (Apple Identity Service) for at hente de offentlige nøgler og APNs-adresser til alle de enheder, der er knyttet til adressaten. Hvis brugeren skriver et navn, bruger enheden først appen Kontakter på brugerens enhed til at indsamle de telefonnumre og e-mailadresser, der er knyttet til navnet, og henter derefter de offentlige nøgler og APNs-adresserne fra IDS.
Brugerens udgående besked krypteres særskilt til hver af modtagerens enheder. Modtagerenhedernes offentlige krypterings- og signeringsnøgler hentes fra IDS. For hver modtagerenhed genererer afsenderenheden en tilfældig 88 bit værdi og bruger den som en HMAC-SHA256-nøgle til at danne en værdi på 40 bit ud fra afsenderens og modtagerens offentlige nøgle og den almindelige tekst. Sammenkædningen af værdierne på 88 bit og 40 bit giver en nøgle på 128 bit, som beskeden krypteres med ved hjælp af AES med tællerfunktion (CTR). Værdien på 40 bit bruges på modtagersiden til at bekræfte, at den dekrypterede almindelige tekst ikke er blevet ændret. AES-nøglen til hver besked krypteres, ved at RSA-OAEP bruges til modtagerenhedens offentlige nøgle. Kombinationen af den krypterede beskedtekst og den krypterede beskednøgle hash-behandles derefter med SHA-1, hvorefter hash-værdien signeres med ECDSA (Elliptic Curve Digital Signature Algorithm) med brug af afsenderenhedens private signeringsnøgle. I iOS 13 og nyere versioner og iPadOS 13.1 og nyere versioner kan enheder bruge ECIES-kryptering (Elliptic Curve Integrated Encryption Scheme) i stedet for RSA-kryptering.
Resultatet er en besked til hver modtagerenhed, som består af den krypterede beskedtekst, den krypterede beskednøgle og afsenderens digitale signatur. De overdrages derefter til APNs til levering. Metadata, f.eks. tidsstemplet og APNs-ruteoplysningerne, krypteres ikke. Kommunikationen med APNs krypteres med en TLS-kanal med Forward Secrecy.
APNs kan kun videresende beskeder med en størrelse på op til 4 eller 16 KB, afhængigt af iOS- eller iPadOS-versionen. Hvis beskedens tekst er for lang, eller hvis der er vedhæftet et bilag, f.eks. et foto, krypteres bilaget med AES CTR med en tilfældig 256-bit nøgle og overføres til iCloud. Derefter sendes bilagets AES-nøgle, dets Uniform Resource Identifier (URI) og en SHA-1 hash-værdi for bilagets krypterede format til modtageren i en iMessage, og værdiernes fortrolighed og integritet beskyttes med den almindelige iMessage-kryptering som vist i nedenstående diagram.
Ved gruppesamtaler gentages processen for hver modtager og hver modtagers enheder.
Hver modtagerenhed modtager sin kopi af beskeden fra APNs og henter om nødvendigt bilaget fra iCloud. Afsenderens indgående telefonnummer eller e-mailadresse sammenlignes med modtagerens kontakter, så der kan vises et navn, hvis det findes.
Som ved alle andre push-notifikationer slettes beskeden fra APNs, når den er leveret. I modsætning til andre APNs-notifikationer sættes iMessage-beskeder imidlertid i kø til levering til enheder, der er offline. Beskeder opbevares på Apples servere i op til 30 dage.