Vkládání pomocí Viterbiho algoritmu

Podobné dokumenty
STEGANOGRAFIE A DIGITÁLNÍ MÉDIA

Proudové šifry a posuvné registry s lineární zpětnou vazbou

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

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

Konvolučníkódy. MI-AAK(Aritmetika a kódy)

2. Definice pravděpodobnosti

Select sort: krok 1: krok 2: krok 3: atd. celkem porovnání. výběr nejmenšího klíče z n prvků vyžaduje 1 porovnání

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

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

1. Nejkratší cesta v grafu

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

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

Energie elektrického pole

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Lingebraické kapitolky - Počítání s maticemi

ARITMETICKOLOGICKÁ JEDNOTKA

Vztah jazyků Chomskeho hierarchie a jazyků TS

Úvod do lineární algebry

Způsoby realizace této funkce:

Andrew Kozlík KA MFF UK

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

bin arn ı vyhled av an ı a bst Karel Hor ak, Petr Ryˇsav y 23. bˇrezna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT

Struktura a architektura počítačů (BI-SAP) 3

Principy komunikace s adaptéry periferních zařízení (PZ)

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

Základy algoritmizace. Hašování

3. Vícevrstvé dopředné sítě

ANALÝZA A KLASIFIKACE DAT

KTE/TEVS - Rychlá Fourierova transformace. Pavel Karban. Katedra teoretické elektrotechniky Fakulta elektrotechnická Západočeská univerzita v Plzni

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

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

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Struktura a architektura počítačů

Lingebraické kapitolky - Analytická geometrie

CVIČNÝ TEST 11. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 6 III. Klíč 19 IV. Záznamový list 21

Náplň. v Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění

Hammingovy kódy. dekódování H.kódů. konstrukce. šifrování. Fanova rovina charakteristický vektor. princip generující a prověrková matice

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

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

Úvod do zpracování signálů

ALGORITMUS SILOVÉ METODY

Jako pomůcka jsou v pravém dolním rohu vypsány binární kódy čísel od 0 do 15 a binární kódy příkazů, které máme dispozici (obr.21). Obr.

ANALÝZA VZTAHU DVOU SPOJITÝCH VELIČIN

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

Vysoká škola báňská - Technická univerzita Ostrava Fakulta elektrotechniky a informatiky LOGICKÉ OBVODY pro kombinované a distanční studium

Řešení úloh 1. kola 60. ročníku fyzikální olympiády. Kategorie D Autor úloh: J. Jírů. = 30 s.

6 Algebra blokových schémat

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

Watkinsův algoritmus řádkového rozkladu

Kódy pro odstranění redundance, pro zabezpečení proti chybám. Demonstrační cvičení 5 INP

MASARYKOVA UNIVERZITA PEDAGOGICKÁ FAKULTA

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

5. Sekvenční logické obvody

Ochrana dat před shluky chyb, Berlekamp- Preparatův kód

KOMBINAČNÍ LOGICKÉ OBVODY

PSK1-9. Číslicové zpracování signálů. Číslicový signál

Analýza toku dat. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. 15. listopad, 2012

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

IB111 Úvod do programování skrze Python

1. 5. Minimalizace logické funkce a implementace do cílového programovatelného obvodu CPLD

Algoritmizace prostorových úloh

Regulární výrazy. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 14. března / 20

VEKTORY. Obrázek 1: Jediný vektor. Souřadnice vektoru jsou jeho průměty do souřadných os x a y u dvojrozměrného vektoru, AB = B A

Diskretizace. 29. dubna 2015

Kinetika spalovacích reakcí

, p = c + jω nejsou zde uvedeny všechny vlastnosti viz lit.

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

Algoritmy na ohodnoceném grafu

AKM CVIČENÍ. Opakování maticové algebry. Mějme matice A, B regulární, potom : ( AB) = B A

Ilustrační příklad odhadu SM v SW Gretl

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE REALIZACE PŘEKLADAČE I

1 Nejkratší cesta grafem

Obecná informatika. Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. Podzim 2012

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

Protokol č. 1. Tloušťková struktura. Zadání:

Algoritmizace. 1. Úvod. Algoritmus

Programovatelné relé Easy (Moeller), Logo (Siemens)

Odpřednesenou látku naleznete v kapitolách skript Abstraktní a konkrétní lineární algebra.

MS EXCEL 2010 ÚLOHY. Vytvořte tabulku podle obrázku, která bude provádět základní matematické operace se dvěma zadanými čísly a a b.

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11

1 Elektrotechnika 1. 9:00 hod. G 0, 25

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

