Steganografie: využíváme obrázek jako krycí objekt

V minulém příspěvku jsme se věnovali tomu, co je to steganografie. Dnes se podíváme, jakým způsobem vložit do obrázku tajnou zprávu nebo vodoznak.

Steganografii lze využít nejen k přenosu tajné zprávy, ale i k ochraně obrázků před jejich změnou nebo za účelem prokazování autorství, kdy se do obrázku vkládá tzv. digitální vodotisk (digital watermarking). Jako ochrana před nežádoucími změnami v obrázku se používá tzv. slabý vodoznak (fragile watermarking), který slouží ke zjištění, zda s daným obrazem nebylo manipulováno. Pokud ano, tak dojde k jeho poškození. Jako ochrana před neoprávněným použitím i částí díla se pak používá silný vodoznak (robust watermarking), který nelze z díla jednoduše odstranit a zůstává v něm i po mnoha úpravách.

Mějme obrázek o velikost 320×240 obrazových bodů, který je vyveden ve 24bitové barevné hloubce. Pokud je použita 24bitová barevná hloubka, znamená to, že výsledná barva vznikne kombinací červené (red, zkr. R), zelené (green, zkr. G) a modré (blue, zkr. B) barvy, přičemž na vyjádření každé barvonosé složky máme k dispozici přesně 8 bitů. Červenou barvu pak můžeme zapsat v hexadecimální soustavě jako FF0000, což je v binární 11111111 00000000 00000000, zelenou jako 00FF00, což je v binární 00000000 11111111 00000000 a konečně modrou jako 0000 FF, což je v binární 00000000 00000000 11111111.

Jestliže na uložení informace o barvě jednoho bodu obrázku je potřeba přesně 24 bitů, máme k dispozici nějakých 16.777.216 barev, slovy šestnáct miliónů (můžeme spočítat jako 2^24). Výsledná velikost obrázku je pak dána součtem samotných obrazových dat 320x240x24 a hlavičky, takže v našem případě bude výsledná velikost něco málo přes 225kB. V praxi však mají obrázky o této velikosti zpravidla menší velikost, neboť je použita nějaká metoda komprese.

Pokud chceme do takového obrázku nějakou informaci ukrýt, musíme změnit barvu jednotlivých pixelů. Změníme-li nejméně významný bit (least significant bit, zkr. LSB), nikdo si této změny nevšimne, protože lidské oko je schopno zaznamenat jen určité rozdíly mezi barvami. Pokud si obraz rozdělíme do 3 x 8 bitových rovin, jasně uvidíme, která rovina a který kanál nese nejvíce informací. Logicky se pak nabízí umístit vodoznak do té bitové roviny, která informací nese nejméně, a kde bude tajná zpráva nebo vodoznak nejméně nápadný.

Jestliže první bod obrázku nabývá např. hodnoty 000000 000000 111111, můžeme hodnotu tohoto bodu přepsat na 000000 000000 111110. Ale nemusíme měnit jen LSB, můžeme změnit i více bitů, ale v tom případě roste riziko, že dojde k takové změně, které by si již někdo mohl povšimnout. Budeme-li měnit LSB u každého kanálu, můžeme do obrázku, zakódovat informaci o velikosti přibližně 28kB (320×240*3/8/1024). Přibližně proto, že si musíme dát pozor na jednobarevné plochy a hrany, protože zde by pixel s příliš odlišnou barvou mohl upoutat pozornost. Za tímto účelem se používají speciální programy, které detekují plochy a hrany a mění třeba jen LSB. Kromě toho jsou i schopny informaci, která je do obrázku přidávána, zašifrovat, takže bez znalosti klíče ji nelze získat.

Vkládáme digitální vodotisk

Nyní, když už víme, na jakém principu digitální steganografie funguje, může do obrázku vložit digitální vodotisk. Ten zpravidla bývá menší než obrázek, jehož plocha jím má být vyplněna. Vodoznakem může být v podstatě cokoliv, obrázek, piktogram nebo jen pár písmen. Nebudeme ho ale do obrázku vkládat přímo, nýbrž ho zašifrujeme a výsledek vizualizujeme. Tím získáme vodoznak, který bude vypadat jako náhodný šum a teprve ten budeme vkládat do obrazu za použití funkce XOR. To znamená, že jestliže je prvních 8 bitů vodoznaků reprezentováno hodnotou 11101101 a LSB prvních 8 pixelů obrázku nabývá hodnoty 10101010, tak po aplikování této funkce bude hodnota prvních 8 LSB změněna na 01000111.

Převrácení, otočení, zvětšení, zmenšení a použití filtrů

Jistě vás napadne, co asi udělá s touto tajnou informací úprava obrázku. Záleží na tom, o jakou úpravu se bude jednat. Problém nebude, pokud dojde k převrácení nebo otočení obrázku, ovšem v okamžiku, kdy dojde k použití nejrůznějších filtrů, jeho zvětšení nebo dokonce zmenšení, při kterém dochází k převzorkování obrazu a průměrování hodnot, může vést tato operace k částečné nebo i úplné ztrátě skrytých informací. I s tímhle je třeba počítat, a zohlednit to v algoritmu, který bude informace do obrázku vkládat. Určitým řešením může být např. opakování dané informace, kdy je větší šance, že informace zůstane alespoň v části obrázku zachována.

Změna formátu a barevné hloubky

Ke znehodnocení skrytých dat však může dojít i tehdy, když je obrázek uložen do některého z mnoha různých formátů se ztrátovou kompresí jako je např. jpg, nebo když dojde redukci barevné palety např. při převodu do formátu gif za účelem snížení velikosti daného obrázku. V těchto případech je ztráta tajné informace téměř jistá, obzvlášť pokud byla před vložením do obrázku šifrována, přičemž použit může být symetrický i asymetrický klíč. Určitým řešením je převést tajnou informaci na obrázek a až ten do obrázku vložit. V takovém případě je šance, že tajná informace přežije v obrázku nejrůznější úpravy výrazně vyšší. Ostatně na tomto principu je založena ochrana právě pomocí digitálního vodotisku (digital watermarking).


Pokud vás tento příspěvek zaujal, sdílejte ho!
Share on FacebookShare on LinkedInTweet about this on TwitterShare on Google+Email this to someonePrint this page

Štítky:

  1. Michal Maxa

    Zajímavý článek, který v základních rysech pochopí i poučený laik. Díky za něj.


K článku “Steganografie: využíváme obrázek jako krycí objekt” se zde nachází 1 komentář.

Diskuse na tomto webu je moderována. Pod článkem budou zobrazovány jen takové komentáře, které nebudou sloužit k propagaci konkrétní firmy, produktu nebo služby. V případě, že chcete, aby z těchto stránek vedl odkaz na váš web, kontaktujte nás, známe efektivnější způsoby propagace.

Přihlášeným uživatelům se tento formulář nezobrazuje - zaregistrujte se.

Jméno:(požadováno)
E-mail:(požadováno - nebude zobrazen)
Web:

Text vaší reakce: