Die Computer kommen!

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
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 23 + 1 x 22 + 1 x 21 + 0 x 20,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
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.

zurück Gliederung vor