|
|
|
KRYPTOLOGIEAuf dieser Seite soll es kryptisch hergehen. Die Kryptologie ist eines der spannendsten Themen der Mathematik. Der Einfallsreichtum, mit dem man hier Ideen und Verfahren entwickelt hat, ist immens. Es scheint daher zu den Grundbedürfnissen des Menschen zu gehören, Gedanken und Ideen zu verstecken, so dass nicht jeder mitlesen kann. Hier beginnen wir mit einem recht einfachen Verfahren und dennoch muss man auf die Lösung erst einmal kommen. In einem normalen Text mit normalen Buchstaben ist eine zusätzliche Botschaft versteckt. Das kann man auf verschiedene Weise machen: wenn man festlegt, dass man den 3., den 11., den 17. usw. Buchstaben meint, so muss man lediglich den Text danach ausrichten. So ist es bei diesem Beispiel nicht. Hier kann ein beliebiger Text genommen werden, der dann quasi unsichtbar mit einer zusätzlichen Botschaft versehen wird.
Nicht zu viel der vielen Worte - Taten müssen her:
![]()
Die Runtimebibliothek MSVBVM60.DLL laden (1.4 MB) Was ist zu tun? Wer herausfindet, welches Wort in dem Text versteckt ist (6 Buchstaben, alle Buchstaben groß geschrieben), der kann dieses Wort in das Codefenster eingeben. Dann werden die Knöpfe verschlüsseln und entschlüsseln aktiv. Man kann dann auch andere Worte zur Verschlüsselung eingeben. Wer es nicht herausfindet, der muss warten. Irgendwann in den nächsten Tagen gebe ich das Codewort frei und man kann dann mit dem Programm spielen. Vielleicht staunen Sie ja, wie blöd die Lösung letztendlich ist.
Ausgenutzt habe ich hier, dass bei im Windowszeichensatz ein zweites Leerzeichen vorhanden ist. Das normale Leerzeichen (Space) hat ja bekanntlich den ASCII-Wert 32. Bei ASCII 160 gibt es ein zweites Leerzeichen, das sich im Aussehen zum ersten nicht unterscheidet. Will man also geheime Texte in einem harmlos aussehenden Normaltext verstecken, so kann man beide Leerzeichen zur Codierung nutzen. Das erste Zeichen (Chr(32)) ist dann die binäre 0, das zweite Zeichen (Chr(160)) entspricht dann der binären 1. Es könnte natürlich genausogut andersherum sein. Zur Verdeutlichung habe ich unten einmal den Text aus der Aufgabe in einen Hexeditor eingeladen:
Jetzt kann man den Trick erkennen. In der ersten Reihe erkennen wir, dass das Leerzeichen
hinter dem Das einen Hexwert von 20 besitzt. Hex 20 ist 32 dezimal.
Hinter dem war entdecken wir ein Leerzeichen mit hex A0 oder dezimal 160.
Das entspricht dem zweiten angesprochenen Leerzeichen. Und so geht es jetzt weiter. Alles, was einer binären 0 entspricht ist 32, alles, was einer binären 1 entspricht ist 160. Natürlich könnte man in der Raffinesse noch weitergehen: das Lösungswort könnte weiter verschlüsselt werden. Das soll aber hier nicht Bestandteil des Rätsels sein. Es soll hier nur gezeigt werden, dass man in harmlose Texte geheime Botschaften einschmuggeln kann, die ein Unbedarfter nicht als manipulierten Text erkennt. Andererseits sollte man nicht darauf hoffen, dass niemand diese Verschlüsselungsmethode zurückverfolgen kann. Profis können sehr schnell solche Manipulationen entdecken - wie auch das Beispiel zeigt, dass ich immerhin zwei Lösungen von Lesern erhielt. Ich nehme an, dass diese Lösungen nicht vom Geheimdienst stammten. Mit dem Lösungswort KRYPTO können Sie jetzt auch das kleine Basicprogramm beddienen. Gegen Sie dieses Wort in das Codefenster ein und die beiden Knöpfe 'Verschlüsseln' und 'Entschlüsseln' werden aktiv. Sie können dann auch einen eigenen Text eingeben und ihn mit einem eigenen Codetext verschlüsseln lassen. Aber denken Sie an das Prnzip: Es müssen genügend Leerzeichen vorhanden sein. Es müssen mindestens 8 mal so viele Leerzeichen im Text sein, da jeder Buchstabe des Codewortes 8 Bit hat. Muss auch nicht sein, werden jetzt einige sagen: wenn ich KRYPTO nehme, so sind dies ja nur Grossbuchstaben, die man mit 7 Bit darstellen kann. Richtig! Gut gespart. Diese Methode der Verschlüsselungstechnik - auch wenn sie wohl kaum einen praktischen Wert besitzt, gehört zu den sogenannten steganografischen Methoden. Darunter zählt man alle Verfahren, die nach aussen öffentlich zugänglich sind und denen man die Art der Verschlüsselung nicht ansehen kann. Interessanter wird es dann in den nächsten Etappen: In Bildern und Tönen lassen sich steganografisch relativ grosse Datenmengen verstecken. Es wird dann z.T. auch für den Geheimdienst problematisch, solche Verschlüsselungsmethoden zu erkennen und zu dekodieren.
Die ersten Steganografen sollen die alten Römer gewesen sein, die sich offenbar vieles ausdachten, um Botschaften in ihrem großen Reich geheim hin und her transportieren zu können. Wenn man von den verrückten Ideen erfährt, so muß man wirklich davon ausgehen, dass noch mehr Zeit bei den Leuten vorhanden war. Aber kommen wir zu einem Beispiel, das ich frei erfunden habe: Der römische Kaiser will seinem Statthalter in Colonia agrippina (Köln) mitteilen, dass er 5000 neue Soldaten in den nächsten Monaten bekommt, um den Schutz gegen die Germanen zu perfektionieren. Dieses darf natürlich niemand wissen. Vor allem der Feind sollte nichts mitkriegen. Was machte man damals? ein Fax schicken? einen Reiter mit einem Brief losjagen? Einem Boten die geheime Botschaft ins Ohr flüstern? Alles viel zu gefährlich. Dem Reiter hätte man den Brief abnehmen können, den Boten hätte man mit der Folter erpressen können - und das Fax? na ja lach - lach. Wenn die Story stimmt, so ist man tatsächlich so verfahren: einem Krieger wurden in Rom die Haare abgeschnitten und die geheime Botschaft wurde in die Kopfhaut eintätowiert. Dann ließ man die Haare wieder wachsen - man hatte ja Zeit. Jetzt konnte der Krieger mit Marschbefehl gen Köln losgeschickt werden. Steganografie pur: jedermann konnte den Krieger betrachten und niemand ahnte etwas von seiner besonderen Verwendung. In Köln angekommen, konnte man das Geheimnis lüften. Der Kopf wurde kahlrasiert und die Botschaft kam zum Vorschein. Man kann sich durchaus vorstellen, dass dies eine gangbare Methode war. Zum einen gab es genügend Menschenmaterial, die man für so eine einmalige Aktion benutzen konnte, zum anderen hatte man sehr viel mehr Zeit. Ob dieser Krieger unter seinem Federbusch eine Tätowierung trug, ist unklar.
![]()
Jetzt wollen wir uns den etwas raffinierteren Methoden zuwenden. In einem Bild soll eine geheime Botschaft
versteckt werden.Dazu müssen wir ein klein wenig ausholen. Die Botschaft soll am Anfang nur ein Buchstabe sein,
um den Überblick zu wahren. Sagen wir, wir wollen ein A verstecken.
Jetzt müssen wir es schaffen, einzelne Bildpunkte so einzustellen, dass wir später: zu a) ist es relativ einfach eine Lösung zu finden: wir ziehen aus einem Angebot von Punkten die notwendigen (horizontal und vertikal) Pärchen. Natürlich dürfen die Werte nur einmal vorkommen. Dafür wird der Randomizer bemüht. Er zieht zufällig die Wertepärchen. Danach wird auf Einmaligkeit geprüft. Der Randomizer wird am Anfang auf einen bestimmten Wert gestellt, hier auf schluessel
Wer selbst programmiert, der freut sich vielleicht über den Quellcode, der diese Pärchen zieht.
randomize schluessel
Jetzt existieren zum Verschlüsseln des Buchstabens A 8 Positionspärchen.
Etwas komplizierter wird es mit dem Verstecken der Information 0 oder 1. Bei einem
monochronem Bild (nur Schwarz-weiss) wäre es nicht möglich, die Information einzubringen,
ohne dass ein Betrachter etwas davon mitkriegen würde. Plötzlich wären weiße Punkte dort,
die vielleicht eine binäre 1 repräsentieren sollen, wo sie absolut nicht hingehören.
Wir müssen uns andere Bilder nehmen, bei denen die Manipulation nicht auffällt. Das
Programm, da anschließend angeboten wird, benötigt sogar eine Einstellung der Grafikkarte
auf 32 Bit. Daran denken, wenn Sie das Programm ausprobieren wollen.
Bewegt man sich mit den Bildern in solchen Kategorien, so kann man unglaublich viel fuschen,
ohne dass es nach aussen sichtbar wird. Wenn Sie sich ein bisschen in der Farbtheorie
auskennen, so können Sie sich dies vor Augen führen: Arbeitet mit den sogenannten
RGB (rot-grün-blau) - Werten, so wird die Farbe weiß=RGB(255,255,255) dargestellt.
Es ist für das Auge nicht erkennbar, wenn ich im Rotbereich oder in den anderen Farbbereichen
aus der 255 eine 254 mache. Ein Wert RGB=(254,255,255) ist für unser Auge genauso weiß
wie der Wert RGB(255,255,255).
Dieses kann man bei der Steganografie nutzen, um die Daten zu verstecken. Folgendes Verfahren
wird eingehalten:
Welchen binären Wert will ich verstecken? Eine 1 oder eine 0? Sagen wir eine 1.
An der Position wird die Farbe gemessen. Wie sieht der Rotwert aus?
Wie sieht das letzte Bit des Rotwerts aus? Ist er 1, so bleibt es so, ist er 0, so wird auf den Rotwert
eine 1 addiert. Jetzt ist der rote Positionswert 1 und repräsentiert die geforderte binäre 1.
So geht es weiter mit den binären Nullen und Einsen. Bei dem Programm geht das ruckzuck. Es ist jedoch
240 KByte gross, da ein hochaufgelöstes Bild mit abgespeichert ist.
Das Programm laden (240 KB VB6 - File)
Das Programm ist in VB6 geschrieben und benötigt die Runtimebiliothek MSVBVM60.DLL (1.4 MB).
Ladbar unter Visual Basic.
Ich gehe davon aus, dass einige mehr wissen wollen, wie man so etwas programmiert. Deshalb sind hier die wichtigsten
Routinen einmal herausgeschrieben:
Zunächst die Routine zum Verschlüsseln.
Private Sub M_Text_verschluesseln_Click()
For j = 0 To 7
Select Case (zeichen And (2 ^ (7 - j)))
Next j
End Sub
Und jetzt die Routine zum Entschlüsseln:
Private Sub M_Bild_entschluesseln_Click()
Julius Cäsar war sicherlich ein grosser Feldherr vergangener Tage. Neben seinen militärischen
Arbeiten kümmerte er sich auch um andere Dinge, die nur mittelbar mit der Kriegsführung zu tun hatten.
Seine Verschlüsselungsmethode ist bekanntgeworden und sie gilt als eine elementare Methode des
Altertums. Heute wäre sie überhaupt nicht mehr zu gebrauchen, da jeder Hacker die Methode in Sekundenschnelle
durchschauen würde.
Für die damalige Zeit, in der kaum jemand lesen konnte, mag die einfache Verschlüsselung per Verschieben von
Buchstaben absolut sicher gewesen sein.
Das Prinzip ist einfach: man nehme einen Buchstaben, z.B. A. Man zähle 3 Stellen des Alphabets hinzu und man erhält
den Buchstaben D. Entsprechend stellt sich ein B als E dar. Bei einem X wären dann Y,A,B an der Reihe.
Offensichtlich war dieses Verschlüsselungssystem so gut, dass die Nachfolger den Offset gar auf 1 verringert
haben sollen. Meinte man ein A, so hat man ein B geschrieben usw..
Es ist eigentlich unglaublich, dass man mit solchen Methoden im Altertum noch Erfolg haben konnte. Um einmal
das Aussehen so verschlüsselter Texte anzuschauen zu können, ist das untenstehende Programm ladbar.
|
||
© 2003 by Wolfgang Back info@wolfgang-back.com |