Pravděpodobně jste někdy slyšeli o šifrování a o tom, jak přibližně funguje. V Linuxu (a nejen v něm) k němu můžete v praxi využívat třeba velmi silný nástroj TrueCrypt nebo třeba klasické GnuPG. Existují ale situace, ve kterých není možné vůbec existenci dat prozradit. Ta totiž sama o sobě může vyvolat podezření a stále existují na světě oblasti, kde se z vás mohou pokusit heslo doslova vymlátit.
Řešením je steganografie. Obecný princip vysvětlí nejlépe encyklopedie:
Steganografie je věda zabývající se utajením komunikace prostřednictvím ukrytí zprávy. Zpráva je ukryta tak, aby si pozorovatel neuvědomil, že komunikace vůbec probíhá. Zachycení zprávy se rovná prolomení steganografie.
(Zdroj: Wikipedie)
V případě počítačové steganografie se tedy jedná o ukrytí dat uvnitř jiných dat. Ta musí být dostatečně proměnlivá, aby byla stále platná i ve chvíli, kdy se do nich zamíchají naše ukrývané informace. Pro tyto účely jsou nejvhodnější multimediální informace jako je obrázek, video či zvuková nahrávka. Mírná obměna dat u nich nehraje žádnou roli a nedochází ke znehodnocení dat. Nejčastěji se používají obrázky jpeg. Ty jsou dnes naprosto běžné a můžete je v klidu nosit třeba v digitálním fotoaparátu. Ten vše zobrazí a nikdo nepojme podezření.
Našim cílem je ukázat si, jaké nástroje je možné pro steganografii využít v Linuxu. Nástrojů je k dispozici celá řada, my si řekneme o těch nejznámějších. Jako zdrojový obrázek použijeme obrázek serveru, který má téměř jeden megabajt. Do něj ukryjeme soubor Tajne.jpg, který má 40 KB. Obecně se může jednat o libovolná data, nemusí jít o obrázek v obrázku. Stejně tak to může být třeba soubor Moje_hesla.odt.
Jak vidíte, na pohled se obrázky nijak neliší, přesto jsou v tom druhém utajené informace. Pokud s nimi budete pracovat (samozřejmě se pokuste získat ukrytá data – stojí to za to), pracujte s originální verzí – klikněte si.
Pár rad na začátek: Ukrývaný soubor musí být menší než ten, ve kterém ukrýváme. Čím větší je rozdíl, tím složitější je v souboru objevit nižší entropii a získat podezření na utajená data. Pokud si chcete být jisti, že se k datům nikdo nedostane, určitě je ještě (před procesem nebo během něho) nechejte zašifrovat.
Steghide
Steghide je řádková utilita, která sice není pro běžného uživatele nejpříjemnější, ale hodí se při dávkovém zpracování souborů. Pokud potřebujete ukrýt větší množství souborů, je poměrně jednoduché napsat skript, který vše provede dávkově.
Základní práce s programem vypadá takto:
$ steghide embed -cf Server.jpg -ef Tajne.jpg
Do souboru Server.jpg
ukrýváme obsah souboru Tajne.jpg
. Program se ještě zeptá na passhphrase, která bude použita pro rozprostření tajných dat a jejich zamíchání do krycího souboru. Bez tohoto hesla není možné informace ze souboru získat.
Enter passphrase: Re-Enter passphrase: embedding "Tajne.jpg" in "Server.jpg"... done
Výsledkem je pozměněný soubor Server.jpg
. Ten je přibližně stejně velký jako originál, ale už obsahuje naše tajná data. Tímto způsobem také vznikl pravý obrázek nahoře.
O obrázku si můžeme nechat zjistit nějaké informace:
$ steghide info Server.jpg "Server.jpg": format: jpeg capacity: 56,7 KB Try to get information about embedded data ? (y/n) y Enter passphrase: embedded file "Tajne.jpg": size: 39,0 KB encrypted: rijndael-128, cbc compressed: yes
Vidíte, že program oznámil, kolik informací je možné do souboru uložit (56,7 KB) a zeptal se nás na tajné heslo. Podle něj zjistil, že uvnitř jsou skutečně data a vypsal o nich další údaje. My se nyní můžeme pokusit data získat zpět:
$ steghide extract -sf Server.jpg Enter passphrase: wrote extracted data to "Tajne.jpg".
Opět jsme byli dotázáni na heslo a data se opět vykopírovala do souboru s původním názvem.
(Mimochodem heslo k příkladovému obrázku zní „stojitozato“. Můžete si zkusit původní soubor získat a prohlédnout.)
Další možnosti
Pokud máte rádi grafická klikátka, můžete zkusit program SteGUI, který umí kromě obrázků steganografii také nad audio soubory (WAV a AU). Bohužel obvykle není součástí distribucí, takže si jej budete muset nainstalovat ručně. Jeho rozhraní je sice trochu strohé, ale zřejmě poslouží dobře.
Velmi zajímavě vypadá také steganografický souborový systém StegFS. Ten funguje pod FUSE a je schopen vám nabídnout kompletní diskovou strukturu ukrytou pomocí steganografie. Práce s diskem by podle informací z webu měla být stejná jako práce s běžným souborovým systémem.
Dalšími nástroji, které můžete vyzkoušet jsou řádkové utility z balíku Stegtools nebo program OutGuess. Jeho výhodou je multiplatformnost a můžete jej používat v systémech Linux, *BSD, Solaris, AIX, HP-UX, Mac OS X a MS Windows.
Čím to detekovat a lámat
Možná vás také při čtení tohoto článku napadlo, jak je možné informace ze souboru vylámat násilím. I k tomu existuje několik nástrojů. Pro detekci můžete využít nástroje Stegdetect, který umí v obrázcích detekovat několik různých steganografických metod. Na odkazovaném webu je stručně popsán i princip funkce.
Pro útok hrubou silou pak můžete nasadit stegbreak
. Ten využívá klasický slovníkový útok a pokud se mu podaří odhalit heslo, získá data z originálního obrázku.
(Obrázek serveru vyfotil Rodzilla a je k dispozici pod licencí CC-BY-2.5.)