Der Zweck der Steganografie ist es, Nachrichten in anderen Nachrichten so zu verbergen, daß sie von einem unbedarften Beobachter (Mensch oder Maschine) nicht mehr erkannt werden. Beispielsweise könnte ein Text codiert und in einer Bilddatei versteckt werden, so daß das betreffende Bild sich nur geringfügig ändert, und deshalb die Bildmodifikation praktisch nicht mehr wahrnehmbar ist.
Quellen mit tiefergehenden Informationen finden Sie auf der Kryptografie und Steganografie Seite von Burkhard Schröder.
Steganografie kann dort eingesetzt werden, wo der Austausch verschlüsselter Daten an sich verborgen werden muss. Zum Beispiel in Staaten, in denen Kryptografie verboten ist oder wo umfangreiche Überwachungssysteme den Datenaustausch kontrollieren und observieren.
Dabei ist zu beachten, dass steganografischen Verfahren mathematisch-statistische Theorien und Funktionen zugrunde liegen.
Liegt nun bei einem Angreifer ein zielgerichteter Verdacht gegen eine Person vor, dass diese Steganografie verwendet und ist der Angreifer im Besitz der Grundlagen, die bei der Steganografie dieser Person verwendet wurde, kann der Angreifer mit Analysemethoden und -werkzeugen die verborgenen Inhalte des versendeten oder ausgetauschten Bildmaterials erkennen und ggf. extrahieren. Ein Beispiel dafür sieht man für das hier verwendete Testbild nach einer Prüfung mit stegdetect/xsteg.
Da dies bei den meisten, bekannten Steganografiefunktionen und -tools gegeben ist und sich die wenigsten Steganografieverfahren als relativ resistent gegen mathematisch-statistische Angriffe erweisen, sollte Steganografie nur im Einzelfall mit extra verschlüsselten Inhalten verwendet werden und nur dann, wenn man annehmen kann, dass Website, E-Mail oder eine andere Stelle, an der steganografisch behandelte Dateien lagern, keiner Überwachung unterliegen.
Steganography Software F5 Page
v. Andreas Westfeld
F5 mit der Oberfläche über die enthaltene Batchdatei "frontend.bat", bzw. das Shellscript "frontend" starten.
Das Fenster sieht dann so aus:
Die beiden verwendeten Bilder:
Eingang
Ausgang
Das Fenster sieht dann so aus:
Zum Abschluss die verschlüsselte Datei mit GnuPG oder PGP entschlüsseln
Hier wurde mittels stegdetect-0.5 und der GUI xteg erkannt,
dass im obigen Testbild eine Manipulation mit F5 vorgenommen wurde.
OutGuess ist ein universales, steganografisches Tool von Niels Provos, das es erlaubt, in den redundanten Bits der Datenquelle versteckte Informationen unterzubringen. Die Beschaffenheit der Datenquelle ist für den Kern des OutGuess Tools unwichtig. Das Programm verwendet Routinen, die redundante Bits extrahieren und sie nach Modifizierung in die Datenquelle zurückschreiben. In der aktuellen OutGuess Version werden die PNM und JPEG Bildformate unterstützt. OutGuess ist als Unix Source verfügbar.
Niels Provos beschäftigt sich auch mit den Möglichkeiten der Erkennung steganografisch behandelter Daten und der Extrahierung der Informationen, die in den Daten versteckt wurden (Stegoanalyse). Zu diesem Zweck hatte er ein Testsystem eingerichtet, dass mit dem Open Source Webcrawler crawl Bilddateien von Websites lädt und speichert. Die Bilddateien werden anschließend mit Hilfe seines stegdetect Programmes automatisch auf die Existenz steganografischer Inhalte geprüft. Ein Beispiel für die Ausgabe von stegdetect ist oben im Ausgabefenster von xsteg, der GUI von stegdetct, zu sehen. Ergibt die Prüfung ein positives Resultat, werden die Bilddateien über ein Netzwerk für verteiltes Rechnen, dass mit seinem Disconcert Programm für Distributed Computing organisiert wird, auf den angeschlossenen Workstations mit dem Tool stegbreak (Bestandteil von stegdetect) einem brute-force Dictionary Angriff ausgesetzt, um das verwendete Passwort zu ermitteln.
Neben dem eigentlichen Programm OutGuess enthält das Archiv das Script seek_scipt, mit dem man überprüfen kann, welche Bilddatei für eine bestimmte Textnachricht am besten als Quelle zur Modifizierung mit OutGuess geeignet ist. Dazu legt man die Datei /tmp/fortune an, in die man die unterzubringende Textnachricht hineinschreibt. Anschließend führt man seek_script in dem Verzeichnis mit den Bilddateien aus. Die Behandlung mit OutGuess ist danach sehr einfach:
$ outguess -k "meine dolle passphrase" -d /tmp/fortune -p 75 /pfad/quellbild.jpg /pfad/ausgabebild.jpg
Mit -p 75-100 wird der Grad der Kompression bei JPG Bilddateien angegeben. Je höher der Wert, bzw. je niedriger die Komression, desto mehr Bits stehen zur Verfügung, um die Textnachricht einzubetten.
Um die eingebettete Textnachricht zu extrahieren wendet man folgenden Befehl auf ausgabebild.jpg an:
$ outguess -k "meine dolle passphrase" -r ausgabebild.jpg textnachricht