Lineární algebra : Změna báze

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11

Dnešní látka Variačně formulované okrajové úlohy zúplnění prostoru funkcí. Lineární zobrazení.

Booleovská algebra. Booleovské binární a unární funkce. Základní zákony.

Posuzování dynamiky pohybu drážních vozidel ze záznamu jejich jízdy

Matematika IV 9. týden Vytvořující funkce

Skripta ke školení. Základy VBA. vypracoval: Tomáš Herout. tel:

3. Sekvenční logické obvody

Náhled testu. Přijímací zkouška magisterského studia. konečný automat bez zbytečných stavů, který přijímá jazyk popsaný tímto výrazem, má:

BAYESŮV PRINCIP ZDENĚK PŮLPÁN

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

Učební texty k státní bakalářské zkoušce Matematika Diferenciální rovnice. študenti MFF 15. augusta 2008

Hledáme efektivní řešení úloh na grafu

8 Matice a determinanty

9 Kolmost vektorových podprostorů

Algoritmizace I. Ak. rok 2015/2016 vbp 1. ze 132

Princip funkce počítače

Náhled testu. Přijímací zkouška magisterského studia. konečný automat bez zbytečných stavů, který přijímá jazyk popsaný tímto výrazem, má:

Transkript:

Vkládání pomocí Vterbho algortmu Andrew Kozlk KA MFF UK C

Vkládání pomocí Vterbho algortmu Cíl: Využít teor konvolučních kódů. Motvace: Vterbho dekodér je soft-decson dekodér. Každému prvku nosče přřadíme váhu, která udává jeho ctlvost na změnu. Nebudeme nutně mnmalzovat počet změn v nosč, ale celkovou váhu změn. C

Značení Nosč rozdělujeme na bloky n hodnot z konečného tělesa F q. Rozdíl oprot matcovému vkládání: Nepracujeme s jednotlvým bloky samostatně. Sestrojíme z nch posloupnost vektorů {x } l =, kde x = (x (),..., x (n) ) T F n q. Máme tedy nosč {x } l = a stegoobjekt {y } l =. Zpráva je obecně posloupnost vektorů {z } l =, kde z F m q. My se omezíme na případ m =. Zpráva je pak posloupnost jednosložkových vektorů. Budeme j psát jako posloupnost skalárů {z } l =. C3

Proč se omezujeme na m =? Zobecnění pro m > je jednoduché. Složtost Vterbho algortmu neúměrně narůstá s m. Relatvní kapacta nosče je α = m log q. n Čl jsme omezen na hodnoty tvaru α = log q. n Nevadí. Ve steganograf obvykle cílíme na hodnoty blízké. C4

Konvoluční extrakce Extrakce zprávy se provádí konvolučním překladačem. Implementace pomocí konvolučního kodéru. Kontrolorova normální forma: n paměťových regstrů. Pozorovatelova normální forma: m = paměťový regstr. r (j) = hodnota j-té buňky regstru na konc -tého kroku. d = délka regstru. D = operátor zpoždění. Defnujeme r (j) = pro j d. Hodnoty f (k) j F q a g j F q jsou konstanty a g =. C5

Konvoluční extrakce y () f () f ()... f () f () d y () f () f () + + + + +... f () f () d y (n) z f (n). f (n).. + + + + + r ()... f (n) f (n) d r () + D + D +... + D +. r (d). g g g d g d... C6

Algortmus (konvoluční extrakce) vstup: stegoobjekt {y } l = z Fn q, parametry f (k) j F q a g j F q výstup: zpráva {z } l = (s,..., s d ) := (,..., ) for =,..., l do 3 for j =,..., n do 4 (s,..., s d ) := (s,..., s d ) + y (j) (f (j),..., f (j) d ) 5 z := s 6 (s,..., s d ) := (s,..., s d ) + s (g,..., g d ) 7 (s,..., s d ) := (s,..., s d, ) 8 return {z } l = C7

Vkládání Extrakční algortmus popíšeme jako konečný překladač. Pro tento překladač sestrojíme trelážový graf. (Graf vývoje stavů v závslost na vstupu.) Obecně: Cesty v grafu = všechny možné vstupy překladače. Náš trk: Graf sestavíme tak, aby obsahoval pouze ty cesty (vstupy), jejchž výstupem je zpráva, kterou chceme vložt. Tyto cesty jsou kanddátky na stegoobjekt. Vterbho algortmus potom najde cestu, která se nejméně lší od nosče, resp. má nejmenší váhu (dstorz). C8

