Messenger-Apps: Signal und WhatsApp

Ein Ratschenrad mit einer Sperrklinke zwischen den Zähnen, das sich nur in eine Richtung drehen lässt, mit Sprechblasen, die Zahn für Zahn weiterrücken.

Du schickst deinem besten Freund eine Nachricht. Ein paar Hundertstelsekunden später steht sie auf seinem Bildschirm, und unterwegs ist sie durch mindestens fünf Computer gegangen, die du nie gesehen hast. Trotzdem behaupten Signal und WhatsApp beide, dass keiner dieser fünf sie gelesen hat — sie selbst auch nicht. Das ist ein großes Versprechen, und es lässt sich halten. Dieses Kapitel zeigt, mit welchen Bauteilen — und wo das Versprechen aufhört.

Wörter, die du gleich brauchst

Ende-zu-Ende-Verschlüsselung
Verschlüsselt von deinem Gerät bis zu dem der anderen Person, und nirgends dazwischen entschlüsselt. Der Server sieht nur Geheimtext. Oft abgekürzt zu E2EE.
Transportverschlüsselung
Nur auf der Leitung verschlüsselt. Der Server entschlüsselt, schaut hinein und verschlüsselt neu für das nächste Stück. Das ist es, was das Schloss-Symbol in deinem Browser macht, und es ist etwas ganz anderes.
Signal-Protokoll
Das Rezept, das Signal erfunden hat und das auch WhatsApp benutzt. Es ist keine App, sondern eine Absprache darüber, welche Berechnung wann passiert.
Vorratsschlüssel (Prekey)
Ein halber Schlüsselaustausch, den du im Voraus beim Server hinterlässt, damit jemand dich erreichen kann, während du schläfst.
Ratchet
Englisch für Ratsche: das Zahnrad einer Ratsche, das sich nur in eine Richtung drehen lässt. Hier: Der Schlüssel rückt bei jeder Nachricht einen Zahn weiter und kann nie zurück.
Metadaten
Alles rund um die Nachricht herum: wer, an wen, wann, wie oft, wie groß. Nicht der Inhalt, aber der Umschlag.

Verschlüsselt ist nicht dasselbe wie Ende-zu-Ende

Fast jede App sagt, dass sie verschlüsselt, und fast jede App sagt die Wahrheit. Die Frage ist bis wohin. Bei normaler Transportverschlüsselung geht deine Nachricht verschlüsselt zum Server, wird dort entschlüsselt, liegt lesbar auf einer Festplatte und geht neu verschlüsselt weiter zu deinem Freund. Wer diesen Server besitzt, liest mit: die Firma, eine Angestellte, die zu weit geht, ein Einbrecher, eine Richterin mit einem Beschluss.

Bei Ende-zu-Ende-Verschlüsselung hat der Server den Schlüssel nicht. Nicht, weil die Firma verspricht, nicht hinzuschauen, sondern weil es nichts gibt, wo man hinschauen könnte. Dieser Unterschied ist nicht juristisch und nicht ethisch, er ist mathematisch — und er bleibt bestehen, auch wenn die Firma den Besitzer wechselt.

TransportverschlüsselungEnde-zu-Ende-Verschlüsselung
Wer hat den Schlüssel?du, der Server, die andere Seitedu und die andere Seite
Was liegt auf dem Server?deine Nachricht, lesbarGeheimtext
Was kann der Server der Polizei geben?den Inhaltden Geheimtext, und der ist wertlos

Wie erreichst du jemanden, der schläft?

Kapitel 5 endete mit einer Einschränkung: Diffie–Hellman braucht zwei Seiten, die gleichzeitig mitmachen. Du schickst etwas, sie schickt etwas zurück, und erst dann hast du ein gemeinsames Geheimnis. Aber dein Freund schläft um drei Uhr nachts, und deine Nachricht soll trotzdem da stehen, wenn er aufwacht.

