Psaní na mokrý papír Andrew Kozlik KA MFF UK W1
Motivace Problém: Vkládání do některých prvků nosiče má vysoký dopad na detekovatelnost. PNG/GIF: Oblasti s nízkou texturou. JPEG: Nulové AC koeficienty. Řešení: Při vkládání i extrakci budeme tyto citlivé prvky přeskakovat. Nový problém: Proces vkládání může mít za následek, že textura oblasti klesne pod prahovou hodnotu, nebo nenulový AC koeficient se vynuluje. Příjemce prvky přeskočí a vložená informace je tak ztracena. Řešení: Dojde-li ke ztrátě, vložíme informaci znovu. U JPEGu vede ke smrštění kapacity o cca 25 %. W2
Přirovnání k psaní na mokrý papír Máme obrázek na papíře. Některé pixely jsou suché, jiné mokré. Suché smíme upravovat, mokré nikoliv. Upravený obrázek odešleme, ale ten cestou uschne. Příjemce nepozná, kam jsme vložili zprávu, protože neví, které pixely byly suché a které nikoliv. W3
Věta (o mokrém nosiči) Pro každé ε > 0, δ > 0 a σ [0, 1] existuje n N a stegosystém takový, že do nosiče velikosti n symbolů, z nichž σn je suchých, lze s pravděpodobností alespoň 1 δ vložit informaci velikosti (σ ε)n symbolů. Důkaz. Nechť Σ je množina symbolů a q := Σ. (Typicky Σ = F 2 nebo Σ = F 3.) Nechť Z je množina zpráv velikosti Z = q (σ ε)n. Konstrukce stegosystému: Vytvoříme kódovou knihu B = { Pz : z Z }. Stránky knihy Pz jsou indexovány množinou zpráv Z. Slova z množiny Σ n rozmístíme do knihy náhodně tak, aby na každé stránce bylo q (1 σ+ε)n slov. Čili Σ n = z Z P z. W4
Důkaz (pokračování). Příjemce a odesílatel kódovou knihu sdílejí. Vkládání: Vstup: Nosič x Σ n s n σn mokrými prvky a zpráva z Z. Pokusíme se na stránce Pz najít n-tici, která se na mokrých pozicích shoduje s nosičem. Podaří-li se, je nalezená n-tice stegoobjektem a mokré pozice zůstávají nezměněny. Extrakce: Vstup: Stegoobjekt y Σ n. Vyhledáme y v knize. Podíváme se na index stránky, na které jsme y našli a zpráva = index. W5
Důkaz (pokračování). Podaří se vkládacímu algoritmu najít na stránce P z n-tici, která má na n σn určených pozicích určené hodnoty? V celé knize je takových n-tic dohromady q σn. Jaká je pravděpodobnost, že žádná z nich není v P z? P z vznikla náhodným výběrem q n σn+εn prvků z Σ n. Pravděpodobnost selhání p je méně než ( q n q σn p < q n ) q n σn+εn = ( ( 1 + 1 q n(1 σ) ) ) q n(1 σ) q εn }{{} jde k e 1 0,37 pro n. Pro dostatečně velká n je označený výraz menší než 1 2. Od jistého n tedy platí p < ( 1 2 )qεn 0. W6
Praktické řešení Algoritmy z důkazu označme: y = EmbB (x, S, z). z = ExtB (y). S {1,..., n} je množina indexů suchých složek nosiče. Pomocí samoopravného kódu C: Σ = Fq. B = F n q /C. Pz = C(z). ExtF n q /C = Hy, kde H je paritní matice kódu C. Lze tedy využít maticové vkládání. Cílem však není minimalizovat počet změn, ale zajistit, aby k nim docházelo jen na určených pozicích. W7
Vkládání při kvantizaci předchůdce nosiče transformace nekvantizovaný nosič kvantizace nosič vkládání při kvantizaci stegoobjekt Kvantizace: Zaokrouhlení na nejbližší povolenou hodnotu. Množina povolených hodnot může být např. {0, 1,..., 255} nebo {..., 3, 0, 3, 6,... }. Příklady transformací: Snížení hloubky barev rastrového obrázku. Zmenšení rozměrů rastrového obrázku a intrpolace. Blok 8 8 hodnot jasové složky obrázku na blok 8 8 DCT koeficientů. W8
Příklady kvantizace vs. vkládání při kvantizaci Množina povolených hodnot je Z. Nezaokrouhlený prvek: x i = 14,9. Kvantizace: Zaokrouhlíme na 15. Distorze je 0,1 2. Vkládání při kvantizaci: Vložení bitu 0: Zaokrouhlíme na 14. Distorze je 0,9 2. Vložení bitu 1: Zaokrouhlíme na 15. Distorze je 0,1 2. Průměrná distorze při vkládání (0,9 2 + 0,1 2 )/2 = 0,41. Vkládáním při kvantizaci se distorze v průměru zvýší o ρ i = 0,41 0,01 = 0,4. Jiný příklad: x i = 14,5. Vkládáním se distorze nezvýší. Říkáme, že x i je nestranný. W9
Využití psaní na mokrý papír Ke každému x i přiřadíme ρ i : ρ i = (průměrná distorze při vkládání) (distorze při zaokrouhlení) Je-li množina povolených hodnot Z, pak δ i = dist( x i, Z) = [ x i ] x i ρ i = δ2 i + (1 δ i ) 2 2 δ i = 1 2 δ i. Množinu S volíme tak, aby součet i S ρ i byl minimální. Vkládání provádíme usměrněním zaokrouhlení. W10
Vkládání při dvojité ztrátové kompresi Problém: Chceme nestranné prvky, ale ty jsou vzácné. Řešení: Vyrobíme je přirozenou cestou. Předchůdce nosiče: JPEG s faktorem kvality f 1. Transformace: Rekomprimace obrázku na nižší kvalitu f 2. Za příznivých okolností vznikne v nekvantizovaném nosiči nosiči hodně nestranných DCT koeficientů. Pro f 1 = 85 a f 2 = 70 je jich v našem cvičném obrázku 14 % z celkového počtu všech koeficientů. W11
Příklad kvantizačních matic 5 3 3 5 7 12 15 18 10 7 6 10 14 24 31 37 4 4 4 6 8 17 18 17 7 7 8 11 16 35 36 33 4 4 5 7 12 17 21 17 8 8 10 14 24 34 41 34 Q (85) = 4 5 7 9 15 26 24 19 5 7 11 17 20 33 31 23, Q (70) = 8 10 13 17 31 52 48 37 11 13 22 34 41 65 62 46 7 11 17 19 24 31 34 28 14 21 33 38 49 62 68 55 15 19 23 26 31 36 36 30 29 38 47 52 62 73 72 61 22 28 29 29 34 30 31 30 43 55 57 59 67 60 62 59 DCT koeficienty na pozici (1,3) v předchůdci nosiče jsou zaokrouhlovány na násobek 3. Při snížení kvality se zaokrouhlují na násobek 6. Téměř polovina bloků bude mít na této pozici nestranný DCT koeficient. Na pozicích s větším kvantizačním koeficientem bude nestranných výrazně méně než polovina, např. 5 %. (V předchůdci nosiče je totiž většina zaokrouhlena na 0.) W12
Dvojitá ztrátová komprese Nejlepších výsledků se dosahuje, když se berou nestranné DCT koeficienty z bloků s vysokou neuniformitou. Neuniformitu můžeme například měřit jako součet čtverců DCT koeficientů v bloku (energie bloku). Shrnutí: Máme zprávu délky m, potřebujeme počet suchých s > m. Postupně nabíráme nestranné koeficienty do S, dokud jich nemáme dost. Přednostně vybíráme koeficienty z nejvíce neuniformních bloků. W13
Dvouúrovňové ±1 vkládání Jednoduché ±1 vkládání zprávy z {0, 1} m do nosiče x Z n : Jestliže lsb(x i ) = z i, pak y i := x i. Jestliže lsb(x i ) z i, pak y i := x i + a, kde a R { 1, 1}. Obrana proti kvantitativním útokům na LSB embedding. Rozhodnutí přičíst anebo odečíst 1 nám dává plnou kontrolu nad hodnotou druhého nejnižšího bitu: Poslední dvě cifry binárního rozvoje x i (... 00) 2 (... 01) 2 (... 10) 2 (... 11) 2 x i + 1 (... 01) 2 (... 10) 2 (... 11) 2 (... 00) 2 x i 1 (... 11) 2 (... 00) 2 (... 01) 2 (... 10) 2 W14
Dvouúrovňové ±1 vkládání Značení: H je paritní matice [n, n m 1 ] 2 kódu C s průměrnou vzdáleností r a, relativní kapacitou α a efektivitou e. B je kódová kniha, která umožňuje vkládat m 2 bitů do nosiče délky n bitů, z nichž r a je suchých. x a y vektor nejnižších bitů nosiče a stegoobjektu. x a y vektor druhých nejnižších bitů nosiče a stegoobjektu. Zpráva má dvě části z F m 1 2 a z F m 2 2. Extrakce: z = Ext H (y ) a z = Ext B (y ). W15
Dvouúrovňové ±1 vkládání Vkládání: První zpráva bude vložena maticovým vkládáním y = Emb H (x, z ). Na pozicích, kde dochází ke změnám, jsme schopni ovlivnit druhý nejnižší bit. Tyto označíme jako suché S = { i x i y i }; E[ S ] = r a. Druhá zpráva bude vložena metodou psaní na mokrý papír y = Emb B (x, S, z ). Stegoobjekt y se vytvoří z nosiče x změnami +1 nebo 1 tak, aby y byly nejnižší bity a y druhé nejnižší bity stegoobjektu. W16
Dvouúrovňové ±1 vkládání Relativní kapacita a efektivita: Efektivita kódu C je e = m 1 /r a, čili r a = m 1 /e. Podle věty o mokrém nosiči je m 2 S a víme, že S r a. Relativní kapacita a efektivita dvouúrovňového ±1 vkládání je tedy α ±1 = m 1 + m 2 n m 1 + m 1 /e n e ±1 = m 1 + m 2 m 1 + m 1 /e r a m 1 /e Zároveň si můžeme všimnout, že = α + α e, = e + 1. m1 α e = n m 1 r a = r m1+m2 a n = n m 1 +m 2 = α ±1. r a e ±1 W17
Dvouúrovňové ±1 vkládání Tvrzení Nechť C je binární kód, jehož efektivita dosahuje horní meze na spodní efektivitu binárních kódů. Potom dvouúrovňovým ±1 vkládání s kódem C lze dosáhnout efektivity libovolně blízké horní mezi na spodní efektivitu ternárních kódů, za předpokladu, že kód C je dostatečně dlouhý. W18
Dvouúrovňové ±1 vkládání Důkaz. Připomeňme, že H q (x) := x log q x (1 x) log q (1 x) + x log q (q 1). Dle předpokladu je e = α/h 1 2 (α), čili α = H 2(α/e). Dosadíme a upravíme ( α ) e α ±1 α + α e = H 2 + α e = (log 2 3)H 3 ( α e ) ( ) α±1 = (log 2 3)H 3. e ±1 Vyjádříme e ±1 α ±1 H 1 3 (α ±1/ log 2 3). W19
Stegosystém ZZW Značení: H 0 vzniká přidáním nulového sloupce k paritní matici Hammingova kódu délky 2 m 0 1. H 1 je paritní matice nějakého [b, b m 1 ] 2 kódu C s průměrnou vzdáleností od kódu r a. B je kódová kniha, která umožňuje vkládat m 2 bitů do nosiče délky bm 0 bitů, z nichž r a m 0 je suchých. Extrakce: 2 m 0 j=1 v y 1,j H 0 y 1 y 1,1 y 1,2... y 1,2 m 1 0 s 1,1 s 1,2... s 1,m0 2 m 0 j=1 v y 2,j H 0 y 2 y 2,1 y 2,2... y 2,2 m 2 0 s 2,1 s 2,2... s 2,m0 v....... 2 m 0...... j=1 v y b,j H 0 y b y b,1 y b,2... y b,2 m b 0 s b,1 s b,2... s b,m0 H 1 v Ext B (s) z 1 F m 1 2 z 2 F m 2 2 s W20
Stegosystém ZZW Zakódování první části zprávy: Nosič je rozdělen na b bloků velikosti 2 m 0. Pro každý blok spočteme u i = 2 m 0 j=1 x i,j. Zakódujeme první část zprávy v = Emb H1 (u, z 1 ). Jestliže u i = v i, pak y i = x i. Jestliže u i v i, pak y i získáme tak, že v x i provedeme právě jednu změnu. (Volba její pozice v bloku dává prostor k zakódování další zprávy.) Očekávaný počet změn je tedy r a. W21
Stegosystém ZZW Zakódování druhé části zprávy: Syndrom H 0 x i lze upravit na libovolnou hodnotu provedením právě jedné změny v x i. Pro každý blok spočteme r i = H 0 x i. Když u i = v i, označíme složky vektoru r i jako mokré, v opačném případě jako suché. Všechna r 1,..., r b sřetězíme do jediného vektoru r. Vektor r je mokrý nosič s očekávaným počtem suchých prvků r a m 0. Podle věty o mokrém nosiči lze do r vložit m 2 r a m 0 bitů informace. W22
Stegosystém ZZW Parametry stegosystému: Délka nosiče = b2 m 0. Celkový počet bitů zprávy = m 1 + m 2 m 1 + r a m 0. Očekávaný počet změn = r a. Relativní kapacita a efektivita: α m 1 + r a m 0 b2 m 0 a e m 1 + r a m 0 r a. W23
Stegosystém ZZW Zobecnění a vylepšení: Bloky nemusejí mít všechny stejnou délku 2 m 0. Zpráva z 1 se nemusí kódovat do u najednou. Lze postupovat po blocích. Můžeme použít dvouúrovňové ±1 vkládání. Místo binárních Hammingových kódů lze použít ternární. (Kód C však zůstává binární.) Dokonce i pro triviální kód C (tj. z 1 = v) dosahuje stegosystém ZZW výborných výsledků. W24
Triviální ZZW vs. perfektní kódy 10 3 10 2 10 1 1 3 Relativní kapacita α 0 5 10 15 Efektivita e ZZW bin. Hammingovy ±1 ZZW ter. Hammingovy semiternární ZZW binární Golayův ternární Golayův e(2, α) e(3, α) Odstup od obou mezí je < 0,6. W25