Signal wird in der Krypto-Community hoch geschätzt, unter anderem, weil er einige nicht-triviale Herausforderungen mit Bravour meistert. Mit der jetzt veröffentlichten Doku kann man sich ein genaueres Bild davon machen, wie das passiert.
In den letzten Tagen haben die Entwickler rund um Moxie Marlinspike die bei Signal eingesetzten Krypto-Verfahren ausführlich dokumentiert. Die Software ist zwar Open Source, das heißt der Quelltext ist frei zugänglich. Doch die Details der Algorithmen erschließen sich erst mit guter Dokumentation richtig.
Das ist insbesondere deshalb interessant, weil Signal einige neue Krypto-Verfahren eingeführt hat, die die Sicherheit verschlüsselter Kommunikation wesentlich verbessern und damit den Stand der Technik neu definieren. Nicht umsonst setzen auch WhatsApp und Googles Allo diese Verfahren ein. Unter anderem beschreibt Signal mit X3DH ein asynchrones Schlüsselaustausch-Verfahren, bei dem die Teilnehmer nicht gleichzeitig online sein müssen und trotzdem Forward Secrecy gewährleistet bleibt.
Stand der Technik in Puncto Krypto
Forward Secrecy bedeutet in diesem Kontext, dass ein kompromittierter Schlüssel keinen Zugriff auf die in der Vergangenheit ausgetauschten Daten ermöglicht. Das geht zwar schon mit dem altbekannten Diffie Hellman; doch dabei müssen beide Partner Nachrichten austauschen und somit gleichzeitig online sein. Gerade bei einem Messaging-System möchte man aber auch dann eine verschlüsselte Nachricht absetzen können, wenn das Gegenüber (noch) nicht online ist.
Darüber hinaus definiert Signal mit dem Double Ratchet ein Verfahren für den Nachrichtenaustausch, bei dem die Kommunikationspartner nicht mit einem statischen Sitzungsschlüssel arbeiten, sondern nach jeder Nachricht den Schlüssel wechseln. Die dabei eingesetzten Key Derivation Functions gewährleisten ebenfalls ein Art Forward Secrecy, also insbesondere, dass ein Angreifer aus einem Schlüssel, den er sich irgendwie besorgen konnte, keine früheren ableiten kann.
Digitale Signatur mit ECC
Und schließlich setzt Signal als Ersatz für das angestaubte RSA auf digitale Signaturen auf Basis von Elliptischen Kurven. Dabei kommen nicht etwa die häufig kritisierten NIST-Kurven zum Einsatz sondern die erst kürzlich standardisierten Kurven Curve25519 von Dan J. Bernstein und Curve448 (Goldilocks-Kurve). Bei Signal heißt das dann XEdDSA and VXEdDSA.
Erste kürzlich hat ein internationales Forscherteam den eingesetzten Verfahren im Rahmen einer formalen Sicherheitsanalyse bescheinigt, dass sie tatsächlich ihre Sicherheitsversprechen einhalten. Wer möchte kann sich nun auch ohne mühselige Quellcode-Analyse ein Bild davon machen, wie das funktioniert. Doch Vorsicht: das ist immer noch harter Stoff:
- Schlüsselaustausch: The X3DH Key Agreement Protocol
- Nachrichtenaustausch und KDF: The Double Ratchet Algorithm
- Digitale Signaturen: The XEdDSA and VXEdDSA Signature Schemes