03.08.2013 Aufrufe

Sicherheit in Rechnernetzen: - Professur Datenschutz und ...

Sicherheit in Rechnernetzen: - Professur Datenschutz und ...

Sicherheit in Rechnernetzen: - Professur Datenschutz und ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

144<br />

A. Pfitzmann: Datensicherheit <strong>und</strong> Kryptographie; TU Dresden, WS2000/2001, 15.10.2000, 15:52 Uhr<br />

143<br />

A. Pfitzmann: Datensicherheit <strong>und</strong> Kryptographie; TU Dresden, WS2000/2001, 15.10.2000, 15:52 Uhr<br />

function <strong>in</strong>vE'(<strong>in</strong>: stego; out: emb);<br />

if R(E(stego, 0)) = etwas_verborgen or R(E(stego, 1)) = etwas_verborgen<br />

E(cover, not(emb)) = E(stego, not(emb)),<br />

then emb := leer else emb := <strong>in</strong>vE(stego);<br />

welche durch E<strong>in</strong>setzen von stego = E(cover, emb) äquivalent umgeformt werden kann <strong>in</strong><br />

E(cover, not(emb)) = E(E(cover, emb), not(emb)) 102 ,<br />

Diese <strong>in</strong>effiziente Konstruktion läßt Sendemöglichkeiten aus, wo E(cover, emb) akzeptabel ist,<br />

E(cover, not(emb)) aber nicht. Die folgende effiziente Konstruktion ist also günstiger.<br />

Die effiziente Konstruktion:<br />

Der Sender prüft, ob E(cover, emb) akzeptabel, d.h. aus se<strong>in</strong>er Sicht für e<strong>in</strong>en Stegoanalytiker<br />

die E<strong>in</strong>bettung nicht verratender Werte für Stegotext ist <strong>und</strong> bettet nur dann e<strong>in</strong>, d.h. sendet nur dann<br />

stego := E(cover, emb) statt cover. Wenn sowohl E(stego, 0) wie auch E(stego, 1) akzeptable Werte<br />

s<strong>in</strong>d, betrachtet der Sender emb als übertragen, ansonsten sendet er emb noch mal.<br />

E<strong>in</strong>e Implementierung des verbesserten E<strong>in</strong>bettungsalgorithmusses E' mit möglichst wenig<br />

Aufrufen von E <strong>und</strong> R lautet:<br />

function E'(<strong>in</strong>: cover, emb; out: stego);<br />

stego := E(cover, emb);<br />

if R(stego) = etwas_verborgen<br />

then beg<strong>in</strong> stego := cover; E'(next cover, emb) end<br />

else<br />

if R(E(stego, 0)) = etwas_verborgen or R(E(stego, 1)) = etwas_verborgen<br />

then E'(next cover, emb);<br />

Der Empfänger erhält stego' (dies kann stego oder cover se<strong>in</strong>) <strong>und</strong> berechnet emb' := E-1 (stego').<br />

Der Empfänger prüft, ob E(stego', 0) <strong>und</strong> E(stego', 1) jeweils akzeptable Werte für Stegotext s<strong>in</strong>d<br />

<strong>und</strong> empfängt ggf. emb', ansonsten nichts. (Dies ist exakt gleich wie oben, so daß die obige<br />

Implementierung übernommen werden kann.)<br />

Warum funktioniert dies?<br />

Fall 1: Der Sender sendet stego, d.h. stego' = stego. Der Empfänger empfängt also emb' =<br />

emb genau dann, wenn der Sender emb als übertragen betrachtet.<br />

Fall 2: Der Sender sendet cover, d.h. stego' = cover. Dann ist entweder E(cover, 0) oder<br />

E(cover, 1) nicht akzeptabel (denn e<strong>in</strong>s von beiden ist E(cover, emb), was der Sender<br />

als nicht akzeptabel verwirft) – oder beide. Der Empfänger empfängt also nichts, da<br />