Die Lösung heißt X3DH, von Extended Triple Diffie–Hellman. Die Idee: Du machst deine Hälfte des Austauschs im Voraus und lässt sie beim Server liegen.

  1. Wenn du die App installierst, legt dein Gerät ein Stapelchen Schlüsselhälften an: eine feste (deine Identität) und einen Vorrat Wegwerfexemplare. Die öffentlichen Hälften gehen zum Server, die geheimen bleiben auf deinem Gerät.
  2. Will ich dir etwas schicken, während du offline bist, dann hole ich mir so ein Stapelchen. Mehr brauche ich nicht.
  3. Ich mache den Austausch ganz allein: mein Geheimnis gegen deine öffentlichen Hälften. Daraus kommt ein gemeinsames Geheimnis. Ich verschlüssele meine Nachricht und schicke sie los.
  4. Wachst du auf, dann machst du dieselbe Rechnung andersherum mit deinen geheimen Hälften. Gleiches Geheimnis, Nachricht lesbar. Wir waren keine Sekunde gleichzeitig online.

Es ist keine neue Mathematik: Es ist drei- oder viermal dasselbe Diffie–Hellman aus jenem Kapitel, auf einer elliptischen Kurve, und die Ergebnisse werden aneinandergeklebt und durch eine Hashfunktion geschickt (Kapitel 2). Was herauskommt, ist einfach ein AES-Schlüssel, und ab da bist du zurück bei Kapitel 4.

Signal ist hier 2023 auf PQXDH umgestiegen. Das ist dieselbe Konstruktion, aber das gemeinsame Geheimnis wird jetzt auf zwei Arten gleichzeitig berechnet: mit der klassischen Kurve X25519 und mit CRYSTALS-Kyber, einem Verfahren, von dem man annimmt, dass auch ein Quantencomputer nicht hindurchkommt. Wer das Geheimnis will, muss beides knacken. Signal hat das am 19. September 2023 angekündigt.

Der Schlüssel ändert sich bei jeder Nachricht

Ein einziges gemeinsames Geheimnis für eure ganze Freundschaft wäre eine schlechte Idee. Wer da jemals herankommt, liest alles: die Nachrichten von heute und die von vor drei Jahren. Deshalb wirft das Signal-Protokoll den Schlüssel nach jeder Nachricht weg und rechnet einen neuen aus. Dieser Mechanismus heißt Double Ratchet, die doppelte Ratsche.

Da drehen sich zwei Zahnräder ineinander. Das erste ist eine Kette von Hashfunktionen: Aus dem Schlüssel dieser Nachricht rechnest du den der nächsten aus, und diese Rechnung geht nur in eine Richtung — genau die Eigenschaft aus Kapitel 2. Das zweite Zahnrad ist ein frisches Diffie–Hellman: Jedes Mal, wenn eine Antwort kommt, schickt ihr beide eine neue öffentliche Hälfte mit, und die Kette fängt von vorne an.

Folge 1: Wer dein Handy heute knackt, kann gestern nicht lesen

Stell dir vor, jemand bekommt dein Gerät in die Hände und holt den Schlüssel heraus, der gerade darin steckt. Mit diesem Schlüssel kann er die nächste Nachricht entschlüsseln. Die vorige nicht, und die von letzter Woche erst recht nicht: Diese Schlüssel gibt es nicht mehr, und vom Schlüssel von jetzt zurück auf den von damals zu rechnen, heißt genau, die Hashfunktion umzukehren. Das nennt man Forward Secrecy, Vorwärtsgeheimhaltung. Es ist dasselbe Prinzip wie bei einer Ratsche: Du kannst die Zähnchen vorwärts zählen, nicht rückwärts.

Folge 2: Nach ein paar Nachrichten ist er den Schlüssel wieder los

Jetzt die andere Seite. Jemand hat deinen Schlüssel gestohlen und liest mit. Solange du nur sendest, bleibt das so — er dreht die Hashkette einfach mit vorwärts. Aber sobald dein Freund antwortet, kommt eine frische Diffie–Hellman-Hälfte mit, und darin steckt eine neue geheime Zahl, die der Mitleser nie gesehen hat. Ab diesem Moment stimmt seine Kette nicht mehr, und er ist draußen. Das nennt man Post-Compromise Security oder Selbstheilung: Das Gespräch heilt von allein, ohne dass jemand etwas merken oder tun muss.

Das ist der Unterschied zur Schlüsselkarte aus Kapitel 8.1. Dort hast du einen Schlüssel, der bleibt, und wer ihn zu fassen bekommt, hat ihn für immer. Praktisch, um zu verstehen, was passiert, unbrauchbar für ein Gespräch, das Jahre dauert.

