Material für den Informatikunterricht
Verschlüsseln mit Vigenère
Wer der Diplomat Blaise de Vigenère war, ist oft genug referiert worden. Daher hier nur die Anwendung.
Der Unterschied zur Caesar-Verschlüsselung besteht darin, dass man nicht nur ein Element als Schlüssel hat, sondern einen Schlüssel, der aus vielen Elementen besteht, die immer wieder durchlaufen werden. Beim Schlüssel aus den vier Elementen "4712" kann ein E mit I (= + 4 Stellen) mit L (= + 7 Stellen), mit F oder mit G verschlüsselt werden. Der Klartext "LIEBE ELTERN" wird dann nicht wie bei Caesar mit einer Verschiebung von + 5 zu "QNJGJ JQYJWS", wo man immerhin die vielen J als auffällig erkennt. Sondern mit dem Schlüssel "4712" wird daraus "PPFDI LMVIYO". Da sieht es mit dem häufigsten Buchstaben schon schwieriger aus. Beispielsweise wird aus L und I am Textanfang beide Male P, aber einmal L + 4 = P und einmal I + 7 = P.
Verschlüsseln mit Excel
Ich brauche - wie bei Caesar - den ANSI-Wert der Buchstaben, ich arbeite auch wie bei Caesar mit der Modulo-Rechnung, in Excel also mit der Funktion REST - und mit der relativen und aboluten (= konstanten, festen) Zellen-Adressierung durch Dollarzeichen sollte ich sowieso Bescheid wissen.
Wichtig noch: Es wird nicht das Alphabet verschlüsselt, sondern die Botschaft, der Klartext. Und die schon bei Caesar angesprochenen Vorsichtsmaßnahmen gelten weiterhin: Wortabstände löschen, deutsche Groß-/Kleinschreibung aufgeben, inhaltsbezogene Zeilenenden aufgeben, Standardformulierungen am Anfang und Ende weglassen.
Was man dann nur schaffen muss, ist der kreisförmige Lauf durch die Elemente des Schlüssels. Den Bezug darauf macht man einmal für alle Elemente des Schlüssels per Hand (Dollarzeichen!), markiert dann alle diese manuell adressierten Zellen und zieht sie per Mauszeiger nach rechts weiter, soweit eben die Botschaft reicht.
Für Ungeduldige hier die Excel-Datei.
Ein Word-Makro
Ernsthaft kann man mit diesem Logo-Programm natürlich keinen Blumentopf gewinnen - mit dem Word-Makro schon eher. Es arbeitet mit Vigenère. Wie baut man es ein?
- Den Code "codieren.txt" markieren, in den Arbeitsspeicher kopieren. Übrigens: Alles nach einem Apostroph oder nach "Rem" ist ein Kommentar.
- In Word anklicken: Extras → Makro → Makros; hier den Name "codieren" eingeben, dann Klick auf Erstellen. Es wird in Editor etwa Folgendes erstellt:
- Dies wäre Anfang und Ende eines Makros und einiger Kommentarzeilen. Dies alles löschen und den kopierten Code einfügen (Strg V).
- Klick auf Datei → normal speichern.
Klick auf Datei → schließen und zurück zu Word - Klick auf Extras → Anpassen; auf der Karte "Befehle" in "Kategorie" wählen: "Makros", rechts den Eintrag finden "TemplateProject.NewMacros.codieren" (oder ähnlich). Diese Zeile mit gedrückter linker Maustaste hinauf in die Zeile mit den Schaltflächen (Icons) schieben, dort loslassen.
- Rechtsklick darauf; anklicken "Standard", anklicken "Schaltflächensymbol ändern", dann aus der Symboltafel den Schlüssel anklicken. "Anpassen" schließen.
- Man könnte jetzt noch eine Beschreibung erfinden: → Extras → Makro → Makros; unten in der Beschreibung etwas formulieren, z.B. "codiert oder decodiert eine Datei", dann → Abbrechen.
- Ein paar Zeilen sinnvollen Text in ein neues Dokument schreiben. Die Makro-Schaltfläche, also den Schlüssel anklicken und entsprechend verfahren.
- Die Makro-Schaltfläche entfernen? → Extras → Anpassen; Schaltfläche mit gedrückter linker Maustaste irgendwohin auf das geöffnete Feld "Befehle" ziehen, loslassen. Den Makro aus "Normal.dot" (oder wo sonst er ist) entfernen? → Extras → Anpassen → Makro → Makros; dort "codieren" markieren und → Löschen.
- Welchen Schlüssel benutzt man denn nun? Als Schlüssel funktionieren hier nur Zahlen! Man nehme einen möglichst langen Schlüssel (mehr als 5 Stellen!) und benutze am Anfang und Ende des Textes keine Standardformulierungen wie "Liebe..." oder "Hallo...", denn darauf wird als Erstes geprüft, um den Code zu knacken. Den Schlüssel muss man einander telefonisch oder auf anderem Wege mitteilen.
Sub codieren() ' ' codieren Makro ' Makro erstellt am ... ' End Sub
Ver- und entschlüsseln ohne Schlüsselübergabe
Eines der Kryptographie-Probleme ist auch bei dem längsten und kompliziertesten Schlüssel, dass der Partner ja diesen Schlüssel haben muss, um wieder Klartext lesen zu können. Dazu gibt es zunächst einen Ausweg, der bei den Vorüberlegungen zur public-key-Technik gefunden wurde (in der heutigen Anwendung geht das Ganze ohne doppeltes Hin und Her - durch einen mathematischen Trick). Man kann diesen Ausweg schön mit dem Word-Codierungs-Makro nachstellen:
- Schritt: Alice verschlüsselt ihren Klartext mit ihrem Schlüssel, den nur sie und sonst niemand hat und kennt.
- Schritt: Sie schickt diesen Geheimtext an Bob.
- Schritt: Bob kann diesen Geheimtext nicht lesen. Er verschlüsselt diesen Geheimtext ein zweites Mal - und zwar mit seinem, nur ihm exklusiv bekannten Schlüssel.
- Schritt: Bob schickt diesen nun doppelt verschlüsselten Geheimtext zurück an Alice.
- Schritt: Alice entschlüsselt diesen Geheimtext mit ihrem Exklusiv-Schlüssel. Ergebnis ist ein Text, den sie nicht lesen kann (das braucht sie auch nicht, sie kennt ja den Klartext). Aber ihren Schlüssel hat sie aus dem Text entfernt.
- Schritt: Alice schickt diesen Geheimtext zurück an Bob.
- Schritt: Bob entschlüsselt den Geheimtext mit seinem Schlüssel. Er enthält den gewünschten Klartext.
Ergebnis: Geheimtextübermittlung ohne Schlüsselübergabe. Die Sache hat natürlich einen Haken: Wenn der Spion die verschiedenen Varianten abfängt (Schritte 2, 4 und 6) und sozusagen die Differenzen errechnet, dann hat er auch den oder auf die Dauer beide Schlüssel ...Das Problem ist aber bei RSA gelöst.
Schwächen in Klartext - Entschlüsselung durch Sprachanalyse
Die Enigma-Maschine der Nazis im 2. Weltkrieg wurde unter anderem auch deshalb geknackt, weil irgendwann herauskam, dass die damit verschlüsselten Botschaften an die deutschen U-Boote anfangs immer irgendwo das Wort "Wetter" enthielten. - Allgemein kann man folgende Schwächen auflisten, die es erleichtern, einen Schlüssel zu finden
- Worte wie im Klartext trennen: Das erleichtert die Suche nach zweibuchstabigen Worten, von denen es im Deutschen nicht unendlich viele gibt; im Englischen suche ich dann natürlich nach "I".
- Absatztrennungen; so finde ich eventuell Datumsangaben zu Beginn, Anreden am Anfang und Namen am Ende.
- Standartexte zu Beginn und am Ende: "Liebe", "Hallo", "...Gruß/Grüße" sind also tabu.
- Zahlen als Zahlen zu verschlüsseln ist ganz tabu, vor allem nicht am Anfang das Datum als eigene Zeile rechtsbündig. Dann ist für den Spion schon fast alles klar.
Eine Methode der Entschlüsselung, auch wenn ich den Schlüssel gar nicht kenne, ist die Sprachanalyse (linguistische Verfahren). Hier ein Beispiel.
Ein Rauschgift-Fahnder hat folgenden Geheimtext abgefangen:
OOO1O OO1OO 1OOOO 1O1OO OO111 1OOO1 111OO O1111 OO111 1O111 1O11O O1OOO 1O11O OOOO1 1O11O O1OO1 OO111 OO1OO O1OO1 1O11O 1OO11 O11O1 1OO11 O11O1 O1OO1 1O1O1 OOO1O O111O 11O11 OO1OO 111O1 11OO1 O1OOO OO111 11O11 O1111 OO11O 11OO1 OO111 O
Er lässt sich aber nicht entmutigen und er weiß auch einiges:
- Geheimtext wird oft in Blöcken von fünf Bits gruppiert, so auch hier.
- Es handelt sich dabei um Binärcode für Buchstaben.
- Dahinter steht in diesem Fall ein Klartext in deutscher Sprache.
- Im Klartext geht es um einen Millionenauftrag der Dealer.
Indem der Rauschgift-Fahnder die Fünferblöcke in Blöcke von sieben Bits umgruppiert, die dem ASCII-Code von Großbuchstaben entsprechen - warum sieben Bits? - entdeckt er folgende Bitfolge zweimal hintereinander: O11O11O (hier im Fettdruck). Die sachlich korrekte Gruppierung der Bits sieht nämlich so aus:
1) O.OO1.OOO 2) 1.OO1.OOO 3) O.1O1.OOO 4) O.111.1OO 5) O.111.1OO 6) O.111.1OO 7) 1.111.O11 8) 1.1O1.1OO 9) 1.OOO.1O1 10) 1.OOO.OO1 11) 1.O11.OO1 12) O.O1O.O11 13) 1.OO1.OOO 14) 1.OO1.1O1 15) 1.O1O.O11 I 16) O.11O.11O L 17) O.11O.11O L 18) 1.O1O.O11 I 19) O.1O1.OOO 20) 1.OO1.11O ? 21) 1.1O1.1OO ? 22) 1.OO1.11O ? 23) 1.11O.O1O 24) 1.OOO.OO1 25) 1.111.O11 26) O.111.1OO 27) 1.1O1.1OO ? 28) 1.OO1.11O ?
Wenn die Zeichenfolge (7 Bits) in der Mitte des Textes zweimal gleich ist, dann kann das in diesem Fall LL von "Million" sein. Wenn sich die 7 Bits davor und danach auch gleichen, dann könnten die beiden Blöcke jeweils das I sein, also in der Tat "Million". Wenn zwei Zeichen nach dem zweiten I eine Bitfolge vorkommt, die zwei Blöcke danach wieder vorkommt, dann würde N passen: "Millionen". Damit hätte ich dazwischen auch das E. Um wieviel Millionen geht es? Jedenfalls nicht um ein Zahlwort, das i und e enthält, denn in den Blöcken davor kommen I und E nicht vor. Also bleibt da nur das Zahlwort "acht". Damit hätte ich auch ein T. Der Text bis dahin: _TO____E_ACHTMILLIONEN_A__EN
Bis jetzt hat der Fahnder den Schlüssel überhaupt nicht benutzt, nicht gekannt, nicht geknackt. Er hat trotzdem schon einiges herausbekommen.
Textdateien verarbeiten
Logo ist kein Textverarbeitungsprogramm. Aber Dateien speichern und lesen kann es schon - mit ein paar Verrenkungen. Die erste Verrenkung besteht darin, dass die Textblöcke (das können Wörter oder ganze Absätze sein) durch ordentlichen Zeilenwechsel mit der Returntaste voneinander getrennt sein müssen. Dann programmiert man beispielsweise Folgendes:
LADELISTE "beispiel" "Laufwerk:\Pfad...\Dateiname.txt" WH ANZAHL :beispiel [DR ER :beispiel DR " " SETZE "beispiel" OE :beispiel]
Ergebnis ist der Text, in diesem Fall fortlaufend, aber statt der Zeilenwechsel mit Leerzeichen. Damit könnte man dann die Verschlüsselung betreiben...
© Michael Kraus, ab September 2008