Wer Botschaften nicht nur verschlüsseln, sondern komplett vor neugierigen Blicken verstecken will, greift zu Steganografie. Wir zeigen, wie die verdeckte Übermittlung unter Linux funktioniert.
Vor 2500 Jahren mussten Sklaven buchstäblich Ihren Kopf dafür hinhalten, geheime Botschaften zu übermitteln: Der griechische Historiker Herodot berichtet aus dem 5. Jahrhundert vor Christus, dass man den Ärmsten die Köpfe kahlschor, um ihnen geheime Nachrichten auf die Kopfhaut zu tätowieren. Mit nachgewachsenem Haupthaar schickte man die Sklaven dann auf ihre geheimen Missionen. Am Zielort gingen sie ihres Kopfschmuckes ein zweites Mal verlustig; so erst konnte der Empfänger die Geheimbotschaft entziffern.
Viele hundert Jahre später experimentierten Alchemisten unter anderem mit Geheimtinte aus Obst- und Gemüsesäften, um ihre Nachrichten vor allzu neugierigen Blicken zu verbergen. Noch einmal ein paar hundert Jahre danach, im Zweiten Weltkrieg, erlebte die Geheimniskrämerei besonders in Deutschland eine neue Blütezeit: Statt mit Pflanzensäften schrieben deutsche Agenten mit geheimer Tinte aus Kupfersulfat. Sie waren es auch, die den so genannten Microdot erfanden, einen Mikrofilm in der Größe eines i-Punktes. Dieser Kleinfilm wurde auf normale Schreibmaschinenseiten aufgeklebt und war für unerwünschte Augenzeugen kaum sichtbar. Ganze Schaltpläne und detaillierte Konstruktionszeichnungen brachten deutsche Spione auf solchen Microdots unter.
Huckepack im Geheimen
Im Zeitalter moderner EDV bedient man sich anderer Methoden, um Daten vor ungewollten Einblicken zu schützen, unter anderem der Kryptografie. Auch die Verschlüsselung hat eine lange Geschichte; schon Cäsar experimentierte mit einer nach ihm benannten Methode, indem er Buchstaben gegeneinander verschob. Moderne Kryptografie geht ungleich komplexer zu Werke. Richtig angewandt, ist sie praktisch nicht zu knacken, und genau das liefert Geheimdiensten und Politikern einen Anlass, diese Methoden einzuschränken: Nachrichtendienste sollen jederzeit in der Lage sein, verschlüsselte Botschaften zu lesen.
Hier kommt nun die Steganografie ins Spiel. Sie verhindert, dass irgend jemand eine geheime Botschaft überhaupt als Nachricht erkennt. Die Steganografie versteckt solche Mitteilungen in Trägermedien, so dass sie für Außenstehende gar nicht zu existieren scheinen. Als Träger (“Cover”) dieser verdeckten Übermittlung kommen sowohl Bilder als auch Audiodateien und – mit Einschränkungen – auch Texte infrage, wobei die Botschaft stets kleiner ausfallen muss, als das Trägermedium. Auch durch bestimmte Felder in den Headern von TCP/IP-Paketen lassen sich versteckte Nachrichten übertragen.
Steganografie (griechisch für “verdeckt Schreiben”) dient aber nicht nur der Übermittlung geheimer Nachrichten: Sie hilft auch beim so genannten “Watermarking”, bei dem urheberrechtlich geschützte Fotos oder Zeichnungen mit unsichtbaren “Wasserzeichen” gekennzeichnet werden.
Bilder als Trägermedium
Am weitesten verbreitet ist Steganografie heute in Bilddateien. Einen Angreifer tut sich schwer, die in einem Trägermedium versteckte Nachricht überhaupt zu erkennen. Lediglich mit visuellen und statistischen Analysen lassen sich Auffälligkeiten oder Veränderungen in der Trägerdatei ausmachen. Ob es sich dann tatsächlich um eine geheime Nachricht handelt und somit um eine bewusste Manipulation des Trägers, bleibt auch dann noch fraglich.
Als Trägermedium für ein Steganogramm kann man sowohl verlustfrei als auch verlustbehaftet komprimierte Bilder verwenden, wobei diese aus verschiedensten Quellen, wie Scanner oder Digitalkamera, stammen können. Das zum Einbetten eines Textes in das Covermedium verwendete Tool versteckt dabei in der Regel die Nachricht in den so genannten Least Significant Bits (LSB), also den niederwertigsten Bits der Farbwerte eines Bildpunkts: Hier fallen Manipulationen am wenigsten auf.
Zusätzlich überprüft das Tool, welche Pixel des Trägerbildes für die Manipulation in Frage kommen, um bei gleichfarbigen Flächen optisch auffallende Veränderungen zu vermeiden. Gute Steganografieprogramme verteilen zudem die eingebettete Nachricht über die gesamte Bildfläche, um so der Entdeckung bei möglichen Angriffen vorzubeugen. Zudem sind einige dieser Tools in der Lage, die Nachricht vor dem Verschmelzen mit dem Trägermedium zusätzlich zu verschlüsseln. Das gibt nicht nur mehr Sicherheit im Falle einer Entdeckung; es erweckt beim Angreifer noch eher den Eindruck zufällig vorhandener optischer Unregelmäßigkeiten (so genanntes Rauschen).
Die meisten Steganografie-Tools unterstützen die Formate BMP, JPEG und GIF. Das BMP-Format eignet sich jedoch für steganografische Zwecke nur bedingt, weil sich insbesondere bei großen Bildern erhebliche Datenmengen ergeben, die sich nur langsam über das Internet transportieren lassen. Selbst in kommunikationstechnisch modernen Ländern wie Deutschland gibt es immer noch Anwender, die lediglich mit einem Analogmodem arbeiten. So wird das Herunterladen eines Steganogramms im Größenbereich von einem Megabyte und mehr schnell zur Geduldsprobe.
Auch die Wahl des richtigen Bildmotivs ist wichtig: Fotos mit einer gewissen Unschärfe eignen sich besser als andere, weil kaum scharfe Konturen vorhanden sind, die auf die Existenz eines Steganogramms hindeuten könnten. Zudem sollte das Coverbild möglichst viele fließende Farbübergänge aufweisen, weil diese wesentlich weniger anfällig für Angriffe sind, als harte Farbwechsel. Aus diesen Kriterien folgt auch, dass sich Farbbilder mit einer hohen Farbtiefe für steganografische Zwecke deutlich besser eignen als Strichzeichnungen, die im Extremfall nur aus Schwarz und Weiß bestehen.
Der Linux-Standard: Steghide
Für alle verbreiteten Betriebssysteme gibt es inzwischen eine stattliche Anzahl von Steganografieprogrammen mit unterschiedlichem Funktionsumfang sowie von beträchtlich unterschiedlicher Güte. Unter Linux hat sich das kleine, aber mächtige Kommandozeilenprogramm Steghide zum Quasi-Standard gemausert. Das Programm zählt bei den größeren Distributionen zum Lieferumfang; Sie können Steghide aber auch als Quelltext [1] herunterladen. Zum Betrieb des Programms bedarf es zwingend der beiden Bibliotheken Libmhash und Libmcrypt, außerdem muss die Zlib-Bibliothek installiert sein. Fehlt eine dieser Ressourcen, bricht Steghide nach dem Aufruf das Ausführen des Programms mit einem Fehlerhinweis ab.
Steghide bietet einen großen Funktionsumfang und wartet mit professionellen Algorithmen auf. Das verhindert, dass jemand die mit Steghide versteckte Datei durch einen einfachen Histogramm-Farbabgleich entdeckt, wie dies bei vielen anderen (mitunter teuren) Konkurrenten der Fall gelingt. Darüber hinaus bietet die Software die Möglichkeit, Daten zu komprimieren und vor dem Einbetten in die Trägerdatei zusätzlich zu verschlüsseln. Erkennt jemand Farbabweichungen gegenüber der Originaldatei, wirken diese wie zufällig entstanden und erregen so keinen Verdacht.
Sollte ein ungebetener Gast es tatsächlich schaffen, eine mit Steghide versteckte Datei zu entdecken, ist er dann noch längst nicht in der Lage, diese auch zu entziffern. Er muss vielmehr den Versuch unternehmen, mit Methoden der Kryptoanalyse die Nachricht auch noch zu entschlüsseln. Aber auch für diesen Fall hat Steghide vorgesorgt: Bei der Verschlüsselung erweist sich die Software als äußerst flexibel und bietet dem Anwender eine große Anzahl verschiedener Kryptografiemethoden an. Das mindert das Risiko einer Entschlüsselung weiter. Möchten Sie die unterschiedlichen Verschlüsselungsmethoden kennen lernen, gibt Ihnen Steghide mit dem Aufruf steghide --encinfo einen Überblick über die implementierten Verschlüsselungsmethoden.
Nach der Auswahl einer Coverdatei für Ihre Nachricht sollten Sie zunächst abklären, ob die Trägerdatei die nötige Größe für das Verstecken der Nachricht aufweist. Die Software Steghide unterstützt von Haus aus lediglich die Bildformate JPEG und BMP, was aber kein echtes Manko darstellt; die meisten Bilder von Digitalkameras oder Scan- sowie Bildbearbeitungsprogrammen kann man leicht in diesen Formaten abspeichern. Zudem eignen sich JPEG und BMP-Dateien – sofern die Bilder nicht zu groß ausfallen – wegen ihrer hohen Farbtiefe bestens für das Verstecken auch größerer Textmengen.
Stimmt jedoch das Verhältnis nicht – ist also der zu versteckende Text zu umfangreich oder die Trägerdatei zu klein – verweigert Steghide die Arbeit und teilt stattdessen mit, dass die Coverdatei sich für das Einbetten des Textes nicht eigne. Damit Sie nicht ständig manuell prüfen müssen, ob Cover- und Nachrichtendatei zueinander passen, bietet Steghide aber die angenehme Möglichkeit, über den Befehl steghide --info Trägerdatei die maximale Größe des einzubettenden Textes zu ermitteln.
Haben Sie diese Hürden beim Arbeiten mit dem Programm umschifft, rufen Sie Steghide zum Einbetten einer Textdatei im einfachsten Fall mit
steghide embed -cf Trägerdatei -ef Textdatei -sf Steganogramm
auf. Das Ergebnis sehen Sie in Abbildung 1 – beziehungsweise: Sie sehen es eben gerade nicht!