Redest du auch wirklich mit deinem Freund?

Hier kommt die Lücke aus Kapitel 5 zurück. Diese ganze Mathematik sorgt dafür, dass nur du und die Besitzerin dieser öffentlichen Schlüsselhälften mitlesen können. Sie sagt nicht, dass diese Besitzerin dein Freund ist. Wer den Server besitzt, könnte dir seine eigenen Schlüsselhälften geben statt der deines Freundes, mit dir und mit ihm getrennt ein Gespräch führen und alles weitergeben. Ein Man-in-the-Middle, und ihr merkt nichts davon.

Deshalb kannst du es selbst prüfen. Aus deinem öffentlichen Schlüssel und dem deines Freundes rechnen die Apps gemeinsam eine einzige Zahl aus, und diese Zahl kannst du vergleichen. Stimmt sie auf beiden Seiten, sitzt niemand dazwischen. Es dauert zehn Sekunden, und fast niemand macht es.

SignalWhatsApp
Wie heißt es?Sicherheitsnummer (safety number)Sicherheitsnummer (security code)
Wo findest du es?öffne das Gespräch, tipp oben auf den Namen, wähl Sicherheitsnummer anzeigenöffne das Gespräch, tipp oben auf den Namen, wähl Verschlüsselung
Was siehst du?einen QR-Code und 60 Ziffern in 12 Gruppen zu fünfeinen QR-Code und 60 Ziffern
Wie vergleichst du?sitzt ihr nebeneinander: Eine scannt den QR-Code der anderen. Sitzt ihr nicht nebeneinander: lies die Ziffern am Telefon vorgenauso
Danachdu kannst den Kontakt mit Als verifiziert markieren bestätigen; im Kopf des Gesprächs erscheint ein Häkchenein grünes Häkchen bei einem geglückten Scan

Vergleicht nie über die App selbst. Wenn dort jemand dazwischensitzt, passt der die Ziffern einfach an. Macht es nebeneinander mit dem QR-Code, oder am Telefon, wo du die Stimme erkennst.

Springt deine Sicherheitsnummer plötzlich auf eine andere Zahl? Meistens heißt das, dass dein Freund ein neues Handy hat oder die App neu installiert hat — neue Schlüssel, neue Nummer. Aber es ist genau dasselbe Signal, das ein Man-in-the-Middle geben würde. Frag ihn, über einen anderen Kanal als diesen Chat.

Was der App-Hersteller trotzdem sieht

Den Inhalt nicht. Den Umschlag schon, und der ist mehr, als du denkst. Wer mit wem, um welche Uhrzeit, wie oft, wie lange ein Gespräch gedauert hat, von welcher IP-Adresse, mit welchem Gerät. Du musst keine einzige Nachricht lesen, um zu wissen, dass jemand um 02:14 Uhr eine halbe Stunde mit einem Bereitschaftsarzt telefoniert hat und am Tag danach dreimal mit seiner besten Freundin. Der Inhalt ist geheim; die Geschichte nicht.

An diesem Punkt unterscheiden sich Signal und WhatsApp wirklich, und der Unterschied liegt nicht in der Verschlüsselung — die ist bei beiden dasselbe Protokoll. Er liegt darin, was die Firma aufbewahrt.

SignalWhatsApp
Was haben sie schon einmal einer Richterin gegeben? das Datum, an dem das Konto angelegt wurde, und das Datum der letzten Verbindung. Mehr haben sie nicht. Name, Startdatum des Dienstes, zuletzt online, IP-Adresse, Gerätetyp, E-Mail-Adresse, deinen ‘Info’-Text, Profilbild, Gruppen und Kontakte — laut ihren eigenen Richtlinien für Behörden.
Wer redet mit wem? Signal verbirgt das mit sealed sender: Die Absenderin steckt mit im verschlüsselten Umschlag, der Server sieht nur die Empfängerin. der Server sieht, welche Nummer welcher Nummer schreibt, wann und wie lange.
Dein Adressbuch Signal bewahrt keine Kontaktliste, keine Gruppennamen und keine Profilnamen auf dem Server auf; sie liegen verschlüsselt da. gehört zu den Daten, die die Firma hat.

