Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Klatsch und Tratsch (https://www.delphipraxis.net/34-klatsch-und-tratsch/)
-   -   Steganographie bei jpegs (https://www.delphipraxis.net/158573-steganographie-bei-jpegs.html)

Reap3r 22. Feb 2011 18:28

Steganographie bei jpegs
 
Hi Leute!

Ich schreibe zur Zeit eine Arbeit zum Thema Steganographie.
Zurzeit versuche ich zu verstehen, wie Informationen in jpeg's eingebettet werden können. Soweit ich weiß läuft das ganze so ab:

1. DCT-Verfahren
2. Quantisierung
3. Huffmann-Kodierung
4. Einbettung

Leider verstehe ich hier punkt 4 nicht ganz. Zu diesem Thema habe ich nur 1 Quelle gefunden. In dieser steht folgendes:

Zitat:

Wenn ein Block sich nun als geeignet herausgestellt hat, also ein ausreichend großer Koeffizient K
gefunden wurde, dann wird die Parit¨at des Blockes ¨uberpr¨uft. Die Parit¨at ist die Summer aller Koeffizienten
modulo zwei. Entspricht die Parit¨at dem einzubettenden Geheimbit, so wird der Block nicht
ver¨andert. Ist die Parit¨at ungleich dem Geheimbit, dann wird der DCT-Koeffizient links neben dem
Koeffizienten K dekrementiert, oder wenn er Null ist auf Eins gesetzt. Dabei ist zu beachten, dass
der nullte DCT-Koeffizient (oben links), der die Grundhelligkeit repr¨asentiert niemals ge¨andert werden
darf.
Hier der Link zum kompletten pdf: http://parsys.informatik.uni-oldenbu...e_RF_max_A.pdf

Versteht das jemand und kann mir helfen es zu verstehen?

Danke für alle Antworten

Medium 22. Feb 2011 19:42

AW: Steganographie bei jpegs
 
Der Punkt 4 sollte eher vor Punkt 3 stehen, da nach Huffmann nicht mehr viel von den Matrizen zu erkennen ist.

Das Verfahren klingt so, als würde hier 1 Bit pro JPEG-Block kodiert, und zwar über die Parität der Summe aller Koeffizienten in dem Block. An einem Beispiel: Es soll das Byte "176" kodiert werden. Binär ist das "10110000". Man nimmt sich dann die ersten 8 quantisierten Blöcke zur Brust, und schaut nach: Ist die Summer der Koeffizienten im 1. Block ungerade? Wenn ja, prima, Ungerade = 1. Wenn nicht, einen Koeffizienten erhöhen, dann ist die Blocksumme ungerade. Dann auf zu Block 2, der soll eine 0 darstellen, also eine gerade Summe haben. Hat er das nicht, ist durch Erhöhung dies auch herstellbar. Und so weiter und so fort.

Die Idee dahinter: Die Änderung eines Koeffizienten ein einem DCT-Block um 1 hat visuell nachher praktisch keine sichtbare Auswirkung. Ausser beim ersten Koeffizienten, dem sog. DC-Anteil, der die Gesamthelligkeit des Blockes unmittelbar beeinflusst. Dieser sollte daher nicht geändert werden.

Alles in allem hat das aber zur Folge, dass man das gesamte Prozedere von JPEG selbst implementieren muss, da die Kodierung inmitten zwischen der üblichen Verarbeitung steckt, wo man in aller Regel kaum zwischen kommt bei den gängigen Libs. Das heisst, du musst dich ohnehin eingehend mit JPEG-Eingeweiden auseinandersetzen, und dann wird auch deutlich was dieser Ansatz den du da beschrieben hast tut, und warum man das machen kann ohne das Bild zu zerstören.

Reap3r 22. Feb 2011 21:30

AW: Steganographie bei jpegs
 
ok, danke!
Kann man das als Least Significant Bit Methode sehen?

Medium 22. Feb 2011 22:39

AW: Steganographie bei jpegs
 
Bezogen auf die Koeffizientenblocksummen, ja, da das Bit Null der Summe direkt anzeigt ob sie (un-)gerade ist. Es ist nur etwas Vorarbeit nötig, und da ist mein Wissen um um die genaue Definition von LSB nicht weit genug um zu sagen ob das eine erwähnenswerte Sache it :)

Reap3r 23. Feb 2011 17:00

AW: Steganographie bei jpegs
 
ok, danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz