3 Punkte von GN⁺ 2023-12-06 | 1 Kommentare | Auf WhatsApp teilen

Erklärung der internen Struktur von iMessage

  • Bietet einen groben Überblick über die interne Struktur von iMessage
  • Erklärt die Inhalte auf Basis der Erkenntnisse aus dem Projekt pypush, wobei technische Details vereinfacht dargestellt werden
  • pypush ist ein Open-Source-Projekt, das iMessage nachimplementiert; detaillierte Implementierungen sind im entsprechenden Repository zu finden

Grundlegende Schicht (Foundational Layer)

  • Apple Push Notification Service (APNs) ist ein zentraler Bestandteil von iMessage und wird verwendet, um Echtzeit-Benachrichtigungen und Updates zu erhalten, auch wenn die App geschlossen ist
  • APNs ist ein bidirektionaler Dienst und wird sowohl zum Senden als auch zum Empfangen von Push-Benachrichtigungen verwendet
  • Wenn sich ein Gerät mit APNs verbindet, erhält es ein „Push-Token“, das zum Weiterleiten von Benachrichtigungen an ein bestimmtes Gerät verwendet wird
  • Beim Senden einer Benachrichtigung muss das Thema der Nachricht angegeben werden; bei iMessage ist dies com.apple.madrid
  • APNs wird nicht nur für die Nachrichtenübertragung verwendet, sondern auch, um über IDS Anfragen zu senden und Antworten über APNs zu empfangen
  • Für die Verbindung mit APNs ist ein Client-Zertifikat erforderlich, das vom Aktivierungsserver Albert ausgestellt wird

Schlüsselserver (Keyserver)

  • IDS (vermutlich IDentity Services) dient als Schlüsselserver für Dienste wie iMessage und FaceTime
  • iMessage ist Ende-zu-Ende-verschlüsselt, daher müssen öffentliche Schlüssel zwischen den Teilnehmern sicher ausgetauscht werden
  • Der erste Schritt bei der Registrierung bei IDS besteht darin, ein Authentifizierungs-Token zu erhalten; dafür sind Apple-ID-Benutzername und -Passwort erforderlich
  • Nach Erhalt des Authentifizierungs-Tokens muss dieses sofort gegen ein länger gültiges Zertifikat ausgetauscht werden, mit dem die Registrierung bei IDS möglich ist
  • Im Registrierungsprozess bei IDS werden öffentliche Verschlüsselungs- und Signaturschlüssel sowie verschiedene „Client-Daten“ auf den Schlüsselserver hochgeladen
  • Bei der IDS-Registrierungsanfrage ist ein binärer Blob namens „Validierungsdaten“ erforderlich; dies ist ein Validierungsmechanismus, der verhindern soll, dass Geräte, die keine Apple-Geräte sind, iMessage nutzen
  • Nach der Registrierung bei IDS erhält man ein „Identity-Key-Paar“, mit dem Abfragen öffentlicher Schlüssel durchgeführt werden können
  • Bei einer Abfrage gibt man das gewünschte Konto an und erhält eine Liste von „Identitäten“ für jedes Gerät, die wichtige Details enthält

Nachrichtenverschlüsselung

  • Die grundlegende Einrichtung von iMessage ist abgeschlossen, sodass öffentliche Schlüssel anderer Nutzer abgefragt und eigene Schlüssel veröffentlicht werden können
  • Um Nachrichten zu empfangen, muss die APNs-Verbindung auf com.apple.madrid gefiltert und ein Paket für den aktiven Status gesendet werden
  • Abhängig von den bei der IDS-Registrierung angekündigten Funktionen und der iOS-Version des sendenden Geräts kann eine Nachricht im Verschlüsselungsformat pair oder im neueren Format pair-ec empfangen werden
  • Beim Senden von Nachrichten kann man entweder jedem Empfänger einzeln eine Nachricht schicken oder alle Empfänger und verschlüsselten Payloads in einem großen Bündel zusammenfassen, das APNs verteilt
  • Nachrichten werden an alle Teilnehmer einer Konversation zugestellt, einschließlich anderer Geräte des eigenen Kontos
  • Ein beim Nachrichtenversand häufig übersehener Punkt ist, dass der AES-Schlüssel nicht vollständig zufällig ist, sondern mit HMAC getaggt wird

Materialien und Quellen

  • Es gibt viele Menschen und frühere Arbeiten, die zum Verständnis von iMessage beitragen
  • Referenziert werden unter anderem die IMFreedom Knowledge Base, pushproxy, apns-dissector, QuarkSlab, Garman et al., NowSecure, Elcomsoft, open-imcore, The Apple Wiki sowie Forschungsarbeiten von Mihir Bellare und Igors Stepanovs

1 Kommentare

 
GN⁺ 2023-12-06
Hacker-News-Kommentare
  • Es gibt die Vermutung, dass Apple zur Abschottung von iMessage Geräteverifizierung (Attestation) einsetzen wird. Das würde Software-Updates für ältere Geräte erforderlich machen.

    Für die IDS-Registrierungsanfrage zur Nutzung von iMessage ist ein binärer Blob namens „verification data“ erforderlich. Das ist Apples Verifizierungsmechanismus, um zu verhindern, dass Nicht-Apple-Geräte iMessage nutzen.

  • Es wird gefragt, ob dieses Verhalten von Apple gegen die DSA- und DMA-Gesetze der Europäischen Union verstoßen könnte.

  • Wenn man Erfahrungen dazu teilt, wie man in den Tech-Bereich eingestiegen ist, könnte das Studierenden helfen, die technische Dinge lernen möchten.

  • Es wird gefragt, ob jemand plant, ein libpurple-Plugin zu entwickeln.

  • Es wird Begeisterung für dieses Thema gezeigt und empfohlen, dem Hack Club beizutreten.

  • Man hatte eine Erklärung dafür erwartet, warum iMessage unsichtbare Nachrichten und Anhänge erlaubt, stellte dies aber infrage, nachdem man gesehen hatte, dass diese Funktion zur Infektion von Geräten genutzt wird.

  • pypush, das Open-Source-Projekt, das die heutigen Fortschritte bei den Nachrichten zur Reverse-Engineering von iMessage vorangetrieben hat, steht unter der Server Side Public License von MongoDB und gehört Beeper. Die Bibliothek ist hervorragend, aber eine starke Copyright-Lizenz könnte den Nutzungsumfang beeinflussen.

  • Es gibt eine ernst gemeinte Frage dazu, ob das Wort „opertunistic“ tatsächlich verwendet wird oder ob es sich wie bei „referer“ um einen Tippfehler handelt, der sich über Generationen verfestigt hat.

  • Es gibt aufmunternde Worte darüber, wie erstaunlich es ist, dass ein Highschool-Schüler so etwas geschafft hat.