Chat-App: Beeper bringt iMessage per Reverse Engineering auf Android

Die Macher der universellen Chat-App Beeper haben eine Drittanbieter-App für iMessage unter Android(öffnet im neuen Fenster) veröffentlicht. Für die Beeper Mini genannte App(öffnet im neuen Fenster) setzen die Entwickler erstmals auf die Nutzung des nativen iMessage-Protokolls sowie direkt auf die Apple-Server zum Empfangen und Versenden der Nachrichten. Grundlage dafür ist das Reverse Engineering des iMessage-Protokolls, was nun direkt in der Android-App reimplementiert worden ist.
Bisherige Umsetzungen von iMessage für Android basierten auf einem eher zwielichtigen Verfahren, das unter anderem über Relay-Server auf Mac-Servern umgesetzt wurde. Im Zweifel konnten so Dritte die eigenen Nachrichten mitlesen. Aus diesem Grund musste etwa Nothing seine Umsetzung von iMessage auf Android erst vor wenigen Wochen wieder aus dem Play Store entfernen.
Für Nutzer von Beeper Mini hat die App den Vorteil, auch von Android-Telefonen aus nativ per iMessage mit Apple-Nutzer kommunizieren zu können. Dabei werden die Nachrichten beim Gegenüber mit den blauen Blasen für iMessage dargestellt, statt, wie sonst üblich, mit den grünen Blasen(öffnet im neuen Fenster) für eine Kommunikation per SMS oder MMS. Denn Apple unterstützt iMessage nicht unter Android, sehr zum Ärger von Google, Netzbetreibern und einigen Nutzern .
Reverse Engineering und Nachbau von iMessage
Beeper selbst erklärt in einem Blogeintrag einige technische Details(öffnet im neuen Fenster) zu dem Vorgehen und dem Aufbau der App, vor allem im Zusammenhang mit seinen eigenen Clouddiensten. Darüber hinaus erläutert der für das Reverse Engineering hauptverantwortliche Entwickler, der eigenen Angaben zufolge noch Schüler ist, seine Erkenntnisse und Umsetzung(öffnet im neuen Fenster) ebenfalls. Außerdem verfügbar ist eine Proof-of-Concept-Implementierung in Python(öffnet im neuen Fenster) zur Nutzung von iMessage, die unter der SSPL verfügbar ist.
Wenig überraschend nutzt iMessage den Erläuterungen zufolge zahlreiche Apple-Dienste. Dazu gehört der Push Notification Service, der letztlich zum Senden und zum Empfangen der Nachrichten genutzt wird. Hinzu kommt ein Keyserver, der den Schlüsselaustausch organisiert. Die Registrierung dafür funktioniert mittels Authentifizierung über die Apple ID.
Darüber hinaus sind sogenannte Validierungsdaten notwendig, die Apple selbst mit einer Binärdatei erzeugt, die laut der Beschreibung auf Obfuskation(öffnet im neuen Fenster) setzt. In der unabhängigen Reimplementierung wird diese Binärdatei zum Erzeugen der Daten emuliert. Hinzu kommt, dass sich die Validierungsdaten aus mehreren Bestandteilen wie Seriennummer des Geräts, MAC-Adresse, Modellbezeichnung oder auch UUID der Root-Disk zusammensetzen. Diese müssen für die Nutzung in der iMessage-Reimplementierung bisher noch hardcodiert mitgeliefert werden.
Nach der erfolgten Registrierung am Keyserver ist der Austausch und vor allem der Erhalt anderer öffentlicher Schlüssel möglich. Das Senden und Empfangen der eigentlichen iMessage-Nachrichten ist dann vergleichsweise einfach, auch weil das Nachrichtenformat bekannt und gut untersucht ist. Details zur konkreten Umsetzung in der Android-App liefert der Beeper-Blog.
Apple noch zurückhaltend
Ob und vor allem wie lange Apple sich dieses Vorgehen der Drittanbieter-App Beeper gefallen lassen wird, ist fraglich. Noch ist eine Nutzung von Beeper Mini offenbar problemlos möglich. Grundsätzlich dürfte eine eigentlich nicht vorgesehene Nutzung der Apple-Server allerdings gegen die Nutzungsbedingungen verstoßen und könnte zu einem Ausschluss führen.
Technisch leicht möglich sein dürfte dies für Apple durch das Erkennen der Validierungsdaten, die zwar bisher von den Apple-Servern akzeptiert werden, aber auch von Apple analysiert und bearbeitet werden können. Und zumindest das Verteilen des Apple-Codes zum Erstellen der Validierungsdaten im Proof-of-Concept auf Github dürfte ziemlich klar eine Urheberrechtsverletzung darstellen.



