# Signal-Protokoll

Das Signal-Protokoll (ehemals Axolotl-Protokoll) ist ein kryptographisches Kommunikationsprotokoll für Ende-zu-Ende-verschlüsselten Nachrichtenaustausch, das im Bereich Instant Messaging als "Branchenstandard" gilt. Im Gegensatz zum verwandten OTR-Protokoll müssen beim Signal-Protokoll nicht beide Kommunikationspartner gleichzeitig online sein. Dies ist besonders bei Instant Messaging auf Smartphones wichtig.
Das Signal-Protokoll hat nicht nur die Verschlüsselung der Verbindung zum Ziel, sondern auch die Begrenzung des Schadens bei Kompromittierung eines der Teilnehmer. Würden zwei Benutzer zum Verschlüsseln von Nachrichten immer denselben Schlüssel verwenden, so könnte ein Angreifer, der in den Besitz des Schlüssels kommt, auch vorher gesendete Nachrichten entschlüsseln, falls er diese gespeichert hat. Um dies zu verhindern, werden zum Verschlüsseln kurzlebige Sitzungsschlüssel verwendet, die in einem besonderen, double ratchet genannten Verfahren häufig erneuert werden. Durch die Erneuerung der Schlüssel kann ein Angreifer, der einzelne Sitzungsschlüssel kennt, auch zukünftige Nachrichten nicht mehr entschlüsseln. Aufgrund dieser Eigenschaft bezeichnen die Entwickler das Protokoll als selbstheilend. Der ehemalige Name spielte auf den vom Aussterben bedrohten, aquatisch lebenden Schwanzlurch Axolotl an, der außergewöhnliche Selbstheilungsfähigkeiten besitzt.
Am 30. März 2016 gab Moxie Marlinspike bekannt, dass das damalige Axolotl-Protokoll zur Vermeidung von Missverständnissen in Signal-Protokoll umbenannt wurde. Er folgt damit der vorhergehenden Vereinheitlichung der Namen der heutigen Kommunikations-App Signal.

## Herkunft

Das Protokoll wurde von Trevor Perrin mit Unterstützung von Moxie Marlinspike (Open Whisper Systems) entwickelt und 2013 in TextSecure (heute Signal) eingeführt. Der Entwurf basiert auf der von Off-the-Record Messaging eingeführten Erneuerung von Sitzungsschlüsseln durch wiederholten Diffie-Hellman-Schlüsselaustausch (DH-Ratchet) kombiniert mit einer Schlüsselableitung mittels einer kryptologischen Hashfunktion (Hash-Ratchet) nach Vorbild des Silent Circle Instant Messaging Protocol (SCIMP).

## Eigenschaften

Das Signal-Protokoll gewährleistet die bei Ende-zu-Ende-Verschlüsselungssystemen seit langem üblichen Merkmale Verschlüsselung der Inhalte auf dem gesamten Transportweg sowie die Authentisierung der Gegenstelle und Absicherung gegen Manipulation der Nachrichten.
Es übernimmt die von OTR Messaging bereitgestellten Merkmale der rückwirkenden Folgenlosigkeit bei Offenbarung des geheimen Hauptschlüssels, Absicherung folgender Nachrichten nach der Offenbarung eines Sitzungsschlüssels und die glaubhafte Abstreitbarkeit der Urheberschaft an einer Nachricht. Zusätzlich erlaubt es, durch Verwendung einer Schlüsselableitungsfunktion auch ohne Interaktion mit der Gegenstelle das Sitzungsschlüsselmaterial zu erneuern. Ein weiterer Schlüsselableitungsschritt ermöglicht die folgenlose Vorhaltung von Schlüsseln für außer der Reihe eintreffende Nachrichten.
Es soll Umsortierung, Auslassung und Wiedereinspielung gesendeter Nachrichten entdecken und gegenüber OTR Messaging die Folgenlosigkeitseigenschaften verbessern.
In Kombination mit vorab erzeugten und von einer Public-Key-Infrastruktur (PKI) vorgehaltenen Einmal-Vorschlüsseln kann die Initiierung einer Gesprächssitzung in Abwesenheit der Gegenstelle (asynchrone Kommunikation) unterstützt werden. Die Nutzung mit Dreifach-Diffie-Hellman-Schlüsselaustausch (3DH) als initialem Schlüsselaustauschverfahren (zum Beispiel bei Signal) verbessert die Abstreitbarkeitseigenschaften.

## Funktion

