CCZwei

Aktuelles

Allgemeines

Priv@tes

Unterhaltung

Lallus

Visual Basic

PDA/PPC2002

Navigation

Mischmasch

Chat / Webcam

 

| impressum | feedback | g�stebuch | home |  

 

KRYPTOLOGIE

Auf 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:
Unter dem Link befindet sich ein Basicprogramm in VB6. Es muss die MSVBVM60.DLL auf dem Rechner installiert sein (entweder im Programmverzeichnis oder im WINDOWS\SYSTEM - Verzeichnis.

Das kleine Programm mit dem verschl�sselten Text laden (30 KB)
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.

___________________________________________

So, es ist so weit. Zwei Leser haben mir die L�sung geschickt und das versteckte Wort gefunden. Es lautet: KRYPTO. Doch wie kommt es zustande?

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.
Hinter dem heute wieder ein 32 usw. usw.

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.

___________________________________________

Doch bevor wir zu den steganografischen Raffinessen kommen, m�chte ich noch ein paar historische Schmankerl erz�hlen.

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.

___________________________________________

Die klassische Steganografie

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.
Dieser Buchstabe wird nat�rlich nicht komplett als Form versteckt, sondern wir nehmen das bin�re Abbild, das zu einem A geh�rt. Bekannterweise entspricht es einem ASCII - Wert von 65 und l�sst sich bin�r so darstellen: 0 1 0 0 0 0 0 1

Jetzt m�ssen wir es schaffen, einzelne Bildpunkte so einzustellen, dass wir sp�ter:
a) die Bildpunkte (horizontal und vertikal) wiederfinden.
b) dem Bildpunkt m�ssen wir den Wert 0 oder 1 entnehmen k�nnen.

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
anzahl = Len(Text2) * 8
For i = 1 To anzahl
ReDim Preserve hor(i)
ReDim Preserve ver(i)
nochmals:
hor(i) = Int(Rnd * breit)
ver(i) = Int(Rnd * hoch)
For j = 1 To i - 1
If hor(j) = hor(i) And ver(j) = ver(i) Then GoTo nochmals
Next j
List1.AddItem Format(hor(i), "00#") & " " & Format(ver(i), "00#")
Next i

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.

32 Bit Grafiktiefe einstellen !!!

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 i = 1 To Len(Text2)
zeichen = Asc(Mid(Text2, i, 1))

For j = 0 To 7
zaehler = zaehler + 1
farbe = 0
farbe = Picture2.Point(hor(zaehler), ver(zaehler))
rot = (farbe And vbRed)
gruen = (farbe And vbGreen) \ 256
blau = (farbe \ 256) \ 256

Select Case (zeichen And (2 ^ (7 - j)))
Case 0
If (rot And 1) Then rot = rot - 1
Picture2.PSet (hor(zaehler), ver(zaehler)), RGB(rot, gruen, blau)
Case Is <> 0
If (rot And 1) = 0 Then rot = rot + 1
Picture2.PSet (hor(zaehler), ver(zaehler)), RGB(rot, gruen, blau)
End Select

Next j
Next i

End Sub

Und jetzt die Routine zum Entschl�sseln:

Private Sub M_Bild_entschluesseln_Click()
For i = 1 To Len(Text2) * 8
farbe = Picture2.Point(hor(i), ver(i))
rot = (farbe And vbRed)
'gruen = (farbe And vbGreen) \ 256
'blau = (farbe \ 256) \ 256
If (rot And 1) = 1 Then binaer = binaer + "1" Else binaer = binaer + "0"
Next i
For i = 1 To Len(binaer) - 1 Step 8
For j = 0 To 7
If Mid(binaer, i + j, 1) = "1" Then zeichen = zeichen + 2 ^ (7 - j)
Next j
ent = ent + Chr(zeichen): zeichen = 0
Next i
Text3 = ent
End Sub

___________________________________________

C�sar und seine Offsetmethode

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.

Das Programm caesar_offset.exe laden (24 KB VB6 - File)

 
   

   © 2003 by Wolfgang Back •  [email protected]