3 points par GN⁺ 2023-12-06 | 1 commentaires | Partager sur WhatsApp

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

 
GN⁺ 2023-12-06
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.

    Une requête d’enregistrement IDS pour utiliser iMessage nécessite un blob binaire appelé « données de vérification ». Il s’agit du mécanisme de vérification d’Apple pour empêcher les appareils non Apple d’utiliser iMessage.

  • 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.