STEGANOGRAFIE A DIGITÁLNÍ MÉDIA

Podobné dokumenty
Psaní na mokrý papír. Andrew Kozlik KA MFF UK

Vkládání pomocí Viterbiho algoritmu

Čísla a aritmetika. Řádová čárka = místo, které odděluje celou část čísla od zlomkové.

Dále budeme předpokládat, že daný Markovův řetězec je homogenní. p i1 i 2

Matematika I A ukázkový test 1 pro 2018/2019

Numerická matematika 1. t = D u. x 2 (1) tato rovnice určuje chování funkce u(t, x), která závisí na dvou proměnných. První

ANALÝZA VZTAHU DVOU SPOJITÝCH VELIČIN

2. Definice pravděpodobnosti

KOMPLEXNÍ ČÍSLA. Algebraický tvar komplexního čísla

Neparametrické metody

2.5. MATICOVÉ ŘEŠENÍ SOUSTAV LINEÁRNÍCH ROVNIC

ASYMPTOTICKÉ VLASTNOSTI ODHADŮ S MINIMÁLNÍ KOLMOGOROVSKOU VZDÁLENOSTÍ

Matice. a m1 a m2... a mn

V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti

1 Báze a dimenze vektorového prostoru 1

Definice 13.1 Kvadratická forma v n proměnných s koeficienty z tělesa T je výraz tvaru. Kvadratická forma v n proměnných je tak polynom n proměnných s

Definice. Vektorový prostor V nad tělesem T je množina s operacemi + : V V V, tj. u, v V : u + v V : T V V, tj. ( u V )( a T ) : a u V které splňují

permutace, popisující nějaké symetrie, je i π permutace, popisující nějakou symetrii.

[1] samoopravné kódy: terminologie, princip

Iterační výpočty. Dokumentace k projektu pro předměty IZP a IUS. 22. listopadu projekt č. 2

1 Co jsou lineární kódy

1 Řešení soustav lineárních rovnic

1 Linearní prostory nad komplexními čísly

Báze a dimenze vektorových prostorů

Korelační energie. Celkovou elektronovou energii molekuly lze experimentálně určit ze vztahu. E vib. = E at. = 39,856, E d

z = a bi. z + v = (a + bi) + (c + di) = (a + c) + (b + d)i. z v = (a + bi) (c + di) = (a c) + (b d)i. z v = (a + bi) (c + di) = (ac bd) + (bc + ad)i.

PŘEDNÁŠKA 2 POSLOUPNOSTI

ANOVA. Analýza rozptylu při jednoduchém třídění. Jana Vránová, 3.lékařská fakulta UK, Praha

1 Lineární prostory a podprostory

Polynomy. Mgr. Veronika Švandová a Mgr. Zdeněk Kříž, Ph. D. 1.1 Teorie Zavedení polynomů Operace s polynomy...

Energie elektrického pole

10. Vektorové podprostory

Lineární algebra : Lineární prostor

LOGICKÉ OBVODY J I Ř Í K A L O U S E K

Ivana Linkeová SPECIÁLNÍ PŘÍPADY NURBS REPREZENTACE. 2 NURBS reprezentace křivek

6. Demonstrační simulační projekt generátory vstupních proudů simulačního modelu

6 Lineární geometrie. 6.1 Lineární variety

Texty k přednáškám z MMAN3: 4. Funkce a zobrazení v euklidovských prostorech

Maticová exponenciála a jiné maticové funkce

Lineární algebra : Metrická geometrie

REGRESNÍ ANALÝZA. 13. cvičení

Vzdálenost jednoznačnosti a absolutně

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

Úvod do informatiky. Miroslav Kolařík. Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008.

Monte Carlo metody Josef Pelikán CGG MFF UK Praha.

1 Soustavy lineárních rovnic

Necht tedy máme přirozená čísla n, k pod pojmem systém lineárních rovnic rozumíme rovnice ve tvaru

ANALÝZA A KLASIFIKACE DAT

POROVNÁNÍ MEZI SKUPINAMI

Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy

Matematická analýza pro informatiky I. Limita posloupnosti (I)

19. Druhý rozklad lineární transformace

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij]

[1] Definice 1: Polynom je komplexní funkce p : C C, pro kterou. pro všechna x C. Čísla a 0, a 1,..., a n nazýváme koeficienty polynomu.

(Cramerovo pravidlo, determinanty, inverzní matice)

BCH kódy. Alena Gollová, TIK BCH kódy 1/27

u (x i ) U i 1 2U i +U i+1 h 2. Na hranicích oblasti jsou uzlové hodnoty dány okrajovými podmínkami bud přímo

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

Tepelná kapacita = T. Ē = 1 2 hν + hν. 1 = 1 e x. ln dx. Einsteinův výpočet (1907): Soustava N nezávislých oscilátorů se stejnou vlastní frekvencí má

CHYBY MĚŘENÍ. uvádíme ve tvaru x = x ± δ.

(4x) 5 + 7y = 14, (2y) 5 (3x) 7 = 74,

Limita a spojitost funkce. 3.1 Úvod. Definice: [MA1-18:P3.1]

Generující kořeny cyklických kódů. Generující kořeny. Alena Gollová, TIK Generující kořeny 1/30

Riemannův určitý integrál

9 Kolmost vektorových podprostorů

PQ-stromy a rozpoznávání intervalových grafů v lineárním čase

3. Reálná čísla. většinou racionálních čísel. V analytických úvahách, které praktickým výpočtům

Lineární algebra : Násobení matic a inverzní matice

Operace s maticemi. 19. února 2018

KOMPLEXNÍ ČÍSLA. Algebraický tvar komplexního čísla

X = x, y = h(x) Y = y. hodnotám x a jedné hodnotě y. Dostaneme tabulku hodnot pravděpodobnostní

8a.Objektové metody viditelnosti. Robertsův algoritmus

p 2 q , tj. 2q 2 = p 2. Tedy p 2 je sudé číslo, což ale znamená, že

[1] x (y z) = (x y) z... (asociativní zákon), x y = y x... (komutativní zákon).

Soustavy linea rnı ch rovnic

Lineární algebra : Násobení matic a inverzní matice

Matematika 2 Úvod ZS09. KMA, PřF UP Olomouc. Jiří Fišer (KMA, PřF UP Olomouc) KMA MA2AA ZS09 1 / 25

27 Systémy s více vstupy a výstupy

Kolik existuje různých stromů na pevně dané n-prvkové množině vrcholů?

Vícekriteriální rozhodování. Typy kritérií

0.1 Úvod do lineární algebry

Věta o dělení polynomů se zbytkem

Soustavy. Terminologie. Dva pohledy na soustavu lin. rovnic. Definice: Necht A = (a i,j ) R m,n je matice, b R m,1 je jednosloupcová.

PRIMITIVNÍ FUNKCE DEFINICE A MOTIVACE

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic

PRIMITIVNÍ FUNKCE. Primitivní funkce primitivní funkce. geometrický popis integrály 1 integrály 2 spojité funkce konstrukce prim.

Zavedení a vlastnosti reálných čísel

1 Kardinální čísla. množin. Tvrzení: Necht X Cn. Pak: 1. X Cn a je to nejmenší prvek třídy X v uspořádání (Cn, ),

4. Kombinatorika a matice

VLIV VELIKOSTI OBCE NA TRŽNÍ CENY RODINNÝCH DOMŮ

Nechť je číselná posloupnost. Pro všechna položme. Posloupnost nazýváme posloupnost částečných součtů řady.

1 Vektorové prostory.

ANALÝZA RIZIKA A JEHO CITLIVOSTI V INVESTIČNÍM PROCESU

Literatura: Kapitola 5 ze skript Karel Rektorys: Matematika 43, ČVUT, Praha, Text přednášky na webové stránce přednášejícího.

Lineární algebra Kapitola 1 - Základní matematické pojmy

1.1 Existence a jednoznačnost řešení. Příklad 1.1: [M2-P1] diferenciální rovnice (DR) řádu n: speciálně nás budou zajímat rovnice typu

Obsah. 1 Protokoly Diffieho-Hellmanův a ElGamalův. 3 Hledání generátoru v Z p

Lineární algebra : Polynomy

6 Ordinální informace o kritériích

Transkript:

2 STEGANOGRAFIE A DIGITÁLNÍ MÉDIA 3 ANDREW KOZLÍK 4 5 6 7 Toto jsou provzorní skrpta k přednášce Steganografe a dgtální méda na MFF UK v letním semestru akademckého roku 204/5. Témata zde pokrytá tvoří jen polovnu přednášky. Zbytek látky prozatím najdete v kaptolách 5, 7 a knhy Steganography n dgtal meda [5] od J. Frdrch. 8. STEGANOGRAFIE V PALETOVÝCH OBRÁZCÍCH 9 0 2.. Úvod Na úvod přpomeňme pár základních poznatků o reprezentac barev. Barvy jsou reprezentovány jako uspořádané trojce (r, g, b) {0,,..., 255} 3, kde jednotlvé složky udávají ntenztu červené, zelené a modré. V množně všech barev můžeme měřt podobnost 3 nebol vzdálenost dvou barev pomocí Eukledovské normy (r, g, b ) (r 2, g 2, b 2 ) = 4 (r r 2 ) 2 + (g g 2 ) 2 + (b b 2 ) 2. Množnu všech barev lze uspořádat lexkografcky 5 jako množnu trojc, tj. nejdříve podle ntenzty červené složky a v případě, kdy dvě barvy 6 mají stejnou ntenztu červené, uspořádáme je podle ntenzty zelené složky a konečně 7 v případě, kdy dvě barvy mají stejnou ntenztu červené stejnou ntenztu zelené, uspo- 8 řádáme je podle ntenzty modré složky. 9 Exstují jné reprezentace barev, které mohou být vhodnější pro měření podobnost, 20 např. CIELAB. V prostoru CIELAB jsou barvy rozloženy na jasovou složku a dvě barvo- 2 nosné složky. Transformace mez reprezentacem RGB a CIELAB je nelneární. 22 23 24 25 26 27 28 29 30 3 32 33 34 35.2. Paletové obrázky Paletový obrázek sestává z palety barev a z matce ndexů. Paleta barev je množna C = { c I } ndexovaná čísly I = {0,,..., C }. Paleta je zpravdla uložena v souboru jako tabulka velkost C 3 a ndexy jsou ukazatele do této tabulky. Matce ndexů má rozměry shodné s rozměry obrázku, její složky odpovídají pxelům obrázku. Barva pxelu je tedy určena ndexem na příslušné pozc v matc ndexů. Každý paletový obrázek má mnoho různých reprezentací určených uspořádáním palety. Můžeme totž vzít soubor obsahující paletový obrázek a v tabulce, kde je uložena paleta, zaměnt první dva řádky, tj. první dvě barvy. Aby obrázek jako takový zůstal zachován, musíme odpovídajícím způsobem přečíslovat matc ndexů tak, že všechny složky s ndexem 0 přepíšeme na a naopak ty s ndexem přepíšeme na 0. Kdykolv budeme hovořt o přeuspořádání palety, máme zároveň na mysl, že se odpovídajícím způsobem přečísluje matce ndexů. Steganograf v paletových obrázcích lze provádět dvěma základním způsoby.

