Dieses Projekt ist das Thema ("Kryptanalyse der doppelten Spaltentranspositionschiffre") meiner Masterarbeit -- die Abschlussarbeit kann hier geladen werden.


Einleitung

Kryptologie, also die Verschlüsselung von Nachrichten, ist in der heutigen Zeit ein elementarer Bestandteil unseres Alltags geworden. Weder im öffentlichen noch im privaten Bereich kann auf die Anwendung kryptologischer Verfahren verzichten werden und sie spielen auch für das Militär eine wichtige Rolle.

Während heutzutage fast ausschließlich rechnergestützt gearbeitet wird, musste in den Jahrhunderten vor Entwicklung elektronischer Datenverarbeitung auf einfachere Verfahren zurückgegriffen werden. Eine wichtige Anwendung der Verschlüsselungstechnik im 19. und frühen 20. Jahrhundert war dabei der sogenannte Doppelwürfel (Übchi); ein Verfahren mit einer zweifach angewendeten Spaltentransposition. Dieses Verfahren ist von Hand durchführbar und bis heute ist kein Ciphertext-only Angriff bekannt geworden.

In dieser Arbeit wird erstmals eine lineare Kryptanalyse auf das Verfahren durchgeführt. Aus diesen Erkenntnissen wird eine Anwendung implementiert, die einen automatisierten Known-Plaintext Angriff auf die Verschlüsselung ermöglicht. So lässt sich bereits mit einem Bruchteil des Klartextes der Schlüssel zurückrechnen. Eigenschaften, die der Chiffre ursprünglich ihre Sicherheit garantieren sollten, werden hier ausgenutzt um das Verfahren zu brechen.


Verschlüsselung

Die Funktionsweise der Verschlüsselung wird nun an einem Beispiel demonstriert. Zunächst benötigen wir einen Klartext, der verschlüsselt werden soll. Der Klartext lautet an dieser Stelle:
HALLODASHIERISTEINLANGERBEISPIELTEXTUMDASVERFAHRENZUZEIGEN
Ebenso werden zwei Schlüssel benötigt. Als ersten Schlüssel verwenden wir NOTEBOOK, dessen Länge 8 beträgt. Nun wird der Klartext zeilenweise in ein Rechteck eingetragen, dessen Breite von der Länge des angewendeten Schlüssels bestimmt wird. Die Höhe des Würfels (also die vertikale Seitenlänge) ist abhängig von der Länge des verwendeten Textes.
Wie zu sehen, ist die letzte Zeile nicht vollständig gefüllt. Dies ist nur dann der Fall, wenn die Schlüssellänge ein ganzzahliger Teiler der Klartextlänge ist. Anschließend wird der Schlüssel der Chiffre alphabetisch sortiert. Es muss sich dabei um eine stabile Sortierung handeln, was bedeutet, dass die Reihenfolge der Spalten bewahrt wird, sofern dessen Schlüsselzeichen identisch sind. Es werden allerdings dabei nicht nur die Schlüsselzeichen vertauscht, sondern auch die darunterliegende Spalte. Dieser Eigenschaft verdankt die Spaltentranspositionschiffre ihren Namen.
Wie zu erkennen, hat sich die Position der Lücken verändert - dies kann allerdings ignoriert werden. Andernfalls wäre das Auffüllen mit Füllzeichen möglich, die nicht im Klartextalphabet enthalten sind, wobei diese am Ende auch wieder entfernt werden können. Essentiell für den Doppelwürfel und der nächste Schritt, ist das spaltenweise Auslesen der entstandenen Matrix. Das Ergebnis wird also nicht in Lesereihenfolge entnommen, sondern spaltenweise.
Hierbei werden die resultierenden Zeichen (falls noch nicht geschehen) in Großbuchstaben verwandelt und in 5er-Blöcke gruppiert. Dies soll die Lesbarkeit der Chiffrierten Nachricht erhöhen. Ebenfalls werden die entstandenen Lücken der letzten Zeile nicht berücksichtigt: OINPU FZLRA STRUS ERLAR GHHIB TSEEA INEEV NNDSG IMAEA TEEDH ILELI XEZ Zusammenfassend wurden der Klartext eingetragen, die Spalten in Abhängigkeit eines Schlüssels vertauscht und das Ergebis spaltenweise ausgelesen. Um die Sicherheit der Chiffre zu verstärken, muss dieser Vorgang - unter Verwendung eines zweiten unabhängigen Schlüssels - erneut durchgeführt werden. In diesem Beispiel verwenden wird den Schlüssel DECKEL und es ergibt sich ein neues Rechteck der Breite 6. Der Klartext der zweiten Runde, ist der Chiffretext der ersten und dieser wird zeilenweise in den Würfel eingetragen. Anschließend wird erneut die Spaltentransposition durchgeführt, wie sie bereits für die vorherige Runde beschrieben wurde.
Nachdem der Würfel spaltenweise permutiert wurde, kann man das Ergebnis der zweiten Runde auslesen. Wie zuvor wird erneut spaltenweise vorgegangen, um den resultierenden Chiffretext zu gewinnen.
Der Klartext wurde nun erfolgreich in den Chiffretext NRSGS ESAIE OZRAB INADI ILURT NDEHX USRHE VIEEP AEHEE GTLZF TLIAN MEL verschlüsselt und kann übermittelt werden.

