# Chaocipher

Chaocipher ist ein symmetrisches Verschlüsselungsverfahren, das 1918 von John Francis Byrne entwickelt wurde. Byrne hielt den Algorithmus für nicht zu brechen. Bis zu seinem Tode versuchte er, Regierungsbehörden von seinem Verfahren zu überzeugen. Damit hatte er jedoch keinen Erfolg, denn er wollte den Algorithmus nicht offenlegen. Im Jahr 2010 spendete seine Familie die hinterlassenen Unterlagen des Erfinders an das National Cryptologic Museum (NCM) in Fort Meade. Dieses veröffentlicht das Verfahren.

## Funktionsweise

In seiner ursprünglichen Form hatte Byrne sein Verfahren als mechanisches Gerät geplant, es allerdings nie gebaut. Eine Version aus Holz und Pappe wurde von seinem Sohn angefertigt. Das Gerät besteht aus zwei nebeneinander liegenden Scheiben, an deren Umfang sich jeweils die 26 Buchstaben des Alphabets in veränderbarer Reihenfolge befinden. Die Scheiben sind drehbar gelagert und so miteinander verbunden, dass sich bei der Drehung der einen Scheibe in eine Richtung (im oder gegen den Uhrzeigersinn) die andere Scheibe gegenläufig mitdreht.
Das Prinzip von Chaocipher besteht darin, dass beide Alphabete nach jeder Ver- oder Entschlüsselung eines Buchstabens permutiert werden. Da diese Permutation vom vorher ver- bzw. entschlüsselten Buchstaben abhängt, handelt es sich bei diesem Verfahren um einen selbstsynchronisierenden Stromchiffre (englisch autokey cipher).

### Überblick

Obwohl der Einsatz von Chaocipher als Maschine gedacht war, kann das Prinzip mit untereinander stehenden Alphabeten für Klartext und Geheimtext nachvollzogen werden. Dabei steht das obere Alphabet für die linke Scheibe (den Geheimtext GT), und das untere Alphabet für die rechte Scheibe (den Klartext KT). Die folgende Darstellung zeigt einen möglichen Ausgangszustand für den Algorithmus, die Anordnung der Buchstaben in beiden Reihen/Scheiben stellt den Schlüssel dar.
Man beachte die Symbole + und *, die Byrne als Zenith und Nadir bezeichnete. Sie befinden sich bei beiden Alphabeten an Position 1 bzw. 14.
Zu Beginn sind linkes (oberes) und rechtes (unteres) Alphabet an ihren jeweiligen Zenith-Markierungen ausgerichtet. Die Verschlüsselung eines Klartextbuchstabens erfolgt sodann in drei Schritten. Diese Schritte werden solange wiederholt, bis alle Buchstaben des Klartextes verschlüsselt sind.
* Bestimme den Geheimtextbuchstaben der zum vorliegenden Klartextbuchstaben passt.
* Permutiere das Geheimtextalphabet.
* Permutiere das Klartextalphabet.
Um den entsprechenden Geheimtextbuchstaben zu finden, sucht man im rechten (unteren) Alphabet den Buchstaben des Klartextes. Der direkt darüber stehende Buchstabe des linken (oberen) Alphabetes ist der zugehörige Buchstabe des Geheimtextes. Verschlüsselt man in diesem Beispiel den Buchstaben A, so erhält man als Geheimtext den Buchstaben P (siehe Pfeil).

### Permutation des Geheimtextalphabets

Die anschließende Permutation erfolgt in vier Schritten:
* Verschiebe das gesamte linke (obere) Alphabet nach links so, dass sich der soeben gefundene Geheimtextbuchstabe an Position 1 (Zenith) befindet.
* Entnehme den Buchstaben an Position Zenith+1, also den Buchstaben rechts des Zenith aus dem Alphabet (dabei entsteht für den Moment eine Lücke).
* Verschiebe alle Buchstaben von Position Zenith+2 bis einschließlich Position Nadir (Zenith+13) nach links um eine Stelle.
* Füge den in Schritt 2 entnommenen Buchstaben in die Lücke bei Position Nadir (Zenith+13) ein.
Ausgehend vom oben dargestellten Ausgangszustand sehen diese Schritte wie folgt aus: Als erstes wird das Alphabet verschoben, bis der soeben gefundene Geheimtextbuchstabe P auf Position 1 (Zenith) steht.
Danach wird der Buchstabe bei Position Zenith+1 (E) entnommen.
Im dritten Schritt werden die Buchstaben von Zenith+2 (F) bis Nadir (Q) um eine Stelle nach links verschoben.
Zuletzt wird der entnommene Buchstabe (E) bei Position Nadir wieder eingefügt.

