von: Franz Helmut Philip Kalchmair,
am: 24. Aug. 2003,
email: sno...@oeh.uni-linz.ac.at
1. Einführung
Steganographie ist eine Methode, bei der Information (etwa
verschlüsselte Texte) in einem Bild versteckt wird. Meist werden dazu
unkomprimierte 24-bit Bilder verwendet, da hier die Farbwerte der
Pixel direkt im Datenbereich stehen und so auch eine große Menge an
Bytes zum Verstecken der Information zur Verfügung stehen.
Meist wird dabei unter Verwendung des LSB (Least signifikant Bit) das
Bit 0 eines Bytes (hier ein RGB-Farbwert) verändert. Das ändert den
Farbwert nur so gering, daß am veränderten Bild die Änderung praktisch
nicht wahrnehmbar ist.
Schwieriger gestaltet sich die Stenographie bei Bildern mit anderem
Format.
Bei 8-bit Bildern gibt es eine 256 Farben Farbpalette. Die Pixel
werden nur noch durch eine Zahl dargestellt, die einen Indexwert in
der Palette darstellt. Würde man hier einfach die Methode mit LSB
anwenden, würde das einen anderen Indexwert ergeben und das kann eine
ganz andere Farbe als die ursprüngliche sein, da die Farben der
Farbpalette meist nicht sortiert sind.
2. Eine bekannte Methode für 8-bit Bilder
Es wurde bereits eine Methode für 8-bit-Bilder vorgeschlagen. Dabei
wird die Farbpalette sortiert, die Indizes der Pixel dann entsprechend
der Neusortierung der Palette neu gesetzt, danach mit der LSB-Methode
die Information versteckt. Die Methode halte ich für leidlich gut, da
es auch in einer sortierten Palette große Sprünge bei benachbarten
Farbwerten geben kann. Die veränderten Bilder sind dadurch oft
sichtbar verändert. Die Methode eignet sich nur für Bilder, bei denen
die Palette ausschließlich sanfte Übergänge aufweist. Der einzige
Vorteil ist, daß die Dateigröße erhalten bleibt.
3. Die FHK-Reduce_And_Double-Methode
Bei Bildern mit mehr als 128 benutzten Farben wird die Palette auf 128
Farbeinträge reduziert. Bei Bildern mit weniger benutzten Farben
bleibt dieser Schritt weg.
Hier ist wesentlich, daß man einen sehr guten Reduktionsalgorithmus
zur Verfügung hat. Ein derartiger Reduktionsalgorithmus ist im
Java-Package Jimi enthalten. Damit ist gewährleistet, daß Ausgangsbild
und verändertes Bild kaum sichtbare Unterschiede zeigen.
Beim Reduzieren werden die Indexwerte der Datenpixel entsprechend der
neuen Palette umgeschrieben.
Danach werden die Paletteneinträge verdoppelt. Jeder Eintrag wird
zweimal, also gleich nebeneinander, in die Palette geschrieben!
Dadurch ergeben sich maximal 256 Paletteneinträge.
Ist die Anzahl der benutzten Farben weniger als 128, so wird nicht
reduziert, sondern die Palette einfach verdoppelt und dann die
Indexwerte der Datenpixel angepaßt.
Jetzt wird mithilfe der LSB-Methode die Information in die Datenpixel
geschrieben. Der Vorteil ist nun, daß ein Indexwert von zum Beispiel
37 entweder 37 bleibt oder auf 36 verändert wird. Der Indexeintrag 36
hat aber exakt denselben Farbwert wie 37. So ergibt sich keinerlei
Veränderung des Farbwertes durch die Veränderung des Bits.
4. Resumee
Ein sehr guter Reduzierer vorausgesetzt, sind die Ergebnisse auch mit
Fotos mit ursprünglich 256 Farbwerten sehr zufriedenstellend.
Ein Nachteil ergibt sich bei GIF-Bildern durch die Vergrößerung der
Farbpalette. Da die Größe der Farbpalette hier variabel ist, erhöht
sich die Dateigröße bis um maximal 30% der ursprünglichen Dateigröße.
Dieser Nachteil ist jedoch zu verschmerzen, da es meiner Meinung nach
wichtiger ist, eine Methode zu haben, die so wenig sichtbare
Veränderungen wie nur irgend möglich erzeugt.
Bei Bitmaps ist die Größe der Farbpalette fix, die Dateigröße bleibt
also erhalten. Damit ist die Methode für Bitmaps noch besser geeignet.
Wels, Österreich, 24. August 2003
Franz Helmut Philip Kalchmair