Entschlüsselung

Nun soll der entstandene Chiffretext wieder entschlüsselt, also in den Klartext verwandelt werden. Dabei werden die Schritte der Verschlüsselung rückwärts ausgeführt. Während der Durchführung der Verschlüsslung wurde gezeigt, dass in der letzten Zeile der Matrix Lücken entstehen bzw. die Matrix nicht vollständig gefüllt ist. Aufgrund der daraus resultierenden Verschiebung gestaltet sich der Vorgang der Entschlüsselung etwas weniger intuitiv, ist jedoch trotzdem verlustfrei durchführbar. So muss zunächst ein leerer Würfel der zweiten Runde aufgestellt werden, wobei die nicht verwendeten Stellen der letzten Zeile (der Rest) unkenntlich gemacht werden müssen:
Nun kann der Chiffretext spaltenweise in die Matrix eingetragen werden. Die Reihenfolge der Eintragung entspricht der Reihenfolge der Schlüsselzeichen im Alphabet. Das Entschlüsselungsergebnis der ersten Runde ist das zeilenweise Auslesen des entstandenen Würfels.
Analog kann dieser Vorgang für die zweite Entschlüsselungsrunde mit dem ersten Schlüssel der Verschlüsselung durchgeführt werden. Wichtig ist hierbei erneut, dass die Spalten mit Überlänge bzw. die Spalten mit fehlenden Feldern in der letzten Zeile beachtet werden. Als Resultat kann der Klartext nun wieder zeilenweise aus dem Würfel entnommen und gelesen werden.

Software zur Kryptanalyse

Mit dieser Anwendung kann ein Known-Plaintext Angriff auf die Verschlüsselung gefahren werden. Mit bekanntem Klar/Chiffretextpaar sollen die zwei Permutationen ausgerechnet werden. In vielen Fällen genügt bereits ein Teil des Klartextes um ein eindeutiges Ergebnis zu erhalten.


Hier geht's zum Applet

Hinweis: Da der Zugriff auf die Zwischenablage bei unsignierten Applets nicht funktioniert, wurde das Programm mit diesem Zertifikat unterschrieben (SHA1: c46b6c1d2b9cc573c18b50a4a257e38b4a340751) und muss (abhängig von den Sicherheitseinstellungen) vorher installiert werden. Alternativ kann das Programm hier heruntergeladen und ausgeführt werden. Seit den letzten Java-Versionen funktioniert ein Applet ohne gültige Signatur nicht mehr; herunterladen und ausführen funktioniert natürlich weiterhin.


Beispiele

Die Klar- und Chiffretextpaare können nun in das Programm kopiert werden. Anschließend wird die Schlüssellänge über die zwei Slider festgelegt. Alternativ kann auch die passende Schlüssellänge automatisch gesucht werden - führt jedoch zu einer Erhöhung der Laufzeit.

Klartext

Chiffretext

Schlüssel


Klartext

Chiffretext

Schlüssel



Hinweis: Der erste Satz des Klartextes genügt um in ca. 1 Minute ein eindeutiges Ergebnis zu bekommen. Mit nur den ersten fünf Wörtern wird der Schlüssel in ca. 20 Minuten wiederhergestellt.

Klartext

Chiffretext

Schlüssel



Hinweis: Die Laufzeit beträgt bei vollem Klartext ca. 30 Sekunden und bei der Hälfte des Klartextes ca. 2 Minuten. Mit einem Fünftel des Klartextes wird der Schlüssel in ca. 30 Minuten berechnet.


Weitere können über das Cryptool erstellt und getestet werden. Aus Kompatibilitätsgründen wird empfohlen, die Zeilenumbrüche vor der Verschlüsselung zu entfernen.

Quelltext

Der Sourcecode der Anwendung kann hier heruntergeladen werden und steht unter GNU GPLv2.

© Tim Wambach <tim[at]wambach[dot]eu>, 2011