36 37 38 39 40 4 42 43 44 45 46 47 48 49 50 5 52 53 54 55 56 57 58 59 60 6 62 63 64 65 66 67 68 69 70. Volbou uspořádání palety. Množnu všech permutací palety S C lze uspořádat lexkografcky a každé permutac můžeme tedy přřadt pořadové číslo od 0 do C!. Každému pořadovému číslu pak přřadíme nějakou zprávu. V případě palety s 256 barvam máme nosč s kapactou log 2 256! 684 btů, což odpovídá například,5 SMS zprávám. Výhodou tohoto postupu je, že nezanechává žádnou vdtelnou stopu v obrázku jako takovém, protože jedné co děláme je, že volíme jednu z mnoha různých ekvvalentních reprezentací obrázku. Nevýhodou je jednak omezená kapacta, jednak to, že chaotcky uspořádaná paleta okamžtě budí podezření. Naprostá většna programů totž př ukládání paletového obrázku setřídí paletu podle jasu, popřípadě podle odstínu, anebo podle četnost jednotlvých barev v obrázku. Z toho plyne další nevýhoda, kterou je to, že otevření stegoobrázku a jeho opětovné uložení má zpravdla za následek znčení nesené zprávy. 2. Vkládání do matce ndexů. (a) Paletu setřídíme podle jasu. Bty zprávy vkládáme do nejnžších btů jednotlvých ndexů v matc. Uspořádání palety podle jasu zajstí, že změna nejnžšího btu v ndexu přílš neovlvní jas pxelu. Tento postup používá algortmus EzStego. Jeho nevýhodou je, že změna nejnžšího btu v ndexu může vést k zásadní změně odstínu pxelu. (b) Budeme postupovat jako v předchozím případě, ale paletu uspořádáme tak, aby každé dvě po sobě následující barvy v paletě byly co možná nejpodobnější. Můžeme j například uspořádat tak, aby součet C 2 =0 c c + nabýval mnmální možné hodnoty. Problém hledání takovéhoto uspořádání je shodný s problémem obchodního cestujícího. Jak známo, jedná se o NP-úplný problém. (c) Zvolíme zcela jný přístup než je vkládání do nejnžšího btu. Ke každé barvě v paletě přřadíme hodnotu 0 nebo takovým způsobem, aby nejpodobnější barva v paletě měla opačnou hodnotu. Hodnotu, kterou každé barvě přřazujeme, nazýváme parta barvy. Partu barev tedy volíme tak, aby se mnmalzovala velkost změn vyvolaných vkládáním. O tomto přístupu pojednává následující část..3. Vkládání s optmálním přřazením party Zobrazení, které každé barvě přřazuje partu, budeme značt p. Dále budeme pracovat se zobrazením f, které každé barvě přřazuje nejpodobnější barvu v paletě. Defnce. Nechť C = { c I } je paleta a (p, f) je dvojce zobrazení, kde p : I {0, } a f : I I. Jestlže pro každé I platí p() = p(f()) a c c f() = mn j I\{} c c j, 7 72 73 74 75 76 77 pak říkáme, že (p, f) je optmální přřazení party pro paletu C. Optmální přřazení party exstuje pro každou paletu, není však jednoznačně určeno. Exstenc dokážeme v algortmu.3. Nejednoznačnost je zřejmá už z toho, že je-l (p, f) optmální přřazení party pro C, pak také (p, f), kde p () = p() pro všechna I, je optmální přřazení party pro C. Jným slovy, všem barvám můžeme přřadt opačnou partu než jakou jm přřazuje p. Mohou však exstovat další optmální přřazení party, například taková, která jsou na půl cesty mez p a p. To znamená, že u některých palet 2

78 79 80 8 82 83 84 85 86 87 88 89 90 9 92 93 94 95 96 97 98 99 00 0 02 03 04 05 06 07 08 09 0 lze p obrátt na určté podmnožně množny I a získat nové optmální přřazení party. Dalším důvodem nejednoznačnost může být stuace, kdy paleta obsahuje tř nebo více různých barev, které jsou navzájem stejně vzdálené, čl např. barvy c, c 2, c 3 takové, že c c 2 = c 2 c 3 = c 3 c. Stejně tak an zobrazení f nemusí být jednoznačně určeno, protože v paletě se může nacházet barva, ke které exstují dvě nebo více nejpodobnějších barev. Nejednoznačnost optmálního přřazení party se můžeme zbavt tím, že na množně barev zavedeme lneární uspořádání. To pak lze využít k upřednostnění jednoho optmálního přřazení party před ostatním; vz jž zmíněný algortmus.3. Jedním možným lneárním uspořádáním palety je její uspořádání v souboru samotném, tj. podle ndexů. Jak už jsme zmínl v předchozí část, spoléhat se na toto uspořádání není deální. Lepším řešením je uspořádat barvy lexkografcky jakožto třísložkové vektory. Jedný problém, který zde může nastat je stuace, kdy paleta obsahuje duplcty. Obsahuje-l totž paleta dvě stejné barvy s různým ndexy, pak nelze jednoznačným způsobem přřadt jedné z nch partu 0 a druhé partu bez toho, abychom se odkázal na jejch uspořádání v souboru. Řešením je ztotožnt duplctní barvy. Než přstoupíme k algortmu pro sestrojení optmálního přřazení party, uvedeme příslušné algortmy vkládání a extrakce. Algortmus. (vkládání s optmálním přřazením party). vstup: nosč x = (x,..., x n ) I n, zpráva z = (z,..., z m ) {0, } m, klíč π S n, optmální přřazení party (p, f) výstup: stegoobjekt y = (y,..., y n ) I n for =,..., n do 2 f > m or p(x π() ) = z then 3 y π() := x π() 4 else 5 y π() := f(x π() ) 6 return y Algortmus.2 (extrakce s optmálním přřazením party). vstup: stegoobjekt y = (y,..., y n ) I n, klíč π S n, délka zprávy m, optmální přřazení party (p, f) výstup: zpráva z = (z,..., z m ) {0, } m for =,..., m do 2 z := p(y π() ) 3 return z Algortmus vkládání algortmus extrakce oba pracují s optmálním přřazením party (p, f) pro daný obrázek. Měl bychom zdůraznt, že pár (p, f) se v rámc komunkace neposílá, ale odesílatel příjemce s ho spočítají samostatně ze znalost palety. Aby stegosystém byl funkční, je nezbytné, aby obě strany dospěly ke stejnému přřazení party. Zároveň bychom uvítal, kdyby se tak stalo v případě, že př přenosu dojde k přeuspořádání palety. Následující algortmus pro sestrojení optmálního přřazení party tuto vlastnost splňuje. Algortmus.3 (optmální přřazení party). vstup: paleta bez duplct C = { c I } výstup: optmální přřazení party (p, f) pro C, nezávslé na uspořádání palety C E := { ( c c j, c, c j ), j I, j } 3

2 whle E do 3 (d, c, c j ) := mn LEX E 4 f p(j) s undefned then 5 p() := 0 6 p(j) := 7 f() := j 8 f(j) := 9 E := E \ (R {c, c j } C) 0 else p() := p(j) 2 f() := j 3 E := E \ (R {c } C) 4 return (p, f) 2 3 4 5 6 7 8 9 20 Důkaz. Funkce mn LEX vrací lexkografcky mnmální prvek množny, což zde znamená prvek ( c c j, c, c j ) z množny E s mnmální vzdáleností c c j a je-l více takových prvků, pak se rozhoduje podle pořadí barvy c, popřípadě podle barvy c j. Přpomeňme, že barvy jsou také uspořádány lexkografcky. Za předpokladu, že paleta neobsahuje duplcty, je funkce mn LEX dobře defnovaná. Algortmus njak nezávsí na uspořádání palety, což je zřejmé z toho, že nkde nedochází k porovnávání ndexů a j. Algortmus skončí, protože množna E je konečná a př každém průchodu cyklem se zmenší o alespoň jeden prvek, konkrétně o prvek (d, c, c j ) vybraný funkcí mn LEX. Po každém průchodu hlavním cyklem platí pro všechna I následující tř nvaranty p() není defnované (E (R {c } C)), p() je defnované f() je defnované, p() je defnované p() = p(f()). 2 22 23 24 25 26 27 28 29 30 3 32 33 34 Vzhledem k tomu, že na konc algortmu je množna E prázdná, z prvního nvarantu plyne, že p() {0, } pro všechna I. Z druhého nvarantu potom plyne, že také f je řádně defnované zobrazení, a ze třetího, že f obrací partu. Zbývá ukázat, že pro každé I je c c f() = mn j I\{} c c j. Hlavní cyklus algortmu prochází dvojce barev (c, c j ) od nejpodobnějších dvojc po nejméně podobné dvojce, a takto postupně předepsuje f() := j, popřípadě také f(j) :=. Potřebujeme se tedy akorát přesvědčt, že jakmle je hodnota zobrazení f jednou defnovaná pro určtý ndex, už se v pozdější fáz algortmu nepřepíše. K přepsání by mohlo dojít pouze operací na řádku 7, 8 nebo 2. Složením prvního a druhého nvarantu vdíme, že jakmle je f() defnované, je E (R {c } C) = a není tedy možné, aby funkce mn LEX vrátla prvek s barvou c na druhé pozc. Na řádcích 7 a 2 proto nemůže dojít k přepsaní jž jednou defnované hodnoty zobrazení f. Podle druhého nvarantu platí, že jakmle je f(j) defnované, je p(j), čl podmínka na řádku 4 není splněna. To znamená, že an na 8. řádku nemůže dojít k přepsaní. 35 36 37 38 2. STEGANOGRAFIE POMOCÍ MATICOVÉHO VKLÁDÁNÍ 2.. Úvod Uvažujme stegosystém, který rozděluje prvky nosče na tříprvkové bloky a do každého bloku vkládá dva bty. Př standardním vkládání do nejnžšího btu bychom u každého 4

