Voir Sécurité iOS, pp30-32 :
iMessage
Apple iMessage est un service de messagerie pour les appareils iOS et les ordinateurs Mac. iMessage prend en charge les textes et les pièces jointes telles que les photos, les contacts et les positions. Les messages apparaissent sur tous les appareils enregistrés d'un utilisateur afin qu'une conversation puisse être poursuivie à partir de n'importe lequel des appareils de l'utilisateur. iMessage utilise largement le service de notification push d'Apple (APNs). Apple ne journalise pas les messages ni les pièces jointes, et leur contenu est protégé par un chiffrement de bout en bout de sorte que seul l'expéditeur et le destinataire y aient accès. Apple ne peut pas décrypter les données.
Lorsqu'un utilisateur active iMessage, l'appareil génère deux paires de clés pour l'utilisation du service : une clé de chiffrement RSA de 1280 bits et une clé de signature ECDSA de 256 bits. Pour chaque paire de clés, les clés privées sont enregistrées dans le trousseau de l'appareil et les clés publiques sont envoyées au service d'annuaire d'Apple (IDS), où elles sont associées au numéro de téléphone ou à l'adresse e-mail de l'utilisateur, ainsi qu'à l'adresse APNs de l'appareil.
Lorsque les utilisateurs activent des appareils supplémentaires pour utiliser iMessage, leurs clés publiques, leurs adresses APNs et les numéros de téléphone associés sont ajoutés au service d'annuaire. Les utilisateurs peuvent également ajouter d'autres adresses e-mail, qui seront vérifiées en envoyant un lien de confirmation. Les numéros de téléphone sont vérifiés par le réseau de l'opérateur et la carte SIM. De plus, tous les appareils enregistrés de l'utilisateur affichent un message d'alerte lorsqu'un nouvel appareil, numéro de téléphone ou adresse e-mail est ajouté.
Comment iMessage envoie et reçoit des messages
Les utilisateurs commencent une nouvelle conversation iMessage en entrant une adresse ou un nom. S'ils saisissent un numéro de téléphone ou une adresse e-mail, l'appareil contacte l'IDS pour récupérer les clés publiques et les adresses APNs de tous les appareils associés au destinataire. Si l'utilisateur saisit un nom, l'appareil utilise d'abord l'application Contacts de l'utilisateur pour rassembler les numéros de téléphone et les adresses e-mail associés à ce nom, puis obtient les clés publiques et les adresses APNs auprès de l'IDS.
Le message sortant de l'utilisateur est individuellement chiffré en utilisant l'AES-128 en mode CTR pour chacun des appareils du destinataire, signé avec la clé privée de l'expéditeur, puis envoyé à l'APNs pour la livraison. Les métadonnées, telles que l'horodatage et les informations de routage APNs, ne sont pas chiffrées. La communication avec l'APNs est chiffrée en utilisant le TLS.
Si le texte du message est trop long, ou si une pièce jointe comme une photo est incluse, la pièce jointe est chiffrée avec une clé aléatoire et téléchargée sur iCloud. La clé et l'URI (Identifiant de ressource uniforme) pour la pièce jointe sont chiffrés et signés, comme illustré ci-dessous.
Pour les conversations de groupe, ce processus est répété pour chaque destinataire et ses appareils.
Côté réception, chaque appareil reçoit sa copie du message de l'APNs et, si nécessaire, récupère la pièce jointe depuis iCloud. Le numéro de téléphone entrant ou l'adresse e-mail de l'expéditeur est associé aux contacts du destinataire afin qu'un nom puisse être affiché, si possible.
Comme pour toutes les notifications push, le message est supprimé de l'APNs une fois livré. Contrairement aux autres notifications de l'APNs, cependant, les messages iMessage sont mis en file d'attente pour une livraison aux appareils hors ligne. Les messages sont conservés jusqu'à sept jours.
Si la mise en œuvre est correcte, cela signifie que vos messages sur les serveurs d'Apple peuvent seulement être décryptés par les appareils que vous avez enregistrés auprès d'Apple pour iMessage avant leur envoi. De plus, vous devez connecter l'appareil au service de push d'Apple dans les 7 jours suivant la transmission du message, sinon les messages seront purgés.
Cependant, cela est un grand "si" :
-
Il n'y a pas d'audit indépendant du code source d'Apple, donc les appareils que vous et vos correspondants utilisez pourraient contenir des "backdoors" (délibérées ou non) par exemple des faiblesses dans la génération de clés ou des fuites d'informations via des canaux cachés - et cela en supposant que les appareils eux-mêmes sont "sécurisés" ;
-
Il n'y a aucun moyen pour vos correspondants de vérifier que les clés publiques découvertes (reçues du répertoire d'Apple) sont effectivement associées aux clés privées que vous détenez sur vos appareils - Apple pourrait les substituer pour celles d'un "homme du milieu" ou simplement ajouter une clé publique supplémentaire pour un appareil que vous ne possédez pas mais qui pourra alors décrypter tous les messages qui vous sont destinés (vous pouvez essayer de détecter de telles attaques en interrogeant vos clés publiques depuis un autre compte et en vérifiant la réponse, bien qu'il n'y ait toujours aucune garantie qu'Apple ne fournisse pas une réponse différente à d'autres parties) ;
-
Comme toujours, la sécurité n'est pas meilleure que le maillon faible : vos correspondants ont un accès complet et non chiffré à vos conversations et toute compromission de leur part ou de leurs appareils entraînerait une compromission totale de votre communication.