### Permutation des Klartextalphabets

Das Klartextalphabet wird ähnlich dem Geheimtextalphabet in fünf Schritten permutiert:
* Verschiebe das gesamte rechte Alphabet nach links so, dass sich der soeben gefundene Klartextbuchstabe an Position 1 (Zenith) befindet.
* Verschiebe jetzt das gesamte rechte Alphabet um eine weitere Stelle nach links.
* Entnehme den Buchstaben an Position Zenith+2 (auch hier entsteht dadurch eine Lücke).
* Verschiebe alle Buchstaben von Position Zenith+3 bis einschließlich Position Nadir (Zenith+13) nach links um eine Stelle.
* Füge den in Schritt 3 entnommenen Buchstaben in die Lücke bei Position Nadir (Zenith+13) ein.
Für das angegebene Beispiel sieht das rechte Alphabet nach Schritt 1 wie folgt aus:
Nun erfolgt das Verschieben um eine weitere Stelle nach links.
Als Nächstes wird der Buchstabe bei Position Zenith+2 (K) entnommen.
Im vierten Schritt werden die Buchstaben von Zenith+3 (G) bis Nadir (P) um eine Stelle nach links verschoben.
Zuletzt wird der entnommene Buchstabe (K) wieder eingefügt.
Nach diesen beiden Permutationen kann der nächste Buchstabe des Klartextes verschlüsselt werden. Wäre der nächste Buchstabe ein N, so müsste der dazugehörige Geheimtext U lauten.

### Entschlüsseln

Die Vorgehensweise beim Entschlüsseln eines Geheimtextes mittels Chaocipher ist nahezu identisch zu der beim Verschlüsseln. Basierend auf demselben Ausgangszustand der beiden Alphabete besteht der Unterschied lediglich darin, dass man statt des Klartextbuchstabens im rechten (unteren) Alphabet nun den Geheimtextbuchstaben im linken (oberen) Alphabet sucht und so den dazugehörigen Klartextbuchstaben erhält. Danach vollzieht man die oben genannten Schritte um beiden Alphabete zu permutieren und kann dann den nächsten Geheimtextbuchstaben und den entsprechenden Klartextbuchstaben finden.

## Entzifferung

Bekanntermaßen hielt der Erfinder von Chaocipher, John F. Byrne, sein Verfahren für „unbrechbar“ (englisch mathematically indecipherable). Tatsächlich gelang es lange Zeit niemandem, die von ihm veröffentlichten Geheimtexte zu entziffern. Dies lag jedoch vor allem daran, dass die Verschlüsselungsmethode unbekannt war. Ein klassischer Fall von Security through obscurity, also „Sicherheit durch Verdunklung“. Nachdem sich dies im Jahr 2010 geändert hatte, änderte sich auch schnell die Einschätzung der Sicherheit des Verfahrens, die spätestens im Jahr 2016 dann ins Gegenteil umschlug.
Es konnte nämlich gezeigt werden, dass Chaocipher eine Reihe von kryptographischen Schwächen besitzt, unter anderem die Anfälligkeit gegenüber Known-Plaintext-Angriffen (siehe auch: Crib). Anfällig zeigt sich Chaocipher auch, falls mehrere Geheimtexte vorliegen, die mit demselben oder ähnlichen Schlüsseln erzeugt wurden (siehe auch: Depth). Hier genügen bereits Texte mit einer Länge von 60 bis 80 Buchstaben zur Lösung, wobei sich der Koinzidenzindex als hilfreich erweist.
Neben den erkannten objektiven kryptographischen Sicherheitsmängeln von Chaocipher, weist es auch einige praktische Schwächen auf, die es für einen „Feldeinsatz“ wenig geeignet machen. Dazu gehört die oben erwähnte „Selbstsynchronisierung“ (autokey) mit der Folge, „dass ein einzelner Fehler bei der Übertragung, dem Empfang, der Verschlüsselung oder Entschlüsselung einer Nachricht dazu führen kann, dass die empfangende Seite die Nachricht überhaupt nicht entschlüsseln kann.“
Zusammenfassend lässt sich heute urteilen, dass Chaocipher lange Zeit von dem Mysterium profitiert hat, dass sein Erfinder durch die Geheimhaltung seines Algorithmus erzeugt hat. Etwas, das bei praktischer Anwendung nicht länger möglich gewesen wäre und das auch Kerckhoffs’ Prinzip widerspricht. Nach Offenlegung der Methode dauerte es nicht lange, bis ihre Schwächen erkannt und Angriffsmethoden entwickelt wurden.