Mit OutGuess behandelte Bilddatei. Oben das Original, darunter Bild 1 mit Kompressionsparameter 100, daneben Bild 2 mit Kompressionsparameter 75. Passphrase ist "raven@_steg0koo?m#and"
Steghide von Stefan Hetzl ist ein Open Source Steganografieprogramm mit GNU Public License für die Konsole, das für Linux und Windows verfügbar ist.
Für den Einsatz und die Kompilierung von Steghide unter Linux werden zusätzlich die mhash, mcrypt, jpeg und zlib Bibliotheken benötigt. Die jpeg und zlib Bibliothek wird normalerweise mit jeder Linuxdistribution installiert. Die mhash Bibliotheken bieten zahlreiche Hash und kryptografische Algorithmen zur Schlüsselerzeugung wie SHA1, GOST, HAVAL, MD5, RIPEMD, TIGER, CRC32B und CRC32, ist absolut notwendig für Steghide und dient Steghide zur Bildung einer Passphrase, die in den weiteren Prozessen mit den kryptografischen Funktionen verwendet werden kann. Die mcrypt Bibliotheken bieten kryptografische Funktionen mit verschiedenen Operationsmodi für zahlreiche symmetrische Kryptoalgorithmen wie SERPENT, RIJNDAEL, 3DES, GOST, SAFER+, CAST-256, RC6, TWOFISH, BLOWFISH, ARCFOUR. Steghide benutzt diese Bibliothek zur Ver- und Entschlüsselung der einzubettenden Daten.
Links zu näheren Informationen über die einzelnen Algorithmen sind auf No Big Brother No. 2: Kryptografische Algorithmen aufgeführt.
Steghide kann Daten in Bilddateien im JPEG oder BMP und in Sounddateien im WAV und AU Format komprimiert und verschlüsselt einbetten. Man könnte also Steghide z. B. dazu verwenden, um in Voicemails eine zusätzliche Nachricht zu übertragen. Standardmäßig wird mit den Daten eine Prüfsumme gespeichert, um die Integrität extrahierter Daten zu überprüfen.
Zuerst schauen wir uns einmal die unterstützten Kryptoalgorithmen und Modi an:
$ steghide --encinfo
Verschlüsselungsalgorithmen:
<Algorithmus>: <unterstützte Modi>...
cast-128: cbc cfb ctr ecb ncfb nofb ofb
gost: cbc cfb ctr ecb ncfb nofb ofb
rijndael-128: cbc cfb ctr ecb ncfb nofb ofb
twofish: cbc cfb ctr ecb ncfb nofb ofb
arcfour: stream
cast-256: cbc cfb ctr ecb ncfb nofb ofb
loki97: cbc cfb ctr ecb ncfb nofb ofb
rijndael-192: cbc cfb ctr ecb ncfb nofb ofb
saferplus: cbc cfb ctr ecb ncfb nofb ofb
wake: stream
des: cbc cfb ctr ecb ncfb nofb ofb
rijndael-256: cbc cfb ctr ecb ncfb nofb ofb
serpent: cbc cfb ctr ecb ncfb nofb ofb
xtea: cbc cfb ctr ecb ncfb nofb ofb
blowfish: cbc cfb ctr ecb ncfb nofb ofb
enigma: stream
rc2: cbc cfb ctr ecb ncfb nofb ofb
tripledes: cbc cfb ctr ecb ncfb nofb ofb
Nun wird in die WAV Quelldatei aufwiedersehn.wav (für die übrigens die ZDF Mainzelmännchen herhalten mussten) die Datei /tmp/fortune mit SERPENT Verschlüsselung und dem gleichen Passwort wie bereits im OutGuess Beispiel eingebettet. Die Ausgabesounddatei soll steghide.wav heißen. Zusätzlich wird die ausführliche Ausgabe mit --verbose eingeschaltet. Wird die Passphrase nicht mit -p "meine dolle Passphrase" übergeben,wird sie in der Shell von Steghide abgefragt. Soll verhindert werden, dass der Name der Datei mit der Nachricht in der Quelldatei abgepsiechert wird, muss Steghide das Kommando --dontemebdname oder kürzer -N übergeben werden.
$ steghide --embed --coverfile aufwiedersehn.wav -embedfile /tmp/fortune -stegofile steghide.wav --encryption serpent --passphrase "raven@_steg0koo?m#and" --verbose
oder kürzer
$ steghide embed -cf aufwiedersehn.wav -ef /tmp/fortune -sf steghide.wav -e serpent -p "raven@_steg0koo?m#and" -v
Steghide gibt aus, was gerade passiert:
$ Lese geheime Datei "/tmp/fortune"... fertig
Lese Trägerdatei "aufwiedersehn.wav"... fertig
Erzeuge den Graphen... 965 Samplewerte, 582 Knoten, 2075 Kanten
Führe Static Minimum Degree Construction Heuristic aus... 63,9% (7,6) fertig
Führe DFS Augmenting Path Heuristic aus... 66,3% (8,2) fertig
Schreibe Stegodatei "steghide.wav"... fertig
Die Gegenkontrolle, um zu sehen, ob alles funktioniert hat (und die zeigt, dass bei Verdacht und Kenntnis des Gegners schnell festgestellt werden kann, ob sich in einer Datei steganografisch gespeicherte Informationen befinden):
$ steghide info steghide.wav
"steghide.wav":
Format: wave audio, PCM encoding
Kapazität: 5,0 KB
Soll versucht werden, Information über eingebettete Daten anzuzeigen ? (j/n) j
Passwort eingeben:
Eingebettete Datei "fortune":
Größe: 95,0 Byte
verschlüsselt: serpent, cbc
komprimiert: ja
Zum Abschluß extrahieren wir wieder aus der Datei steghide.wav die Nachricht in die Datei nachricht.txt. Wird die Ausgabedatei nicht mit --extractfile / -xf spezifiziert, verwendet Steghide den Originaldateinamen. Wurde die Speicherung des Dateinamens mit der Nachricht bei der Einbettung abgeschaltet, muss der Ausgabedateiname angegeben werden.
$ steghide --extract --stegofile steghide.wav --extractfile nachricht.txt --passphrase "raven@_steg0koo?m#and" --verbose
oder kürzer
$ steghide extract -sf steghide.wav -xf nachricht.txt -p "raven@_steg0koo?m#and" -v
Lese Stegodatei "steghide.wav"... fertig
Extrahiere Daten... fertig
CRC32 Prüfsummentest... ok
Schreibe extrahierte Daten nach "nachricht.txt"... fertig
Mainzelmännchen ohne Steghide Bearbeitung
Mainzelmännchen mit Steghide Bearbeitung