39 40 4 42 43 44 45 46 47 48 bloku vložl bty zprávy např. do prvních dvou prvků a třetí prvek bychom nechal nedotčený. Jnou možností je rozložt bty zprávy do nejnžších btů celého bloku takovým způsobem, aby příjemce z každého bloku stegoobjektu (y, y 2, y 3 ) extrahoval zprávu (z, z 2 ) jako z = lsb(y ) lsb(y 2 ) a z 2 = lsb(y 2 ) lsb(y 3 ). Vkládání v tomto případě probíhá tak, že vyšetříme, která z následujících čtyř varant nastává a provedeme příslušnou úpravu: lsb(x ) lsb(x 2 ) lsb(x 2 ) lsb(x 3 ) y y 2 y 3 z z 2 x x 2 x 3 z z 2 flp(x ) x 2 x 3 z z 2 x x 2 flp(x 3 ) z z 2 x flp(x 2 ) x 3 Pro lepší náhled můžeme tuto tabulku porovnat s odpovídající tabulkou pro standardní vkládání do nejnžšího btu: lsb(x ) lsb(x 2 ) y y 2 y 3 z z 2 x x 2 x 3 z z 2 flp(x ) x 2 x 3 z z 2 x flp(x 2 ) x 3 z z 2 flp(x ) flp(x 2 ) x 3 49 Jak jž víme, efektvta standardního vkládání do nejnžšího btu je rovna 2 bez ohledu 50 na délku nosče č délku vložené zprávy. Př pohledu na poslední řádek v obou tabulkách 5 vdíme, že nově představená metoda bude mít vyšší efektvtu vkládání. Předpokládáme- 52 l, že všechny čtyř možnost v první tabulce jsou stejně pravděpodobné, pak každý blok 53 přspívá v průměru hodnotou 3/4 k celkové dstorz vyvolané vkládáním. Počet vložených btů je roven dvojnásobku počtu bloků. Efektvta vkládání je tedy 2b/( 3 4 b) = 8 3 2,667, 55 kde b je počet bloků nosče. Vzhledem k tomu, že počet bloků nehraje rol, budeme jej napříště z našch úvah vynechávat. Nová metoda tedy vkládá o 2 3 btu víc na jednotku 57 dstorze oprot dřívější metodě. Ve skutečnost se jedná jen o specální případ metody 58 známé jako matcové vkládání, která byla poprvé představena Crandallem [3] v roce 998. 59 Tento název vychází z toho, že extrakc lze popsat pomocí matcového násobení ( ) ( ) z 0 ) = lsb(x lsb(x z 2 0 2 ). lsb(x 3 ) 60 6 62 63 64 65 66 67 68 69 70 7 72 Jak vdíme, je načase změnt značení, abychom mohl s objekty snáze pracovat po blocích a abychom se mohl oprostt od zobrazení lsb a flp. Vzhledem k tomu, že na nosče a stegoobjekty přestaneme nahlížet jako na celky a budeme pracovat na nžší úrovn bloků, přestaneme se zároveň zatěžovat pojmem stegoklíče. Posloupnost hodnot spjatých s blokem nosče a s blokem stegoobjektu budeme značt x = (x,..., x n ) F n q a y F n q, kde n je velkost jednoho bloku. Blok zprávy budeme značt z F m q, kde m je počet q-árních symbolů vkládaných do jednoho bloku nosče. Pod pojmem spjatá hodnota s pro q = 2 můžeme například představovat lsb příslušného prvku nosče č stegoobjektu, nebo například partu ve smyslu vkládání s optmálním přřazením party v paletových formátech. Zde budeme mít spjatou hodnotou na mysl zbytek po dělení prvku číslem q, když obecně může přcházet v úvahu jné přřazení. Rozvláčnému výrazu posloupnost hodnot spjatých s blokem se budeme dále vyhýbat, místo toho budeme pro jednoduchost hovořt přímo o x jako o nosč a o y jako o stegoobjektu. 5

m α e,000 2,000 2 0,667 2,667 3 0,429 3,429 4 0,267 4,267 5 0,6 5,6 6 0,095 6,095 7 0,055 7,055 8 0,03 8,03 9 0,08 9,08 Tabulka 2.: Relatvní kapacta α a efektvta e Hammngových [2 m, 2 m m] 2 kódů. 73 74 75 76 77 78 79 80 8 82 83 84 85 86 87 88 89 90 9 92 93 94 95 96 97 98 99 200 20 Měl bychom zdůraznt, že zpráva se nyní skládá z q-árních symbolů, avšak kapactu nadále měříme v btech. Proto relatvní kapacta nosče α = (log 2 q mb )/(nb) = m(log 2 q)/n, kde b je počet bloků. An zde nehraje počet bloků rol, a můžeme jej tedy napříště vynechávat. 2.2. Matcové vkládání pomocí Hammngových kódů Nechť H je partní matce Hammngova [ qm q, qm q m] q kódu. Podle defnce se jedná o matc jejíž sloupce tvoří všechny nenulové vektory z F m q, až na násobek. Pro začátek uvažujme bnární případ. Sloupce partní matce je vhodné uspořádat lexkografcky, např. 0 0 0 H = 0 0 0. 0 0 0 Extrakc zprávy ze stegoobjektu budeme provádět násobením partní matcí zleva z = Hy. Vkládání zprávy je malnko pracnější. Mějme nosč x a zprávu z. Spočítáme Hx, tento vektor se nazývá syndrom vektoru x. Jestlže Hx z, pak musíme určt změnu, kterou je potřeba provést na x, aby rovnost platla. V matc H najdeme sloupec, který je roven z Hx. Označme jeho pořadí v matc jako j; tento sloupec značíme H j. Za stegoobjekt zvolíme y = x + e j, kde e j je j-tý vektor kanoncké báze prostoru F n q. Snadno ověříme, že Hy = Hx + He j = Hx + H j = z. Lexkografcké uspořádání sloupců partní matce umožňuje okamžtě určt pořadové číslo sloupce j, protože sloupec je bnární reprezentací čísla j. V podstatě stejný postup se používá př dekódování Hammngových kódů. Př dekódování je cílem získat nulový syndrom Hy = 0, vektor e j je potom chybový vektor a x + e j je opravené slovo. Dekódování je tedy specálním případem vkládání, a to vkládání nulové zprávy. Relatvní kapacta stegosystému založeného na bnárních Hammngových kódech je α = m/n = m/(2 m ). Z popsu algortmu vkládání vdíme, že je-l Hx z, pak dstorze na blok je, jnak 0. Předpokládáme-l, že zprávy z jsou voleny náhodně z F m q s rovnoměrným rozdělením, pak očekávaná dstorze na blok je (2 m )/2 m = 2 m. Efektvta vkládání je e = m/( 2 m ) btů na jednotku dstorze. Případ m = vede na standardní vkládání do nejnžšího btu a m = 2 odpovídá úvodnímu příkladu. Tabulka 2. ukazuje relatvní kapactu a efektvtu bnárních Hammngových kódů pro 9 nejmenších hodnot m. 6

202 203 V prax bychom vkládání pomocí Hammngových kódů realzoval následující způsobem. Na vstupu dostaneme nosč a zprávu. Najdeme největší celé číslo m takové že m počet btů zprávy 2 m počet prvků nosče. 204 205 206 207 208 209 20 2 22 23 24 25 26 27 28 29 220 22 222 V nosč vyhradíme místo, kam vložíme hodnotu m, a zbytek nosče rozdělíme na bloky velkost 2 m. Následně vkládáme pomocí Hammngova [2 m, 2 m m] 2 kódu. Tento postup používá stegosystém F5 pro vkládání do obrázků ve formátu JPEG. Nyní přejděme ke q-árním Hammngovým kódů. Jak už jsem zmínl v úvodu, prvky nosče asocujeme s prvky tělesa F q pomocí operace x x mod q. Jestlže q není prvočíslo, pak hodnotám {, 2,..., q } přřadíme prvky F q \ {0} lbovolným způsobem. Než budeme pokračovat, všmněme s, že bez použtí matcového vkládání lze tímto přístupem dosáhnout lepší efektvty vkládání než u klasckého vkládání do nejnžšího btu. Pro q = 3 můžeme do každého prvku nosče vložt jeden ternární symbol zprávy 0,, nebo 2 tak, že prvek necháme jak je, anebo jeho hodnotu zvýšíme č snížíme o, aby zbytek po dělení 3 byl roven vkládanému symbolu zprávy. Do každého prvku tak vkládáme log 2 3,585 btů a očekávaná dstorze na každý prvek je 3 02 + 3 2 + 3 ( )2 = 2/3. Tímto docílíme efektvty vkládání e = 3 (log 2 3)/2 2,377. Pro vyšší hodnoty q už ovšem efektvta této metody klesá. Algortmus 2. (vkládání pomocí Hammngova kódu). vstup: nosč x F n q, zpráva z F m q, partní matce H Hammngova [n, n m] q kódu výstup: stegoobjekt y F n q takový, že Hy = z f Hx = z then 2 return x 3 else 4 najd j-tý sloupec matce H a a F q takové, že z Hx = ah j 5 return x + ae j Důkaz. Hy = Hx + ahe j = Hx + ah j = z. Příklad 2.2. Máme partní matc Hammngova [3, 0] 3 kódu 0 0 0 0 H = 0 0 0 0 2 2 2 0 2 0 2 0 2 0 2 223 Do níže uvedeného bloku nosče budeme vkládat zprávu z = (, 2, 0) T F 3 3. Složky vektoru 224 x získáme z prvků nosče jako zbytek po dělení třem. Blok nosče: 20 2 9 9 8 6 9 20 24 23 20 20 9 225 x = ( 2 0 0 2 0 2 2 2 ) T 226 227 228 229 230 23 232 Spočteme z Hx = (, 2, 0) T (2,, ) T = (2,, 2) T, což je rovno 2 (, 2, ) T = 2H 2. Odtud y = x + 2e 2. Blok nosče upravíme takovým způsobem, aby zbytek po dělení jednotlvých prvků 3 dával y. To lze v tomto případě docílt přčtením lbovolné hodnoty z 2 + 3Z na 2 pozc. Zvolíme pochoptelně tu, která je v absolutní hodnotě mnmální, tj.. y = ( 2 0 0 2 0 2 2 ) T Blok stegoobjektu: 20 2 9 9 8 6 9 20 24 23 20 9 9 Jednou změnou velkost jsme vložl 3 log 2 3 4,755 btů zprávy. 7

Efektvta e 5 0 5 0 q = 2 q = 3 q = 4 q = 5 0 3 0 2 0 0 Relatvní kapacta α Obrázek 2.: Efektvta Hammngových [ qm kapactě pro q = 2, 3, 4 a 5. q, qm q m] q kódů v závslost na relatvní 233 234 235 236 237 Na závěr příkladu ještě poznamenejme, že vložení zprávy lze dosáhnout mnoha jným způsoby. Například následující blok stegoobjektu nese tutéž zprávu, ale vznkl z bloku nosče pomocí dvou změn velkost. 2 2 9 9 8 6 9 20 24 23 20 20 8 Relatvní kapacta vkládání pomocí q-árních Hammngových kódů je α = m log 2 q (q m )/(q ). 238 Z algortmu 2. vdíme, že je-l Hx z, pak př vkládání zprávy z dojde ke změně jedné 239 hodnoty v bloku. Předpokládáme, že zprávy z jsou voleny náhodně z F m q s rovnoměrným 240 rozdělením. Potom očekávaný počet změn na jeden blok je (q m )/q m = q m. Otázkou 24 zůstává, jaká je velkost změn. Pro q lché přcházejí v úvahu změny δ q := { q+ 2,...,, 0,,..., q 2 } a pro q sudé δ q := { q 2 +,...,, 0,,..., q 2 }. Všechny nenulové 243 velkost změn jsou stejně pravděpodobné. Očekávaný příspěvek jedné změny k dstorz je tudíž ( 244 δ q δ 2 )/(q ). Efektvta vkládání je e = (q )m log 2 q ( q m ) δ q δ 2. 245 246 247 248 249 250 25 252 253 Na obrázku 2. máme graf efektvty Hammngových [ qm q, qm q m] q kódů v závslost na relatvní kapactě pro q = 2, 3, 4, 5 a několk nejnžších hodnot m. Červená čára vyznačuje nejvyšší možnou efektvtu dosažtelnou pomocí Hammngových kódů pro dané α. Ve většně případů se této maxmální efektvty dosahuje ternárním kódy. Výjmečně může být výhodnější použít bnární kód a pro α > log 2 3 v podstatě víceární kódy. Pro α se však ve skutečnost už nejedná o matcové vkládání v pravém slova smyslu, jde totž o vkládání pomocí [, 0] q kódu. Ačkolv se ternární kódy jeví jako optmální, nesmíme zapomenout, že pro některé aplkace se hodí výhradně bnární kódy. Příkladem může být vkládání př redukc barevné 8

254 255 256 257 258 259 260 26 262 263 264 265 266 267 268 269 270 27 272 273 274 275 276 hloubky, kdy chceme zaokrouhlovat na nejblžší sudou č lchou hodnotu. Obdobně je tomu v případě vkládání s optmálním přřazením party v paletových obrázcích. Konečně také př vkládání do obrázku JPEG pomocí dekrementace absolutních hodnot AC koefcentů, jako ve stegosystému F5. Dále je třeba poznamenat, že neefektvta Hammngových kódů pro q 4 je vázána na algortmus vkládání 2.. Tento algortmus sce provádí nejvýše jednu změnu v každém bloku, avšak nezohledňuje velkost změny. V příkladu 2.2 jsme vděl, že vkládání lze realzovat více různým způsoby, např. také změnou dvou prvků v nosč. Dvě malé změny mohou mít nžší příspěvek k dstorz než jedna velká. S algortmem vkládání, který mnmalzuje nkolv počet změn, ale celkový příspěvek změn k dstorz, bychom dospěl k vyšší efektvtě vkládání pro q 4. Otázkou je, jaká by byla složtost takového algortmu. 2.3. Matcové vkládání obecně Na úvod přpomeňme pár základních pojmů ze základního kurzu samoopravných kódů. Podprostor C prostoru F n q nazýváme lneární kód délky n. Dmenz C značíme k. Defnujeme Hammngovu váhu w(u) vektoru u F n q jako počet nenulových složek v u. Hammngova vzdálenost vektorů u, v F n q je d H (u, v) := w(v u) a Hammngova vzdálenost vektoru u F n q od množny X F n q je d H (u, X ) = mn v X w(v u). Mnmální vzdálenost nebol mnmální váha kódu C je mn c C\{0} w(c). Lneární kód délky n a dmenze k nad F q s mnmální vzdáleností d označujeme jako [n, k, d] q kód nebo zkráceně jen [n, k] q kód. Matc H typu (n k) n nad tělesem F q s lneárně nezávslým řádky nazýváme partní matcí kódu C, jestlže C = { u F n q Hu = 0 }. Prostor F n q můžeme faktorzovat podle podprostoru C. Defnujeme rozkladovou třídu příslušnou syndromu s F n k q C(s) := { u F n q Hu = s }. 277 278 279 Defnce. Nechť H je partní matce [n, k] q kódu C a nechť e : F n k q F n q je zobrazení takové, že pro všechna s F n k q je He(s) = s a w(e(s)) = mn u C(s) w(u). Potom defnujeme matcovou extrakc a matcové vkládání Ext H (y) := Hy a Emb H,e (x, z) := x + e(z Hx), 280 28 282 283 284 285 286 287 288 289 290 29 292 kde x, y F n q a z F n k q. Vdíme, že Ext H (Emb H,e (x, z)) = H(x+e(z Hx)) = Hx+z Hx = z pro každé x F n q a z F n k q. Místo Emb H,e budeme psát jen Emb H, protože nás zobrazení e samo o sobě obvykle nezajímá. Podstatné je pouze to, že zobrazení e zajšťuje, že počet změn vyvolaných vkládáním je mnmalzován. Defnce. Nechť C je [n, k] q kód. Zobrazení D : F n q C nazýváme mnmum-dstance dekodér kódu C, jestlže pro každé u F n q platí w(d(u) u) = d H (u, C). Jak jsme vděl v předchozí část, v případě Hammngových kódů je výpočet e(s) jednoduchý. Spočívá tolko v nalezení toho sloupce partní matce, který je násobkem s. Z defnce Hammngových kódů máme zaručeno, že takový sloupec v partní matc exstuje. U jných kódů už nemusí být výpočet e(s) tak jednoduchý, a v případě obecných kódů se dokonce jedná o NP-úplný problém []. Následující algortmus nám dává návod, jak spočítat Emb H pomocí mnmum-dstance dekodéru samoopravného kódu. 9

293 294 295 296 297 298 Algortmus 2.3 (matcové vkládání). vstup: nosč x F n q, zpráva z F n k q, partní matce H [n, k] q kódu C, mnmum-dstance dekodér D kódu C výstup: Emb H (x, z) zvol u F n q takové, že Hu = z 2 return D(x u) + u Důkaz. Abychom dokázal správnost algortmu, stačí ověřt, že za e(z Hx) v defnc matcového vkládání můžeme zvolt D(x u) (x u). Prvním požadavkem je, aby He(z Hx) = z Hx. To je zřejmě splněno H(D(x u) (x u)) = 0 Hx + z. 299 Druhým požadavkem je, aby w(e(z Hx)) = mn u C(z Hx) w(u), a skutečně w(d(x u) (x u)) = d H (x u, C) = mn w(c (x u)) = mn c C w(v), v C+u x 300 30 302 303 304 305 306 307 308 kde množna C + u x = C(H(u x)) = C(z Hx). K algortmu matcového vkládání ještě poznamenejme, že je-l partní matce v systematckém tvaru, tj. H = (I n k H ), pak první krok algortmu je trvální. Za u lze totž zvolt vektor z doplněný k nulam u = (z T 0 T k )T. Budeme-l chtít v prax používat matcové vkládání pro obecné samoopravné kódy, pak budeme muset slevt z požadavku mnmalty w(e(s)), abychom docíll lepší časové efektvty. To lze realzovat jednoduše tím, že mnmum-dstance dekodér v algortmu 2.3 nahradíme jným, časově efektvnějším, dekodérem. Defnce. Pro každý [n, k] q kód C defnujeme pokrývací poloměr kódu C r c := max d H (u, C) u F n q 309 30 3 a průměrnou (Hammngovu) vzdálenost od C r a := q n u F n q d H (u, C). Věta 2.4 (o matcovém vkládání). Nechť C je [n, k] q kód s partní matcí H, pokrývacím poloměrem r c a průměrnou vzdáleností od kódu r a. Potom max x,z d H(x, Emb H (x, z)) = r c a E x,z [d H (x, Emb H (x, z))] = r a, 32 33 kde x F n q a z F n k q. Důkaz. Nechť s F n k q, pak pro každé u C(s) platí d H (u, C) = w(e(s)), neboť d H (u, C) = mn w(u c) = mn w(v) = mn w(v) = w(e(s)). c C v C+u v C(s) První část tvrzení je dokázána následujícím rovnostm. Nechť x F n q, potom max z F n k q d H (x, Emb H (x, z)) = max z F n k q max s F n k q w(e(z Hx)) = w(e(s)) = max s F n k q u C(s) d H (u, C) = max d H (u, C) = r c. u F n q 0

34 35 36 37 38 39 320 32 322 323 324 325 326 327 Předposlední rovnost plyne z toho, že F n q je dsjunktním sjednocením C(s) přes všechna s F n k q. V důkazu druhé část předpokládáme, že zpráva z je volena náhodně z F n k q s rovnoměrným rozdělením. E [d H(x, Emb H (x, z))] = E[w(e(s))] = x,z s q n k q n s F n k q q k w(e(s)) = q n s F n k q Předposlední rovnost opět plyne z toho, že F n q všechna s F n k q. s F n k q u C(s) w(e(s)) = d H (u, C) = q n u F n q d H (u, C) = r a. je dsjunktním sjednocením C(s) přes V případě těles F 2 a F 3 je dstorze praktcky rovna počtu změn vyvolaných vkládáním, protože téměř všechny změny lze uskutečnt přčtením nebo odečtením hodnoty od příslušného prvku nosče. Výjmka může nastat v případě, kdy pracujeme s kódem nad tělesem F 3 a prvky nosče mají omezený obor hodnot, např. {0,,..., 255}. Problém nastává pro krajní hodnoty takového ntervalu. Vkládáme-l hodnotu 2 do prvku s hodnotou 0 nebo hodnotu do prvku s hodnotou 255 musíme v prvním případě provést změnu +2 a ve druhém případě změnu 2. Zanedbáme-l tyto specální případy, můžeme vyslovt následující. Důsledek 2.5. Jestlže q {2, 3}, pak efektvta matcového vkládání pro [n, k] q kód C je e = (n k)(log 2 q)/r a, kde r a je průměrná vzdálenost od kódu. 328 V případě těles F q, q 4, je stuace o něco složtější. Přpomeňme, že pro q lché přcházejí v úvahu změny δ q := { q+ 2,...,, 0,,..., q 2 } a pro q sudé δ q := { q 329 2 +,...,, 0,,..., q 330 2 }. Předpokládáme, že každá nenulová změna je stejně pravděpodobná. Dstorze potom vychází r a (q ) 33 δ q δ2, kde r a je průměrná vzdálenost od přísluš- 332 ného kódu. 333 Jak jž víme, maxmální možný počet změn vyvolaných matcovým vkládáním je roven pokrývacímu poloměru r c. Dstorze je proto shora omezena hodnotou r c (q ) 334 δ q δ 2, 335 což nám naopak dává následující spodní mez na efektvtu vkládání. 336 337 338 339 340 34 342 343 344 Defnce. Pro [n, k] q kód s pokrývacím poloměrem r c defnujeme spodní efektvtu vkládání nα(q ) e := r c δ q δ 2, kde α = ( k n ) log 2 q. 2.4. Spodní efektvta vkládání a velkost tělesa Cílem této část je nahlédnout, jak velkost tělesa ovlvňuje efektvtu vkládání, a pokust se odhalt optmální velkost tělesa. Př cestě k tomuto cíl budeme mmo jné potřebovat zobecněnou defnc entropcké funkce. Defnce. Pro každé celé číslo q 2 defnujeme q-ární entropckou funkc H q : [0, ] R předpsem H q (x) := x log q x ( x) log q ( x) + x log q (q ), x (0, ), 345 a v krajních bodech ntervalu defnujeme spojtě H q (0) = 0 a H q () = log q (q ).

q = 3 H q (x) q = 2 0 2 x 2 3 Obrázek 2.2: q-ární entropcká funkce H q pro q = 2 a 3. 346 347 348 349 350 Na obrázku 2.2 máme graf q-ární entropcké funkce pro q = 2 a q = 3. Pro v F n q a r 0, defnujeme koul se středem v a poloměrem r jako B(v, r) := { u F n q d H (u, v) r }. Počet prvků lbovolné koule v F n q o poloměru r značíme V q (n, r). Jak známo V q (n, r) = r ( n ) =0 (q ) Lemma 2.6. Nechť 0 r n q, potom n H q ( r n ) log q V q (n, r). Důkaz. Na úvod s všmněme toho, že nerovnost r 35 n q uvedenou v předpokladu lemmatu můžeme přepsat ( r n ) r 352 q a dále jako (n r)(q ). Pro r = 0 353 lemma zřejmě platí, dále tedy předpokládejme r > 0. Začneme tím, že výraz q nhq(r/n) rozepíšeme podle defnce entropcké funkce. q nhq(r/n) = ( r n) r ( r n) (n r) (q ) r = n n r r (q )r (n r) n r Dále vyjádříme n n pomocí bnomckého rozvoje a získáme spodní odhad. n ( n n n = (r + (n r)) n = )r n (q ) (n r) (q ) =0 r ( ) ( ) n r (n r) n (q ) =0 r =0 (n r)(q ) ) ( ) r r (n r) n (q ) (n r)(q ) ( n r (n r)(q ) 354 V posledním kroku jsme využl předpokladu, že. Po dosazení nerovnost za n n vdíme, že platí q nhq(r/n) r ( n 355 =0 ) (q ), což jsme měl dokázat. 356 357 358 359 360 Z dervace entropcké funkce H q(x) = log q (( q)( x )) lze snadno ověřt, že H q je na ntervalu (0, q ) rostoucí. Funkce H q je navíc na [0, q ] spojtá a její obor hodnot je tedy [0, ]. Můžeme proto defnovat nverzní funkc Hq : [0, ] [0, q ]. Věta 2.7. Pro každý [n, k] q kód s pokrývacím poloměrem r c platí r c n Hq (α/ log 2 q), kde α = ( k n ) log 2 q. 2

0 Horní mez na e 8 6 4 2 0 α = 0. α =.0 2 3 4 5 6 7 8 9 0 q Obrázek 2.3: Horní mez e(q, α) na spodní efektvtu vkládání v závslost na q pro α = 0,, 0,2,...,,0. 36 362 363 364 365 366 367 368 Důkaz. Jestlže rc n q pak tvrzení věty platí trválně. Dále tedy předpokládejme, že rc n < q. Pokrývací poloměr kódu C můžeme také chápat jako nejmenší r c takové, že c C B(c, r c) = F n q. Jným slovy pro každý [n, k] q kód s pokrývacím poloměrem r c platí q n q k V q (n, r c ). Podle lemmatu 2.6 dostáváme horní odhad na délku zprávy n k log q V q (n, r c ) n H q ( rc n ). Vzhledem k tomu, že H q je na ntervalu [0, q ] rostoucí, máme Hq ( k n ) rc n. Z předchozí věty plyne horní mez na spodní efektvtu matcového vkládání v závslost na relatvní kapactě α e(q, α) := α(q ) Hq (α/ log 2 q) e. (2.) δ q δ2 369 Na obrázku 2.3 máme grafy této horní meze v závslost na q pro několk různých hodnot α. 370 Grafy naznačují, že chceme-l pro pevně zvolené α dosáhnout nejvyšší možné efektvty 37 matcového vkládání, měl bychom použít nějaký ternární kód. Tato úvaha ovšem stojí na 372 několka nepotvrzených předpokladech. Především nemáme dokázáno, že horní mez (2.) je 373 skutečně dosažtelná, jným slovy, že pro každé α skutečně exstují ternární kódy, jejchž 374 pokrývací poloměr je lbovolně blízko k mez uvedené ve větě 2.7. V případě bnárních 375 kódů tomu tak je. Přesněj řečeno, je známo, že pro každé α a ɛ > 0 exstuje [n, k] 2 kód s pokrývacím poloměrem nejvýše n H2 n α ɛ. To plyne z následující věty, kde za ϱ zvolíme H2 Věta 2.8 ([2], Theorem 2.3.5). Pro každé ϱ [0, 378 2 ) exstuje posloupnost celých čísel 379 {k n } n= taková, že k n /n H 2 (ϱ) + O(n log n) 380 38 382 383 384 a podíl všech [n, k n ] 2 kódů s pokrývacím poloměrem nejvýše ϱn konverguje k pro n. Dále je třeba mít na pamět, že (2.) není horní mezí na efektvtu, ale na spodní efektvtu. Efektvta vkládání je přtom pro daný kód vždy vyšší než jeho spodní efektvta. Rozdíl mez těmto dvěma velčnam spočívá v tom, že místo očekávaného počtu změn r a vyvolaných vkládáním počítáme u spodní efektvty s maxmálním počtem změn r c. Aby 3

385 386 387 388 389 390 39 392 393 394 395 tedy pro nějaký kód byla spodní efektvta kódu dobrou aproxmací jeho skutečné efektvty, je třeba, aby hodnoty r c a r a tohoto kódu měly k sobě blízko. Následující věta potvrzuje, že alespoň v případě většny bnárních kódů tomu tak skutečně je. Věta 2.9 ([7], Theorem 4). Nechť 0 < α < a ε > 0. Podíl všech [n, ( α)n] 2 kódů, pro něž platí r c r a /n ε, konverguje k pro n. Konečně nesmíme zapomenout, že celá naše úvaha stojí na předpokladu, že statstckou detekovatelnost vkládání lze měřt pomocí dstorze, což je ovšem otevřená otázka. 2.5. Perfektní kódy a horní mez na efektvtu vkládání Tvrzení 2.0. Nechť C je [n, k] q kód s průměrnou vzdáleností r a a nechť r je největší celé číslo takové, že V q (n, r) q n k. Potom r a q k n r ( ) n (q ), přčemž rovnost nastává právě tehdy, když C je perfektní kód. = 396 Důkaz. Označme D multmnožnu { w(c u) u F n q, c C }. Každá hodnota {0,,..., n} má v D četnost q k (q ) ( n ). Našm cílem je získat spodní odhad výrazu mn c C w(c u). Tento výraz vyjadřuje součet určté q n -prvkové podmultmnožny q multmnožny D, a můžeme ho proto zespodu odhadnout součtem q n nejmenších hodnot z D. Podle předpokladu je r =0 qk (q ) ( n ) q n, a následující spodní odhad je tedy součtem nejvýše q n nejmenších hodnot z D 397 398 u F n 399 400 40 u F n q r mn w(c u) c C =0 q k (q ) ( n ). 402 403 404 405 406 407 408 409 40 4 42 43 44 45 Jestlže C je perfektní kód s mnmální váhou d, pak r = (d )/2 a F n q je dsjunktním sjednocením B q (c, r) přes všechna c C. V takovém případě zřejmě nastává rovnost. Naopak, nastává-l rovnost, pak q k V q (n, r) = q n a v součtu u F n mn c C w(c u) q sčítáme právě q n nejmenších hodnot z D. Každá z těchto hodnot je nejvýše r, a proto každé u F n q leží ve sjednocení c C B q(c, r). Jelkož q k V q (n, r) = q n, musí se jednat o dsjunktní sjednocení, tím pádem o perfektní kód. Přpomeňme, že mez perfektní kódy patří všechny úplné kódy, jednobodové kódy a bnární opakovací kódy lché délky. Tyto jsou známy jako trvální perfektní kódy. Každý netrvální perfektní kód má parametry Hammngova kódu, Golayova [23, 2, 7] 2 kódu, anebo Golayova [, 6, 5] 3 kódu. Spojením předchozího tvrzení s důsledkem 2.5 získáme následující. Důsledek 2.. Nechť C je [n, k] q kód, kde q {2, 3}, a nechť r je největší celé číslo takové, že V q (n, r) q n k. Potom efektvta matcového vkládání pro kód C je e qn k (n k) log 2 q r = (q )( ) n, přčemž rovnost nastává právě tehdy, když C je perfektní kód. 4

Efektvta e 5 0 5 bn. Hammngovy ter. Hammngovy bnární Golayův ternární Golayův bn. opakovací e(2, α) e(3, α) 0 0 3 0 2 0 0 Relatvní kapacta α Obrázek 2.4: Efektvta bnárních a ternárních perfektních kódů v závslost na relatvní kapactě ve srovnání s horní mezí na spodní efektvtu pro q = 2 a 3. 46 47 48 49 420 42 422 423 424 425 426 Tento důsledek nám říká, že zvolíme-l pevně n, α a q, a budeme vybírat mez všem [n, n( α/ log 2 q)] q kódy, pak nejvyšší efektvty vkládání dosáhneme volbou perfektního kódu (exstuje-l perfektní kód s těmto parametry). Toto ovšem neznamená, že by perfektní kódy byly nejlepší volbou za každých podmínek. Na obrázku 2.4 máme graf efektvty různých bnárních a ternárních perfektních kódů v závslost na relatvní kapactě. Vdíme, že perfektní kódy obecně nedosahují příslušnou horní mez na spodní efektvtu vkládání. Z předchozí část přtom víme, že zvolíme-l pevně pouze α a q, a přpustíme, aby n bylo lbovolně velké, pak alespoň pro q = 2 exstují kódy s těmto parametry, kterým se lze přblížt lbovolně blízko k mez e(2, α). Ncméně perfektní kódy nemají svou efektvtou daleko k příslušné mez. Odstup od horní meze na spodní efektvtu je do výše,7. 427 Příklad 2.2. Díky důsledku 2. můžeme jednoduše spočítat efektvtu vkládání pro 428 Golayovy kódy. Stačí za r dosadt (d )/2, kde d je mnmální váha kódu. Pro bnární Golayův kód máme α = /23 a e = 2 / 3 = ( ) 23 429 = 264/292 3,856. Pro ternární Golayův kód máme α = 5(log 2 3)/ 0,720 a e = 5 3 5 (log 2 3)/ 2 = 2( ) 430 = 43 25(log 2 3)/462 4,68. 432 Cvčení 2.3. Ukažte, že efektvta bnárního opakovacího kódu lché délky n je 2(n ) ( n 2 n( ) ). n (n )/2 433 434 435 3. SOUČTOVĚ A ROZDÍLOVĚ POKRÝVACÍ MNOŽINY V této část představíme metodu vkládání, která zobecňuje matcové vkládání ternárním kódy. Začneme jednoduchým příkladem schématu, které rozděluje nosč na dvouprvkové 5

zpráva z x + 2x 2 0 2 3 0 ( 0, 0) (+, 0) ( 0, ±) (, 0) (, 0) ( 0, 0) (+, 0) ( 0, ±) 2 ( 0, ±) (, 0) ( 0, 0) (+, 0) 3 (+, 0) ( 0, ±) (, 0) ( 0, 0) Tabulka 3.: Vkládání pomocí (2,, Z 4 )-SDCS. 436 bloky (x, x 2 ) a do každého bloku vkládá kvaternární symbol z Z 4. Extrakce je defno- 437 vána jako Ext(y, y 2 ) = (y +2y 2 ) mod 4. Vkládání probíhá tak, že nejdříve provedeme ex- 438 trakc na bloku nosče a ověříme, zda je výsledek roven z. Jestlže není, změníme blok nosče 439 tak, jak je uvedeno v tabulce 3.. Například jestlže Ext(x, x 2 ) = (x +2x 2 ) mod 4 = 3, ale 440 my chceme do bloku vložt symbol 2, pak stačí snížt x o, čl (y, y 2 ) = (x, x 2 )+(, 0). Očekávaný příspěvek k celkové dstorz je 3 4 pro každý blok. V každém bloku máme 2 bty zprávy, čl efektvta je e = 2/ 3 4 = 8 3 2,667 a relatvní kapacta je α = 2/2 =. To 443 je zatím nejlepší schéma s takto vysokou kapactou, které jsme dosud vděl. Nyní toto 444 schéma zobecníme. 445 446 447 Defnce. Nechť n a r jsou přrozená čísla, (G, +) je konečná abelovská grupa a A = {a,..., a n } je posloupnost po dvou různých hodnot z G. Jestlže pro každé g G exstují s,..., s n {, 0, } takové, že n s r a = n s a = g, = 448 449 450 45 452 453 454 pak říkáme, že A je součtově a rozdílově pokrývací množna (sum and dfference coverng set, SDCS) s parametry (n, r, G). Pro každé g G defnujeme SDCS váhu prvku g { n } n w A (g) := mn s s,..., s n {, 0, }, s a = g. = Úvodní příklad můžeme popsat jako SDCS {, 2} s parametry (2,, Z 4 ). Všmněme s, že z každého [n, k] 3 kódu s pokrývacím poloměrem r c lze sestrojt SDCS s parametry (n, r c, F n k 3 ) jednoduše tak, že za A zvolíme sloupce jeho partní matce. Defnce. Nechť A = (a,..., a n ) je SDCS a (y,..., y n ) Z n je blok stegoobjektu. Defnujeme SDCS extrakc z bloku (y,..., y n ) jako = Ext A (y,..., y n ) := n y a. = 455 456 457 458 Algortmus 3. (SDCS vkládání). vstup: SDCS A = (a,..., a n ) G n, blok nosče (x,..., x n ) Z n, zpráva z G výstup: blok stegoobjektu (y,..., y n ) Z n takový, že Ext A (y,..., y n ) = z g := z n = x a 2 najd s,..., s n takové, že g = n = s a a zároveň n = s = w A (g) 3 return (x + s,..., x n + s n ) Důkaz. Ext A (y,..., y n ) = n = (x + s )a = g + n = x a = z. 6

(n, r, G) α e A (4, 3, Z 53 ),4320 2,5727 {, 2, 6, 8} (3, 2, Z 7 ),3625 2,6726 {, 2, 6} (5, 3, Z 05 ),3428 2,7756 {, 3, 4, 36, 42} (6, 3, Z 74 ),2405 2,9300 {, 3, 9, 2, 5, 86} (4, 2, Z 30 ),2267 2,944 {, 3, 9, 4} (5, 2, Z 42 ),0785 3,445 {, 2, 7, 4, 8} (6, 2, Z 6 ) 0,9885 3,3498 {, 2, 5,, 9, 27} (7, 2, Z 80 ) 0,903 3,522 {, 22, 26, 30, 34, 36, 39} (8, 2, Z 04 ) 0,8376 3,6676 {2, 4, 6, 3, 6, 34, 39, 40} (9, 2, Z 32 ) 0,7827 3,809 {2,, 33, 34, 44, 50, 55, 58, 62} Tabulka 3.2: Příklady různých SDCS, jejch relatvní kapacta a efektvta. Převzato z [9]. Efektvta e 5 bn. Hammngovy 4 3 2 0 0.2 0 0. 0 0. 0 0.2 Relatvní kapacta α ter. Hammngovy SDCS ternární Golayův bn. opakovací e(2, α) e(3, α) Obrázek 3.: Efektvta SDCS z tabulky 3.2 v závslost na relatvní kapactě ve srovnání s perfektním kódy a s horní mezí na spodní efektvtu pro q = 2 a 3. 459 460 46 462 463 464 V případě, že prvky stegoobjektu mají omezený obor hodnot X Z, může zde nastat stejný problém jako př matcovém vkládání, že y = x X nebo y = x + X. V prvním případě musíme stuac napravt tím, že zvolíme y = x +2 a ve druhém případě y = x 2. Tyto specální případy z následujících úvah vynecháváme. Z algortmu vkládání vdíme, že hodnota r udává horní mez na počet změn v bloku vyvolaných SDCS vkládáním. Relatvní kapacta a efektvta SDCS vkládání jsou zřejmě α = log 2 G n a e = log 2 G g G w A(g)/ G = G αn g G w A(g), 465 za předpokladu, že zprávy jsou voleny z G náhodně s rovnoměrným rozdělením. Ta- 466 bulka 3.2 uvádí příklady několka různých SDCS, jejch relatvní kapactu a efektvtu. 467 Na obrázku 3. potom vdíme srovnání těchto SDCS s perfektním kódy a s horní mezí na 468 spodní efektvtu pro q = 2 a 3. Sčítáním odečítáním prvků z A lze sestrojt nejvýše 2 ( n 469 ) prvků z G, proto pro každou 470 (n, r, G)-SDCS platí r ( ) n G 2 = V 3 (n, r). (3.) =0 7

47 Z tohoto můžeme odvodt obdobu věty 2.7. 472 Věta 3.2. Pro každou (n, r, G)-SDCS platí r nh 3 (α/ log 2 3). Důkaz. Jestlže r/n 2 473 3 pak tvrzení věty platí trválně. Dále tedy předpokládejme, že r/n < 2 474 3. Podle rovnce 3. a lemmatu 2.6 je log 3 G log 3 V 3 (n, r) nh 3 (r/n). Vzhledem k tomu, že H 3 je na ntervalu [0, 2 475 3 ] rostoucí, máme H 3 ((log 3 G )/n) r/n. Zbývá dosadt 476 log 3 G = nα/ log 2 3. 477 478 479 480 48 482 483 484 485 Stejně jako v část o matcovém vkládání můžeme defnovat pojem spodní efektvty tak, že očekávaný počet změn vyvolaných vkládáním nahradíme maxmálním počtem změn. Z předchozí věty pak plyne horní odhad na spodní efektvtu vkládání e := αn r α H3 (α/ log 2 3). Tento výsledek je shodný s tím, který jsme získal pro matcové vkládání ternárním kódy. Jným slovy pomocí SDCS nelze v nejhorším případě dosáhnout o nc lepší efektvty než pomocí matcového vkládání. Ncméně SDCS mohou vést k mnohem jednodušší schématům. Dobrým příkladem je (3, 2, Z 7 )-SDCS {, 2, 6} s relatvní kapactou,3625 a efektvtou 2,6726. Zkuste sestrojt srovnatelně jednoduchý ternární kód s podobným parametry. 486 487 488 489 490 49 492 493 494 495 496 497 498 499 500 50 502 503 504 505 506 507 508 509 50 5 52 4. PSANÍ NA MOKRÝ PAPÍR V kaptole 2 jsme vděl, jak se dá mnmalzovat dopad změn vyvolaných vkládáním, a to mnmalzací jejch počtu pomocí samoopravných kódů. V této kaptole s předvedeme další aplkac samoopravných kódů, kterou lze opět využít k mnmalzac dopadu změn, ale také k několka dalším zajímavým účelům. Je zřejmé, že vkládání do některých prvků nosče má vyšší dopad na detekovatelnost než vkládání do jných. V případě rastrových a paletových obrázků se například chceme vyhnout vkládání do pxelů, které se nacházejí v oblastech s víceméně unformní barvou, zejména pak v přesvícených oblastech obrázku. V obrázcích JPEG se zase chceme vyhnout vkládání do nulových AC koefcentů, protože jejch změna zanechává v obrázku vdtelné stopy. Máme-l nosč délky n a zprávu délky m n, pak můžeme podle předchozích krterí vybrat m prvků nosče, které jsou nejvhodnější pro vkládání, a do nch vložt zadanou zprávu. Problém je, že příjemce nemůže vědět, do kterých prvků jsme vkládal. U obrázku JPEG jsme se mohl například vyhýbat nulovým AC koefcentům, ale př vkládání se některé nenulové koefcenty změnly na nulové a příjemce neví, které nuly vznkly vkládáním, a které pocházejí z nosče. Obdobně u rastrového nebo paletového obrázku jsme se mohl vyhýbat oblastem s nízkou texturou, ale vložením se textura v některých oblastech snížla a příjemce opět nemůže vědět, ve kterých oblastech se textura snížla vkládáním, a ve kterých byla nízká jž v nosč. Tento problém se dá řešt tak, že dojde-l například př vkládání do obrázku JPEG k vynulování AC koefcentu, pak vložený bt považujeme za ztracený, vynulovaný koefcent ponecháme na hodnotě 0 a bt vložíme znovu do dalšího nenulového AC koefcentu. Příjemce potom extrahuje bty zprávy výhradně z nenulových AC koefcentů. Nevýhodou tohoto postupu je, že v typckém obrázku JPEG tímto dojde ke snížení kapacty o přblžně 25 %. Tento problém by se dal také řešt tak, že v rámc vkládání bychom příjemc navíc nějakým způsobem poskytl nformac o tom, které prvky obsahují vloženou zprávu a které nkolv. Měl bychom zdůraznt, že tuto nformac není 8

53 54 55 56 57 58 59 520 52 522 523 524 525 526 527 528 529 530 53 532 533 534 535 536 537 538 539 540 54 542 543 544 545 546 547 548 549 550 55 552 553 554 555 obecně možné sdělt v rámc klíče, protože ten s strany zpravdla dohodnou ještě předtím, než vůbec dojde k výběru nosče nebo dokonce vznku nosče. Tento problém se přrovnává k psaní na mokrý papír. Na papíře máme obrázek, jehož některé pxely jsou mokré a ostatní suché. Suché pxely smíme upravovat, ale mokré nkolv. Obrázek odešleme, ale ještě než dorazí příjemc, tak uschne. Příjemce nyní netuší, které pxely jsme využl ke vkládání, a které nkolv. Podle následující věty můžeme prostřednctvím částečně mokrého nosče skoro jstě sdělt příjemc téměř stejně velkou zprávu, jako kdyby příjemce znal rozmístění suchých prvků. Podmínkou je dostatečná velkost nosče. Poznamenejme, že příjemce se ve skutečnost nedozví, které prvky byly suché. Věta 4. (o mokrém nosč). Pro každé ε > 0, δ > 0 a σ [0, ] exstuje n N a stegosystém takový, že do nosče velkost n symbolů, z nchž σn je suchých, lze s pravděpodobností alespoň δ vložt nformac velkost (σ ε)n symbolů. Důkaz. Označme množnu všech symbolů Σ a její velkost q. (Obvykle uvažujeme Σ = F 2 nebo Σ = F 3.) Dále označme Z množnu všech zpráv, ta má q (σ ε)n prvků. Stegosystém se ncalzuje vytvořením kódové knhy B = { P z z Z }, do které se náhodně rozmístí všechny n-tce ze Σ n tak, aby na každé stránce P z bylo q ( σ+ε)n n-tc. Vkládací a extrakční algortmus tuto kódovou knhu sdílejí. Vkládací algortmus má na vstupu nosč s n σn mokrým symboly a zprávu z. Vkládání probíhá tak, že algortmus se pokusí na stránce P z najít vhodnou n-tc, tj. takovou, která se na mokrých pozcích shoduje s nosčem, a v případě úspěchu vytvoří stegoobjekt zaznamenáním této n-tce do nosče. Mokré pozce tak zůstávají nezměněny. Extrakční algortmus přečte ze stegoobjektu n-tc a vyhledá j v knze, čímž určí stránku, na které se nachází, a z ndexu stránky získá zprávu. Otázkou je, zda se vkládacímu algortmu podaří na stránce P z najít n-tc, která má na n σn předem určených pozcích předem určené hodnoty. Pro každou zprávu je v množně Σ n celkem q σn vhodných n-tc. Stránka P z vznkla náhodným výběrem q ( σ+ε)n n-tc ze Σ n. Pravděpodobnost, že náhodně zvolená n-tce z Σ n není vhodná je (q n q σn )/q n. Pravděpodobnost, že žádná z q n σn+εn náhodně vybraných n-tc, které leží v P z, není vhodná, je méně než ( q n q σn ) ( q n σn+εn ( q n = + ) ) q n( σ) q εn q n( σ). ( ) Pro n má výraz + qn( σ) lmtu e a pro dostatečně velká n je tedy q n( σ) menší než. Z toho plyne, že pravděpodobnost, že P z neobsahuje vhodnou n-tc, se s rostoucím n blíží nule. Pro algortmy vkládání a extrakce popsané v důkazu předchozí věty můžeme použít označení y = Emb B (x, S, z) a z = Ext B (y), kde x, y, z a S jsou nosč, stegoobjekt, zpráva a množna ndexů suchých složek nosče. Je zřejmé, že stegosystém tak, jak je popsaný v důkazu, není vhodný pro praktcké použtí, protože velkost kódové knhy je exponencální v n. Tento problém lze řešt pomocí samoopravných kódů, a to tak, že kódovou knhou bude faktorprostor B = F n q /C a stránky knhy budou jeho třídy P z = C(z). Potom Ext F n q /C(y) = Hy, kde H je partní matce kódu C. Podrobněj toto řešení rozebereme na konc kaptoly, nejdříve s ale ukážeme několk aplkací. 4.. Základní aplkace psaní na mokrý papír V úvodu této kaptoly jsme byl motvován zabývat se psaním na mokrý papír, protože jsme usloval o snížení detekovatelnost vkládání tím, že ke vkládání využjeme ty prvky 9

556 557 558 559 560 56 562 563 564 nosče, jejchž změna má nejnžší dopad na detekovatelnost. Nyní se podíváme na dvě metody publkované v článku [6], které na této myšlence budují. 4... Vkládání př kvantzac. Uvažme stuac, kdy nosč vznká z nějakého předchůdce transformací a následnou kvantzací. Transformací zde rozumíme nějaký proces jehož výsledkem jsou obvykle hodnoty s plovoucí čárkou. Kvantzací se rozumí zaokrouhlení každé z těchto hodnot na nejblžší povolenou hodnotu. Typckou množnou povolených hodnot může být {0,,..., 255}, potom kvantzace převádí například 3 0 nebo 4,7 5. Množna povolených hodnot nemusí být pouze nterval celočíselných hodnot, ale může se například jednat o množnu všech celočíselných násobků čísla 3. předchůdce nosče transformace nekvantzovaný nosč kvantzace nosč 565 566 567 568 569 570 57 572 573 574 575 576 vkládání př kvantzac Pod pojmem transformace s lze představt zejména následující. stegoobjekt Předchůdce je rastrový obrázek a transformace snžuje hloubku barev obrázku tak, že každý prvek vydělí nastavenou konstantou. Redukujeme-l například 30btový obrázek (tj. na každou červenou, zelenou nebo modrou složku přpadá 0 btů), na 24btový obrázek (tj. na složku přpadá 8 btů), dělíme každý prvek číslem 4. Předchůdce je rastrový obrázek a transformace zmenšuje rozměry obrázku. Například zmenšení na polovnu v obou směrech lze provést tak, že každý blok 2 2 pxelů se převede na jedný pxel zprůměrováním barev všech čtyř pxelů. (Mnohem lepších vzuálních výsledků lze však dosáhnout nejrůznějším nterpolačním metodam.) Předchůdce je rastrový obrázek a transformace převádí každý blok 8 8 hodnot jasové složky obrázku na blok 8 8 DCT koefcentů. 577 U obrázků, které vznkly takovýmto procesem, získáváme měřítko, podle kterého lze 578 vybírat prvky nosče vhodné ke vkládání. Nechť Z je množna povolených hodnot. Má-l 579 nezaokrouhlený prvek například hodnotu 4,9, pak př zaokrouhlení na nejblžší celé číslo 580 vznká zaokrouhlovací chyba 0, a dstorze 0, 2. Kdybychom do takového prvku chtěl 58 vložt bt 0, zaokrouhll bychom jej na 4, a naopak př vkládání btu bychom zaokrouhll 582 na 5. Očekávaná dstorze př vkládání do takového prvku je tedy (0, 2 + 0,9 2 )/2 = 0,4, 583 což je o 0,4 vyšší než př pouhém zaokrouhlení. Srovnejme to se stuací, kdy nezaokrouhlený 584 prvek má hodnotu 4,5. Je zřejmé, že očekávaná dstorze vyvolaná vkládáním do takového 585 prvku je shodná s dstorzí vyvolanou zaokrouhlením na nejblžší celé číslo, a to 0,25. 586 Takovéto prvky jsou tedy zdaleka nejvhodnější pro vkládání. Čím vyšší je vzdálenost 587 nezaokrouhleného prvku od množny celých čísel, tím vhodnější je daný prvek pro vkládání. 588 Obecně můžeme ke každému prvku nezaokrouhleného nosče x přřadt číslo ρ, které 589 udává rozdíl mez očekávanou dstorzí vyvolanou vkládáním do prvku a dstorzí vyvolanou 590 zaokrouhlením na nejblžší povolenou hodnotu. Množnu ndexů suchých prvků nosče S zvolíme tak, aby celkový očekávaný příspěvek vkládání k dstorz 59 S ρ byl mnmalzo- 592 ván. V případě, kdy množna povolených hodnot je Z, můžeme ρ vyjádřt pomocí vzdálenost x od množny celých čísel δ = dst( x, Z) = [ x ] x jako ρ = 2 (δ2 +( δ ) 2 ) δ 2 = 594 2 δ. 595 Tento postup, kdy nejdříve shora uvedeným způsobem vybereme suché prvky nosče 596 a potom metodou psaní na mokrý papír vložíme zprávu tak, že usměrňujeme jejch zao- 597 krouhlení, nazýváme vkládání př kvantzac (perturbed quantzaton, PQ). 20

598 599 600 60 602 603 604 605 606 607 608 609 60 6 62 63 64 65 66 67 68 69 620 62 622 623 624 625 626 627 628 629 630 63 632 633 634 635 636 637 4..2. Vkládání př dvojté ztrátové kompres. V předchozí část jsme poznamenal, že zdaleka nejvýhodnější je vkládat do prvků, jejchž nezaokrouhlená hodnota leží přesně uprostřed mez dvěma po sobě následujícím povoleným hodnotam. Takovéto prvky budeme označovat jako nestranné. V běžném obrázku bude takovýchto prvků jen velm málo. Otázkou je, zda by se dalo nějakým přrozeným způsobem zařídt, aby se takovýchto prvků vyskytovalo víc. Přpomeňme, jakým způsobem se ve formátu JPEG docílí ztrátové komprese obrázku. Blok 8 8 hodnot (např. hodnot jasové složky obrázku) se převede na blok 8 8 DCT koefcentů d = (d,j ) a tyto koefcenty se následně zaokrouhlí s různou mírou přesnost. Přesnost zaokrouhlení každého DCT koefcentu je určena kvantzační tabulkou Q = (q,j ). Pro každý DCT koefcent se spočítá podíl d,j /q,j, a ten se zaokrouhlí na nejblžší celé číslo. Př otevírání obrázku se naopak každé z těchto zaokrouhlených čísel vynásobí příslušnou hodnotou q,j, čímž opět získáme DCT koefcent. Tuto fáz komprese můžeme tedy charakterzovat jako zaokrouhlení každého DCT koefcentu d,j na nejblžší q,j -násobek. Jeden způsob, jak zajstt exstenc nestranných prvků, je dvakrát opakovaná ztrátová komprese obrázku JPEG. Začneme tím, že vytvoříme anebo vezmeme exstující obrázek JPEG (předchůdce nosče). Transformace tohoto předchůdce spočívá v tom, že obrázek dekomprmujeme a znovu komprmujeme, ale tentokrát v nžší kvaltě. Př této komprmac se můžeme za určtých okolností setkat s poměrně velkým počtem nestranných DCT koefcentů. Velce dobrých výsledků lze například dosáhnout použtím standardních kvantzačních tabulek s faktory kvalty 85 a 70 5 3 3 5 7 2 5 8 0 7 6 0 4 24 3 37 4 4 4 6 8 7 8 7 7 7 8 6 35 36 33 4 4 5 7 2 7 2 7 8 8 0 4 24 34 4 34 Q (85) = 4 5 7 9 5 26 24 9 5 7 7 20 33 3 23, Q (70) = 8 0 3 7 3 52 48 37 3 22 34 4 65 62 46. 7 7 9 24 3 34 28 4 2 33 38 49 62 68 55 5 9 23 26 3 36 36 30 29 38 47 52 62 73 72 6 22 28 29 29 34 30 3 30 43 55 57 59 67 60 62 59 Předchůdce je komprmován s faktorem kvalty 85, zatímco nosč a stegoobjekt s faktorem kvalty 70. Podívejme se například na zarámované kvantzační koefcenty v obou tabulkách. Předchůdce nosče je komprmován tak, že DCT koefcenty na této pozc jsou zaokrouhlovány na nejblžší celočíselný násobek čísla 3. Př snížení kvalty obrázku se DCT koefcenty na této pozc zaokrouhlují na nejblžší celočíselný násobek čísla 6. To znamená, že téměř polovna bloků bude mít na této pozc nestranný DCT koefcent, který může být zaokrouhlen jak nahoru, tak dolů, anž by vyvolával větší podezření. Na pozcích, kde se používají větší kvantzační koefcenty, bude nestranných DCT koefcentů výrazně méně než polovna, protože hodně z nch bude v předchůdc nosče zaokrouhleno na 0. Dvojce kvantzačních tabulek Q (85) a Q (70) dosahuje dobrých výsledků proto, že se v ní vyskytuje mnoho pozc, které mají tendenc dávat vznknout nestranným koefcentům. Tyto pozce jsou vyznačeny tučně a můžeme s všmnout, že se mez tabulkam vždy lší o násobek 2. To ovšem není nutnou podmínkou pro to, aby pozce dávala vznknout nestranným koefcentům. Máme-l dvojc kvantzačních matc Q (f) a Q (f2), pak na pozc (, j) mohou př dvojté ztrátové kompres vznkat nestranné DCT koefcenty právě tehdy, když exstují a, b Z takové, že aq (f ),j = bq (f 2),j + 2 q(f 2),j. Na první pohled se může zdát, že dvojtě komprmované obrázky JPEG budou vyvolávat podezření, ale takové obrázky mohou ve skutečnost snadno vznkat přrozeně. Běžný užvatel má fotoaparát, jehož výstupem jsou obrázky JPEG. Obrázek pak může otevřít 2