Threema Multi-Device: Ein technischer Überblick

· English version

Viele Chat-Dienste bieten heute die Möglichkeit, mehrere Geräte parallel zu verwenden. Es liegt daher die Vermutung nahe, dass sich solch eine Multi-Device-Funktionalität verhältnismässig einfach implementieren lässt. Sofern Sicherheit und Datenschutz keine zentrale Rolle spielen, ist dem auch so. Hat das Multi-Device-Protokoll aber Threemas Anforderungen an Sicherheit und Datenschutz zu erfüllen, sieht die Sache etwas anders aus.

Um Threemas Standards zu genügen, muss eine Multi-Device-Lösung selbstverständlich über vollständige Ende-zu-Ende-Verschlüsselung verfügen. Ausserdem darf es dem Server nicht möglich sein, Schlüsselmaterial zu verändern, und das Mass übertragener Metadaten muss sich aufs absolute Minimum beschränken.

Diese Bedingungen stellen eine grosse technologische Herausforderung dar, doch wir glauben, eine elegante und taugliche Lösung gefunden zu haben, welche sich derzeit in Entwicklung befindet und im Laufe des kommenden Jahres verfügbar wird. Für technisch interessierte Leser skizzieren wir im Folgenden unseren Ansatz in groben Zügen.

Der bestehende Chat-Server

Gemäss Ockhams Rasiermesser ist es ratsam, einfache Lösungen komplexen vorzuziehen, und das gilt ganz besonders im Bereich der Sicherheit. Je simpler die entscheidenden Systemkomponenten aufgebaut sind, desto geringer ist das Risiko, bei der Sicherheitsprüfung etwaige Schwachstellen zu übersehen.

Auch Threemas Chat-Server, die wohl am meisten optimierte Komponente unserer Infrastruktur, erfüllt dieses Einfachheitsgebot. Und neben dem genannten Sicherheitsaspekt gibt es weitere Gründe, warum das so bleiben soll.

Zum einen werden nicht alle Nutzer mehrere Geräte verwenden, und was die Nutzung nur eines einzelnen Geräts betrifft, besteht kein Anlass, irgend etwas zu ändern. Zum andern ist der Chat-Server nicht darauf ausgelegt, die parallele Verwendung mehrerer Geräte mit derselben Threema-ID zu ermöglichen.

Statt eine Schlüsselkomponente unserer Infrastruktur zu komplizieren, haben wir uns für einen anderen Weg entschieden.

Der neue Mediator-Server

Ein neuer «Mediator-Server» wird Geräten, welche ihre Threema-ID mit anderen Geräten teilen, als Knotenpunkt dienen. Die Hauptaufgaben des Mediator-Servers sind:

  • Zugriff auf den Chat-Server koordinieren
  • Nachrichten an andere Geräte reflektieren
  • Daten und Einstellungen zwischen Geräten synchronisieren

Schauen wir uns diese Aufgaben, beginnend mit dem Authentisierungsprozess, etwas genauer an.

Anonyme Geräte-Gruppierung

Eine Grundvoraussetzung für serverbasierte Multi-Device-Funktionalität ist ein Verfahren, um mehrere Geräte zu einer Einheit zusammenzufassen. Es wäre naheliegend, zu diesem Zweck die Threema-ID zu gebrauchen. Der Mediator-Server braucht jedoch nicht zu wissen, welcher Threema-ID eine Gruppe von Geräten angehört.

Statt die Threema-ID zu verwenden, leiten wir deshalb kryptographisches Schlüsselmaterial aus dem privaten Schlüssel der ID ab:

  • Zunächst wird der «Device Group Key» aus dem privaten Schlüssel der Threema ID («Threema ID Private Key») abgeleitet. Dieser Device Group Key dient zur Verschlüsselung der Daten, welche Geräte derselben ID untereinander austauschen.

  • Anschliessend wird der «Mediator Path Key» aus dem Device Group Key abgeleitet. Der Mediator Path Key wird zur Authentisierung gegenüber dem Mediator-Server verwendet. Der öffentliche Teil dieses Schlüssels dient dem Server als Identifikator für die Geräte, welche einer ID angehören, und heisst daher «Device Group ID».

Threema ID
Private Key
Device
Group Key
Mediator
Path Key
Device
Group ID

Ein Gerät authentisiert sich gegenüber dem Mediator-Server, indem es eine Authentisierungsaufgabe auf Basis des Mediator Path Keys löst. Jedes Gerät ist selbständig in der Lage, aus dem Threema ID Private Key denselben Device Group Key abzuleiten. Da der Mediator-Server nicht ermitteln kann, von welcher Threema-ID die Schlüssel abgeleitet wurden, verfügen wir über ein anonymes Gruppierungsverfahren für Geräte, welche derselben Threema-ID angehören. Und weil jegliches Schlüsselmaterial aus dem privaten Schlüssel abgeleitet wurde und nur die Clients den privaten Schlüssel kennen, ist es für den Server unmöglich, Schlüsselmaterial zu verändern.

Reflektieren von Nachrichten