Abbildung 1: Original und Fälschung: Links sehen Sie das unveränderte Trägerbild, rechts das Steganogramm mit einem 2,7 KByte großen, eingebetteten Text.
Selbst im direkten Vergleich beider Bilder stellt das Auge – sogar bei Vergrößerung der Bilder – keinerlei optischen Unterschied fest. Beim Vergleich der Bilddateien fällt aber auf, dass das Originalbild mit einer Größe von 75,1 KByte um fast 30 KByte größer ist als das Steganogramm. Rufen Sie über steghide --info die statistischen Daten des Bildes ab (Abbildung 2), sehen Sie, dass die Software auch ohne explizite Aufforderung durch den Benutzer das Bild sowohl verschlüsselt als auch komprimiert hat. Das erzeugt ein Rauschen, das die optischen Unterschiede zum Originalbild nochmals deutlich vermindert. Selbst bei Vorliegen des Originalbildes fällt es im 1:1-Vergleich äußerst schwer, einen Unterschied zum Steganogramm festzustellen.

Abbildung 2: Verschlüsselung und Komprimierung sind bei Steghide schon ab Werk eingebaut, wie die Abfrage der statistischen Daten zeigt.
Benutzer, die mit der als Vorgabe in Steghide verwendeten Rijndael-Verschlüsselung nicht zufrieden sind, wählen über den Parameter --encryption einen der zahlreichen von Steghide angebotenen kryptographischen Algorithmen und dazu einen passenden Verschlüsselungsmodus aus. Das Programm bietet beispielsweise auch Support für Verschlüsselungen wie TripleDES, Blowfish oder Twofish.
Als Empfänger einer geheimen Nachricht in einem unverfänglich schönen Bild müssen Sie diese Nachricht extrahieren können – auch dazu benutzen Sie Steghide. Starten Sie das Programm von der Kommandozeile aus mit der Befehlssequenz steghide extract -sf Steganogramm. Nun extrahiert Steghide den versteckten Text in den beim Einbetten vergebenen Dateinamen. Erfragen Sie vorher, ob der Absender Ihrer Nachricht ein Passwort als zusätzliche Sicherheitsmaßnahme verwendet hat: Ohne diese Kennung können Sie das Steganogramm nämlich weder extrahieren noch dessen statistische Daten studieren.
Fazit
Mit Steghide schieben Sie möglicher Datenschnüffelei Unbefugter einen dicken Riegel vor. Das Programm erweist sich als in jeder Hinsicht professionell: Verschiedenste Angriffsarten gegen Steganogramme haben die Entwickler bereits beim Programmieren berücksichtigt. Sie griffen dazu auf Algorithmen zurück, die bei vielen anderen Programmen immer noch nicht selbstverständlich sind und deren Fehlen dort eher für Unsicherheit sorgt.
Steghide dagegen bietet selbst dann noch Schutz, wenn ein Angreifer in Besitz der Originaldatei ist und daher an Größenunterschieden nachweisen kann, dass Daten im Steganogramm versteckt sein müssen: Wegen des Komprimierens und des Verschlüsselns sowie des Einsatzes einer Passphrase muss ein Angreifer auf Methoden der Kryptanalyse zurückgreifen. Das aber erfordert hohen Zeit- und Rechenaufwand und ist zudem auch im Erfolgsfall noch nicht gleichbedeutend mit dem Dechiffrieren einer Nachricht.
Das Kommandozeilenprogramm Steghide glänzt durch schnelles Arbeiten und mit einer leicht zu erlernenden Syntax. Beispiele in der Manpage erleichtern zudem das Verständnis der Funktionsweise von Steghide. Das Programm eignet sich damit sowohl für Anwender, die ungebetenen Lauschern das Handwerk legen wollen, als auch für solche, die im Internet Bilder veröffentlichen und diese mit einem Urheberrechtshinweis schützen möchten. Kursiert im Web eine Raubkopie des Bilds, lässt sich mit Steghide problemlos über den versteckten Copyright-Vermerk gerichtsfest den Nachweis eines Mißbrauchs führen.
[1] Steghide: http://steghide.sourceforge.net/download.php.






