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