Explication de l’architecture interne d’iMessage
- Présentation d’ensemble de l’architecture interne d’iMessage
- Explication simplifiée des détails techniques à partir de ce qui a été découvert via le projet
pypush
pypush est un projet open source qui réimplémente iMessage, et son dépôt permet de consulter les détails de l’implémentation
Couche fondamentale (Foundational Layer)
- Apple Push Notification Service (APNs) est un composant central d’iMessage, utilisé pour recevoir des notifications et des mises à jour en temps réel même lorsque l’application est fermée
- APNs est un service bidirectionnel, utilisé à la fois pour envoyer et recevoir des notifications push
- Lorsqu’un appareil se connecte à APNs, il reçoit un « push token » utilisé pour router les notifications vers cet appareil précis
- Lors de l’envoi d’une notification, il faut préciser le sujet du message ; dans le cas d’iMessage, il s’agit de
com.apple.madrid
- APNs sert non seulement à transporter les messages, mais aussi à envoyer des requêtes via IDS et à recevoir les réponses via APNs
- Pour se connecter à APNs, un certificat client émis par le serveur d’activation Albert est nécessaire
Serveur de clés (Keyserver)
- IDS (probablement IDentity Services) sert de serveur de clés pour des services comme iMessage et FaceTime
- iMessage étant chiffré de bout en bout, les clés publiques doivent être échangées de manière sécurisée entre les participants
- La première étape de l’inscription à IDS consiste à obtenir un jeton d’authentification, ce qui nécessite l’identifiant Apple et le mot de passe
- Une fois ce jeton obtenu, il faut l’échanger immédiatement contre un certificat plus durable, qui permettra de s’enregistrer auprès d’IDS
- Le processus d’enregistrement auprès d’IDS consiste à téléverser vers le serveur de clés les clés publiques de chiffrement et de signature, ainsi que diverses « données client »
- La requête d’enregistrement IDS nécessite un blob binaire appelé « données de validation », qui sert de mécanisme de vérification pour empêcher les appareils non Apple d’utiliser iMessage
- Une fois enregistré auprès d’IDS, on reçoit une « paire de clés d’identité », qui permet d’effectuer des recherches de clés publiques
- Lors d’une recherche, on fournit le compte souhaité et on reçoit une liste des « identités » correspondant à chaque appareil, avec des détails importants
Chiffrement des messages
- La configuration de base d’iMessage est terminée, ce qui permet de consulter les clés publiques d’autres utilisateurs et de publier les siennes
- Pour recevoir des messages, il faut filtrer la connexion APNs sur
com.apple.madrid et envoyer un paquet de maintien en activité
- Selon les fonctionnalités annoncées lors de l’enregistrement IDS et la version d’iOS de l’appareil émetteur, les messages peuvent être reçus au format de chiffrement
pair ou au nouveau format pair-ec
- Lors de l’envoi d’un message, on peut envoyer individuellement un message à chaque destinataire, ou regrouper tous les destinataires et les charges utiles chiffrées dans un gros bundle qu’APNs distribuera
- Les messages sont transmis à tous les participants d’une conversation, y compris aux autres appareils du même compte
- Un point souvent négligé lors de l’envoi de messages est que la clé AES n’est pas entièrement aléatoire, mais étiquetée avec un HMAC
Ressources et sources
- De nombreuses personnes et travaux antérieurs ont contribué à la compréhension d’iMessage
- IMFreedom Knowledge Base,
pushproxy, apns-dissector, QuarkSlab, Garman et al., NowSecure, Elcomsoft, open-imcore, The Apple Wiki, ainsi que les recherches de Mihir Bellare et Igors Stepanovs sont cités comme références
1 commentaires
Commentaires sur Hacker News
Certains prévoient qu’Apple utilisera une vérification de l’appareil (attestation) pour verrouiller iMessage. Cela nécessiterait des mises à jour logicielles pour les anciens appareils.
Certains se demandent si cette pratique d’Apple pourrait enfreindre les lois DSA et DMA de l’Union européenne.
Partager son expérience sur la manière d’entrer dans le secteur de la tech pourrait aider les étudiants qui veulent apprendre des choses techniques.
Certains se demandent si quelqu’un prévoit de créer un plugin libpurple.
Certains recommandent de rejoindre Hack Club, en saluant la passion montrée sur ce sujet.
Certains s’attendaient à une explication sur la raison pour laquelle iMessage autorise les messages et pièces jointes invisibles, mais ont été intrigués en voyant que cette fonctionnalité est utilisée pour infecter des appareils.
pypush, le projet open source à l’origine des avancées d’aujourd’hui dans l’actualité sur la rétro-ingénierie d’iMessage, suit la Server Side Public License de MongoDB et appartient à Beeper. Cette bibliothèque est excellente, mais une licence de droit d’auteur stricte peut affecter l’étendue de ses usages possibles.
Certains posent sérieusement la question de savoir si le mot « opertunistic » est réellement utilisé, ou s’il s’agit d’une faute de frappe qui s’est figée au fil des générations, comme « referer ».
Certains adressent des encouragements, soulignant qu’il est impressionnant qu’un lycéen ait accompli cela.