Chaocipher
# 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 Byrne erfolglos, Regierungsbehörden von seinem Verfahren zu überzeugen, da er nicht die Absicht besaß, Einzelheiten des Algorithmus der Öffentlichkeit zugänglich zu machen. Im Jahr 2010 spendete seine Familie die hinterlassenen Unterlagen des Erfinders an das National Cryptologic Museum in Ft. Meade, U.S.A., wodurch der Algorithmus erstmals öffentlich gemacht wurde.

## 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.

### Ü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 bezeichnet. Sie befinden sich bei beiden Alphabeten an Position 1 bzw. 14.

Zu Beginn sind linkes und rechtes 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 Alphabet den Buchstaben des Klartextes. Der direkt darüber stehende Buchstabe des linken 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 Permutation erfolgt in vier Schritten:

* Verschiebe das gesamte linke 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 Alphabet nun den Geheimtextbuchstaben im linken 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.