Příklad Celý proces předvedeme na následujícím příkladu. Mějme extrakční algortmus nad F s parametry f(d) = ( + D + D, D + D, + D ) a g(d) = D : y () y () y (3) z + + + D + D + C9

Příklad Ukázka přechodu automatu: Počáteční stav r () r () =. Vstup y = (,, ) T. () Výsledný stav r r () =. Výstup z =. / Záps: + + + D + D + C9

Příklad Ukázka přechodu automatu: Počáteční stav r () r () =. Vstup y = (,, ) T. () Výsledný stav r r () =. Výstup z =. / Záps: + + + D + D + C9

Příslušný konečný překladač / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / C

Trelážové moduly Přechody rozdělíme do dvou trelážových modulů podle jejch výstupních hodnot. Výstup Výstup C

Treláž pro vložení zprávy V závslost na zprávě pospojujeme moduly do treláže. Vterbho algortmus najde cestu treláží, která se nejvíce podobá nosč. C

Rozdíly oprot treláž pro dekódování kódů Treláž se skládá z různých modulů v závslost na zprávě. Nevyžadujeme, aby překladač skončl v nulovém stavu. Hrany označujeme vstupním hodnotam překladače místo výstupních hodnot. Vkládač: Upravuje vstup, aby dosáhl požadovaný výstup. Dekodér: Upravuje poškozený výstup, aby dosáhl platný výstup. Vstup překladače je delší než výstup. Konvoluční extraktor: n m. Konvoluční kodér: n m. C3

Vterbho algortmus V první fáz procházíme treláž zleva doprava, tj. pro =,..., l. Pro každé máme až q d možných stavů překladače. Pro každý z těchto stavů spočítáme váhu nejlehčí cesty, která do něho vede, a zaznamenáme poslední hranu cesty. Jakmle dojdeme na konec treláže, vybereme stav, do kterého vede nejlehčí cesta. Zpětným průchodem tuto cestu zrekonstruujeme. Průběh algortmu s předvedeme na příkladu nosče {x } 3 = = {(,, )T, (,, ) T, (,, ) T, (,, ) T } Používáme Hammngovu metrku. C4

Vterbho algortmus {x } 3 = {z } 3 = C5

Vterbho algortmus {x } 3 = 3 {z } 3 = C5

Vterbho algortmus {x } 3 = 3 {z } 3 = C5

Vterbho algortmus {x } 3 = 3 4 3 3 {z } 3 = C5

Vterbho algortmus {x } 3 = 3 {z } 3 = C5

Vterbho algortmus {x } 3 = 3 {z } 3 = C5

Vterbho algortmus {x } 3 = 3 {z } 3 = C5

Vterbho algortmus {x } 3 = 3 {z } 3 = C5

Vterbho algortmus {x } 3 = {z } 3 = C5

Vterbho algortmus {x } 3 = {z } 3 = C5

Vterbho algortmus {x } 3 = {z } 3 = {y } 3 = C5

Vterbho algortmus {x } 3 = {z } 3 = {y } 3 = C5

Vterbho algortmus {x } 3 = {z } 3 = {y } 3 = C5

Vterbho algortmus {x } 3 = {z } 3 = {y } 3 = C5

Časová složtost algortmu Procházíme l modulů zleva doprava. V každém modulu projdeme (až) q d stavů a spočítáme váhu nejlehčí cesty, která do každého stavu vede. Pro každý stav tedy zvážíme všechny vstupující hrany. Do každého stavu vede v průměru q qn hran. Zvážení jedné hrany vyžaduje O(n) porovnání. Zpětný průchod má složtost O(n) operací. (Zanedbatelné.) Časová složtost algortmu je O(q d+n ln) porovnání. Složtost ještě vylepšíme na O(q d+ ln) vektorových operací tak, že rozvneme treláž. C6

Rozvnutí modulů Každý přechod automatu rozvneme na n + podkroků. Čl každý modul rozvneme na n + podmodulů. Přpomeňme algortmus konvoluční extrakce: (s,..., s d ) := (,..., ) for =,..., l do 3 for j =,..., n do 4 (s,..., s d ) := (s,..., s d ) + y (j) (f (j),..., f (j) d ) 5 z := s 6 (s,..., s d ) := (s,..., s d ) + s (g,..., g d ) 7 (s,..., s d ) := (s,..., s d, ) 8 return {z } l = C7

