Ciele
-
Po tejto prednáške budeš vedieť:
- vysvetliť účel watermarkingu a rozdiel oproti steganografii
- rozlíšiť hlavné typy watermarkingu (copyright, forenzný, fragile, semi-fragile, viditeľný)
- vysvetliť princíp softvérového watermarkingu (statický vs. dynamický vodoznak)
- pripraviť sa na praktické zadanie 2 (kódovanie watermarku do zdrojového kódu, týždeň 10)
Obsah
Watermarking je technika vkladania trvalej identifikačnej značky do média (fyzického aj digitálneho), ktorá slúži na overenie pravosti, označenie vlastníctva alebo sledovanie šírenia obsahu. Značka je často nenápadná, no ťažko odstrániteľná bez poškodenia média. Historicky pochádza z papierových vodoznakov (13. storočie, Taliansko).
Watermarking možno deliť podľa viditeľnosti (viditeľný – napr. logo v rohu videa; skrytý – zakódovaný do dát), podľa umiestnenia (globálny – pokrýva celé médium, odolnejší; lokálny – len časť média) a podľa typu:
- Ochrana autorských práv – vloženie identifikátora vlastníka/licencie.
- Forenzný watermarking – unikátny vodoznak v každej kópii umožní vystopovať zdroj úniku.
- Fragile (krehký) watermarking – zničí sa pri akejkoľvek úprave, používa sa na detekciu manipulácie (dokumenty, medicínske záznamy).
- Semi-fragile (tolerantný) watermarking – prežije bežné úpravy (kompresia), zanikne pri podstatnej manipulácii.
- Viditeľný watermarking – logo ako odstrašujúci efekt, nie skrytie informácie.
Útoky na digitálny watermarking: removal attacks (odstránenie filtráciou/kompresiou), geometrické útoky (rotácia, orezanie), collusion attacks (priemerovanie viacerých kópií s rôznymi vodoznakmi), protocol attacks (podvrhnutie falošného originálu).
Softvérový watermarking
Vkladá vodoznak priamo do softvéru. Vkladač V má na vstupe program p, watermark w a pomocnú informáciu, na výstupe program pw s vloženým watermarkom: pw = V(p, w, av). Rozpoznávač R z programu pw extrahuje späť watermark w: w = R(pw, ar).
Podľa spôsobu vkladania:
- Statický watermark – uložený priamo v spustiteľnom súbore (v dátach, v kóde – výberom alternatívnych príkazov/poradia/funkcií, alebo v topológii grafu toku riadenia programu), rozpoznáva sa bez spustenia programu.
- Dynamický watermark – zostavuje sa až počas behu programu so špecifickými vstupnými dátami (napr. ako postupnosť volania funkcií alebo generovaných výstupov), rozpoznanie vyžaduje spustenie programu.
Útoky na softvérový watermarking: optimalizácia kódu môže neúmyselne odstrániť nepoužívaný kód aj s vodoznakom, štatistická analýza rozdielov medzi kópiami, vloženie ďalšieho (falošného) vodoznaku na spochybnenie pôvodného.
Porovnanie steganografie a watermarkingu: steganografia utajuje správu (menšia odolnosť voči úpravám, ale ťažšia detekovateľnosť), watermarking označuje/chráni vlastníctvo (väčšia odolnosť, viditeľnosť je voliteľná).
Praktické príklady a demonštrácie
- Ukážka jednoduchého spôsobu kódovania watermarku voľbou medzi dvoma funkčne rovnocennými fragmentmi kódu (napr.
i++vs.i += 1, alebo poradie dvoch nezávislých príkazov) – jeden bit watermarku na jeden takýto výber. - Rozbor konceptu vkladača/rozpoznávača watermarku na jednoduchom príklade.
Čo si zapamätaj
- Watermarking (na rozdiel od steganografie) sa nesnaží utajiť existenciu značky, ale zaistiť jej odolnosť a overiteľnosť vlastníctva.
- Rozdiel medzi statickým a dynamickým softvérovým watermarkom.
- Princíp vkladača a rozpoznávača watermarku (pw = V(p, w, av), w = R(pw, ar)).