Masarykova univerzita, Fakulta informatiky
Diplomová práce
Steganografie a stegoanalýza
vypracoval: Bc. Roman Žilka, 2008
vedoucí práce: Ing. Mgr. Zdeněk Říha, Ph.D.
1
Prohlašuji, že tato práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracovávání používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj.
Moje poděkování patří dr. Zdeňku Říhovi za časovou investici, vstřícnost a trpělivost, se kterou se věnoval mému snažení, jehož výsledek držíte v rukou.
2
Shrnutí Steganografie – věda zabývající se metodami ukrývání tajných zpráv – dostala jméno na sklonku středověku a svým vznikem sahá dokonce před začátek našeho letopočtu. Během své více či méně vědomé existence učinila úctyhodný vývoj: začínajíc vpravdě v „dřevních“ dobách (vyrývání zpráv do překrytých vrstev dřevěných destiček) povýšila na důležitého spojence mocností ve světových válkách 20. století, aby byla později přijata jako disciplína informatiky a vstoupila do plně digitálního světa počítačů a Internetu. Přestože se tím stala exaktní disciplínou pracující s přesnými – digitálními – daty, nadále implementuje spíše chytré nápady lidí s dobrou fantazií, než absolutní, dokazatelná matematická fakta. Tato práce představuje některé z těchto chytrých myšlenek, a to jak retrospektivně ve stručném pohledu do historie, tak důkladněji na soudobých aplikacích v prostředí počítačů. Záměrem textu je podat výklad především srozumitelně za uvedení nezbytných znalostních podkladů a teoretického kontextu problematiky. Zvláštní pozornost se věnuje steganografii nad obrazovými a textovými daty a experimentální stegoanalýze. V rámci projektu byl proveden test schopností obecného učícího se bayesovského filtru rozpoznávat objekty se steganograficky vloženou zprávou od objektů nedotknutých. Dále byl vytvořen a zdokumentován unixový rezidentní program SMTPd, který umožňuje automatizovaně steganograficky kamuflovat těla průchozích e-mailů pomocí existujících steganografických nástrojů připojitelných jako moduly.
Klíčová slova (česky) steganografie, stegoanalýza, bezpečnost, kryptografie, problém vězňů, bitmapa, LSB, lingvistika, kódová kniha, CFG, bezkontextová gramatika, bayesovský filtr, anti-spamový filtr, SMTP
Klíčová slova (anglicky) steganography, steganalysis, security, cryptography, prisoners' problem, bitmap, LSB, linguistics, codebook, CFG, context-free grammar, Bayesian filter, anti-spam filter, SMTP
3
Obsah 1 Úvod 1.1 Představení oboru a motivace projektu 1.2 Historie steganografie 1.2.1 Starověk 1.2.2 Středověk a raný novověk 1.2.3 Moderní dějiny 1.3 Širší terminologický kontext 1.4 Poznámky k teorii 1.4.1 Prisoners' problem 1.4.2 Subliminal, supraliminal channel 1.4.3 Provázání kryptografie se steganografií 1.4.4 Přehled metod skrývání informací v různých coverech 1.4.4.1 Injection steganography 1.4.4.2 Substitution steganography 1.4.4.3 Propagation steganography 1.5 Struktura textu diplomové práce
6 6 6 7 8 9 10 11 11 11 11 12 12 13 14 15
2 Obrázkový cover 2.1 Anotace 2.2 Digitální reprezentace rastrové grafiky 2.3 Steganografické algoritmy nad obrázkovým coverem 2.3.1 Message location 2.3.2 Protocol event selection 2.3.3 Bit insertion protocols 2.3.3.1 Bit inversion 2.3.3.2 Bit insertion 2.3.3.3 Bit deletion 2.3.3.4 Flag bit 2.3.3.5 Threshold bits 2.3.3.6 Direct bit replacement 2.3.3.7 Neighbor parity 2.3.3.8 Komentář 2.4 Rozvaha kapacity rastrového coveru v kontextu LSB 2.5 Poznámka ke stegosystémům nad obrázky ve formátu JPEG
16 16 16 17 17 18 19 19 20 20 21 21 22 22 22 23 24
3 Textový cover 3.1 Role spamu ve steganografii 3.2 Obecná klasifikace algoritmů textové steganografie 3.3 Kódová kniha 3.4 Text mimicking 3.5 Nasazení bezkontextových gramatik 3.5.1 NICETEXT 3.5.2 Kvalitativní ohledy
25 25 25 26 27 29 30 32
4 Ostatní covery 4.1 Steganografické souborové systémy 4.1.1 Princip 4.1.2 Implementace 4.2 TCP/IP
34 34 34 35 35
4
5 Stegoanalýza 5.1 Struktura oboru 5.2 Algoritmy 5.3 Užívání steganografie na Internetu 5.3.1 Provos, Honeyman: detekce stegogramů na eBay 5.3.1.1 Analytická architektura 5.3.1.2 Závěry 5.3.2 Bayesovská detekce stegogramů 5.3.2.1 Spammimic (I) 5.3.2.2 Spammimic (II) 5.3.2.3 Steganosaurus (I) 5.3.2.4 Steganosaurus (II) 5.3.2.5 Steghide v. 0.5.1 5.3.2.6 Stegotools v. 0.4c (I) 5.3.2.7 Stegotools v. 0.4c (II)
37 37 39 39 40 40 42 42 43 45 45 46 47 48 50
6 Dokumentace programu SMTPd 6.1 Exkurs: protokol SMTP 6.2 SMTPd 6.2.1 Motivace 6.2.2 Kompilace a spouštění 6.2.3 Vnitřní architektura 6.2.4 Rozhraní pro externí filtr 6.2.5 Použití hotových steganografických nástrojů coby filtrů 6.2.5.1 Steganosaurus 6.2.5.2 Steghide 6.2.6 Vliv formátu e-mailů na kvalitu steganografického utajení 6.2.6.1 Scénář se dvěma uzly (I) 6.2.6.2 Scénář se dvěma uzly (II) 6.2.6.3 Scénář se třemi uzly 6.2.7 Některé další bezpečnostní ohledy 6.2.8 Shrnující demonstrace práce programu
51 51 52 52 53 54 55 56 56 57 57 58 58 59 59 59
7 Závěr
62
Bibliografické citace
64
5
Kapitola 1:
Úvod
1.1 Představení oboru a motivace projektu Steganografie (steganography) je disciplína, která má za sebou historii výzkumu a užívání v řádu tisíců let, přesto svoje jméno dostala až na přelomu 15. a 16. století a separátním odvětvím teoretické informatiky (či matematiky) s vlastními publikacemi a konferencemi se stala počátkem 90. let století minulého. Jedná se o odnož kryptografie a dříve byly steganografické postupy za kryptografii přímo označovány. Mezi oběma obory je však pevně (alespoň teoreticky) stanovený rozdíl. Jak známo, kryptografie se zabývá utajováním informací. Toto se dá říci i o steganografii (původem složené řecké slovo: „steganos“ – „ukrytý,“ „graphein“ – „psát“), ovšem úspěšný steganografický systém vůbec nedává nepovolaným osobám znát, že je nějaká dodatečná (utajená) informace přítomna. Zatímco kryptograficky šifrovaná komunikace je všem přihlížejícím viditelná (ale nečitelná), o steganograficky utajené komunikaci nikdo z přihlížejících neví. Steganografický systém tedy selhává už v momentě, kdy si třetí strana všimne, že je přítomna nějaká skrytá informace/komunikace. Jaká je vlastní náplň utajené zprávy, je podružné. Pojem steganografie je tímto explikován. Bezprostředně souvisejícím termínem je stegoanalýza (steganalysis): obor zabývající se metodami detekce přítomnosti steganograficky ukrytých informací (dekódování obsahu není cílem). Stegosystémem se pak rozumí konkrétní steganografický algoritmus; tento pojem je však v praktickém ohledu vágnější nežli analogický pojem kryptosystému – pod jeho pokličku se zpravidla řadí jak algoritmus pro utajení zprávy, tak duální algoritmus zpětného dekódování zprávy. Očekávatelný termín „steganologie,“ coby souhrnné označení pro steganografii a stegoanalýzu, se nepoužívá. Diplomová práce má za úkol: ➢ na dostupném prostoru uceleně prezentovat známé algoritmy a nezbytnou teorii steganografie (pokryto kap. 1-4); ➢ krátce představit stegoanalýzu v obecnosti a podat bližší představu o experimentální analýze (vč. předložení výsledků vlastního bádání), neboť experiment je pro stegoanalýzu významným nástrojem (kap. 5); ➢ přispět dále do oboru sestavením programu, který uvede steganografii v užitečnost v ryze praktické rovině (výsledek dokumentován v kap. 6). Text práce má tendenci uvažovat o steganografii úzce v kontextu Internetu (obzvl. v kap. 3-6, kde je takový přístup relevantní), neboť Internet je médiem, který v dnešní době skýtá největší pohodlí pro utajenou komunikaci. Zvláštní pozornost je v této souvislosti věnována spamu coby nosiči ukrytých informací. Na konci první kapitoly, kdy již čtenář bude mít o problematice přesnější představu, bude obsah nosných kapitol práce zrekapitulován náležitě vypovídajícím způsobem. Následující kapitola zahajuje systematický výklad steganografie a stegoanalýzy, a to od jejich starověkých kořenů.
1.2 Historie steganografie Zatímco dnes platí steganografie za disciplínu informatiky či matematiky, ve 30 a více let staré historii v ní mohl bádat leckdo s chytrým nápadem, jak dostat zprávu z bodu A do bodu B, aniž by si toho někdo všiml. Následující stati se zabývají aplikacemi steganografie právě v době, 6
kdy ji s těmi dnešními spojoval jen název oboru a jeho poslání. O problematice pojednává [1], [2], [3], [4], [5], [6], [7], [8], [9].
1.2.1 Starověk V roce 515 př. n. l. usedl na trůn řecké Sparty král Demaratus. Po 24 letech byl ze země vyhoštěn a stal se rádcem Xerxe, perského vládce, který se tajně chystal napadnout Řecko a přiřadit jej ke své říši. Když Demaratus viděl, jakou armádu chce Xerxes do boje se Sparťany vyslat, rozhodl se svým rodným navzdory křivdě pomoci. Nechtěl se do Řecka sám vrátit a vypravit posla bylo nemožné. K ukrytí poselství o chystané perské invazi použil prosté voskové destičky na psaní. Šlo o hladký kus dřeva politý voskem, do něhož se písmena ryla. Demaratus nechal vosk z destiček rozpustit, vyryl svoje varování pro Sparťany přímo do dřevěného podkladu a tento nápis pak opět zalil voskem, takže se navenek destička zdála jako obyčejné zboží, které mohlo bezpečně odputovat do Řecka. Destičky se dostaly do rukou Gorgony, manželky spartského krále Leonida, která skryté poselství odhalila a Řekové se mohli připraveni, ač nakonec stejně poraženi, postavit Peršanům v bitvě u Termopyl. O Demaratově životě se dovídáme především z [5]. Je evidentní, že zápletka má pár logických háčků. Předně: voskové destičky musel z Persie do Sparty někdo donést – a v tom případě mohl stručnou zprávu už rovnou nést tento člověk v paměti. Nevědoucím poslem mohl být libovolný obchodník s voskovými destičkami; pak ovšem není ujasněno, jakou náhodou se destičky dostaly do rukou manželky spartského krále a jakou náhodou ji napadlo v nich hledat tajné poselství. Staví to sice nové otázky před dějepisce, ale Demaratovo počínání musí být jistě zaznamenáno jako úspěšné užití steganografického principu. [5] eviduje i další starověké praktiky ukrývání zpráv. Pro změnu do Persie, tehdy čerstvě založené králem Kýrosem II., poslal tajné poselství Harpagus, médský generál, v břiše zajíce. Výsledkem této pomoci byla opět porážka Řecka Peršany. Soutěž ve vynalézavosti nekončí. Když chtěli Řekové přesvědčit milétského vůdce Aristagora, aby také povstal proti Persii, poslali mu výzvu napsanou na temeni hlavy otroka. Tomu nejprve oholili vlasy, na holý skalp zprávu vytetovali a až otrokovi vlasy dorostly, vyslali jej do Milétu. Jak se stalo kánonem při užívání steganografie v Řecku, vzniklá revolta proti Persii byla krvavě potlačena. Tato kuriózní metoda nedošla širšího užití, neboť příprava nositele tajemství trvala řádově měsíce a vzhledem k tomu, že nápisy byly na hlavy plešatých otroků skutečně tetovány, potenciálních nosičů dalších a dalších zpráv by pomalu, ale jistě, ubylo k nule. Další steganografické postupy vysvětluje řecký historik Aeneas Tacticus ve svém rozsáhlém díle o umění války. Jedním z nich je jakási prvotní verze děrované papírové šablony. V té jsou vyděrovány otvory nad vybranými písmeny vytyčené stránky v knize. Čtení jen takto označených písmen prozradilo tajnou zprávu. Ze starověké Číny se zachoval zkazek o poměrně brutálním postupu spadajícím pod steganografii. Zpráva se napsala na kousek hedvábí, ten byl následně složen a zalit voskovým obalem. Posel celou tuto schránku spolkl a vydal se na cestu k příjemci. Jak byl důmyslně chráněný kus látky extrahován ze zažívacího traktu nositele, žádný pramen nespecifikuje. Pokročme za práh našeho letopočtu, a to do Říma. Zde byl již před rokem 100 filosofem Pliniusem Starším objeven neviditelný inkoust. Konkrétně šlo o mléčnou esenci rostliny thithymallus. Z tenké vrstvy mléka nanesené na papír se rychle vypařila pigmentová složka, čímž písmena zdánlivě zcela zmizela. Když bylo třeba text následně přečíst, stačilo jej dostatečně zahřát, čímž uhlík přítomný v mléce zuhelnatěl a písmena vystoupila v hnědé barvě. Z principu věci vyplývá, že pro úspěšnou aplikaci této metody bylo třeba teplu odolnějšího materiálu nežli papyru.
7
Na závěr oddílu o starověku se hodí zmínka o jedinečném fenoménu: obrazcích na planině Nazca v Peru (viz [7]). Na 500 km2 veliké poušti je přímo v zemi doslova vyryto kolem 300 obrazů (nejčastěji přírodní výjevy) o takové velikosti, že pozorovatel stojící na zemi nerozpozná v rýhách v zemi smysl, ale při pohledu z dostatečné výšky (nedosažitelné v tamějším prostoru bez využití moderní techniky) jsou tvary očividné. Pro tuto vlastnost lze geoglyfy považovat za steganograficky skryté zprávy. V české Wikipedii se relevantní položka nachází v kategorii „záhady.“
1.2.2 Středověk a raný novověk Kuriózním „steganografem“ německého původu byl Johannes Trithemius, který kolem roku 1500 sepsal [8]. Zde podává návod na telepatickou komunikaci uskutečňovanou skrze síť andělů. Vše je doprovázeno okultistickými praktikami, které Trithemiovi vynesly nelibost církve. Telepaticky předat zprávu druhé osobě bylo údajně možné například takto: odrecitujte text před obrazem pozemského anděla v momentě daném přesným astrologickým výpočtem, poté dotyčný obraz anděla složte spolu s podobiznou příjemce zprávy a pronášejte přitom speciální verše. Zbývá dodat, že jeden ze svazků [8] sám obsahoval skryté zprávy, které byly v knize nalezeny až na konci 20. století. Jednou z nich byla obdoba známého „lorem ipsum“ (text beze smyslu), druhou varování: „Nositel tohoto dopisu je lump a zloděj. Mějte se před ním na pozoru. Chce vám něco provést.“ Třetí skrytou zprávou byl začátek 23. žalmu. Vraťme se nyní zpátky na pevnou zem. Jak bylo v předinformačním věku obvyklé, často lidé znovuobjevovali Ameriku (i když mluvit o něčem takovém v kontextu středověku může být ošemetné). Jedním takovým úspěšným plagiátorem byl italský vševědec Gerolamo Cardano, který během svého života v 16. století vydal 131 knih a dalších 111 zanechal v podobě rukopisu. Jedním z odkazů nesoucích jeho jméno je i Cardanova mřížka, která fungovala podobně jako starořecká děrovaná šablona: destička z pevného materiálu, ve které zely na náhodných místech pravoúhlé otvory, se přiložila na čistý list papíru a do otvorů v mřížce se vepsala utajovaná zpráva. Poté se mřížka odložila a volné místo na papíře se vyplnilo nevinně vypadajícím textem. Přestože při čtení výsledného textu mohlo být snadno odhaleno, že něco není v pořádku, kupodivu tato metoda doznala frekventovaného užití v diplomatické korespondenci v mnoha zemích v 16. a 17. století. Naproti tomu Ital Giovanni Porta vynašel během svého vědeckého působení v 16. století celou řadu steganografických postupů, z nichž některé byly v principu dosti zastaralé (např. pašování krytého kousku papíru v zažívacím traktu psa), ale jiné vysoce sofistikované a průlomové. V jednom svazku jeho [9] se dočteme o řadě způsobů výroby neviditelného inkoustu. Obzvláště pozoruhodná je technika psaní na bílek natvrdo uvařeného vejce, a to bez nutnosti rozbít skořápku. Tinktura složená z ledku a octa nebyla po nanesení a vysušení na skořápce vůbec znatelná, ale díky pórovité povaze skořápky stihla prosáknout a zanechala v bílku barevnou stopu. Tato technika zůstala od své první aplikace velmi dlouho neodhalena; nikoho nenapadlo, že by bylo možné popsat vejce zevnitř a že je třeba podezřelý předmět oloupat. Nevýhodou bylo, že uvařená vajíčka relativně rychle plesniví, takže bylo nutné nosič zprávy po inskripci promptně dopravit k cíli. Dalším Portovým objevem je neviditelné psaní na lidskou kůži. Toto považuji za průlomový moment v distribuci tajných zpráv pomocí lidí coby nositelů: všechny dosavadní metody svěřovaly nějakým způsobem napsanou zprávu poslu, který o zprávě věděl, aby ji mohl doručit. Nabízí se otázka, proč už pak poselství posla nenaučit zpaměti (jak se běžně praktikovalo) a neodstranit tím riziko ztráty fyzického nosiče zprávy (vosková destička, papír, …). Aplikace Portovy metody nemusela nositeli zprávy dát vůbec znát, kde na jeho těle je zpráva ukryta, posel se nemusel poselství vůbec dovědět, posel nenesl žádný objekt se zprávou a vzato do extrému si nemusel být ani vědom toho, že je poslem nějaké zprávy. V Americe se steganografie hojně užívala ve válečných konfliktech. George Washington používal neviditelného inkoustu ke komunikaci se vzdálenými špehy (zpráva byla inkoustem napsána jednoduše na volný list papíru a ten byl vložen na dohodnutou pozici ve štosu stejně vyhlížejících prázdných listů). Washingtonovi britští protivníci ještě tehdy – v 2. polovině 18. století – používali jeden z Portových receptů na neviditelný inkoust. 8
1.2.3 Moderní dějiny Veškeré aplikace steganografie v období do prosazení počítačů zůstávají ve stínu masového nasazení tajné komunikace ve světových válkách. Přímo v cimrmanovském duchu se neslo užívání slangu či předem dohodnutých synonym, které měly zprávu putující běžnou cestou (pošta, telefon, …) učinit nepodezřelou a skrytého významu prostou. A nešlo o praktiku nikterak sporadickou. Během první světové války drahný čas prosakovaly informace z Británie do Německa skrze bývalého poslance Trebitsche Lincolna. Lincoln informace získané z první ruky v britské vládě ve svých dopisech do Německa ukrýval využitím předzívek a synonym. Pro označení měst a přístavů používal například vybraných příjmení nebo názvů chemikálií. Zpráva „Cable prices five consignments vaseline, eight paraffin.“ ve skutečnosti znamenala: „V Doveru je pět špičkových křižníků a osm dálkových torpédoborců.“ Lincolnovo počínání bylo odhaleno až v roce 1917 skupinou britských námořních kryptoanalytiků známou jako Room 40. Lincolnovi se nakonec podařilo Britům uniknout do Spojených států. Druhá světová válka také pamatuje používání žargonu k maskování zpráv. Kódované texty vypadaly např. jako popis trhu s dětskými panenkami a jinými hračkami. Přestože byly tyto dopisy (jakožto většina v té době) kontrolovány na bezpečnostních úřadech, nevzbudilo jejich znění pozornost. Tu upoutal až jeden z dopisů, který se na poštu do USA vrátil z Buenos Aires: vzdálený odesilatel byl označen jako „neznámá adresa“ a příjemcem byla jistá žena, stanovená původně jako odesilatel, když dopis putoval směrem ze Spojených států. Vrácený dopis byl bez dalšího zkoumání doručen dotyčné dámě. Ta dopis ovšem nikdy neviděla a předala jej FBI. Vzorek šifrované zprávy: „Podařilo se mi získat rozkošného siamského chrámového tanečníka, ale byl poškozený. Nyní je ovšem opravený a moc se mi líbí.“ Z jiného dopisu: „Polámané anglické panenky budou v nemocnici pro panenky pár měsíců, dokud nebudou opraveny. V nemocnici pro panenky pracují ve dne i v noci.“ FBI zjistila, že panenky reprezentovaly lodě; každý druh panny jiný typ lodi. Ve druhé uvedené citaci panenky ukrývaly válečné lodi a nemocnice pro panenky dok. Skutečným odesilatelem dopisů o panenkách byla majitelka jistého luxusního hračkářství v New Yorku. Za svou ilegální činnost byla placena Japonci. Synonyma přirozeného jazyka balancují na hranici mezi steganografií a kryptografií. Ovšem ryze steganografickým postupem je nacistický vynález, který tehdejší ředitel FBI, J. E. Hoover, později označil za „umělecké dílo nepřátelské špionáže“: microdots. Šlo o technologii miniaturizace textu či grafiky do prostoru velikého asi jako tečka na klasickém psacím stroji. Do tohoto milimetrového bodu bylo možné vměstnat celou stránku formátu A4 (zmenšení až 1:200). Miniaturizovaná informace byla vytištěna na materiálu podobném filmu a k jejímu přečtení postačil malý mikroskop. Odesilatelé lepili tyto bodové nosiče tajných zpráv přes interpunkční znaménka v dopisech, jejichž obsah byl na první pohled zcela nevinný. Protože se filmový materiál oproti matnému papíru výrazně leskl, byly používány různé dodatečné kamuflážní metody, např. samoúčelné gumování prostoru s přelepenou tečkou. Přesto časem právě tento rozdíl v lesklosti materiálu spojencům existenci microdots prozradil. Další praktikou často užívanou ve 2. světové válce byly otevřené kódy (null ciphers) živé dodnes (alespoň pro zábavu školáků). Tajná zpráva byla opět ukrývána do nevinně vyhlížejícího textu. Přečtením vytyčených písmen v takovém textu příjemce získal skutečnou utajenou informaci. Které znaky z textu vybrat, muselo být mezi komunikujícími stranami dohodnuto předem. Často citovaným příkladem je zpráva napsaná nacistickým špehem: „Apparently neutral's protest is thoroughly discounted and ignored. Isman hard hit. Blockade issue affects pretext for embargo on by-products, ejecting suets and vegetable oils.“ Čtením pouze druhých písmen všech slov vyplyne tajná zpráva: „Pershing sails from NY June I.“ Otevřené kódy byly výbornou ochranou před cenzory, kteří korespondenci četli, útoku hrubou silou (hádání možných pozic relevantních písmen tvořících tajnou zprávu) text však rychle podlehl. Neviditelný inkoust byl prostředkem nezanedbatelné užitečnosti i ve 20. století. Metody dodatečného ukrytí neviditelného písma rostly na sofistikovanosti; postupy výroby inkoustu a jeho detekce ovšem kopírovaly stovky let staré recepty.
9
1.3 Širší terminologický kontext V informačním věku, jemuž vládne na poli výměny informací Internet, se samozřejmě řadě z výše popsaných steganografických postupů dávno nevěnuje pozornost. Je potřeba sofistikovaných algoritmů, kterak skrýt informaci v digitálních datech, a to datech v takovém formátu, který je snadno přenositelný a prezentovatelný v heterogenním síťovém prostředí. Tento nosič, který je zneužit pro přenos dodatečné (tajné) zprávy, se nazývá cover medium (či pouze cover). Coverem je možno nazývat jak typ média, tak (formálně vzato nekorektně) konkrétní objekt tohoto typu. Zatímco v kapitole o historii byly uváděny takové covery jako vosková destička, otrokova pleš či nevinně vyhlížející text v přirozeném jazyce, dnes se nejčastěji používá digitálních obrázků, digitálních audionahrávek, metadat různých komunikačních protokolů (např. sady TCP/IP) a pozornosti se dostává i zmíněným textům v přirozeném jazyce (viz kap. 3). Pod termínem stegogram se dále, jak intuice napovídá, chápe instance coveru, v níž je ukryta (embedded) tajná zpráva. Maximální velikost tajné zprávy, kterou lze daným stegosystémem do konkrétního coveru vetknout, se nazývá steganografická kapacita tohoto coveru. Steganografie se někdy považuje pouze za jednu z několika disciplín spadajících pod tzv. information hiding. Zevrubnou oborovou strukturu znázorňuje následující strom ([10], str. 2):
Zatímco steganografii jako takové se dostává zájmu z okruhů akademických, vojenských, vládních a policejních, stěžejní problematikou v komerční sféře je vodotisk (watermarking). Je to zřejmé již z nákresu, kde se příslušný uzel nachází v kategorii copyright marking. Rozdíl mezi steganografií a vodotiskem spočívá v kladení důrazu na různé kvalitativní aspekty ukrytí dodatečné informace do coveru: pro steganografii je podstatné, aby přítomnost této informace nebyla nápadná; pro vodotisk, aby dodatečná informace nebyla z coveru odstranitelná (přesněji řečeno, aby její odstranění nutně vedlo v jistém smyslu k destrukci či naprostému znehodnocení coveru) a na její detekovatelnosti buď nezáleží nebo je přímo nezbytná. Vodotisk tedy klade důraz na robustnost, steganografie na objem (utajených) dat v coveru. I pro samotnou steganografii je jistě vhodné, aby do coveru dané velikosti bylo možné vložit co nejvíce dat tak, že ani poškození stegogramu tajná data nezničí. Existuje však jistá (nejasná) míra bitového objemu, kterou nesmí vkládaný objekt překročit, aby výsledný stegogram stále vypadal dostatečně nenápadně. Tento bitový objem zahrnuje jak samotnou utajovanou zprávu, tak režijní data stegosystému a redundanci, která zajistí robustnost. Z uvedeného vyplývá stěžejní invariant platný obecně pro všechny stegosystémy: utajovaná zpráva [b] + redundantní informace vynaložená na robustnost [b] = k Zde k je konstanta daná coverem a očekávaným stegoanalytickým algoritmem. Tento vztah v sobě nese onu relativitu představy „stegogram vypadající nenápadně,“ neboť je úměrný právě očekávanému stegoanalytickému útoku. Proto nelze k nazývat steganografickou kapacitou, která je 10
jasně a deterministicky vyčíslitelná z coveru a stegosystému (nehledě na případnou metodu stegoanalýzy).
1.4 Poznámky k teorii 1.4.1 Prisoners' problem V roce 1983 prezentoval G. J. Simmons na konferenci CRYPTO referát s názvem „The Prisoner's Problem and the Subliminal Channel“. Pozdější badatelé, to již v disciplíně zvané steganografie, od Simmonse převzali některé modely, které se v oboru všeobecně ujaly. Zejména se tedy jedná o tzv. prisoners' problem (skutečná pozice apostrofu mezi odborníky není, zdá se, ujasněná; česky se však bezvýhradně hovoří o „problému vězňů“ a podstata věci tomu odpovídá) a pojem subliminal channel. Problém vězňů je v základě pouhým demonstrativním vyobrazením stegosystému v praxi. Definuje dvě komunikující strany (vězně) a třetí stranu, která na komunikaci dohlíží (dozorce). Vězni jsou umístěni v oddělených celách a mají k dispozici nějaký jasně vyhraněný komunikační kanál. Veškeré zprávy odeslané libovolným z vězňů se dostanou do ruky napřed dozorci, který si je může buď pouze číst (passive warden), anebo je navíc i měnit (active warden), ale jen tak, aby zprávu, kterou vidí, v její podstatě zachoval (v digitální komunikaci se tímto myslí např. změna formátu obrázku či komprimace). Úkolem vězňů je naplánovat spolu útěk z vězení, a to za použití onoho auditovaného kanálu tak, aby dozorce neměl tušení, že je plánován útěk. Přestože se zmíněný model může zdát samoúčelný a užitečný snad jen v populární rovině, teoretici v oboru steganografie jej místy používají k exaktnímu stanovování vstupních podmínek pro zajímavé praktické situace a vynášejí na něm závěry svých bádání. Obzvláštní pozornost se věnuje konfiguracím s aktivním dozorcem (který nějakou skrytou komunikaci očekává a snaží se ji svými zásahy zhatit), jemuž se v závislosti na přesně definovaném okolí přisuzují konkrétní šance na odhalení plánovaného útěku.
1.4.2 Subliminal, supraliminal channel Předáváním tajných zpráv veřejným kanálem (coby coverem) v tomto vzniká dílčí, pomyslný kanál, kterým proudí právě utajovaná data. Nazývá se (dle Simmonsovy konvence) subliminal channel. Je používán v situacích, kdy je při komunikaci kladen důraz na důvěrnost. Existují situace (nespadající přímo pod vodotisk), kdy je naopak nutné předat informaci tak, aby byla při přenosu těžko zničitelná, přičemž důvěrnosti není třeba. Obzvláště se požaduje, aby informace nebyla zničitelná aktivním dozorcem, který sice může veškerá komuniké měnit, ale ne tak, aby zcela změnil jejich význam. Pro takovýto robustní přenos se použije tzv. supraliminal channel. Jde o neutajený způsob předávání informace tak, že tato je nejen v coveru evidentně čitelná, ale její poškození by vedlo k výrazné změně významu coveru. Proto ji aktivní dozorce nemůže změnit. Supraliminal channel má obvykle relativně nízkou propustnost, neboť data jím posílaná jsou kvůli robustnosti redundantně rozprostřena po coveru. [10] uvádí (str. 11) ilustrativní příklad na generovaném textovém coveru v přirozeném jazyce: jednotlivé části „nadprahové“ zprávy figurují jako fundamentální, neodstranitelné a nezaměnitelné součásti smyšleného příběhu. Pokud by libovolnou část zprávy aktivní dozorce zničil, změnil by tím smysl příběhu. Zavádění supraliminal channels do stegosystému je žádoucí např. při asymetrické steganografii pro výměnu veřejných klíčů (viz následující stať).
1.4.3 Provázání kryptografie se steganografií Již z pojednání o historii steganografie je zřejmé, že styčné plochy s kryptografií jsou nemalé. Existují aplikace, u nichž lze spekulovat o tom, zda je vůbec korektní zahrnovat je pod působnost 11
steganografie, přestože jsou jako takové rovněž studovány – např. kódová kniha (popsána v kapitole 3.2). V digitálním věku sbližování obou disciplín pokročilo až do té míry, že je zvykem všechny tajné zprávy před steganografickým embeddingem šifrovat bez ohledu na stegosystém či potenciálního dozorce. To se děje z několika důvodů. ➢ Steganografické ukrývání může data celkem dobře zabezpečit, nicméně steganograficky ukrytá šifra zprávy skýtá zabezpečení minimálně stejně dobré. Není obtížné představit si situaci, kdy šifra po prolomení stegosystému už není k ničemu nápomocná (např. donutí-li soud autora šifry prozradit klíč), ovšem toto jistě neplatí obecně. ➢ Šifrovaná data mají tendenci připomínat náhodný binární řetězec. Jsou-li utajená data strukturovaná a nízkoentropní, mohou v coveru zanechat po embeddingu charakteristickou, předvídatelnou stopu, která embedding prozradí. Naproti tomu náhodná data v nejširším slova smyslu mění cover opět náhodně, dá se tedy předpokládat (bez přesné znalosti algoritmů stegosystému), že utajená data nezmění určité vlastnosti coveru, které jsou zjišťovány pomocí aritmetického průměru či jiného jednoduchého statistického ukazatele. Obrazně lze říci, že je náhodnými daty je do coveru zanesen šum (bez známého obsahu). Některé stegosystémy navíc přímo zakládají svou sílu na tom, že utajovanou zprávou jsou relativně náhodná data. Díky této vstupní podmínce pak mohou být zprávy např. ukryty mezi kvantum jiných vysokoentropních dat, která žádnou tajnou zprávu nenesou. Příkladem budiž steganografický souborový systém (viz kap. 4.1). Případné šifrování lze samozřejmě uskutečnit jak symetricky, tak asymetricky. V druhém případě se z hlediska terminologie jedná o asymetrickou steganografii. Obě varianty jsou pak svázány s problematikou výměny a správy klíčů ve steganografii; tímto tématem se však tato práce nebude zabývat.
1.4.4 Přehled metod skrývání informací v různých coverech Existují četná dělení steganografických metod v závislosti na všerůzných ukazatelích; typicky dle typu digitálního média, které je pro přenos informace použito. Zde uvedená klasifikace tuto konvenci rozšiřuje v duchu [11].
1.4.4.1 Injection steganography Jak název napovídá, algoritmy tohoto typu přidávají přenášenou informaci do coveru na vhodné místo tak, že není nenarušena interpretace coveru obvyklým způsobem. Vágní spojení „interpretace obvyklým způsobem“ nabývá významu v souvislosti s konkrétním typem coveru: v případě obrázků se míní zobrazování grafickým prohlížečem, v případě audio coveru přehrávání záznamu atp. Výhodou tohoto přístupu je, že data původního coveru zůstanou nezměněna; nevýhodou je změna velikosti datového objektu. V této kategorii se uplatní jen několik, ne právě klasických, coverů. ➢ Spustitelné binární soubory: např. u Linuxu jsou tyto interně členěny do segmentů, kterých může být libovolný počet a jejichž binární obsah používá buď samotný soubor ke svému běhu (např. segment vlastních instrukcí procesoru, sekce statických dat, …) nebo je používají externí programy pro svoje účely (např. ladicí metadata, ikona). Je snadné novou sekci, jejíž přítomnost nikdo nebude očekávat (ani ji interpretovat), do binárního souboru s programem přidat a použít ji pro tajné uložení, potažmo přenos, informace.
12
➢ Datagramy síťových komunikačních protokolů: datagramem se zde obecně míní atomární
datový objekt (datagram), který je do sítě v rámci protokolu vysílán. Pakliže je komunikace asynchronní a protokol umožňuje připojit k datagramům dodatečná data (např. data vyšší síťové vrstvy), je možné tento volitelný prostor použít k přenosu tajné informace. Pro nižší síťové úrovně je sice evidentní, že sítí putuje nějaká dodatečná informace, ale vyšší vrstvy, které jsou teprve v kontaktu s uživatelem, tajnou zprávu nebudou očekávat (ani se ji snažit interpretovat). ➢ Souborové systémy: tyto obvykle pokrývají celý dostupný prostor na dané vnější paměti, pročež není možné je dále rozšiřovat. ➢ Čistý text, bitmapové obrázky, nestrukturované audio: každý bit takovýchto objektů nese primární informaci. Nepozorované vložení dalších dat není možné. Z uvedeného vyplývá, že úspěšně lze injekční algoritmy používat u coverů, které mají plovoucí velikost – jejich vnitřní struktura dovoluje přidávání dodatečných, volitelných dat, jejichž interpretace je ponechána na externím subjektu (aplikace, sousední uzel v síti apod.). Kromě spustitelných souborů a datagramů tak lze myšlenku aplikovat např. na vhodně strukturovaný text (např. HTML), obrázky, audio, video a další typy. Naproti tomu nepoužitelné jsou covery s pevnou velikostí či covery bez vnitřní struktury (každý bit něco znamená).
1.4.4.2 Substitution steganography Metody této kategorie systematickým způsobem modifikují nosné bity coveru ve snaze zakódovat tak co nejvíce vlastní, dodatečné informace, a to při zachování důležitých vlastností konkrétního coveru. Bitový objem tak zůstává nezměněn. Ony „důležité vlastnosti“ jsou poplatné konkrétním typům coveru a také interpreta (tj. v principu dozorce), na jehož schopnostech bude určit, zda je prezentovaný cover čistý, anebo zda jde o stegogram. Za těmito účely jsou sestavovány důkladné studie, které pro daný typ coveru zkoumají některé významné statistické vlastnosti (např. poměr nulových a jedničkových bitů v zajímavých partiích datových objektů), které jsou použity jako měřítko kvality (nenápadnosti) stegogramů produkovaných daným steganografickým algoritmem. Tento ohled je významný zejména v případě, je-li kontrolním subjektem stroj (program). Pakliže se předpokládá, že stegogram bude prezentován k posouzení lidským smyslům, má smysl se zabývat zkoumáním silných a slabých míst lidského vnímání. V oboru audia/sluchu bylo takto např. zjištěno, že člověk neslyší tiché zvuky, které následují bezprostředně po hlasitém zvuku. O oku je známo, že nevnímá malé změny v jasu různých částí obrázku, jsou-li oblasti se stejnou úrovní jasu rozptýleny relativně náhodně. Tyto a mnohé další poznatky dovolují nejen efektivně ztrátově komprimovat audio a obraz, ale dávají znát, do kterých míst datového objektu je možno zasáhnout za účelem embeddingu tajné zprávy, aniž by si toho lidský kontrolor všiml. Opět ne všechny covery jsou přístupné substituční steganografii, jak vyplývá z následujícího přehledu. ➢ Čistý text: změna byť jediného bitu bude mít za následek záměnu některého znaku za jiný. Pro substituční techniky nepoužitelný cover. ➢ Spustitelné binární soubory: v segmentu instrukcí procesoru nelze zpravidla žádné bity měnit (procesor by vykonával jiný kód). V segmentu dat jiného typu (např. obrázek uložený v segmentu statických dat) je použitelnost substitučních metod závislá na typu konkrétního uloženého objektu. ➢ Audio: bez ohledu na kódování audia do digitální podoby lze před lidským uchem skrýt variabilní množství dodatečné informace v těch fragmentech záznamu (vybraný časový interval, vybrané frekvenční spektrum, …), jejichž změna nebude slyšitelná. ➢ Souborové systémy: tyto skýtají zevrubně řečeno tolik prostoru pro tajná data, kolik volného místa souborový systém eviduje. V souborovém systému je známo, které fyzické bloky nosiče jsou obsazeny platnými uživatelskými daty a které nikoli. O neobsazených oblastech se předpokládá, že obsahují náhodná, nesmyslná data a systém se je nesnaží interpretovat. 13
Do tohoto přehlíženého prostoru je však samozřejmě stále možno zapisovat, a to bez vědomí systému souborů. Uložená data tak nebudou viditelná v podobě žádného souboru, ovšem jak se systém souborů rozpíná, může tajnou informaci přepsat, považujíc ji za volné místo s náhodnou bitovou hodnotou. ➢ Datagramy síťových protokolů: řada protokolů rezervuje ve svých datagramech sekce, které samy nepoužívají či používají jen výjimečně. Nepoužívané sekce mohou existovat jako záloha pro případné budoucí využití (např. rozšíření protokolu o další funkce nebo zvětšení bitové šířky některých jiných sekcí) nebo se jejich prvotní účel naopak stal časem bezpředmětný. Takovéto oblasti mohou být využity pro embedding tajných informací. Příjmová strana musí mít schopnost sledovat síťovou komunikaci na té vrstvě, jejíž datagramy byly pro přenos použity. Jinak by mohla být přenášená zpráva zničena při standardním dekódování datagramů příslušnou síťovou vrstvou. ➢ Obrázky: pravděpodobně nejatraktivnější médium pro účely steganografie na Internetu. Obvykle se na postu kontrolora očekává člověk, nikoli stroj. Tím se otvírá široký prostor pro invenci návrhářů steganografických algoritmů, kteří mohou využít specifických neduhů lidského zraku pro získání dalšího bitového prostoru pro utajení zprávy. Za příklad zde může posloužit dobře známá a jednoduchá technika zvaná neformálně LSB (Least Significant Bit). Nápad stojí na předpokladu, že malá změna odstínu barvy pixelu je pro lidský zrak nedetekovatelná, obzvláště jsou-li takto mírně změněny víceméně náhodné pixely v obrázku. V klasickém bitmapovém pojetí se toto promítá do změny nejméně významného bitu(ů) v RGB reprezentaci barvy pixelu (podrobněji v kap. 2). Právě tyto (pro oko) nevýznamné bity lze použít pro uložení tajné zprávy. Čím více bitů je pro embedding využito, tím větší objem informace je možno uložit, ale tím nápadněji se upravený obrázek bude jevit jako stegogram. Jedním z cílů této práce je zjistit, jak si s rozpoznáváním obrázkových stegogramů poradí automatizovaně počítač (viz kap. 5.3.2). Z výčtu vysvítá pozorování: pro substituční steganografii jsou vhodné zejména ty struktury, jejichž entropie je malá. Objekty s malou entropií nesou málo informace, přesto však pokrývají velký bitový prostor. To je způsobeno buď redundancí nesené informace (např. pro zvýšení odolnosti proti chybám při přenosu objektu po nespolehlivém médiu) v objektu, nebo jen prostorově neefektivní reprezentací informace na dané bitové šířce. Za ilustraci může posloužit např. zmíněný strojový kód (vysoká entropie) a souborový systém (ne plný; nízká entropie – předpokládejme, že prázdné místo souborový systém považuje za prostor s nějakým jednoduchým bitovým vzorkem). V této rovině byl relativně nedávno položen most mezi dosavadními výsledky v oboru teorie informace a steganografií a vzniklé otázky skýtají rozsáhlé neprobádané území. Viz např. [12].
1.4.4.3 Propagation steganography Tyto techniky se zásadně liší od algoritmů dvou předcházejících kategorií v tom, že sice ukrývají tajnou informaci do nějakého digitálního média (coveru v obecném slova smyslu), ale nepoužívají žádný konkrétní datový objekt (cover v instancializovaném slova smyslu), který by v rytmu vkládané zprávy upravovaly. Postupy propagation steganography se dají považovat za funkce z množiny tajných zpráv do množiny stegogramů nějakého datového typu (audio, text, …). Cílový stegogram, který je stegosystémem syntetizován, se má jevit do možná nejnevinněji. Vzhledem k tomu, že se nejedná o nic jiného, než pouhé překódování dané analogové či digitální (utajované) informace, je možné syntetizovat zcela jakýkoli typ coveru. Výhodou je zřejmý fakt, že syntetizující algoritmus může vygenerovat stegogram, který pro danou vstupní zprávu bude co nejnenápadnější, a přitom bude např. objemově co nejmenší. (Dříve zmiňované postupy musely vystačit s takovým coverem, který jim byl předložen.) Problémem je obtížnost úkolu vygenerovat nevinně vyhlížející stegogram. Obzvláště je-li vykonavatelem steganografie počítač a očekávaným kontrolorem člověk. Viz např. příklady textových stegogramů v kap. 3.
14
1.5 Struktura textu diplomové práce 1.
2.
3.
4. 5.
6.
7.
8.
Jednotlivé dílčí cíle projektu naplňují kapitoly textu a přiložené CD v následujícím sledu. Úvod: kapitola přednesla základní terminologický rámec oboru a blíže se věnovala představení běžných coverů a technik embeddingu v nich. Byl zmíněn tzv. prisoners' problem, který modeluje samotné poslání steganografie. Teoretický výklad byl doplněn krátkým esejem o historii oboru, odkud je znát výrazný rozdíl mezi steganografickými metodami věku papíru a věku digitálního. Obrázkový cover: uvede čtenáře do problematiky skrývání zpráv v digitálních obrázcích, obzvláště pak rastrových. Poskytuje důkladnější představu o omezeních, která pro steganografii grafika skýtá; zejména očekává-li se, že stegoanalýzu bude provádět člověk, a nikoli stroj. Textový cover: věnuje se textovým stegogramům, a to obšírněji v kontextu internetového spamu a strojové stegoanalýzy textů v přirozeném jazyce. Kapitola systematicky předkládá postupně dokonalejší steganografické algoritmy, průběžně je doplňuje ilustračními stegogramy a komentuje jejich výhody a nedostatky. Výklad ústí v prezentaci ideje zapojení CFG do syntézy textového stegogramu. Ostatní covery: okrajově naznačuje metody kamufláže informace v síťových datagramech a lokálních souborových systémech. Stegoanalýza: vzhledem k neuspořádanosti oboru je obecnému výkladu věnováno jen málo pozornosti v úvodu a většinu prostoru pak zaujímá popis dvou experimentů, jejichž studium nabídne čtenáři lepší příležitost pochopit, s čím se analýza (zejména v internetovém prostředí) potýká. První ze zmíněných pokusů byl proveden před několika lety předními odborníky oboru; zde je jejich experiment ve stručnosti zdokumentován. Druhý report v hlubším detailu pojednává o vlastní snaze v experimentální analýze: zkoušce schopnosti obecného učícího se bayesovského klasifikátoru rozlišovat stegogramy od čistých objektů. Pozitivní výsledky by mohly otevřít nový směr ve vývoji analytických nástrojů či přímo bayesovských filtrů. Oba prezentované testy společně naznačují, jak obtížné je úspěšnou stegoanalýzu provést. Dokumentace programu SMTPd: představuje vlastní program, který byl sestrojen za účelem usnadnění nasazení steganografie v běžném užívání elektronické pošty. SMTPd – rezidentní filtr protokolu SMTP – samočinně steganograficky ukrývá sdělení napsaná uživatelem prostřednictvím klasického poštovního klienta. Textový komentář v šesté kapitole představuje princip fungování programu z hlediska používání i programování, ukazuje, jak SMTPd koordinovat s externími steganografickými utilitami a pozornosti neuniká ani diskuze vlivu (který může být nulový až evidentní) nasazení SMTPd na kvalitu utajení dat. Závěr: zaměřuje se převážně na experimentální stegoanalýzu a SMTPd, neboť zde se má projevit vlastní přínos diplomového projektu do oboru. Je zrekapitulováno, proč bylo toto úsilí vyvinuto a jakých výsledků a skutečné (versus očekávané) užitečnosti bylo dosaženo. Přiložené CD: obsahuje zdrojové texty programu SMTPd spolu s několika podružnými doplňky. Přiložena je rovněž elektronická podoba textu diplomové práce v několika formátech.
15
Kapitola 2:
Obrázkový cover
2.1 Anotace Obrázky jsou vskutku vhodným médiem pro utajování dat. Toto tvrzení se zakládá předně na dvou faktech. ➢ Na webu se obrázky vyskytují v nesčetných kvantech a podobách. To je předurčuje k pozici steganografického coveru, neboť v nezpracovatelném objemu obrázků se stegogram snáze ztratí. ➢ Ztrátová komprese obrázků je všední záležitostí. Mírné odchylky od perfektní fotografie jsou při počítačovém zpracování a prezentaci tak očekávaným jevem, že jej nelze považovat za podezřelý. Tohoto štědře užívají steganografické algoritmy produkující grafické stegogramy: zavedením dodatečného šumu do obrázku se jeho viditelná kvalita v krajním případě i sníží, ovšem výsledek zůstává v mezích očekávané všednosti. Předpokládá-li se, že stegoanalýzu obohacených coverů bude provádět člověk, je možné využít specifik lidského zraku k identifikaci vhodných způsobů deformace coveru, které rozšíří jeho steganografickou kapacitu, a přitom zhruba zachovají viditelné kvality podkladu. K těmto specifikům patří (viz např. [13]): ➢ snížená citlivost na barevný odstín v těsném okolí ostrých barevných přechodů (hran); ➢ omezené vnímání modré složky spektra; ➢ závislost vnímání kontrastů barev na frekvenci, s jakou k barevným přechodům v prostoru dochází; ➢ intenzivnější cit pro změnu jasu oproti změně barevného odstínu (obzvláště v barevně pestré a členité oblasti); ➢ nízká citlivost na pozvolné změny kvantitativních veličin (např. pomalá, plynulá změna odstínu napříč rozsáhlým prostorem).
2.2 Digitální reprezentace rastrové grafiky Následující kapitoly se budou zbývat výhradně obrázky reprezentovanými rastrově. Vektorová grafika je ve výzkumech obrazové steganografie prakticky ignorována. Na přesném poznání digitální reprezentace rastrového obrázku závisí pochopení souvisejících steganografických algoritmů; cílem této podkapitoly je toto téma rekapitulovat. V terminologii počítačové grafiky se rastrem rozumí dvourozměrná matice, jejíž každý prvek reprezentuje vzhled elementárního čtvercového bodu (pixel) obrazu. Tato matice tak jednoznačně identifikuje dvourozměrný obraz složený z (obvykle miniaturních) čtverců odpovídajících prvkům matice. Souřadnice čtverce obrazu odpovídají souřadnicím prvku matice, který čtverec definuje.
16
rastr různé velikosti na stejném prostoru (převzato z [14])
Doména, z níž jsou prvky rastru vybírány, se nazývá barevný prostor. V závislosti na cílové aplikaci byly vyvinuty desítky barevných prostorů, lišících se počtem prvků a bitově vyčíslitelnou velikostí prvku. Tyto veličiny ovlivňují mj. schopnost jemně vyjadřovat rozdíly mezi pixely obrazu. Protože počet možných barev v přírodě je nespočetný a barevný prostor nutně konečný, není možné takto digitálně postihnout všechny možné barvy. Pro potřeby zachycení reálného světa s rozumně pestrou škálou barev při zachování paměťové úspornosti se ujalo několik prostorů. ➢ RGB (Red Green Blue): prvkem je uspořádaná trojice celých čísel ze stejného rozsahu (typicky rozsah zobrazitelný na 8 bitech). Každé z čísel reprezentuje podíl jedné ze základních barev aditivního skládání (červená, zelená, modrá) na barvě daného pixelu. RGB je užíván v digitálním grafickém formátu BMP (běžná bitmapa) a přirozeně koreluje s technologií zobrazování na běžném CRT monitoru. ➢ CMYK (Cyan Magenta Yellow blacK): stejná filosofie jako u RGB, jedná se však o základní barvy subtraktivního skládání (azurová, purpurová, žlutá) s jedním dodatečným bitem, který rozhoduje, zda reprezentovaná barva je černá či nikoli. ➢ HSV (Hue Saturation Value): prvkem je opět uspořádaná trojice; její prvky odpovídají relativnímu podílu odstínu barvy, sytosti barvy a jasu na vzhledu reprezentovaného pixelu. ➢ YUV: reprezentuje vzhled pixelu světlostí (luma) a dvěmi hodnotami chrominance. Jakožto trojrozměrné vektorové prostory jsou RGB a YUV lineárně závislé. YUV je s jemnou modifikací používaný v grafickém formátu JPEG. ➢ Generic grayscale: obecný název pro některé prostory zachycující scénu černobíle. Prvkem je jediné číslo, obvykle 8bitové, které je ukazatelem do pevné tabulky různých odstínů šedi.
2.3 Steganografické algoritmy nad obrázkovým coverem Všechny prozkoumané stegosystémy pracující s obrázky spadají do kategorie substitution nebo injection steganography. Tato podkapitola ustanoví pro proces vzniku obrázkového stegogramu pevnější rámec. Terminologicky se text opírá o [15], který nad ostatními prameny vyniká právě zavedením formálnější struktury stegosystému, která umožňuje přistupovat ke konstrukci konkrétního algoritmu modulárně a systematicky. Proměna coveru ve stegogram probíhá ve třech fázích: 1. izolace oblastí coveru, které vůbec budou modifikovány (ML, Message Location); 2. stanovení funkce (PES, Protocol Event Selection), která pro zadanou utajovanou zprávu vrátí přesné pozice v izolovaných oblastech coveru, kde bude zpráva uložena pomocí BIP; 3. stanovení algoritmu pro uložení (části) utajované zprávy na zadanou pozici v coveru (BIP, Bit Insertion Protocol).
2.3.1 Message location Nejjednodušším přístupem při embeddingu tajné informace je prohlásit cover bez hlubší interpretace za sekvenci bitů/pixelů, které jsou pro injekci zprávy uniformně vhodné. Takové smýšlení může vést ilustrativně k následujícímu výsledku: 17
První záběr je výřez z fotografie jehličnatého stromu proti obloze. Druhý záběr vznikl z prvního embeddingem cca 70 KB pseudonáhodných dat pomocí nástroje Stegotools (http://www.sourceforge.net/projects/stegotools/). Z perspektivy lidského oka byla stegosystémem nejvíce poškozena plocha oblohy, méně pak vnitřní tmavá plocha větvoví a takřka neznatelně úzké pásy jehličí na okrajích větví. Toto pozorování nabádá ke stanovení podmnožiny coveru – message location –, ve kterém budou jakékoli změny vůbec prováděny. V případě prezentovaného záběru by šlo o tmavý prostor větví. Tím sice klesne steganografická kapacita coveru, ale v zájmu zachování podobnosti stegogramu s předlohou se jedná se o nevyhnutelné opatření. Konkrétní plochy coveru, kterým je žádoucí se zcela vyhnout, je možné snadno identifikovat lidským úsudkem při pohledu na obrázek. Má-li být tento rozhodovací postup zautomatizován, nezbývá, než se spolehnout na pouhou strojovou detekci větších ploch s neměnnou či jen plynule a zvolna proměnnou barvou, neboť právě takové oblasti jsou nejzranitelnější. Takovýto algoritmus by se však po vhodné konfiguraci (minimální velikost plochy s podobným odstínem, citlivost v chápání pojmu „podobná“ barva, …) mohl rozhodovat poměrně dobře. Méně významný, ale přesto platný, je ohled na ty partie obrázku, které primárně přitahují spontánní pozornost člověka. Do těch by taktéž data vkládána být neměla. Tyto plochy lze vzít v úvahu při zdokonalování algoritmu pro message location, ovšem jedná se o velmi těžko algoritmizovatelný postup (obvykle učebnicové algoritmy v odborných textech jednoduše prohlásí za problematickou střední partii obrázku).
2.3.2 Protocol event selection PES je totální funkce, která pro každý binární řetězec (utajovanou zprávu) vrátí konečnou množinu uspořádaných dvojic (data, location), kde ➢ data: neprázdná souvislá část vstupního bitového řetězce či celý vstupní řetězec; ➢ location: absolutní adresa místa v coveru (přesněji: v části coveru označené v procesu message location za použitelnou), kam má být příslušný řetězec data injektován pomocí algoritmu BIP (diskutován v následující kapitole).
18
Přitom:
➢ pro každý bit vstupu platí, že je součástí alespoň jedné výstupní složky data funkce PES; ➢ každý bit coveru je adresován nejvýše jednou výstupní složkou location funkce PES.
Je irelevantní, jakým způsobem dojde k uvědomění funkce PES o tom, které partie coveru jsou pro embedding použitelné a které nikoli. Modelovým řešením může být zavedení kolizní funkce, která parametr location v každé vygenerované dvojici podrobí testu na příslušnost do použitelné frakce coveru a v negativním případě deterministicky rozhodne o náhradním umístění. Vhodnou volbou PES lze dosáhnout například následujících účinků. ➢ Zvýšení robustnosti embeddingu: redundantním vkládáním vstupních dat na více míst v coveru lze dosáhnout obdoby data stripingu použitého pro stejný účel u technologie RAID 0. ➢ Zvýšení bezpečnosti embeddingu: je-li pro specifikaci adres uložení jednotlivých bitů vstupu (v původním pořadí) použit generátor pseudonáhodných čísel, je zpráva v coveru dodatečně chráněna před přečtením třetí stranou, která úspěšně prolomila použitý stegosystém. Jde o implementaci staré myšlenky rozptýleného spektra (původně idea týkající se frekvenčního multiplexu v bezdrátových přenosech). Předpokladem je předání inicializační hodnoty generátoru bezpečnou vnější cestou žádoucímu příjemci. Tento „klíč“ však může být v otevřené formě uložen do coveru jako doprovodná informace k vlastní tajné zprávě. V takovém případě lze rozptylem dosáhnout rovněž zmírnění negativního dopadu poškození části stegogramu: statisticky vzato se ztráta x bitů přítomných v tajné zprávě za sebou promění ve ztrátu jiných x bitů, které jsou v ideálním případě rovnoměrně rozptýleny po celé šíři zprávy. Toto je přirozeně devizou jen v určitých situacích. Např. lze-li vloženou zprávu interpretovat jako větu v přirozeném jazyce, nemusí vadit, když v každém slově věty bude jedno písmeno přeneseno špatně. Naopak je-li zpráva kupříkladu kryptografickým klíčem, pak je lhostejno, které bity jsou znehodnoceny. ➢ Podpoření transparentnosti stegosystému: za předpokladu, že bity zprávy budou do coveru umísťovány přepisováním jeho vlastních bitů, může být vhodná funkce PES parametrizována tak, aby pro daný cover vyhranila pro zprávu takové cílové bity, které budou bitům zprávy v co největším počtu odpovídat. Následující ilustrace používá PES, která vstupním bitům (v původním pořadí) přiřazuje postupně každý n-tý bit coveru (parametr n je však vždy uložen v posledních 3 bitech coveru). vstup: cover:
11011110 10101010 10111010 01001010 10010100 10110111
výstup (n = 2): 11111011 11111110 01001010 10010100 10110010 výstup (n = 3): 10101110 00111010 01001010 10010100 10110011 Podtržení identifikuje změněné bity. Je zřejmé, že parametrizace zvolené funkce PES hodnotou 3 vede ke stegogramu, který je více podobný čistému vzoru než v případě n = 2.
2.3.3 Bit insertion protocols 2.3.3.1 Bit inversion požadavky na PES
➢ Pro každou výstupní dvojici (data, location) platí: ○ položka data má šířku 1 bit; ○ položka location odkazuje na 1 bit, jehož hodnota je negací sdruženého
data bitu. všech výstupních dvojic (data, location) tvoří izomorfismus, přičemž uspořádání α na bitech utajované zprávy je definované: XαY ⇔ X
➢ Množina
19
se nachází ve zprávě před Y. Uspořádání β na adresách bitů coveru: XβY ⇔ X
Invertuj bit odkazovaný složkou location.
dekódování stegogramu
MSG = ““; for x = 1 to délka(COVER) { if (COVER[x] != STEGO[x]) then MSG = MSG ++ STEGO[x]; } return MSG;
2.3.3.2 Bit insertion požadavky na PES
Stejné jako u bit inversion.
algoritmus ( dvojici)
Do coveru na pozici mezi adresami location a (location – 1 bit) injektuj nový bit s hodnotou opačnou, než má bit na adrese location.
dekódování stegogramu
MSG = ““; for x = 1 to délka(COVER) { if (COVER[x] != STEGO[x]) then { MSG = MSG ++ STEGO[x]; vypusť_z_objektu_bitovou_pozici(STEGO, x); } } return MSG;
2.3.3.3 Bit deletion
požadavky na PES
➢ Pro každou výstupní dvojici (data, location) platí: ○ položka data má šířku 1 bit; ○ položka location odkazuje na dvojici (sousedních) bitů, pro které platí, že: ■ mají odlišnou hodnotu; ■ levý bit má stejnou hodnotu, jako data bit. ➢ Množina všech výstupních dvojic (data, location) tvoří izomorfismus,
přičemž uspořádání α na bitech utajované zprávy je definované: XαY ⇔ X se nachází ve zprávě před Y. Uspořádání β na adresách dvojic bitů coveru: XβY ⇔ (adresa levého bitu dvojice X) < (adresa levého bitu dvojice Y). algoritmus ( dvojici)
Vypusť z coveru levý bit dvojice o adrese location.
dekódování stegogramu
MSG = ““; for x = 1 to délka(STEGO) { if (COVER[x + délka(MSG)] != STEGO[x]) then MSG = MSG ++ COVER[x + délka(MSG)]; } return MSG;
20
2.3.3.4 Flag bit
požadavky na PES
➢ Pro každou výstupní dvojici (data, location) platí: ○ položka data má šířku 1 bit; ○ položka location odkazuje na dvojici (sousedních) bitů, pro které platí, že: ■ mají odlišnou hodnotu; ■ pravý bit má stejnou hodnotu, jako data bit. ➢ Množina všech výstupních dvojic (data, location) tvoří izomorfismus,
přičemž uspořádání α na bitech utajované zprávy je definované: XαY ⇔ X se nachází ve zprávě před Y. Uspořádání β na adresách dvojic bitů coveru: XβY ⇔ (adresa levého bitu dvojice X) < (adresa levého bitu dvojice Y). algoritmus ( dvojici)
Invertuj hodnotu levého bitu odkazovaného složkou location.
dekódování stegogramu
MSG = ““; for x = 1 to (délka(COVER) – 1) { if (COVER[x] != STEGO[x]) then MSG = MSG ++ STEGO[x + 1]; } return MSG;
2.3.3.5 Threshold bits ➢ Pro každou výstupní dvojici (data, location) platí: ○ položka data má šířku 1 bit; ○ položka location odkazuje na n-tici (sousedních) bitů (n je sudé přirozené
požadavky na PES
číslo větší než 3, stejné pro všechny výstupní dvojice), pro které platí, že: ■ vyjímaje nejlevější bit obsahují více jedniček, je-li data bit roven 1; ■ vyjímaje nejlevější bit obsahují více nul, je-li data bit roven 0. ➢ Množina všech výstupních dvojic (data, location) tvoří izomorfismus, přičemž uspořádání α na bitech utajované zprávy je definované: XαY ⇔ X se nachází ve zprávě před Y. Uspořádání β na adresách skupin bitů coveru: XβY ⇔ (adresa nejlevějšího bitu dvojice X) < (adresa nejlevějšího bitu dvojice Y).
algoritmus ( dvojici)
Invertuj hodnotu nejlevějšího bitu odkazovaného složkou location.
dekódování stegogramu
MSG = ““; for x = 1 to (délka(COVER) – n + 1) { if (COVER[x] != STEGO[x]) then { if (převažují_1_v_intervalu(x + 1, x + n – 1)) then MSG = MSG ++ '1' else MSG = MSG ++ '0'; } } return MSG;
poznámka
Threshold bits zobecňuje algoritmus flag bit a přidává schopnost opravy variabilního počtu špatně přenesených bitů.
21
2.3.3.6 Direct bit replacement požadavky na PES
Pro každou výstupní dvojici (data, location) platí, že bitový prostor složky data je shodný s bitovým prostorem, který adresuje složka location.
algoritmus ( dvojici)
Prostor coveru adresovaný složkou location nahraď bitovou sekvencí data.
dekódování stegogramu
MSG = ““; while (zpráva_není_celá_extrahována) { MSG = MSG ++ STEGO[adresa_příští_složky_zprávy]; } return MSG;
2.3.3.7 Neighbor parity
požadavky na PES
Pro každou výstupní dvojici (data, location) platí: ➢ položka data má šířku 1 bit; ➢ položka location odkazuje na n-tici (sousedních) bitů (n je přirozené číslo větší než 1, stejné pro všechny výstupní dvojice).
algoritmus ( dvojici)
Je-li bit data roven 0, pak ulož na místo nejlevějšího bitu prostoru adresovaného pomocí location takovou hodnotu, aby ve výsledku celý tento prostor měl sudou paritu. Je-li bit data roven 1, proveď obdobnou úpravu pro dosažení liché parity.
dekódování stegogramu
MSG = ““; while (zpráva_není_celá_extrahována) { if (má_lichou_paritu(adresa_příští_složky_zprávy)) then MSG = MSG ++ '1' else MSG = MSG ++ '0'; } return MSG;
poznámka
Algoritmus neighbor parity dovoluje opravit při dekódování lichý počet přenosových jednobitových chyb na jednu alokovanou n-tici bitů.
2.3.3.8 Komentář Zmíněné protokoly jsou cíleny především na nekomprimovanou rastrovou grafiku. Podrobná diskuze o vkládání zpráv do komprimovaných obrázků nespadá do mezí této práce. V přehledu se dále za atomární jednotku informace považuje 1 bit. Toto není závazné omezení – o algoritmech lze s jistou dávkou abstrakce uvažovat tak, že pracují namísto bitů s pixely či jinými adresovatelnými objekty. Bitové šířky se rovněž v několika případech odchylují od definic v [15]; motivací však bylo jen udržení řádu a princip věci zůstal zachován. Algoritmy bit inversion, bit insertion, bit deletion, flag bit a threshold bits patří do třídy tzv. comparison-based BIP, neboť k dekódování zpráv je třeba znát původní cover, se kterým se přijatý stegogram porovnává. V případech, kdy předchozí sdělení coveru příjemci není možné, přichází v úvahu message bit independent protocols (direct bit replacement a neighbor parity), které potřebu znalosti coveru na straně příjemce eliminují, ovšem je nutné předem dohodnout rozmístění a sled jednotlivých složek zprávy ve stegogramu. V případě, že je rozmístění není určováno generátorem pseudonáhodných čísel (s tajnou inicializační hodnotou), lze se obrátit na některé ze zavedených postupů – např. techniku známou pod zkratkou LSB (Least Significant Bit). Jde o analogii algoritmu direct bit replacement určenou pro rastrové obrázky v prostoru RGB. Bity utajované zprávy jsou umisťovány do coveru lineárně od začátku, ovšem jen do nejméně významných bitů slov, které reprezentují podíl jedné ze tří barev 22
v pixelu. V následující ilustraci je použit rastrový cover, v němž každý bit vypovídá o nějakém pixelu (tj. nejsou obsažena žádná režijní data) a jednotlivé pixely jsou řádek po řádku zastoupeny 24 bity („True Color“), z nichž první bajt reprezentuje podíl červené, druhý podíl zelené a třetí podíl modré složky. zpráva: cover: stegogram:
01101101 10010100 10101001 10010100 10101000
10100100 01110101 10100101 01110101
11101010 01010010 11101011 01010010
| | | |
11001010 10101010 11001010 10101010
01011101 10101000 01011101 10101000
11010101 | 10101011 11010101 | 10101011
Existují rovněž protokoly, které obdobným způsobem angažují ne pouze nejnižší bit barvy, ale několik nejnižších bitů; eventuálně se počet bitů liší v závislosti na konkrétní barevné složce. Stále se však jedná o princip shrnovaný pod zkratku LSB. Dále je nezbytné vzít při volbě BIP v úvahu vnitřní strukturu coveru: je například nemožné aplikovat bit insertion na rastrový obrázek s výše uvedenou digitální reprezentací. Vložení jednoho bitu by mělo za následek bitový posun, který by vzhledově obrázek fundamentálně změnil.
2.4 Rozvaha kapacity rastrového coveru v kontextu LSB LSB je dosti známý protokol. Svádí však k nesprávnému použití, jehož důsledkem jsou nekvalitní stegogramy nápadné lidskému oku. Jak bylo řečeno v první kapitole, cílem stegosystému, jehož výsledky se dostávají do ruky lidskému arbitrovi, je nalézt rovnováhu mezi nenápadností utajené informace a steganografickou kapacitou coveru. Teoretická (maximální) kapacita rastrového coveru, v jehož digitální reprezentaci neexistují režijní data, činí v závislosti na rozměrech coveru zhruba:
50x50 pixelů
200x200 pixelů
800x600 pixelů
8 bitů/pixel
2 KB
39 KB
468 KB
24 bitů/pixel
7 KB
117 KB
1406 KB
8 b/pixel je postačující např. pro černobílou fotografii; 24 b/pixel je formát barevných obrázků používaných v běžné praxi, Internet nevyjímaje. Bude-li pro utajení zprávy vyhrazen 1, resp. 3, resp. 6 bitů šířky pixelu, steganografická kapacita coveru nabude těchto hodnot:
50x50 pixelů
200x200 pixelů
800x600 pixelů
8 b/pixel; 1 b rezervován
312 B
4 KB
58 KB
24 b/pixel; 3 b rezervovány
937 B
14 KB
175 KB
24 b/pixel; 6 b rezervováno
1 KB
29 KB
351 KB
Důvodem, proč protokol LSB ukládá zprávu do nejméně významných bitů čísel, je úzus v uspořádání palety barev v barevných prostorech: dá se očekávat, že vzájemně nejbližší odstíny budou mít minimální rozdíl (tj. 1bitový) ve své číselné reprezentaci. Proto malá změna tohoto čísla 23
vyvolá pravděpodobně malou změnu odstínu, což je žádoucí. K získání přesnější představy o tom, jaký dopad bude mít rezervování daného počtu bitů v pixelu na vzhled pixelu, poslouží formule:
(2rezervovaných bitů – 1) * 100 / 2bitů na pixel [%] 8 b/pixel; 1 b rezervován
0,39 %
24 b/pixel; 3 b rezervovány
0,000042 %
24 b/pixel; 6 b rezervováno
0,00038 %
Výsledkem je maximální embeddingem vyvolatelná změna vzhledu relativně k bitové hloubce. Skutečný dopad bude obvykle menší, neboť některé rezervované bity nebudou v coveru změněny v důsledku hodnotové identity s vkládanými bity zprávy. Přestože dopad šesti bitů na 24b pixel je procentuálně výrazně nižší, než dopad jednoho bitu na 8b pixel, je třeba při interpretaci hodnot uvažovat také barevný prostor, který je v tom kterém případě použit. 8 bitů/pixel se používá například u černobílých obrázků. Na 8 bitech lze zobrazit pouze 256 různých odstínů, ovšem jedná se o odstíny šedi, čili o odstíny vybrané z relativně malého prostoru viditelného spektra. Proto změna hodnoty pixelu o jedničku nemusí být lidským okem vnímána. Naproti tomu běžně používaná 24b RGB paleta (s 8 bity na jednu barevnou složku) má za cíl pokrýt co největší škálu viditelných barev. Nárůst bitové hloubky z 8 na 24 je sice signifikantní, ale nárůst pokryté barevné škály je ještě (nepoměrně) větší. Proto změna 6 bitů (tj. 2 bitů na jednu barevnou složku) může u RGB vést k viditelné změně odstínu. Rozhodující slovo v tom, kolik bitů je na daném barevném prostoru a dané bitové hloubce pixelu ještě únosné rezervovat pro embedding, má empirické pozorování a zkušenost. U klasických 24b RGB bitmap se zdá ještě akceptovatelné rezervovat 6 bitů. Dramatičtější zásah si vyžádá citlivější výběr coveru, bude-li vůbec uskutečnitelný.
2.5 Poznámka ke stegosystémům nad obrázky ve formátu JPEG Do stegosystémů, které produkují stegogramy ve formátu JPEG, obvykle vstupují obrázky formátu JPEG i jako covery. [15] obsahuje (kap. IV/C) ilustrační rozbor opačného postupu, kdy je do nekomprimované bitmapy technikou LSB vložena zpráva, výsledek transformován do JPEG a zpětně dekódován jako bitmapa. Výsledkem je zjištění, že cca polovina nejméně významných bitů v barvy reprezentujících bajtech měla před transformací do JPEG opačnou hodnotu než po transformaci a dekódování. Takový poměr poukazuje na vysloveně nepředvídatelné chování. Zmíněný experiment proběhl rovněž nad ostatními bity v jednotlivých bajtech. S rostoucím řádem bitu se počet odlišných hodnot u zkoumaných obrázků snižoval, neboť změna bitů vyšších řádů by měla za následek výraznou změnu obrázku samotného, což není cílem JPEG transformace. Nicméně až u tří nejvýznamnějších bitů je počet odchylek menší než 10 %. Lze odhadnout, že kdyby byla tedy zpráva do původního bitmapového coveru uložena pomocí těchto tří bitů, bylo by možné při nasazení dodatečné redundance a opravných kódů zajistit akceptovatelnou životnost zprávy při transformaci. Nicméně embedding do takto významných bitů by samozřejmě vedl k dramatickému narušení vzhledu obrázku a došlo by k selhání celého stegosystému. Jmenovaný zdroj následně rozvíjí alternativní přístup k problému, který destruktivní efekt celého procesu zmírňuje, nicméně konečné stanovisko je stále 70% podíl chybných bitů zprávy po transformaci, a to při redundantním uložení každého bitu zprávy pětkrát. Existující steganografické nástroje proto k problému přistupují zcela jinak. Problematika je letmo nastíněna v kap. 5.3.1.1.
24
Kapitola 3:
Textový cover
3.1 Role spamu ve steganografii Již z pojednání o historii steganografie vysvítá, že skrývání tajných informací v textu je idea stará tisíce let. Počítačové zpracování textu trend textové steganografie (v této práci nebude s drobnou újmou na formální exaktnosti rozlišováno mezi lingvistickou a textovou steganografií) přirozeně dále podporuje a přináší nové algoritmy, které staví svoji úspěšnost mj. na dvou aspektech existence textových dat v prostředí Internetu: kvantita/variabilita za hranicí zpracovatelnosti a spam. Masový výskyt textové informace na Internetu je již dávno samozřejmostí a to textu dává image všednosti a nenápadnosti díky jeho rozličným, více či méně představitelným, jazykově či jinak korektním i nekorektním formám. Rozmach spamu v posledních letech ještě přilévá pomyslný olej do ohně. Dle studie prováděné každoročně společností Barracuda Networks (http://www.barracudanetworks.com/) se spam na celkovém objemu doručených mailů v roce 2007 podílel 90-95 %. Neutuchající tok sebepodivnějších textových zpráv do všech e-mailových schránek světa je přehlíženým stereotypem moderní doby. Spam se tak stává ideálním coverem pro maskování stegogramů, u nichž vůbec není třeba výrazně dbát na gramatickou nebo jakoukoli jinou korektnost. Již není reálné, že pomyslný arbitr steganograficky realizované komunikace díky vlastnoruční inspekci veškeré pošty monitorovaných jednotlivců pojme podezření u jednoho specifického kusu textu. Na specifický kus textu jej musí explicitně upozornit nějaký automatizovaný mechanismus; tento má však ze své strojové podstaty dramaticky omezené možnosti při zpracování textu (obzvl. v přirozeném jazyce). Často je navíc nutné, aby takový automatický detektor pracoval v reálném čase, což dnes na poštovním uzlu střední velikosti může představovat inspekci desítek mailů za sekundu. Spam jistě není jediný prostředek uplatnění algoritmů popsaných dále. V textové steganografii je však tak mocným nástrojem, že se vůči němu celosvětově vytvářené algoritmy někdy přímo vyhraňují (nezřídka se o spamu mluví přímo jako o samostatném coveru v oboru lingvistické steganografie). Tohoto racionálně podloženého zvyku se bude držet i tato práce: za předpokládaného útočníka na stegosystémy se bude obvykle mlčky považovat stroj (a nikoli apriori člověk). O reálných schopnostech standardního anti-spamového nástroje rozpoznávat steganografický spam blíže vypoví experiment reportovaný v páté kapitole.
3.2 Obecná klasifikace algoritmů textové steganografie Ucelený náhled na rozlišující specifika jednotlivých steganografických přístupů v oboru textové steganografie poskytuje např. [16]. Zde uvedený přehled se z valné části drží terminologie tohoto pramene, v některých bodech však bude jazykovědná korektnost obětována ve prospěch odbourání detailů podružných pro tuto práci. Dle původu textu obsaženého ve výsledném stegogramu lze identifikovat následující skupiny steganografických algoritmů. ➢ Metody měnící formátování existujícího textu (format-based): vstupem do stegosystému je konkrétní hotový text, který je modifikován tak, že v něm úpravy nejsou patrné. Úpravami jsou vesměs chytré triky vynalezené v dávných dobách steganografie, neboť upravit (ev. s úpravami přepsat) existující text v jistých mezích šlo vždy. Jde například o změnu velikosti písma ve vybraných partiích textu, občasnou změnu barvy písma či fontu, zvětšování mezer mezi slovy či řádky, vnášení záměrných překlepů nebo netisknutelných znaků. Obratná kombinace 25
těchto praktik může být použita k zakódování tajné zprávy do coveru. Algoritmy v této kategorii jsou z principu věci primitivní a nestejnorodé, nebude jim proto věnována širší pozornost. Detekovatelnost a kapacita stegogramů s upraveným formátováním je rovněž obecně nedefinovatelná a závisí plně na obezřetnosti tvůrce stegogramu a odhadu schopností případného útočníka na stegosystém. ➢ Metody generující nový stegogram na základě zdrojového textu a/nebo slovníku: slovníkem se v tomto kontextu rozumí prostý seznam znakových řetězců (i víceslovných), zvaných obecně slova, z nichž se skládají složitější výpovědi v některém jazyce (jednotlivá slova ve slovníku mohou být dále ohodnocena – např. určením slovního druhu u češtiny –, pak se jedná o typovaný slovník). Tato druhá třída je zdaleka nejbohatší; zahrnuje řadu důkladně prostudovaných algoritmů, které kombinují poznatky z teorie informace, statistiky a typicky lingvistiky. Podrobněji o této kategorii pojednají následující podkapitoly. ➢ Metody generující nový stegogram bez použití zdrojového textu či slovníku: pakliže není dostupný žádný zdroj slov přirozeného jazyka, nezbývá, než triviálně překódovat bity tajné zprávy do podoby znaků. Výsledek bude vyhlížet jako náhodný řetězec bez jakékoli struktury. Je otázkou, zda lze o této prosté binární reinterpretaci vůbec hovořit jako o steganografii. Těmto metodám nebude nadále věnována pozornost. Jak bylo řečeno, v mezích druhé kategorie bylo odvedeno nejvíce tvůrčí práce. Stegogramy v takových případech samozřejmě představují obvykle texty v nějakém přirozeném jazyce. Jednotlivé algoritmy se předhánějí (a výrazně liší) v tom, jak věrohodně dokáží přirozeně znějící text strojovou syntézou imitovat. Lingvistika u textu identifikuje čtyři stupně korektnosti (intuitivní demonstrace pomocí příkladů; inspirováno anglickým materiálem). 1. Lexikálně korektní text: „tady náhrada novota zašpiněnými na bez krocích dát doufejme neřekla“ (Lze rozpoznat podřetězce, které jsou nezávisle na sobě platnými slovy v jazyce.) 2. Syntakticky korektní text: „Neměli ale studny se studnou, že přítulnost se zaměřuje na tři zhoubné průzkumy.“ (Gramaticky správný nesmysl.) 3. Sémanticky korektní text: „A vlk ji spolknul! Ale Karkulka se vydala s košíkem plným buchet za babičkou. Vlk řekl: „Abych tě lépe viděla.“ A v tom někdo zaťukal na dveře. Karkulka se s maminkou rozloučila a babička se zrovna chystala jít po obědě spát. Ale kdež... Karkulka v lese potkala vlka.“ (Téměř autentická výpověď, chybí jí však složitější logické souvislosti jako kauzalita, zápletka s vyústěním atp.) 4. Rétoricky korektní text: „Karkulka se rozloučila s maminkou a vydala se s košíkem plným buchet za babičkou. Cestou lesem potkala vlka. Když se s ním rozloučila, vlk odběhl napřed a spolknul babičku, která se právě chystala jít po obědě spát. Později k babiččinu domu dorazila i Karkulka a zaťukala na dveře.“ Skutečně lidsky se viditelně vyjadřuje až rétoricky korektní text. Generovat jej automaticky při rozumně vysoké steganografické kapacitě je stále nad síly dnešních stegosystémů. Nicméně absolutní rétorická korektnost nemusí být zcela nutná. Za předpokladu, že útočníkem na textový stegosystém bude opět stroj s analogicky omezenými schopnostmi na poli zpracování přirozené řeči, stačí vygenerovat text s určitými jednoduššími, vytipovanými vlastnostmi. Typicky se jedná o statisticky vyčíslitelné vlastnosti, např. rozložení počtů výskytů jednotlivých písmen abecedy v celém textu, počet sloves ve větách apod. Systémy textové stegoanalýzy (stejně jako obecné anti-spamové systémy) totiž často klasifikují texty na základě vyhodnocení jistých statistických ukazatelů.
3.3 Kódová kniha Ideu kódové knihy zná kryptografie již po staletí. Jde o prostou překladovou tabulku, která (ve vší obecnosti) binárním řetězcům přiřazuje jedno nebo více slov z předem určeného slovníku. Přitom musí platit, že takto definované kódování je dopředně i inverzně prefixové, aby byla 26
zajištěna jednoznačnost překladu i dekódování. Vstupní utajovaná zpráva se kóduje tak, že se v jejím binárním zápisu rozpoznají podřetězce nacházející se v knize a každý tento podřetězec se nahradí jedním ze slovních přepisů, které kniha předepisuje. Dekódování probíhá obdobně, ale kniha se čte opačným směrem. Aby bylo možné kódovou knihu přiznat jako (slovníkový) steganografický postup, nesměl by výsledný text vzbuzovat pozornost případného útočníka. V obecném případě uživatel takovéhoto stegosystému potřebuje kódovat zprávy libovolného tvaru, a tedy není schopen přizpůsobit knihu možným vstupům. Jsou-li pak všechna slova ve slovníku náhodně uspořádána a rozptýlena rovnoměrně mezi jednotlivá přiřazovací pravidla knihy (kterých bude podstatně méně než slov ve slovníku), produkuje stegosystém text připomínající několik náhodně vybraných slov ze slovníku. Upraví-li následně stegosystém výstup tak, aby vypadal jako věty (občasná redundantní interpunkce a velká písmena na začátcích „vět“), bude nejlepší očekávatelný výsledek podobný tomuto textu (použit základní anglický slovník z distribuce unixové knihovny cracklib pro rozpoznávání slabých hesel – http://www.sourceforge.net/projects/cracklib/): Consenter bothered large shutdown's, posture, predatory hookworm divergent bookshelf's belched. Seminole bumper - dawning suspended libretto - granulate southern co, infirm touchily figured cloves, cooperatively hong pipelines. Mailer silvering. Beckoning shotguns stern husks ciceronian beholder. Predominates adoption, billing baffin protrudes expanding hollerith. Je evidentní, že taková zpráva bude člověku podezřelá na první pohled. Kontrolnímu programu by mohla uniknout v případě, že tento bude zkoumat pouze lexikální korektnost textu a použitý slovník bude dostatečně veliký (slova se tedy budou zřídka opakovat). Do této skupiny lze přiznat primitivní statistické anti-spamové filtry, které zkoumají frekvenci písmen či slov (bez zkoumání jejich významu) a porovnávají ji s předdefinovaným modelem závadného, resp. čistého textu.
3.4 Text mimicking Co se týče samotného úkolu skrýt informaci pomocí textu, plní jej kódová kniha uspokojivě. Zbývá vyřešit chybějící syntaktickou a sémantickou strukturu produkovaných vět. Bylo by vhodné, kdyby algoritmus bral v úvahu slova, která již byla na výstup vyprodukována, a podle nich pokračoval v rozpracované větě tak, aby dávala smysl i na vyšších úrovních než pouze lexikální. Wayner v [17] přišel s nápadem, jak tohoto cíle zhruba dosáhnout, aniž by bylo zapotřebí něco jako absolutní formální gramatika češtiny či angličtiny, podle které by bylo možné rozhodovat, jaká slova lze vůbec na konec stávající načaté věty připojit, aby byl výsledek alespoň syntakticky korektní. Svou metodu nazval text mimicking. Waynerův algoritmus následuje ideu sekvenčního čtení vstupní zprávy i lineární produkce výstupu. Sestupuje však ze slov, coby elementárních složek věty, na jednotlivé znaky a nerozpoznává v textu ani věty či jinou vyšší strukturu. Jak rozpracovaný text, který byl prozatím poslán na výstup, doplnit tak, aby celek dával smysl, se tedy nerozhoduje podle již vyprodukovaných slov, ale podle n-1 posledních znaků dosavadního výstupního torza. Konstanta n se nazývá řád. Algoritmus produkuje na výstup jeden znak za druhým – v každém kroku je konzultováno n-1 posledních znaků na výstupu, jeden či více bitů vstupní zprávy, převodní tabulka (jakási obdoba kódové knihy) a je vyprodukován jeden další znak. Právě převodní tabulka určí, jaký konkrétní znak na výstup připojit pro daný (n-1)-písmenný sufix výstupu a dané bity na vstupu. Tabulka je zkonstruována předem na základě libovolného textu (nazvěme jej definující text). Algoritmus se pak bude snažit tento text při produkci stegogramů napodobovat (definující text bude tedy vzat za vzor toho, co je „korektní“). Tabulka řádu n obsahuje všechny n-znakové podřetězce v definujícím textu seskupené podle prvních (n-1) znaků podřetězců. Všechny řetězce v jedné skupině mají tedy stejný (n-1)-znakový prefix a liší se posledním znakem. 27
Ke každé skupině je pak v tabulce přiřazen Huffmanův strom (konstrukce popsána např. v [18]), který kóduje všechny řetězce přítomné ve skupině (při uvážení násobnosti stejných řetězců) do binární abecedy. Pro účel Waynerova algoritmu je podstatné, že Huffmanův algoritmus prefixově zakóduje jednotlivé (unikátní) řetězce ve skupině do binární abecedy tak, že řetězec s vícenásobným výskytem je kódován pomocí delšího binárního kódového slova než řetězec s méně četným výskytem. Příklad výsledku Huffmanova kódování ve fiktivní skupině může vypadat takto (n = 4): pově poví povo pová
0 10 111 110
V ilustrovaném případě se v definičním textu vyskytoval podřetězec „pově“ více nebo stejně často jako podřetězec „poví,“ který se vyskytoval více nebo stejně často jako řetězce „povo“ a „pová“. Nyní lze přesněji naznačit plný průběh Waynerova algoritmu. 1. Výstup libovolná vhodná n-tice znaků z převodní tabulky (inicializace). 2. Dokud jsou data na vstupu: i. přečti posledních n-1 znaků z výstupu a vyhledej v tabulce skupinu, jejíž řetězce mají tuto sekvenci jako prefix; ii. Huffmanovým algoritmem rozkóduj (tj. převod binárních kódových slov na řetězce) kódové slovo na vstupu; iii. z takto získaného podřetězce ve skupině extrahuj poslední písmeno; iv. připoj toto písmeno na výstup. K dekódování stegogramu vzniklého tímto postupem je samozřejmě třeba mít k dispozici definující text, potažmo převodní tabulku. 1. Dokud není stegogram celý přečten: i. přejdi ve vstupním proudu (přijatý stegogram) na následující znak (při prvním průchodu tento bod přeskočí první znak, který byl do stegogramu zavlečen při inicializaci a nenese informaci); ii. nahlédni dopředu na n znaků stegogramu; iii. převeď je pomocí tabulky na binární řetězec; iv. tento řetězec připoj k výsledné (dekódované) zprávě. Stranou zůstávají patologické scénáře, které by se ve speciálních případech mohly vyskytnout (detaily poskytne [17]). Největší komplikací by byla situace, kdy po vygenerování převodní tabulky bude v této figurovat skupina s jediným řetězcem (či více identickými řetězci). Řešením by mohlo být vždy vzít tento řetězec v úvahu, ale nečíst žádné bity ze vstupu, anebo kupříkladu uměle injektovat vhodný řetězec do postižené skupiny. Tento dodatečný řetězec by se od toho původního lišil v posledním znaku. Toto však zavádí nutnost prověřit, zda posledních n-1 znaků uměle vloženého řetězce je v tabulce platným prefixem, aby bylo možné na něj při generování stegogramu případně navázat. Je zřejmé, že kvalita stegogramů produkovaných mimickingem je přímo úměrná velikosti n a objemu a různorodosti definujícího textu. Malé n bude mít za následek paměťově nenáročnou tabulku, která bude rychle vygenerována (malý počet průchodů Huffmanovým algoritmem), ale produkované stegogramy nebudou možná obsahovat ani rozpoznatelná slova. Velké n ve spojení s útlým a/nebo monotónním definujícím textem může zapříčinit nutnost dotvářet degenerovanou tabulku, jak bylo popsáno v předchozím odstavci. To by mohlo vést k zavlečení další lexikální nekorektnosti. [17] (str. 83-85) uvádí příklady výstupu Waynerova algoritmu. Definujícím textem byla kapitola z odborné knihy. Stegogram prvního řádu potom může vypadat takto: 28
islhne[hry saeeooisnre uo ‘w nala al coehhs pebl e to agboean ce ed cshcenapch nt sibPah ea m n [tmsteoia lahid egnndl y et r yf arleo awe l eo rttnntnnhtohwiseoa a dri 6oc7teit2t… Stegogram pátého řádu: The letter compression or video is only to generate a verbatim> followed by 12 whiter ‘H’ wouldn’t design a perfective reconomic data. This to simple hardware. These worked with encodes of… Lze konstatovat, že mimicking je schopen produkce stegogramů, které nevzbudí podezření u člověka při letmém pohledu a u stroje provádějícího kontrolu lexikální a syntaktické korektnosti s jistou tolerancí na chyby.
3.5 Nasazení bezkontextových gramatik Peter Wayner ve své knize rozvíjí úsilí napodobovat syntakticky korektní text v přirozeném jazyce ještě druhým směrem, který se zdá přirozenější pro lidské chápání jazyka a původu korektních výpovědí, které v něm vznikají. Znalosti, které člověk nabude během základní a střední školy, jej učí jako pojítko mezi lexikální a syntaktickou úrovní věty vnímat gramatiku (či jisté její partie). Gramatika anglického jazyka říká, že věty „The food delicious.“ a „Talk don't to me.“ nejsou správně zformulované. V jazykové učebnici pro začátečníky kupříkladu najdeme zjednodušený výňatek z gramatiky, který se vyjadřuje ke správnému užívání „to be“ v roli spony (copula):
is <podstatné jméno/přídavné jméno/zájmeno>. Na základě této znalosti mluvčí ví, že adekvátní větou je „The food is delicious.“ a nikoli „The food delicious.“ ani „The food delicious is.“ Kdyby existoval úplný seznam slov či sousloví, které se mohou v uvedené formuli vyskytnout na pozici , resp. <podstatné jméno/přídavné jméno/zájmeno>, bylo by možné automatizovaně vytvářet syntakticky korektní věty v angličtině. Jednotlivým přípustným kombinacím sousloví na obou pozicích by pak byla přiřazena nějaká unikátní bitová hodnota. Pokud by pak stegosystém řídící se touto šablonou vyprodukoval právě jednu specifickou větu se sponou „to be,“ znamenalo by to steganografické ukrytí té bitové informace, která vyprodukované větě byla přiřazena, do textové podoby. Šlo by o textovou steganografickou metodu s typovaným slovníkem bez zdrojového (definujícího) textu. Přední nedostatek takové praktiky je zřejmý: stegogramy složené z více vět by měly k přirozenému vzhledu daleko (rozhodování o správných tvarech zájmen a o členech je zvládnuto jiným, nepopsaným způsobem): Information is useful. William Shakespeare is futile. Shirt is me. Father is them. Bio power is the director. Bylo by vhodné mít k dispozici více šablon na tvorbu korektních anglických vět. Všechny šablony by obsahovaly proměnné, na jejichž pozice by se dosazovala slova určitého typu z typovaného slovníku. Každé kombinaci zvolených slov do šablony by byla přiřazena bitová hodnota reprezentující utajovanou informaci. Bodem úrazu při automatizované realizaci takového nápadu je pochopitelně:
29
➢ složitost gramatik přirozených jazyků (hraničící s nemožností jejich formální reprezentace
formou počítačového programu);
➢ akumulace všech slov jazyka v jednom slovníku (pro účely stegosystému by bylo možné
omezit se na menší, rozumně početný korpus s jistou barvitostí, který pravděpodobně pro angličtinu i češtinu již existuje); ➢ otypování slov ve slovníku.
Typování skýtá více potíží, než může být na první pohled zřejmé. Jistě bude v jazyce existovat slovo X (přesněji řečeno: velký počet takových), které se dá použít ve většině relevantních větných šablon na pozici, řekněme, podstatného jména, ale bude existovat jistý počet šablon, kam bude možné dosadit všechna jiná podstatná jména, ale ne slovo X. Už v případě, kdy je šablon okolo desítky, to může způsobovat vznik typů šitých na míru takřka každé větné šabloně zvlášť. Podrobněji je tento jev viditelný v nadcházejících příkladech. Přes zmíněná úskalí existují teoretické i do praxe dovedené modely – výseky z gramatik – určené pro automatické generování syntakticky korektního textu, které se používají v textových stegosystémech. Některé tuto metu překračují a ještě detailnějším typováním a důkladnější selekcí slov ze slovníku se pokouší přiblížit i sémantické korektnosti. K formálnímu zachycení šablon se typicky používají bezkontextové gramatiky (CFG). Jak bylo řečeno úvodem, autorem tohoto nápadu je Peter Wayner; na jeho práci navazuje [19], který představuje komplexní steganografický systém NICETEXT (http://www.nicetext.com/) používající typovaného slovníku v kombinaci s CFG a volitelně i zdrojového textu. Vzhledem k tomu, že tento systém v sobě akumuluje všechny ideje, které má tato práce za cíl popsat, bude nadále použit za modelový při podrobnějším výkladu.
3.5.1 NICETEXT V nejjednodušším případě (netypovaný slovník, žádná modelující CFG) funguje NICETEXT jako kódová kniha. Zajímavé výstupy systém začíná produkovat v momentě, kdy uživatel předloží typovaný slovník a definici větných šablon, které NICETEXT nazývá sentence model (větný vzor). Celkový vzhled výstupního textu (následnost jednotlivých větných vzorů a jejich konkrétní vzhled) pak definuje style source (styl), který může být formálně popsán např. právě bezkontextovou gramatikou. Souvislost mezi utajovanou zprávou, slovníkem, větným vzorem a výstupním stegogramem ilustruje následující příklad. Typovaný slovník (význam bitových reprezentací je obdobný jako u kódové knihy): photosop : software ⇔ 0 adoobe acrebat : software ⇔ 1 download : action ⇔ 0 buy : action ⇔ 1 for free : price ⇔ 0 for 1 dollar : price ⇔ 1 and : connective ⇔ (nenese žádnou informaci) Několik větných vzorů: 1. {Cap} software price {.} 2. {Cap} action {Cap} software {!} 3. {Cap} action {Cap} software connective {Cap} software {CAPSLOCKON} price {capslockoff} {!} Příklady stegogramů dle jednotlivých větných vzorů (utajovaná zpráva: 0110): 1. „Photosop for 1 dollar. Adoobe acrebat for free.“ 2. „Download Adoobe acrebat! Buy Photosop!“ 3. „Download Adoobe acrebat and Adoobe acrebat FOR FREE!“
30
K ošetření možných patologických stavů, jako je např. nekompatibilní délka utajované zprávy a bitová kapacita větného vzoru, zde nebude přihlíženo – o některých se obšírněji vyslovuje [19] v průběhu výkladu. Výše modelovaný slovník definuje 7 slov o celkem 4 typech. Větný vzor může obsahovat pouze odvolání na typ nebo direktivu. Výskyt typu vyvolá vyhledání slova ve slovníku v závislosti na bitu (bitech) na vstupu (v tajné zprávě) a jeho výstup do stegogramu. Direktivy jsou označené složenými závorkami, jejich úplný výčet je v systému předdefinován včetně jejich účinku na výstup. Popis direktiv zde bude vynechán; jejich poslání je zřejmé. Dekódování stegogramu (v systému NICETEXT nazváno „scrambling“) je opět možné pouze pomocí původního slovníku; definice stylu zapotřebí není. Dekódovací algoritmus je tím prakticky identický s dekódováním u kódové knihy. Pro zachování jednoznačnosti při ukrývání a dekódování musí platit: ➢ název žádného slovníkového typu nesmí být prefixem názvu žádného jiného typu; ➢ v rámci jednoho slovníkového typu musí být zobrazení slov na bitové řetězce prefixovým kódem; ➢ vyskytuje-li se slovo ve slovníku vícekrát, musí být vždy mapováno na stejný bitový řetězec; ➢ slovník neobsahuje slova „.“, „!“ a další taková, která mohou být produkována direktivami. Tyto podmínky navíc nesmí být závislé na velikosti písmen u slov ve slovníku. Díky direktivám ve větných vzorech se totiž jedno slovo ze slovníku může ve stegogramu vyskytovat v různých variacích velikosti písmen, což nesmí dekodér ovlivnit. A konečně, dekódování ignoruje bílé znaky ve stegogramu (nejedná-li se o integrální součást některého slova ze slovníku). Klíčem ke snadné škálovatelnosti a rozmanitosti výstupů, které systém jako NICETEXT může produkovat, je na první pohled zanedbatelná samozřejmost: vstupní tajná zpráva nijak neomezuje volbu stylu, potažmo volbu konkrétních větných vzorů v rámci stylu – utajená bitová hodnota, kterou výstup ponese, je vázána na slovník. Styl definující bezkontextová gramatika, na níž bude záviset kvalita produkovaných stegogramů, může tím pádem vrhnout veškeré úsilí na dosažení syntaktické či vyšší korektnosti. CFG v NICETEXTu neslouží ke generování vět, ale větných vzorů. Terminály gramatiky jsou tedy slovníkové typy a direktivy. Každé odvozovací pravidlo je navíc ohodnoceno kladným číslem (váha), které ovlivňuje pravděpodobnost, s jakou dané pravidlo bude při odvozování větného vzoru uplatněno při expanzi příslušného levostranného neterminálu. Příklad CFG používající slovník z předchozího příkladu: (a) SPAM : {Cap} SOFTWARE_LIST price {.} (b) | {Cap} action SOFTWARE_LIST {CAPSLOCKON} price {capslockoff} {!} ; (c) SOFTWARE_LIST : {Cap} software (d) | {Cap} software connective SOFTWARE_LIST ;
@ 50 @ 50 @2 @1
Vstupní neterminál je uveden jako první. Všechny neterminály jsou jednotně psány velkými písmeny; každé pravidlo je uvedeno na vlastním řádku. Váha pravidla je uvedena na jeho konci za znakem @. Neterminál SPAM bude tedy expandován dle pravidla (a) se stejnou pravděpodobností, jako dle pravidla (b). Neterminál SOFTWARE_LIST bude expandován dle pravidla (c) s dvojnásobnou pravděpodobností oproti pravidlu (d). Uvedená CFG generuje obdobné větné vzory, jako jsou uvedeny v prvním příkladu této stati. NICETEXT při tvorbě stegogramu opakovaně expanduje vstupní terminál tak dlouho, dokud bitová kapacita doposud vyprodukovaných větných vzorů nestačí na ukrytí celé zprávy.
31
3.5.2 Kvalitativní ohledy Předními činiteli v kvalitě výstupních textů stegosystému typu NICETEXT je slovník a CFG. Od stegogramů se bude typicky očekávat barvité vyjadřování a nerepetitivnost, obzvláště při násobném volání systému. Pro dosažení tohoto cíle je nutné specifikovat dostatečně rozsáhlý slovník a bohatou CFG. [19] na str. 9 uvádí, že „dostatečně rozsáhlý“ slovník obsahuje minimálně 150000 slov roztříděných do 350 kategorií. Ruční sestavení takové struktury, nemluvě o příslušné CFG, je takřka nerealizovatelný úkol. V kap. 3 [19] popisuje způsob, jak vytvořit typovaný slovník ze slov libovolného textu automatizovaně. Dále přináší vlastní nástroj genmodel (dokumentován v kap. 4.3), který za použití typů v takto vytvořeném slovníku extrahuje větné vzory všech vět z příslušného definujícího textu. Dále tyto větné vzory sjednotí do podoby CFG, berouc přitom v úvahu frekvenci výskytu jednotlivých větných vzorů, což se promítne do vah pravidel ve výsledné gramatice. Stegogramy postavené na takto vzniklých strukturách, podobně jako Waynerův původní mimicking, napodobují vyjadřování a spisovatelský styl definujícího textu. Krokem vpřed je absolutní lexikální korektnost; syntaktická korektnost však stále není zcela zajištěna (mj. v důsledku nedostatečně jemného typování). [19] na str. 48 prezentuje výstup z NICETEXTu (citován níže) používající struktury automaticky vygenerované z inauguračního proslovu J. F. Kennedyho (přepis s odlišnou interpunkcí: [20]). Ten obsahuje zhruba 1400 slov, generovaný slovník obsahoval 513 unikátních slov tříděných do 333 typů; CFG generovala celkem 56 různých větných vzorů. My area origins of the suspicion... oppose much what America will be before you, before what asunder we would be for the Poverty inside Man. Yet will it do almighty off the first two south votes... or on the course at this administration, whether even deadly off our suspicion by this peace. To those young votes what proud nor alike origins we comfort: we house the heritage past hostile americans. As this colonial testimony past hope cannot strenghten the sign at proud powers. Takový text nezní příliš uspokojivě; rozmanitost slovníku a CFG je kriticky nízká, definující text krátký. Věrnější imitace NICETEXT dosáhl za použití [21], který je podstatně rozsáhlejší. Výstupy založené na takovém vzoru nutně nesou stopy shakespearovského vyjadřování, takže jejich možnosti praktického použití jsou omezené, nicméně v doméně spamu by taková svéráznost mohla být přínosem. [19], str. 65: Not before the buttock, fair fathom, by my will. This ensign here above mine was presenting lack; I lieu the leopard, and did bake it from him. Him reap upon, the taste boyish. Captain me, Margaret; pavilion me, sweet son. At thy service. Stories, away. Stejný zdroj cituje i další produkty NICETEXTu, založené na několika dalších definujících textech. Kvalita zůstává srovnatelná. Je pravděpodobné, že od doby vytvoření systému NICETEXT vznikly sofistikovanější metody na automatickou syntézu slovníků a bylo by tedy možné NICETEXT pro takové metody adaptovat a získávat pohlednější výstupy. Nicméně faktem zůstává, že automatizované metody pravděpodobně dlouho nedosáhnou na schopnosti ručně naladěných slovníků a gramatik. Kompromisem mezi obtížností jejich ručního sestavování a kvalitou výstupu může být steganografická kapacita: dosadí-li autor do slovníku celé kusy vět či věty (které budou ohodnoceny stále stejně malou bitovou valencí), může být dosažení syntaktické (a do jisté míry i sémantické) korektnosti snadné bez velkého úsilí. To vše na úkor objemnosti stegogramů. Příkladem za všechny nechť slouží systém Spammimic (http://www.spammimic.com/), který nepoužívá NICETEXT, ale vlastní implementaci Waynerovy ideje angažující CFG. Výstupní stegogramy mají být co nejvíce podobné spamu a nutno uznat, že tento úkol systém plní výtečně. Kromě lexikální, syntaktické a sémantické korektnosti jeví silné známky rétorické korektnosti. Stegogram ukrývající zprávu „ahoj svete“: 32
„Dear Professional , Your email address has been submitted to us indicating your interest in our briefing . We will comply with all removal requests ! This mail is being sent in compliance with Senate bill 2716 , Title 3 , Section 305 ! This is not a get rich scheme . Why work for somebody else when you can become rich in 53 DAYS ! Have you ever noticed people are much more likely to BUY with a credit card than cash plus people will do almost anything to avoid mailing their bills ! Well, now is your chance to capitalize on this . We will help you decrease perceived waiting time by 160% & SELL MORE ! You can begin at absolutely no cost to you ! But don't believe us ! Mr Simpson of Maryland tried us and says "I was skeptical but it worked for me" . We assure you that we operate within all applicable laws ! We implore you - act now ! Sign up a friend and you get half off . Thanks . “ Kromě avizované obsáhlosti výstupu systém trpí repetitivností (napříč různými stegogramy i v rámci jednoho stegogramu, je-li objemnější) a autorovým zákazem volání webového rozhraní automatizovaně z programů.
33
Kapitola 4:
Ostatní covery
4.1 Steganografické souborové systémy 4.1.1 Princip Dosavadní kapitoly se zabývaly steganografickými covery, které si lze snadno představit ve formě souboru (jakožto obvyklého nosiče digitálních dat v PC) a které může většina uživatelů počítače snadno prozkoumat (obrázky, text, audio). Následující stati vysvětlují, jak se dá pro utajení dat v počítači (tedy nikoli při přenosu) využít souborového systému (FS) – struktury, která je fyzicky uložena na datovém nosiči a organizuje prostor na něm tak, aby uživatel počítače mohl vůbec pracovat se soubory a adresáři a byl odstíněn od takových problémů, jako je rozmísťování ukládaných dat (bitově) na nosiči, udržování přehledu o tom, na kterých prostorách na nosiči nejsou uložena žádná uživatelská data atd. V konečném důsledku bude tedy steganografickým FS taková struktura, která bude tajná data ukrývat mimo viditelný souborový systém, tj. vně viditelných souborů a adresářů (v prostoru, který FS chápe jako volné místo na nosiči), mimo dosah uživatele počítače i (v jistém slova smyslu) operačního systému. Je pouze implementační záležitostí, zda budou tajná data taktéž organizována v souborech a souborovém systému, či jiné, jednodušší struktuře. Známé existující systémy se však drží organizace dat do souborů; ve zbývajícím textu bude proto tato filozofie automaticky upřednostňována. Faktem zůstává, že k médiu lze přistupovat nejen skrze FS, který je na něm pro pohodlí uživatele zaveden jako nadstavba, ale také bezprostředně coby k sekvenci bitů, přičemž jsou viditelné celé souborové systémy i veškerá data mimo ně. Takto podrobnému zkoumání by tajná data pouze uložená ve „volném“ místě neunikla. Do utajovacího procesu se proto zapojuje kryptografie. Šifrování dat na úrovni souborového systému (tj. šifrování nejen uživatelských dat, ale i režijních struktur souborového systému) dnes již není díky uživatelsky přívětivým nástrojům jako TrueCrypt (http://www.truecrypt.org/) tabu ani mezi technicky neerudovanými uživateli PC. Libovolná silná symetrická šifra zajistí, že bez znalosti správného klíče není možno FS přečíst, ani když nepovolaná osoba získá datový nosič. Tento invariant může být postačující, ovšem důvěrnost dat uložených v takovémto kryptografickém FS je prokazatelná pouze matematicky. Jinými slovy: takto uchovaná data jsou chráněna kryptograficky, ale ne steganograficky. V praxi totiž může být vlastník klíče donucen tento proti vlastní vůli sdělit (např. při vyšetřování trestného činu, před soudem, vydíráním či mučením). Popřít samotnou existenci šifrovaných dat je obecně nemožné, neboť při pohledu na FS jakožto na sekvenci bitů na médiu vypadá standardní FS nápadně odlišně od šifrovaného FS, který se navenek přímo snaží jevit jako náhodný proud bitů bez struktury. Návrh steganografického souborového systému byl motivován právě absencí možnosti věrohodně popřít existenci ukrytých šifrovaných dat (plausible deniability – věrohodná popiratelnost). Principy a požadavky na takový systém poprvé přednesl [22]. Pro dosažení věrohodné popiratelnosti je v základu nutné splnit tři předpoklady. ➢ Celý šifrovaný steganografický FS je uložen (ať už v souvislém bloku či rozptýlených fragmentech) na takovém místě na nosiči, kde nepůsobí výjimečně. Tj. tam, kde už se vyskytuje jiný, dostatečně rozsáhlý blok náhodně vyhlížejících dat, která nejsou tajná. ➢ Na nosiči existuje druhý kryptografický FS s daty, která budí dojem, že je vlastník může chtít skrývat, ale jejich prozrazení vlastníkovi ve skutečnosti nezpůsobí žádnou škodu. Pokud například státem pověřený znalec podrobnou analýzou zjistí, že na disku se nachází 34
šifrovaná data, soud může vlastníku disku přikázat sdělení šifrovacího klíče. Vlastník sdělí klíč k zdánlivě citlivým datům a data skutečně citlivá zůstávají neodhalena. ➢ Z nosiče nesmí být znát, kolik tajných šifrovaných dat (nehledě na to, v kolika oddělených šifrovaných FS jsou organizována) obsahuje. Jinak řečeno: co z náhodně vyhlížejícího binárního kvanta jsou tajná šifrovaná data a co jsou zveřejnitelná šifrovaná data (nebo rovnou náhodné bity beze smyslu). Této vlastnosti různé implementace steganografických FS dosahují různými způsoby (viz dále).
4.1.2 Implementace Steganografické FS nepatří do středu zájmu této práce, náhled do metod implementace bude tedy omezen na představení zastaralého, ale ilustrativního linuxového steganografického FS StegFS. Hodnota tohoto projektu (http://www.mcdonald.org.uk/StegFS/, http://stegfs.sourceforge.net/) spočívá především v pionýrském úsilí implementovat steganografický FS; do stavu bez známých (fundamentálních) chyb nebyl nikdy dotažen a již léta není vyvíjen. Poslední vývojářská verze (1.1.4) podporuje pouze linuxovou řadu 2.2. StegFS zavádí následně opakovaně napodobovaný koncept jaderného modulu. Ten do systému přináší podporu dalšího typu FS (stegfs), který je kompatibilní s diskovými oddíly standardního (tehdy) typu ext2. Používání ext2 oddílu v režimu stegfs s sebou nese tyto změny. ➢ Mazání souborů je destruktivní. Ve standardním ext2 je při mazání pouze odstraněn záznam pro soubor z adresáře; vlastní souborová data na disku zůstávají a stávají se volným místem. V režimu stegfs jsou souborová data navíc přepsána náhodnými bity. V důsledku toho pak veškeré volné místo na diskovém oddíle vyhlíží jako náhodná (nebo komprimovaná, nebo šifrovaná, …) data. ➢ Dedikovanou utilitou lze po zadání hesla zpřístupnit utajené soubory, jejichž obsah je fyzicky rozptýlen ve „volném prostoru“ viditelné části FS. Na určitém místě na disku se nachází (šifrovaná) indexová struktura obsahující seznam diskových bloků s utajenými soubory. Umístění této struktury je jednoznačně odvozeno z hesla. Věrohodné popiratelnosti uživatel dosáhne zavedením několika takovýchto indexů k utajeným datům, z nichž každý bude zpřístupňován jiným heslem. Minimálně jeden index bude odkazovat na zdánlivě citlivá data, ostatní pak na skutečně citlivá data, která je účelem chránit. Vzhledem k tomu, že hesla nejsou nikde uložena, StegFS nemůže zaručit, že při zápisu souborů neutajených (tj. standardně zařazených v ext2) nebudou omylem přepsána tajná data. To samé platí pro zápis tajných souborů pod jedním indexem vůči tajným souborům v jiných indexech. K dalším zástupcům steganografických FS patří například následující software. ➢ TrueCrypt: multiplatformní, komplexní a široce rozšířený nástroj pro práci s kryptografickými a steganografickými FS. Utajené FS, podobně jako u StegFS, vyplňují „volné místo“ na diskovém oddíle, který je primárně veden jako pouze kryptograficky ošetřený. Detailněji na http://www.truecrypt.org/. ➢ MagikFS: velmi podobný StegFS, umí navíc zabránit nechtěnému přepsání utajených souborů upravením struktur nosného FS ext2 za cenu toho, že data pak nejsou skryta podrobnému zkoumání disku – tajné soubory však stále nejsou viditelné při normálním používání FS jako ext2 oddílu. Dokumentace tohoto projektu je psána v budoucím čase (http://magikfs.sourceforge.net/).
4.2 TCP/IP Ukrývání dat do datagramů protokolů TCP nebo IP stojí na okraji pozornosti odborníků. Formát datagramů je definován v [24], resp. [23]. Záleží pouze na dohodě komunikujících stran, která pole datagramů budou tajnou zprávu (či její fragmenty) obsahovat a jak v nich bude zpráva
35
kódovaná. Aby takto generovaný síťový provoz nebudil pozornost, výběr polí je značně omezen a přenosová kapacita tajných bitů malá. [11], str. 6-7, se zmiňuje o stegosystému operujícím nad polem indikujícím sekvenční číslo paketu v existujícím spojení. Když je spojení iniciálně ustanovováno (formou three-way handshake), může toto pole obsahovat libovolné 32bitové číslo, od něhož pak následné pakety svoje sekvenční číslo odvozují inkrementací. Z toho vyplývá, že dva uzly propojené sítí si mohou vyměnit až 32 b tajné informace tím, že ustanoví spojení. Po úvodní fázi handshake už do tohoto pole nelze vkládat libovolné hodnoty, čili pro přenos dalšího fragmentu zprávy je třeba započít nové spojení. Dále platí, že každá 32b sekvence nese jeden znak (textové) zprávy. Pozice znaku v ASCII tabulce je rovna sekvenčnímu číslu modulo vhodná konstanta. Toto řešení skrývá úskalí pramenící z očekávaného chování síťových aplikací. V sítích, které provádějí alespoň základní monitorování provozu nikoli z hlediska stegoanalytického, ale obecně síťově-bezpečnostního, vzbudí časté navazování nových spojení v krátkém časovém intervalu pozornost. Takový jev totiž obvykle naznačuje buď chybu v aplikacích nebo nějakou formu útoku (např. port scanning – inventarizační technika či denial of service – znepřístupnění služby na vzdáleném stroji) na uzel v roli příjemce. Z tohoto důvodu má stegosystém velmi malou datovou propustnost, neboť spojení musí být ustanovována s dostatečným časovým odstupem. [11] dále navrhuje primitivní metodu kamufláže původce paketů používaných výše popsaným stegosystémem: v hlavičce IP datagramů je za odesílatele zprávy prohlášen uzel, k němuž má být steganograficky ošetřený TCP/IP paket doručen. Takovýto paket s podvrženým odesílatelem a utajenou zprávou je poslán třetí straně – libovolnému uzlu v síti, který bude figurovat jako podvržený odesílatel – na libovolný neotevřený TCP port. Tento mezilehlý uzel paket nepřijme (neboť nemá otevřen příslušný port) a pošle o tom vyrozumění domnělému původci paketu, tj. zamýšlenému příjemci tajné zprávy. Toto vyrozumění bude mít 32bitové sekvenční číslo inkrementované o jedničku oproti původnímu sekvenčnímu číslu stanovenému původním odesílatelem. Tato kamuflážní technika je určená pro situace, kdy příjmový uzel nemůže z nějakého důvodu přijímat pakety od původního odesílatele.
36
Kapitola 5:
Stegoanalýza
5.1 Struktura oboru Moderní kryptoanalýza se pyšní řadou úspěchů založených na matematických faktech. Jistě v průběhu lámání šifrovacího algoritmu mohou existovat fáze, kdy se postupuje metodou pokus-omyl, málokterý hotový kryptoanalytický postup však funguje pouze s určitou pravděpodobností (menší než 1). Stegoanalýza naproti tomu často spoléhá na příslovečné karty, z nichž se ta správná konfigurace analytického algoritmu buď magicky uhádnout povede, anebo nepovede a je třeba lidského zásahu do algoritmu, rekonfigurace a další pokusy. Výstup stegoanalytických programů se rovněž často doplňuje procentuálním vyjádřením důvěryhodnosti výsledku. A i když se v útoku na stegogram poštěstí, není zdaleka automatické, že dojde k odhalení utajené zprávy. Nicméně toto již nespadá do portfeje stegoanalýzy, jak bylo naznačeno v úvodu. Skutečnost, že stegoanalýza je počasté založena spíše na hádání než obecně platném matematickém prolomení vlastností stegosystému, podtrhuje i členění analytických postupů zavedené Peterem Waynerem v [17]: visual or aural attack, structural attack, statistical attack. Visual or aural attack reprezentuje úlohu lidských smyslů v odhalování stegogramu. Některé steganografické algoritmy se spoléhají na to, že jím produkované stegogramy nebudou analyzovány lidským okem či sluchem. Za tento risk si kupují jednodušší algoritmus embeddingu, vyšší steganografickou kapacitu coverů či např. schopnost zvládat průběžné utajování zpráv v reálném čase (ať již tento požadavek v praxi znamená cokoliv). Dle provedených experimentů (dokumentovaných dále v této kapitole) lze např. usoudit, že nelze bayesovským filtrem detekovat embedding dat s vysokou entropií (náhodná data/komprimovaná data) v obrázcích klasickou metodou LSB napadající jeden bit z 8 bitů reprezentujících jednu barvu pixelu. Dá se odhadnout, že by bayesovský filtr selhal, i kdyby byly napadeny, řekněme, 4 bity. Lidský zrak by nicméně většinou změnu 4 bitů odhalil, jak je patrné z dříve uvedených snímků v kapitole o obrázkové steganografii (2.3.1). Structural attack je naopak ryze strojovým postupem, který ve vnitřně strukturovaných coverech detekuje takové nestandardní použití této struktury, které vede k zavlečení redundantních dat (tj. tajné zprávy), která by standardně nebyla interpretována, či nebyla vůbec použitelná standardní aplikací. Zde připadají v úvahu typicky ty strukturované covery, které obsahují nějaké volitelné segmenty (které budou standardní aplikace ignorovat) či segmenty pro volné použití, bez jasně udané sémantiky. Příkladem nechť stojí síťové datagramy – viz kap. 4.2. Dodatečné segmenty lze snadno bez narušení původní funkce vložit také např. do spustitelného binárního souboru. Zřejmým slabým místem tohoto typu útoku je moment strojového rozhodování, zda nalezená data v bezportfejních segmentech byla či nebyla injektována stegosystémem. Utajená zpráva se může či nemusí (šifrovaná data) okatě prozradit. Statistical attack o zkoumaném objektu shromáždí množinu vytipovaných, kvantitativně vyjádřitelných charakteristik a tato naměřená data porovnává s typickým profilem čistého objektu, resp. s typickým profilem stegogramu. Výstupem statistického analyzátoru jsou ve vší komplexnosti dvě čísla: pravděpodobnost úspěchu provedení samotného statistického testu a pravděpodobnost správnosti verdiktu (čistý objekt/stegogram). První pravděpodobnost nebude jedničková např. v případě, kdy na zkoumaném objektu nebylo možné určité veličiny naměřit (kupříkladu pokus o naměření počtu výskytů obligátního řetězce „viagra“ v objektu netextového 37
rázu). Druhá pravděpodobnost by teoreticky také neměla být nikdy jedničková, neboť i kdyby zkoumaný objekt vypadal sebepřesvědčivěji jako stegogram, algoritmus musí pamatovat na fakt, že to stále může být jen shoda náhod. Navzdory tomuto nevyhnutelnému nedeterminismu ve výstupu jsou statistické útoky silným nástrojem. Jejich správná aplikace však může vyžadovat expertní zdatnost v matematice a/nebo v problematice daného coveru. Stejně jako u útoků předchozích dvou typů, ani v této kategorii neexistují pojmenované, natož standardní algoritmy (jako např. DES v kryptografii) odhalující stopy určitého specifického stegosystému. Na znalostech a invenci analytika závisí, jaké statistické ukazatele se rozhodne u objektů pozorovat, jak kvalitně data bude schopen zpracovat, a tím zda bude ve statistickém útoku úspěšný. Obzvláště vhodná volba statistických ukazatelů je klíčová. U klasického LSB embeddingu například nevyhnutelně selhává idea měření počtu pixelů jednotlivých barev v obrázku a porovnávání tohoto profilu s nějakým standardem pro čisté obrázky a stegogramy. Předně zde není vůbec možné sestavit něco jako referenční barevný profil všech čistých obrázků. Ovšem začne-li si analytik všímat na zkoumaných objektech například počtu párů podobných barev (ať už jsou jakékoliv), může přijít k zajímavým zjištěním (viz [25]). Uvedené Waynerovo členění vnáší do problematiky intuici kompatibility stegosystému a útočící stegoanalýzy. Utajeně komunikující strany se musí předem rozhodnout, proti jakému typu útočníka se chtějí chránit (člověk či stroj; či přesněji: stroj s určitými schopnostmi) a stegoanalytici musí vědět, jaké schopnosti u nich komunikující subjekty (ne)předpokládají. Jde o neutuchající soupeření ve zbrojení: každý další nápad na jedné straně barikády je kontrován jeho ošetřením na straně druhé. Pokud útočník opomene zapojit do stegoanalýzy lidský faktor a spolehne se na univerzální statistické testy, utajená komunikace může být, lapidárně řečeno, vedena pomocí fotek větviček poskládaných na hromadě dřeva do tvaru písmen. Formálněji se k problému staví analytik Neil Johnson v [26]: na jím zavedený systém v stegoanalytických algoritmech se řada autorů odvolává jako na pevný základ, který jednoznačně předurčuje, pro jaké účely bude daný algoritmus (ne)vhodný. Členění je založené na tom, jaké podklady má analytik při své práci k dispozici (v tabulce horizontální osa).
stegogram stego only
X
known cover
X
known message
X
chosen stego
X
chosen message
X
known stego
X
původní čistý cover
ukrytá zpráva
steganografický postup
X X X X
X
Útok typu known cover nabádá k pokusům zjistit přímo tajnou zprávu (existuje-li) ze stegogramu porovnáním coveru se stegogramem. Postup typu known message má za cíl zjistit detaily o použitém stegosystému. Speciální kategorie chosen message zahrnuje experimentální praktiky, které se opakovaným ukrýváním různých zpráv pomocí různých stegosystémů (a následným hledáním společných znaků s primárním zkoumaným stegogramem) snaží zjistit bližší detaily jako např. potenciální použitý stegosystém. Tyto metody však neumějí vyvrátit stopy steganografie. Postupy typu chosen stego realizují podobný experimentální proces, avšak přítomnost steganografie je apriori potvrzena, včetně udání stegosystému.
38
5.2 Algoritmy Předcházející statě již prezentovaly skutečnost, že velmi málo stegosystémů doznalo v jakési své přesné, neměnné formě tak širokého užití, že by si vysloužily speciální jméno (zářným zástupcem skupiny obdařených je LSB). V oboru stegoanalýzy je obtížnost nalezení takového (alespoň) de-facto standardu s vlastním jménem ještě větší. Na obou stranách je mnohem obvyklejší odvolávat se na jméno programu, který byl pro utajování/analýzu použit, eventuálně na použitou ideu. Takovéto ideje shrnuje následující přehled. ➢ Výše diskutované visual or aural attacks, structural attacks a statistical attacks. ➢ Aplikace hotových stegoanalytických utilit mířených proti konkrétním stegosystémům. ➢ Specializované útoky na daný cover (např. lingvistická analýza textu v duchu [16], kap. 3). ➢ V pozici aktivního prostředníka mezi komunikujícími stranami (active warden) pokusy zlikvidovat možný steganografický obsah v přenášených objektech. Zásahy však musí být takové povahy, aby primární (evidentní) informační obsah objektů zůstal zhruba zachován. Takovými zásahy se rozumí např.: ○ různé normalizace (u textu sjednocení řezu písma, odsazení řádků; u síťových datagramů násilné nulování všech ne zcela esenciálních polí, …); ○ formátové konverze s potenciálem narušit ukrytou informaci – obzvl. ztrátová (re)komprese (u obrázků JPEG bitmapa JPEG, u zvukových nahrávek MP3 WAV OGG Vorbis, …); ○ akceptovatelné zásahy do samotné podoby objektu (u obrázků změna velikosti, ořezávání okrajů, rotace, jiné geometrické deformace, zvyšování kontrastu/jasu/odstínů; u zvukových nahrávek omezení frekvenčního pásma; u síťových datagramů násilné nulování volitelných polí, …); ○ dodatečný embedding (nesmyslné) informace různými utajovacími technikami – vkládání šumu.
5.3 Užívání steganografie na Internetu V roce 2001 publikoval zpravodajský portál Wired News článek, který pojednával o údajné tajné komunikaci ve velkém měřítku probíhající mezi teroristickými skupinami ve světě za pomocí steganografie [27]. Zprávy měly být mj. předávány v obrázcích vystavených na webech zprostředkovávajících nákup a prodej, jako je eBay nebo Amazon. Americké úřady se k problému odmítly veřejně vyjádřit. Zpráva motivovala dva americké výzkumníky z University of Michigan, Nielse Provose a Petera Honeymana, k provedení rozsáhlého experimentu, který měl za cíl ověřit, zda je podaná informace pravdivá či nikoli. Jejich zkoumání, aplikované na 2000000 obrázků stažených z eBay, je podrobněji diskutováno v následující podkapitole. Nepřeberné množství digitálních děl i scanů obrazů na portálu eBay by bylo jistě vhodnou kamufláží pro netušenou výměnu zpráv. Jiným vhodným „internetovým masmédiem“ se v novém století stal bezesporu spam, jehož neuchopitelný objem vytváří pro steganografii ideální živnou půdu. Detekce stegogramů ve spamu je ošemetnější záležitostí, neboť: ➢ zpravidla neexistuje žádný konkrétní cover, do něhož by byla tajná informace vetknuta a formou spamu odeslána, ale stegogramy jsou generovány na míru utajované zprávě; ➢ je podstatně obtížnější stanovit, jak (z pohledu člověka) vypadá typický „čistý spam“ a „stegospam“ – ve spamu je nutné počítat skutečně s lecčím; ➢ analytik musí brát v úvahu nejen možné šifrování neznámým klíčem, ale použití neznámého slovníku (problém u stegoanalýzy textu obecně). Tato překážka v podstatě znemožňuje analyzovat spam statistickou metodou, která si bude všímat výskytu určitých „závadných“ slov či slovních spojení, frekvencí písmen apod., neboť stegosystém mohl být založen na libovolném slovníku.
39
Při prvotní vágní formulaci poslání této práce bylo právě z třetího důvodu upuštěno od zdánlivě zajímavého experimentu analyzovat netriviální kvantum spamu na výskyt stegogramů. Jediným známým generátorem steganografického spamu s jistým fixním slovníkem, jehož rysy by bylo možné prozkoumáním velkého množství textu extrahovat (např. učícím se bayesovským filtrem nebo neuronovou sítí), je webový nástroj Spammimic zmiňovaný v kap. 3. Autor těchto stránek však vyslovuje nejasně formulované přání, aby jeho systém nebyl použit pro jakékoli automatizované zpracování dat (http://www.spammimic.com/terms.shtml). Proto byl tento vedlejší cíl práce reformulován do současné podoby: namísto zkoumání spamu nějakým standardním nástrojem (který neexistuje) je experimentálně zkoumána schopnost zmíněného bayesovského filtru rozlišovat mezi čistými objekty a stegogramy po jeho vytrénování na libovolném vhodném, pevně daném slovníku. K testům na textovém coveru byly připojeny i obdobné rozlišovací testy na obrázcích. Výsledky jsou shrnuty níže, v kap. 5.3.2. Další experimenty nad automatizovanou detekcí stegogramů byly reportovány v [28], výzkumné prezentaci http://web.njit.edu/~shi/Steganalysis/steg.htm a dalších materiálech.
5.3.1 Provos, Honeyman: detekce stegogramů na eBay Tato stať se opírá o výsledky prezentované v [29]. Autoři sestavili komplexní stegoanalytickou infrastrukturu typu chosen message pro detekci obrázkových stegogramů sestávající z těchto komponent: ➢ webový robot Crawl, který samočinně stáhl ze serveru eBay na dva milióny obrázků, jejichž velikost byla v rozmezí 20-400 KB; ➢ stegoanalytický nástroj Stegdetect určený specificky k odhalování stegogramů vytvořených pomocí programů JSteg s nadstavbou JSteg-Shell, JPHide v. 0.3/v. 0.5 nebo OutGuess v. 0.13b (http://www.outguess.org/), které akceptují obrázkový cover ve formátu JPEG a tajnou zprávu před embeddingem symetricky šifrují; ➢ kryptoanalytická utilita Stegbreak provádějící slovníkový útok na (domnělou) symetrickou šifru v těch obrázcích, které Stegdetect označil za stegogramy; ➢ distribuovaná aplikace Disconcert, která rozložila výpočetní složitost slovníkového útoku na všechny podezřelé obrázky na 110 PC.
5.3.1.1 Analytická architektura Ztrátové kódování bitmapy do formátu JPEG probíhá v základu rozdělením bitmapy na čtverce o rozměrech 8x8 pixelů a následnou transformací těchto čtverců algoritmem DCT (discrete cosine transform) na 64 celočíselných hodnot (DCT koeficientů) na čtverec. Tyto 64členné bloky koeficientů zkomprimované Huffmanovým kódováním pak plně popisují celý obrázek. Steganografické utility, proti kterým statistický analyzátor Stegdetect zbrojí, všechny používají k utajení zpráv nejméně významný bit (bity) v hodnotách DCT koeficientů, a to různě nápadným způsobem. Statistickou veličinou, kterou Stegdetect u zkoumaných objektů pozoruje, jsou právě počty koeficientů všech možných hodnot napříč celým obrázkem. Do jaké míry rozložení hodnot koeficientů embedding naruší, ilustrují grafy na str. 5 v [29]:
40
O třech zmíněných steganografických programech dále platí:
➢ JSteg: modifikuje potřebný počet DCT koeficientů braných lineárně od začátku souboru; ➢ JPHide: které DCT koeficienty budou modifikovány, je dáno předdefinovanou sekvencí a
generátorem náhodných čísel, který může některé koeficienty z embeddingu sporadicky vyřadit; ➢ OutGuess: které DCT koeficienty budou modifikovány, je čistě v režii generátoru náhodných čísel. Přesné umístění zprávy ve stegogramu je významná znalost pro analýzu, neboť se lze omezit na zkoumání právě jen napadených oblastí. Toto zkoumání potom probíhá sestavením frekvenčního profilu DCT koeficientů (histogramu – viz předchozí grafy) a jeho srovnáváním s profilem typického stegogramu. Z uvedeného dále vyplývá, že bude-li stegogram vytvořen utilitou JSteg, je triviální utajenou zprávu ve stegogramu izolovat. Sporadické vynechávání koeficientů u JPHide může způsobit, že budou do histogramu započítány i koeficienty, kde ve skutečnosti zpráva utajená není. Je-li očekávaným původcem obrázku OutGuess, je třeba zkoumat celý obrázek a pravděpodobnost zavlečení nepostižených bitů do histogramu je vysoká. V tomto případě více než jinde platí, že věští délka utajené zprávy analýze napomáhá, neboť „šumových“ bitů nenesoucích tajnou zprávu bude relativně méně. OutGuess a JPHide navíc před utajením data komprimují. Těmto závěrům odpovídá i pozorování (kap. 6.1.4 v [29]) počtu falešných poplachů (false-positives; autoři v reportu jev pravděpodobně omylem nazývají false-negatives), kdy Stegdetect označil za stegogram čistý obrázek (založeno na testovací dávce vlastních obrázků a stegogramů). Při detekci stop programu JSteg byla mezi domnělými stegogramy 2 % false-positives, u JPHide 15-60 %, u OutGuess 60 %. Autoři pro budoucí výzkum zanechávají poznatek (kap. 6.2), že false-positives počasté bývají obrázky s monotónním pozadím. Kapitola 6.1.4 rovněž uvádí rychlost, s jakou Stegdetect předkládané obrázky hodnotil: za sekundu bylo zpracováno (tj. otestováno na stopy všech tří steganografických nástrojů) 127 KB obrázkových JPEG dat. Referenčním strojem bylo PC s 333MHz CPU Intel Celeron.
41
Závěrečný výsledek kontroly všech 2000000 obrázků stažených z eBay cituje tabulka na str. 9 v referenčním textu. Z celkového kvanta obrázků bylo stegogramů 0,003 % (JSteg), resp. 1 % (JPHide – libovolná z verzí), resp. 0,1 % (OutGuess). Autoři z těchto čísel vyvozují ten závěr, že algoritmus detekce stegogramů vytvořených pomocí JPHide je třeba zdokonalit, neboť tak velký podíl je vysoce nepravděpodobný.
5.3.1.2 Závěry Předchozí fáze experimentu označila za stegogramy 22060 obrázků (tj. 1,103 % z 2000000). Závěr není samozřejmě absolutní, autoři se tedy pokusili tvrzení Stegdetectu ověřit dešifrováním zpráv, které by měly být přítomny. Přesná pozice zašifrované zprávy je rozpoznána z (domnělé, nešifrované) hlavičky, kterou do stegogramu jistým způsobem vkládá každý z programů. Pokus o prolomení šifry probíhal slovníkovým (577000 slov) útokem. Referenční PC s 1200MHz CPU Intel Pentium III bylo schopno ověřit 15-112 tisíc slov za sekundu (v závislosti na síle šifry). Programem Disconcert byl výpočet distribuován na 110 stanic pracujících paralelně. Průměrný výkon stanice činil 3900 ověřených slov za sekundu. Závěrem (kap. 7) autoři experimentu konstatují, že mezi dvěma milióny obrázků pocházejících z eBay nenalezli jedinou potvrzenou utajenou zprávu. Příčinou může být fakt, že ➢ na eBay ve skutečnosti žádná teroristická rozvědka nepůsobí, anebo ➢ používá steganografické systémy, které autoři nebyli schopni detekovat, anebo ➢ používá hesla, která jsou odolná vůči slovníkovému útoku. Autoři prohlašují první bod za nejpravděpodobnější scénář a odvolávají se na studii, která ukazuje, že zhruba 25 % globálně používaných hesel je náchylných na slovníkový útok. Vzhledem k relativně velkému počtu prozkoumaných obrázků by tedy museli některé šifry prolomit. S tímto úsudkem si dovoluji polemizovat na základě dvou úvah. ➢ Autory stegogramů nebyli nezávislí jedinci s různou úrovní počítačové gramotnosti a různým zájmem na skutečném zabezpečení svých dat, ale (údajně) organizovaná zločinecká organizace s dobrým důvodem chránit data co nejlépe. To do značné míry eliminuje prvek náhody ve volbě hesel. ➢ Provos a Honeyman mohli z nějakého dobrého důvodu považovat programy JSteg, JPHide a OutGuess za výjimečné ve svém oboru v nějakém slova smyslu, ale to neznamená, že stejně smýšleli i autoři potenciálních stegogramů. Spíše právě proto takto nesmýšleli a žádný rozšířený program třetí strany by nepoužili. Steganografie nabízí tak velikou svobodu v tom, jakým přesným postupem budou data do coverů vkládána, že by byla veliká náhoda, kdyby si teroristé vybrali přesně takový algoritmus embeddingu, jaký se Provos a Honeyman rozhodli stylem chosen message detekovat.
5.3.2 Bayesovská detekce stegogramů Již dříve bylo nastíněno, že spam je výtečným „coverem“ pro internetovou steganografii. Úkolem zde reportovaného experimentu bylo ověřit, jak si právě standardní nástroj spamové klasifikace – bayesovský filtr – povede při rozlišování čistých textů a obrázků od textových, resp. obrázkových stegogramů. Bázová idea bayesovského klasifikátoru pro rozlišování spamu od regulérní pošty byla původně přednesena roku 2002 ve známém [30]. Navržený algoritmus, který se ve světle pozdějších vylepšení začal nazývat naive Bayesian classifier, při rozhodování rozložil předloženou zprávu na (unikátní) slova, spočítal frekvenci jejich výskytu v textu a tento profil porovnal s předdefinovaným profilem, který má mít regulérní mail, resp. spam. Tyto referenční profily byly vytvořeny předem ve fázi učení (též trénování): filtru bylo předloženo netriviální kvantum modelové regulérní pošty, resp. spamu, z nichž filtr zmíněný slovní profil automaticky extrahoval.
42
Nápad se velice rychle uchytil a doznal velkého množství vylepšení založených částečně na matematice, částečně na citu. Dnes je v jisté formě bayesovský klasifikátor v jádru některých z nejrozšířenějších anti-spamových filtrů. V tomto experimentu bylo použito textového parseru CRM114 v. 20060704a Williama Yerazunise (http://crm114.sourceforge.net/) se schopností (nejen) bayesovské klasifikace různé komplexnosti. [31] diskutuje (str. 159-172) podrobně všechny tyto režimy klasifikace; tabulka na str. 171 pak uvádí jejich přehled spolu s doporučeným nasazením v praxi (CRM114 není určen výhradně pro detekci spamu). V souladu s těmito doporučeními byly v experimentu použity tyto režimy klasifikace: ➢ OSB unigram: velmi podobný naivnímu klasifikátoru (identifikuje v textu pouze jednoslovné podřetězce), použit pro klasifikaci textu; ➢ OSBF: inteligentní bayesovský filtr, identifikuje v textu dvojice sousedních slov, použit pro klasifikaci textu; ➢ hyperspace: univerzální klasifikátor založený místo Bayesova vzorce na entropickém kódování (blíže v [31], str. 164), použit pro klasifikaci obrázků. Výsledky učení CRM114 ukládá na disk do primitivní off-line souborové databáze; jeden soubor pro učení na čistých objektech (třída A) a jeden soubor pro učení na stegogramech (třída B). U jednotlivých testů budou pod pojmem „velikost databáze“ upřesněny prostorové nároky proběhlého učení. Po sestavení databáze (vytrénování) bude filtru předložena dávka čistých dat a stegogramů a bude zaznamenána úspěšnost filtru při rozlišování. Výstup klasifikace jednoho objektu nese vzorově takovouto formu: Result: B, probability: 1.0000 69 hits in A 76543 hits in B Položky:
➢ result: třída, do níž klasifikátor objekt zařadil; ➢ probability: důvěra filtru v tento verdikt; ➢ hits in X: kolik elementárních objektů (slov, slovních spojení, …) z databáze třídy X bylo
v objektu nalezeno. Výčet podmínek experimentu zbývá doplnit předpisem pro CRM114 použitým pro učení: { learn (:*:_arg2:) }
Pro klasifikaci testovacích dat vytrénovaným systémem bylo použito jednoduchého: { isolate (:stats:) classify output /:*:stats:/
(A B)
(:stats:)
}
5.3.2.1 Spammimic (I) Pakliže je pod drobnohled experimentu postaven anti-spamový filtr, nelze opomenout prověření jeho schopností nad steganografickým spamem. Generátor spamu Spammimic je svým pohodlným rozhraním přístupný široké skupině uživatelů Internetu, přítomnost jeho stegogramů ve spamových masách tedy lze očekávat. Jeho algoritmus je založen na dosti jednotvárném slovníku; 43
produkované stegogramy lze identifikovat na první pohled. Obecně vzato by moderní anti-spamový filtr jako CRM114 neměl mít s rozpoznáváním stegogramů od ostatního textu obtíže. Tento test proti sobě staví nástroje, které by se v praxi setkaly zřejmě s největší pravděpodobností. učící data (A) Náhodné texty z různých oblastí IT; celkem 21667 znaků. učící data (B)
Spamy získané z generátoru na http://www.spammimic.com/encode.shtml zadáváním různých krátkých frází; celkem 50022 znaků.
trvání učení
Instantní (malý objem trénovacího textu je dán restriktivními podmínkami užití webového generátoru – viz diskuze v kap. 5.3).
velikost databáze
2x 1,1 MB.
režim klasifikace
OSBF.
ověřovací data (A)
5 (jiných) textů podobných čistým učícím textům.
ověřovací data (B)
4 spamy vygenerované systémem Spammimic (založené na jiných frázích než učící data).
trvání ověřovacího testu
Instantní.
výsledky klasifikace (ověřovací data A)
výsledky klasifikace (ověřovací data B)
1A.
1B.
2A.
3A.
4A.
5A.
Result: B, probability: 0.9999 24 hits in A 29 hits in B Result: A, probability: 0.8742 27 hits in A 0 hits in B Result: A, probability: 0.9758 33 hits in A 0 hits in B Result: B, probability: 1.0000 63 hits in A 50 hits in B Result: B, probability: 0.8786 30 hits in A 16 hits in B
2B.
3B.
4B.
Result: B, probability: 1.0000 39 hits in A 6957 hits in B Result: B, probability: 1.0000 44 hits in A 6779 hits in B Result: B, probability: 1.0000 54 hits in A 9343 hits in B Result: B, probability: 1.0000 29 hits in A 6618 hits in B
Úspěšnost klasifikace stego-textu je 100%, s absolutními pravděpodobnostmi; u čistých textů je úspěšnost sporadická. Toto je zřejmým důsledkem faktu, že všechny stegogramy se liší odhadem pouze v 10 % svého obsahu. Zbytek tvoří neměnná, obsáhlá řečnická „vata,“ podle níž filtr stegogram velice jednoduše pozná. Naproti tomu čisté texty byly při učení i při následných testech podstatně různorodější, a tím ne tak jednoznačně vypovídající. V textech 2A a 3A se evidentně nenacházely žádné prvky zmiňované spamové „vaty.“ Pokud by byl filtr vytrénovaný na větším objemu materiálu, nepochybně by byla celková úspěšnost vynikající. Jde o takřka typický scénář z anti-spamové praxe.
44
5.3.2.2 Spammimic (II) Test se stejnou konfigurací, jako předcházející, jen provedený v režimu OSB unigram. Velikost databáze vzrostla na 2x13 MB. Cílem testu je zjistit, do jaké míry je detekční algoritmus závislý na možnosti monitorovat výskyt slov i s kontextem (jak činil předchozí test s OSBF). Očekávaným výsledkem je snížení úspěšnosti v korektním rozlišování. výsledky klasifikace (ověřovací data A)
výsledky klasifikace (ověřovací data B)
1A.
1B.
2A.
3A.
4A.
5A.
Result: A, probability: 0.5037 172 hits in A 893 hits in B Result: A, probability: 0.6731 76 hits in A 0 hits in B Result: A, probability: 0.9170 286 hits in A 0 hits in B Result: A, probability: 0.9712 857 hits in A 1372 hits in B Result: A, probability: 0.6731 133 hits in A 383 hits in B
2B.
3B.
4B.
Result: B, probability: 1.0000 798 hits in A 277701 hits in B Result: B, probability: 1.0000 571 hits in A 261786 hits in B Result: B, probability: 1.0000 1027 hits in A 420119 hits in B Result: B, probability: 1.0000 381 hits in A 267367 hits in B
Je zajímavé, že tento režim filtrování přinesl zvýšení úspěšnosti při klasifikaci; ovšem v případě čistých textů si filtr není svým závěrem vůbec jistý. Pozoruhodná je také změna verdiktu u 1A ve spojení s poměrem počtů slov nalezených v databázích. U testovacích textů 2A a 3A se opět projevila jejich unikátnost. Šlo o fragmenty dokumentace s citacemi zdrojových kódů v jazyce C.
5.3.2.3 Steganosaurus (I) Pakliže tvůrce stegogramu nepoužije Spammimic, což je dost možná jediný hotový veřejný nástroj pracující s konstantním slovníkem, sáhne po obecnější aplikaci, která umožní (anebo právě vynutí) zapojení vlastního, specifického slovníku, který bude pravděpodobně pro danou zprávu či omezenou skupinu zpráv zcela unikátní. Vzniká tak odlišná, v realitě rovněž očekávatelná situace. Ovšem požadovat po filtru, aby rozpoznal stegogramy vytvořené ze zcela libovolného slovníku, je blízké požadavku jasnozřivosti. Byl tedy proveden test alespoň nad fixovaným slovníkem. Výsledná konfigurace se od testu nad Spammimic liší v tom, že stegogramy si nejsou tak nepřehlédnutelně podobné. Výsledky by nyní neměly vykazovat tak rozdílnou sebedůvěru filtru u čistých textů a stegogramů. Přesnost rozlišování by měla být díky OSBF a důkladnému učení poměrně vysoká. Vlastní slovník, sestavený pro účely tohoto testu, čítá 126834 slov. Slova byla extrahována z dávky mailů o objemu 284 MB (spam i regulérní pošta v češtině i angličtině, pouze maily beze stop kódování base64 či quoted-printable, obsah povětšinou souvisel s IT). Z tohoto mailového kvanta pak byly vybírány i texty reprezentující čistá data.
45
učící data (A) 200 mailů; celkem 582415 slov. 200 stegogramů (celkem 1308658 slov) vytvořených za použití zmíněného slovníku programem Steganosaurus (http://www.fourmilab.ch/stego/); učící data (B) utajovanými zprávami byla těla 200 (jiných) mailů. Datový objem původních 200 coverů po embeddingu vzrostl asi 7x. trvání učení
2x 10 s.
velikost databáze
2x 25 MB.
režim klasifikace
OSBF.
ověřovací data (A)
10 (pro učení nepoužitých) mailů.
ověřovací data (B)
10 (pro učení nepoužitých, jiných) mailů vzniklých obdobným způsobem a ze stejného slovníku jako učící stego-text.
trvání ověřovacího testu
Instantní.
výsledky klasifikace (ověřovací data A)
výsledky klasifikace (ověřovací data B)
1A.
1B.
Result: A, probability: 1.0000 4543 hits in A 2 hits in B 2A. Result: A, probability: 1.0000 19937 hits in A 0 hits in B 3A. Result: A, probability: 1.0000 18823 hits in A 0 hits in B (zbylých 7 dotazů ve stejném duchu)
Result: B, probability: 1.0000 0 hits in A 52470 hits in B 2B. Result: B, probability: 1.0000 5 hits in A 1841 hits in B 3B. Result: B, probability: 1.0000 4 hits in A 12292 hits in B (zbylých 7 dotazů ve stejném duchu)
Absolutní úspěšnost s neměnnou pravděpodobností výsledku pravděpodobně poukazuje na skutečně abstraktní slovní spojení ve stegogramech („Provedl JbHok flypast PL121 pricing pelerinage pristupuje pmcDaniel webapp as62843 krabicky monitoru gd22795 ruthd. Nepudem img241, impromat scopemo strukturovani.“).
5.3.2.4 Steganosaurus (II) Konfigurace testu odpovídá předchozímu, pouze režim klasifikace byl změněn na OSB unigram; trvání učení kleslo na 2x 2 s. Motivace odpovídá opakovanému testu nad Spammimic.
výsledky klasifikace (ověřovací data A)
výsledky klasifikace (ověřovací data B)
1A.
1B.
Result: A, probability: 1.0000 64505 hits in A 48 hits in B
46
Result: B, probability: 1.0000 0 hits in A 320274 hits in B
2A.
Result: A, probability: 1.0000 143101 hits in A 0 hits in B 3A. Result: A, probability: 1.0000 189864 hits in A 0 hits in B (zbylých 7 dotazů ve stejném duchu)
2B.
Result: B, probability: 1.0000 140 hits in A 13787 hits in B 3B. Result: B, probability: 1.0000 69 hits in A 76543 hits in B (zbylých 7 dotazů ve stejném duchu)
Je hodno pozornosti, že neomylnost filtru je nadále skálopevná i navzdory tomu, že OSB unigram nebere v úvahu slovní spojení, ale pouze samostatná slova (bez jejich kontextu).
5.3.2.5 Steghide v. 0.5.1 Posláním testu úspěšnosti CRM114 při rozlišování čistých obrázků od stego-obrázků je zjistit, zda je filtr schopen v netextovém podkladu rozlišit nějaké charakteristické diskrétní struktury, jejichž nějaké statistické vlastnosti by sledoval. Je nepravděpodobné, že by toho byl obecný filtr schopen, v opačném případě by však šlo o vskutku hodnotné zjištění v oboru stegoanalýzy a autoři steganografických programů by museli investovat síly do zjištění matematické podstaty takového jevu a příslušné úpravy svých algoritmů. Dle instrukcí autora CRM114 je zvolen režim klasifikace hyperspace. učící data (A)
100 obrázků (JPEG, barevné, hloubka 24 b, rozlišení 640x480, fotografie i synteticky vytvořená grafika); celkem 14 MB.
100 obrázků (z větší části jiných) stejného charakteru jako v předchozím případě, do nichž byla programem Steghide (http://steghide.sourceforge.net/) vložena jednotně stejná tajná zpráva (tělo mailu) délky 1,3 KB (vzhledem k různé učící data (B) steganografické kapacitě coverů některé z nich nebyly saturovány). Steghide byl při embeddingu volán s parametry „-e none -Z -K -N -p ""“ (bez symetrického šifrování a komprese zprávy, bez ukládání kontrolních součtů a jména souboru s tajnou zprávou). Celkem 14 MB dat. trvání učení
4 + 6 s.
velikost databáze
2x 25 MB.
režim klasifikace
Hyperspace.
ověřovací data (A)
10 (pro učení nepoužitých) obrázků.
ověřovací data (B)
10 (pro učení nepoužitých, jiných) obrázků vzniklých obdobným způsobem ze stejné tajné zprávy, jako učící stegogramy.
trvání ověřovacího testu
2x 6 s.
výsledky klasifikace (ověřovací data A)
výsledky klasifikace (ověřovací data B)
1A.
1B.
Result: B, probability: 0.5015 1800338 hits in A 1811343 hits in B
47
Result: B, probability: 0.5077 772060 hits in A 796151 hits in B
2A.
3A.
4A.
5A.
6A.
7A.
8A.
9A.
10A.
Result: B, probability: 0.5042 1776174 hits in A 1806476 hits in B Result: A, probability: 0.5107 2274691 hits in A 2179785 hits in B Result: A, probability: 0.5044 917589 hits in A 901489 hits in B Result: B, probability: 0.5056 708730 hits in A 724809 hits in B Result: B, probability: 0.5077 573376 hits in A 591222 hits in B Result: B, probability: 0.5082 716134 hits in A 739881 hits in B Result: A, probability: 0.5057 1149799 hits in A 1123930 hits in B Result: A, probability: 0.5079 1886056 hits in A 1827125 hits in B Result: A, probability: 0.5049 1119916 hits in A 1098185 hits in B
2B.
3B.
4B.
5B.
6B.
7B.
8B.
9B.
10B.
Result: B, probability: 0.5141 2164204 hits in A 2289490 hits in B Result: B, probability: 0.5132 379991 hits in A 400534 hits in B Result: B, probability: 0.5112 915315 hits in A 957393 hits in B Result: B, probability: 0.5093 684976 hits in A 710991 hits in B Result: B, probability: 0.5101 573698 hits in A 597347 hits in B Result: B, probability: 0.5112 722105 hits in A 755153 hits in B Result: B, probability: 0.5110 1154266 hits in A 1206201 hits in B Result: B, probability: 0.5178 1845570 hits in A 1981861 hits in B Result: B, probability: 0.5105 1106486 hits in A 1153814 hits in B
Správně identifikovaných obrázků je většina, přesto lze vzhledem k neměnně nízkým pravděpodobnostem mluvit o náhodě. Tento klasifikátor buď není vůbec pro tento typ dat vhodný, anebo je na vině malá délka zprávy. Původně test nad Steghide probíhal s odlišnými zprávami v každém stegogramu (učící i ověřovací), navíc šifrovanými AES. Výsledky zhruba odpovídaly předchozí tabulce.
5.3.2.6 Stegotools v. 0.4c (I) Motivace zhruba odpovídá úvodnímu odstavci předchozí podkapitoly. Situace se liší použitým coverem (a tím vnitřní strukturou) – nyní test proběhne nad nekomprimovanými bitmapami. učící data (A)
50 obrázků (BMP, barevné, hloubka 24 b, rozlišení 640x480, fotografie i synteticky vytvořená grafika); celkem 45 MB.
50 obrázků (jiných; celkem 45 MB) stejného charakteru jako v předchozím případě, do nichž byla programem Stegotools učící data (B) (http://www.sourceforge.net/projects/stegotools/), který implementuje klasický LSB embedding, vložena jednotně stejná tajná zpráva (anglický text; využity 2 LSB) dostatečné délky, aby byl celý cover saturován. trvání učení
6 + 10 s.
velikost databáze
2x 45 MB.
48
režim klasifikace
Hyperspace.
ověřovací data (A)
10 (pro učení nepoužitých) bitmap.
ověřovací data (B)
10 (pro učení nepoužitých, jiných) bitmap vzniklých obdobným způsobem ze stejné tajné zprávy, jako učící stegogramy.
trvání ověřovacího testu
2x 11 s.
výsledky klasifikace (ověřovací data A)
výsledky klasifikace (ověřovací data B)
1A.
1B.
2A.
3A.
4A.
5A.
6A.
7A.
8A.
9A.
10A.
Result: A, probability: 0.5110 1630508 hits in A 1560464 hits in B Result: A, probability: 0.5212 1352370 hits in A 1242307 hits in B Result: A, probability: 0.5045 1447025 hits in A 1421385 hits in B Result: A, probability: 0.5643 2113714 hits in A 1631990 hits in B Result: A, probability: 0.5243 2144722 hits in A 1945802 hits in B Result: A, probability: 0.5159 1197114 hits in A 1123532 hits in B Result: A, probability: 0.5471 2373333 hits in A 1964682 hits in B Result: A, probability: 0.5440 3056764 hits in A 2561842 hits in B Result: A, probability: 0.5214 2118592 hits in A 1945053 hits in B Result: A, probability: 0.5776 2822285 hits in A 2064144 hits in B
2B.
3B.
4B.
5B.
6B.
7B.
8B.
9B.
10B.
Result: B, probability: 0.5162 2040545 hits in A 2176797 hits in B Result: B, probability: 0.5150 2850489 hits in A 3026954 hits in B Result: B, probability: 0.5129 2051232 hits in A 2159819 hits in B Result: B, probability: 0.6156 886744 hits in A 1420367 hits in B Result: B, probability: 0.5047 1262046 hits in A 1286053 hits in B Result: B, probability: 0.5220 3056379 hits in A 3337302 hits in B Result: B, probability: 0.5663 942741 hits in A 1230845 hits in B Result: B, probability: 0.5332 2808183 hits in A 3208132 hits in B Result: B, probability: 0.5505 288489 hits in A 353269 hits in B Result: B, probability: 0.5120 3293548 hits in A 3456052 hits in B
Na kontrolních datech dosáhl klasifikátor 100% úspěšnosti; sebedůvěra CRM114 opět není valná, nicméně nezřídka se objevuje pravděpodobnostní ohodnocení vyšší než 0,55, čemuž odpovídá i znatelný rozdíl v počtu nalezených prvků v obou databázích. Je možné, že dobrý výsledek klasifikace zde již za náhodu označit nelze. Příčinou pravděpodobně není toliko jiná vnitřní struktura coveru oproti předchozímu testu nad JPEG obrázky, jako spíše podstatně delší utajovaná zpráva (224 KB), která zanechá v proměnných coverech znatelný záchytný bod. Je však stále otázkou, zda pravděpodobnost 0,55 již není, či stále je čirou spekulací. 49
5.3.2.7 Stegotools v. 0.4c (II) Režie testu stejná jako v předchozí kapitole, pouze utajované zprávy jsou odlišné (a komprimované) pro každý stegogram (učící i ověřovací) a je využito jen 1 LSB. Délka zprávy opět odpovídá steganografické kapacitě coverů (112 KB). Tato modifikace ústí v použití nejznámějšího steganografického postupu klasickým způsobem (tj. embedding do 1 LSB a komprese či šifrování). Je nepravděpodobné, že by si filtr s takovými daty poradil, nicméně je na místě otestovat jeho schopnosti i ve spojení s algoritmem, který digitální steganografii proslavil. výsledky klasifikace (ověřovací data A)
výsledky klasifikace (ověřovací data B)
1A.
1B.
2A.
3A.
4A.
5A.
6A.
7A.
8A.
9A.
10A.
Result: A, probability: 0.5389 2118592 hits in A 1812583 hits in B Result: B, probability: 0.5465 372552 hits in A 448931 hits in B Result: A, probability: 0.5454 418492 hits in A 348814 hits in B Result: A, probability: 0.5043 646505 hits in A 635557 hits in B Result: A, probability: 0.5605 1557219 hits in A 1221208 hits in B Result: A, probability: 0.5158 681470 hits in A 639840 hits in B Result: A, probability: 0.5253 1334722 hits in A 1206157 hits in B Result: A, probability: 0.5154 961276 hits in A 903987 hits in B Result: A, probability: 0.5156 664507 hits in A 624188 hits in B Result: A, probability: 0.5654 2352820 hits in A 1808590 hits in B
2B.
3B.
4B.
5B.
6B.
7B.
8B.
9B.
10B.
Result: A, probability: 0.5083 849890 hits in A 822200 hits in B Result: B, probability: 0.5351 448986 hits in A 516707 hits in B Result: A, probability: 0.5237 48354 hits in A 43978 hits in B Result: A, probability: 0.5253 849930 hits in A 768079 hits in B Result: A, probability: 0.5436 1037076 hits in A 870743 hits in B Result: A, probability: 0.5416 887851 hits in A 751313 hits in B Result: B, probability: 0.5767 347880 hits in A 473896 hits in B Result: A, probability: 0.5380 519936 hits in A 446404 hits in B Result: A, probability: 0.5374 1282641 hits in A 1104004 hits in B Result: A, probability: 0.5502 1902897 hits in A 1555471 hits in B
Tento závěr vypovídá o tom, že klasifikátor nejen že neumí předkládané obrázky zařadit do správné kategorie, ale je tréningem vyloženě zmaten a je schopen s pravděpodobností 0,5654 prohlásit čistý obrázek za stegogram. Toto je ještě závadnější situace než např. u testu nad Steghide, kdy kategorizace také nebyla přesvědčivá, ale klasifikátor se nesnažil se zvýšenou jistotou tvrdit nepravdivé závěry. Stále však není potvrzena hypotéza, že pravděpodobnosti mezi 0,55 a 0,6 již vypovídají o jakési emergentně akceptovatelné úrovni jistoty.
50
Kapitola 6:
Dokumentace programu SMTPd
6.1 Exkurs: protokol SMTP Již v roce 1982 byl definován síťový komunikační protokol, který dodnes na Internetu v přenosu elektronické pošty drží téměř absolutní monopol. Zkratka SMTP je odvozena z názvu Simple Mail Transfer Protocol a přestože, jak název napovídá, jde o protokol jednoduchý, netriviální podmnožina jeho schopností se dokonce dnes ani nepoužívá (např. zasílání zpráv na příjemcův terminál). SMTP je definován v [32], rozšířen v [33] a dalších a definitivně upraven a doplněn v klíčovém [34] pod ne příliš zažitým názvem ESMTP (Extended SMTP). SMTP je protokol textový, realizovaný obousměrně vyměňovanými příkazy (výzvami a odpověďmi) v pseudo-angličtině. Definuje dvě komunikující strany – klient a server –, přičemž klient předkládá konkrétní e-mailovou zprávu k doručení serveru. Server buď může zprávu doručit přímo do poštovní schránky příjemce, anebo předává zprávu dalšímu SMTP serveru, sám se pro tuto situaci stávajíc v SMTP vyjednávání klientem. Takto může vzniknout řetěz SMTP serverů, které si zprávu předávají, než je skutečně doručena. Uzel, který umí v SMTP komunikaci zastávat roli serveru, se nazývá MTA (Mail Transport Agent). Samotnou zprávu její autor zpravidla sestaví v programu typu MUA (Mail User Agent), který umí hrát roli klienta v protokolu SMTP a jako první předává čerstvě napsanou zprávu vybranému MTA k doručení. Pro osvětlení principů zde dokumentovaného programu, který je součástí této práce, se tato kapitola zaměří na protokol SMTP z hlediska chronologické návaznosti jednotlivých fází komunikace při předávání jednoho e-mailu. Pro tento účel je vhodné specifikovat bližší terminologický rámec SMTP. ➢ Obálka zprávy: specifikuje adresu odesilatele a skutečného příjemce. Není součástí samotné zprávy, jde o režijní informaci, kterou se řídí MTA při doručování. ➢ Tělo zprávy: vlastní sdělení, které chce odesilatel příjemci předat. Obvykle se jedná o textovou informaci; jakýkoli jiný, obecně binární, typ dat je v MUA před odesláním překódován na text ve formátu ASCII. Obvyklým kódováním pro tento účel je base64 (nově definováno v [35]). ➢ Hlavičky zprávy: uvádějí některé stavové a doplňkové informace, které se konkrétní zprávy týkají. Hlavičky se považují za součást zprávy, jejich počet není protokolem omezen a mohou být do zprávy vkládány jak MUA, tak MTA. Mají opět textový charakter a jejich syntax je následující: <mezera> Jeden tento řetězec na vlastním řádku odpovídá zápisu jedné hlavičky se specifikací jména a hodnoty. Pole může být volitelně víceřádkové, v tom případě však její následující řádky začínají tabulátorem. Jeden obyčejný e-mail může obsahovat například takovéto hlavičky: X-Spam-Checker-Version: SpamAssassin 3.1.9 (2007-02-13) on anxur.fi.muni.cz X-Spam-Status: No, score=-97.9 required=5.0 tests=FI_FORWARD_WHITELIST, FI_NOTFROMFI,HTML_10_20,HTML_MESSAGE,RCVD_BY_IP,USER_IN_WHITELIST autolearn=disabled version=3.1.9 Received: from minas.ics.muni.cz (minas.ics.muni.cz [147.251.4.40]) by anxur.fi.muni.cz (Postfix) with ESMTP id 617EB22B74C for <[email protected]>; Mon, 4 Feb 2008 22:24:33 +0100 (CET)
51
Received: from el-out-1112.google.com (el-out-1112.google.com [209.85.162.178]) by minas.ics.muni.cz (8.13.8/8.13.8) with ESMTP id m14LOVuQ028503 for <[email protected]>; Mon, 4 Feb 2008 22:24:32 +0100 Date: Mon, 4 Feb 2008 14:24:28 -0700 From: "John Smith" <[email protected]> To: "Roman Zilka" <[email protected]> Subject: Transatlantic Christmas Content-Length: 84302
Z takovýchto hlaviček mj. vyplývá následující. ○ Příjemcem zprávy je [email protected] a pochází od [email protected]. ○ Na úrovni SMTP zprávu do sítě vyslal uzel el-out-1112.google.com, předal ji MTA minas.ics.muni.cz a ten dále MTA anxur.fi.muni.cz, který je cílovým uzlem a zprávu doručil do schránky příjemce. Toto je čitelné z hlaviček „Received,“ které jsou uspořádány chronologicky zespodu nahoru a které jsou do zprávy vkládány minimálně každým mezilehlým MTA. ○ E-mail byl na straně příjemce otestován, zda se není spamem (s negativním výsledkem). Anti-spamové systémy při rozhodování berou v úvahu i hlavičky. Uvedená fakta by měla být označena spíše za „zdánlivě vyplývající“ nežli rezolutně „vyplývající.“ Někdy se v hlavičkách totiž vyskytují záměrně podvržené či zamlžené informace, např. v případě spamu (podvržení adresy odesilatele) či mailu s utajeným seznamem příjemců (vyplnění hlavičky „To“ nicneříkajícím textem). Jak bylo uvedeno, doručování mailu mezi jednotlivými MTA se řídí obálkou, a nikoli hlavičkami, přesto však hlavičky jsou to jediné, co příjemce zprávy po jejím doručení vidí (obálka je při doručení do schránky zahozena). To je v jistém slova smyslu klíčem ke zneužitelnosti protokolu SMTP pro šíření spamu. Platná komunikace klienta a serveru protokolem SMTP se odehrává dle následujícího harmonogramu: 1. přenos obálky (končí, když server zaslal příkaz 354); 2. přenos hlaviček a těla (končí, když klient zaslal osamocenou tečku na řádku); 3. zakončení sezení (končí, když jedna ze stran uzavřela spojení). Jak konkrétně vypadá celé sezení, bude ilustrováno na příkladě níže v této kapitole. V tomto bodě je nezbytné už jen upřesnit hraniční akce. V případě ukončení druhé a třetí fáze není třeba komentáře; příkaz 354 je pak výzvou klientovi k zaslání hlaviček a těla zprávy a je to jediný způsob, jak při SMTP vyjednávání může dojít k počátku jejich přenosu. Až do příjmu indikátoru konce těla se server stává pasivním posluchačem a kanál je vyhrazen pro klienta. Syntaxe příkazu 354 je následující (vše na jednom samostatném řádku, partie složená v hranatých závorkách je volitelná): 354[<mezera>]
6.2 SMTPd 6.2.1 Motivace Program SMTPd vznikl jako praktická ilustrace použitelnosti Internetu k masovému nasazení steganografie. Představuje unixový rezidentní program (daemon), který funguje jako prostředník mezi dvěma stranami hovořícími protokolem SMTP. SMTPd sám neimplementuje protokol SMTP, ovšem před klientem se tváří jako plnohodnotný SMTP server a před serverem jako plnohodnotný klient – SMTPd pouze přeposílá zprávy přicházející od jednoho z komunikantů na druhou stranu virtuálního kanálu.
52
SMTP server
SMTP
SMTPd
SMTP
SMTP klient
Z tohoto hlediska lze SMTPd taktéž označit za proxy či middleware. Nosnému protokolu (SMTP) sám nerozumí, až na několik výjimek: je schopen rozpoznat ve volné výměně zpráv mezi klientem a serverem právě ukazatele konců tří fází SMTP komunikace, které byly vytyčeny na konci kap. 6.1. V první a třetí fázi daemon bez další inteligence pouze předává zprávy mezi komunikanty; tak, jak si je oni dle vlastní vůle vyměňují. V druhé fázi vyslechne klientovo sdělení hlaviček a těla zprávy a před tím, než tento celek přepošle serveru, jej steganograficky upraví. Tuto úpravu zajistí libovolný externí program (v terminologii SMTPd nazvaný obecně filtr), který zná rozhraní filtrů programu SMTPd (o tomto rozhraní bude pojednáno dále). SMTP server
SMTPd
SMTP klient
filtr Tato infrastruktura je schopna zajistit automatické steganografické utajování sdělení zasílaných poštou, a to bez vědomí klienta (v typickém scénáři MUA) a při vhodné konfiguraci (diskutováno níže) i bez vědomí serveru. Uživatel jednou spustí na vhodném uzlu sítě SMTPd, zapojí vhodný filtr, a poté nastaví svůj MUA tak, aby za server odchozí pošty považoval stroj s běžícím SMTPd. Protože původní sdělení není kryptograficky šifrováno a filtrem produkované stegogramy nedávají na první pohled smysl nikomu kromě odesilatele a zamýšleného příjemce, dá se SMTPd označit za producenta spamu. Internetového spamu coby coveru je zde tedy použito jako média pro tajné doručení zprávy. V tomto kontextu může být záhodno, aby filtr produkoval stegogramy právě co nejvíce podobné spamu, aby se tyto ztratily v záplavě nevyžádané pošty, kterou lze přinejlepším na příjmovém serveru anti-spamovým nástrojem označit za spam a odložit do „spamboxu“ příjemce. V zájmu splynutí s masou může být vytvořený stegogram dokonce zaslán nejen zamýšlenému příjemci, ale i na řadu dalších adres, a tak vytvořit nemilou, ale tím věrnější, iluzi nenápadnosti.
6.2.2 Kompilace a spouštění SMTPd byl vytvořen v jazyce C normy ANSI a je určen pro unixové systémy s překladačem gcc a podporující GNU rozšíření standardní knihovny jazyka (libc). Pro úspěšný překlad není třeba žádných nestandardních knihoven. Mateřskou platformou je GNU/Linux, glibc v. 2.6.1, gcc v. 4.1.2. Zdrojový kód programu SMTPd je agregován v souboru smtpd.c, který je doprovázen řídicím souborem Makefile pro snadné ovládání utilitou make. Přítomný Makefile definuje následující úkony: ➢ smtpd (implicitní): překlad zdrojového kódu do spustitelného souboru smtpd; ➢ clean: smazání spustitelného souboru smtpd; ➢ stop: zastavení případného běžícího daemona SMTPd; ➢ restart: zastavení případného běžícího daemona SMTPd a jeho následné spuštění s předvolenými parametry (doporučeno upravit); ➢ all: provede úkon „smtpd“, a poté „restart“;
53
➢ indent: pomocí GNU utility indent zkonvertuje soubor smtpd.c na smtpd-indent.c tak,
že sémantika programu je zachována a zápis zdrojového kódu je systematizován dle konvencí zlepšujících čitelnost pro člověka.
Spuštění přeloženého programu bez parametrů je nekorektní způsob použití a vede ke zobrazení stručné nápovědy. Program akceptuje následující parametry příkazové řádky (každý z nich vyžaduje právě jeden argument). ➢ -p (--listen-port): TCP port, na němž má SMTPd očekávat příchozí spojení od klientů. Volitelný; implicitní hodnota: 2002. ➢ -s (--smtp-server): Skutečný SMTP server, který bude sloužit k odeslání pošty zadané klienty a upravené filtrem. Povinný. ➢ -r (--smtp-server-port): TCP port, na kterém server specifikovaný pomocí předchozího parametru očekává SMTP klienty. Volitelný; implicitní hodnota: 25. ➢ -l (--log): Soubor, do něhož bude daemon za běhu ukládat provozní informace formou čitelnou pro uživatele. Vhodné pro utvoření přehledu o provozu a řešení problémů. Ke specifikovanému souboru bude daemon nové zprávy připisovat, ne nahrazovat stávající. Povinný parametr. ➢ -v (--log-level): Úroveň detailů záznamů v logu o chodu daemona. Volitený parametr. Argumentem je celé číslo od 1 do 4 (implicitně 3) s následující sémantikou: ○ 1: zaznamenávej pouze hlášení o chybách, které vedou k ukončení daemona (záznamy s prefixem „E:“); ○ 2: jako 1, plus varovná hlášení o nefatálních chybách (záznamy s prefixem „W:“); ○ 3: jako 2, plus informativní hlášení o běhu daemona (záznamy s prefixem „I:“); ○ 4: jako 3, plus detailní hlášení o běhu daemona určená pro ladění a zkoumání komunikace probíhající mezi klienty a serverem (záznamy s prefixem „D:“). ➢ -f (--filter): Cesta ke spustitelnému steganografickému filtru, který bude použit pro úpravu procházející pošty. Povinný. ➢ -t (--temp-file): Cesta k souboru použitému pro komunikaci s filtrem. Tento soubor bude za běhu daemona průběžně mazán. Volitelný parametr; implicitní hodnota: /tmp/smtpdfilterTEMPfile.
6.2.3 Vnitřní architektura Vlastní zdrojový kód je obligátně zaplněn řadou konstrukcí (kontroly návratových hodnot, reakce na chyby, …), které se nepodílejí přímo na primárním poslání programu. Následující přehled odstíní čtenáře od implementačních detailů a srozumitelněji znázorňuje tok řízení mezi klíčovými funkcemi a ideu fungování celku. V přehledu jsou přirozeně vynechány stavy, kdy program detekoval jakýkoli druh chyby. Obecně SMTPd reaguje okamžitým ukončením (a zápisem záznamu s prefixem „E:“ do logu) jen na situace, kdy není možné či smysluplné v chodu pokračovat; ostatní chyby jsou indikovány záznamem s prefixem „W:“ do logu (předčasná ztráta spojení s klientem/serverem, nemožnost spustit filtr, …). ➢ main(): vstupní bod programu.
1. 2. 3. 4. 5.
Pomocí getopt_long() načti parametry příkazové řádky, v případě chyby vypiš návod k použití a skonči. Naplněny vnitřní struktury. Otevři log pro zápis na konec souboru (viz parametr „-l“). V případě úspěchu jsou nyní veškerá hlášení uživateli sdělována do logu, nikoli na konzolu. Inicializuj naslouchací socket (viz parametr „-p“). Smaž temp-file – viz parametr „-t“ (mazání pro vynucení rozumných přístupových práv k souboru při jeho vytvoření). Odpoutej proces od konzoly funkcí daemon(). Prohlaš funkci die() za obsluhu systémového signálu TERM. 54
➢
➢
➢
➢
6. Vstup do nekonečné smyčky s obsahem: čekání na klienta (libovolně dlouho), synchronní obsloužení klienta pomocí handle_client(), uzavření spojení s klientem. die(): volána při zachycení signálu TERM od operačního systému nebo libovolného signálu zevnitř programu při zjištění fatální chyby (v tomto přehledu vynecháno). 1. Zavři všechny otevřené sockety, spojení a soubory. 2. Smaž temp-file (existuje-li). 3. Pokud je zachyceným signálem TERM, ukonči program bez indikace chyby, jinak s indikací chyby (zasláním signálu TERM prostřednictvím OS je program uživatelem standardně ukončován). handle_client(): volána jednou pro každé příchozí spojení klienta. 1. Připoj se k SMTP serveru (viz parametry „-s“ a „-r“). 2. Obstarej 1. fázi SMTP vyjednávání pomocí talkd(fáze 1). 3. Načti do temp-file e-mail dodaný klientem (2. fáze). 4. Spusť filtr na temp-file a vyčkej na jeho skončení (viz parametr „-f“). 5. Přehraj aktuální obsah temp-file serveru. 6. Obstarej 3. fázi SMTP vyjednávání pomocí talkd(fáze 3). 7. Uzavři spojení se serverem. talkd(fáze F): přemostí spojení s klientem a spojení se serverem do jednoho, plně duplexního kanálu. 1. Nekonečná smyčka (s asynchronním ukončením zevnitř): i. uzavřel-li klient nebo server spojení, ukonči talkd(); ii. počkej (max. 30 s) na řádek dat od klienta/serveru; iii. pokud celých 30 s obě strany mlčely, ukonči talkd() – timeout; iv. chtěl-li klient zaslat data, přečti je a pošli serveru; v. chtěl-li server zaslat data, přečti je a pošli klientovi a je-li navíc F = „fáze 1“ a server právě zaslal řádek začínající „354“, ukonči talkd(). logger(řetězec M, volitelný kód chyby E): zapíše zprávu M do logu; volána mnohokrát za běhu programu. 1. Nekoresponduje-li typ M s nastavenou úrovní logování, ukonči logger() (viz parametr „v“). 2. Je-li specifikováno E, zapiš do logu trojici (aktuální čas, M, řetězec popisující E), jinak zapiš do logu dvojici (aktuální čas, M). E oznamuje při selhání dedikovaná funkce glibc.
6.2.4 Rozhraní pro externí filtr Filtrem se rozumí lokální soubor, který je spustitelný pro EUID (Effective User Identifier) běžícího SMTPd. Spustitelnost specifikovaného souboru je testována ve funkci parse_params() záhy po spuštění programu (nedochází však k reálnému spuštění filtru). Filtr musí akceptovat alespoň jeden poziční parametr příkazové řádky a tento první parametr interpretovat jako cestu k souboru, kde je uloženo plné znění hlaviček a těla e-mailu (fáze 2), a to bez zakončující osamocené tečky na řádku. SMTPd neprovádí kontrolu toho, co za data klient ve 2. fázi SMTP vyjednávání zaslal. Je na filtru, aby se vypořádal s formátem zprávy. K tomuto spoléhání na třetí stranu bylo při návrhu SMTPd přikročeno ze dvou důvodů. ➢ Je velice nepravděpodobné, že by nějaký MUA/MTA v roli klienta zaslal data v nestandardním formátu (o tomto bude pojednáno níže). Tohoto se drží i autentické spam produkující automaty. Přesto je však po filtru požadováno, aby se uměl vypořádat s jakýmkoli vstupem. ➢ Je prakticky nemožné stanovit, jak nejlépe by se měl SMTPd zachovat při načtení různě nestandardních vstupů v 2. fázi. Některé kombinace klient/filtr mohou toleranci SMTPd přímo vyžadovat, ponechávajíc si obsahovou stránku zpráv zcela ve své režii.
55
Obecně je však od filtru požadováno, aby akceptoval zprávy (mj. i) ve standardním formátu a pro každý vstup vyprodukoval výstup oznamující buď výsledek nebo chybu. Filtr nesmí spoléhat na ošetření jeho návratového kódu v SMTPd. Standardní formát strukturovaných zpráv, který je používán v e-mailové komunikaci, je v základu kodifikován v [36], nověji pak v [37] – nejde tedy o součásti specifikace (E)SMTP. K informacím podaným doposud v tomto textu zbývá doplnit, že [37], a tedy dnešní MTA, vyžadují od každé zprávy následující strukturu (bloky v uvedeném pořadí): 1. úplný výčet hlaviček; 2. prázdný řádek; 3. tělo zprávy; 4. osamocená tečka na vlastním řádku. Přičemž:
➢ v bloku hlaviček se nesmí vyskytovat žádný prázdný řádek; ➢ tělo může mít jakoukoli textovou strukturu, ovšem nesmí obsahovat osamocenou tečku
na řádku. Pokud se ve zdrojové zprávě takový jev vyskytuje, je tečka uměle zdvojena a u příjemce opět unifikována.
6.2.5 Použití hotových steganografických nástrojů coby filtrů Nepředpokládá se, že některý z existujících steganografických nástrojů třetích stran bude připraven kooperovat se SMTPd v pozici filtru. Vzhledem k nenáročnému rozhraní mezi SMTPd a filtrem by však mělo být snadné pro externí program dotvořit pomocný nástroj typu wrapper, který bude fungovat jako most mezi uživatelským rozhraním externího programu a SMTPd. V případě steganografických nástrojů produkujících čistý text bude wrapper pravděpodobně představovat několikařádkový shellovský skript. V případě jiného typu stegogramu bude nutné (obecně binární) výstup překódovat do některé z textových forem pro přenos binárních dat používaných v e-mailu – např. base64 (viz [35]). Tato konverze s sebou ponese potřebu upravit hlavičky. Následující stati demonstrují, jak zkoordinovat práci SMTPd se dvěma vybranými steganografickými nástroji.
6.2.5.1 Steganosaurus Steganosaurus produkuje čistě textový stegogram, nebude proto třeba měnit hlavičky (použitý slovník bude obsahovat pouze řetězce v 7bitovém ASCII) ani kódování. Následující skript je platným filtrem pro SMTPd; hlavičky ponechá beze změny a tělo konvertuje. Skript ošetřuje i patologické stavy a vždy, když je zadán v prvním pozičním parametru zapisovatelný a čitelný soubor, vygeneruje do něj nějaký výstup. #!/bin/bash PROPHETS_MESSAGE="Sun's mood bad. Beware of freckles proliferation." PATH="$PATH:/bin:/usr/bin" if [ $# -ge 1 ]; then if [ -r "$1" -a -w "$1" ]; then # Good, a usable file has been passed as the first argument TEMP=`mktemp /tmp/stegowrapXXXXXX` TEMP_BODY=`mktemp /tmp/stegowrapXXXXXX` # Extract mail headers plus the empty line LINE="abc" LINENR=0
56
LINES_TOTAL=`cat "$1"|wc -l` while [ -n "$LINE" -a $LINENR -lt $LINES_TOTAL ]; do LINENR=$((LINENR+1)) # Extract line number $LINENR LINE=`cat "$1"|head -$LINENR|tail -1` echo "$LINE" >> "$TEMP" done # Extract mail body tail -$((LINES_TOTAL-LINENR)) "$1" > "$TEMP_BODY" # Feed body to Steganosaurus stego -f /usr/share/dict/cracklib-small -e -l 76 "$TEMP_BODY" >>"$TEMP" \ 2>/dev/null || echo "$PROPHETS_MESSAGE" >> "$TEMP" cat "$TEMP" > "$1" rm -f "$TEMP" "$TEMP_BODY" exit 0 fi fi # If we're here: zero parameters or file in first parameter not R/W-able echo "$PROPHETS_MESSAGE" 1>&2 exit 1
6.2.5.2 Steghide Situace, kdy steganografický nástroj neprodukuje čistý text, a tudíž je nutné modifikovat hlavičky a kódování, se může zdát komplikovaná. Za pomocí méně užívaných standardních unixových utilit lze však vystačit s nevelkou modifikací citovaného wrapperu pro program Steganosaurus. Demonstrace bude provedena na programu Steghide, který produkuje stegogramy např. ve formátu JPEG. Je tedy navíc třeba v hlavičkách e-mailu specifikovat, že tělem bude obrázek typu JPEG kódovaný v base64. K tomuto lze užít programu formail, který je součástí distribuce balíku procmail (http://www.procmail.org/), a tím pádem běžně dostupný (nejen) na poštovních serverech. # Ošetření použitelnosti souboru v prvním argumentu ... cat vstupní_mail | formail -f -I 'Content-Type: image/jpeg' -I \ 'Content-Transfer-Encoding: base64' 2>/dev/null >modifikovaný_mail \ || cat vstupní_mail > modifikovaný_mail # Oddělení hlaviček od těla ...
Pasáž za „||“ ošetřuje případ, kdy filtru na vstupu nebyl ve skutečnosti předložen platný email. Poté, co Steghide z těla mailu (či celého znění jiného typu textu) vygeneruje cílový JPEG obrázek, je tento zakódován do base64 stejnojmennou řádkovou utilitou, která je (při kompilaci) volitelnou součástí balíku coreutils (http://www.gnu.org/software/coreutils/) přítomného na mnoha unixových systémech. # Extrakce těla mailu ... steghide embed -ef tělo_vstupního_mailu -cf JPEG_cover -sf výstupní_stegogram \ -p secret_passphrase -f -z 9 -N &>/dev/null || zpracuj_chybu base64 výstupní_stegogram > zakódovaný_stegogram 2>/dev/null || zpracuj_chybu # Předání získaného výstupu zpět SMTPd ...
6.2.6 Vliv formátu e-mailů na kvalitu steganografického utajení Při koordinaci SMTPd, serveru a očekávaných klientů je třeba mít na paměti nutnost zachovat nenápadnost obsahu zprávy, a to včetně jejích hlaviček. Existují situace, kdy obecné MTA a MUA 57
mohou při zapojení SMTPd do provozu generovat v hlavičkách nežádoucí jevy. Ze standardních může být postižena obzvláště hlavička „Received,“ která eviduje, kterými síťovými uzly e-mail prošel. Problém bude vyložen demonstrativní formou na třech scénářích, které dohromady pokrývají možné konstelace SMTP serveru, SMTPd a klienta. Za všech okolností se bez újmy na obecnosti předpokládá, že zaznačený server už e-mail dále nepřeposílá a lokálně jej doručuje.
6.2.6.1 Scénář se dvěma uzly (I) SMTP server
síť klient
SMTPd E-mail doručený serverem bude obsahovat hlavičku tvaru: Received: from klient.fi.muni.cz (localhost.localdomain [127.0.0.1]) by server.fi.muni.cz (Postfix) with SMTP id 8E5BF22AF92 for <[email protected]>; Sat, 8 Mar 2008 16:22:03 +0100 (CET)
Eventuálně: Received: from klient.fi.muni.cz (server.fi.muni.cz [147.251.48.3]) by server.fi.muni.cz (Postfix) with SMTP id 8E5BF22AF92 for <[email protected]>; Sat, 8 Mar 2008 16:22:03 +0100 (CET)
Hlavička zachycuje fakt, že zpráva byla zaslána uzlem, který se během SMTP sezení identifikoval jako klient.fi.muni.cz, nicméně TCP spojení, kterým se přenos zprávy uskutečnil, bylo se serverem iniciováno z uzlu localhost.localdomain (což je u unixových systémů běžné označení lokálního spojení v rámci uzlu samotného). Jde právě o jméno SMTP serveru, které bylo při spouštění SMTPd specifikováno parametrem „-s“. Na lokální uzel je možné se samozřejmě odkazovat i jménem vnějšího síťového rozhraní – tak vzniklo druhé, alternativní znění hlavičky. Takto deformovaná hlavička naznačuje, že zpráva neprošla šablonovou rutinou odesílání. V praxi se podobné anomálie vyskytují i z jiných důvodů, nicméně odesílatel a zamýšlený příjemce si mohou přát vzbudit v tomto smyslu co nejméně pozornosti (např. v situaci, kdy se nesnaží maskovat stego-poštu jako spam) a nežádoucí jev eliminovat.
6.2.6.2 Scénář se dvěma uzly (II) síť
klient
SMTP server SMTPd E-mail doručený serverem bude obsahovat hlavičku tvaru: Received: from klient.fi.muni.cz (klient.fi.muni.cz [147.251.48.39]) by server.fi.muni.cz (Postfix) with ESMTP id 071C422AF92 for <[email protected]>; Sat, 8 Mar 2008 11:26:53 +0100 (CET)
Na rozdíl od ostatních scénářů tato konfigurace nebude na úrovni SMTP/hlaviček generovat žádné změny oproti přímé komunikaci klient-server bez užití SMTPd. Hlavička indikuje, že klient se nejen ohlásil, ale také skutečně připojil z uzlu klient.fi.muni.cz. 58
6.2.6.3 Scénář se třemi uzly síť SMTP server
síť SMTPd
klient
E-mail doručený serverem bude obsahovat hlavičku tvaru: Received: from klient.fi.muni.cz (smtpd-uzel.fi.muni.cz [147.251.48.68]) by server.fi.muni.cz (Postfix) with ESMTP id 071C422AF92 for <[email protected]>; Sat, 8 Mar 2008 11:26:53 +0100 (CET)
Toto je podobně závadný výsledek, jako se objevil v kap. 6.2.6.1 – jména uzlů na prvním řádku nekorespondují.
6.2.7 Některé další bezpečnostní ohledy Nasazení SMTPd na straně SMTP serveru nemusí být v zájmu bezpečnostní politiky správce serveru. Je-li například MTA na tomto stroji restriktivní v tom smyslu, že je ochoten přijmout poštu od vzdálených uzlů jen při šifrování přenosu pomocí SSL/TLS (což chrání uživatele i samotný server), pak otevření zadních dvířek k MTA v podobě SMTPd způsobí, že uživatelé přistupující k SMTPd budou moci posílat sítí zprávy nešifrované. Pro MTA je odesílajícím uzlem jeho domovský server (neboť na něm běží SMTPd), a tudíž pravděpodobně přijme i nešifrovaná data. Naznačená situace odpovídá např. hlavnímu poštovnímu uzlu FI – relay.fi.muni.cz. V závislosti na konkrétní topologii sítě a konfiguraci software připadají v úvahu další bezpečnostní otázky. ➢ Omezení přístupu na klientský port SMTPd: smysluplné v případě, že je SMTPd spouštěn na veřejném serveru a uživatel má právo filtrovat na úrovni systému síťový provoz. Lze ošetřit též předřazením druhého daemona, který bude příchozí spojení přijímat jako první a dle uvážení je buď postoupí SMTPd, nebo uzavře. ➢ Maskování běžícího daemona a přidružených souborů na disku: je možné např. použít technik známých z unixových rootkitů (skrytí procesu zásahem do běžícího jádra operačního systému, skrytí souborů na disku ošetřením na úrovni systémového volání open() apod.). ➢ Šifrování TCP spojení mezi klientem a SMTPd: přestože se nejedná o steganografii, v konečné praxi může jít o relevantní opatření. Možným řešením je např. tunelování provozu mezi vzdálenými uzly skrze SSH sezení. Úzce souvisí s úvodem této podkapitoly. ➢ Kvalita použitých stegosystémů: je žádoucí, aby stegogramy generované filtrem byly rozumně různorodé. Např. ve výše citovaných wrapperech pro programy Steganosaurus a Steghide je vhodné průběžně (v rámci možností) měnit slovník, resp. šifrovací klíč a cover. ➢ Zvýšení podobnosti s běžným spamem: ne vždy je cílem. Lze jí dosáhnout například: ○ zařazením fragmentů z běžného spamu do těla e-mailu (řešitelné elegantně na úrovni wrapperu); ○ přidáváním matoucích příloh (obzvl. obrázkových) do e-mailu; ○ zalomením textu v těle e-mailu na fixní šířku řádku (vhodné v každém případě); ○ úpravou hlaviček.
6.2.8 Shrnující demonstrace práce programu Nadcházející ilustrace uzavírá pojednání o SMTPd. Jedná se o záznam chování prakticky používaných MUA a MTA v koordinaci se SMTPd, a to v domovském prostředí FI. Z počítače
59
klient.fi.muni.cz odeslal uživatel tajnou zprávu pomocí MUA Sylpheed (http://sylpheed.sraoss.jp/) na SMTPd bežící na straně SMTP serveru (server.fi.muni.cz). Zpráva je filtrována wrapperem v duchu kap. 6.2.5.2. E-mail je na serveru rovnou lokálně doručen v režii MTA Postfix (http://www.postfix.org/). V přehledu se střídají akce následované jejich projevy v logu SMTPd. Na serveru spuštěn SMTPd s parametry „-p 2002 -s localhost -r 25 -v 4 -l /tmp/log -f /home/xzilka1/smtpd/filters/steghide-wrapper -t /tmp/tempfile“. 2008-03-10 14:49:03 | I: Entering infinite loop
Klient odesílá e-mail pro [email protected] skrze SMTPd běžící na serveru; titulek: „Fotka z dovolene,“ tělo: „Toto nikdo nesmi videt.“ 2008-03-10 15:33:33 | I: Connection established with client klient.fi.muni.cz [147.251.48.39] 2008-03-10 15:33:33 | D: Entering handle_client() 2008-03-10 15:33:33 | I: Connected to server 127.0.0.1:25 2008-03-10 15:33:33 | D: Entering replay() 2008-03-10 15:33:33 | D: Entering talkd() 2008-03-10 15:33:33 | D: Server said: 220 server.fi.muni.cz ESMTP NO UCE NO SPAM 2008-03-10 15:33:33 | D: Client said: HELO klient.fi.muni.cz 2008-03-10 15:33:33 | D: Server said: 250 server.fi.muni.cz 2008-03-10 15:33:33 | D: Client said: MAIL FROM:<[email protected]> 2008-03-10 15:33:33 | D: Server said: 250 2.1.0 Ok 2008-03-10 15:33:33 | D: Client said: RCPT TO:<[email protected]> 2008-03-10 15:33:33 | D: Server said: 250 2.1.5 Ok 2008-03-10 15:33:33 | D: Client said: DATA 2008-03-10 15:33:33 | D: Server said: 354 End data with . 2008-03-10 15:33:33 | D: Filterfile /tmp/tempfile successfully open 2008-03-10 15:33:33 | D: Client said: Date: Mon, 10 Mar 2008 15:33:29 +0100 2008-03-10 15:33:33 | D: Client said: From: Roman Zilka <[email protected]> 2008-03-10 15:33:33 | D: Client said: To: [email protected] 2008-03-10 15:33:33 | D: Client said: Subject: Fotka z dovolene 2008-03-10 15:33:33 | D: Client said: Message-Id: <[email protected]> 2008-03-10 15:33:33 | D: Client said: X-Mailer: Sylpheed 2.4.7 (GTK+ 2.12.5; i686-pclinux-gnu) 2008-03-10 15:33:33 | D: Client said: Mime-Version: 1.0 2008-03-10 15:33:33 | D: Client said: Content-Type: text/plain; charset=US-ASCII 2008-03-10 15:33:33 | D: Client said: Content-Transfer-Encoding: 7bit 2008-03-10 15:33:33 | D: Client said: 2008-03-10 15:33:33 | D: Client said: Toto nikdo nesmi videt. 2008-03-10 15:33:33 | D: Client said: . 2008-03-10 15:33:33 | I: Running filter /home/xzilka1/smtpd/filters/steghide-wrapper 2008-03-10 15:33:33 | D: Filter said: Date: Mon, 10 Mar 2008 15:33:29 +0100 2008-03-10 15:33:33 | D: Filter said: From: Roman Zilka <[email protected]> 2008-03-10 15:33:33 | D: Filter said: To: [email protected] 2008-03-10 15:33:33 | D: Filter said: Subject: Fotka z dovolene 2008-03-10 15:33:33 | D: Filter said: Message-Id: <[email protected]> 2008-03-10 15:33:33 | D: Filter said: X-Mailer: Sylpheed 2.4.7 (GTK+ 2.12.5; i686-pclinux-gnu) 2008-03-10 15:33:33 | D: Filter said: Mime-Version: 1.0 2008-03-10 15:33:33 | D: Filter said: Content-Type: image/jpeg 2008-03-10 15:33:33 | D: Filter said: Content-Transfer-Encoding: base64 2008-03-10 15:33:33 | D: Filter said: 2008-03-10 15:33:33 | D: Filter said: / 9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8SEhEP 2008-03-10 15:33:33 | D: Filter said: ERETFhwXExQaFRERGCEYGh0dHx8fExciJCIeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEUHh4eHh4e
(…) 2008-03-10 15:33:33 | D: Filter said: MHrn1BqvdQCOHNtLiQE7lbOSD+goopLcpszXttaaYyQW87MPvBcNiqxj1CJBcMhlLZGWUAqR+PNF
60
2008-03-10 15:33:33 | D: Filter said: FaGd2ySO4mKkNcxG4A3YYqvygds8k+1PF/brb+WGAkD/ALvyydufqaKKLFdLn//Z 2008-03-10 15:33:33 | D: Including a lone dot 2008-03-10 15:33:33 | D: Entering talkd() 2008-03-10 15:33:33 | D: Server said: 250 2.0.0 Ok: queued as 20FDA22C04D 2008-03-10 15:33:33 | D: Client said: QUIT 2008-03-10 15:33:33 | D: Server said: 221 2.0.0 Bye 2008-03-10 15:33:33 | I: Server closed connection 2008-03-10 15:33:33 | I: Connection with server closed 2008-03-10 15:33:33 | I: Connection with client closed
Ve schránce příjemce se poté objevila zpráva s následujícími hlavičkami a tělem (obrázkovým stegogramem): Return-Path: <[email protected]> X-Spam-Checker-Version: SpamAssassin 3.1.9 (2007-02-13) on server.fi.muni.cz X-Spam-Level: X-Spam-Status: No, score=-100.0 required=5.0 tests=FI_FROMFI,FI_FROMMU, FI_RELAYED_MUMAIL,USER_IN_WHITELIST_FI autolearn=disabled version=3.1.9 X-Original-To: [email protected] Received: from klient.fi.muni.cz (localhost.localdomain [127.0.0.1]) by server.fi.muni.cz (Postfix) with SMTP id 20FDA22C04D for <[email protected]>; Mon, 10 Mar 2008 15:33:33 +0100 (CET) Date: Mon, 10 Mar 2008 15:33:29 +0100 From: Roman Zilka <[email protected]> To: [email protected] Subject: Fotka z dovolene Message-Id: <[email protected]> X-Mailer: Sylpheed 2.4.7 (GTK+ 2.12.5; i686-pc-linux-gnu) Mime-Version: 1.0 Content-Type: image/jpeg Content-Transfer-Encoding: base64
61
Kapitola 7:
Závěr
Steganografie je relativně věkovitá disciplína. Užívali jí vládci antického i křesťanského světa i velitelé ve světových válkách 20. století. Zprávy se psaly na papyrus a plešaté hlavy otroků, vaječné bílky, na papír i do neviditelných bitů digitálních obrázků. Přes tento nadčasový přesah se ve jménu steganografie dosud neodehrálo mnoho seriózního vědeckého výzkumu. Je to způsobeno pravděpodobně tím, že ve věku předinformačním steganografii za vědecký obor považovat prakticky nešlo (viz úvodní stati o historii) a v moderních, digitálních dějinách se steganografie dostává do povědomí odborné veřejnosti až v 90. letech 20. století. Navíc stále zůstává ve stínu kryptografie, která nachází podstatně více praktických aplikací v běžném lidském životě 21. století. V současné době probíhá pozvolný pokrok ve dvou viditelně oddělených rovinách: formální (správa klíčů užitých ve steganografických algoritmech, dokazatelná bezpečnost, zaručené meze steganografické kapacity coverů, …) a neformální, kde se uplatňují spíše originální nápady založené na bystrém „selském“ rozumu než na teoretické informatice a/nebo silné matematice. Text této práce se věnuje převážně metodám druhé kategorie a separuje je podle typu coveru do tří kapitol (2-4). Pozornosti neuniká ani stegoanalýza. Výzkum v této oblasti je veden z nemalé části experimentálně a úspěch je často založen na odhadu a citu odborníka. Pátá kapitola se zmínkou dotýká některých obecných analytických praktik a větší prostor pak věnuje reportu o vlastním úsilí: prověření schopnosti obecného učícího se bayesovského klasifikátoru rozpoznávat steganograficky ošetřené datové objekty od netknutých. Dosavadní (mně známé) experimenty podobného rázu (viz např. úvodní stati kap. 5.3) operují se specifickými stegosystémy a staví proti nim opět specifické, doslova na míru šité analytické nástroje (někdy dokonce vyvinuté výhradně pro použití v daném jednom experimentu). Postavit proti jednotlivým stegosystémům obecný bayesovský klasifikátor, jak to (pravděpodobně) poprvé učinila tato práce, má následující výhody a motivaci. ➢ Je odbourána potřeba konstrukce úzce profilovaného analytického nástroje pro každý stegosystém (bayesovské filtry jsou navíc implementačně dobře zvládnuté a v podobě hotového softwaru běžně dostupné). To se může zdát kontraproduktivní, ovšem ony specifické analytické nástroje rozhodně nemají běžně schopnost se učit a mnohdy jsou založené v jádru na stejné myšlence jako bayesovský klasifikátor – monitorování statisticky vyčíslitelných vlastností objektů. Proto by bayesovský filtr mohl mít alespoň částečný úspěch. ➢ Bayesovské filtry jsou mezi správci internetových serverů známým pojmem – používají se běžně k třídění pošty (např. na spam a žádoucí poštu). Protože v dnešní době lze očekávat steganografickou komunikaci právě na Internetu a protože e-mail je jedním z nejrozšířenějších elektronických komunikačních prostředků, bylo by přinejmenším zajímavé vědět, jak si klasický nástroj na třídění pošty (a to v jakémkoli smyslu) povede při oddělování zpráv se steganograficky skrytou informací od zpráv ostatních. Provedený experiment nicméně abstrahuje od specifik e-mailu a zaměřuje se jen na vlastní data, která by tajnou informaci mohla nést – text či obrázky. Bayesovský klasifikátor byl vytrénován a následně otestován na stegogramech pocházejících ze čtyř známých stegosystémů (viz kap. 5.3.2). Každý test je dokumentován ➢ jeho motivací a očekávaným výsledkem; ➢ charakteristikou testovaných objektů a konfigurací použitého softwaru; ➢ výsledky samotné zkoušky rozlišování objektů (po vytrénování klasifikátoru); ➢ komentářem naměřených výsledků vč. pokusu o jejich zdůvodnění.
62
Nalézt sjednocující závěr, který by charakterizoval výsledky všech testů, je v tomto případě obtížné; lze nicméně konstatovat, že i velmi komplexní a pokročilý filtr CRM114 se zapojením klasifikátoru typu hyperspace má vážné problémy detekovat systematické stopy embeddingu tajné zprávy v objektech obrázkového typu (bitmapa, JPEG). S textovými daty si CRM114 poradil podstatně lépe; zde idea bayesovského rozlišování rozhodně nepadla na mrtvou půdu. Obecně pak platí, že tajné zprávy v podobě vysokoentropních bitových řetězců (tedy např. komprimované či šifrované zprávy) jsou detekovatelné podstatně hůře než zprávy nízkoentropní. To přímo vyplývá z vlivu embeddingu těchto dvou typů zpráv na statistické vlastnosti coveru (těm se tato práce detailně nevěnuje). Šestá kapitola tohoto textu je dedikována programu SMTPd, který byl v rámci diplomové práce vyvinut. Jedná se o unixový rezidentní program, který si klade za cíl zpřístupnit schopnosti steganografie erudovanému i běžnému uživateli e-mailu, a to formou co nejméně zatěžující a pokud možno transparentní. Běžící proces SMTPd funguje jako prostředník mezi (typicky) poštovním klientem uživatele a serverem, který poštu doručuje příjemci nebo přeposílá dále do sítě. SMTPd naslouchá běžnému vyjednávání poštovním protokolem SMTP mezi klientem a serverem a do komunikace zasáhne v momentě, kdy klient předává serveru vlastní zprávu, kterou uživatel napsal. Tuto zprávu pozdrží, steganograficky ji ošetří specifikovaným způsobem (zavoláním externího filtru) a výsledný stegogram pošle v načatém SMTP vyjednávání serveru, jakoby to bylo autentické sdělení zaslané uživatelem. Ten musí pouze jednou na vhodném síťovém uzlu SMTPd nakonfigurovat a spustit a pak může těžit z kamuflážních schopností steganografie, aniž by musel modifikovat klientský poštovní software či reálný poštovní server nebo musel každý odesílaný mail ručně kódovat. Zdrojový kód SMTPd (v jazyce C) je k této práci přiložen na CD. Dalšího vědeckého pokroku na poli steganografie se zajisté dočkáme, nicméně jeho tempo bude (alespoň v brzké době) pravděpodobně setrvávat na pozvolné úrovni. Výzkum ve steganografii očekává spíše chytré ideje, kterým směrem se vydat, než že by nabízel mnoho otevřených konců, na které stačí navázat. K očekávaným tématům blízké budoucnosti patří: ➢ hledání nových, lépe vypovídajících statistických vlastností datových objektů různých typů; ➢ utajené počítání v prostředí operačního systému, který je pod kontrolou útočníka-analytika; ➢ efektivní metody likvidace stop embeddingu bez poškození viditelné informační hodnoty objektu.
63
Dodatek:
Bibliografické citace
[1]
Davern, P., Scott, M. Steganography: its history and its application to computer based data files. [internal report] School of Computer Applications, Dublin City University, 1995. URL (květen 2008).
[2]
Song, K. Fast and Efficient Steganalysis Methods for Spread Spectrum Steganography. [report] Department of Statistics, Florida State University, 2007. URL (květen 2008).
[3]
Judge, J. C. Steganography: Past, Present, Future. [report] Lawrence Livermore National Laboratory, U. S. Department of Energy, 2001. URL (květen 2008).
[4]
Lewandowski, D., Palmisano, M. Steganography. [paper] DePaulCTI, 2004. (květen 2008).
[5]
Herodotus. The Histories: Polymnia. URL (květen 2008).
[6]
Brainos, A. C. II. A Study Of Steganography And The Art Of Hiding Information. [study] East Carolina University. URL (květen 2008).
[7]
Kolektiv. Battle of Thermopylae, Demaratus, Gerolamo Cardano, Herodotus, Nazca Lines In Wikipedia, The Free Encyclopedia. URL (květen 2008).
[8]
Trithemius, J. Steganographia. URL (květen 2008).
[9]
Porta, G. Magiae Naturalis. URL (květen 2008).
[10]
Petitcolas, F. A. P., Anderson, R. J., Kuhn, M. G. Information Hiding – A Survey In Proceedings of the IEEE, 87(7), 1999, s. 1062-1078. URL (květen 2008).
[11]
Owens, M. A Discussion of Covert Channels and Steganography. [paper] SANS Institute, 2002. URL (květen 2008).
[12]
Hopper, N. J. Toward a Theory of Steganography. [thesis] School of Computer Science, Carnegie Mellon University, 2004. URL (květen 2008).
64
[13]
Fortini, M. Steganography and Digital Watermarking: a global view. [course material] Laboratorio di Informatica Avanzata, Università di Bologna, 1998. URL (květen 2008).
[14]
Kolektiv. Video and movie technology In Wikimedia Commons. URL (květen 2008).
[15]
Currie, D. L. III, Campbell, H. Implementation and Efficiency of Steganographic Techniques in Bitmaped Images and Embedded Data Survivability Against Lossy Compression Schemes. [master's thesis] Naval Postgraduate School, United States Navy, 1996. URL (květen 2008).
[16]
Bennett, K. Linguistic Steganography: Survey, Analysis, and Robustness Concerns for Hiding Information in Text. [tech report] Center for Education and Research in Information Assurance and Security, Purdue University, 2004. URL (květen 2008).
[17]
Wayner, P. Disappearing Cryptography: Information Hiding: Steganography & Watermarking. 2. vydání. Morgan Kaufmann, 2002. ISBN 1558607692.
[18]
Kolektiv. Huffman Coding In Wikipedia, The Free Encyclopedia. URL (květen 2008).
[19]
Chapman, M. T. Hiding the Hidden: A Software System for Concealing Ciphertext as Innocuous Text. [master's thesis] College of Engineering & Applied Science, University of WisconsinMilwaukee, 1997. URL (květen 2008).
[20]
Kennedy, J. F. The Inaugural Address. [speech] Washington, D. C., 20.1.1961. URL (květen 2008).
[21]
Shakespeare, W. The Complete Works of William Shakespeare In Project Gutenberg. URL (květen 2008).
[22]
Anderson, R., Needham, R., Shamir, A. The Steganographic File System. [paper] 1998. URL (květen 2008).
[23]
Neznámý autor. Internet Protocol. [RFC] Information Sciences Institute, University of Southern Carolina, 1981. URL (květen 2008).
[24]
Neznámý autor. Transmission Control Protocol. [RFC] Information Sciences Institute, University of Southern Carolina, 1981. URL (květen 2008).
[25]
Fridrich, J., Du, R., Long, M. Steganalysis of LSB Encoding in Color Images In Proceedings of the IEEE International Conference on Multimedia and Expo. 2000. URL (květen 2008).
[26]
Johnson, N. F. Steganalysis In Information Hiding Techniques for Steganography and Digital Watermarking, s. 79-93. Artech House, 2000. ISBN 9781580534154.
[27]
McCullagh, D. Secret Messages Come in .Wavs In Wired News. 2002. URL (květen 2008).
65
[28]
Berg, G., Davidson, I., Ming-Yuan, D., Goutam, P. Searching For Hidden Messages: Automatic Detection of Steganography. [paper] Computer Science Department, University at Albany, State University of New York, 2003. URL (květen 2008).
[29]
Provos, N., Honeyman, P. Detecting Steganographic Content on the Internet. [tech report] Center for Information Technology Integration, University of Michigan, 2001. URL (květen 2008).
[30]
Graham, P. A Plan for Spam. [essay] 2002. URL (květen 2008).
[31]
Yerazunis, W. S. The CRM114 Discriminator Revealed!. [documentation] 2005. URL (květen 2008).
[32]
Postel, J. B. Simple Mail Transfer Protocol. [RFC] Information Sciences Institute, University of Southern Carolina, 1982. URL (květen 2008).
[33]
Freed, N., Rose, M. T., Stefferud, E. A., Crocker, D. SMTP Service Extensions. [RFC] 1995. URL (květen 2008).
[34]
Klensin, J. Simple Mail Transfer Protocol. [RFC] AT&T Laboratories, 2001. URL (květen 2008).
[35]
Josefsson, S. The Base16, Base32, and Base64 Data Encodings. [RFC] Simon Josefsson Datakonsult, 2006. URL (květen 2008).
[36]
Crocker, D. H. Standard for the Format of ARPA Internet Text Messages. [RFC] Department of Electrical Engineering, University of Delaware, 1982. URL (květen 2008).
[37]
Resnick, P. Internet Message Format. [RFC] QUALCOMM Incorporated, 2001. URL (květen 2008).
66