Signal ist eine gemeinnützige Organisation, die von Spenden lebt, WhatsApp gehört zu einer Firma, die von Werbung lebt. Das erklärt den Unterschied besser als jedes technische Argument: Metadaten aufzubewahren kostet Geld und bringt nur dann etwas, wenn man auch etwas damit macht.

Die Hintertür, die du selbst aufmachst: das Backup

Du kannst alles richtig machen und es trotzdem verschenken. Legst du deine Chats in ein normales Cloud-Backup, dann liegen sie dort lesbar. Nicht, weil die Verschlüsselung versagt hätte, sondern weil du selbst eine Kopie danebengelegt hast, die nicht darunter fällt. Wer an diese Cloud kommt, hat deine ganze Gesprächsgeschichte, und die schönste Ratsche der Welt ändert daran nichts.

WhatsApp nennt das verschlüsselte Backup in seiner eigenen Ankündigung eine zusätzliche, freiwillige Schicht, die du selbst einschaltest. Du findest es unter Einstellungen › Chats › Chat-Backup › Ende-zu-Ende-verschlüsseltes Backup. Du wählst dort selbst, womit du es abschließt: mit einem Passkey (deinem Fingerabdruck oder Gesicht), mit einem Passwort oder mit einem Schlüssel aus 64 Zeichen, den du abschreibst und aufbewahrst. Schau es auf deinem eigenen Gerät nach — es ist die eine Einstellung in diesem Kapitel, die du heute noch ändern kannst.

Wählst du das Passwort, dann landet der echte Schlüssel in einem gesicherten Tresor bei WhatsApp, der ihn erst freigibt, wenn das Passwort stimmt, und der die Zahl der Versuche mitzählt. Wählst du die 64 Zeichen, dann existiert der Schlüssel nur auf Papier bei dir. Das Zweite ist sicherer und unverzeihlicher: Verlierst du ihn, ist dein Backup weg, und niemand kann es zurückholen. Das ist kein schlechter Service, das ist es, was das Wort Ende-zu-Ende bedeutet.

Signal macht standardmäßig nichts mit der Cloud. Willst du trotzdem ein Backup, dann bekommst du einen Wiederherstellungsschlüssel aus 64 Zeichen, der auf deinem eigenen Gerät erzeugt wird und nie zum Server geht — dasselbe Prinzip, dieselbe Verantwortung.

Und das einfachste Leck von allen: der Bildschirm der anderen Person. Ein Screenshot, jemand, der im Bus mitschaut, oder ein Handy, das ohne Code auf dem Tisch liegt. Kein einziges Protokoll schützt gegen eine Nachricht, die einfach von jemandem gelesen wird, der da sein darf. Was das praktisch für dein Gerät selbst bedeutet, steht in Kapitel 7.6.

Das ist Mathematik: beweisen, dass ein Gespräch stimmt

Die Ratsche ist eine einzige lange Kette: k1 = H(k0), k2 = H(k1), und so weiter, mit H als Hashfunktion. Dass die Kette nur in eine Richtung läuft, ist keine Entwurfsentscheidung von Signal, sondern eine Eigenschaft von H. Alle Versprechen hier oben — Forward Secrecy, Selbstheilung — sind Folgen, die man aus dieser einen Eigenschaft herleitet.

Solche Herleitungen sind zu verwickelt, um ihnen von Hand zu trauen, denn ein Protokoll hat Dutzende Nachrichten, die in jeder Reihenfolge ankommen, verschwinden oder wiederholt werden können. Deshalb gibt es ein Fach, das Protokolle beweist, statt sie zu testen: Du schreibst das Protokoll als mathematisches Objekt auf, du schreibst auf, was ein Angreifer tun darf, und du leitest her, dass er nicht gewinnt. Für das Signal-Protokoll haben Katriel Cohn-Gordon, Cas Cremers, Benjamin Dowling, Luke Garratt und Douglas Stebila das 2017 getan, in einem Artikel mit dem Titel A Formal Security Analysis of the Signal Messaging Protocol.

Dieses Fachgebiet heißt formale Verifikation, und es sitzt auf der Grenze zwischen Logik und Informatik. Es ist das einzige Gebiet in der Sicherheit, in dem du nicht hoffen musst: Du hast einen Beweis, oder du hast keinen.