Aufgabenstellung

Cäsar Chiffre

Die Verschlüsselung basiert auf der Cäsar-Chiffre. Sie ist eine der einfachsten und am weitesten verbreiteten Verschlüsselungstechniken. Das Alphabet wird um \(k\) verschoben, wodurch verschiedene Buchstaben miteinander verbunden werden. Das bedeutet, dass bei einer gegebenen Chiffre die Buchstaben immer einander entsprechen.

Important

Die Cäsar-Chiffre bietet heute im Wesentlichen keine Kommunikationssicherheit mehr.

../../../_images/01-caesar_cipher.svg

Fig. 52 Cäsar-Chiffre mit \(k = 3\) Quelle: Wikipedia

Aufgaben

Als erstes wir als Beispiel ein Cäsar Chiffrierung implementiert. Dies wird in mehreren Schritten durchgeführt:

  1. Kontrollieren ob der Character ein Buchstabe ist

  2. Suchen des Index des Buchstaben

  3. Inkrementieren oder dekrementieren des Indexes

  4. Suchen des neuen Buchstaben

Important

Gratulation Sie haben soeben eine Cäsar Chiffriermaschine entwickelt

Theorie Enigma

Bezeichnungen

  • Steckerbrett - der Steckbrett vor der Maschine, kann zwei verschiedene Buchstaben miteinander verbinden. Dies ist eine zusätzliche Verwirrungsebene

  • Rotoren - zwischen dem Steckbrett und dem Reflektor können die drei Rotoren links, mittig und rechts in eine bestimmte Position gebracht werden, um ein andere Vermischung zu erreichen

  • Reflektor - Der Reflektor empfängt die Signale des linken Rotors und sendet sie an ihn zurück, die Reflektor-Verschlüsselung kann nicht verändert werden. Er ermöglicht es der Maschine, zu kodieren und zu dekodieren, ohne irgendwelche Einstellungen zu ändern.

Algorithmus

Die Enigma-Maschine funktioniert auf ähnliche Weise wit der Cesar Algorithmus aber mit einer komplexeren Struktur.

../../../_images/01-enigma_diagram.jpg

Fig. 53 Enigma-Diagramm Quelle: Louise Dade

Einstellung

Um zu entschlüsseln, was eine andere Maschine verschlüsselt hat, muss Folgendes zutreffen:

  • Die gleiche Maschine mit der gleichen Anzahl und den gleichen Typen von Rotoren und Reflektoren.

  • Die Plugboard-Einstellungen müssen die gleichen sein.

  • Gleiche Startposition der Rotoren

All diese Informationen wurden täglich geändert, die genauen Einstellungen waren in einem monatlich herausgegebenen “Codeblatt” zu finden.

../../../_images/01-enigma_codesheet.jpg

Fig. 54 Codesheet WWII Source: Nazis

Rotor- und Reflektortypen

Während der Zeit, in der die Enigma verwendet wurde, gab es viele verschiedene Versionen mit unterschiedlichen Rotoren und Reflektoren. Von insgesamt 5 Möglichen Rotoren mussten jeden morgen 3 andere benutzt werden. Die Reflektoren änderten grundsätzlich nicht.

Schlüssel

Typ

Einrichtung

Verwendung

etw

Rotor ETW

ABCDEFGHIJKLMNOPQRSTUVWXYZ

Enigma I

i

Rotor I

EKMFLGDQVZNTOWYHXUSPAIBRCJ

1930 Enigma I

ii

Rotor II

AJDKSIRUXBLHWTMCQGZNPYFVOE

1930 Enigma I

iii

Rotor III

BDFHJLCPRTXVZNYEIWGAKMUSQO

1930 Enigma I

iv

Rotor IV

ESOVPZJAYQUIRHXLNFTGKDCMWB

December 1938 M3 Army

v

Rotor V

VZBRGITYUPSDNHLXAWMJQOFECK

December 1938 M3 Army

vi

Rotor VI

