Steganographie
von Alexandra Weikert
Schon früher wurden steganographische Verfahren verwendet um Nachrichten in unverfänglicheren Informationen zu verstecken. So kann man z.B. mit Zitronensäure einen Brief unsichtbar zwischen die Zeilen eines ganz anderen Briefes schreiben und die Schrift später mit Wärme wieder sichtbar machen. Oder man kann bestimmte Worte des unverfänglichen Briefes mit Nadelstichen markieren, die dann natürlich nur gegen Licht zu entdecken sind. Eine andere Methode ist in der"Geschichte zweier Städte" von Charles Dickens beschrieben. Die Frauen in der Geschichte stricken Informationen in linke und rechte Maschen ein - anstatt der Werte 0 und 1 als Bitwerte. Heute gibt es elektronische Methoden, die hier beschrieben werden.
Warum sollte man heute mit Steganographischen Verfahren arbeiten?
Die Verschlüsselung von Daten gerät durch Mißbrauch (für Kinderpornographie, Terrorismus oder generelle Kriminalität) zunehmend unter Beschuß. Das sollte aber kein Grund sein, auf Verschlüsselung zu verzichten, sondern eher einer dafür, verschlüsselte Daten zu verstecken.
Welche Bedingungen sollte ein solcher Algorithmus erfüllen?
1. Keine offensichtlichen Veränderungen der Trägerdaten, d.h. die versteckten Daten sollten nur minimal wahrnehmbar sein. Im Prinzip muß man den Betrachter von den Daten ablenken, auch wenn diese nicht sichtbar sind - wie ein Zauberer, der vor unseren Augen ein Kaninchen verschwinden läßt, obwohl wir genau wissen, daß es sich nicht in Luft auflösen kann.
2. Die vesteckten Daten sollten allen Veränderungen wiederstehen, egal ob durch Rauschen, Filtern, Verschlüsselung, unscharfe, d.h. verlustbehaftete, Kompression, Verkleinerung des Trägermaterials, Drucken, oder durch Umwandlung in andere Dateiformate.
3. Das Verschlüsseln der Daten mit asymmetrischen Verfahren (RSA, PGP) vor dem Verstecken ist erwünscht. Das versteckt die Daten besser, da nach dem Verschlüsseln ein"weißes Rauschen" übrig bleibt, macht sie aber deshalb nicht schwerer zugänglich (aber selbst wenn sie gefunden werden, sind sie immer noch verschlüsselt!)
4. Fehlerkorrektur sollte die Korrektheit der Daten sicherstellen.
5. Die versteckten Daten sollten mit so viel Redundanz gespeichert werden, daß man mit Hilfe von Fehlerkorrektur alle Daten wieder herstellen kann, wenn ein Bit verloren geht.
Anwendungen:
Unabhängig von der Beeinträchtigung des Trägermaterial können Daten auf zwei unterschiedliche Arten gespeichert werden: entweder werden viele Daten versteckt, die sehr anfällig gegenüber Veränderungen sind, oder lieber weniger, die dafür Veränderungen ganz gut widerstehen können.
Doch es geht nicht beides gleichzeitig. Der Wert der Sicherheit bei der Wiederherstellung ist reziprok zur Größe der Datenmenge, die versteckt werden kann. Bei allen Systemen kann man die Widerstandsfähigkeit gegenüber Veränderungen für eine größere Bandbreite aufgeben. Die versteckte Datenmenge und die Sicherheit bei der Wiederherstellung variieren von Programm zu Programm. Für verschiedene Anwendungen gibt es verschiedene Programme.
Digitale Wasserzeichen sind versteckte Daten, die zwar nicht offensichtlich das Trägermaterial verändern sollen, die aber einfach gefunden werden können muß, damit das Wasserzeichen seinen Zweck erfüllen kann: z.B. den Ursprung eines Bildes belegen.
Vorbereitung zum Verstecken von Daten
Die Verschlüsselung der Daten mit RSA, DES erzeugt eine absolute Gleichverteilung, weißes Rauschen, ebenso natürlich PGP 2.6.3i Die meisten Steganographiealgorithmen arbeiten dann am besten, wenn sie mit weißem Rauschen gefüttert werden. Verwendet man verschlüsselte Dateien ohne sie zu verstecken, kann man davon ausgehen, daß sie Neugierde erwecken, da sie ja weißen Rauschen sind, und damit als verschlüsselt zu erkennen sind. Daher ist es eine gut Möglichkeit, eine Datei erst zu verschlüsseln und dann in einer anderen Datei zu verstecken. Steganographie wird durch die Kryptographie sicherer gemacht, auch wenn sie ohne auskommt.
DES verwendet einen 56 bit-Schlüssel um 64-Bit große Blöcke zuverschlüsseln. In 16 Schritten werden die einzelnen Stücke in zwei Teile je 32 Bit zerlegt, verschlüsselt und vertauscht. Allerdings ist DES eine lineare Funktion mit einem Schlüssel, der beiden Seiten, dem Absender und dem Empfänger bekannt sein muß.
Besser sind Verschlüsselungsverfahren mit öffentlichen Schlüsseln. Hierbei werden zwei Schlüssel verwendet, ein öffentlicher und ein privater. Mit dem öffentlichen Schlüssel wird die Nachricht vom Absender verschlüsselt, während der Empfänger die Nachricht mit dem privaten Schlüssel entschlüsselt werden kann. Der öffentliche Schlüssel allein ist wertlos.
Da man weder für DES noch für RSA genau hervorsagen kann, wie der nächste Buchstabe aussehen kann, wenn man z.B. die ersten 3 kennt, kann man keine Vorhersage über den nächsten machen, daher nennt man dieses immer Weißes Rauschen. Nur durch eine direkte Attacke kann man versuchen den Schlüssel zu knacken, aber nicht durch Berechnung anhand der Schlüssel. Reine Verschlüsselungsverfahren wie DES und RSA eignen sich gut, um weißes Rauschen zu erzeugen, das sehr zufällig aussieht. Beginnt man damit, Daten in anderen Daten zu verstecken, ist das schon mal ein guter Anfang um die Welt an der Nase herumzuführen. Außerdem ist bislang keine Möglichkeit bekannt, diese Algorithmen zu knacken, und die entsprechenden Programme sind auch ganz einfach zu benutzen.
Komprimierung der Daten
Die zu speichernden Daten sollten immer komprimiert sein
· um Platz in der Trägerdatei zu sparen.
· um den ursprünglichen Dateinamen zu erhalten.
· um Klartextattacken zu erschweren.
· um automatische Fehlerkorrekturmöglichkeiten nutzen zu können.
Ein Versteck im Rauschen
Rauschen ist ein Teil unseres Lebens. Die Werbung für diverse digitale Geräte versucht uns vorzuspiegeln, daß digitale Schaltkreise rauschfrei und damit besser sind. Aber das ist nur die halbe Wahrheit. Das digitale Signal kann wieder und wieder verlustfrei kopiert werden, dank der eingebauten Fehlerkorrektur und der gut ausgedachten Schaltkreise, aber es kann das bereits vorhandene Rauschen nicht eliminieren. Digitalisierte Bilder, digitalisierte Musik und digitalisierte Spielfilme haben alle einen bedeutsamen Anteil an Rauschen aus ihrer ursprünglichen Herstellung. Die Schaltkreise/Programme die Stimmen, Töne und Bilder zu Bits konvertieren, sind alle nicht ganz perfekt. Ein bischen elektrisches Rauschen verändert die Bits ein bischen und es gibt keine Möglichkeit dies zu verhindern. Rauschen wird uns immer begleiten.
Aber dieses Rauschen ist auch eine Chance für uns. Wenn es nicht wichtig ist, ob die Bits wirklich 100%ig korrekt sind, dann kann sich jeder, der Informationen verstecken will, diese Unsicherheit zu Nutze machen. Man kann diese Bits"besetzen". Das ist die beliebteste Form der Steganographie und diejenige, die die meisten Möglichkeiten bietet.
In den Netzwerken dieser Welt befinden sich Millionen von Bildern, als Hintergrund von Webseiten, oder innerhalb dieser, und wer weiß noch wofür. Man kann diese Bits kidnappen und zum Transport der eigenen Nachrichten gebrauchen.
Das Prinzip ist einfach. Digitalisierte Bilder oder Töne werden durch Zahlen dargestellt, die die Intensität zu einer bestimmten Zeit und Raum wiedergeben. Ein digitales Photo ist nur eine Matrix aus Zahlen, die für die Intentistät von Licht stehen, so wie es zu einer bestimmten Zeit an einem bestimmten Ort zu sehen war/ist. Digitale Töne sind nur Aufzählungen des Drucks der auf ein Mikrofon in bestimmten Zeitscheiben ausgeübt wurde.
Alle diese Zahlen sind unpräzise. Digitale Photoapperate, die Bilder erzeugen, sind nicht perfekt, da die Anordnung von Charge-Coupled Devices, welche die Photonen speichern, von Zufallsefekten der Physik abhängig sind. Damit diese Geräte bei noremaler Raumbeleuchtung arbeiten können, müssen sie oft auf wenige Photonen ansprechen. Aber die Zufälligkeiten dieser Welt stellt sicher, daß manchmal zu viele und manchmal zu wenige Photonen auftreffen. Im langfristigen Durchschnitt wird sich die Zahl der Photonen ausgleichen, aber das CCD muß oft innerhalb eines Sekundenbruchteils ein Bild erstellen. Also fehlt an manchen Stellen ein bißchen Helligkeit oder Farbe. Bei Mikrofonen ist es genauso.
Der Anteil von Rauschen, das zum Verstecken von Informationen in einem Bild zur Verfügung steht, kann atemberaubend hoch sein. Viele digitale Farbbilder halten 32 Bits für jedes Pixel bereit. In jeweils 8 Bit werden die Anteile an Rot, Blau und Grün, oder von Cyan, Magenta und Gelb eines jeden Pixels gespeichert. Das ergibt 24 Bit. Wenn pro Pixel nur je ein Bit pro Farbwert zum Verstecken von Informationen verwendet wird, kann man 10 % der Dateigröße dafür verwenden. Im besten Falle hat mein eine Kodak Photo-CD mit 3072 x 2048 Pixel mit 18 MB zur Verfügung. Darin könnte man 1,8 MB Informationen vestecken. Ein gewöhnlicher Roman von etwa 250 Seiten Länge hat etwa 500 KB oder ein halbes MB. Damit könnte man eine Menge von Informationen zusätzlich zum Inhalt eines Romans in einem einzigen Bild verstecken. Aber nicht jeder wird 18 MB für ein einziges Bild verschwernden wollen. Unschärfere Bilder kommen oft schon mit 200 bis 600 KB aus und bieten immer noch 10 % zum Verstecken von Daten.
Aber wenn 10 % des gesamten Speicherplatzes zur Verfügung stehen, wie sehr wird dann das Bild in Mitleidenschaft gezogen? Jedes Byte speichert eine Zahl zwischen 0 und 255. Das letzte Bit in jeder Gruppe von 8 Bit wird das"Least Significant Bit" (LSB), also das unwichtigste Bit, genannt. Der Wert dieses Bits ist 1. Das wichtigste Bit, also das erste, hat den Wert 128, wenn das Bit den Wert 1 annimmt. Das bedeutet, daß das unwichtigste Bit (LSB) die Intensität eines Pixel höchstens um 0,5 - 1 % verändern kann. (1/128 oder 1/255). Wenn man für die Veränderung der Originaldaten um etwa 1 % in Kauf nimmt, kann man dafür etwa 10 % der Originalgröße in Daten verstecken. Ein guter Handel.
Es gibt keinen Grund nicht noch mehr Daten in der selben Datei zu speichern. Wenn die letzten zwei unwichtigen Bits verwendet werden, um Daten darin zu verstecken, dann kann jedes Pixel um maximal 3 Einheiten verändert werden. Das ist immer noch nur 1 - 3 % eines Pixels. Aber das bedeutet, daß man etwa 25 % der Bildgröße mit anderen Daten belegen kann. Eine große Bandbreite wartet nur darauf entdeckt zu werden.
Fehlerkorrektur
Auch bei Computern muß man mit einer gewissen Zufälligkeit rechnen, auch wenn man das eigentlich nicht annimmt. Computerentwickler haben diese Zufälligkeiten durch eine gute Mischung aus Präzision und Mathematik im Giff. Ein ordentlicher Rechner hat soweit alles im Griff, daß es sauber ist, und durch matematische Verfahren, wird der Rest bereinigt. Durch die Mathamatik ist es möglich, einen digitalen Kreislauf mit einer gewissen Ungenauigkeit zu kreieren, die in der analogen Welt nicht möglich wäre. Diese Ungenauigkeit kann mit Hilfe entsprechender Mathematik behoben werden.
Außerdem können die Fehlerkorrektur-Algorithmen zum guten Verstecken von Daten sehr wichtig sein. Die einfachste Methode ist es, gezielt kleine Fehler in eine Datei einzubauen, und das in sehr geordneter weise. Wenn jemand anderes auf diese Datei mit gewöhnlichen Programmen zugreift, wird die Fehlerkorrektur zuschlagen und niemand würde etwas erfahren. Anspruchsvollere Programme könnten die bereinigte Datei mit dem Original vergleichen oder einfach Fehlerkorrekturmethoden anwenden um die entsprechenden Stellen zu finden, in denen Daten versteckt sein könnten.
Eine weitere Möglichkeit ist es, in frei verfügbaren Dateien, die z.B. am Internet"herumschwirren", Daten einzufügen. Es gibt nur dann Probleme, wenn zwei oder mehrere auf die selbe Idee kommen, und eine Nachricht durch eine andere Überschrieben wird. Dafür könnte man aber dazu übergehen, nur Teile von solchen Dateien zu beschreiben, da selbst bei kleinen Überlappungen, die Daten durch die Fehlerkorrektur wiedergewonnen werden können.
Man kann Nachrichten auch auf mehrere Datein verteilen, und auf verschiedenen Wegen schicken. Wenn Teile kompromittiert wurden, kann man sie durch Fehlerkorrektur wieder herstellen.
Das Aufteilen von Geheimen Nachrichten
Es gibt verschiedene Gelegenheiten, bei denen es nützlich ist, die Informationen aufzuteilen. Erst wenn alle Informationsträger sich gemeinsam zusammenfinden, kann das Puzzle zusammengesetzt werden. (z.B. zwei Schlüssel für den Banktresor)
Man hat die Möglichkeit, eine Nachricht so aufzuteilen, daß nicht alle Beteiligten anwesend sein müssen, um die ganze Nachricht zu erhalten, oder daß alle dazu benötigt werden.
Es ist nicht immer wünschenswert, daß man alle Beteiligten benötigt, um ein Geheimnis wieder herzustellen. Eine bessere Variante kann es sein, daß mehrere Leute mit einem Teil das Ganze wiederherstellen können. Eine Möglichkeit ist, daß man annimmt, das Geheimnis sei eine Bestimmte Zahl x auf der Zahlenebene. Dadurch kann man eine Gerade legen - und noch eine ganze Menge weiterer. Kennt man zwei dieser beliebig vielen Geraden, kann man den gemeinsamen Schnittpunkt berechnen und erhält damit x. Kennt man nur eine dieser Geraden, ist man genauso schlau wie vorher. Man benötigt aber immer nur einen beliebigen zweiten, mit der Kenntnis über eine weitere Gerade um das Geheimnis zu lüften. Sollen mehr als zwei Leute nötig sein um eine Botschaft zu entschlüsseln, kann man z.B. Geraden im Raum annehmen, dann benötigt man 3 Gleichungen und damit auch 3 Leute. Sind mehr Geheimnisträger gewünscht, kann man n-dimensionale Gleichungen für Punkte in der n-ten Dimension wählen und verteilen.
Man kann natürlich auch Punkte auf der ersten Linie verteilen (und damit die Geheimnisse), die Schnittpunkt mit anderen Geraden darstellen, oder Punkte auf der y-Achse, mit entsprechenden Geraden, die die y-Achse genau in diesen Punkten schneidet. So kann man auf ganz einfache Weise ein Geheimnis so aufteilen, daß immer eine gewisse Untermenge der Beteiligten anwesend sein muß, um das Geheimnis wieder herzustellen. Allerdings ist es nicht ratsam Punkte auf 2 Geraden zu verteilen, da für die Lösung dieses Systems nur wenige Punkte nötig sind und so das Geheimnis gelüftet werden kann, wenn nur wenige Beteiligte und nicht alle, eigentlich benötigten, anwesend sind.
Selbstverleugnung
Eine andere Möglichkeit Information aufzuteilen: Man kann z.B. auf der eigenen Webseite ein Bild zur Verfügung stellen, in dem Informationen versteckt sind. Allerdings kann man diese nicht so einfach extrahieren. Dazu braucht man noch drei andere, offensichtliche Bilder aus dem Web - z.B. eines auf den Seiten von Disney World, eines der NASA und ein Urlaubsbild eines Fernostreisenden aus Deutschland. Aus diesen drei Bildern werden die LSBs (Least Significant Bits) extrahiert und zu den Informationen aus dem Bild von der eigenen Webseite addiert - erst dann erhält man die geheime Nachricht.
Der Vorteil an dieser Methode ist, daß man nicht genau sagen kann, von wem die eigentliche Information zur Verfügung gestellt wird. Von Disney World? Oder von der NASA? Wenn man die Informationen in nur 4 Bildern zur Verfügung stellt, kann man mit etwas Aufwand vielleicht noch den Verursacher feststellen, aber bei 100 Bildern?
Allerdings sollte man darauf achten, wie die Bilder entstanden sind, die im Web zur Verfügung gestellt werden. Wird z.B. ein Bild aus der"Toy Story" verwendet, das computergeneriert wurde, kann man über die LSBs sehr vorhersagbare Aussagen machen und Disney World scheidet damit schon als Verursacher aus. Das Grundrauschen der ausgewählten Bilder sollte schon sehr deutlich sein.
Dateiformate, Kompression und Praktische Probleme
Wenn man diesen Kanal tatsächlich für die Übertragung von Informationen verwenden will, gibt es ein paar praktische Probleme. Die meisten Bild- und Audiodateien enthalten genug natürliches Rauschen um eine 3 %ige Veränderung zu verstecken. Hier sieht man ein gewöhnliches Schwarz/Weiß-Bild:
Das Rauschen ist deutlich zu erkennen. Hier fällt eine Veränderung der LSBs nicht weiter auf. Es ist also gut möglich Informationen in diesem Bild zu verstecken.
Viele Bild- und Audiodateien bieten genug Rauschen, um Daten zu verstecken. Das erste Bild bietet genug Stoff, so daß kleine Veränderungen nicht bemerkt werden. Aber es gibt auch Bilder, die die eingearbeiteten Informationen nicht so gut verstecken. Bilder, die im Computer erzeugt wurden, wie z.B. mit Paintbush oder dem Adobe Illustrator oder Corel Draw. Dabei werden große Flächen gleichmäßig mit einer Farbe ausgefüllt. Selbst wenn dieses Bild nur ein wenig verändert wird, kann man dies leicht entdecken, da die gleichmäßige Farbe mit einem Rauschen überlagert wird. (Eigentlich schmerzen diese gleichmäßigen Farben den Augen. Deshalb verändern Künstler diese Flächen etwas und überlagern sie mit einer Textur. Damit hat man dann auch wieder die Möglichkeit, Daten darin zu verstecken.)
Datenformate sind ein ernstzunehmendes Problem für jeden, der regelmäßig Steganographie auf Bit-Ebene verwenden möchte, um Daten zu verstecken. Viele Bild- und Audiodateiformate sind dafür gedacht, das Rauschen herauszufiltern um Platz zu sparen. Das kann durch ein sehr spezielle und effizientes Dateiformat wie GIF geschehen, oder durch ein sehr aggressives Kompresionsprogramm, wie JPEG, das sich nicht darum schert, ob das Bild nach der Rekonstruktion genau das selbe ist, wie vorher. Beide Formate machen es schwer, einfach im unwichtigsten Bit des Bildes Informationen zu verstecken.
Das GIF Dateiformat und sein 8-Bit-Standard ist ein wichtiges Hindernis, da 8-Bit-Farben sich sehr von 24-Bit-Farben unterscheiden. Hier wird eine Tabelle mit 256 verschiedenen Farben verwendet. Diese ausgewählten Farben repräsentieren die Farben im Bild am besten. Die Farbe eines jeden Pixels wird nun durch einen Eintrag in dieser Farbtabelle beschrieben, und zwar der Farbe, die der eigentlichen am nächsten kommt. Die Bits haben keinen Zusammenhang mit der Intensität der Farbe eines jeden Pixels. Wenn man also das unwichtigste Bit verändert, bedeutet das nicht, daß man die Intensität unwesentlich um maximal 1 % verändert, sondern daß man anstatt des Eintrags 16 der Farbtabelle (hellgelb) nun Eintrag 17 (dunkelblau) erhält. Sie unterscheiden sich zwar nur im unwichtigsten Bit, aber das kann einen gravierenden Unterschied im Ergebnis erzeugen.
Es gibt eine Menge unterschiedlicher Lösungen zu diesem Problem. Eine Möglichkeit ist es, eine kleinere Anzahl an Farben zu verwenden.
Anstatt 256 Farben auszuwählen, welche die Farben des Bildes repräsentieren sollen, kann man 128 wählen und dann 128 weitere, die den ersteren sehr ähnlich sind. Man kann sogar die selben 128 Farben nehmen, aber das wäre zu verdächtig. Die Tabelle könnte so angeordnet sein, daß zwei sehr ähnliche Farben sich nur in einem Bit unterscheiden. Beispiel:
Nummer: Binärcode Rot Grün Blau
0 00000000 90 40 22
1 00000001 89 41 20
2 00000010 120 113 75
3 00000011 123 107 71
4 00000100 31 89 99
5 00000101 28 94 95
... ... ... ... ...
Will man nun den Wert 1 in einem Pixel verstecken, findet man die ähnlichste Farbe in der Tabelle, indem man das unwichtigste Bit auf 1 setzt. Wenn die ähnlichste Farbe zum Original die Farbwerte Rot=119, Grün = 114 und Blau= 71 hat und 1 Bit versteckt darin versteckt werden soll, dann wählt man die Farbe mit der Nummer 3 aus der Farbtabelle aus, will man eine 0 verstecken, verwendet man die Farben Nummer 2 aus der Tabelle.
Es gibt keinen Grund, warum das unwichtigste Bit in getrennten Paaren benutzt werden muß. Es kann jedes dieser Bits verwenet werden. So kann die Auswahl auch über das 3. Bit erfolgen. (oder auch über das 1. und 3.)
Außerdem gibt es keinen Grund nur 1 Bit pro Pixel zu verschlüsseln.Der selbe Algorithmus der dazu verwendet wird die 128 nächsten Farben aus 256 auszuwählen, kann auch dazu verwendet werden, die nächsten 64 Farben auszuwählen. Dann könnten 2 Bits pro Pixel verschlüsselt werden. Das kann die Qualität des Bildes zwar offensichtlich verschlechtern. Z.B. auch, wenn man versucht 4 Bits pro Pixel zu verstecken. Damit hätte man nur noch 16 Farben für die eigentliche Farbtabelle zur Verfügung. Wenn z.B. eine Person auf dem Bild dargestellt ist, wird dann vermutlich eine Farbe für den Hintergrund ausgewählt, eine für die Haarfarbe, eine für den Pullover und vielleicht nur 2 Farben für die Hautfarbe verwendet. Diese Hautfarbe würde aber eher schrecklich aussehen. Da beim Sehen durch die menschlichen Augen wohl am meisten Augenmerk auf die Hautfarbe gelegt wird, ist es ratsam einen Algorithmus zu verwenden, der dementsprechend versucht, der Haut die meisten (unterschiedlichen) Farben zuzuordnen.
Aber jede dieser zwei Farben würde auch 4 Bit an Informationen mit sich tragen. Und das bedeutet, daß es insgesamt 16 Erstatzfarben gibt, die ziemlich zufällig verteilt werden. Diese verleihen der Hautfarbe natürlich eine Oberflächenstruktur und verringern dadurch die Auffälligkeit der Farbverteilung.
Eine andere wichtige Hürde für das verstecken von Daten in Bild- oder Audiodateien sind Kompressionsfunktionen. Kompression ist so allgegenwärtig, daß es für verschiedene Zwecke verschiedene Kompressionsmöglichkeiten gibt, um Daten in kleineren Dateien unterzubringen, und sie dann z.B. über ein Netzwerk (wie das Internet) zu verschicken, oder große Datenmengen auf einer eigentlich zu kleinen Diskette zu speichern. Ein Kompressionsverfahren ist JPEG, MPEG ist dazu ein sehr ähnlicher Standard für bewegte Bilder.
Beide Verfahren sind für das Speichern von Informationen auf Bitebene sehr gefährlich, da sie ein verlustbehaftetes Verfahren zur Kompression verwenden. Nimmt man ein digitales Bild, komprimiert es mit JPEG und dekomprimiert man es später wieder, wird das Ergebnis nicht genau das Bild sein, das man anfangs hatte. Es wird dem Original sehr ähnlich sein, aber es ist nicht das selbe. Das ist, im Gegensatz zu verlustfreien Verfahren wie sie für Textkomprimierung eingesetzt werden, ein großer Gegensatz. Diese Funktionen stellen die Daten Wort für Wort wieder her. Verlustbehaftete Kompressionsverfahren ermöglichen aber eine deutlich größere Komprimierung weil sie sich einen Teufel um Details scheren. Das Endergebnis reicht trotzdem aus. Der JPEG-Algorithmus selbst ist aber anpassbar. Man kann Daten noch weiter komprimieren, wenn man weitere Verluste der Genauigkeit hinnimmt. So kann man den Algorithmus so weit verändern, daß nicht nur ein Pixel eine bestimmte Farbe annimmt, sondern ein ganzer Block.
Es ist nicht leicht den Umgang von JPEG mit Bilddateien zu bekämpfen. Wenn die verlustbehaftete Funktion die Datei nicht korrekt wieder herstellt, dann sind Details und mit ihnen Informationen, die darin eingebettet waren, verloren. Deshalb verwenden wohl viele Leute die Komprimierung in GIF-Dateien. Außerdem wird der Nachteil der etwas größeren Dateien im Gegensatz zu JPEG-Dateien durch immer schnellere Netzwerkanbindungen und immer größere Speichermedien (Festplatten) aufgewogen.
Die Verwendung von JPEG
Am Anfang haben wir uns darüber beschwert, daß JPEG unerwünschte Effekte in Bildern hinterläßt, die Informatinen im LSB gespeichert haben. Da die Kompression nicht verlustfrei ist, kann sich eine Information, die in diese Datei eingebettet war, in Luft auflösen, da JPEG die Datei nicht wieder so wie das Original herstellt. Auch wenn es Probleme bei der Datenkompression mit JPEG gibt, heißt das nicht, daß der JPEG-Algorithmus nicht zur erfolgreichen Speicherung von Informationen in Bilddateien geeignet ist.
Es gibt zwei unterschiedliche Wege den JPEG-Algorithmus zur Speicherung von Informationen zu verwenden. Der erste untersucht die Komplexität des Bildes. Der zweite speichert Informationen in JPEG-Dateien.
Der JPEG-Algorithmus ist ein gutes Werkzeug um den Detaillierungsgrad eines Bildes zu erkennen. Dieser Grad kann dazu verwendet werden den Bereich des Bildes zu finden, in dem der Rauschpegel am höchsten ist.
Der JPEG-Algorithmus teilt das Bild automatisch in Bereiche ein und erkennt dabei die wichtigsten oder hervorstechendsten Bereiche. Schließlich wurde er dazu entworfen genau dies zu tun um den Faktor der Kompression zu erhöhen. Das Programm erzeugt ansehnliche Ergebnisse, auch wenn einige Details bei der Komprimierung verloren gehen.
Dieser Algorithmus macht es möglich die wichtigen Bereiche eines Bildes zu identifizieren. Außerdem kann man den Wert der Genauigkeit des Bildes selbst auswählen. Wenn das Bild nach dem Verstecken der Daten immer noch gut aussehen soll, dann sollte JPEG auf große Tiefenschärfe eingestellt sein und wird danach möglicherweise eine kleiner Anzahl von Bits finden, in denen Daten gespeichert werden können. Wird auf die Tiefenschärfe kein so großer Wert gelegt, bietet JPEG auch mehr Bits zum Speichern an.
Das obige Bild als JPEG mit geringer Tiefenschärfe:
LSBs dieser JPEG-Datei zeigen sehr deutlich die Bereiche mit größerem Detaillierungsgrad:
Das einzige Problem bei einem nicht verlustfreien Verfahren wie JPEG ist, daß die Information nicht so einfach wieder hergestellt werden kann, wie beim Einbetten von Daten in einer GIF-Datei. Bei einer GIF-Datei kann der Emfpänger einfach die LSBs extrahieren und damit die Daten eins-zu-eins wieder herstellen. Man benötigt dazu nicht das Originalbild. Da JPEG die Bereiche die Ecken und Spalten des Bildes ausweist, in denen Informationen lauern können, brauchen Sender und Empfänger die Liste der verwendeten Bereiche. Dazu benötigen beide Seiten das Originalbild. Das führt aber zu Problemen, wenn man Informationen mit jemanden austauschen möchte, den man noch nie zuvor getroffen hat. Irgendwie muß die betreffende Person erst einmal eine Kopie des Originals bekommen.
Das Verstecken von Informationen in JPEG-Dateien
Es ist ein offenes Geheimnis, daß der Ansatz mit dem verlustbehafteten JPEG-Verfahren Informationen zu speichern, das prinzipielle Verfahren durcheinanderbringt. Das Rauschen kann in jede beliebige Richtung verändert werden, so könnte man im ersten Moment das Datenformat komplett vernachlässigen. Derek Upham hat sich damit nicht zufrieden gegeben und nachgebohrt. JPEG komprimiert die Dateien in zwei Schritten. Zuerst wird das Bild in Blöcke von 8 x 8 Pixel unterteilt und legt dann Kosinusfunktionen über diese Pixel um diese darzustellen. Dann werden die Frequenzen/Häufigkeiten dieser Kosinusfunktionen als Beschreibung dieser Blöcke gespeichert. Upham hat dann festgestellt, daß man die unwichtigsten Bits dieser Frequenz verändern kann um darin Informationen zu speichern.
Dies ist aber nicht der einzige Grund der für dieses Verfahren spricht. Programme wie S-Tools und Stego durchlaufen immer wieder die selben Berechnungen um Informationen in 8-Bit-Farbbildern zu verstecken. Anschließend enthalten diese Bilder aber Farbtabellen mit sehr ähnlichen benachbarten Farbeinträgen.Das funktioniert so weit so gut, kann aber relativ leicht erkannt werden, wenn die Farbtabelle durchsucht wird.
Verändert man die Frequenzen einer diskreten Kosinusfunktion die einen 8 x 8 Block repräsentiert, hat einen ganz anderen Effekt. Auch wenn diese Veränderungen die Qualität des endgültigen Bildes beeinträchtigen, kann man diese Effekte kaum wahrnehmen. Die diskreten Kosinusfunktionen sind von Haus aus schon Annäherungen und wie soll man kleine Veränderungen in einer Annäherung wahrnehmen? Letztendlich wird die Speicherung der Bits dadurch kontrolliert, ob das JPEG-Programm auf- oder abrundet. Aufrunden bedeutet eine 1, abrunden eine 0. Diese Zahlen können wieder hergestellt werden, wenn man das unwichtigste Bit (LSB) der Frequenz betrachtet.
Upham hat außerdem einen ungewöhnlichen Ansatz beim Verstecken von Daten. Man benötigt dazu eine Kopfzeil in der festgehalten ist, wie viele Bits gespeichert wurden. Üblicherweise ist dies eine ganze Zahl für die 32 Bit benötigt werden, dies kann z.B. 12751 sein. Upham bemerkte, daß vor der Zahl immer führende Nullen stehen. Da die Bits für gewöhnlich zufällig verteilt sind, ist eine Reihe von Nullen immer verdächtig: Sechzehn Nullen in Serie sollte in einem von 65536 Fällen vorkommen.
Deshalb ist bei JPEG die Größe auf 1 GB zu versteckender Daten begrenzt, da das jeweils 6. Bit in der Hälfte aller Fälle auf 0 gesetzt wird, da an dieser Stelle für gewöhnlich eine 1 steht.
Deshalb enthält bei ihm Kopfzeile zwei Zahlenfelder. Das erste enthält die Länge des zweiten Feldes, das wiederum die Anzahl der Bits in der gesamten Datei enthält. Das eliminert große Blocks gleicher Bits am Anfang der Nummer und erhält trotzdem die Flexibilität für extrm große Dateien. Außerdem schlägt er vor, daß das zweite Feld bei jedem 2. Mal mit einer zusätzlichen Null vom ersten getrennt wird. Das verhindert, daß das 6.Bit immer eine 1 ist.
Digitale Wasserzeichen
Robuste Markierungsmethoden als Kopierschutz für Bild- und Audiodateien
Wasserzeichen wurden schon siet etwa 2000 Jahren in Papier eingearbeitet, bis etwa zum Mittelalter. Das Wasserzeichen war das Markenzeichen des Herstellers und hat oft etwas über die Zusammensetzung des Papiers ausgesagt. Im digitalen Zeitalter wird das Wasserzeichen zum markieren von Dateien verwendet, um z.B. den Urheber, wie z.B. einen Photographen, festzuhalten.
Eine Anwendung, die eine minimale Datenmenge versteckt, ist das Digitale Wasserzeichen. Die eingefügten Daten geben Auskunft über den Eigentümer des Trägermaterials. Sie erfüllen den selben Zweck wie die Unterschrift des Autors (resp. Photographen) oder ein Firmenlogo. Da diese Information wichtig ist und intelligenten, sowie beabsichtigten Angriffen, das Wasserzeichen zu entfernen oder zu zerstören, ausgesetzt sein kann, muß die Methode, mit der die Informatinen versteckt werden, immun gegen eine Vielzahl von Veränderungen sein.
Eine weitere Anwendung ist gegen die Veränderung des Trägermaterials resistent. Sie wird dazu benutzt, um versuchte Veränderungen des ursprünglichen Trägersignals anzuzeigen. Eine Veränderung der versteckten Daten induziert automatisch, daß das Trägersignal verändert wurde.
Eine dritte Anwendungsmöglichkeit ist die Speicherung von Hintergrundinformationen in Bildern. Diese Daten werden in speziellen Bereichen eingebettet. Diese Daten sind keine typischen Ziele beabsichtigter Veränderungen. Bilder werden oft verändert, verkleinert, abgeschnitten, oder Farbnuancen verändert. Deshalb müssen auch diese Daten Veränderungen widerstehen.
Kopf- und Fußzeilen von Bild- oder Audiodateien können einen großen Platzbedarf aufweisen. Deshalb benötigt man für ihre Speicherung zusätzliche Kanäle. Diese zusätzlichen Informationen gehen verloren, wenn das Dateiformat verändert wird, z.B. von TIFF (Tagged Image File Format) nach GIF (Graphic Interchange Format). Diese Probleme werden umgangen, indem man diese Zusatzinformationen direkt in die Datenstruktur des Trägersignals einarbeitet.
Diese Seite der Steganographie wird überwiegend kommerziell genutzt - schon allein die Programme zum Einfügen von Wasserzeichen zeigen das: es gibt keine Shareware... Ziel der Industrie ist es, z.B. Musikstücke per Internet zu verkaufen, an einen bekannten Käufer (Kundennummer, Abrechnung etc.), der diese Datei genau einmal kopieren kann. Dann wird ein bestimmtes Kopierbit gesetzt, das verhindern soll, daß die Datei noch einmal kopiert wird. Das widerspricht eigentlich der bisherigen Handhabung, da man LPs CDs oder MCs immer schon mehrfach kopieren konnte und auch verleihen. Außerdem: wer hat schon so viel Plattenplatz um viele Musiktitel z.B. auf seiner Festplatte zu speichern.
Das Kopierbit ist Teil eines Wasserzeichens, das mit der Originaldatei verwoben werden muß. Im Gegensatz zu versteckten Daten, soll das Wasserzeichen natürlich gefunden werden können, aber nicht den Genuß des Bildes oder Musikstückes beeinträchtigen.
Anforderungen an eine Markierungsmethode:
· Das Extrahieren des Labels muß ohne das Originalbild möglich sein.
· Das Verfahren soll direkt auf komprimierte Daten angewendet werden können, damit das Einfügen und Extrahieren der Markierung in Echtzeit vorgenommen werden kann.
· Die Markierung soll weder sichtbar noch hörbar sein.
· Die Markierung muß JPEG/MPEG-Komprimierung bis zu einem gewissen Grad widerstehen können, den man zuvor bestimmen kann.
· Das Verfahren muß Veränderungen, welche die Qualität nicht ernstlich herabsetzten, widerstehen können, wie z.B. Filter, Abschneiden, Verkleinern oder Vergrößern.
· Es können mehrere hundert Bits in einem Bild gespeichert werden.
Die Widerstandsfähigkeit ist reziprok zur Markierungsgröße: je größer das Wasserzeichen ist, je weniger kann dieses vor Zerstörung durch JPEG-Komprimierung geschützt werden.
Mögliche Methoden zum Einbetten von Wasserzeichen:
1. Die Patchworkmethode: Eine Menge von Paaren von Bildpunkten (ai, bi) werden zufällig ausgewählt und die Helligkeit von ai um 1 erhöht, während die von Bi um 1 herabgesetzt wird. Bei n veränderten Punkten erhält man eine Differenz von 2n. Wird bei einer JPEG-Komprimierung eine Qualität von mehr als 75 % erhalten, kann man zu 85 % Wahrscheinlichkeit die eingebetteten Daten wieder herstellen.
2. Das Bild wird mit Hilfe eines Zufallszahlengenerators in zwei Hälften geteilt. Bei einer Teilmenge wird die Helligkeit um k erhöht. k wird hierbei durch die Differenz zweier zufälliger Stichproben der zwei Teilmengen berechnet. Zur Überprüfung auf Wasserzeichen wird der Mittelwert der zwei Teilmengen berechnet. Ist er k, enthält die Datei ein Wasserzeichen, ist k = 0 dann nicht. Diese Art Wasserzeichen bleibt allerdings nur bei einer JPEG-Komprimierung mit einer Qualität von mindestens 90 % erhalten. k wird der Level der Markierung genannt. Wird das Bild erst in Blöcke zerlegt und k für jeden Block bestimmt, kann das Wasserzeichen größer und widerstandsfähiger sein. Der Level für jeden Block wird anhand einer zweiten JPEG-Kopie minderer Qualität berechnet.
Die beiden Methoden beeinflussen sich kaum gegenseitig, deshalb kann man beide Methoden auf ein und dasselbe Bild anwenden, damit kann die Größe des Wasserzeichens verdoppelt werden. Wird zuerst DCT und dann die Patchworkmethode auf die Datei angewendet, wird das Wasserzeichen nicht sichtbar sein. Selbst bei einer JPEG-Komprimierung bei 75 % kann das Wasserzeichen noch gut wieder extrahiert werden.
Eine weitere Möglichkeit ein Wasserzeichen in ein Bild einzufügen ist das Einarbeiten eines Wasserzeichens in eine der drei Farbschichten einzuarbeiten. Es wird also nur sichtbar, wenn man die Farbschichten getrennt betrachtet, aber nicht, wenn man das ganze Bild ansieht.
Kommerzielle Produkte zum Einbetten von Wasserzeichen: PictureMarc (incl. SpiderMarc) von der Firma DigiMarc, die digitale DNA der kalifornischen Firma Solena, das Programm von Liquid Audi, SureSign von Signum Technologies und EIKON Amark, TigerMark von NEC, oder SysCoP (TM) des Frauenhofer Instituts für Computergraphik in Darmstadt. Im Audiobereich: Musicode von ARIS Technologies (Cambridge, MA)
Jedes Programm arbeitet mit einer anderen Methode, so daß man die Wasserzeichen untereinander nicht lesen kann. Die Algorithmen dazu werden natürlich nicht offengelegt, da man sonst die Wasserzeichen damit wieder aus den Trägerdateien herauslöschen könnte.
Aber es gibt bereits Programme wie StirMark oder unZign, die elektronische Wasserzeichen in Bildern völlig zerstören, ohne dabei das Bild selbst zu beeinträchtigen. Diese Programme können bislang die Wasserzeichen aller kommerziellen Programme entfernen.
In dem Bereich der digitalen Wasserzeichen wird sich deshalb noch sehr viel verändern müssen, ehe man damit wirksam arbeiten kann.
Liebe Kolleginnen! Wir genießen nun endlich unsere Ferien
auf dieser Insel vor Spanien. Wetter gut, Unterkunft
auch, ebenso das Essen. Toll! Gruß, M. K.
Die enthaltene Botschaft läßt sich entziffern, wenn man die Buchstaben bis zum nächsten Leerzeichen (also inclusive Satzzeichen) zählt und folgende Regel anwendet: Ist die Anzahl ungerade, ergibt sich eine 0, sonst eine 1. Mit dieser Vorschrift ergeben die ersten acht Wörter 01010011 (Binärdarstellung von 83, dem Buchstaben S im ASCII-Code), die nächsten acht Wörter 01001111 (79, Buchstabe O) und die letzten acht Wörter wieder 01010011 (also den Buchstaben S). Im Gegensatz zum positiven Ton des Postkartentextes liest man nun S.O.S. heraus!
Andere simple Regeln zum Verstecken von Nachrichten in Texten basieren auf dem Buchstaben an einer verabredeten Position eines jeden Wortes oder auf der Zahl der Leerstellen beim Blocksatz einer Nichtproportionalschrift.
Drei Eigenschaften von steganographischen Verfahren werden schon jetzt deutlich:
· Es ist eine riesige Vielfalt solcher Verfahren denkbar.
· Selbst bei Verdacht auf eine versteckte Nachricht lassen sich unterschiedliche Botschaften herauslesen; z.B. könnte es sein, daß die Großbuchstaben LKWFISWUETGMK auf der Urlaubskarte einen chiffrierten Text ergeben, der noch vom Empfänger entschlüsselt werden muß. Außerdem denke man an die Fans, die die Tonbänder ihrer Rockidols rückwärts ablaufen lassen, weil dann eine Nachricht zu hören sein soll.
· Die Menge der versteckten Daten ist sehr viel kleiner als die Nachricht, in die sie verpackt werden.
Geschichte der Steganographie
Die Steganographie ist wie die Kryptographie sehr viel älter als das Computerzeitalter. Seit Tausenden von Jahren werden geheime Nachrichten versteckt übermittelt, insbesondere im militärischen Bereich. Schon der griechische Geschichtsschreiber Herodot (490-425 v. Chr.), berichtet von einem Adligen, der seine Geheimbotschaft auf den geschorenen Kopf eines Sklaven tätowieren ließ. Nachdem das Haar nachgewachsen war, machte sich der Sklave unbehelligt zu seinem Ziel auf, wo er zum Lesen der Nachricht wiederum kahlrasiert wurde.
In einem anderen Bericht von Herodot geht es um Wachstafeln, auf die man damals schrieb. Als eine sensible Nachricht überbracht werden sollte, entfernte der Absender das Wachs, gravierte den Text in das Holz darunter und füllte das Wachs wieder auf. Den kontrollierenden Wachen erschienen die Tafeln leer.
Der Gebrauch unsichtbarer Tinte war bereits zur Zeit des römischen Schriftstellers Plinius der Ältere (23-79 n. Chr.) bekannt: Mit Urin, Milch, Essig oder Fruchtsäften wurde die Nachricht auf Papier oder Pergament geschrieben und war nach dem Trocknen der Flüssigkeit nicht mehr zu sehen. Der Empfänger mußte nur das Dokument über einer Kerzenflamme erhitzen - schon tauchte die Schrift wieder auf. Im Zweiten Weltkrieg arbeiteten deutsche Spione nach demselben Prinzip: Mit einer Kupfersulfatlösung auf einen Handschuh gebrachte Nachrichten blieben unsichtbar, bis er mit Ammoniakdämpfen in Berührung kam.
Ebenfalls von den Nationalsozialisten entwickelt wurde der sogenannte Microdot, ein Stück Mikrofilm in der Größe eines I-Punktes, der in unverdächtigen Schreibmaschinenseiten als Satzzeichen oder oberhalb des Buchstabens"i" eingeklebt wurde. Solche Microdots konnten riesige Datenmengen einschließlich technischer Zeichnungen und Fotos enthalten.
Um Spionen das Übermitteln versteckter Informationen zu erschweren, reglementierten die Regierungen von Großbritannien und den USA im Zweiten Weltkrieg die internationalen Postsendungen. Verboten war das Verschicken von Schachaufgaben, Kreuzworträtseln, Zeitungsausschnitten, Strickmustern, Liebesbriefen und Kinderzeichnungen. Blumengrüße, Musikwünsche im Radio und Chiffreanzeigen waren suspekt und wurden eingeschränkt. Teilweise formulierten die Zensurbehörden der Regierungen sogar abgefangene Briefe um oder klebten die Briefmarken auf den Umschlägen an andere Positionen.
Heutzutage ist die Steganographie nicht mehr allein im militärischen und politischen Bereich angesiedelt. Man unterscheidet zwei verschiedene Zielsetzungen:
· Unsichtbarkeit
Eine Nachricht wird versteckt. Neben der bereits geschilderten Möglichkeit, geheime Botschaften in anderen Nachrichten zu verstecken, spielt hier auch das Problem der"Covert Channels" aus dem Bereich der Betriebssysteme hinein, z.B. eine unerwünschte Kommunikation zwischen zwei Prozessen über eine Steuerung der Prozessorauslastung oder der Schreib-/Lesekopfpositionen der Laufwerke.
· Markieren
Eine Seriennummer wird in Dokumente hineincodiert, so daß illegale Kopien zurückverfolgt und Copyright-Verletzungen nachgewiesen werden können. Diese"digitalen Fingerabdrücke" können sich z.B. bei Texten aus minimal veränderten Wort- oder Zeilenabständen oder Schriftmodifikationen ergeben (siehe [2]).
Inzwischen haben beide Bereiche an Bedeutung gewonnen. Um die Zusammenarbeit der Forscher und Techniker zu fördern und zu koordinieren, wird dieses Jahr der erste"Workshop on Information Hiding" in England (30.05.-01.06.96) stattfinden. Nähere Informationen kann man bei Ross Anderson (ross.anderson@cl.cam.ac.uk) erhalten.
Rechnergestützte Steganographie
Bei rechnergestützten, steganographischen Verfahren werden chiffrierte Nachrichten innerhalb anderer, harmlos wirkender Daten versteckt, ohne daß ein Außenstehender dies nachweisen könnte. Die Informationen können so in digitalen Bild- oder Tondateien verpackt oder auch über das Hintergrundrauschen beim Telefonieren (siehe [4]) übertragen werden.
Die Sicherheit eines guten steganographischen Systems sollte ebenso wie kryptographische Systeme nicht von der Kenntnis des Verfahrens abhängen, sondern nur von einem geheimen Schlüssel mit ausreichend großer Länge. Diese Anforderung wird von den meisten existierenden Verfahren nicht erfüllt, da sie davon ausgehen, daß ein Verstecken von Daten gar nicht bemerkt wird und es folglich auch keine Angreifer gibt.
Das grundlegende Prinzip von Verfahren der Steganographie ist das Ersetzen von unbedeutenden Daten, z.B. das Hintergrundrauschen bei Telefon- oder Radioübertragungen, durch geheime Informationen. Um sehr gute Verfahren zu entwickeln, ist es notwendig, die für die Information gewählte Übertragungsmethode genauestens zu untersuchen, damit die Daten nicht im"Rauschen" auszumachen sind. Hier sind statistische Analysen von großer Bedeutung.
Steganographie-Software
Im Internet werden neben kryptographischen Programmen auch steganographische Implementierungen angeboten (FTP-Adressen siehe Kasten). Viele sind weitgehend plattformunabhängig und liegen im C-Sourcecode vor.
In den meisten Programmen ist zusätzlich eine Verschlüsselungsmöglichkeit eingebaut. Dennoch empfehlen die Autoren häufig, die zu versteckenden Dateien vor Gebrauch ihrer Anwendung mit einem starken kryptographischen Verfahren zu chiffrieren. Auch sind sie in der Regel sehr selbstkritisch in bezug auf den Grad der Sicherheit, den ihr Programm bietet, und beschreiben Einschränkungen detailliert in der Dokumentation. Schließlich muß der Anwender davon ausgehen, daß auch potentielle Angreifer von der frei verfügbaren Software Gebrauch machen und die Verstecktechniken kennen. Eine weitere Verschleierung kann durch Mehrfachanwendung der (verschiedenen) Programme erreicht werden.
Einige steganographischen Produkte und ihre Resultate nach Verstecken einer 4 KB großen Textdatei werden im folgenden kurz vorgestellt:
S-Tools (Steganography Tools) v3.00 von Andy Brown
Dieses Programmpaket für MS-Windows bietet drei verschiedene steganographische Module an:
1. Verstecken von Daten in WAV-Dateien
Das Programm S-Tools codiert die zu versteckenden Daten bitweise in jeweils ein Byte der Sounddatei, indem das niederwertigste Bit (Least Significant Bit, LSB) überschrieben wird. Ein Beispiel:
Angenommen, die Tondatei beinhaltet die folgenden acht Bytes an einer Stelle:
132 134 137 141 121 101 74 38
In Binärdarstellung sieht es so aus:
10000100 10000110 10001001 10001101 01111001 01100101 01001010 00100110
(LSB bei jedem Byte hervorgehoben)
Um das Byte 213 (binär 11010101) hineinzucodieren, überschreibt das Programm jeweils das LSB mit dem entsprechenden Bit der zu versteckenden Information. Also ergibt sich
10000101 10000111 10001000 10001101 01111000 01100101 01001010 00100111
oder in Dezimaldarstellung
133 135 136 141 120 101 74 39
Die Werte ändern sich also höchstens um eins im Vergleich zur Originaldatei. Dieser Unterschied wird vom menschlichen Ohr nicht wahrgenommen. Da pro Byte der Sounddatei nur ein Bit der zu versteckenden Datei codiert werden kann, darf die geheime Information höchstens ein Achtel so groß sein wie die Originaldatei.
Die Länge der versteckten Datei wird an den Anfang der entstehenden Datei geschrieben. Diese Information ist notwendig, um nur aus den überschriebenen LSBs der Sounddatei die geheime Nachricht zu extrahieren. Die Originaldatei kann allerdings mit diesem einfachen Prinzip nicht wiederhergestellt werden, da S-Tools keine Information über den ursprünglichen Wert der LSBs hat.
2. Verstecken von Daten in GIF- und BMP-Dateien
Das Prinzip des Versteckens ist ähnlich wie bei den Sound-Dateien, nur werden hier die LSBs der drei Farbwerte RGB eines Pixels mit Bits aus der zu versteckenden Datei überschrieben.
Zur Veranschaulichung werden eine Originalbilddatei (GIF, ca. 12 KB) und das Resultat nach Verstecken eines 4 KB großen Textes mit S-Tools gegenübergestellt:
Originalbild
Ausgabe von S-Tools
Die geringfügigen Farbtonänderungen sind kaum merkbar. Die Resultate bei Farbbildern sind im Gegensatz zu Schwarz-Weiß-Bildern oft schlechter, da die in der Datei enthaltenen Palette die Farben in beliebiger Reihenfolge enthalten kann, so daß geringe Änderungen der Farbwerte womöglich ganz andere Farben bedeuten.
3. Verstecken von Daten auf DOS-Disketten
Das Programm nutzt den freien Platz auf Disketten, um dort Daten zu verstecken. Dabei werden keine aufeinanderfolgenden Sektoren verwendet, sondern die freien Sektoren nach einem Zufallsverfahren ausgewählt. Außerdem können die übrigen Sektoren durch S-Tools mit zufälligen Zeichen aufgefüllt werden, um mögliche Angreifer zu verwirren.
Das komfortable Programmpaket bietet zusätzlich mehrere symmetrische Verschlüsselungsverfahren (IDEA, DES, 3DES, MPJ2, NSEA) für das Chiffrieren der geheimzuhaltenen Datei an. Eine Registrierung des Shareware-Produktes kostet 15 englische Pfund und beinhaltet die Lieferung eines gedruckten Handbuchs und des Sourcecodes.
Hide and Seek v 4.1 von Colin Maroney
Dieses Programm versteckt in GIF-Dateien Daten in einer Größe von bis zu 19 KB.
Das angewandte Verfahren besteht darin, daß von jedem Bildpixel das Least Significant Bit (s.o.) überschrieben wird.
Beim Aufruf kann ein zusätzlicher Schlüssel (Länge bis zu acht Zeichen) als Parameter mitgegeben werden, der bestimmte Header-Informationen mit dem Blockchiffre IDEA verschlüsselt; ohne den Schlüssel ist das Auspacken der versteckten Nachricht nicht möglich.
Hide and Seek läuft unter MS-DOS. Der Sourcecode in C wird mitgeliefert, muß jedoch für einen Betrieb unter UNIX angepaßt werden.
Dies ist die Ausgabe von Hide and Seek beim Verstecken der Textdatei aus dem obigen Beispiel:
Lieben Gruß
dagny
<center>
<HR>
</center> |