Mendelova zemědělská a lesnická univerzita v Brně Provozně ekonomická fakulta
Moderní metody stegoanalýzy Diplomová práce
Vedoucí práce: Ing. Jan Přichystal, Ph.D.
Bc. Jan Prudil
Brno 2009
Je mou milou povinností poděkovat na tomto místě Ing. Janu Přichystalovi, Ph.D., za poskytnutí cenných konzultací během tvorby této práce, bez nichž by mnoho faktů zůstalo opomenuto. Také bych rád poděkoval své rodině a přítelkyni Romaně, kteří mi dokázali vytvořit velmi důležité zázemí pro napsání této práce.
Prohlašuji, že jsem tuto diplomovou práci vypracoval samostatně a veškeré zdroje uvádím v seznamu použité literatury.
V Brně dne 25. 5. 2009
....................................................
4
Abstract Prudil, J. Modern Methods of Steganalysis. Diploma thesis. Brno, 2009 Steganalysis is the opposite discipline to steganography – a science and an art of information hiding. Steganography deals with embedding of secret messages to different types of media. The most commonly used cover media in modern steganography are image files. In this work we create on the basis of available resources an overview of current issues of steganography and steganalysis. We also describe the practical implementation of two steganalysis techniques – extraction and detection attack. This implementation represents the design of the BMPdetect tool, which can be applicated to the BMP format images with color depth 24-bit per pixel.
Abstrakt Prudil, J. Moderní metody stegoanalýzy. Diplomová práce. Brno, 2009 Stegoanalýza je opoziční disciplínou steganografie, vědy a současně dovednosti, která se zabývá ukrýváním tajných zpráv do různých druhů nosičů. Moderní steganografie jako nosič nejčastěji využívá obrázkové soubory. Tato práce na základě dostupných zdrojů vytváří přehled aktuální problematiky digitální steganografie a stegoanalýzy a popisuje praktickou implementaci dvou technik stegoanalýzy – extrakčního a detekčního útoku. Tuto implementaci představuje navržení programu BMPdetect, stegoanalytického nástroje s použitelností na obrázky formátu BMP s barevnou hloubkou 24 bitů na pixel.
5
OBSAH
Obsah 1 Úvod a cíl práce 1.1 Úvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Cíl práce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Teoretický přehled problematiky 2.1 Vymezení pojmu steganografie . . . . . . . . . . . . . . 2.2 Stručná historie . . . . . . . . . . . . . . . . . . . . . . 2.3 Moderní steganografické metody . . . . . . . . . . . . . 2.3.1 Principy steganografických systémů . . . . . . . 2.3.2 Oblasti moderní steganografie . . . . . . . . . . 2.4 Obrázkové soubory a jejich využití ve steganografii . . 2.4.1 Barevný prostor RGB . . . . . . . . . . . . . . 2.4.2 Barevný prostor YCB CR . . . . . . . . . . . . . 2.4.3 Ostatní barevné prostory . . . . . . . . . . . . . 2.4.4 Formáty obrázkových souborů . . . . . . . . . . 2.4.5 Struktura formátu BMP . . . . . . . . . . . . . 2.4.6 Metody vkládání dat do obrázkových souborů . 2.5 Steganografické metody v obrázkových souborech . . . 2.5.1 Maskování a filtrování . . . . . . . . . . . . . . 2.5.2 Oblast obrazová a transformační . . . . . . . . 2.6 Obrazová oblast (image domain) . . . . . . . . . . . . . 2.6.1 Nejméně významný bit (LSB) . . . . . . . . . . 2.6.2 LSB a obrázky s barevnou paletou . . . . . . . 2.7 Transformační oblast (transform domain) . . . . . . . . 2.7.1 Komprese formátu JPEG . . . . . . . . . . . . 2.7.2 Steganografie soubory ve formátu JPEG . . . . 2.8 Metody oblasti obrazové i transformační . . . . . . . . 2.9 Srovnání steganografických technik . . . . . . . . . . . 2.10 Nástroje pro ukrývání zpráv . . . . . . . . . . . . . . . 2.10.1 EzStego . . . . . . . . . . . . . . . . . . . . . . 2.10.2 Steghide . . . . . . . . . . . . . . . . . . . . . . 2.10.3 Steganografický on-line systém Matěje Zapletala 2.10.4 OutGuess . . . . . . . . . . . . . . . . . . . . . 2.10.5 Algoritmus F5 . . . . . . . . . . . . . . . . . . . 2.11 Steganografie – dílčí shrnutí . . . . . . . . . . . . . . . 2.12 Stegoanalýza . . . . . . . . . . . . . . . . . . . . . . . 2.12.1 Vězňův problém . . . . . . . . . . . . . . . . . . 2.12.2 Definice stegoanalýzy . . . . . . . . . . . . . . . 2.12.3 Techniky stegoanalýzy . . . . . . . . . . . . . . 2.13 Možnosti útoků na steganografické systémy . . . . . . . 2.13.1 Vizuální útok . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (M. Z.) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7 7 8 9 9 10 11 11 13 15 15 16 16 16 18 19 21 22 22 23 23 25 26 26 27 29 29 31 31 32 33 33 33 34 34 34 35 36 37 38
6
OBSAH
2.13.2 2.13.3 2.13.4 2.13.5 2.13.6
Statistické útoky . . . Útok testem χ2 . . . . Útok analýzou RQP . Útok RS analýzou . . Další typy statistických
. . . . . . . . . . . . . . . . útoků
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
3 Vlastní práce 3.1 Metodika a návrh řešení . . . . . . . . . . . . . . . . . 3.2 Steganografie pomocí aplikace M. Z. . . . . . . . . . . . 3.3 Steganografie pomocí aplikace Steghide . . . . . . . . . 3.4 Načtení obrázku formátu BMP . . . . . . . . . . . . . 3.5 Implementace útoku analýzou RQP . . . . . . . . . . . 3.5.1 Výpočet ukazatelů U a P . . . . . . . . . . . . . 3.5.2 Modifikace souboru skrytím testovací zprávy . . 3.5.3 Funkce porovnání poměrů R a R’ . . . . . . . . 3.5.4 Výsledky . . . . . . . . . . . . . . . . . . . . . . 3.6 Útok extrahováním LSB . . . . . . . . . . . . . . . . . 3.6.1 Funkce čtení LSB . . . . . . . . . . . . . . . . . 3.6.2 Extrahování LSB ze steganografického obrázku aplikací M. Z. . . . . . . . . . . . . . . . . . . . 3.6.3 Extrahování LSB ze steganografického obrázku aplikací Steghide . . . . . . . . . . . . . . . . . 3.7 Dokumentace programu BMPdetect . . . . . . . . . . . 3.7.1 Použití . . . . . . . . . . . . . . . . . . . . . . . 3.7.2 Třída Bod . . . . . . . . . . . . . . . . . . . . . 3.7.3 Třída Picture . . . . . . . . . . . . . . . . . . . 3.7.4 Třída Stat . . . . . . . . . . . . . . . . . . . . . 3.7.5 Třída LSBReader . . . . . . . . . . . . . . . . . 3.7.6 Třída Modifikator . . . . . . . . . . . . . . . . . 3.7.7 Zdrojový kód programu BMPdetect . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vytvořeného . . . . . . . vytvořeného . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . .
40 41 45 46 49
. . . . . . . . . . .
51 51 52 54 56 58 58 60 61 62 64 64
. 65 . . . . . . . . .
66 67 67 67 67 68 68 69 69
4 Hodnocení
70
5 Závěr
71
6 Literatura
72
1
ÚVOD A CÍL PRÁCE
1 1.1
7
Úvod a cíl práce Úvod
Stegoanalýza je vědní disciplínou, podle některých autorů současně i dovedností, která se zabývá odhalováním a případným odstraňováním skrytých informací. Nabízí se otázka, co je možné si představit pod velmi obecným pojmem „skrytá informaceÿ. Skrývání informací je předmětem opoziční vědní disciplíny s podobným názvem – steganografie. Steganografie v moderním pojetí umožňuje skrývat informace do nejrůznějších druhů digitálních formátů – např. do textových souborů, obrázků či zvuku. Ovšem steganografie v klasickém pojetí je disciplína stará téměř jako sama evropská civilizace. První zmínky o použití steganografie z doby 400 let před naším letopočtem najdeme v díle starořeckého historika Hérodota (Johnson, 1995). Tehdejší techniky by pro dnešního člověka byly jistě nepoužitelné, ovšem základní myšlenka přetrvala až do současnosti: chci s někým komunikovat, ale nechci, aby o této komunikaci věděl někdo jiný. Rozdíl mezi steganografií a šifrováním spočívá ve schopnosti budit či nebudit podezření (Cummins et al., 2004). Komunikujeme-li s někým pomocí šifrovaných zpráv, nikdo další jim sice neporozumí, avšak tato komunikace vzbudí podezření. Komunikace pomocí steganografie by naproti tomu měla zůstat tajnou a tudíž žádné podezření nebudit. Jako klasický příklad využití steganografie bývá uváděna komunikace mezi teroristy z organizace al-Káida. Provos a Honeyman v článku (Provos a Honeyman, 2003) popisují svůj výzkum, kdy ověřovali hypotézu, zda za tímto účelem nejsou využívány obrázky na elektronické aukční síni eBay. Steganografie však poskytuje i některé velmi užitečné a komerčně důležité funkce v digitálním světě, zejména jde o digitální vodotisk. Jeho aplikace umožňuje autorovi vložit do svého elektronického díla skrytý podpis, který dokazuje jeho intelektuální vlastnictví nebo ověřuje celistvost díla (Kessler, 2004). Stegoanalýza tedy informace skryté v nejrůznějších médiích pomocí steganografie odhaluje, extrahuje a případně ničí. Její techniky jsou dnes převážně statistické povahy a jejich úspěšnost závisí na mnoha faktorech. V dokumentu (Fridrich a Goljan, 2002) je uvedeno, že „techniky, které spolehlivě detekují přítomnost skryté zprávy v obrázcích, se stávají stále důležitější. V obrázcích může být ukryto velké množství škodlivého kódu, detekce skrytých informací v obrázkových souborech by proto měla být implementována v každém antivirovém programu.ÿ Stegoanalýza by bez steganografie zcela jistě nemohla existovat, ale zároveň je velmi pravděpodobné, že steganografie by bez stegoanalýzy nikdy nenabídla tak důmyslné techniky, jako je tomu v současnosti.
1.2
1.2
Cíl práce
8
Cíl práce
Za dílčí cíl této práce lze považovat vymezení technik a nástrojů, které tvoří základ moderní digitální steganografie a její opoziční disciplíny – stegoanalýzy. Sestavení co možná nejkomplexnějšího obrazu novodobého pojetí těchto klasických kryptologických disciplín by mělo umožnit realizaci praktické implementace některé z metod stegoanalýzy. Na základě teoretických východisek bude sestavena metodika vlastního řešení této implementace. Práce bude zaměřena na ty oblasti digitální steganografie a stegoanalýzy, které se zabývají ukrýváním zpráv do obrázkových nosičů. Cílem práce pak bude navržení praktického postupu stegoanalýzy, v němž bude využita některá z teoreticky popsaných technik. Postup bude využívat za tímto účelem navržený program, jehož funkčnost umožní vybranou techniku provést. Sestavený program bude implementovat dva různé druhy útoků proti zvoleným steganografickým nástrojům a vybranému formátu obrázku v roli steganografického média.
2
TEORETICKÝ PŘEHLED PROBLEMATIKY
2
9
Teoretický přehled problematiky
2.1
Vymezení pojmu steganografie
Označení steganografie je původem z řečtiny, kde vzniklo spojením slov steganós (ukrytý) a gráphien (psát). Dle definice Cachina (Cachin, 1998) steganografií rozumíme umění komunikace a současně vědu o komunikaci, během níž nesmí být odhalena přítomnost určité zprávy. Jednoduché techniky steganografie se používaly po staletí, ovšem se vzrůstajícím využitím souborů v elektronické podobě je možné aplikovat zcela nové metody ukrývání zpráv, což je fakt, který předchází naprosté většině aktuálních pojednání o této problematice, např. (Kessler, 2004), (Cachin, 1998), (Johnson et al., 2000). Gary C. Kessler (Kessler, 2001) uvádí, že steganografie je věda o skrývání informace. Dále poznamenává, že je-li cílem kryptografie učinit data pro třetí stranu nečitelná, cílem steganografie je data před třetí stranou ukrýt. Steganografie je srovnávána s kryptografií i v publikaci (Johnson et al., 2000): „Steganografie je umění utajit přítomnost informace ve zdánlivě neškodně vyhlížejícím nosiči. Lze na ni pohlížet jako na disciplínu velmi blízkou kryptografii, protože obě byly během známých dějin používány k ochraně informace. Jejich techniky se mohou zdát velmi podobné, ovšem odlišnost nacházíme v jejich cíli. Kryptografické techniky zprávu modifikují takovým způsobem, že v případě jejího zachycení jí nesmí být porozuměno. Steganografie ve své podstatě zprávu skryje a činí ji prakticky neviditelnou, potlačuje tedy skutečnost, že určitá zpráva byla vůbec poslána. Zpráva zašifrovaná pomocí kryptografie může být podezřelá, kdežto zpráva ukrytá pomocí steganografie nikoliv.ÿ F. L. Bauer v článku (Bauer, 2002) uvádí, že „účelem steganografie je utajit komunikaci, a tak skrýt zprávu před třetí stranou. To ji odlišuje od kryptografie, jejíž účel není tajit samotnou komunikaci, ale zprávu učinit pro třetí stranu nečitelnou. Ačkoliv jsou steganografie a kryptografie disciplíny odlišné, existuje mezi nimi množství pojítek a někteří autoři steganografii klasifikují jako formu kryptografie.ÿ Srovnání různých technik zabezpečené komunikace lze vidět v tabulce 1, převzata z dokumentu (Cummins et al., 2004), kde je též uvedeno: „Šifrování (kryptografie) umožňuje zabezpečenou komunikaci vyžadující k porozumění informace klíč. Útočník nemůže šifrování odstranit, ale může poměrně jednoduše modifikovat zprávu a učinit ji tak pro zamýšleného příjemce nečitelnou. Digitální podpis 1 je využíván k nepopiratelnosti autorství zprávy, protože podpis sice lze snadno odstranit, ale jakákoliv změna v jednou podepsané zprávě učiní digitální podpis neplatným – je tak zaručena integrita zprávy. Steganografie představuje nástroj zabezpečené komunikace, kdy zprávu nelze odstranit bez viditelné modifikace dat, v nichž je vložena. Skrytá zpráva zůstává důvěrná, dokud útočník nezjistí, jakým způsobem ji detekovat.ÿ 1
V Evropě označovaný jako elektronický podpis. Problematiku terminologie komentuje např. J. Petreka na http://www.earchiv.cz/b00/b0004001.php3.
2.2
10
Stručná historie
Tab. 1: Různé techniky zabezpečené komunikace. Tabulka převzata z Steganography And Digital Watermarking (Cummins et al., 2004).
Šifrování Digitální podpis Steganografie
Důvěrnost ano ne ano/ne
Integrita ne ano ano/ne
Neodstranitelnost ano ne ano
Dle dokumentu (Cummins et al., 2004) svébytnou oblast steganografie představuje vkládání ochranných značek do dokumentů, takzvaný watermarking, kdy je podstatné, aby vložená značka nemohla být jednoduše odstraněna. Pojem se do českého jazyka překládá jako digitální vodotisk. Dle téhož autora lze do problematiky steganografie řadit i takzvané „vkládání digitálních otiskůÿ (fingerprinting), což je technika podobná vodotisku, ovšem označující každý dokument jedinečnou značkou. Vše je znázorněno na obrázku 1.
Obr. 1: Typy steganografie. Převzato z Steganography And Digital Watermarking (Cummins et al., 2004).
V dokumentu (Kessler, 2004) je uvedeno následující: Steganografie umožňuje ukrýt určitou zprávu, ale nikoliv skutečnost, že mezi dvěma stranami probíhá komunikace. Proces steganografie znamená skrytí tajné zprávy v přenosovém médiu zvaném nosič. Použitím steganografického klíče lze dosáhnout zašifrování skryté zprávy nebo vložení náhodné složky do procesu ukrytí. Zpráva vložená v nosiči představuje steganografické médium. Lze tedy psát: steganografické médium = skrytá zpráva + nosič + steganografický klíč
2.2
Stručná historie
Neil F. Johnson v dokumentu (Johnson, 1995) uvádí asi nejstarší zaznamenaný případ použití steganografie, kdy odkazuje na dílo „Dějinyÿ starověkého historika Hérodota. V antickém Řecku se používaly k přenosu zpráv dřevěné destičky zalité voskem, do kterého bylo vyryto písmo. Hérodotos popisuje vyrytí zprávy přímo do dřevěné destičky, která byla následně zalita voskem a vypadala jako nepopsaná. Řek Demeratus takto varoval Spartu před chystanou Perskou invazí do Řecka.
2.3
Moderní steganografické metody
11
Jinou důmyslnou starověkou metodou bylo oholení poslovy hlavy a vytetování zprávy přímo na její kůži. Poté, co vlasy opět dorostly, byla zpráva skryta až do chvíle, než byla poslova hlava opět oholena (Johnson, 1995). Jako další příklad ukrývání tajných zpráv se uvádí použití neviditelného inkoustu během druhé světové války. Nevinně vyhlížející dopis mohl obsahovat velmi odlišnou zprávu zapsanou například mezi řádky (Zim, 1948). Na začátku druhé světové války steganografické techniky sestávaly téměř výhradně z použití neviditelného inkoustu, jenž byl tvořen mlékem, octem, ovocnými šťávami nebo močí – všechny tyto látky po zahřátí tmavnou (Kahn, 1967). Cummins, Diskin, Lau a Parlett v dokumentu (Cummins et al., 2004) uvádí jiný příklad z druhé světové války, kdy zajatci využívali pro tajnou komunikaci v dopisech morseovu abecedu. Konkrétně využili teček a „čárekÿ nad písmeny i, j, f a t. Nesporně zajímavou technikou ukrývání tajné informace v období druhé světové války byly takzvané mikrotečky. Kahn k tomu v knize (Kahn, 1967) uvádí: „Se zlepšováním odhalování zpráv byly vyvíjeny nové postupy, jak předat větší množství informace a současně ji učinit hůře zjistitelnou. Němci vyvinutá technika mikroteček byla označena ředitelem FBI Hooverem za protivníkovo mistrovské špionážní dílo. Mikrotečka vznikla vyfotografováním standardní zprávy napsané na psacím stroji a jejím následným zmenšením na velikost tečky na konci věty v dokumentu. Zpráva nebyla skryta ani zašifrována. Mikrotečka byla zkrátka tak malá, že nebudila pozornost (určitou dobu). Avšak bez ohledu na velikost, mikrotečky umožňovaly přenášení velkého množství dat včetně kreseb a fotografií.ÿ V dokumentu (Johnson, 1995) je uveden i příklad takzvaného algoritmu „posunu slovÿ (word-shifting) publikovaný roku 1994. Postup je možné použít u značkovacího jazyka HTML a jeho princip spočívá v označení slov v dokumentu, která tvoří tajnou zprávu pomocí mezer různé velikosti (dosaženo starším způsobem díky atributu font). Parser poté příslušně pozměněné mezery nahradí za tagy
nebo a v dokumentu takto dojde k vyznačení tajné zprávy.
2.3 2.3.1
Moderní steganografické metody Principy steganografických systémů
Niels Provos a Peter Honeyman v článku (Provos a Honeyman, 2003) definují tři aspekty hodnocení systémů pro ukrývání informace: • kapacita, • bezpečnost, • robustnost. Kapacitou rozumíme množství informace, kterou lze do nosiče ukrýt, bezpečnost představuje nemožnost narušitele odhalit tajnou zprávu a robustnost vyjadřuje schopnost nosiče uchovat skrytá data i po jeho případné modifikaci.
2.3
Moderní steganografické metody
12
Johnson a Jajodia v článku (Johnson a Jajodia, Feb. 1998) zmiňují problematiku bezpečnosti steganografických systémů: „Bezpečnost klasického steganografického systému závisí na utajení metody ukrývání zprávy. Například již zmíněný postup tetování tajné zprávy na oholenou hlavu posla, čekání, až vlasy opět dorostou, a následné vyslání posla.ÿ Provos a Honeyman k tomu v článku (Provos a Honeyman, 2003) dodávají, že ačkoliv takový systém může určitý čas fungovat, ve chvíli, kdy dojde k prozrazení této metody, není složité zavést kontrolu spočívající v oholení všech procházejících lidí a tím steganografický systém diskreditovat. Moderní steganografie usiluje o to, aby byla detekovatelná pouze ve chvíli, kdy je odhalena nějaká tajná informace – například sdílený klíč (Peticolas et al., 1999). To je podobné Kerckhoffsovu principu v kryptografii, kdy bezpečnost komunikace nezávisí na použitém algoritmu, nýbrž na utajení klíče (Kerckhoffs, 1883). V článku (Provos a Honeyman, 2003) je také uvedeno, že ve steganografii je velmi důležité udržet v tajnosti i originální médium použité jako nosič pro ukrytí zprávy, neboť v případě jeho odhalení by při porovnání nosiče a steganografického média byly ihned identifikovány změny. Teorie informace umožňuje blíže specifikovat stav, kdy je systém dokonale bezpečný. Christian Cachin v dokumentu (Cachin, 1998) předkládá teoretický informační model pro steganografii, jenž uvažuje bezpečnost steganografického systému ve vztahu k pasivnímu narušiteli2 . Základní předpoklad v tomto modelu říká, že protivník má úplnou znalost ukrývajícího systému, ale nezná tajný klíč. Protivníkova úloha spočívá v navržení takového modelu rozdělení pravděpodobnosti Pc pro všechna média použitelná jako nosiče a rozdělení pravděpodobnosti Ps pro všechna možná steganografická média (nosič + zpráva). Protivník pak může využít teorii detekce, která mu umožní rozhodnout mezi hypotézou C (zpráva neobsahuje skrytou informaci) a hypotézou S (zpráva obsahuje skrytou informaci). Systém je pak dokonale bezpečný, pokud neexistuje pravidlo, podle něhož lze rozhodnout lépe než pomocí náhodných pokusů. Provos a Honeyman v článku (Provos a Honeyman, 2003) shrnují podstatu moderní steganografické komunikace v modelu, kde jsou využity archetypální postavy Alice (komunikující strana A – odesílatel) a Bob (komunikující strana B – příjemce): • Alice a Bob se dohodou na použitém steganografickém systému a tajném klíči. • Alice vytvoří či jinak získá potřebný nosič (např. fotografie, zvuk, video, text). • Nosič, zprávu a tajný klíč Alice použije jako vstupy steganografického systému. Systém dle tajného klíče určí, jak budou bity zprávy zakódovány do redundantních bitů nosiče. • Výstupem systému je steganografické médium, které Alice pošle nezabezpečeným kanálem Bobovi. • Když Bob steganografické médium obdrží, použije dohodnutý steganografický systém a tajný klíč. Získá tak ukrytou zprávu. 2
Pasivní narušitel nemá možnost médium modifikovat, může jej pouze číst (podrobněji v kapitole 2.12.1).
2.3
Moderní steganografické metody
13
Výše popsaný proces je znázorněn na obrázku 2. V tomto případě (ukrývání do redundantních dat) je přítomnost skryté zprávy možné odhalit statistickou analýzou (Provos a Honeyman, 2003).
Obr. 2: Moderní steganografická komunikace. Obrázek převzat z článku Hide and Seek: An Introduction to Steganography (Provos a Honeyman, 2003).
2.3.2
Oblasti moderní steganografie
Ke členění technik moderní steganografie lze přistoupit z mnoha pohledů. V nejobecnější rovině je možné setkat se v literatuře s rozlišením na ukrývání tajných zpráv a na vkládání elektronických otisků, například digitálních vodotisků, do elektronických médií. V dokumentu (Cummins et al., 2004) je uvedeno, že steganografii lze rozlišit na dva druhy – křehkou steganografii a robustní steganografii. Křehká steganografie umožňuje takové vložení informace do souboru, že tato informace je při nepatrné modifikaci souboru zničena nebo poškozena. Křehká steganografie není dle dokumentu (Cummins et al., 2004) vhodná ke vkládání značek chránících autorství souboru, neboť taková ochrana by mohla být velmi snadno odstraněna. Je ovšem uplatnitelná v situacích, kdy je nutné prokázat, že se souborem bylo manipulováno – například pokud je soubor použit jako důkaz u soudu a má-li být dokázáno, že nějakým zásahem byl odstraněn ochranný vodotisk. Naproti tomu robustní steganografie umožňuje takové vkládání informace do souboru, které není možné jednoduše odstranit. V dokumentu (Cummins et al., 2004) je uvedeno, že ačkoliv žádná takto vložená značka nikdy nebude skutečně „nezničitelnáÿ, je možné považovat systém za robustní, pokud změny vyžadované k odstranění značky učiní soubor neužitečným. Proto by značka měla být skrývána do takové části souboru, kde by její odstranění bylo vnímáno nejsnáze. Robustní značkování dělíme dle dokumentu (Cummins et al., 2004) do dvou skupin:
2.3
Moderní steganografické metody
14
• Digitální otisk (fingerprinting) – skrytí jedinečného identifikátoru do souboru pro každého, kdo získá právo s tímto souborem disponovat (např. na základě licence). • Digitální vodotisk (watermarking) – identifikuje vlastníka autorského práva k souboru. Na rozdíl od jedinečných digitálních otisků, digitální vodotisk nepomáhá odhalit ty, kteří poruší licenční smlouvu, ale ty, kteří vlastní nelegální kopii souboru. Vodotisk je zpravidla skryt proto, aby se zabránilo jeho detekci či odstranění (označováno jako neviditelný vodotisk). Někdy se však používá viditelný vodotisk, kupříkladu při vkládání vizuálního ochranného vzoru přes obrázek. Rozdělení steganografických metod lze učinit i jiným, poněkud obecnějším způsobem, například jako v dokumentu (Kessler, 2004). Kessler zde definuje šest skupin metod: Technická steganografie používá k ukrytí zpráv vědecké metody, například neviditelný inkoust, mikrotečky či podobné techniky zmenšování. Lingvistická steganografie je dělena na semagramy a otevřené šifry. Semagramy ukrývají informaci za použití symbolů či značek. Vizuální semagramy tajnou zprávu ukryjí pomocí objektů, se kterými se každodenně setkáváme – např. různé malůvky, rozmístění předmětů na psacím stole či uspořádání prvků na webové stránce. Textové semagramy zprávu skryjí pomocí modifikace textu – např. drobnými změnami ve fontu písma, přidáním bílých znaků, případně zdobnými prvky u ručně psaného textu. Otevřené šifry ukryjí zprávu tak, že nosič má dvě podoby – pro zasvěceného a nezasvěceného pozorovatele. Jsou členěny na slang a otevřené ukrývání. Slang – jazyky či nářečí, kterým rozumí určitá skupina lidí a ostatním nedávají smysl, například: žargon podsvětí, warchalking3 či obyčejně se tvářící konverzace, jejíž speciální významovou rovinu chápou pouze hovořící. Otevřené ukrývání (cover ciphers) – techniky, jež vloží do nosiče zprávu „otevřeněÿ, tzn. kdokoli zná princip ukrytí, přečte zprávu velmi jednoduše. Tyto metody představuje například běžně vyhlížející dopis, z něhož tajnou zprávu získáme například čtením každého třetího slova nebo každého druhého písmene. Speciálním druhem ukrývání v nosiči jsou tzv. mřížkové šifry, které jsou realizovány pomocí děrované šablony, jež po přiložení na textový nosič odhalí pouze slova či písmena tajné zprávy. Dále je tamtéž uvedeno: „Se vzrůstajícím objemem dat uložených v počítačích a přenášených sítěmi není překvapující, že steganografie vstoupila do digitálního věku. Aplikace steganografie na elektronická média umožňuje skrývat jakýkoliv binární soubor v jakémkoliv jiném binárním souboru. Nejběžnějšími nosiči jsou však v dnešní době obrázkové a zvukové soubory.ÿ 3
symboly označující přítomnost a druh pokrytí bezdrátovou sítí
2.4
Obrázkové soubory a jejich využití ve steganografii
15
Autoři dokumentu (Cummins et al., 2004) podávají ucelený přehled technik moderní digitální steganografie, kdy vychází z formátu potenciálních nosičů a ze speciálního přístupu ke každému z nich: • techniky skrývání dat v binárních souborech – např. pořadí zaměnitelných instrukcí jednoznačně identifikuje majitele licence programu • techniky skrývání dat v textu – využití bílých znaků – vhodné modifikace vlastního obsahu • techniky skrývání dat v obrázcích • techniky skrývání dat ve zvuku • techniky skrývání dat ve videu. V literatuře se můžeme setkat i s definicí toho, co steganografií není. Například Andrew Ker v dokumentu (Ker, 2008) tvrdí, že za steganografii nelze být považováno: • ukrývání dat do pseudonáhodných proudů, například TrueCrypt4 , což Ker charakterizuje jako příliš jednoduché, • ukrývání dat v nevyužitých částech hlaviček paketů či souborů různých formátů, což Ker označuje za málo bezpečné.
2.4 2.4.1
Obrázkové soubory a jejich využití ve steganografii Barevný prostor RGB
Žára a kol. v publikaci (Žára et al., 2004) uvádějí: Různé barvy, které se používají při vytváření obrazu, jsou tvořeny kombinací několika základních barev z barevného spektra. Na barevné obrazovce například vidíme barvu jako výsledek složení tří složek – červené (R, red), zelené (G, green) a modré (B, blue). Barvy lze vyjádřit trojicí (barevným vektorem), jejíž složky nabývají hodnot z intervalu h0, 1i. Bývají uváděny i v celočíselném rozsahu 0–255, což odpovídá kódování každé ze složek RGB v jednom bajtu. Hodnota 0 znamená, že složka není zastoupena, maximální hodnota indikuje, že složka nabývá své největší intenzity. Vyjádření barevných složek pomocí tří bajtů je v současnosti nejběžnější. Popis barvy třemi složkami R, G, B není jedinou možností. Uvedená volba základních barev je dána technickými vlastnostmi monitorů. Říká se, že barva je vyjádřena v barevném prostoru RGB. Jeho základní vlastností je součtové, aditivní skládání barev – čím více barev složíme (sečteme), tím světlejší je výsledek. 4
http://www.truecrypt.org/
2.4
16
Obrázkové soubory a jejich využití ve steganografii
2.4.2
Barevný prostor YCB CR
V publikaci (Žára et al., 2004) je také uvedeno, že v počítačové grafice se při zápisu rastrových obrázků ve formátu JPEG setkáváme s barevným prostorem YCB CR . Protože se v této práci budeme formátem JPEG zabývat, uveďme několik poznámek k tomuto barevnému prostoru převzatých z publikace (Žára et al., 2004). Podle standardu CCIR–601 má hodnota Y být v intervalu h0.0, 1.0i a hodnoty CB , CR v intervalu h−0.5, 0.5i. Pokud chceme složky CB a CR při počítačovém zpracování ukládat jako celá čísla v rozsahu 0–255, musíme je nejprve posunout do kladné poloosy přičtením konstanty.
Y 0.299 0.587 0.114 R 0.5 CB = −0.1687 −0.3313 G CR 0.5 −0.4187 −0.0813 B Zkráceně lze definovat hodnoty CB a CR jako CB = 0.5643(B − Y ) CR = 0.7133(R − Y ) 2.4.3
Ostatní barevné prostory
Vzhledem k tomu, že v následujících kapitolách budeme pracovat výhradně s prostorem RGB, neboť ten je, jak uvádí publikace (Žára et al., 2004), technicky orientovaný prostor, vhodný pro displeje, od definice ostatních barevných prostorů upustíme. Jen pro úplnost uveďme, že existuje např. barevný prostor pro tisk (CMY, CMYK), barvený prostor pro televizní techniku a videotechniku (YUV) nebo chromatický diagram CIE pro vyjádření barev bez ohledu na subjektivitu lidského vnímání. 2.4.4
Formáty obrázkových souborů
G. Kessler v dokumentu (Kessler, 2001) pojednává o problematice obrázkových souborů a jejich využití ve steganografii: „Předtím než bude zmíněno, jakým způsobem lze data ukrývat do obrázkových souborů, proberme nejprve, jak jsou obrázkové soubory ukládány. Obrázkový soubor je v podstatě souborem binárním, který obsahuje binární reprezentaci barevné či jasové intenzity pro každý bod obrázku (pixel), přičemž matice pixelů vytváří výsledný obraz. Pro obrázky se většinou využívají buď 8bitová nebo 24bitová barevná schémata. V případě použití 8bitového schématu může pixel nabývat až 256 různých barev. V případě použití 24bitového schématu se použitelná množina barev značně rozšíří – každý pixel je reprezentován třemi bajty, kdy každý bajt nese informaci o intenzitě třech základních barev (červené, zelené a modré). Velikost obrázkového souboru je poté přímo úměrná množství pixelů a barevnému schématu. Například obrázek o rozměru 640 × 480 pixelů s barevnou paletou čítající 256 barev bude vyžadovat k uložení prostor 307 kB, zatímco obrázek o rozměru 1024 × 768 pixelů s 24bitovým barevným schématem zabere při uložení paměť velikosti 2,36 MB.ÿ
2.4
Obrázkové soubory a jejich využití ve steganografii
17
Aby se předešlo ukládání obrázkových souborů do těchto enormních velikostí, bylo vyvinuto množství kompresních schémat. Jmenujme například soubory formátu: • Graphic Interchange Format (GIF), • Joint Photographic Experts Group (JPEG), • Portable Network Graphic (PNG). O rozšířenosti obrázků v současném digitálním světě se můžeme poměrně snadno informovat pomocí internetového vyhledávače Google5 , který dokáže po zadání dotazu ve tvaru filetype:XYZ v sekci Images vyhledat v internetu pouze obrázky formátu XYZ. Pro nás zajímavou funkcí je vypsání přibližného počtu všech nálezů. Na základě možností exportu v grafickém programu Corel PHOTO-PAINT X4 lze sestavit seznam formátů souborů, jejichž četnost v internetu budeme chtít zjistit – JPG, GIF, PNG, BMP, TIF, PCX, TGA, WI, PP5. Výsledek jednotlivých dotazů je znázorněn v tabulce 2. Tab. 2: Výsledky vyhledávání obrázků dle jejich formátu pomocí vyhledávače Google. Za nejrozšířenější formáty obrázků lze považovat JPG, GIF a PNG. Zdroj: http://www.google.com/.
Dotaz Počet výsledků filetype:jpg 479 000 000 filetype:gif 416 000 000 filetype:png 213 000 000 filetype:bmp 4 810 000 filetype:tif 570 000 filetype:pcx 236 filetype:tga 78 filetype:wi 3 filetype:pp5 0 V dokumentu (Kessler, 2001) je dále uvedeno: „Nicméně ne všechny zmíněné formáty jsou pro účely steganografie stejně vhodné. Soubory formátu GIF a 8bitové BMP využívají postupu, který umožňuje programům přesně rekonstruovat původní nekomprimovaný obraz – to bývá označováno jako neztrátová komprese. Naproti tomu formát JPEG používá kompresi ztrátovou, což znamená, že komprimovaný obraz je tomu původnímu sice velmi podobný, ale není jeho přesnou kopií. Neztrátová komprese je mnohem více vhodná pro aplikace požadující zachování integrity originální informace. Mezi tyto aplikace patří i steganografie. Formát JPEG lze sice pro účely steganografie využít, mnohem běžnější je však ukrývat data v souborech formátu GIF nebo BMP.ÿ Avšak z důvodu značného rozšíření obrázků ve formátu JPEG na internetu byly vyvinuty steganografické metody i pro ukrývání dat do tohoto formátu, což bude přiblíženo v dalším textu. 5
http://www.google.com/
2.4
Obrázkové soubory a jejich využití ve steganografii
18
V literatuře věnované steganografickým metodám bývá – na základě údajů v tabulce 2 – neprávem opomíjen formát PNG. Protože se s tímto formátem v dalších kapitolách již nesetkáme, považujeme za důležité nastínit zde, jakým způsobem jej lze využít ve steganografii. Dle článku (Tišnovský, 2006) lze PNG považovat za neztrátový formát, kdy způsoby uložení obrazových dat mohou být následující: • Obrázky uložené ve stupních šedi. Pro tento typ obrázků platí, že hodnota každého pixelu vyjadřuje procentuální světlost mezi 0 % (zcela černá) a 100 % (čistě bílá). • Obrázky v pravých barvách. Každému pixelu je možné přiřadit prakticky libovolnou barvu. Vzhledem k tomu, že PNG je založeno na barevném modelu RGB, je každá barva specifikována pomocí tří koeficientů – podílů základních barev R, G a B. • Obrázky s barevnou paletou, ve kterých není každému pixelu uloženému v rastru přiřazena barva, ale index do barevné palety. Teprve tato paleta obsahuje seznam všech barev, ze kterých se obrázek může skládat. Protože se dle výše uvedeného jedná o neztrátový formát s velmi podobnými možnostmi uložení dat jako v případě formátu BMP (viz dále), můžeme se domnívat, že i steganografické techniky aplikovatelné na formát BMP budou aplikovatelné i na formát PNG. Tuto domněnku potvrzuje například existence webové aplikace Steganography Encode 6 nebo dokumentu An Image Steganography Algorithm for 24-bit Color Images Using Edge-Detection Filter 7 . V obou případech je jedna steganografická metoda použita pro skrývání dat v obrázcích formátu BMP i PNG. 2.4.5
Struktura formátu BMP
Se strukturou formátu BMP se lze seznámit například na webových stránkách (fileformat.info, 2009). Je zde uvedeno, že typický BMP soubor obsahuje následující bloky dat: • Hlavička BMP souboru – uloženy obecné informace o souboru. • Informace o bitmapě – tzv. hlavička DIB (Device Independent Bitmaps). Uloženy podrobné informace o souboru. • Barevná paleta – uloženy definice barev pro soubory využívající barevnou paletu. • Bitmapa – uložen vlastní obraz, pixel po pixelu. Struktury hlavička BMP souboru je detailně znázorněna v tabulce 3. Struktura hlavičky DIB je uvedena v tabulce 4. Na webových stránkách (fileformat.info, 2009) je dále uvedeno, že „pixely jsou ve vlastní bitmapě uloženy v pořadí, kdy se začíná pixelem z dolního levého rohu, 6
http://utilitymill.com/utility/Steganography Encode http://durendal.uplb.edu.ph:8080/dspace/bitstream/123456789/96/1/pastorfide-2007-2.pdf 7
2.4
19
Obrázkové soubory a jejich využití ve steganografii
Tab. 3: Struktura hlavičky souboru www.fileformat.info/format/bmp/egff.htm.
Pozice 0000h 0002h 0006h 0008h 000Ah
Velikost 2B 4B 2B 2B 4B
formátu
BMP.
Zdroj:
Účel „magickáÿ hodnota identifikující soubor BMP velikost souboru (v bajtech) vyhrazeno pro záznamy aplikace vyhrazeno pro záznamy aplikace pozice bajtu, kde začíná výpis pixelů
Tab. 4: Struktura informací o souboru formátu BMP (hlavička DIB). Zdroj: www.fileformat.info/format/bmp/egff.htm.
Pozice Eh 12h 16h 1Ah 1Ch 1Eh 22h 26h 2Ah 2Eh 32h
Velikost 4B 4B 4B 2B 2B 4B 4B 4B 4B 4B 4B
Účel velikost této hlavičky šířka bitmapy v pixelech výška bitmapy v pixelech počet barevných rovin (musí být 1) počet bitů na pixel – barevná hloubka použitá metoda komprese velikost obrazových dat horizontální rozlišení vertikální rozlišení počet barev v paletě nebo 0 počet důležitých barev nebo 0
poté se pokračuje zleva doprava po všech řadách až k pravému hornímu pixelu. Každá řada bývá zakončena oddělovači, což bývá zpravidla různý počet nulových hodnot. Bitmapa může být uložena v různých barevných hloubkách: • jeden bit na pixel (dvě barvy), • čtyři bity na pixel (16 barev, indexy do barevné palety), • osm bitů na pixel (256 barev, indexy do barevné palety), • 24 bitů na pixel (barevný prostor RGB). Výhodou formátu BMP je jeho jednoduchost, rozšířenost v systémech Windows, absence patentu a dobrá dokumentace. To jej činí vhodným formátem pro použití v nejrůznějších operačních systémech. Nevýhodou je naopak velikost, což lze obejít např. neztrátovou kompresí ZIP (až na 0,1 % původní velikosti).ÿ 2.4.6
Metody vkládání dat do obrázkových souborů
V dokumentu (Cummins et al., 2004) jsou uvedeny následující techniky vkládání dat do obrázkových souborů:
2.4
Obrázkové soubory a jejich využití ve steganografii
20
• Digitální vodotisk – vloží určitý vzor přes existující obrázek. Většinou tímto vzorem rozumíme opět obrázek – logo nebo podobné, jež překryje původní obrázek. Na obrázku 3 je znázorněn velmi jednoduchý příklad digitálního vodotisku.
Obr. 3: Jednoduchý příklad viditelného digitálního vodotisku. Lze jej realizovat v běžném grafickém editoru. Převzato z Steganography And Digital Watermarking (Cummins et al., 2004).
• Skrývání do nejméně významného bitu (LSB) – Least Significant Bit hiding, tato metoda je pravděpodobně nejjednodušší způsob skrytí dat do obrázku a je překvapivě efektivní. Metoda funguje tak, že do nejnižších bitů hodnot pixelů obrázku vkládá bity ukrývaných dat. Následující příklad demonstruje postup vkládání obrázku do obrázku, přičemž nejvyšší bity obrázku skrývaného vkládá do nejnižších bitů nosiče (počet bitů ovlivňuje výslednou kvalitu, jak ilustruje obrázek 4): – načti obrázek-nosič a vkládaný obrázek; – zvol počet nejméně významných bitů v bajtech nosiče, do nichž budou vkládány nejvíce významné bity tajného obrázku (čím více bitů zvolíme, tím více zachováme kvalitu vkládaného obrázku, ovšem tím více zhoršíme kvalitu nosiče); – vytvoř nový obrázek kombinující pixely nosiče a vkládaných dat; – pro získání vložené informace zpět z nosiče je třeba znát počet bitů, do nichž bylo vkládáno – poté vezmi tento počet nejméně významných bitů každého pixelu nosiče a použij je jako nejvýznamnější bity rekonstruované informace. Nejčastěji je možné setkat se s přepisováním nejnižšího (nejméně významného) bitu. Tato metoda bude vzhledem ke své významnosti pro tuto práci probrána velmi podrobně v dalším textu. • Využití komprese JPEG – formát JPEG využívá pro kompresi algoritmus podrobně popsaný v kapitole 2.7.1. Podstatou je rozdělení vstupního obrazu na velmi malé bloky (např. 8 × 8 pixelů), nad nimiž je provedena diskrétní kosinová transformace. Takto dostaneme matice koeficientů, které jsou nejprve kvantovány a poté kódovány zpravidla pomocí Huffmanova kódování. Jedna z implementací skrývá data během kroku kvantování koeficientů. Je-li nutné zakódovat bit hodnoty 0 do určitého čtverce 8×8 pixelů, je třeba nejprve zajistit, aby všechny hodnoty v něm byly sudé (např. vhodnou úpravou). Bit hodnoty 1 naopak zakódujeme pomocí úpravy, jež zajistí, že všechny hodnoty
2.5
Steganografické metody v obrázkových souborech
21
ve čtverci budou liché. Pokud jsou ve velkém obrázku tímto způsobem skryta data, je velmi obtížné je detekovat v porovnávání s metodou LSB. Skrytá data jsou takto více rozprostřena, a proto je tato metoda robustnější. Existují však i další implementace, které jsou ještě více robustní a současně mnohem složitější než implementace popsaná. • Vlnková transformace – je integrální transformace umožňující získat časově frekvenční popis signálu. Uplatňuje se například při odstranění šumu, detekci příznaků nebo kompresi signálů8 . Komprese obrázků pomocí vlnkové transformace představuje vylepšení oproti DCT pro vysoce komprimovaná data. Vkládání dat do takto komprimovaných obrázků je zajištěno pomocí vhodné modifikace tzv. vlnkových koeficientů.
Obr. 4: Ukázka vkládání dat do nejméně významného bitu (LSB). Počet použitých bitů určí, kolik nejvyšších bitů dat skrývaného obrázku (levý) je vloženo do kolika nejnižších bitů dat nosiče (pravý). Je možné pozorovat změny v kvalitě obou médií. Převzato z Steganography And Digital Watermarking (Cummins et al., 2004).
2.5
Steganografické metody v obrázkových souborech
Rodriguez, Agaian a Collins ve své práci (Rodriguez et al., 2003) klasifikují metody vkládání dat do obrázkových souborů do čtyř skupin: • vkládání textu, • vkládání obrázku, • vkládání komprimovaných dat, • náhodné vkládání dat s klíčem. 8
Více o teorii vlnkové transformace např. na http://measure.feld.cvut.cz/usr/staff/smid/wavelets/wavelet-
-intro-html.html
2.5
Steganografické metody v obrázkových souborech
22
V článku (Johnson a Jajodia, Feb. 1998) autoři uvádějí, že „informace mohou být skryty v digitálních obrázcích mnoha různými způsoby. Bity tajné zprávy mohou být sekvenčně zakódovány do načítaných dat obrázku, nebo mohou být nejprve vybrány oblasti obrázku s větším šumem (oblasti s velkým rozptylem přirozených barev), do nichž budou bity tajné zprávy následně ukryty. Bity tajné zprávy mohou být také pomocí kódování náhodných vzorů rozprostřeny po celém obrázku. Existuje množství postupů, jak ukrýt informaci do digitálního obrazu. Běžně používané metody zahrnují: • vkládání do nejméně významného bitu, • maskování a filtrování, • algoritmy a transformace. Každá z těchto technik může být aplikována na různé obrázkové soubory s různou úspěšností.ÿ Relativně samostatnou skupinu tvoří metody vkládání digitálních otisků, které bychom mohli zařadit pod maskování a filtrování. Nejprve tedy stručně pojednáme o nich, v dalším textu pak podrobně rozebereme metody implementující digitální steganografii „v pravém slova smysluÿ, tedy ukrývání dat do elektronických médií. Zde budeme hovořit o dvou fundamentálních přístupech, a to sice o ukrývání dat v oblasti obrazové a v oblasti transformační. 2.5.1
Maskování a filtrování
Techniky maskovací a filtrovací ukrývají informaci poznačením obrazu podobně jako vodotisk v papírové podobě. Obvykle jsou tyto techniky omezeny na použití v 24bitových obrázcích a obrázcích v odstínech šedé. V dokumentu (Johnson a Jajodia, Feb. 1998) je uvedeno: „Mezi tyto techniky lze zařadit digitální vodotisk, jehož důležitou vlastností je velká míra integrace do obrázku. Z tohoto důvodu odolává vodotisk například ztrátové kompresi. Viditelné digitální vodotisky nejsou steganografií dle jejich nejčastějších definic, avšak tato odlišnost je záměrná. Tradiční steganografie ukrývá informaci, kdežto digitální vodotisk informaci zdůrazňuje a stává se vlastností obrázku. Digitální vodotisk může vkládat informaci o autorských právech, vlastnictví či licenci. Ve steganografii je předmětem komunikace zpráva ukrytá v obrázku. V digitálním vodotisku je předmětem komunikace obrázek samotný.ÿ 2.5.2
Oblast obrazová a transformační
Silman v dokumentu (Silman, 2001) uvádí, že steganografické techniky lze rozdělit do dvou skupin: ty z oblasti obrazové (image domain) a ty z oblasti transformační (transform domain). Lee a Chen k tomu v (Lee a Chen, 2000) dodávají, že „techniky obrazové oblasti vkládají tajné zprávy přímo do hodnot pixelů, zatímco techniky transformační (někdy frekvenční) oblasti vkládají tajné zprávy do dat obrázků, nad nimž proběhla určitá transformaceÿ. (Například DCT koeficienty při kompresi
2.6
Obrazová oblast (image domain)
23
ve formátu JPEG.) V dokumentu (Venkatraman et al., 2004) je uvedeno, že „nejvhodnějšími obrázkovými formáty pro steganografii z obrazové oblasti jsou ty, které podporují neztrátovou kompresi. Přičemž použitelná steganografická technika závisí na konkrétním formátu souboru.ÿ Johnson a Jajodia v (Johnson a Jajodia, Apr. 1998) upřesňují, že techniky steganografie z transformační oblasti vyžadují i implementaci konkrétních algoritmů provádějících danou transformaci obrázkových dat. Wang a Wang uvádějí, že tyto metody skrývají tajné zprávy ve význačnějších oblastech obrázku-nosiče, proto je takové ukrytí více robustní (Wang a Wang, 2004). V dokumentu (Venkatraman et al., 2004) je zmíněno, že mnoho steganografických metod z transformační oblasti je nezávislých na formátu obrázku a vložená zpráva může přežít i konverzi mezi ztrátovou a neztrátovou kompresí. Rozdělení steganografie dle dokumentu (Morkel et al., 2005) je prezentováno na obrázku 5.
Obr. 5: Rozdělení steganografických metod. Zvláštní důraz je kladen na členění technik obrázkové steganografie. Převzato z An Overview of Image Steganography (Morkel et al., 2005).
2.6 2.6.1
Obrazová oblast (image domain) Nejméně významný bit (LSB)
Kessler v dokumentu (Kessler, 2004) uvádí, že „nejběžnější steganografické metody pro obrázkové a zvukové soubory využívají nějaký druh substituce či přepisu nejméně významných bitů. Pojem nejméně významný bit vychází z numerické významnosti bitů v rámci bajtu. Nejvyšší nebo nejvíce významný bit je ten, který nese
2.6
Obrazová oblast (image domain)
24
nejvyšší aritmetickou hodnotou (např. 27 = 128), zatímco nejnižší nebo nejméně významný bit je ten, který nese nejnižší aritmetickou hodnotu (např. 20 = 1).ÿ V článku (Johnson a Jajodia, Feb. 1998) je uvedeno, že vkládání tajné zprávy metodou nejméně významného bitu (LSB) je nejběžnější a nejjednodušší technika, jak ukrýt informaci do obrázku-nosiče. Krenn v dokumentu (Krenn, 2004) upřesňuje: „Ačkoliv metoda LSB trpí značnými nedostatky, je relativně nejjednodušší na implementaci, což ji činí tak populární. Aby bylo možné ukrýt do obrázku tajnou zprávu, je nutné použít čistý obrázkový soubor, jenž bude sloužit jako přenosové médium. Protože tato metoda využívá bity každého pixelu obrázku, je také nutné použít formát obrázku neumožňující ztrátovou kompresi. V opačném případě dojde ke ztrátě vložených dat v důsledku aplikace algoritmu ztrátové komprese. Použijeme-li k ukrytí zprávy obrázek s barevnou hloubkou 24 bitů na pixel, je možné pro uložení tajné zprávy využít informaci o všech barevných složkách (červená, zelená, modrá) každého pixelu. Barevná složka je v tomto případě definována jedním bajtem, z něhož lze využít jeden (nejméně významný) bit. Máme-li tedy obrázek o rozměrech 800 × 600 pixelů, je možné do něj vložit až 1 440 000 bitů (180 000 bajtů) skrytých dat. Princip LSB demonstrujme na následujícím příkladu. Mějme posloupnost tří pixelů (každý definovaný třemi bajty), jež zabírá celkem 9 B paměti: (00100111 11101001 11001000) (00100111 11001000 11101001) (11001000 00100111 11101001) Chtějme nyní do této posloupnosti pixelů ukrýt znak a, jehož binární reprezentace je 01100001 (hodnota 97 dle ASCII tabulky). Výše uvedená posloupnost pixelů bude poté vypadat takto: (00100110 11101001 11001001) (00100110 11001000 11101000) (11001000 00100111 11101000) V tomto případě bylo nutno reálně změnit hodnotu pěti bitů, aby byl znak úspěšně vložen. V průměru je při použití této metody měněna polovina bitů, pokud je kapacita nosiče využita maximálně. Výsledné změny v obrázku jsou lidským okem nepostřehnutelné. V případě použití nosiče o barevné hloubce pouze 8 bitů je nutné volit opatrnější postup. Je to z důvodu, že pixel obrázku s barevnou hloubkou 24 bitů je určen třemi bajty, kdežto u obrázku s barevnou hloubkou 8 bitů je každý pixel určen pouze jedním bajtem. Je tedy zřejmé, že změna tohoto bajtu může vyústit ve viditelnou změnu obrázku-nosiče, neboť barevná paleta je méně rozsáhlá. Je tedy nutné klást větší důraz na výběr nosiče – ideální je použít obrázek v odstínech šedé, neboť takto lze lidské oko nejlépe oklamat.ÿ Wang a Wang v práci (Wang a Wang, 2004) uvádějí, že v případě, kdy je pro ukrytí zprávy využita nepřerušená posloupnost bajtů od začátku do konce souboru (jako v příkladu výše), je toto vložení tajných dat nejsnáze detekovatelné. Anderson a Peticolas v dokumentu (Anderson a Petitcolas, 1998) dodávají, že „bezpečnější
2.6
Obrazová oblast (image domain)
25
formou LSB je sdílení tajného klíče mezi odesílatelem a příjemcem. Pomocí tajného klíče je specifikováno, v jakých konkrétních pixelech jsou tajná data ukryta, což potenciálnímu útočníkovi ztíží detekci tajných dat i v případě, že je známo použití metody LSB.ÿ Krenn se v dokumentu (Krenn, 2004) zabývá i využitelností metody LSB: „Metoda LSB ve své nejjednodušší podobě vyžaduje použití obrázků ve formátu BMP, neboť ten podporuje pouze neztrátovou kompresi. Hlavní nevýhodu tohoto použití představuje skutečnost, že pro ukrytí tajné zprávy do obrázku ve formátu BMP je třeba značně velký nosič. A v dnešní době se na internetu s obrázky ve formátu BMP o rozměrech 800×600 pixelů příliš nesetkáme.ÿ Autoři dokumentu (Morkel et al., 2005) uvádějí, že z tohoto důvodu byla steganografická metoda LSB upravena i pro použití v jiných formátech obrázků. 2.6.2
LSB a obrázky s barevnou paletou
V dokumentu (Morkel et al., 2005) je uvedeno, že formát GIF je dalším oblíbeným formátem pro prezentování obrázků na internetu. V referenční příručce (devx.com, 2009) jsou o tomto formátu uvedeny následující informace: „Z definice formátu GIF nemohou obrázky disponovat větší barevnou hloubkou než osm bitů, z čehož plyne maximální zobrazitelný počet barev při použití tohoto formátu – 256. Obrázky uložené v tomto formátu jsou tzv. indexované, což znamená, že barvy použité v konkrétním obrázku jsou uloženy v jeho záhlaví ve formě barevné palety (někdy uváděné jako vyhledávací tabulka barev) a hodnoty pixelů představují odkazy (indexy) do této palety.ÿ Johnson a Jajodia v článku (Johnson a Jajodia, Apr. 1998) uvádějí, že barvy popsané v barevné paletě jsou obvykle řazeny od nejčastěji se vyskytující barvy obrázku k nejméně často se vyskytující barvě, aby se takto zkrátil čas potřebný k vyhledání konkrétní barvy. Johnson a Jajodia se zabývají v článku (Johnson a Jajodia, Apr. 1998) i využitím formátu GIF ve steganografii: „Obrázky ve formátu GIF lze ve steganografii použít, ovšem za dodržení určitých zásad. Hlavní omezení souvisí s metodou použití barevné palety, kdy i malá změna v hodnotě pixelu způsobená technikou nejméně významného bitu může vyústit ve zobrazení zcela odlišné barvy, protože je změněn index do barevné palety. V případě, že sousední položky barevné palety jsou podobné, zmíněná změna nepovede ke vnímatelnému rozdílu, ovšem pokud sousední položky podobné nejsou, je zřejmé, že změna bude evidentní.ÿ Morkel, Eloff a Olivier poukazují na některá řešení popsaného problému: • Setřídění barevné palety takovým způsobem, aby byly minimalizovány rozdíly mezi sousedními barvami v paletě (Chandramouli et al., 2003). • Přidání nových barev do palety, přičemž tyto barvy budou pro lidské oko velmi podobné těm již v barevné paletě existujícím. Toto řešení vyžaduje, aby původní obrázek (nosič) obsahoval méně jedinečných barev, než je maximální množství barev vycházející z barevné hloubky obrázku (Morkel et al., 2005).
2.7
Transformační oblast (transform domain)
26
• Dle autorů (Morkel et al., 2005) je nejlepším řešením použít jako nosiče obrázky ve stupních šedé. V 8bitovém obrázku formátu GIF ve stupních šedé nalezneme 256 různých odstínů šedé, přičemž přechody mezi barvami jsou velmi plynulé, což ztěžuje detekci změny nejnižších bitů indexů.
2.7 2.7.1
Transformační oblast (transform domain) Komprese formátu JPEG
Pro pochopení steganografických technik pracujících s formátem obrázků JPEG je nutné nejprve se seznámit s jeho strukturou a s principy, jak jsou obrázková data v tomto formátu uložena. Kolektiv autorů v publikaci (Žára et al., 2004) uvádí, že „metoda řízená ztrátové komprese využívající diskrétní kosinové transformace byla vyvinuta skupinou JPEG9 v rámci mezinárodní standardizační organizace ISO v roce 1991. Je vhodná pro kódování fotografií, u nichž mají sousední pixely sice odlišné, ale přesto blízké barvy. Naopak není vhodná pro obrazy s nižším barevným rozlišením (na velkých barevných plochách vytváří artefakty v podobě čtverců či pruhů). Zcela nepoužitelná je pro černobílé obrázky, které rozmazává. Optimálním vstupem je obraz ve 24 bitech na pixel.ÿ Dále je tamtéž pojednáno o diskrétní kosinové transformaci (DCT): jde o „formu diskrétní Fourierovy transformace, přičemž obrazová data jsou považována za vzorky spojitých funkcí naměřených v diskrétní síti pixelů. Výsledkem kosinové transformace je nalezení sady parametrů kosinových funkcí, jejichž složením lze rekonstruovat původní obraz. Pro kódování obrazu ve formátu JPEG se používá dopředná transformace (FDCT), při dekódování zpětná transformace (IDCT).ÿ Postup při kompresi JPEG se sestává z pěti kroků, při dekompresi jsou tyto kroky prováděny analogicky v obráceném pořadí (Žára et al., 2004): 1. Transformace barev Provede se převod do barevného prostoru YCB CR . V další fázi jsou jasové složky Y a barevné složky CB a CR zpracovány odděleně. 2. Redukce barev Sníží se objem dat zprůměrováním barevných složek několika sousedních pixelů a nahrazením jedinou hodnotou. Používají se dvě varianty: • 2h1v: průměrování sousedních dvojic • 2h2v: průměrování sousedních čtveřic Tento krok nezpůsobí zásadní zhoršení obrazu. Jasové složky Y všech pixelů zůstávají zachovány. 3. Dopředná diskrétní kosinová transformace Obrazová data jsou rozdělena do čtverců 8 × 8. Každý čtverec je podroben diskrétní kosinové transformaci. Výsledkem je matice 8 × 8 tzv. DCT koeficientů 9
Joint Photographic Expert Group
2.7
27
Transformační oblast (transform domain)
(F (u, v)) získaných výpočtem z hodnot pixelů f (x, y) podle vzorce:
7 X 7 X
1 (2x + 1)uπ (2y + 1)vπ F (u, v) = C(u)C(v) cos cos 4 16 16 x=0 y=0 1 C(u), C(v) = √ pro u, v = 0, resp. 1 jinde. 2 Zpětná (inverzní) transformace má tvar: 7 X 7 1 X (2x + 1)uπ (2y + 1)vπ f (x, y) = C(u)C(v)F (u, v)cos cos 4 u=0 v=0 16 16
"
#
Hodnoty získané dopřednou transformací nejsou celočíselné a jsou zaokrouhleny až v další fázi zpracování. 4. Kvantování koeficientů DCT V této fázi je určena úroveň komprese. Rozsah DCT koeficientů F (u, v) je snižován vydělením určitým kvantizačním činitelem. Posléze jsou koeficienty zaokrouhleny. DCT koeficient F (0, 0) v levém horním rohu matice je nazýván DC člen a má největší celkový vliv na veškerá obsažená data v matici. Ostatní koeficienty se nazývají AC členy a ovlivňují vyšší frekvence, tedy změny mezi jednotlivými pixely. Čím větší je jejich index (vzdálenost od DC členu, tím menší mají vliv). Kvantizační tabulky byly stanoveny komisí JPEG a jsou obsaženy v různých tabulkách pro složky YCB a CR . Každý koeficient ve zpracovávané matici je dělen jednou odpovídající hodnotou z kvantizační tabulky. Kvantizační tabulky jsou stejné pro celý obrázek a jsou ukládány do výstupního obrazu kvůli rekonstrukci obrazu. 5. Kódování Výsledkem předchozích kroků jsou numerické úpravy čtvercové podoblasti vstupního obrazu, které zjednodušily tvar až do podoby řídké matice s dominantním levým horním rohem. Tato matice je nyní kódována a zapisována do výstupního souboru, přičemž je využito toho, že většina koeficientů v okolí pravého dolního rohu má nulovou hodnotu. Matice čísel je převedena na posloupnost tak, jak ukazuje obr. 6 a tato posloupnost je zakódována Huffmanovým nebo aritmetickým kódováním. Členy DC se zapisují samostatně. Nejprve se sdruží DC členy z celého obrázku a poté jsou kódovány jejich rozdílové hodnoty. 2.7.2
Steganografie soubory ve formátu JPEG
V dokumentu (Morkel et al., 2005) autoři podávají stručný úvod k problematice ukrývání tajných zpráv do souborů formátu JPEG: „Původně se předpokládalo, že soubory ve formátu JPEG nebudou ke steganografii vhodné z důvodu použití
2.7
Transformační oblast (transform domain)
28
Obr. 6: Sekvence postupného čtení hodnot kvantovaných koeficientů z matice. Převzato z Programujeme JPEG: Kvantizace DCT koeficientů (Tišnovský, 2007).
ztrátové komprese, jež způsobuje určitou modifikaci dat obrázku. Jedna z hlavních charakteristik steganografie totiž spočívá v ukrývání tajných informací do redundantních dat obrázkového nosiče, ovšem formát JPEG tyto redundantní data odstraňuje (což souvisí se ztrátovou kompresí). Existovalo tedy důvodné podezření, že ukrývaná zpráva bude ztrátovou kompresí nevratně poškozena. A i v případě, že by se podařilo skrytou zprávu udržet neporušenou, bylo by složité zprávu vložit do nosiče tak, aby změny v nosiči byly nevnímatelné z důvodu aplikace hrubé komprese. Vlastnosti kompresního algoritmu však byly využity za účelem vyvinutí steganografického algoritmu i pro soubory ve formátu JPEG.ÿ Konkrétně využití jedné z vlastností formátu JPEG popisují Johnson a Jajodia v článku (Johnson a Jajodia, Feb. 1998): „Během fáze Kvantování koeficientů DCT kompresního algoritmu se vyskytují zaokrouhlovací chyby u koeficientů, přičemž toto není ve výsledku nijak patrné.ÿ Ačkoliv kvůli této vlastnosti je kompresní algoritmus formátu JPEG klasifikován jako ztrátový, je možné využít ji i ke skrývání dat do obrázkového nosiče (Morkel et al., 2005). Autoři dokumentu (Morkel et al., 2005) popisují princip využití steganografie v souborech formátu JPEG: „Důležitým aspektem je rozlišení kompresního algoritmu na ztrátovou a neztrátovou část. Fáze transformace DCT a kvantizace koeficientů považujeme za část ztrátovou zatímco fázi aplikace Huffmanova kódování považujeme za část neztrátovou. Steganografie své místo nalezne mezi těmito částmi. Metoda vkládání do nejméně významného bitu může být použita pro vložení bitů tajné zprávy do nejméně významných bitů kvantizovaných DCT koeficientů před aplikací Huffmanova kódování. Vložením tajné informace v této části (během transformace – odtud transformační oblast) docílíme toho, že vloženou informaci bude velmi složité detekovat, neboť k modifikaci nedochází v oblasti vizuální.ÿ Jinými slovy – změna v nejméně významném bitu neovlivní jeden pixel, ale bude rozložena na celou skupinu sousedních pixelů. Příkladem aplikací pracujících v oblasti transformační mohou být steganografické nástroje Jsteg10 a OutGuess11 . Oba nástroje ukrývají data do DCT koeficientů. 10 11
http://zooid.org/∼paul/crypto/jsteg/ http://www.outguess.org/
2.8
2.8
Metody oblasti obrazové i transformační
29
Metody oblasti obrazové i transformační
Jak je zřejmé z obrázku 5, některé steganografické algoritmy jsou zařaditelné do obou oblastí. Morkel, Eloff a Olivier k tomu v dokumentu (Morkel et al., 2005) uvádějí, že tato kategorizace záleží na konkrétní implementaci daného algoritmu. Tamtéž je uvedeno, že mezi tyto algoritmy řadíme následující techniky: Patchwork – lze přeložit jako „slepovacíÿ nebo „spojovacíÿ metoda. Johnson a Jajodia v článku (Johnson a Jajodia, Apr. 1998) uvádějí, že algoritmus této metody nejprve přidá redundanci k ukrývaným datům a poté je rozptýlí po celém obrázkovém nosiči. Bender, Gruhl a Morimoto v článku (Bender et al., 1996) upřesňují: „Za použití pseudonáhodného generátoru jsou zvoleny dvě oblasti obrázku – patch A a patch B. Všechny pixely v patchi A jsou poté zesvětleny, zatímco v patchi B jsou ztmaveny (intenzity pixelů jsou buď zvýšeny nebo sníženy o konstantní hodnotu).ÿ Kontrastní změny mezi oběma podmnožinami poté kódují jeden bit skrývané zprávy, uvádí Johnson a Jajodia v článku (Johnson a Jajodia, Apr. 1998). Stejní autoři dodávají, že průměrný jas obrázkového nosiče není použitím této techniky změněn. Rozprostřené spektrum – techniky rozprostřeného spektra tajná data ukrývají rozprostřena v celém nosiči, aby se takto maximálně ztížila jejich detekce (Wang a Wang, 2004). V článku (Marvel et al., 1999) je uvedeno: Steganografie využívající rozprostřené spektrum vkládá tajnou zprávu do šumu, který je poté sloučený s obrázkovým nosičem, čímž je vytvořeno steganografické médium.
2.9
Srovnání steganografických technik
Autoři dokumentu (Morkel et al., 2005) podávají zevrubné srovnání steganografických technik popsaných výše. Konkrétně srovnávají metodu LSB (Least Significant Bit) ve formátu BMP, LSB ve formátu GIF, kompresi JPEG, patchwork a rozprostřené spektrum z následujících hledisek: • neviditelnost (steganografický algoritmus musí zajistit neviditelnost vkládané zprávy), • kapacita nosiče (jak velkou informaci lze do nosiče ukrýt), • odolnost proti statistickým útokům (vložená data nesmí způsobit v obrázkovém nosiči statisticky významné změny), • odolnost proti manipulaci s nosičem (vložená zpráva by měla odolat ořezávání či rotaci obrázkového nosiče), • nezávislost na formátu nosiče, • nenápadnost (steganografický algoritmus nesmí vzbudit podezření, že obrázkový nosič je použit pro přenos zprávy – je nutné se vyvarovat např. netypické velikosti souboru). Stejní autoři dospěli k výsledku, jenž je zachycen v tabulce 5. Úrovně, v nichž jednotlivé algoritmy vyhovují požadavkům uvedeným výše, jsou určeny jako vysoká,
2.9
30
Srovnání steganografických technik
střední a nízká. Vysoká úroveň znamená, že algoritmus plně vyhovuje danému požadavku, a naopak nízká úroveň indikuje skutečnost, že algoritmus má v daném požadavku slabiny. Střední úroveň vypovídá o tom, že splnění požadavku závisí na dalších okolnostech, např. na volbě nosiče (LSB ve formátu GIF může ukrýt velké množství informace, ovšem za podmínky použití vhodného nosiče). Tab. 5: Srovnání algoritmů obrázkové steganografie. Tabulka převzata z An Overview of Image Steganography (Morkel et al., 2005).
Neviditelnost Kapacita nosiče Odolnost proti statistickým útokům Odolnost proti manipulaci s nosičem Nezávislost na formátu nosiče Nenápadnost
LSB v BMP vysoká vysoká
LSB v GIF střední střední
JPEG Patchwork komprese vysoká vysoká střední nízká
Rozprostřené spektrum vysoká střední
nízká
nízká
střední
vysoká
vysoká
nízká
nízká
střední
vysoká
střední
nízká
nízká
nízká
vysoká
vysoká
nízká
nízká
vysoká
vysoká
vysoká
Výsledek své práce stejní autoři shrnují v přehledu, jenž je možné chápat jako manuál pro výběr konkrétní steganografické metody: LSB v souborech BMP – Pokud pro ukrývání dat použijeme „hrubýÿ obrázek, jenž není nijak modifikován kompresí, je nutné uvažovat souvislost mezi neviditelností skryté zprávy a množstvím skrývaných dat. Do obrázků formátu BMP je teoreticky možné ukrýt velké množství dat, ovšem čím více bitů je tímto změněno, tím více vzroste riziko odhalení pouhým okem. Hlavní nevýhodu aplikace LSB na obrázky formátu BMP představuje velikost BMP souborů. Přenos neobvykle velkých obrázků formátu BMP může vzbudit podezření, protože používání tohoto formátu není příliš rozšířeno. Doporučené použití: V aplikacích, kde je nejdůležitější objem přenesené informace a již méně je důležitá její utajitelnost. LSB v souborech GIF – Vlastnosti podobné LSB v souborech BMP ovšem s tím rozdílem, že obrázky formátu GIF disponují pouze 8bitovou barevnou hloubkou, takže množství potenciálně ukryté informace je menší než v případě BMP. Soubory GIF jsou velmi citlivé na statistický i vizuální útok. Síla metody LSB v těchto souborech je závislá na barevnosti použitého obrázkového nosiče. Doporučené použití: V aplikacích, které ukrývají přiměřené množství dat do obrázků v odstínech šedé. JPEG komprese – Proces vložení tajné informace do nosiče během JPEG komprese vede k vytvoření steganografického média s vysokou mírou neviditelnosti, protože vkládání se děje v oblasti transformační. JPEG je pro svou malou velikost velmi rozšířeným formátem obrázků na internetu, díky čemuž budí jeho
2.10
Nástroje pro ukrývání zpráv
31
přenos minimální podezření. Nicméně proces komprese představuje velmi složitý matematický postup, což činí tuto metodu složitější na implementaci. Doporučené použití: V aplikacích, kdy jsou obrázky přenášeny otevřeným kanálem, což je například internet. Patchwork – Nevýhodou je velmi malé množství potenciálně ukryté informace. Naopak výhodou této metody je její robustnost, kdy skrytá data odolávají i operacím ořezu či rotace. Doporučené použití: V aplikacích přenášející velmi malý objem velmi citlivé informace. Rozprostřené spektrum – Velmi robustní metoda odolávající statistickým útokům, neboť ukrytá data jsou „roztroušenaÿ po celém obrázkovém nosiči, což vede k neměnnosti statistických vlastností obrázku před a po vložení zprávy. Doporučené použití: Ve většině steganografických aplikací. Implementaci může ztížit komplikovanost a matematická náročnost metody.
2.10
Nástroje pro ukrývání zpráv
2.10.1
EzStego
Aplikace vyvinutá Romanou Machlado12 ukrývá zprávy do obrázků formátu GIF. V dokumentu (Westfeld a Pfitzmann, 1999) je uvedeno, že „aplikace data ukrývá pomocí hodnot pixelů (indexů do barevné palety), přičemž barevná paleta zůstává beze změny. Steganografický algoritmus vytvoří kopii barevné palety utříděnou takovým způsobem, aby rozdíly mezi sousedními barvami byly minimální. Vkládací funkce čte sekvenčně od začátku hodnoty jednotlivých pixelů a porovnává jejich steganografickou hodnotu (hodnotu nejméně významného bitu) s hodnotou bitu, který je třeba vložit. Pokud například potřebujeme skrýt hodnotu 0 a hodnota pixelu (indexu) je například 4 (binárně 100), neprovádí se žádná úprava. Pokud bychom potřebovali ukrýt hodnotu 1, index bude modifikován tak, aby ukazoval na sousední barvu v utříděné paletě. Z indexu 4 se pak stane index 5 (binárně 101).ÿ V principu jde tedy o jednoduchou implementaci metody LSB, ovšem za předpokladu vhodně utříděné barevné palety, což je v souborech formátu GIF podstatné. Postup ilustruje obrázek 7. V dokumentu (Westfeld a Pfitzmann, 1999) je také poznámka, že „bity potenciálně ukryté zprávy lze extrahovat velmi snadno. Pokud bychom například chtěli skrytá data vykreslit jako černobílý obrázek, můžeme pro steganografickou hodnotu přečteného pixelu 0 vykreslit černou a pro hodnotu 1 bílou barvu.ÿ 12
www.securityfocus.com/tools/586
2.10
Nástroje pro ukrývání zpráv
32
Obr. 7: Princip algoritmu nástroje EzStego. Původní paleta vytvořena dle četnosti barev v obrázku formátu GIF. Převzato z Attacks on Steganographic Systems (Westfeld a Pfitzmann, 1999).
2.10.2
Steghide
Autorem tohoto steganografického programu je Stefan Hetzl a domovská stránka aplikace se nachází na adrese http://steghide.sourceforge.net/. Následující popis je sestaven na základě oficiálního manuálu programu. Steghide je schopen skrývat data v různých obrázkových a zvukových souborech. Metoda skrytí je odolná proti statistickým testům prvního řádu, neboť četnosti barev v obrázku nejsou výrazně měněny. Mezi jeho funkčnosti patří i komprese a šifrování skrývaných dat nebo vkládání kontrolního součtu. Formáty podporovaných nosičů jsou JPEG, BMP, WAV a AU. Steghide používá při skrývání dat poznatky z teorie grafů. Algoritmus vložení dat funguje zhruba takto: 1. Tajná data jsou nejprve zkomprimována a zašifrována. 2. Je získána posloupnost pozic pixelů pomocí generátoru pseudonáhodných čísel, který je inicializován hodnotou hesla (do těchto pixelů budou ukryta tajná data). 3. Pixely, které není třeba nijak modifikovat, neboť již obsahují požadovanou hodnotu, jsou odstraněny ze seznamu pozic. 4. Zbývající pozice se stanou vstupem algoritmu párování v bipartitním grafu, který hledá takové páry pixelů, v nichž by výměna hodnot měla stejný efekt jako vložení odpovídající části tajných dat. Jakmile žádný další pár nelze nalézt, je výměna hodnot provedena. Tyto pixely jsou ze seznamu pozic také odstraněny. 5. Na zbývajících pixelech se provede modifikace, aby obsahovaly odpovídající část tajných dat (tato modifikace již způsobuje přepis hodnot pixelů). Díky skutečnosti, že většina pixelů je pouze zaměněna, a nikoliv přepsána, je algoritmus odolný proti statistikám prvního řádu.
2.10
Nástroje pro ukrývání zpráv
2.10.3
33
Steganografický on-line systém Matěje Zapletala (M. Z.)
Jde o jednoduchou webovou aplikaci vytvořenou Matějem Zapletalem13 . Aplikace je dostupná na https://akela.mendelu.cz/∼xzaplet8/KAS/. Aplikace zprávy zapsané v textovém poli ukrývá do 24bitových obrázků formátu BMP. Její algoritmus vkládá data tajných zpráv do LSB sekvenčně od začátku souboru. Kromě toho lze skrývaná data i zašifrovat pomocí algoritmu TripleDES. Pro testovací účely aplikace umožňuje zprávy „skrývatÿ i do nejvyššího bitu, což opticky zvýrazní pixely, do nichž jsou bity zprávy vkládány. 2.10.4
OutGuess
Outguess14 je program, jehož autor, Niels Provos, chtěl vyvinout nástroj pro skrývání zpráv v obrázcích formátu JPEG, který by odolával statistickým útokům prvního řádu. Jeho algoritmus je zveřejněný ve článku (Provos a Honeyman, 2003): Vstup: zpráva, klíč, nosič Výstup: steganografický obrázek ------------------------------inicializuj generátor pseudonáhodných čísel pomocí klíče; dokud (jsou data k~vložení) dělej získej pseudonáhodný DCT koeficient z~nosiče; když (DCT != 0) a~(DCT != 1) pak získej hodnotu dalšího LSB ze zprávy; přepiš LSB DCT koeficientu LSB získaným ze zprávy; konec když; vlož DCT do steganografického obrázku; konec dokud; 2.10.5
Algoritmus F5
V literatuře (Provos a Honeyman, 2003), (Kessler, 2004) je označován za jeden z nejobtížněji detekovatelných steganografických algoritmů. Byl vyvinut Andreasem Westfeldem, spoluautorem dokumentu (Westfeld a Pfitzmann, 1999). Ve článku (Provos a Honeyman, 2003) je uvedeno, že algoritmus nenahrazuje nejméně významné bity DCT koeficientů bity vkládané zprávy, ale snižuje jejich absolutní hodnotu procesem zvaným matrix encoding. Tamtéž je také popsán jeho netriviální algoritmus. 13 14
http://is.mendelu.cz/lide/clovek.pl?id=13015 http://www.outguess.org/
2.11
Steganografie – dílčí shrnutí
2.11
34
Steganografie – dílčí shrnutí
Na základě doposud uvedeného je zřejmé, že předmětem steganografie je ukrývání zpráv do různých objektů, které nazýváme nosiči. Nosič obsahující skrytou zprávu je pak nazýván steganografické médium. Nosičem pak může být prakticky jakýkoliv objekt reálného světa, do něhož jsme schopni pomocí nějakého postupu, steganografického algoritmu, skrýt tajnou zprávu. Nezasvěcený účastník komunikace vnímá steganografické médium v jeho původním významu, kdežto zasvěcený účastník jej chápe jako obálku pro očekávanou zprávu. Předmětem této práce je steganografie digitální, která jako nosič nejčastěji využívá obrázkové soubory, např. formátu BMP, PNG, GIF či JPEG. Metody ukrývání do těchto nosičů mohou být různé, obvykle se podřizují charakteristikám jednotlivých formátů. Mezi nejjednodušší techniky ukrývání zpráv patří metoda vkládání do nejméně významného bitu (LSB), která může být vylepšena selekcí pozic pomocí generátoru pseudonáhodných čísel inicializovaným tajným heslem. Jsou možné i další obměny této metody, které sofistikovaněji vybírají oblasti obrázku, jejichž nejméně významné bity využijí. Tato metoda je vhodná především pro obrázky formátu BMP, PNG či obrázky formátu GIF v odstínech šedé. Jiný přístup vyžaduje ukrývání zpráv do obrázků formátu JPEG, kde nelze modifikovat přímo obrazová data (ta bývají upravena ztrátovou kompresí), ale ukrývaná data se zpravidla zapisují do DCT koeficientů. Vzhledem ke skutečnosti, že takto je ovlivněn celý blok pixelů o rozměrech 8 × 8, je výsledné ukrytí robustnější než v případě LSB. I v tomto přístupu lze využít generátoru pseudonáhodných čísel. Postupně se objevují i další dokonalejší a složitější steganografické algoritmy, například algoritmus F5, patchwork či rozprostřené spektrum. Jejich lepší schopnosti jsou vykoupeny poměrně složitější implementací, než jaká je u základních technik.
2.12
Stegoanalýza
2.12.1
Vězňův problém
Takzvaný „Vězňův problémÿ publikovaný Simmonsem v článku (Simmons, 1983) je často využíván k popisu steganografie, ačkoliv byl původně určen k popisu kryptografického scénáře. V dokumentech (Chandramouli, 2002) a (Fridrich et al., 2003) je problém ve steganografickém významu popsán: „Obsahem problému jsou dva vězni, Alice a Bob, kteří jsou zamčeni v oddělených celách a kteří spolu potřebují komunikovat za účelem dohodnutí plánu na útěk. Alice a Bob jsou schopni posílat si zprávy, ovšem dozorce William může všechny tyto zprávy číst. Alice a Bob vědí, že William jejich komunikaci v případě odhalení tajného komunikačního kanálu okamžitě ukončí. Dozorce William může jednat buď v pasivním režimu nebo v aktivním režimu. V modelu pasivního dozorce William kontroluje každou zprávu a na základě své schopnosti detekovat skrytou komunikaci rozhoduje, zda zprávu pustí dále či
2.12
Stegoanalýza
35
nikoliv. V modelu aktivního dozorce může William kontrolované zprávy navíc libovolně modifikovat. Podezíravý dozorce může modifikovat všechny zprávy za účelem zničení potenciálního skrytého komunikačního kanálu, a v tomto případě musí Alice a Bob použít velmi robustní steganografickou metodu. Obtížnost dozorcovy úlohy závisí převážně na složitosti steganografického algoritmu a na počáteční Willamově znalosti.ÿ Kessler v dokumentu (Kessler, 2004) k tomu dodává, že můžeme rozlišovat čistý steganografický model a steganografický model s tajným klíčem: • Čistý steganografický model je založen na předpokladu, že William neví nic o steganografické metodě, jakou Alice a Bob používají. Ve skutečném světě však předpoklad nastává výjimečně, v oblasti kryptografie prakticky vůbec. • Steganografický model s tajným klíčem naopak předpokládá, že William zná steganografický algoritmus, avšak nezná tajný steganografický (kryptografický) klíč používaný Alicí a Bobem. Tato situace v praxi nastává spíše. 2.12.2
Definice stegoanalýzy
Stegoanalýza je ve své podstatě opakem steganografie. Pokouší-li se steganograf vyvinout a implementovat nové metody pro skrývání zpráv do různých médií, stegoanalytik se snaží skrytý obsah v potenciálním nosiči odhalovat. Chandramouli v dokumentu (Chandramouli, 2002) uvádí, že „stegoanalýzou rozumíme detekci steganografie třetí stranouÿ. Dle stejného autora jde o relativně mladou vědní disciplínu, v důsledku čehož se před rokem 1990 nesetkáme s velkým množstvím publikovaných článků. Stegoanalýza je vědou i dovedností, která se zabývá detekcí nebo odhadem skryté informace a spočívá v průzkumu libovolného datového transferu bez předpokladů o steganografickém algoritmu (Chandramouli, 2002). Autoři dokumentu (Jackson et al., 2002) navíc dodávají, že „pouhá detekce skrytých dat nemusí být dostatečná. Stegoanalytik může také chtít skrytou zprávu extrahovat, zneplatnit (aby ji původní příjemce nemohl přečíst), nebo pozměnit (aby byl původní příjemce oklamán).ÿ Andrew Ker z Oxfordské univerzity v jedné ze svých přednášek (Ker, 2008) uvádí několik aspektů, dle nichž může být na stegoanalýzu pohlíženo: • Cíl: Detekovat, zda objekt obsahuje skrytý obsah. • Stegoanalýza může být – cílená na konkrétní steganografický algoritmus (nejčastější), – slepá – potenciálně odhalí i doposud neznámou metodu (vzácná, obvykle slabá). • Výstup stegoanalýzy může být – binární ano/ne (obsažena skrytá data?), – kvantitativní (odhad délky skrytých dat). • Metodologie stegoanalýzy:
2.12
Stegoanalýza
36
– kombinatorická analýza operace skrytí dat (musí být cílená), – aplikace technik strojového učení. U metodologií Ker popisuje jejich výhody a nevýhody. Kombinatorická analýza operace skrytí dat je obvykle vysoce citlivá a aplikovatelná na mnoho typů nosičů. Naopak bývá velmi složité navrhnout detekční algoritmus. Aplikace technik strojového učení vyniká v tom, že může využít standardních technik a postup vkládání dat nemusí být přesně znám. Naopak bývá výpočetně náročná a různé typy nosičů vyžadují odlišný trénink. 2.12.3
Techniky stegoanalýzy
K rozdělení technik stegoanalýzy lze přistoupit mnoha způsoby. V literatuře se nejčastěji setkáme s rozlišením podle typu útoku nebo podle dostupnosti informací. S druhým uvedeným členěním se můžeme setkat například v dokumentu (Curran a Bailey, 2003) nebo v dokumentu (Johnson a Jajodia, Apr. 1998), kdy autoři tvrdí, že techniky stegoanalýzy lze klasifikovat podobným způsobem jako techniky kryptoanalýzy, tedy podle množství informace, kterou má stegoanalytik k dispozici: • Steganography-only attack: steganografické médium je jediná položka dostupná pro analýzu. • Known-carrier attack: Pro analýzu je dostupné steganografické médium a originální nosič. • Known-message attack: Je známa skrytá zpráva. • Chosen-steganography attack: Dostupné je steganografické médium a steganografický algoritmus. • Chosen-message attack: Je známa skrývaná zpráva a steganografický algoritmus, pomocí nichž lze vytvořit steganografické médium pro budoucí analýzu a porovnání. • Known-steganography attack: Je dostupný původní nosič a současně i steganografické médium a steganografický algoritmus. Již konkrétnější pohled na techniky stegoanalýzy nabízí základní členění podle typu útoku. Westfeld a Pfiltzmann ve svém výzkumu (Westfeld a Pfitzmann, 1999) uvažují klasifikaci technik na: • vizuální útoky, • statistické útoky. Toto členění vychází z činnosti steganografických algoritmů v obrazové nebo transformační oblasti popsané v kapitole 2.5.2. Není však možné tvrdit, že tam, kde použijeme vizuální útok, nemá smysl používat útok statistický a naopak. Metody jednotlivých útoků budou uvedeny dále. Další možné rozdělení technik stegoanalýzy předkládají autoři dokumentu (Phan a Ling, 2004) nebo (Jackson et al., 2002), kde je opět použit princip klasifikace dle typu útoku:
2.13
Možnosti útoků na steganografické systémy
37
• Detekční útoky: – RQP útok, – RS útok, – known-carrier attack. • Extrakční útoky: – extrakce nejméně významného bitu (LSB), – permutace bitů i zprávy na bity yi steganografického média. • Zneplatňující útoky: – destrukční útok, – přepisovací útok. Je zřejmé, že toto rozdělení vychází z teoretických poznatků zmíněných v kapitole 2.12.2, kdy je jako výstup stegoanalýzy samostatně zmiňována detekce, extrakce a zneplatnění skryté zprávy. Dle výzkumu, který byl prováděn na Binghamtonské univerzitě (Fridrich et al., 2003), lze techniky stegoanalýzy klasifikovat již velmi podrobně dle konkrétních typů obrázkových nosičů, jež mohou být použity. Stegoanalýza pak může být zaměřena na: • obrázky formátu JPEG, • nekomprimované hrubé (raw) obrázky, • obrázky s barevnou paletou. Digitální vodotisk, ač součást steganografie, vyžaduje ve smyslu stegoanalýzy speciální přístup. Útoky na digitální vodotisk tedy můžeme považovat za zvláštní druh stegoanalýzy. Andrew Ker v dokumentu (Ker, 2008) uvádí, že těmito útoky chápeme opačnou disciplínu ke vkládání digitálních vodotisků, přičemž cílem je zničit skrytá data (protivník chce odstranit digitální vodotisk, aniž by zničil označené médium – nosič). Ker útoky na digitální vodotisk klasifikuje takto: • noise attack (přidání šumu do označeného obrázku sníží spolehlivost vodotisku), • collusion attack (zprůměrování kopií jednoho nosiče poznačeného odlišnými vodotisky), • desynchronization attack (narušení prostorovosti poznačeného obrázku, např. odebráním sloupce pixelů, což učiní vodotisk nedetekovatelný), • watermark estimation (pokusit se porovnáním objektů se shodným vodotiskem či prostým pokusem odhadnout strukturu vodotisku a poté jej vyjmout).
2.13
Možnosti útoků na steganografické systémy
Nyní přistupme k popisu útoků, se kterými se v dostupné literatuře můžeme nejčastěji setkat. Dle základních charakteristik jednotlivých útoků rozdělme popisované do dvou částí: vizuální útok a statistické útoky.
2.13
Možnosti útoků na steganografické systémy
2.13.1
38
Vizuální útok
Autoři dokumentu (Westfeld a Pfitzmann, 1999) uvádějí, že „většina steganografických algoritmů ukládá bity zprávy modifikací pečlivě vybíraných bitů nosiče. Strojově pak bývá velmi obtížné rozlišit náhodná data v obrázku a data tvořící vlastní obrázek, ještě obtížnější je pak odlišení nejméně významných bitů od náhodných bitů. Velmi složité je také formálně definovat přípustný obsah obrázku. Zde pak může pomoci lidská představivost, neboť lidské smysly jsou trénovány rozlišovat známé věci.ÿ Podstatou vizuálního útoku je odstranění všech částí obrázku zakrývající data tajné zprávy. Lidské oko poté může rozlišit, zda tento rozdíl odpovídá stále původnímu obrázku, či zda se jedná o potenciálně ukrytou zprávu. Proces filtrování závisí na domnělém steganografickém algoritmu a jeho struktura je znázorněna na obrázku 8. (Westfeld a Pfitzmann, 1999)
Obr. 8: Proces filtrování krycích částí obrázku. Převzato z Attacks on Steganographic Systems (Westfeld a Pfitzmann, 1999).
V kapitole 2.10.1 byl popsán steganografický systém EzStego, na němž Westfeld a Pfitzmann princip vizuálního útoku demonstrují. EzStego využívá barev pixelů, definovaných v barevné paletě, pro vyjádření ukrývaných bitů zprávy. Westfeld a Pfitzmann uvádějí, že filtrace krycích částí obrázku spočívá v nahrazení původní barevné palety černobílou paletou. Tvorba černobílé palety vychází z toho, zda v utříděné paletě (programem EzStego) má barva lichý či sudý index (tato skutečnost souvisí s ukrytím binární jedničky či nuly). Tvorbu filtru ilustruje obrázek 9, přičemž navazuje na setříděnou barevnou paletu programem EzStego popsanou v kapitole 2.10.1. Westfeld a Pfitzmann dále provedli experiment (Westfeld a Pfitzmann, 1999), kde vizuálnímu útoku podrobili steganografická média třech různých formátů a vytvořených steganografickými nástroji EzStego, S-Tools, Steganos a Jsteg. Výsledek experimentu lze shrnout do následujících bodů: • EzStego – program vkládá bity zprávy sekvenčně od začátku nosiče. Skrytá data jsou velmi snadno pomocí vizuálního útoku detekovatelná, pokud je použit nosič s malým rozptylem barev (obr. 10). Pokud je jako nosič použit obrázek s vyšším rozptylem barev či s minimem souvislých ploch, stává se vizuální útok nepoužitelný (viz obr. 11, v němž žádná skrytá data nejsou). • S-Tools – nástroj vkládá bity zprávy rozprostřené po celém nosiči. Z toho důvodu ve filtrovaném obrázku nenarazíme na jasnou hranici skrytých dat jako
2.13
Možnosti útoků na steganografické systémy
39
Obr. 9: Tvorba filtru pro vizuální útok na program EzStego. Převzato z Attacks on Steganographic Systems (Westfeld a Pfitzmann, 1999).
v případě programu EzStego. Na obrázku 12 je ilustrováno filtrování steganografického média se skrytou zprávou obsazující 50 % steganografické kapacity. Neznáme-li filtrovanou podobu originálního nosiče, pak je bez porovnání identifikace tajných dat prakticky nemožná. • Steganos – program vkládá bity zprávy sekvenčně od začátku, jejich objem vždy doplní na objem maximální steganografické kapacity nosiče. To má za důsledek, že i v případě, kdy bychom do nosiče chtěli ukrýt pouze jediný bit, bude situace stejná, jako při vkládání nejdelší možné zprávy. Vizuální útok odhalí zvýšený šum po celém obrázku, což v případě větších barevných ploch může být podezřelé. Příklad ukrytí jediného bitu znázorněn na obrázku 13. • Jsteg – nástroj skrývá zprávy pouze do obrázků formátu JPEG. Protože tajná data se ukrývají v oblasti transformační do DCT koeficientů, není možné použít vizuální útok. Jeden steganografický bit totiž ovlivní až 256 pixelů.
Obr. 10: Ideální případ vizuálního útoku. Tajná zpráva ukryta pomocí nástroje EzStego sekvenčně do nosiče (nalevo jeho filtrovaná podoba) s nízkým rozptylem barev. Napravo filtrovaná podoba steganografického obrázku. Převzato z Attacks on Steganographic Systems (Westfeld a Pfitzmann, 1999).
Autoři dokumentu (Fridrich a Goljan, 2002) uvádějí, že „tento útok je aplikovatelný obzvláště na obrázky využívající barevnou paletu, kdy metoda LSB modifikuje odkazy (indexy) do palety. Pokud je zpráva ukryta sekvenčně, je možné odhalit pomocí vizuálního útoku přítomnost tajné zprávy a získat pro to dostatečný důkaz.
2.13
Možnosti útoků na steganografické systémy
40
Obr. 11: Kvůli složitému obrazu není možné vizuální útok použít (obrázek nalevo neobsahuje skrytá data). Převzato z Attacks on Steganographic Systems (Westfeld a Pfitzmann, 1999).
Obr. 12: Skrytá data rozprostřena po celé délce nosiče (nalevo) nástrojem S-Tools. Převzato z Attacks on Steganographic Systems (Westfeld a Pfitzmann, 1999).
Vizuální útok selhává, pokud je aplikován na obrázky obsahující šum či na složitě strukturované obrázky. Ačkoliv je vizuální útok ve své podstatě jednoduchý, je těžké jej automatizovat a jeho spolehlivost je také diskutabilní.ÿ 2.13.2
Statistické útoky
V dokumentu (Kessler, 2004) je uvedeno, že „druhý přístup ke stegoanalýze spočívá v hledání strukturálních odchylek, které by napověděly, že došlo k manipulaci s nosičem. Technika vkládání do nejméně významného bitu často způsobí vytvoření velkého počtu téměř duplicitních nových barev, které se od barev originálního nosiče liší pouze v nejméně významném bitu.ÿ Autoři dokumentu (Jackson et al., 2002) dodávají, že „steganografické programy, které ukrývají informaci pomocí manipulace s pořadím barev v barevné paletě, také způsobují strukturální změny. Strukturální změny často vytvářejí charakteristický podpis, který identifikuje použitý steganografický algoritmus.ÿ Například dle článku (Fridrich a Goljan, 2002) „steganografické techniky obecně mění statistiky nosiče, přičemž dlouhá skrytá zpráva pozmění nosič více než zpráva krátká.ÿ
2.13
Možnosti útoků na steganografické systémy
41
Obr. 13: Program Steganos vždy doplní délku skrývané zprávy na nejdelší možnou. Do obrázku nalevo byl vložen jeden bit skrytých dat. Napravo jeho filtrovaná podoba. Převzato z Attacks on Steganographic Systems (Westfeld a Pfitzmann, 1999).
V dokumentu (Jackson et al., 2002) je uvedeno, že statistická analýza je obvykle využívána k detekci skrytých zpráv pokud analytik pracuje naslepo (tj. Stego-only attack). Statistická analýza obrázkových nebo hudebních souborů může ukázat, zda se jejich statistické vlastnosti odlišují od očekávané normy (Provos a Honeyman, 2003). Petr Wayner k tomu v publikaci (Wayner, 2002) dodává, že „takzvané statistiky prvního řádu – průměry, rozptyly, chi-kvadrát (χ2 ) testy – mohou měřit množství redundantní informace nebo narušení v médiu. Ačkoliv tato měření mohou podat informaci o modifikaci obsahu či alespoň označit obsah za podezřelý, nejsou definitivní.ÿ Provos a Honeyman v článku (Provos a Honeyman, 2003) upřesňují, že se statistická analýza realizuje složitě, neboť mnoho steganografických algoritmů disponuje schopností statistikám prvního řádu odolávat, což tento typ detekce komplikuje. Tamtéž je dále uvedeno, že zašifrování ukrývané zprávy tento typ detekce činí též složitější, neboť zašifrovaná data vykazují obecně vyšší stupeň náhodnosti, takže binární jedničky a nuly se vyskytují v takových datech se stejnou pravděpodobností. Je zřejmé, že statistické útoky jsou díky určité přenositelnosti ve srovnání s vizuálními více použitelné. Popisu vybraných statistických útoků se věnují následující kapitoly, v nichž zmíníme: • útok testem χ2 , • útok analýzou RQP, • útok RS analýzou, • Couple detector, • klasifikátory. 2.13.3
Útok testem χ2
Westfeld a Pfitzmann předkládají v dokumentu (Westfeld a Pfitzmann, 1999) ideu útoku na steganografické systémy, který je založen na analýze histogramu obrázku
2.13
Možnosti útoků na steganografické systémy
42
a následném použití χ2 testu pro stanovení pravděpodobnosti přítomnosti skrytých dat. Základní principy pro pochopení útoku autoři podávají na příkladu nástroje EzStego (kapitola 2.10.1): „Ukrývající funkce aplikace EzStego přepisuje nejméně významné bity hodnot jednotlivých pixelů (indexy barevné palety). Přepis nejméně významných bitů transformuje jednu hodnotu do druhé tak, že se liší pouze nejméně významným bitem. Tyto hodnoty (lišící se pouze nejméně významným bitem) označíme jako pairs of values (PoV), tedy páry hodnot. Pokud jsou bity, kterými přepisujeme nejméně významné bity pixelů (tedy bity zprávy) rozděleny se stejnou pravděpodobností, potom i četnosti obou hodnot v každém PoV budou stejné. Na obrázku 14 je vidět, jak se změní četnosti barev, pokud je obrázek modifikován vložením dat, jejichž bity vykazují stejnou pravděpodobnost výskytu jedniček a nul.ÿ Myšlenka tohoto útoku je založena na porovnání teoreticky očekávaného rozdělení četností ve steganografickém médiu s rozdělením pozorovaným ve vzorku potenciálně modifikovaného nosiče (Westfeld a Pfitzmann, 1999). Jinými slovy: Teoreticky očekávané rozdělení představuje rozdělení četností hodnot (např. hodnot indexů do barevné palety), pokud by analyzovaný obrázek byl steganografickým médiem. Pozorovaná rozdělení četností odpovídá analyzovanému obrázku. Pokud jsou rozdělení podobná, což se ověří statistickým testem, pak analyzovaný obrázek obsahuje skrytá data.
Obr. 14: Histogram rozdělení barev před a po vložení zprávy nástrojem EzStego. Převzato z Attacks on Steganographic Systems (Westfeld a Pfitzmann, 1999).
Westfeld a Pfitzmann dále uvádějí, že „kritickým bodem je stanovení teoreticky očekávané četnosti rozdělení (tj. četnost výskytu hodnot, jež budeme očekávat po aplikaci steganografických změn). Tato četnost nesmí být odvozena od náhodného vzorku analyzovaného obrázku, neboť ten by mohl být již pozměněn steganografic-
2.13
43
Možnosti útoků na steganografické systémy
kým algoritmem. Ve většině případů však originální nosič nemáme pro porovnání k dispozici. Pak teoreticky očekávané četnosti stanovíme jako aritmetický průměr dvou četností v PoV. Čárkovaná linka na obr. 14 spojuje právě tyto průměry. Protože vkládací algoritmus přepisuje nejméně významné bity, nezmění se součet četností dvou hodnot v PoV. Četnost liché hodnoty PoV je přenášena do četnosti sudé hodnoty PoV a naopak. Díky tomu, že součet zůstává konstatují, je aritmetický průměr hodnot PoV stejný pro originální nosič i pro nosič obsahující tajná data. Z tohoto důvodu můžeme teoreticky očekávané četnosti odvodit od náhodného vzorku a nepotřebujeme originální nosič.ÿ Stupeň podobnosti je dle Westfelda a Pfitzmanna určen pomocí chi-kvadrát testu. Jednotlivé kroky testu jsou popsány v následujících bodech: 1. Předpokládáme k kategorií, v nichž budeme pořizovat náhodný vzorek pro výpočet očekávaných četností. Každé pozorování proběhne právě v jedné kategorii. Kategorie představují například indexy barevné palety. Z důvodu, že vyšetřujeme páry hodnot, omezíme kategorie pouze na sudé položky palety. 2. Pro i-tou kategorii spočteme teoreticky očekávané četnosti jako n∗i =
|{barva |utridenyIndex(barva) ∈ {2i, 2i + 1}}| 2
3. Pozorovaná četnost výskytu v našem náhodném vzorku bude ni = |{barva |utridenyIndex(barva) = 2i}| (n −n∗ )2
4. χ2 statistika je daná jako χ2k−1 = ki=1 i n∗ i s k − 1 stupni volnosti. i 5. p je pravděpodobnost naší statistiky za podmínky, že rozdělení ni a n∗i jsou stejná. Vypočteme jako integraci funkce hustoty pravděpodobnosti: P
p=1−
1 2
k−1 2
Γ( k−1 ) 2
Z χ2 k−1
x
e− 2 x
k−1 −1 2
dx
0
kde Γ představuje Eulerovu funkci Gamma. Westfeld a Pfitzmann provedli experiment (Westfeld a Pfitzmann, 1999), ve kterém zhodnotili sílu útoku testem χ2 , když jej testovali na steganografických médiích vytvořených nástroji EzStego, S-Tools, Steganos a Jsteg. Lze konstatovat, že útok testem χ2 vykazuje velmi dobré výsledky při sekvenčním přepisování nejméně významných bitů. Například na obrázku 15 vidíme, že útok testem χ2 poměrně přesvědčivě odhalí zprávu, která byla vložena pomocí programu EzStego, a to i v případě obrázku, kdy by byl vizuální útok bezradný. Důležitá vlastnost útoku χ2 je ta, že jej lze použít na více formátů obrázků. Například Provos a Honeyman jeho implementaci využili ve svém projektu (Provos a Honeyman, 2003) a potvrdili hypotézu, že pro sekvenčně skrytá data vykazuje test výborné výsledky i v případě analýzy obrázku formátu JPEG. V případě tohoto
2.13
Možnosti útoků na steganografické systémy
44
Obr. 15: Nalevo je steganografické médium, do jehož 50 % byla ukryta zpráva nástrojem EzStego. Graf napravo ilustruje úspěšně provedený útok χ2 . Je možné odhadnout i délku skryté zprávy. Převzato z Attacks on Steganographic Systems (Westfeld a Pfitzmann, 1999).
formátu se však porovnávaly četnosti nikoliv indexů barevné palety, ale DCT koeficientů. Sekvenčně skrývá data do DCT koeficientů například nástroj Jsteg, který je tímto útokem také dobře odhalitelný, jak je uvedeno nejen v dokumentu (Westfeld a Pfitzmann, 1999), ale i v článku (Provos a Honeyman, 2003). Skutečnost, že se jedná o relativně jednoduchý statistický útok, prokazují nepřesvědčivé výsledky útoku na steganografické médium, do něhož byla data tajné zprávy vložena pomocí pseudonáhodného generátoru. Nejméně významné bity nosiče nejsou v tomto případě modifikovány sekvenčně od začátku, ale v pseudonáhodných intervalech v rámci celého nosiče. Provos a Honeyman útok použili na obrázek, do něhož byla tajná data vložena pomocí nástroje OutGuess. Útok χ2 ve své nejjednodušší podobě nepodal přesvědčivý důkaz o existenci tajné zprávy, ačkoliv jisté podezření vzbudit může, což je vidět na obrázku 16.
Obr. 16: Výsledek útoku χ2 na steganografické médium vytvořené nástrojem OutGuess. Převzato z Hide and Seek: An Introduction to Steganography (Provos a Honeyman, 2003).
Provos a Honeyman v článku (Provos a Honeyman, 2003) nabízejí řešení, v jehož rámci předkládají rozšířený útok χ2 , kdy tento útok není aplikován na obrázek jako celek, ale postupně na jeho dílčí části. Při stanovení šířky této dílčí části jeho autoři
2.13
45
Možnosti útoků na steganografické systémy
vychází z výpočtu aritmetického průměru dvou nesouvisejících četností koeficientů (n2i−1 a n2i ). Následně se pomocí binárního vyhledávání najde hodnota, pro níž rozšířený χ2 test nevykazuje korelaci s očekávanou četností odvozenou z nesouvisejících koeficientů (Provos a Honeyman, 2003). 2.13.4
Útok analýzou RQP
Jessica Fridrich se svými kolegy (Fridrich a Goljan, 2002) vyvinula metodu detekce vložení dat do nejméně významného bitu (LSB) pro obrázky s 24bitovou barevnou hloubkou. Nazvali ji metoda RQP (Raw Quick Pairs). Metoda je založena na analýze párů blízkých barev, které jsou vytvářeny při vkládání dat do LSB. Barvy jsou v obrázcích s 24bitovou barevnou hloubkou reprezentovány hodnotami barevných složek R, G a B. Každá z těchto hodnot je uložena v jednom bajtu. Nechť počet jedinečných barev v obrázku je U . Dále prohlašme o dvou barvách (R1 , G1 , B1 ) a (R2 , G2 , B2 ), že tvoří pár blízkých barev, pokud platí |R1 − R2 | ≤ 1 a |G1 − G2 | ≤ 1 a |B1 − B2 | ≤ 1 Uvažujeme-li pouze jedinečné barvy, pak je počet všech párů barev vyjádřitelný kombinačním číslem U 2
!
≥P
kde P je počet párů blízkých barev v barevné paletě obrázku. Stanovme poměr R mezi počtem párů blízkých barev a počtem všech párů barev jako P R = U 2
kdy poměr R vyjadřuje relativní počet párů blízkých barev v obrázku. Detekční algoritmus je pak následující: 1. V analyzovaném obrázku vyjádříme počet jedinečných barev a v nich počet párů blízkých barev. 2. Vyjádříme poměr R pomocí rovnice uvedené výše. 3. Náhodně vybereme pixely obrázku a vložíme do nejméně významných bitů jejich hodnot bity testovací zprávy. Testovací zpráva by neměla být příliš dlouhá, což by mělo vyloučit případné chyby ve výpočtech pravděpodobnosti. Optimální délka může být určena experimentem na jiných obrázcích. 4. V takto pozměněném obrázku vyjádříme počet jedinečných barev a počet párů blízkých barev. Označme je U 0 a P 0 . Poté vyjádříme poměr R0 podle stejné rovnice.
2.13
46
Možnosti útoků na steganografické systémy
Poměrný počet párů blízkých barev ve vztahu k počtu všech možných párů barev bude nižší v obrázku obsahujícím ukrytou zprávu než v obrázku, jenž skrytou zprávu neobsahuje. Důležitou roli hraje pozorování provedené na pokusném obrázku. Pokud obrázek zprávu již obsahuje, změna v poměrech před a po vložení testovací zprávy nebude výrazná. Tedy R ≈ R0 . Naopak pokud obrázek zprávu neobsahuje, poměr vypočtený před vložením testovací zprávy bude menší než poměr vypočtený poté. Tedy R0 > R. Jako první krok analýzy by měla být sestavena obsáhlá tréninková databáze 0 obrázků, dle níž bychom stanovili mezní hodnotu pro RR . Tato mezní hodnota by umožnila rozlišit „čistý obrázekÿ a „steganografický obrázekÿ. Mezní hodnotu autoři navrhují stanovit např. dle vzorce Th =
µσ(s) + µ(s)σ σ + σ(s) 0
kde µ, σ jsou průměrná a směrodatná odchylka poměrů RR v sadě čistých obrázků. 0 µ(s), σ(s) jsou průměrná a směrodatná odchylka poměrů RR v sadě steganografických obrázků. Autoři metody v dokumentu (Fridrich a Goljan, 2002) tvrdí, že „analýza RQP funguje obstojně, pokud počet jedinečných barev v obrázku (nosiči) nepřesáhne 30 % počtu pixelů. Metoda provádí pouze hrubý odhad velikosti skryté zprávy. Výsledky se stanou vysoce nespolehlivé, pokud počet jedinečných barev přesáhne 50 % počtu pixelů. To často nastává v případě skenovaných obrazů či obrázků vytvořených digitálním fotoaparátem uložených v nekomprimovaných formátech. Další nevýhodou metody RQP je nemožnost její aplikace na obrázky v odstínech šedé.ÿ 2.13.5
Útok RS analýzou
Dalším typem statistického útoku představeným v dokumentu (Fridrich et al., 2003) je takzvaná RS analýza. Metoda je použitelná pro nekomprimované hrubé formáty obrázků. Její autoři uvádějí, že „vkládání do LSB vytváří nerovnováhu mezi sousedními hodnotami pixelů – během vkládání bývají hodnoty 2i a 2i + 1 vzájemně zaměněny, ale nikdy nejsou vzájemně zaměněny s hodnotami 2i−1 nebo 2i+2.ÿ Vycházeje ze svého dalšího výzkumu autoři definovali vztah mezi rovinou LSB a rovinou zbývajících sedmi bitů, kdy neztrátová kapacita má být funkcí počtu „regulárníchÿ a „singulárníchÿ skupin pixelů. Rozdíl mezi těmito dvěma počty byl stanoven jako rozlišovací statistika. V následujícím textu principy analýzy popíšeme. Předpokládejme, že máme nosič v podobě obrázku o rozměrech M × N pixelů, kdy každému pixelu přiřadíme hodnotu z množiny P = {0, . . . ,255 }. Zavedeme diskriminační funkci f , která přiřadí reálné číslo f (x1 , ..., xn ) ∈ < skupině pixelů G = (x1 , ..., xn ). Nechť je funkce f definována jako:
2.13
47
Možnosti útoků na steganografické systémy
f (x1 , x2 , ..., xn ) =
n−1 X
|xi+1 − xi |
i=1
Funkce f měří „hladkostÿ skupiny G – čím je ve skupině G větší šum, tím vyšší hodnoty nabývá funkce f . Vkládání do LSB zvyšuje šum v obrázku, takže je očekáváno, že hodnota funkce f poté vzroste. Definujme zaměňující funkci F1 jako následující permutaci na množině P : 0 ↔ 1, 2 ↔ 3, . . . , 254 ↔ 255. Změna LSB na x představujícím odstíny šedé je totéž, co aplikace F1 na x. Definujme také duální koncept nazvaný posunutá záměna LSB F−1 jako: −1 ↔ 0, 1 ↔ 2, 3 ↔ 4, . . . , 253 ↔ 254, 255 ↔ 256 nebo F−1 (x) = F1 (x + 1) − 1, ∀x ∈ P Pro úplnost ještě definujme F0 jako identickou permutaci F (x) = x, ∀x ∈ P . Diskriminační funkce f a operace záměny definují tři skupiny pixelů: • skupina G je regulární (R), pokud platí f (F (G) > f (G), • skupina G je singulární (S), pokud platí f (F (G) < f (G), • skupina G je neměnná (U), pokud platí f (F (G) = f (G). F (G) znamená aplikaci záměnné funkce F na členy vektoru G = (x1 , ..., xn ). Pokud aplikujeme rozdílnou záměnu na rozdílné pixely skupiny G, zachytíme přiřazení záměny pixelů maskou M , což je n-tice s hodnotami −1, 0 a 1. Zaměňovaná skupina F (G) je definována jako (FM (1) (x1 ), FM (2) (x2 ), ..., FM (n) (xn )). Záměna v typických obrázcích častěji vede k růstu diskriminační funkce f než k jejímu poklesu. Celkový počet regulárních skupin bude pak vyšší než celkový počet singulárních skupin. Označme relativní počet regulárních skupin s nikoliv negativní maskou M jako RM (v procentech všech skupin) a označme SM relativní počet singulárních skupin. Máme tedy RM + SM ≤ 1 a R−M + S−M ≤ 1. Důležitou hypotézou této stegoanalytické metody pro typický obrázkový nosič je předpoklad, že hodnota RM je přibližně rovna hodnotě R−M . Totéž pro SM a S−M : RM ≈ R−M a SM ≈ S−M Dle autorů je zjištěno, že tato rovnice velmi přesně odpovídá obrázkům vytvořeným digitálním fotoaparátem a uložených ve formátu JPEG i v nekomprimovaných formátech. Vztahy v rovnici jsou narušeny náhodností, která vznikne vkládáním do LSB. Náhodnost v LSB způsobí, že se rozdíl mezi RM a SM zmenšuje se zvyšující se délkou ukrývané zprávy. Rozdíl mezi R−M a S−M se tím naopak zvětší. Graf znázorňující RM , SM , R−M a S−M jako funkci počtu pixelů se změněným LSB je znázorněn na obr. 17 (RS diagram). Diagram znázorňuje očekávané hodnoty RM a SM celého statistického vzorku pro všechny možné (náhodné) podoby LSB. Vysvětlení rozdílu mezi RM a SM autoři provedli za použitím masky M = [010], přičemž podobně lze údajně argumentovat i pro jiné masky. Definujme množiny Ci =
2.13
48
Možnosti útoků na steganografické systémy
Obr. 17: RS diagram obrázku pořízeného digitálním fotoaparátem. Osa x představuje procento pixelů se záměnou LSB, osa y představuje relativní počet regulárních a singulárních skupin s maskou M a −M , M = [0110]. Převzato z Quantitative steganalysis of digital images: Estimating the secret message length (Fridrich et al., 2003).
{i, 2i + 1}, i = 0, . . . 127, a nadskupiny Crst = {G|C ⊂ Cr × Cs × Ct }. Dostaneme tak 1283 nadskupin (clique), každá nadskupina se skládá z osmi skupin (trojic). Čím větší náhodnost LSB, tím více jsou si nadskupiny blízké. Za účelem analýzy autoři rozlišují čtyři typy nadskupin. Tab. 6: Čtyři typy nadskupin (clique). Tabulka převzata z Quantitative steganalysis of digital images: Estimating the secret message length (Fridrich et al., 2003).
Typ nadskupiny r=s=t r=s>t r<s>t r=s=t
Záměna F1 2R, 2S, 4U 2R, 2S, 4U 4R, 4S 8U
Záměna F−1 8R 4R, 4U 4R, 4S 8U
V tabulce 6 jsou uvedeny tyto čtyři typy nadskupin a počty skupin R, S a U jako výstup funkcí F1 a F−1 poté, co bylo provedeno znáhodnění LSB. Z tabulky lze vyčíst, že zatímco znáhodnění nejnižších bitů (LSB) má tendenci vyrovnat počty skupin R a S v každé nadskupině, kde byla použita funkce F1 , v nadskupinách, kde byla aplikována funkce F−1 , se počet skupin R zvyšuje a počet skupin S snižuje. Dalším krokem analýzy je odhad délky skryté zprávy, jehož netriviální postup je taktéž uveden v dokumentu (Fridrich et al., 2003). Pouze uvedeme, že dle autorů mají vliv na přesnost odhadu skryté zprávy tři faktory: charakter nosiče, úroveň šumu a umístění zprávy.
2.13
Možnosti útoků na steganografické systémy
2.13.6
49
Další typy statistických útoků
V literatuře jsou popsány ještě složitější metody statistických útoků, které spočívají v definování efektivní diskriminační funkce, jež je schopna na základě tréninkových množin čistých a steganografických obrázků detekovat skrytá data. Například Ker v dokumentu (Ker, 2008) představuje takzvaný Couple detector. Metoda porovnává změny v hodnotách sousedních párů pixelů způsobené operací vkládání do LSB. Rozlišuje následující typy párů pixelů: • Pm – všechny hodnoty sousedních pixelů (x, y), • Cm – páry pixelů (x, y) odpovídající hodnotě | x2 | − | y2 | = m, • Em – páry s hodnotami ve tvaru (2k, 2k + m), • Om – páry s hodnotami ve tvaru (2k + 1, 2k + 1 + m). Ker uvádí příklad: „Pokud jsou hodnoty sousedních pixelů 66 a 72, pak tento pár bude považován za typy P , C3 a E6 .ÿ Typy párů poté vytvoří takzvané „trasovací množinyÿ a „trasovací podmnožinyÿ (viz obrázek 18).
Obr. 18: Trasovací množiny a podmnožiny v metodě Couple detector. Převzato z Information Hiding and Covert Communication (Ker, 2008).
V dalším postupu poté Ker vychází z předpokladu, že „vkládání do LSB přemisťuje páry v rámci trasovacích podmnožin, ale páry v trasovacích množinách neovlivníÿ. Mějme tedy index m. Poté zjišťujeme, jak jsou ovlivněny trasovací podmnožiny trasovací množiny Cm . Ker zkonstruoval pomocí porovnání párů před a po vložení do LSB estimátor em , který odpovídá počtu párů v množině Em před vložením do LSB a estimátor o0m , který odpovídá počtu párů v množině Om po vložení do LSB. Ker dále odvodil, že pro přirozené obrázky platí: em ≈ o0m Pokročilou oblast stegoanalytických metod představují takzvané klasifikátory (classification engines). Klasifikátory mají za cíl rozlišit, zda analyzovaný obrázek patří do třídy steganografických obrázků či do třídy normálních obrázků (Provos a Honeyman, 2003). Tamtéž je dále uvedeno, že „statistiky odvozené z obrázků v tréninkové množině určují vlastnosti diskriminační funkce, která rozděluje obrázky do tříd. Soubor těchto statistik nazýváme vektor charakteristik.ÿ Dle Kera se lze setkat s následujícími klasifikátory (Ker, 2008):
2.13
• • • •
Možnosti útoků na steganografické systémy
50
Fisherův lineární diskriminátor, vícevrstvé neuronové sítě, algoritmus podpůrných vektorů, algoritmus k nejbližších sousedů. Všechny zmíněné metody představují algoritmy strojového učení. Jejich podrobný popis již přesahuje rozsah této práce, neboť se jedná o značně netriviální nástroje. Důležitá je jejich správná aplikace na problém stegoanalýzy. Provos a Honeyman v článku (Provos a Honeyman, 2003) popisují principy implementace algoritmu podpůrných vektorů. Podstatou je konstrukce diskriminační funkce statistik obrázku, která rozlišuje mezi dvěmi třídami. Pomocí Neyman-Pearsnova kritéria se ověřuje platnost hypotéz H0 (obrázek neobsahuje steganografický obsah) a H1 (obrázek obsahuje steganografický obsah).
3
VLASTNÍ PRÁCE
3 3.1
51
Vlastní práce Metodika a návrh řešení
Pro praktickou realizaci některé z technik stegoanalýzy bylo bylo nutné sestavit na základě literatury určitá teoretická východiska. V kapitole 2 je podán přehled technik moderní digitální steganografie a stegoanalýzy, z něhož je možné dále čerpat. Vzhledem ke skutečnosti, že stegoanalýza je poměrně mladou vědní disciplínou (Chandramouli, 2002), je velmi složité vycházet z odborné literatury, která by byla v podobě tištěných publikací. Naprostou většina článků o problematice steganografie a stegoanalýzy nalezneme v elektronické podobě. V některých případech se lze setkat i s tištěnou podobou těchto článků v odborných vědeckých časopisech. Zcela jednoznačná je absence odborných článků v českém jazyce. Velmi důležitou roli hrál tedy při sestavování teoretických východisek překlad z anglického jazyka. Zvláště v případě odborného názvosloví bylo nutno vyhnout se zavádění opisných neologismů, které by sice vystihovaly podstatu pojmu, ale z čistě formálního hlediska by se jednalo o nesmysly komplikující orientaci v problematice (např. stego-only attack ). Z množství analyzovatelných formátů steganografických nosičů byl pro účel této práce vybrán formát BMP s barevnou hloubkou 24 bitů na pixel. Jedná se o nevhodné rozhodnutí vzhledem k současné nepopularitě formátu BMP na internetu, ovšem rozhodujícím faktorem byla možnost velmi jednoduchého přístupu k datům nesoucím skrytou informaci. Autor této práce je přesvědčen o zobecnitelnosti podstaty implementovaných technik i na jiné obrázkové či mediální formáty. Protože cílem práce je implementovat techniky stegoanalýzy konkrétně na steganografický nástroj Steghide a on-line steganografický systém Matěje Zapletala (M. Z.), bylo nutné seznámit se s jejich strukturou a vyhodnotit způsob, jakým ukrývají zprávy do obrázkových nosičů formátu BMP. Za tímto účelem byl navrhnut algoritmus vypisující obrazová data ve formátované podobě. Výsledky tohoto pozorování byly použity pro definici algoritmu extrahování skryté zprávy. K nástrojům Steghide a M. Z. byl zvolen odlišný přístup, neboť technické rozdíly mezi nimi jsou velmi podstatné. M. Z. představuje velmi jednoduchý steganografický nástroj, naopak Steghide představuje velmi složitě detekovatelnou aplikaci. Pro analýzu činnosti programu Steghide byly stanoveny zjednodušující předpoklady: Steghide je použit ve svém nejjednodušším (tzn. i nejméně bezpečném) módu – není využito šifrování, komprese zprávy, ani nejsou vkládány doplňující informace jako kontrolní součet či název souboru se zprávou. Šifrování nebylo využito ani u aplikace M. Z. V případě obou programů uvažujeme pouze práci se soubory formátu BMP. V případě nástroje M. Z. jsme se zaměřili na implementaci extrakčního útoku, v případě Steghide na implementaci statistického útoku analýzou RQP. Stanovili jsme, že řešením bude navržení programu s názvem BMPdetect. Požadavky na jeho funkčnost byly definovány následovně:
3.2
Steganografie pomocí aplikace M. Z.
52
• spustitelnost v režimech čtení obrázku, analýza obrázku, extrakce tajné zprávy z LSB, • přeložitelnost pod operačním systémem Windows i Unix, • v režimu analýza obrázku bude výstupem informace o přítomnosti či nepřítomnosti skryté zprávy, • v režimu extrakce tajné zprávy z LSB bude výstupem smysluplná zpráva získaná z nejnižších bitů obrázku (pokud zpráva nebude smysluplná, zobrazí se informace, že nosič zprávu neobsahuje). Součástí řešení byl i praktický test funkčnosti navrženého programu. Bylo stanoveno za jakých podmínek lze toto řešení úspěšně použít a za jakých již nikoliv. Jako implementační nástroj byl zvolen programovací jazyk C++, který odpovídá požadavku na přenositelnost, je nízkoúrovňový a disponuje předdefinovanými datovými kontejnery, které usnadní práci s obrazovými daty. Díky tomu, že se jedná o objektově orientovaný jazyk, bylo možné snadno využít všech výhod spojených s objektovým návrhem programu.
3.2
Steganografie pomocí aplikace M. Z.
Funkci aplikace s námi stanoveným pracovním názvem M. Z. demonstrujeme na skrytí pokusné zprávy do obrázku formátu BMP o rozměru 5 × 5 pixelů. Obrázek je tvořen jednolitou barvou s hodnotami jednotlivých barevných složek (R = 0, G = 0, B = 0), což odpovídá černé. Na obrázku 19 vidíme vytvořený obrázek v měřítku 16 : 1, přičemž obrázek byl vytvořen v programu Corel PHOTO-PAINT X4. Na stejném obrázku můžeme vidět i výstup programu BMPdetect, který představuje praktický výstup této práce. Program byl spuštěn v režimu formátovaného výpisu všech pixelů po pěticích. Jak již bylo uvedeno, jednotlivé barevné složky všech pixelů jsou rovny nule. Nyní proveďme skrytí tajné zprávy do nosiče, kterým bude pokusný obrázek, pomocí webové aplikace M. Z. Tajnou zprávou bude znak a, jehož decimální reprezentace dle ASCII tabulky je 97, binárně 01100001. Ponecháme implicitní nastavení aplikace, tedy operace: skrýt, použít šifrování TripleDES: ne, metoda uložení zprávy: do nejnižšího bitu. Jako obrázek zadáme námi vytvořená pokusný obrázek black 5x5.bmp. Po odeslání formuláře se na webové stránce zobrazí steganografický obrázek obsahující námi zadanou zprávu i obrázek původní. Steganografický obrázek s názvem black 5x5 copy.bmp opět otevřeme v grafickém programu a zadáme měřítko 16 : 1. Zároveň necháme vypsat obsah steganografického obrázku programem BMPdetect. Výsledek operace je znázorněn na obrázku 20. Z výpisu obsahu steganografického obrázku je patrné, že čteme-li nejméně významné bity sekvenčně od začátku, dostáváme binární posloupnost 01100001 11111111 0000... (Bajty představující barevné složky R, G a B jsou v datech formátu BMP uvedeny naopak, tedy B, G, R. Z toho vyplývá, že i nejméně významné bity musíme číst v tomto pořadí, tedy B–G–R–B–G–R . . . )
3.2
Steganografie pomocí aplikace M. Z.
53
Obr. 19: Pokusný obrázek formátu BMP o rozměrech 5 × 5 pixelů. Nalevo poté výpis jeho bitmapy programem BMPdetect. Zdroj: vlastní práce.
Neobvyklá situace nastává, porovnáme-li oddělovače konců řádků původního a steganografického obrázku. Ve výpisu na obrázku 19 je možné vidět, že za počtem pixelů odpovídající šířce obrázku, je zapsán bajt hodnoty 0, který slouží jako oddělovač řádků. Ovšem ve výpisu na obrázku 19 je možné si všimnout, že oddělovač za prvním řádkem byl změněn následkem vkládání do LSB na 1. Aplikace M. Z. tedy pro vkládání do nejméně významných bitů používá i hodnoty oddělovačů řádků. To je velmi důležitý poznatek, který bude muset být zohledněn při implementaci detekce skryté zprávy, případně při jejím extrahování. Je například možné tvrdit, že narazíme-li při analýze obrázku na modifikovaný oddělovač konce řádku, pak se téměř jistě bude jednat o steganografické médium vytvořené aplikací M. . Z. Je tedy ověřeno, že aplikace M. Z. vkládá data tajné zprávy do obrázku sek-
Obr. 20: Pokusný obrázek se zprávou „aÿ skrytou aplikací M. Z. Vpravo jeho výpis programem BMPdetect. Zdroj: vlastní práce.
3.3
Steganografie pomocí aplikace Steghide
54
venčně od začátku. Dále je ověřeno, že zpráva je ukončena binární posloupností 11111111, což odpovídá hodnotě 255 dekadicky. Při extrahování zprávy zohledníme i tuto skutečnost. Z uvedeného je možné odvodit obecný vztah pro výpočet kapacity nosiče v závislosti na počtu pixelů. Každý pixel je představován třemi bajty, do nichž lze skrýt tři bity zprávy. Nechť P ix představuje počet pixelů nosiče. Pak počet bitů zprávy, jenž lze ukrýt, bude 3P ix − 8 (odečtení osmi odráží vložení ukončovací sekvence o rozsahu osmi bitů). Víme-li, že osm bitů tvoří jeden bajt, pak maximální počet vkládaných bajtů hmax bude: (3P ix − 8) 8 Pokud bychom chtěli být naprosto přesní, zohledníme i vkládání bitů do oddělovačů, kdy by byl čitatel ve tvaru (3P ix − 8) + P O, kde P O představuje počet všech oddělovačů řádků v obrázku. hmax =
3.3
Steganografie pomocí aplikace Steghide
Základní principy ukrývání zpráv do obrázků (i audio souborů) byly popsány v kapitole 2.10.2. Základní odlišnost od programu M. Z. spočívá v implementaci pseudonáhodného výběru pixelů pro vložení dat zprávy. Modifikace LSB se tedy nedějí sekvenčně od začátku, ale jsou realizovány v rámci celého nosiče. Základní předpoklady útoku na tento pokročilý nástroj byl uveden v metodice – konstantní inicializační heslo, nevyužití komprese, šifrování, kontrolního součtu a neukládání názvu souboru se zprávou. Předpoklady budou splněny, pokud program bude spuštěn s přepínači -Z (nekomprimovat zprávu), -K (nevkládat kontrolní součet), -N (nevkládat jméno souboru) a -e none (nešifrovat zprávu). Při výzvě k zadání hesla bude zadán prázdný řetězec. Stejně jako v příkladu v předchozí kapitole, připravme testovací zprávu v rozsahu jednoho znaku a, kterou zapíšeme do textového souboru. Pokud se pokusíme zprávu vložit do obrázku black 5x5.bmp zmíněného v předchozí kapitole, setkáme se s varovným hlášením: steghide: the cover file is too short to embed the data. Je tedy zřejmé, že nosič o rozměrech 5 × 5 pixelů (75 bajtů) je pro ukrytí zprávy o rozsahu jeden bajt příliš malý. Vytvoříme-li pokusný nosič o rozměrech 20 × 20 pixelů, pak již skrytí zprávy proběhne úspěšně. Je třeba stanovit, jaká je minimální délka nosiče pro ukrytí zprávy o rozsahu 1 B. Byla tedy provedena série experimentů s obrázkem o původních rozměrech 26 × 1 pixel, kdy se průběžně měnila jeho velikost a sledovalo se, zda Steghide povolí vložení jednobajtové zprávy. Výsledkem experimentu jsou tato zjištění: • na skrytí zprávy rozsahu 1 B je třeba alespoň 84 pixelů, • na skrytí každého dalšího bajtu zprávy je třeba obrázek rozšířit o 8 pixelů.
3.3
Steganografie pomocí aplikace Steghide
55
Pro skrývání zpráv pomocí Steghide do obrázků formátu BMP s barevnou hloubkou 24 bajtů na pixel je možné popsat vztah mezi velikostí vkládané zprávy (v bajtech) a minimálním počtem pixelů obrázku pomocí vzorce: P ixmin = 76 + 8hmes kde P ixmin je nutný minimální počet pixelů nosiče a hmes je velikost zprávy v bajtech. Z uvedeného vztahu lze odvodit obecný vzorec pro maximální kapacitu nosiče, pokud je do něj skryta zpráva nástrojem Steghide: P ix − 76 8 kde hmax je maximální velikost zprávy v bajtech a P ix je počet pixelů nosiče. Tento vztah budeme používat pro stanovení velikosti zprávy, která zabere např. 50 % kapacity nosiče. Vytvořme tedy obrázek o rozměrech 7 × 12 pixelů jednolité barvy (R = 0, G = 0, B = 0), do něhož pomocí nástroje Steghide ukryjeme zprávu a. Situaci před a po vložení ilustrují obr. 21 a 22. hmax =
Obr. 21: Vpravo část výpisu pokusného obrázku o rozměrech 7 × 12 pixelů, vlevo zvětšený obrázek. Všechny barevné složky jsou nulové. Zdroj: vlastní práce.
Obr. 23 ilustruje pozici pozměněných pixelů následkem vložení do LSB. Ačkoliv se nejedná o všechny použité pixely, je patrná náhodnost jejich výběru a rozprostření po celém obsahu nosiče. Porovnáme-li výpis programu BMPdetect na obr. 22 s uměle vyznačenými pozicemi změněných pixelů na obr. 23, dospějeme k závěru, že bitmapy jsou zrcadlově otočeny kolem pomyslné horizontální osy vedoucí středem bitmapy. Je tomu tak proto, že BMPdetect načítá obrazová data opačným způsobem než Steghide. Při implementaci extrahování dat bude tento poznatek vhodné zohlednit.
3.4
Načtení obrázku formátu BMP
56
Obr. 22: Steganografický obrázek o rozměrech 7 × 12 pixelů se skrytou zprávou. Nalevo část výpisu, přičemž pixely, kde došlo ke změně jsou označeny. Zdroj: vlastní práce.
Obr. 23: Steganografický obrázek se zprávou a. Bíle označeny pozměněné pixely. Zdroj: vlastní práce.
Jako zásadní úkol při implementaci extrahování LSB ve steganografických médiích vytvořených aplikací Steghide se jeví simulace činnosti generátoru pseudonáhodných čísel, na jehož základě jsou vybírány pixely určeny pro obsažení bitů tajné zprávy. Vycházet lze i ze znalosti, že vkládací algoritmus Steghide tento generátor inicializuje pomocí hashe MD5 získaného ze zadaného hesla. V našem případě bude tato hodnota konstantní a bude odpovídat hashi MD5 prázdného řetězce.
3.4
Načtení obrázku formátu BMP
Fundamentální úkol pro zajištění funkce programu pro analýzu digitálního obrázku je načtení obrazových dat do paměti. Jelikož byl pro realizaci programu BMPdetect zvolen jazyk C++, bude vhodné využívat datový kontejner vector. Jedná se o šablonu, jež očekává jako parametr definici datového typu, jehož budou položky vektoru (pole). Zásadní výhodou použití datového kontejneru je ovšem jeho dynamická velikost, neboť při počáteční deklaraci může být jeho velikost nulová. Nyní odpovězme na otázku, co bude do dynamického pole představující konkrétní obrázek ukládáno. Předmětem stegoanalýzy budou hodnoty obrazových bodů
3.4
Načtení obrázku formátu BMP
57
– pixelů. Hodnota každého pixelu je v obrázcích formátu BMP s barevnou hloubkou 24 bitů na pixel představována třemi bajty, které nesou informaci o barevných složkách R, G a B. Položky vektoru nechť tedy představují jednotlivé pixely. Každý pixel nechť obsahuje tři celočíselné proměnné malého rozsahu odpovídající barevným složkám. Budeme-li chtít zachovat přirozenou strukturu obrázku ve smyslu šířka × výška, použijeme pro uchování hodnot pixelů nikoliv jednorozměrné dynamické pole, ale vícerozměrné. Implementace v jazyku C++ umožňuje jako parametr datového kontejneru vector dosadit datový typ jiného vektoru. Popsaný princip ilustruje obr. 24
Obr. 24: Uložení obrazových dat pomocí datového kontejneru vector. Pixely uchovávány v podobě matice. Zdroj: vlastní práce.
Vektor obsahující odkazy na vektory obrazových bodů bude mít rozměr odpovídající výšce obrázku a jednotlivé vektory obrazových bodů budou mít rozměr odpovídající šířce obrázku (v pixelech). Tímto způsobem docílíme efektivnějšího procházení obrázku. Protože samotné pixely jsou tvořeny dalšími třemi hodnotami, bude vhodné každý pixel považovat za samostatný objekt. Vektor obrazových bodů bude moci poté obsahovat pouze ukazatele na jednotlivé body. Definujme tedy třídu Bod, jež bude tvořena třemi soukromými atributy popisujícími barevné složky pixelu. Jednotlivé definice zmíněné výše tedy shrňme: class Bod { public: unsigned short r; unsigned short g; unsigned short b; }; vector< vector
> obrazek; // odkazy na řádky vector line; // řádek obrázku
3.5
Implementace útoku analýzou RQP
58
Protože pro stegoanalýzu médií vytvořených aplikací M. Z. je nutné uchovávat i hodnoty oddělovačů řádků, za tímto účelem ještě definujme vektor vektorů uchovávající datový typ short. Oddělovačů může být blíže nespecifikovaný počet, z toho důvodu je vhodné pro ukládání konkrétních hodnot využít dynamické pole. Všechny operace s obrázkovými daty shrňme do samostatnou třídy Picture. Pro případnou komunikaci s jinými objekty v třídě definujme důležitou veřejnou metodu, která bude vracet odkaz na vektor obsahující obrázkové body a metodu vracející odkaz na vektor oddělovačů.
3.5 3.5.1
Implementace útoku analýzou RQP Výpočet ukazatelů U a P
Vycházejme z teoretických poznatků uvedených v kapitole 2.13.4. Základ algoritmu RQP analýzy vyžaduje vyčíslení proměnných U (počet jedinečných barev analyzovaného obrázku) a P (počet párů blízkých barev v barevné paletě, tedy mezi jedinečnými barvami). Abychom oddělili logiku zpracování obrazových dat a výpočtů statistik, zavedeme třídu Stat, která bude zajišťovat provedení RQP analýzy. Konstruktor převezme odkaz na vektor obrazových dat a následně z nich vytvoří vlastní barevnou paletu obrázku. Barevná paleta může být opět realizována jako datový kontejner vector obsahující odkazy na instance (objekty) třídy Bod. Tento vektor pojmenujme barevnaPaleta. Za účelem naplnění barevné palety bude nutné projít všechny uložené pixely obrázku a při pokusu přidat je do palety bude nutné zase kontrolovat, zda se neshoduje s nějakým z již přidaných pixelů. Pokud nikoliv, jedná se o jedinečnou barvu (resp. hodnoty R, G, B) a pixel, který ji reprezentuje, může být přidán do palety. Algoritmus ilustruje obr. 25.
Obr. 25: Algoritmus přidávání barev do barevné palety obrázku. Zdroj: vlastní práce.
3.5
Implementace útoku analýzou RQP
59
Je-li barevná paleta připravena, pak lze vyčíslit atributy U a P . Jednodušší je vyčíslení počtu jedinečných barev, neboť toto odpovídá velikosti (počtu položek) barevné palety. Třída vector disponuje metodou size(), jež vrací počet položek v datovém kontejneru. Atribut U tedy vyčíslíme jako U = barevnaPaleta.size(); Vyčíslení atributu P vyžaduje podobný postup, jako byl popsán pro vkládání nové barvy do barevné palety. V kapitole 2.13.4 je uvedeno, že dvě barvy – v pojetí naší implementace to jsou současně objekty představující obrazové body – (R1 , G1 , B1 ) a (R2 , G2 , B2 ) tvoří pár blízkých barev, je-li splněna podmínka (|R1 − R2 | ≤ 1 a současně |G1 − G2 | ≤ 1 a současně |B1 − B2 | ≤ 1). To lze přepsat jako (R1 − R2 )2 + (G1 − G2 )2 + (B1 − B2 )2 ≤ 3 Definujme soukromou metodu umocniNa2(int zaklad), jež bude vracet výsledek operace druhé mocniny celého čísla předaného v parametru. Atribut P na počátku nastavme na nulu. Pro stanovení počtu párů blízkých barev bude nutné každý pixel v barevné paletě porovnat se všemi ostatními pixely v barevné paletě, přičemž bude proveden součet druhých mocnin rozdílů atributů r, g a b. V případě, že součet bude menší nebo roven třem, zvýšíme počítadlo P o jedna. Na konci průchodu bude atribut P roven počtu párů blízkých barev. Algoritmus ilustruje obr. 26.
Obr. 26: Algoritmus vyčíslení počtu párů blízkých barev. Zdroj: vlastní práce.
Je zřejmě efektivnější porovnávat pixel na i-té pozici palety pouze s pixely na pozici nulté až i − 1 než se všemi pixely palety, neboť i takto dojde k otestování všech možných dvojic.
3.5
60
Implementace útoku analýzou RQP
Kvůli výpočtu poměru R je nutné definovat metodu faktorial(int cislo), jež rekurzivním způsobem vypočítá faktoriál celého čísla předaného v parametru. U S pomocí této funkce vyčíslíme kombinační číslo 2 podle vztahu pro výpočet n k
=
n! k!(n−k)!
pro n ≥ k ≥ 0. Pro náš specifický případ, kdy chceme zjistit počet
! všech možných dvojic, je možné vztah upravit na U2 = 2(UU−2)! . P Vlastní výpočet poměru R = U je pak již triviální záležitostí. Poměr takto (2) získaný je třeba následně vložit do kontextu vlastností analyzovaného obrázku. Za tímto účelem by měla být sestavena tréninková databáze vlastností obrázků, z níž by bylo možné odvodit, zda se jedná o steganografické médium či nikoliv.
3.5.2
Modifikace souboru skrytím testovací zprávy
Podstatou analýzy RQP je, jak bylo uvedeno v kap. 2.13.4, porovnání poměrů počtu párů jedinečných barev ku počtu všech možných párů jedinečných barev analyzovaného obrázku a analyzovaného obrázku modifikovaného vložením krátké testovací zprávy. Za tímto účelem tedy definujme třídu Modifikator, která do kopie matice pixelů analyzovaného obrázku vloží testovací zprávu. Je zřejmé, že délka testovací zprávy bude různá pro různé velikosti analyzovaných obrázků. Protože budeme chtít proces vkládání automatizovat, zavedeme pro nárůst velikosti testovací zprávy krok 50 B. Soubory s testovacími zprávami pojmenujeme dle vzoru velikost v bajtech.txt. Vytvoříme tedy testovací zprávy v souborech 20.txt, 50.txt, 100.txt, 150.txt, 200.txt, 250.txt, . . . , 950.txt, 1000.txt. Na základě několika pokusů byla optimální velikost testovací zprávy stanovena jako 20 % maximální steganografické kapacity analyzovaného média. Např. pro program Steghide je výpočet této kapacity uveden v kapitole 3.3. Nechť konstruktor třídy Modifikator převezme ukazatel na objekt třídy Picture. Načte ukazatel na vzorovou matici pixelů a získá výšku a šířku obrázku v pixelech. Na základě těchto údajů stanoví 20 % maximální kapacity (požadovaná velikost testovací zprávy – více v kapitole 3.5.4) a toto číslo zaokrouhlí na padesátku nahoru. Požadovaná velikost bude převedena na řetězec a tento řetězec bude konkatenován s řetězcem ".txt". Výsledný řetězec představuje název souboru s potřebnou testovací zprávou. Tímto postupem automatizujeme výběr testovací zprávy. Konstruktor dále vytvoří kopii vzorové matice pixelů pro účely modifikace. Soubor s testovací zprávou načteme v binárním režimu. Budeme z něj číst bloky o rozsahu jeden bajt. Každý načtený bajt převedeme na osm bitů, které vložíme do „pole bitůÿ (datový kontejner vector obsahující buď čísla jedna nebo nula). Převod načteného bajtu na bity ilustruje obrázek 27. Bity testovací zprávy z vektoru bitPole vložíme do kopie matice pixelů pomocí náhodného výběru hostitelských pixelů. Náhodný výběr umožní použití generátoru náhodných čísel, který se inicializuje systémovým časem. Vygenerované náhodné číslo bude udávat vzdálenost od naposledy použitého hostitelského pixelu (pixelu, do něhož vkládáme 3 bity testovací zprávy).
3.5
61
Implementace útoku analýzou RQP
Obr. 27: Schématické znázornění algoritmu převádějícího hodnoty bajtů na pole bitů. Zdroj: vlastní práce.
Generování náhodného čísla musí probíhat v intervalu h1, maxi, kde horní hranici max vypočteme jako 3P ix hmess kde P ix je počet pixelů a hmess je délka testovací zprávy v bitech. Výpočet vychází z úvahy, že do každého pixelu vložíme tři bity zprávy. Vydělením trojnásobku počtu pixelů počtem bitů zprávy zjistíme kolikrát se bity zprávy vejdou do bitů pixelů. Pokud jednou, maximální vzdálenost hostitelských pixelů bude 1. Pokud označíme pixel za hostitelský, přepíšeme LSB jeho atributů r, g a b tak, aby odpovídaly třem bitům skrývané testovací zprávy uložených ve vektoru bitPole. Učiníme tak podle pravidla 0 ↔ 1, 2 ↔ 3, ..., 254 ↔ 255. Jinými slovy – je-li třeba změnit LSB bajtu o hodnotě 255, změň ji na 254 a naopak. Skrytou testovací zprávu sice nebudeme schopni zpětně přečíst (generování náhodných čísel nejsme schopni inicializovat stejnou hodnotou systémového času), což ale nepředstavuje žádnou komplikaci. Smyslem této modifikace je pouze pozměnit kopii pixelů analyzovaného obrázku vložením testovací zprávy do LSB. Veřejná metoda vratPixely() vrátí ukazatel na modifikovanou matici pixelů, což je důležité pro to, aby tato matice mohla být využita objektem třídy Stat za účelem porovnání poměrů R a R0 . max =
3.5.3
Funkce porovnání poměrů R a R’
Jak bylo zmíněno v kapitole 2.13.4, důležitou úlohu při stanovení, zda se jedná či nejedná o steganografické médium představuje porovnání dvou poměrů – R (získa-
3.5
Implementace útoku analýzou RQP
62
ného z analyzovaného obrázku) a R0 (získaného ze stejného obrázku, ale do něhož byla vložena krátká testovací zpráva). Poté by mělo platit: • Pokud analyzovaný obrázek obsahuje skrytou zprávu, bude R0 ≈ R. Tzn. R0 ≈ 1. R • Pokud analyzovaný obrázek neobsahuje skrytou zprávu, bude R0 > R, tedy R0 > 1. R Definujme veřejnou metodu třídy Stat, která ponese název porovnej2R(). Metoda převezme jako parametry dvě hodnoty – R a R0 . Na základě výše popsaného 0 vypočte poměr RR . 0 Zásadní otázkou je, jak stanovit toleranci pro vztah RR ≈ 1. Hodnoty 1,0 výsledný poměr dosahuje jen ve velmi speciálním případě, kdy by byla testovací zpráva totožná se zprávou ukrytou v analyzovaném obrázku a kdy by navíc byla ukryta ve stejných bitech. V kapitole 3.5.4 je popsán postup stanovení fixní tolerance 10 %. 3.5.4
Výsledky
Experimentálně bylo použito několika obrázků formátu BMP, které se vyznačovaly podobným počtem pixelů, a to přibližně 7 000. Obrázky nebyly velkých rozměrů především z důvodu rychlejšího výpočtu statistik. Lze je rozdělit na skupiny, zejména dle poměru počtu jedinečných barev ku počtu pixelů. Jak bylo uvedeno v kapitole 2.13.4, analýza RQP je nejúčinnější pokud počet jedinečných barev nepřesáhne 30 % počtu pixelů. Cílem bylo odhalování přítomnosti zpráv skrytých pomocí aplikace Steghide. Za pomoci programu BMPdetect spuštěného v režimu Analýza souboru byly postupně vyčísleny hodnoty R a R0 pro obrázky čisté i steganografické. Následně byl stanoven 0 fixní limit pro poměr RR , jenž by ve většině případů rozlišoval, zda je analyzovaný 0 obrázek steganografický či nikoliv. Má-li u steganografických obrázků platit RR ≈ 1, pak ve většině námi zjištěných případů (kdy měla analýza RQP smysl) byla vhodná tolerance 10 %. Důležitým prvkem analýzy RQP je porovnání analyzovaného obrázku s jeho kopií, do níž byla vložena krátká testovací zpráva. Jako délka testovací zprávy se nám osvědčilo 20 % kapacity analyzovaného obrázku v bajtech. Tato hodnota byla zohledněna při nastavení ve třídě Modifikator. Analýzu obrázku sample.bmp je možné provést spuštěním programu BMPdetect s následujícími parametry: BMPdetect -a sample.bmp. Program vypočítá a porovná hodnoty R, R0 a pokud bude jejich rozdíl činit maximálně 10 %, o souboru sample.bmp bude prohlášeno, že pravděpodobně obsahuje skrytou zprávu, neboť platí R ≈ R0 . Pokud bude poměr jedinečných barev ku počtu pixelů souboru sample.bmp větší než 30 %, program zobrazí upozornění na nespolehlivost analýzy. Pokus jsme provedli na pěti obrázcích z kategorií: textura, barevný přechod, jednoduchá ilustrace, ilustrace v pravých barvách, jednoduchá fotografie, fotografie v pravých barvách. Přívlastkem „ jednoducháÿ je myšleno „neobsahující více než 255 jedinečných barevÿ. Zástupce jednotlivých kategorií ilustruje obrázek 28.
3.5
63
Implementace útoku analýzou RQP
Obr. 28: Kategorie obrázků použitých v experimentu: fotografie v pravých barvách (fotoTrue.bmp), jednoduchá fotografie (fotoLow.bmp), jednoduchá ilustrace (ilustLow.bmp), ilustrace v pravých barvách (ilustTrue.bmp), barevný přechod (prechod.bmp) a textura. Zdroj: vlastní práce.
Výsledky analýzy jsou uvedeny v tabulce 7. Do obrázků byla vkládána zpráva pomocí programu Steghide o rozsahu 50 % jejich steganografické kapacity. Velmi zajímavé a zároveň důležité je zjištění, že z důvodu použití generátoru 0 náhodných čísel při vkládání testovací zprávy se výsledky RR provedeného v rámci jednoho obrázku liší případ od případu (vždy je vkládáno do jiných pixelů). Rozptyl výsledků sice není velký, ovšem z tohoto zjištění plyne doporučení, aby byla analýza spuštěna vícekrát (my jsme ji u jednoho souboru spouštěli pětkrát). Pokud se status kvůli výskytu hodnoty poměru na hranici tolerance liší, je vhodné k výsledkům analýzy přistupovat opatrně. 0 Poměry RR představují aritmetický průměr z pěti provedených analýz daného souboru. Tab. 7: Výsledky útoku analýzou RQP. Sloupec „Průměrné průměr z pěti výsledků. Zdroj: vlastní práce. 0 Skrytá Průměrné RR zpráva textura.bmp ne 1,3861 U ( P ix = 0, 02) ano 1,0015 prechod.bmp ne 86,9493 ( PUix = 0, 02) ano 0,9821 ilustLow.bmp ne 115,0094 U ( P ix = 0, 02) ano 1,0968 ilustTrue.bmp ne 1,0972 U ( P ix = 0, 28) ano 1,0797 fotoLow.bmp ne 41,5207 ( PUix = 0, 03) ano 1,0281 fotoTrue.bmp ne 0,9926 U ( P ix = 0, 88) ano 1,0012
Soubor
R0 Rÿ
představuje aritmetický
Status BMPdetect ne ano ne ano ne ano ano ano ne ne ano ano
V tabulce 7 jsou tučně vyznačeny případy, kdy došlo k chybné detekci. Poprvé to bylo v případě ilustrace v pravých barvách, kde poměr jedinečných barev ku počtu pixelů byl 0,28. To se velmi blíží kritické hranici 30 %, kdy analýza není spolehlivá.
3.6
Útok extrahováním LSB
64
Poněkud znepokojivé je to, že program na nevhodnost analýzy v tomto případě ještě neupozorní. Podruhé došlo k chybné detekci v případě fotografie v pravých barvách, kde počet jedinečných barev dosahoval 88 % počtu pixelů. Díky tomu program samozřejmě na nevhodnost útoku upozornil. Byly tedy ověřeny teoretické předpoklady uvedené v kapitole 2.13.4. Tento typ útoku je nejvhodnější použít na obrázky, jejichž počet jedinečných barev je co nejmenší. V opačném případě se stává útok vysoce nespolehlivý.
3.6 3.6.1
Útok extrahováním LSB Funkce čtení LSB
Předpokládejme, že na vstupu se nachází proud bajtů, jejichž nejméně významné (nejnižší) bity představují bity tajné zprávy. Dále předpokládejme, že tajná zpráva je tvořena zcela výhradně znaky z dolní poloviny ASCII tabulky. Poté lze tvrdit, že přečtením nejméně významného bitu z osmi bajtů nám umožní vyjádřit jeden znak skryté zprávy, neboť např. datový typ char, který umožňuje uložení hodnot z ASCII tabulky, zabírá právě jeden bajt, tedy 8 bitů. Budeme-li tedy číst nejnižší bity vstupních bajtů po osmicích, po každém takovém přečtení získáme jeden znak tajné zprávy, který lze přidat do textového řetězce představujícího tajnou zprávu. Současně bude nutné porovnávat hodnotu získaného znaku s potenciálním znakem ukončení zprávy, který bývá ve steganografických programech implementován. Vlastní extrahování nejnižšího bitu je ztotožnitelné se získáním celočíselného zbytku po dělení dvěma (mod 2). Tento zbytek může být: • 0, což je současně i hodnota nejnižšího bitu. Například číslo 4, binárně 0100 – jeho nejnižší bit (20 , podtržen) je 0, současně i výsledek operace 4 mod 2 je 0. • 1, totožný princip jako výše. Např. číslo 5 (0101) – výsledek operace 5 mod 2 je 1. Pozice bitu i v rámci bajtu označuje, zda se přičítá k výsledné desítkově vyjádřené hodnotě bajtu mocnina 2i (pokud je bit roven nule, mocnina se nepřičte a naopak pro hodnotu jedna). Pozice i může nabývat hodnot z intervalu h0, 7i. Na základě uvedeného je tedy možné rekonstruovat bajt pomocí proudu bitů, jen musíme vědět, zda první bit na vstupu náleží pozici 0 či 7. Pokud toto např. pomocí experimentu ověříme pro konkrétní steganografický program, lze pak sestavit bajty tajné zprávy přičítáním i-tých mocnin dvou. Programovací jazyk C++ nabízí poměrně jednoduchou konverzi mezi datovými typy. Máme-li například celočíselnou proměnnou cislo obsahující hodnotu 97 a chceme-li ji převést na znak (dle hodnoty v ASCII tabulce), můžeme tak učinit zápisem (char)cislo. Pokud tedy získáme dekadickou hodnotu bajtu tajné zprávy, na znak ji převedeme touto konverzí. Celý algoritmus čtení LSB je zjednodušeně znázorněn na obrázku 29.
3.6
Útok extrahováním LSB
65
Obr. 29: Algoritmus čtení nejnižších bitů nosiče a sestavení tajné zprávy. Zdroj: vlastní práce.
Definujme tedy třídu LSBreader, jejíž funkce bude spočívat v načítání LSB ze zadaných bajtů a v jejich převodu na znaky z dolní poloviny ASCII tabulky. Mezi její soukromé atributy bude patřit dynamické pole message, do něhož budou přidávány znaky extrahované zprávy. Její nejdůležitější veřejná metoda bude ctiLSB(unsigned short cislo), jež zjistí hodnotu nejnižšího bitu čísla předaného v parametru a tuto hodnotu uloží do bufferu. Pokud dosáhne velikost bufferu osmi položek, bude vyprázdněn a na základě hodnot na jednotlivých pozicích bude sestaveno číslo dekadické soustavy. To bude po převodu na datový typ char uloženo do vektoru message. Metoda vypisZpravu() obsah vektoru message vypíše na standardní výstup. 3.6.2
Extrahování LSB ze steganografického obrázku vytvořeného aplikací M. Z.
Na základě pozorování provedeného v kapitole 3.2 lze dovodit, že nástroj M. Z. bity zprávy vkládá do bajtů nosiče sekvenčně od jeho začátku. Přitom nerozlišuje, zda se jedná o bajty představující pixel či oddělovač. Dále je známé, že tajná zpráva je ukončena dekadickým číslem 255. Extrahování zprávy proběhne následujícím způsobem: 1. Převezmi matici pixelů a vektor oddělovačů. 2. Čti od začátku hodnoty barevných složek pixelů v pořadí B–G–R. 3. Na konci řádku pixelů načti hodnoty oddělovačů. 4. Každou načtenou hodnotu předej jako parametr metodě ctiLSB().
3.6
Útok extrahováním LSB
66
5. Pokud bude sestaven znak zprávy odpovídající dekadické hodnotě 255, skonči. Skutečnost, že se jedná o čtení steganografického média vytvořeného aplikací M. Z., sdělíme konstruktoru předáním odkazu na vektor oddělovačů jako jeho druhý parametr. V ostatních případech bude předáván pouze jeden parametr v podobě odkazu na matici pixelů. Dalším aspektem úkolu je hodnocení, zda zpráva získaná z LSB je smysluplná. Omezující je v tomto směru skutečnost, že základní prostředky jazyka C++ pro práci se znaky nepodporují národní kódování. Jistou alternativu přestavuje knihovna Qstring, ta však podporuje pouze kódování Unicode, což je pouze částečné řešení. Z důvodu zjednodušení jsme tedy abstrahovali od implementace práce se znaky české abecedy. Extrahovaná zpráva nechť je považována za smysluplnou, pokud obsahuje alespoň devadesát procent znaků, jejichž ASCII hodnota je vyšší než 31 (tj. mezera, vykřičník, uvozovky, . . . ) a nižší než 128 (hranice dolní poloviny ASCII tabulky). 3.6.3
Extrahování LSB ze steganografického obrázku vytvořeného aplikací Steghide
V tomto případě se liší postup oproti aplikaci M. Z. v tom, že musí být simulována činnost generátoru pseudonáhodných čísel implementovaného v nástroji Steghide. Definujme třídu Randomizer. Konstruktor přebere inicializační hodnotu obecně získanou jako hash hesla, v našem zjednodušeném postupu se bude jednat o hash prázdného řetězce. Hash se poté převede na bitové pole, jehož délka musí být 128. Inicializační hodnota (seed) je poté získána pomocí následujícího kódu (předpokládejme, že proměnná h obsahuje odkaz na bitové pole představující zmíněný hash): long seed = 0; // typ long je velikosti 4 B, tj. 32 bitů for i~= 0 to 3 do seed = seed XOR (h.dejHodnotu(i*32, 32)); // bloky 32 bitů end for Pseudonáhodný generátor implementovaný v programu Steghide poté implementuje jeden ze způsobů jeho konstrukce (Lineární kongruentní generátor): const long A = 1367208549 ; const long C = 1 ; long Value ; long getValue (long n) { // n je horní hranice intervalu (max - 1) Value = A * Value + C ; // hodnotu z~intervalu <0..1) násobíme n return long (((double) n) * ((double) Value / (double) 4294967296.0)); } Interval hodnot h0, n), ze kterého se náhodná čísla generují, odpovídá počtu pixelů obrázku formátu BMP. Čísla pak dávají index v bitmapě. Současně musí být zajištěno, aby se nepoužil stejný nebo nižší index než ve všech předchozích krocích.
3.7
Dokumentace programu BMPdetect
67
Získáme-li takto indexy pixelů, přečteme z hodnot jejich barevných složek nejnižší bity stejně, jako bylo popsáno v předchozí kapitole na příkladu aplikace M. Z. Extrahování zprávy ukryté programem Steghide zatím v programu BMPdetect implementováno nebylo.
3.7 3.7.1
Dokumentace programu BMPdetect Použití
Program slouží k detekci nebo extrahování tajných zpráv vložených steganografickým nástrojem Steghide nebo on-line steganografickou aplikací Matěje Zapletala (M. Z.) do obrázku formátu BMP s barevnou hloubkou 24 bitů na pixel. Extrakce zpráv je zatím možná jen pro média vytvořené aplikací M. Z. a zpráva by neměla obsahovat českou diakritiku. Pro detekci tajné zprávy je implementována analýza Raw Quick Pairs. Program může být po překladu zdrojového kódu spuštěn z příkazového řádku v následujících režimech: • Výpis souboru Příkaz: BMPdetect -v [soubor.bmp] • Analýza souboru Příkaz: BMPdetect -a [soubor.bmp] • Extrakce tajné zprávy Příkaz: BMPdetect -e [soubor.bmp] • Informace o souboru Příkaz: BMPdetect -i [soubor.bmp] V režimu Analýza souboru je nutné mít připravenu sadu testovacích zpráv uložených v textových souborech ve stejném adresáři, jako spustitelný program. Soubory musí být pojmenovány podle vzoru [cislo].txt, kde [cislo] odpovídá velikosti souboru v bajtech, tedy např. 450.txt nebo 1000.txt. 3.7.2
Třída Bod
Velmi jednoduchá třída představující obrazový bod (pixel) obrázku s barevnou hloubkou 24 bitů. Jeho vnitřní struktura je představována třemi veřejnými atributy r, g a b typu unsigned short. Parametrický konstruktor převezme tři čísla a zajistí inicializaci atributů těmito hodnotami. 3.7.3
Třída Picture
Smyslem této třídy je načíst obrázek jako matici pixelů a uložit jej takto do paměti. Parametrický konstruktor převezme odkaz na datový proud obrázku. Na základě definované struktury formátu BMP ověří, zda se jedná o obrázek tohoto formátu s barevnou hloubkou 24 bitů. Pokud ano, načte bitmapu. Třída disponuje veřejným rozhraním představovaným následujícími metodami:
3.7
Dokumentace programu BMPdetect
68
• vypisFormatovane() Na standardní výstup vypíše obrazová data v podobě barevných složek jednotlivých pixelů. Celé číslo předané jako parametr určí počet vypsaných pixelů na jednom řádku. Na konci každého řádku jsou vypsány i oddělovače použité v obrázku na konci vodorovných linek. • vratPixely() Vrátí ukazatel na matici pixelů vytvořenou v konstruktoru. • vratOddelovace() Vrátí ukazatel na pole oddělovačů vytvořené v konstruktoru. • vratSirku() Vrátí celé číslo představující šířku obrázku. • vypisInfo() Na standardní výstup vypíše všechny údaje z hlavičky BMP souboru. 3.7.4
Třída Stat
Nejdůležitějšími atributy jsou R, P a U, jež odpovídají příslušným ukazatelům v analýze RQP. O jejich vyčíslení se stará soukromá metoda vypocitejPUR(). Parametrický konstruktor převezme odkaz na matici pixelů. Z matice pixelů sestaví barevnou paletu, kterou je uloží v podobě vektoru, a provede na ní požadované výpočty. Veřejné rozhraní tvoří metody: • vratR() Vrátí hodnotu soukromého atributu R. • vratP() Vrátí hodnotu soukromého atributu P. • vratUkuPixely() Vypočte a vrátí poměr jedinečných barev ku počtu pixelů analyzovaného obrázku. • porovnej2R() Metoda převezme dva parametry, z nichž první představuje R a druhý R0 . Na jejich základě vypočítá poměr a dle definované tolerance rozhodne, zda analyzovaný obrázek obsahuje skrytou zprávu. Výsledek vypíše na standardní výstup. 3.7.5
Třída LSBReader
Zajišťuje přečtení nejnižších bitů bajtů obrázku. Odkaz na jeho matici pixelů převezme konstruktor v parametru. Pokud předáme konstruktoru jako druhý parametr i odkaz na pole oddělovačů, bude zpráva složena i z nejnižších bitů oddělovačů. Soukromý atribut message typu vector představuje pole dekadických hodnot bajtů tajné zprávy. Soukromá metoda ctiLSB() převezme v parametru celé číslo, z něhož vypočte hodnotu nejnižšího bitu. Každých osm bitů pak vyjádří jako dekadické celé číslo a vloží jej na konec vektoru message.
3.7
Dokumentace programu BMPdetect
69
Poté, co je čtení obrazových dat ukončeno, je zavolána metoda filtrujZpravu(), jež oddělí část zprávy za ukončovací sekvencí a zkontroluje její „smysluplnostÿ (dle hodnoty znaků v ASCII tabulce). Pokud je zpráva označena za nesmyslnou, je obsah vektoru message smazán. Veřejné rozhraní pak představuje pouze metoda vypisZpravu(). 3.7.6
Třída Modifikator
Třída vznikla z důvodu, aby uživatel nemusel testovací zprávy do kopií analyzovaných souborů vkládat sám. Konstruktor třídy očekává jako svůj parametr ukazatel na objekt třídy Picture. Z předaného obrázku vytvoří kopii matice pixelů, do níž vloží testovací zprávu příslušné velikosti. Výpočet této velikosti je zatím implementován pouze pro program Steghide. Nebylo by jej ale obtížné rozšířit i pro jiné nástroje. Veřejné rozhraní tvoří tyto metody: • vratPixely() Vrátí ukazatel na modifikovanou matici pixelů. Tj. pixely, do jejichž hodnot byla ukryta testovací zpráva. • dejStatus() Vrátí hodnotu atributu status datového typu řetězec, který je nastaven na OK, pokud je úspěšně otevřen textový soubor s testovací zprávou požadované délky. 3.7.7
Zdrojový kód programu BMPdetect
Zdrojový kód programu BMPdetect je v souboru BMPdetect.cpp k dispozici na CD, které je přílohou této práce. Na CD jsou rovněž k dispozici i obrázky zmíněné v kapitole 3.5.4 a sada testovacích zpráv o velikostech 20 B až 1 000 B.
4
4
HODNOCENÍ
70
Hodnocení
V rámci teoretického přehledu jistě nebyl podán zcela vyčerpávající popis všech možných technik a metod steganografie a stegoanalýzy. Jsme však přesvědčeni, že vypracovaný přehled představuje sumarizační základ a že podstata většiny „novýchÿ metod bude shodná s těmi v této práci uvedenými. Implementace statistického i extrakčního útoku byla do značné míry ovlivněna množstvím zjednodušujících předpokladů, které degradují jejich obecnou použitelnost. Prvním aspektem je omezení analyzovatelných souborů pouze na formát BMP o barevné hloubce 24 bitů na pixel. Na mnoha místech v práci byla zmíněna neoblíbenost tohoto formátu v prostředí internetu, což je skutečnost, jež odsouvá význam implementace spíše do teoretické roviny. Nicméně útok analýzou RQP jiný formát než BMP neakceptuje a také aplikace M. Z. nepodporuje jiné formáty souborů než 24bitové BMP. Diskutabilní je i způsob ověřování funkčnosti statistického útoku pouze na malém vzorku obrázků o rozměrech zhruba 100 × 70 pixelů. Nabízí se totiž otázka, zda nemohou být výsledky pro větší počet pixelů rozdílné, resp. méně spolehlivé. Bylo ovšem prokázáno, že spolehlivost útoku závisí hlavně na poměru počtu jedinečných barev ku počtu pixelů, tudíž při zachování podobného poměru jako u testovaných obrázků v této práci existuje silný předpoklad, že výsledky budou podobné. Menší počet pixelů obrázků byl v experimentu zvolen také proto, že nebylo možné provádět jej na stroji s velkým výpočetním výkonem, tudíž by se na výsledek některých analýz mohlo čekat velmi dlouho. Je však nesporné, že i když byl algoritmus testován celkem zhruba na šesti obrázcích z každé kategorie (textura, přechod, jednoduchá ilustrace . . . ), je tento vzorek pro ověření jakékoliv hypotézy velmi malý. Pevné stanovení limitů, na jejichž základě program BMPdetect vyhodnocuje, zda se jedná o steganografické médium či a zda je útok analýzou RQP vhodný, představuje značnou nevýhodu. Jistě by bylo lepší limit získávat dynamicky na základě tréninkové databáze. Budiž částečným řešením opakované spuštění programu v režimu analýzy a porovnání několika výsledků. Pokud se nebudou lišit, je pravděpodobné, že pevně stanovený limit vyhovuje. V opačném případě je nutné brát výsledek analýzy s rezervou. Protože jeden ze smyslů této práce byla základní příprava autora na doktorské studium, resp. na vypracování disertační práce, můžeme na tomto místě zmínit body, které by bylo možné v rámci další činnosti rozvinout či zdokonalit: • podpora analýzy dalších formátů (např. JPEG, PNG), • rozšíření extrakčního útoku i na nástroj Steghide a jemu podobné, • použití nástroje na kontrolu překlepů (např. aspell ) pro rozhodnutí o smysluplnosti extrahované zprávy, • implementace tréninkové databáze, jež by umožnila dynamické stanovení hraničních limitů pro rozhodování, zda obrázek obsahuje skrytou zprávu či nikoliv, • implementace pokročilejšího druhu detekčního útoku, než jaký představuje analýza RQP.
5
5
ZÁVĚR
71
Závěr
Na základě teoretických východisek byly definovány předpoklady pro splnění cíle práce. Byly zvoleny steganografické nástroje Steghide a M. Z., jež se staly předmětem stegoanalýzy v této práci. Zatímco Steghide je propracovaný nástroj s pestrou funkčností respektující téměř všechny zásady bezpečné digitální steganografie, M. Z. je jednoduchá steganografická on-line aplikace. Dále bylo stanoveno, že analyzovaná média musí být pouze soubory formátu BMP s barevnou hloubkou 24 bitů na pixel. Byl navržen program BMPdetect, který umožňuje provést extrakční útok na steganografická média vytvořená aplikací M. Z. a statistický detekční útok analýzou RQP (Raw Quick Pair) na steganografická média vytvořená nástrojem Steghide. Podstata detekčního útoku spočívá v porovnání ukazatelů analyzovaného obrázku a jeho mírně modifikované kopie. Modifikaci představuje vložení testovací zprávy do náhodně zvolených pixelů kopie analyzovaného souboru. Pokud analyzovaný soubor již zprávu obsahuje, rozdíl ukazatelů bude minimální. Program BMPdetect toto porovnání provede a na základě fixně stanovené tolerance rozhodne, zda analyzovaný obrázek obsahuje skrytou zprávu. Extrakční útok načte nejnižší bity z analyzovaného obrázku a pokusí se z nich sestavit zprávu. Vzhledem k tomu, že zatím není podporována česká diakritika, není možné smysluplnost zprávy kontrolovat některým z nástrojů na kontrolu překlepů. Za smysluplnou je považována zpráva, z níž alespoň 90 % znaků má hodnotu v ASCII tabulce větší než 31 a nižší než 128. Je zřejmé, že program BMPdetect nenalezne širší či dokonce komerční uplatnění. Jistě však bude možné na jeho základech vybudovat složitější a sofistikovanější systém, jenž by takové ambice již mít mohl. V práci byl vytvořen i sumarizační základ problematiky a přehled několika aktuálně používaných technik steganografie a stegoanalýzy, což se jeví jako obzvláště přínosné za současného stavu, kdy odborná česká literatura zabývající se těmito tématy zatím není běžně dostupná.
6
6
LITERATURA
72
Literatura
Anderson, R. J., Petitcolas, F. A. P. On the limits of steganography. IEEE Journal of selected Areas in Communications, May 1998. Bauer, F. L. Decrypted Secrets: Methods and Maxims of Cryptology. 3rd ed. Springer-Verlag, New York, 2002. Bender, W., Gruhl, D., Morimoto, N., Lu, A. Techniques for data hiding. IBM Systems Journal, Vol 35, 1996. Cachin, C. An Information-Theoretic Model for Steganography. Proceedings of 2nd Workshop on Information Hiding, MIT Laboratory for Computer Science, May 1998. Dostupné na: http://www.zurich.ibm.com/∼cca/papers/stego.pdf. Chandramouli, R. Mathematical approach to steganalysis. In: Proceedings of the SPIE Security and Watermarking of Multimedia Contents IV, vol. 4675. International Society for Optical Engineering, San Jose, California, January 21-24, 2002, pp. 14–25. Také dostupné: http://www.ece.stevens-tech.edu/∼mouli/spiesteg02.pdf. Chandramouli, R., Kharrazi, M., Memon, N. Image steganography and steganalysis: Concepts and Practice. Proceedings of the 2nd International Workshop on Digital Watermarking, October 2003. Cummins, J., Diskin, P., Lau, S., Parlett R. Steganography And Digital Watermarking [online]. Dokument ve formátu HTML, 2004. [citováno 2009-03-09] Dostupné na: http://www.cs.bham.ac.uk/∼mdr/teaching/modules03/security/students/SS5/Steganography.htm. Curran, K., Bailey, K. An evaluation of image-based steganography methods [online]. International Journal of Digital Evidence. (Fall 2003). Dokument ve formátu PDF [citováno 2009-05-07]. Dostupné na http://www.ijde.org/docs/03 fall steganography.pdf. devx.com Reference guide: Graphics Technical Options and Decisions [online]. Dokument ve formátu HTML. [citováno 2009-04-17] Dostupné na http://www.devx.com/projectcool/Article/19997. fileformat.info Microsoft Windows Bitmap File Format Summary [online]. Dokument ve formátu HTML. [citováno 2009-04-17] http://www.fileformat.info/format/bmp/egff.htm. Fridrich, J., Goljan, M. Practical Steganalysis of Digital Images: State of the Art. Proc. SPIE Vol. 4675, p. 1-13, Security and Watermarking of Multimedia Contents IV, San Jose, USA, January 2002. Dostupné také: http://www.ws.binghamton.edu/fridrich/Research/steganalysis01.pdf. Fridrich, J., Goljan, M., Hogea, D., and Soukal, D. Quantitative steganalysis of digital images: Estimating the secret message length. Multimedia Systems (2003) 9(3):288–302. Také dostupné: http://www.ws.binghamton.edu/fridrich/Research/mms100.pdf.
6
LITERATURA
73
Jackson, J. T. et al. Blind Steganography Detection Using a Computational Immune System Approach [online]. Dokument ve formátu PDF [citováno 2009-05-07]. Dostupné na: http://dfrws.org/2002/papers/Papers/Jacob Jackson.pdf. Johnson, N. F. Steganography [online]. Technical Report. Dokument ve formátu HTML, listopad 1995. [citováno 2009-03-09] Dostupné na http://www.jjtc.com/stegdoc/sec202.html. Johnson, N. F., Jajodia, S. Exploring Steganography: Seeing the Unseen. Computer Journal, February 1998. Dostupné také na: http://www.jjtc.com/pub/r2026.pdf. Johnson, N. F., Jajodia, S. Steganalysis of Images Created Using Current Steganography Software. Proceedings of the 2nd Information Hiding Workshop, April 1998. Johnson, N. F., Duric, Z., Jajodia, S. Information Hiding: Steganography and Watermarking – Attacks and Countermeasures. Kluwer Academic Press, Norwrll, MA, New York, The Hague, London, 2000. Kahn, D. The Codebreakers. The Macmillan Company. New York, NY 1967. Ker, A. Information Hiding and Covert Communication [online]. Foundations of Security Analysis and Design Bertinoro, Italy, 2008. Dokument ve formátu PDF [citováno 2009-05-07]. Dostupné na http://www.sti.uniurb.it/events/fosad08/slides/ker-slides-part1.pdf. Kerckhoffs, A. La Cryptografie Militaire. J. Sciences Militaires. Feb. 1883. Kessler, G. C. Steganography: Hiding Data Within Data [online]. Dokument ve formátu HTML, 2001. [citováno 2009-03-09] Dostupné na http://www.garykessler.net/library/steganography.html. Kessler, G. C. An Overview of Steganography for the Computer Forensics Examiner [online]. Forensic Science Communications, July 2004 - Volume 6 - Number 3. Dokument ve formátu HTML, červen 2004. [citováno 2009-03-09] Dostupné na http://www.fbi.gov/hq/lab/fsc/backissu/july2004/research/2004 03 research01.htm. Krenn, J. R. Steganography and Steganalysis [online]. Dokument ve formátu PDF. [citováno 2009-04-02] Dostupné na http://www.krenn.nl/univ/cry/steg/article.pdf. Lee, Y. K., Chen, L. H., High capacity image steganographic model. Visual Image Signal Processing, 147:03, June 2000. Marvel, L. M., Boncelet Jr., C. G., Retter, C. Spread Spectrum Steganography. IEEE Transactions on image processing, 8:08, 1999. Morkel T., Eloff J. H. P., Olivier M. S. An Overview of Image Steganography. In Proceedings of the Fifth Annual Information Security South Africa Conference (ISSA2005), Sandton, South Africa, June/July 2005. . Peticolas., F. A. P., Anderson., R. J., Kuhn, M. G. Information Hiding – A Survey. Proc. IEEE, vol. 87, no. 7, 1999, pp. 1062–1078. Phan, R. C. W., Ling, H. C. Steganalysis of Random LSB Insertion Using Discrete Logarithms [online]. Dokument ve formátu PDF [citováno 2009-05-07]. Poslední modifikace 06-2004. Dostupné na http://www.geocities.com/dearphael/StegaLSB.pdf.
6
LITERATURA
74
Provos, N., Honeyman, P. Hide and Seek: An Intoduction to Steganogrphy. IEEE Security & Privacy. Vol. 1, Issue 3, 2003, pp. 32–44. Dostupné také: http://www.citi.umich.edu/u/provos/papers/practical.pdf. Rodriguez, B. M., Agaian, S. S., Collins, J. C. Approach to Blind Steganalysis [online]. Digital Forensic Research Workshop, 2003. Dokument ve formátu PDF [citováno 2009-05-10]. Dostupné na http://dfrws.org/2003/presentations/Brief-Rodriquez.pdf. Silman, J. Steganography and Steganalysis: An Overview. SANS Institute, 2001. Simmons, G. J. Prisoners’ problem and the subliminal channel. In: Advances in Cryptology: Proceedings of CRYPTO 83. D. Chaum, ed. Plenum, New York, 1983, pp. 51–67. Tišnovský, P. Programujeme JPEG: Kvantizace DCT koeficientů [online]. Dokument ve formátu HTML [citováno 2009-04-22]. Poslední změna 2007-0111. Dostupné na http://www.root.cz/clanky/programujeme-jpeg-kvantizace-dct-koeficientu/. Tišnovský, P. Anatomie grafického formátu PNG [online]. Dokument ve formátu HTML [citováno 2009-05-21]. Poslední změna 2006-09-14. Dostupné na http://www.root.cz/clanky/anatomie-grafickeho-formatu-png/. Venkatraman, S., Abraham, A., Paprzycki, M. Significance of Steganography on Data Security. Proceedings of the International Conference on Information Technology: Coding and Computing, 2004. Wang, H., Wang, S. Cyber warfare: Steganography vs. Steganalysis. Communications of the ACM, 47:10, October 2004. Wayner, P Disappearing Cryptography: Information Hiding: Steganography & Watermarking. 2nd. ed., Morgan Kaufmann, San Francisco, California, 2002. ISBN: 1558607692. Westfeld, A., Pfitzmann, A. Attacks on Steganographic Systems [online]. Information Hiding , Third International Workshop, Dresden, Germany, 1999. Dokument ve formátu PDF [citováno 2009-05-07]. Dostupné na http://www.ece.cmu.edu/∼adrian/487--s06/westfeld-pfitzmann-ihw99.pdf. Zim, H. S. Codes and Secret Writing. William Marrow and Company. New York, NY, 1948. Žára J., Beneš B., Sochor J., Felkel P. Moderní počítačová grafika. Computer Press 2004, Brno. ISBN 80-251-0454-0. Vydání druhé.