Die zentrale Idee des Protokolls nannten die Entwickler double ratchet (von engl. ratchet: Sperrklinke). Wenn ein Teilnehmer nach einer empfangenen Nachricht zum ersten Mal wieder sendet, erneuert er das Sitzungsschlüsselmaterial durch einen Diffie-Hellman-Schlüsselaustausch, bei dem er einen eigenen neuen Schlüssel mit dem bereits bekannten Schlüssel der Gegenstelle kombiniert (Diffie-Hellman-Ratchet). Aus dem Sitzungsschlüsselmaterial werden mittels einer Schlüsselableitungsfunktion symmetrische Schlüssel abgeleitet. Da die Schlüsselableitungsfunktion auf einer Hashfunktion basiert, wird dieser Schritt Hash-Ratchet genannt. Diese Konstruktion erlaubt es, neue Schlüssel zu erzeugen, auch wenn die Gegenstelle nicht online ist.
Das Protokoll schiebt dazu bei jeder Nachricht eine von zwei Hash-Ratchets (eine zum Senden, eine für den Empfang) weiter, die auf Basis eines gemeinsamen Geheimnisses aus einer DH-Ratchet initialisiert wurden. Gleichzeitig versucht es, der Gegenstelle bei jeder Gelegenheit einen neuen öffentlichen DH-Wert zur Verfügung zu stellen und jedes Mal die eigene lokale DH-Ratchet weiterzuschieben, sobald ein neuer öffentlicher DH-Wert von der Gegenstelle eintrifft. Sobald ein neues gemeinsames Geheimnis zur Verfügung steht, wird daraus eine neue Hash-Ratchet initialisiert.
Das Signal-Protokoll nutzt als kryptographische Primitive

### für die DH-Ratchet

    Elliptic Curve Diffie–Hellman (ECDH) mit Curve25519. Seit 2023 wird zusätzlich das quantensichere Schlüsselkapselungsverfahren Kyber verwendet.

### für Nachrichtenauthentifizierungscodes (MAC, Authentisierung)

    Keyed-Hash Message Authentication Code (HMAC) auf der Basis von SHA-256,

### für symmetrische Verschlüsselung

    den Advanced Encryption Standard (AES), teils im Cipher Block Chaining Mode (CBC) mit Füllbits nach PKCS #5 und teils im Counter Mode (CTR) ohne Füllbits,

### für die Hash-Ratchet

    HMAC.

## Nutzung

Im Messenger Signal wird es auf Millionen Endgeräten genutzt. Ende 2013 wurde die Integration in die Textnachrichtenfunktion des unabhängigen Android-Betriebssystems CyanogenMod ab Version 11 bekanntgegeben, welches zu dieser Zeit 10 Millionen Nutzer zählte. Im November 2013 wurde es in das experimentelle asynchrone Nachrichtensystem Pond integriert.
Im September 2014 sorgte die Integration in WhatsApp für Schlagzeilen. Durch eine Kooperation mit Open Whisper Systems ist das Protokoll ab Version 2.11.448 in der Android-Ausgabe des Messengers enthalten.
Mit dem Aufgehen der Chatanwendung Silent Text in der Telefonanwendung Silent Phone mit der Veröffentlichung vom 28. September 2015 ersetzte Silent Circle das eigene Protokoll SCIMP durch das Signal-Protokoll. 2015 wurde im Rahmen eines Google-Summer-of-Code-Projektes eine Erweiterung zum Extensible Messaging and Presence Protocol (XMPP, „Jabber“) namens „OMEMO Multi-End Message and Object Encryption“ (OMEMO) entwickelt, welche die Signal-Ratchet integriert. Sie wurde im Android-Messenger Conversations eingeführt und im Herbst der XMPP Standards Foundation (XSF) zur Standardisierung vorgelegt. Daneben ist die Verwendung des Signal-Protokolls in G Data Secure Chat bekannt.
Seit Anfang April 2016 verschlüsselt WhatsApp systemübergreifend (Android, iOS, Windows Phone, Nokia S40, Nokia S60, Blackberry und BB10) den gesamten Nachrichtenverkehr mit dem Signal-Protokoll. Beim Facebook Messenger wird das Protokoll bei den optionalen „secret conversations“ verwendet, genauso wie bei Google Allo im „incognito mode“. Im Dezember 2023 gab Meta bekannt, dass die Ende-zu-Ende Verschlüsselung bei Chats mit 2 Teilnehmern nun standardmäßig aktiviert ist.
Sicherheitsexperten sehen aber auch hier Schwachstellen, wenn wie in genannten kommerziellen Produkten eigene Server verwendet werden. Insbesondere auch Nachrichten in Gruppenchats können trotz funktionierender Ende-zu-Ende-Verschlüsselung ausgelesen werden. Anwender müssten daher immer dem Dienstanbieter vertrauen. WhatsApp übernimmt zwar die zugrundeliegende Ende-zu-Ende-Verschlüsselung von Signal, setzt aber die darauf aufbauende Gruppenchat-Infrastruktur anders um. Ein Angreifer brauche dafür lediglich Kontrolle über den Kontrollserver des Messengers. Außerdem könne auch der WhatsApp-Besitzer Meta Platforms per US-Gesetz zu einer Offenlegung verpflichtet werden, womit Ermittlungsbehörden einen verdeckten Zutritt zu den entsprechenden Servern erhalten.