wegen stego' = cover entweder E(stego', 0) oder E(stego', 1) (oder beide) e<strong>in</strong> nicht<br />

akzeptabler Werte für Stegotext s<strong>in</strong>d.<br />

dann kann der Empfänger so auch prüfen, ob beide möglichen Werte des Bits hätten e<strong>in</strong>gebettet<br />

werden können <strong>und</strong> ob der Sender folglich e<strong>in</strong>betten konnte. Der Empfänger gibt das errechnete emb<br />

also nur nach außen, wenn E(stego, not(emb)) e<strong>in</strong> akzeptabler Wert für den Stegotext ist.<br />

E<strong>in</strong>e effiziente Implementierung des verbesserten Extraktionsalgorithmusses E'-1 lautet:<br />

function <strong>in</strong>vE'(<strong>in</strong>: stego; out: emb);<br />

emb := <strong>in</strong>vE(stego);<br />

stego_alternativ := E(stego, not(emb));<br />

if R(stego_alternativ) = etwas_verborgen<br />

then emb := leer;<br />

Es stellt sich nun die Frage: Ist obiges Ziel für E <strong>und</strong> E-1 nur zu erreichen, wenn das Stegosystem die<br />

obigen Gleichungen erfüllt? Die Antwort ist e<strong>in</strong> konstruktives Ne<strong>in</strong>.<br />

4.2 Informationstheoretisch sichere Steganographie<br />

Die <strong>in</strong>effiziente Konstruktion:<br />

Die Idee besteht dar<strong>in</strong>, den Sender wie den Empfänger prüfen zu lassen, ob auch <strong>in</strong> stego beide<br />

möglichen Werte e<strong>in</strong>es Bits e<strong>in</strong>gebettet werden können. Nur dann gilt das Bit als übertragen. Im<br />

e<strong>in</strong>zelnen:<br />

Der Sender prüft, ob E(cover, 0) <strong>und</strong> E(cover, 1) jeweils akzeptable, d.h. aus se<strong>in</strong>er Sicht für<br />

e<strong>in</strong>en Stegoanalytiker die E<strong>in</strong>bettung nicht verratende Werte für Stegotext s<strong>in</strong>d <strong>und</strong> bettet nur dann<br />

e<strong>in</strong>, d.h. sendet nur dann stego := E(cover, emb) statt cover. Wenn sowohl E(stego, 0) wie auch<br />

E(stego, 1) akzeptable Werte s<strong>in</strong>d, betrachtet der Sender emb als übertragen, ansonsten sendet er emb<br />

noch mal.<br />

E<strong>in</strong>e Implementierung des verbesserten E<strong>in</strong>bettungsalgorithmusses E' mit möglichst wenig<br />

Aufrufen von E <strong>und</strong> R lautet:<br />

function E'(<strong>in</strong>: cover, emb; out: stego);<br />

stego := E(cover, emb);<br />

stego_alternativ := E(cover, not(emb));<br />

if R(stego) = etwas_verborgen or R(stego_alternativ) = etwas_verborgen<br />

then beg<strong>in</strong> stego := cover; E'(next cover, emb) end<br />

else<br />

if R(E(stego, 0)) = etwas_verborgen or R(E(stego, 1)) = etwas_verborgen<br />

then E'(next cover, emb);<br />

Der Empfänger erhält stego' (dies kann stego oder cover se<strong>in</strong>) <strong>und</strong> berechnet emb' := E-1 (stego').<br />

Der Empfänger prüft, ob E(stego', 0) <strong>und</strong> E(stego', 1) jeweils akzeptable Werte für Stegotext s<strong>in</strong>d<br />

<strong>und</strong> empfängt ggf. emb', ansonsten nichts.<br />

Warum funktioniert dies?<br />

Fall 1: Der Sender sendet stego, d.h. stego' = stego. Der Empfänger empfängt also emb' =<br />

emb genau dann, wenn der Sender emb als übertragen betrachtet.<br />

Fall 2: Der Sender sendet cover, d.h. stego' = cover. Dann ist entweder E(cover, 0) oder<br />

E(cover, 1) nicht akzeptabel – oder beide. Wegen stego' = cover gilt Gleiches also für<br />

die vom Empfänger getesteten Werte E(stego', 0) <strong>und</strong> E(stego', 1).<br />

E<strong>in</strong>e effiziente Implementierung des verbesserten Extraktionsalgorithmusses E'-1 lautet:<br />

4.2.1 Informationstheoretisch sichere steganographische Konzelation<br />

KlPi_97<br />

4.2.2 Informationstheoretisch sichere steganographische Authentikation<br />

Arbeitspapier von Herbert Klimant <strong>und</strong> Rudi Piotraschke<br />

4.3 Zwei gegensätzliche Stegoparadigmen<br />

4.3.1 Möglichst wenig ändern<br />

Least Significant Bit (LSB)<br />

102<br />

Diese Gleichung besagt: Wenn nache<strong>in</strong>ander zwei <strong>in</strong>verse Bits e<strong>in</strong>gebettet werden, dann überschreibt die zweite<br />

E<strong>in</strong>bettung die erste. D.h. die E<strong>in</strong>bettungsposition ist nicht vom Wert des Bits abhängig.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!