die raven homepage
Steganografie mit F5, OutGuess und Steghide
Steganografie

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.

F5
Test Bild
Die Anleitungen dieser Seite sollen dazu verhelfen, das Steganografie Programm F5 von Andreas Westfeld einzusetzen.
Das Programm wurde deshalb ausgewählt, weil es im Netz gute Kritiken erhalten hat und laut der Untersuchung "Unsichtbare Botschaften - Geheime Nachrichten sicher in Bild, Text und Ton verstecken" der Zeitschrift C't im Heft 9/2001 eine sehr gute Resistenz gegen einen visuellen/auditiven/statistischen Angriff aufweist.
Allerdings wurde bereits in der Untersuchung Steganalysis of JPEG Images: Breaking the F5 Algorithm erklärt, wie Bilder erkannt werden können, die mit F5 eingebrachte steganografische Daten enthalten.
Voraussetzungen
  • Java-Runtime Umgebung von SUN
  • F5 Programmdateien
  • F5 Oberfläche (GUI)
  • GnuPG oder PGP

Steganography Software F5 Page
v. Andreas Westfeld

Installation
  1. Test, ob Java-Runtime vorhanden ist: In der Eingabeaufforderung/DOS-Fenster "jview", bzw. in der Konsole "java -version" eingeben und ggf. nachinstallieren
  2. das F5 Programmarchiv in einen eigenen Ordner entpacken
  3. das F5 GUI-Archiv in den gleichen Ordner entpacken
  4. die Ordner "Input" und "Output" zur Aufnahme des Eingangs- und des Ausgabematerials anlegen
Anwendung

F5 mit der Oberfläche über die enthaltene Batchdatei "frontend.bat", bzw. das Shellscript "frontend" starten.

Verschlüsselung
  1. Sie erstellen mit einem beliebigen Texteditor den Klartext
  2. Der Text wird mit PGP oder GnuPG verschlüsselt.
    Für das Beispiel wurde die Datei secret.txt mit folgendem Befehl in die Ausgabedatei secret.txt.gpg binär und symmetrisch mit dem Passwort "Orwell1984" verschlüsselt:

    $ gpg -o secret.txt.gpg -c --cipher-algo TWOFISH --digest-algo SHA256 --throw-keyid --no-version --no-default-recipient --no-encrypt-to ./secret.txt

    Um den Empfänger bei einer möglichen Aufdeckung der Steganografie zu verbergen, sollte die symmetrische Verschlüsselung gewählt werden. Das setzt voraus, daß man sich vorher mit dem Empfänger über zwei Passwörter geeinigt hat.
    Anschließend wird die Textdatei gespeichert und geschlossen.
  3. zur Einbettung der Textdatei wird als Trägermedium eine ausreichend große JPEG Bilddatei benötigt ( abhängig vom Umfang des einzubettenden Textes ). Diese Eingangsbildatei wird mit dem ersten Choose Button in das Feld Original Image geladen
  4. zur Bestimmung der Ausgabebilddatei wird über den zweiten Choose Button der Speicherort und der Name der Bilddatei in das Feld Enciphered Image eingegeben
  5. mit dem dritten Choose Button wird die vorher erstellte Textdatei in das Feld Message File geladen
  6. über Quality wird die Darstellungsqualität und damit der Grad der Komprimierung bestimmt. Man sollte einen möglichst niedrigen Grad wählen, der aber trotzdem noch eine Darstellung gewährleistet, die das Ausgangsbild nicht unterscheidbar zum Eingangsbild macht.
    Noch besser ist es, ein eigenes Bild über Fotografieren und Scannen zu erstellen, danach steganografisch zu bearbeiten und das Original nach einmaliger Benutzung mit einem File Wiping Tool unwiederbringlich zu vernichten - das schließt eine Vergleichsmöglichkeit mit der Originaldatei durch den Angreifer präventiv aus.
  7. in das Passphrase Feld wird die F5 Verschlüsselungspassphrase eingegeben.
    Wie bei der ersten Passphrase gilt auch hier, eine ausreichend lange und komplexe Passphrase zu wählen.
  8. über Start Encipher wird der Verschlüsselungsvorgang abgeschlossen. Informationen zum Vorgang werden im Result Ergebnisfenster ausgegeben. Treten Fehler auf, muß man eventuell ein größeres Bild wählen, den Inhalt auf mehrere Bilder verteilen usw.

Das Fenster sieht dann so aus:

F5 Verschlüsselungsfenster

Die beiden verwendeten Bilder:

Eingang

Testbild Original

Ausgang

Testbild steganografiert
Entschlüsselung
  1. zur Entschlüsselung wird über das Menü Aktion auf Decipher umgestellt
  2. über den ersten Choose Button wird die verschlüsselte Bilddatei in das Feld Enciphered Image geladen
  3. über den zweiten Choose Button wird Ort und Name der Textdatei angegebn, die extrahiert wird
  4. jetzt noch die Passphrase eingeben und mit Start decipher den Entschlüsselungsvorgang ausführen. Treten Fehlermeldungen auf, wurde die Bilddatei entweder verändert, ausgetauscht oder beschädigt, was auf einen unsicheren Kommunikationskanal hindeuten könnte.

Das Fenster sieht dann so aus:

F5 Entschlüsselungsfenster

Zum Abschluss die verschlüsselte Datei mit GnuPG oder PGP entschlüsseln

Bild
Erkennung
Erkennung mit Xsteg

Hier wurde mittels stegdetect-0.5 und der GUI xteg erkannt,
dass im obigen Testbild eine Manipulation mit F5 vorgenommen wurde.

OutGuess
Bild OutGuess Logo

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.

Anwendung

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


Bild Original
Bild Outguessed 1 Bild Outguessed 2

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

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.

Anwendung

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

Beispiel

Mainzelmännchen ohne Steghide Bearbeitung
Mainzelmännchen mit Steghide Bearbeitung

Andere steganografische Anwendungen
  • mp3stego

    Mit mp3stego wird eine Textdatei zuerst komprimiert und symmetrisch verschlüsselt. Danach werden die Daten während der Codierung einer wav in eine mp3 Datei in den Datenstrom eingebettet.
Links
[ Inhalt | Top ]