Bis
zum zweiten Weltkrieg wurden alle kryptographischen und kryptoanalytischen Probleme
per Hand oder mit Maschinen gelöst. Wir haben bis jetzt diese Algorithmen
lediglich auf einem Computer simuliert. Zwei der besten mechanischen Chiffriersysteme
in der ersten Hälfte des 20. Jahrhunderts waren die deutsche Enigma und
die Lorenz SZ40. Maßgeblichen Anteil an der Entschlüsselung der Enigma
hatte der britische Mathematiker Alan Turing. Neben Turings „Bomben“, mit denen
sie die Enigma knackten, entwickelten die Briten die Colossus, eine Maschine,
mit der sie die noch wesentlich stärkere Lorenz-Chiffre brachen. Diese
diente zur Verschlüsselung des geheimen Nachrichtenverkehrs zwischen Hitler
und seinen Generälen. Die Colossus selbst bestand aus 1500 elektrischen
Röhren, was ihr einen wesentlichen Geschwindigkeitszuwachs beim Dechiffrieren
von Nachrichten einbrachte. Wesentlicher jedoch war die Tatsache, dass sie programmierbar
war. Die Colossus kann so als Vorläufer der heutigen Computer gesehen werden.
Auf Grund des Geheimhaltungswahns wurden die Baupläne und die Maschine
selbst nach dem Krieg zerstört, so dass lange die 1945 entwickelte ENIAC,
bestehen aus 18000 Röhren, als Mutter aller Computer gesehen wurde.
Der wohl wichtigste Unterschied
zu mechanischen Chiffriersystemen besteht darin, dass Computer nicht mit Buchstaben,
sondern mit binären Zahlen, also einer Folge von Nullen und Einsen, arbeitet.
Jede Nachricht muss vor der Verschlüsselung also in Binärzahlen umgewandelt
werden. Zur Normierung dient u.a. der ASCII-Code (American Standard Code for
Information Interchange): Der Buchstabe a beispielsweise wird binär zu
01100001. Obwohl wir es mit Computern und Zahlen und nicht mit Maschinen und
Buchstaben zu tun haben, bleiben die alten Grundsätze der Transposition
und Substitution erhalten. Ein Baustein des Klartextes wird durch einen anderen
Baustein ersetzt oder zwei Bausteine tauschen ihre Positionen oder beides. Da
mit Computern auf binärer Basis gearbeitet werden kann, bietet es sich
dieser Stelle an, Sie mit bitweisen Logikoperatoren bekannt zu machen. Bei den
entsprechenden Operationen wird das erste Bit des ersten Operanden mit dem ersten
Bit des zweiten Operanden verglichen, dann Bit 2 mit Bit 2 usw. bis die gesamte
Binärzahl durchlaufen wurde. Anschließend wird das Ergebnis der einander
entsprechenden Bits zu einer neuen Zahl zusammengesetzt. In JavaScript existieren
4 bitweise Logikoperatoren:
| UND (AND) |
(&) |
Ergibt 1, falls beide Bits 1 sind. |
| ODER (OR) |
(|) |
Ergibt 1, falls beide Bits 1 sind. |
| XODER (XOR) |
(^) |
Ergibt 1, falls entweder das eine oder das andere Bit 1 ist. |
| NICHT (NOT) |
(~) |
Dieser Operator ist unär und negiert das Bit. |
Noch aussagekräftiger
ist die Wahrheitstafel für bitweise Logikoperatoren, A und B sind die Zustände
zweier Bits, in den nachfolgenden Spalten finden Sie die Ergebnisse der Verknüpfungen:
Logikoperationen
Die Dezimalzahl 15 ist als
Dualzahl 1111, die Dezimalzahl 7 lässt sich binär als 0111 darstellen,
eine Verknüpfung mit UND, ODER und XODER wirkt sich folgendermaßen
aus:
15
& 7 ergibt 7, denn 1111
& 0111 = 0111.
15
| 7 ergibt 15, denn 1111
| 0111 = 1111.
15
^ 7 ergibt 8, denn 1111
^ 0111 = 1000 und die Dualzahl 1000 ist dezimal die 8.
Bei
allen Darstellungen von Dualzahlen fangen wir immer rechts an zu lesen. Bei
der 6 wird dann z.B. wie folgt gerechnet:0 x 2
3 + 1 x 2
2 + 1 x 2
1 + 0 x 2
0,was 6 als Ergebnis liefert.
Sehen
wir uns nun ein Beispiel an, das einen Text XOR-verschlüsselt. Bei der
Ein- und Ausgabe belassen wir es bei den normalen Buchstaben. Diese werden zunächst
in den ASCII- (moderner und weiterführender Unicode-) wert umgewandelt
und schließlich binär ausgegeben. Nach der bitweisen XOR-Verknüpfung
werden die entsprechenden Unocodewerte und die Geheimtextbuchstaben angezeigt.
Dieses so vorgestellte Verfahren ist nicht sicherer als Cäsar, es soll
lediglich das Prinzip dargestellt. Verbesserungen könnten vorgenommen werden,
indem verschiedene Zufallswerte gebildet werden, die Zufallswerte nicht 8 Bit
lang sind (also nicht die gleiche binäre Länge wie die Buchstaben
besitzen) oder indem innerhalb der Buchstaben die Positionen der Bits untereinander
getauscht werden.
einfache XOR-Verschlüsselung
Programme:
xor1.html, xor2.html, xor3.html
Zunächst
blieb die computerunterstützte Chiffrierung auf Grund der immensen Kosten
für die ersten Geräte vornehmlich staatlichen Behörden und dem
Militär vorbehalten. Doch Computer wurden immer leistungsfähiger und
zugleich billiger. Immer mehr Unternehmen gingen dazu über, Transaktionen
und Geschäftsberichte zu verschlüsseln. Eine der wichtigsten Aufgaben
war die Schaffung eines Standards. Ein Kandidat für den Standard war ein
IBM-System namens Lucifer, entwickelt von dem Deutschen Horst Feistel. Lucifer
war jedoch so stark, dass die allmächtige National Security Agency NSA
einschritt, weil sie fürchtete, einen Verschlüsselungsstandard zu
schaffen, der über die eigenen Dechiffrierfähigkeiten hinausging.
Die Zahl der möglichen Schlüssel ist ein Hauptfaktor für die
Stärke eines Chiffriersystems, denn je größer die Zahl der möglichen
Schlüssel, desto länger braucht man, um den richtigen zu finden. Die
NSA beschränkte die mögliche Schlüsselzahl auf 56 Bit (eine Zahl
mit 56 Nullen und Einsen), um selbst mit den damals schnellsten Computern gerade
noch in den „geheimen“ Nachrichtenverkehr einbrechen zu können. Am 23.
November 1976 wurde Feistels Lucifer unter dem offiziellen Namen DES (Data Encryption
Standard) übernommen und ist auch heute noch der offizielle amerikanische
Verschlüsselungsstandard. Ein zweites Problem war die Schlüsselverteilung.
Am Anfang waren ganze Heerscharen von besonders vertrauenswürdigen Krypto-Treuhändern
mit dem Verteilen von Schlüsseln zuständig, da z.B. auch Banken dieses
System nutzen. Das kostete enorme Summen und stieß auch bald an logistische
Grenzen. Ein neues Verfahren des Schlüsselmanagements musste entwickelt
werden.