Příklad: Rozvnutí přechodu automatu + + + D + D + Na počátku máme (s, s, s ) = (,, ). Podkroky pak jsou:. (s, s, s ) := (s, s, s ) + (,, ) = (,, ). (s, s, s ) := (s, s, s ) + (,, ) = (,, ) 3. (s, s, s ) := (s, s, s ) + (,, ) = (,, ) 4. (s, s, s ) := (s, s, s ) + (,, ) = (,, ) (s, s, s ) := (s, s, ) = (,, ) C8

Rozvnutí modulu s výstupem výstupní symbol Přčtení y () (,, ) pro y () F. Přčtení y () (,, ) pro y () F. Přčtení y (3) (,, ) pro y (3) F. Posunutí regstru. C9

Rozvnutí modulu s výstupem výstupní symbol Přčtení y () (,, ) pro y () F. Přčtení y () (,, ) pro y () F. Přčtení y (3) (,, ) pro y (3) F. Přčtení zpětné vazby (,, ) a posunutí regstru. C

Rozvnutá treláž a dstrozní funkce Trelážové moduly nahradíme jejch rozvnutým verzem. Vterbho algortmus najde cestu rozvnutou treláží, která se nejvíce podobá nosč. Algortmus umí zohlednt váhy jednotlvých změn v nosč. Ke každému prvku nosče x (j) ρ (j) : F q R. přřazujeme dstorzní funkc Hodnota ρ (j) (a) udává, jak moc by přspělo nastavení y (j) = a ve stegoobjektu k celkové dstorz vyvolané vkládáním. C

Příklady dstrozních funkcí Chceme-l Hammngovu metrku, defnujeme { ρ (j), jestlže a = x (j) (a) =, jestlže a x (j) Pro psaní na mokrý papír defnujeme ρ (j) (a) =,., jestlže prvek na j-té pozc v -tém bloku je mokrý a zároveň a x (j), jnak. Pro vkládání př kvantzac defnujeme ρ (j) (a) = (dstorze př vložení a) (dstorze př zaokrouhlení). C

Algortmus (vkládání pomocí Vterbho algortmu) vstup: dstorzní funkce prvků nosče {ρ } l =, zpráva {z } l = nad F q, parametry f (k) j F q a g j F q výstup: stegoobjekt {y } l = Incalzace. for s F d+ q \ {} do w[s] := 3 w[] := Dopředný průchod treláží. 4 for =,..., l do 5 for j =,..., n do do 7 path (j) [s] := arg mn a Fq w[s a(f (j),..., f (j) d )] + ρ(j) (a) 8 w [s] := mn a Fq w[s a(f (j),..., f (j) d )] + ρ(j) (a) 9 w := w 6 for s F d+ q for (s,..., s d ) F d q do w [(s,..., s d, )] := w[(z, s,..., s d ) z (g (),..., g (n) )] for s d F q \ {} do 3 w [(s,..., s d )] := 4 w := w C3

Algortmus (pokračování) Volba stavu, ve kterém končí nejlehčí cesta. 5 (s,..., s d ) := arg mn s F w[s ] d+ q Rekonstrukce nejlehčí cesty zpětným průchodem treláže. 6 for = l,..., do 7 (s, s,..., s d ) := (z, s,..., s d ) z (g,..., g n ) 8 for j = n,..., do 9 y (j) := path (j) [(s,..., s d )] (s,..., s d ) = (s,..., s d ) y (j) return {y } l = (f (j),..., f (j) d ) w[s] = váha nejlehčí cesty, která vede do s. path (j) [s] = poslední hrana nejlehčí cesty, která vede do s. C4

Složtost algortmu Nejčastěj jsou volány nstrukce na řádcích 7 a 8, celkem (lnq d+ )-krát. Instrukce na řádku 7 provádí q-krát: vektorovou operac (nejdražší), nahlédnutí do pamět, (j) volání ρ (a) (předpokládáme v konstantním čase), porovnání. Časová složtost: O(q d+ ln) vektorových operací. Obvykle stačí specalzace algortmu pro q =, kterou lze mplementovat pomocí operací xor. V pol path ukládáme q d+ ln prvků tělesa F q. Paměťová složtost: O(q d+ ln log q) btů. C5

Výsledky několka expermentů Stegosystém popsaný v příkladu dosahuje efektvty e = 3,87, přčemž α = /3. Toto velm dobře odpovídá efektvtě Hammngových kódů v dané oblast. Použjeme-l větší regstr lze dosáhnout lepších výsledků. Např. d =, pak pro α = /3 lze dosáhnout efektvty 4,94. Přítomnost zpětné vazby g(d) nevedla k měřtelnému zlepšení efektvty vkládání. C6