Nach erfolgreicher Authentisierung ernennt der Mediator-Server eines der gegenwärtig mit dem Server verbundenen Geräte zum «Leader». Dieses Gerät erhält die Aufgabe, Nachrichten vom Chat-Server an die anderen Geräte zu «reflektieren» (d.h. weiterzuleiten). Analog dazu muss jedes Gerät, welches eine Nachricht versendet, diese Nachricht via Mediator-Server an alle anderen Geräte reflektieren. Reflektierte Nachrichten werden mit dem Device Group Key Ende-zu-Ende-verschlüsselt.

Nachrichten an alle anderen Geräte derselben Gruppe zu reflektieren, ist die Hauptaufgabe der Multi-Device-Lösung. Diese Aufgabe mag trivial erscheinen, wie so oft steckt der Teufel jedoch im Detail.

Die meisten von Threemas Nachrichtentypen lösen auf dem Empfänger-Gerät eine Reaktion aus. Zwei Beispiele:

  1. Wird eine Nachricht empfangen und Lesebestätigungen sind aktiviert , muss mindestens ein Gerät eine Lesebestätigung zurücksenden.
  2. Wird eine Nachricht von einem unbekannten Kontakt empfangen, muss der Kontakt der Kontaktliste hinzugefügt werden, wo ein Name und ggf. weitere Eigenschaften festzulegen sind. Diese Eigenschaften müssen auf allen Geräten identisch sein.

Was die Verarbeitung eingehender Nachrichten betrifft, ist der Kontext stets entscheidend. Das Leader-Gerät muss grundsätzlich auf alle eingehenden Nachrichten reagieren, wohingegen bei den anderen Geräten auf eingehende Nachrichten gerade keine Reaktion erfolgen soll.

Diese Faustregel führt jedoch zu einem Problem, was das zweite der obigen Beispiele betrifft. Ohne eine Reaktion auf den Geräten, welche nicht der Leader sind, wird der neue Kontakt nur auf einem Gerät hinzugefügt statt auf allen. Hier kommt die Geräte-Synchronisation zum Zug.

Geräte-Synchronisation

Verwenden mehrere Geräte dieselbe Threema-ID, ist nicht nur erforderlich, dass neue Nachrichten auf allen Geräten eintreffen, sondern es müssen auch Kontakte, Gruppenchats, Verteilerlisten und Nutzer-Einstellungen über alle Geräte hinweg abgeglichen werden. Der Mediator-Server dient deshalb auch dazu, Daten, welche den Chat-Server nicht passieren, unter den beteiligten Geräten zu verteilen.

Synchronisation birgt immer die Gefahr von Synchronisationskonflikten. Wird z.B. das Profilbild auf zwei Geräten gleichzeitig angepasst, könnte im schlimmsten Fall auf beiden Geräten das Profilbild erscheinen, welches auf dem jeweils anderen gesetzt wurde. Um solch unerwünschtes Verhalten zu verhindern, muss einem Gerät vorübergehend exklusiver Zugriff auf die «Reflect Message Queue» des Mediator-Servers gewährt werden. Auf den Transaktionsmechanismus näher einzugehen, würde hier jedoch zu weit führen.

Chat-Server-Proxying

Threemas Chat-Server verwendet TCP als Transportprotokoll. Aus technischen Gründen, auf die wir vorerst nicht näher eingehen, erfordert der Mediator-Server Unterstützung für das WebSocket-Protokoll. Es wird aber nicht der Chat-, sondern der Mediator-Server mit dem WebSocket-Protokoll ausgestattet und die Kommunikation zwischen Chat-Server und Multi-Device-Geräten über den Mediator-Server geleitet.

Ein willkommener Nebeneffekt dieses Proxy-Verfahrens ist der Umstand, dass der Chat-Server somit nicht mehr in der Lage ist, IP-Adressen zu Threema-IDs zuzuordnen. Und dank der anonymen Geräte-Gruppierung gilt dasselbe für den Mediator-Server.

Threema wird selbstverständlich einen offiziellen Mediator-Server zur Verfügung stellen. Nutzer werden zudem die Möglichkeit haben, einen eigenen Mediator-Server zu betreiben. Ein Vorteil davon ist, dass Threemas Chat-Server in diesem Fall bloss die IP-Adresse des selbstgehosteten Mediator-Servers bekannt ist, nicht aber die IP-Adressen der einzelnen Geräte, was die Metadaten auf Threemas Server weiter verringert.

Schluss

Wie wir gesehen haben, ist eine Reihe anspruchsvoller Herausforderungen zu bewältigen, wenn bei der Umsetzung einer Multi-Device-Lösung Sicherheit und Datenschutz im Zentrum stehen. 

Threemas Lösung bietet vollständige Ende-zu-Ende-Verschlüsselung. Die kryptographischen Eigenschaften unseres Protokolls verunmöglichen, dass Schlüsselmaterial durch einen Server verändert wird. Und dank anonymer Geräte-Gruppierung sowie der Option, selbst einen Mediator-Server betreiben, ist das Mass der anfallenden Metadaten aufs absolute Minimum beschränkt, wie bei Threema üblich.

Es gibt natürlich eine Vielzahl weiterer Facetten des Multi-Device-Protokolls, welche in dieser groben Übersicht unerwähnt bleiben. Wir befinden uns in einem Entwicklungsstadium, wo technische Details noch Änderungen unterworfen sind, aber das Grundgerüst ist aufgebaut.