JPGVOUMFYQBENHZRDKASXLICTW

1939 M3 & M4 Naval (FEB 1942)

vii

Rotor VII

NZJHGRCXMYSWBOUFAIVLPEKQDT

1939 M3 & M4 Naval (FEB 1942)

viii

Rotor VIII

FKQHTLXOCBJSPDZRAMEWNIUYGV

1939 M3 & M4 Naval (FEB 1942)

a

Reflector A

EJMZALYXVBWFCRQUONTSPIKHGD

b

Reflector B

YRUHQSLDPXNGOKMIEBFZCWVJAT

c

Reflector C

FVPJIAOYEDRZXWGCTKUQSBNMHL

custom

Custom

as given by the user

Codegrösse

Die Codegrösse gibt die Anzahl an Verschlüsselungsmöglichkeiten an.

Die Formel der Gesamten Codemöglichkeiten ist wiefolgt:

\[(5*4*3)*26^3*\frac{26!}{6!*10!*2^{10}} = 158 962 555 247 826 360 000\]

Diese Formel wird untenstehend aufgesplitet und erklärt.

Walzenauswahl

Aus 5 Walzen werden 3 ausgewählt und beliebig platziert.

\(5*4*3 = 60\) WalzenKombinationsmöglichkeiten

Startposition der Walzen

3 Walzen von je 26 Möglichen Positionen

\(26^3 = 17576\) Walzen Startpositionen

Steckerbrett Kombinationen

Hier können jeweils 2 Buchstaben miteinander verbunden werden. Total waren 10 Steckerverbindungen möglich. 6 waren also unbenutzt

  • \(26!\) - Möglichen Kombinationsmöglichkeiten des Alphabets

  • \(6!\) - 6 Steckerverbindungen blieben unbenutzt

  • \(10!\) - Es gibt nur 10 Steckverbindungen durchzuführen

  • \(2^{10}\) - Verbinden A <=> Z ist das gleiche wie Z <=> A

\[ \frac{26!}{6!*10!*2^{10}} = 150 738 274 937 250\]

Demonstration

Als Demo können Sie sich das folgende Youtube Video anschauen.

Enigma Demonstration

Vorbereitung

Noch bevor Code geschrieben wurde, wurde ein Klassendiagram erstellt. Die Idee ist eine Klasse der EnigmaMaschine zu erstellen welche mehrere Scrambler-Objekte besitzt. Ein Steckerbrett, die Rotoren aber auch der Reflektor funktionieren im Prinzip das Sie verschiedene Buchstaben miteinander verbinden bzw vermischen (scramble). Obwohl Sie mechanisch anders aufgebaut sind ist die Funktionsweise die selbe.

../../../_images/01-enigma-flow.svg

Fig. 55 EnigmaMachine Datenfluss

Das Klassendiagram der Applikation:

../../../_images/01-enigma_classdiagram.svg

Fig. 56 Enigma Klassendiagramm

Scrambler

Als erstes werden wir die Klasse Scrambler schreiben.

../../../_images/01-enigma_scrambler_classdiagram.svg

Fig. 57 Scrambler Klassendiagramm

Important

Mit hilfe print() Befehlen müsst Ihr euren Code selber debuggen.

Enigma Machine

Das Klasse Scrambler ist nun geschieben und getestet.

../../../_images/01-enigma_enigmamachine_classdiagram.svg

Fig. 58 EnigmaMachine Klassendiagramm

Verschlüsselte Nachrichten Übermitteln

Als letzte Aufgabe schickt eurem Studienkollegen einen verschlüsselte Nachricht. Hierzu müsst Ihr Ihnen die verschlüsselte Nachricht aber auch das Setup übermitteln.

  1. Bereitet eine Nachricht und eine Enigma Konfiguration vor

  2. Verschüsselt die Nachricht

  3. Gebt eurem Kollegen die Nachricht sowie die Konfigurationsparameter

  4. Dekodiert die Nachricht welche Ihr von euerem Kollegen erhalten habt