Masarykova univerzita Fakulta informatiky
Bezpečnostní aspekty souborových systémů a bezpečnost dat zajištěná šifrováním disků
Bakalářská práce Radek Macek
Brno, jaro 2011
Prohlášení 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ání používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj.
Poděkování Na tomto místě bych rád poděkoval vedoucímu mé bakalářské práce dr. Janu Krhovjákovi za časovou investici, podmětné připomínky a vstřícnost, se kterou se věnoval mému snažení.
Vedoucí práce: Mgr. et Mgr. Jan Krhovják, Ph.D.
Shrnutí Tato práce představuje úvod do problematiky bezpečnosti dat na disku nebo v síti, čehož se dosahuje steganografickými a šifrovacími metodami. Zabývá se možnostmi souborových systémů určených pro tyto účely a jejím záměrem je podat srozumitelný výklad za uvedení nezbytných znalostních podkladů. V práci je proveden rozbor freeware programů, které jsou schopny šifrovat celý obsah disku nebo jeho části. Největší pozornost je zaměřena na program TrueCrypt. Jednotlivé programy jsou rozlišeny na základě použitých módů operací a šifer, které se u nich používají. Tyto šifry i módy jsou zde vysvětleny.
Klíčová slova steganografický souborový systém, steganografie, kryptografie, bezpečnost, IEEE standardy, módy operací
Obsah Kapitola 1 ........................................................................................................................................... 6 Úvod............................................................................................................................................... 6 1.1 Klasické souborové systémy ............................................................................................ 6 Kapitola 2 ........................................................................................................................................... 8 Steganografie ................................................................................................................................. 8 2.1 Klasifikace steganografie ................................................................................................. 8 2.2 Ukrytí tajné zprávy do cover média ................................................................................. 9 Kapitola 3 ......................................................................................................................................... 12 Steganografické souborové systémy ............................................................................................. 12 3.1 Základní pojmy používané u souborových systémů ........................................................ 12 3.2 První návrhy steganografického FS ................................................................................ 13 3.3 StegFS: A Steganographic File System for Linux ............................................................. 14 3.4 StegFD: A Local Steganographic File System .................................................................. 15 Kapitola 4 ......................................................................................................................................... 17 Souborové systémy v síti .............................................................................................................. 17 4.1 Napster ......................................................................................................................... 17 4.2 Gnutella ........................................................................................................................ 17 4.3 Freenet ......................................................................................................................... 17 4.4 The Free Haven Project ................................................................................................. 19 4.5 NFS – Network File System ............................................................................................ 20 Kapitola 5 ......................................................................................................................................... 21 Steganografické souborové systémy v síti ..................................................................................... 21 5.1 Mnemosyne .................................................................................................................. 21 5.2 Mojitos.......................................................................................................................... 22 5.3 Ukrývání aktualizací ve steganografickém FS ................................................................. 23 5.4 Obrana proti analýze provozu........................................................................................ 24 Kapitola 6 ......................................................................................................................................... 26 Šifrování disků .............................................................................................................................. 26 6.1 Možnosti šifrování disků ................................................................................................ 26 6.2 Módy operací ................................................................................................................ 28 6.3 IEEE 1619-2007 standardy ............................................................................................. 29 Kapitola 7 ......................................................................................................................................... 32 Analýza šifrovacích programů ....................................................................................................... 32 7.1 TrueCrypt ...................................................................................................................... 32 7.2 FreeOTFE....................................................................................................................... 35 7.3 Další šifrovací programy ................................................................................................ 36 Kapitola 8 ......................................................................................................................................... 38 Závěr ............................................................................................................................................ 38
Kapitola 1 Úvod Žijeme v době, kdy se s počítači setkáváme každý den. Nachází se v mobilních telefonech, televizi, autech, prostě všude, kde nám mohou ulehčit život. Nejčastěji si ale pod pojmem počítač představíme stolní počítač nebo notebook. Máme na nich uložena svoje data a chtěli bychom k nim mít zajištěný přístup a garantovánu jejich bezpečnost. S příchodem lokálních sítí a internetu vznikly nové nároky na bezpečnost. Již se neřeší pouze případy, kdy se útočník fyzicky zmocní daného počítače, ale počítá se také s možností narušení bezpečnosti z jiného počítače v síti. Přístupů k řešení bezpečnosti je mnoho. Existují aktivní prvky, jako je firewall, který reaguje na aktuální útoky ze vzdáleného počítače, a pasivní prvky, jako je šifrování, kde musíme znát heslo, abychom se dostali ke svým datům. Klasické kryptografické systémy [28] jsou založené např. na NP-těžkých problémech (jako je faktorizace dvou velkých prvočísel). Je lehké spočítat funkci jedním směrem, ale je extrémně složité ji výpočetně najít opačným směrem bez znalosti nějaké speciální informace. Spoléhá se tedy více na výpočetní bezpečnost než na teoretickou. Žádný útočník nemá přístup k neomezené výpočetní síle. Pro kryptosystém, který má být výpočetně bezpečný, platí, že složitost jakéhokoliv úspěšného útoku musí být větší než výpočetní možnosti útočníka. Další ochranné mechanismy zajišťují steganografické metody, které ukrývají samotnou existenci informace. Se steganografií souvisí pojem stegoanalýza [8, 9]. Jejím cílem je identifikovat podezřelé informační proudy a rozhodnout, zda obsahují skrytou informaci. Pokud je to možné, obnoví ji. Narozdíl od kryptoanalýzy, kde zachycená šifrovaná data jasně obsahují zprávu, stegoanalýza začíná s větším počtem podezřelých proudů a postupně jejich množství snižuje. Využívá se především statistické analýzy s použitím pokročilejších statistických metod.
1.1
Klasické souborové systémy
Klasické souborové systémy (FS – File System) můžeme rozdělit podle operačních systémů. U Windows je to NTFS (dříve FAT32) a Linux je schopný pracovat s více FS: ext2, ext3, ext4, JFS, XFS a jiné. U Mac OS narazíme na HFS+. Souborové systémy musí udržovat konzistenci dat na disku, což znamená, že při operacích na datech nesmí dojít k jejich ztrátě nebo nechtěné změně. Některé souborové systémy se snaží čelit problémům s možnou ztrátou dat při výpadcích proudu pomocí tzv. žurnálování. To je technika, která zajišťuje integritu dat a jejím principem je uchovávání chronologického záznamu prováděných operací, do kterého se zapisují všechny prováděné činnosti. Po restartu jsou nekonzistentní data obnovena. Bezpečný přístup k souborovému systému může být založen na ACL (Access Control List) nebo na schopnostech (capabilities). ACL je seznam, kdy ke každému objektu jsou přiřazeni uživatelé a operace, které daný uživatel může provádět. Modernějším způsobem jsou tzv. role, kdy jsou oprávnění přidělována rolím a jednotlivé role jsou přidělovány uživatelům. U capability-based security uživatel spustí program, který nemá žádná práva. Až poté se uživatel rozhodne, která práva danému programu udělí. NTFS využívá již zmíněný ACL a další 3 koncepty pro objekt: vlastnictví, dědění oprávnění a kontrolování. Vlastnictví objektu je schopnost přiřadit přístupové práva jiným uživatelům jeho vlastní-
6
kem. Dědění oprávnění automaticky přiřazuje práva pro soubory v daném adresáři. Kontrolování povoluje administrátorovi monitorovat změny v souborech nebo složkách. Linuxové systémy taktéž většinou využívají ACL nebo RBAC (Role-Based Access Control). Další nástroje pro zvýšení bezpečnosti jsou například: xlock, který automaticky uzamkne počítač, integrity checker, PGP, Kerberos, CIPE (Cryptographic IP Encapsulation), který šifruje data na síťové úrovni, shadow passwords a mnohé další. [29] Cílem teoretické části bakalářské práce je analýza bezpečnostních vlastností různých souborových systémů, ať již na lokálním nebo sdíleném médiu, a metod dodatečného zabezpečení dat na disku, zejména pomocí šifrování disku. Práce slouží jako úvod do problematiky zabezpečení dat na disku a souborových systémech a skládá se z několika částí. Druhá kapitola se zaměřuje na zabezpečování souborů pomocí steganografie. Třetí se zabývá steganografickými souborovými systémy určenými pro lokální počítače. Další 2 části rozebírají problematiku síťových FS a předposlední část se zaměřuje na šifrování celého obsahu disku. Praktická část práce provádí srovnání a bezpečnostní analýzu dostupných produktů pro šifrování disku.
7
Kapitola 2 Steganografie Steganografie je vědní disciplína, která se zabývá ukrytím zprávy uvnitř jiné zprávy. Samotné slovo pochází z řeckého „steganos“ – „ukrytý“ a „graphein“ – „psát“. Informace jsou ukryty takovým způsobem, že nikdo kromě oprávněného uživatele neví o jejich existenci. Steganografie mnohdy využívá kryptografických technik. Nejdříve je zpráva šifrována, aby po odhalení její existence nebylo možné jednoduše přečíst její obsah, poté se přidá do cover média (či pouze cover), které se pozmění tak, aby mohlo tuto zprávu obsahovat. Tato změna však není viditelná navenek. V informatice jako cover mohou sloužit např. audio/video soubory. Z historie známe mnoho případů užití steganografie. Kolem roku 491 př. n. l. poslal Demaratus varování o nadcházejícím perském útoku na Řecko na dřevěné destičce zalité voskem, na němž byla vyryta nevinná zpráva. Ve druhé světové válce se využívaly mikrotečky. Jednalo se o miniaturizaci textu či grafiky do prostoru velkého asi 1 mm. Mikrotečky byly posílány v obyčejných dopisech jako součást interpunkčních znamének. Výhoda steganografie nad kryptografií samotnou je taková, že zprávy na sebe nepřitahují pozornost. Neukrytá kódovaná zpráva vždy vzbudí podezření a sama o sobě může být usvědčující. V digitálním světě jsou obě disciplíny zamýšleny jako ochrana před nepovolanými uživateli. Nejlepší cestou k ochraně svých dat je využití víceúrovňového zabezpečení, v tomto případě kombinace ukrytí zprávy a jejího zakódování. Můžeme rozlišit mezi stegosystémem s pasivním a aktivním útočníkem. Pasivní útočník pouze monitoruje komunikaci. Na každé zprávě může spustit několik statistických testů, ale nesmí danou zprávu pozměnit. Na druhou stranu aktivní útočník manipuluje se zprávami, aby zamezil možnosti skryté komunikace. V tomto případě musí informace ustát různé překódování coveru. Zde je doporučeno použít kódování s opravou chyb. Typickými praktickými aplikacemi jsou watermarking [2] a fingerprinting. Obě aplikace se používají pro ochranu autorských práv. Watermarking zanechává na digitálním produktu skryté informace, které se později dají použít k prokázání vlastnictví majitele nebo k vystopování šíření a replikace tohoto produktu. Fingerprinting je velice podobný. Zanechává na produktu sériové číslo, podle kterého je možno vystopovat určitou kopii autorsky chráněných dat. Ideální watermark je nezjistitelný a v případě zničení může být obnoven.
2.1
Klasifikace steganografie
Steganografii můžeme rozdělit podle využití klíče na: - steganografie bez klíče; - steganografie se soukromým klíčem; - steganografie s veřejným klíčem. Steganografie bez klíče je steganografický způsob ukrývání informací, který nevyžaduje šifrovací klíč. Je to nejméně bezpečná metoda založená na předpokladu, že žádná nepovolaná strana si není vědoma existence této zprávy. Steganografie se soukromým klíčem se využívá u systému, který vyžaduje výměnu tajemství důležitého při komunikaci. Tato metoda je více náchylná na zachycení. Pokud někdo ukrytou zprávu zachytí, je k jejímu porozumění potřeba znát soukromý klíč.
8
Steganografie s veřejným klíčem využívá kombinace veřejného a privátního klíče při zabezpečení tajné komunikace. Jedná se o mnohem bezpečnější cestu implementování steganografie, protože dokáže zpracovat robustnější a prozkoumanější šifrovací technologii veřejného klíče. Dále existují 2 způsoby, jak ukrývat informace. Buď můžeme ukrýt tajnou zprávu do cover média nebo můžeme použít steganografický souborový systém.
2.2
Ukrytí tajné zprávy do cover média
Téměř všechny digitální souborové formáty se dají použít pro ukrývání informací, ale formáty, které mají vysoký stupeň redundance, se k tomuto účelu hodí více. Redundance se dá definovat jako bity objektu, které poskytují přesnost více než nutnou pro použití objektu. Redundantní bity jsou ty, které mohou být pozměněny bez toho, aby tato změna byla lehce zjistitelná. Velikost ukrývané informace bývá většinou závislá na velikosti coveru. Informace nesmí být příliš velká, protože čím je vetší, tím větší je šance na její odhalení.
Obrázek 2.1: Rozdělení steganografie podle cover médií Kódování tajných zpráv do textu je považováno za jeden z nejtěžších způsobů ukrývání zpráv, protože textu, na rozdíl od obrázků a audio souborů, schází redundantní informace. Používá se datová komprese, která zakódovává informaci z jedné reprezentace do jiné reprezentace. Další technika se nazývá line-shift kódování a zahrnuje posunutí každé řádky textu nahoru nebo dolů asi o 3 cm. V závislosti na vertikální pozici řádku vzhledem k pevnému řádku se do skryté zprávy zakóduje určitá hodnota. Word-shift kódování funguje velice podobně, jenom se u této metody využívá horizontálních mezer mezi slovy. Tato metoda je méně viditelná než line-shift kódování, potřebuje však textový formát, který podporuje variabilní délku mezer. Nevýhoda tohoto způsobu je lehkost, s jakou může být text pozměněn, ať už se jedná o změnu samotného textu nebo převedení do jiného formátu (např. z .txt do .pdf). [8] Kódování tajných zpráv do audio souborů je náročný způsob ukrývání informací, protože lidský sluch je velice citlivý na nejrůznější změny. Je tudíž těžké přidat nebo odstranit informaci v souboru tak, aby si toho uživatel při poslechu nepovšiml. Jedinou slabinou, které se musí využít, je překrytí slabších zvuků zvuky hlasitějšími. Při kódování zprávy se musí brát v úvahu i přenosové médium od odesilatele k příjemci. Kvůli větší velikosti nejsou audio soubory tak populární pro ukrývání dat, jako obrázky. Frekvenční maskování je metoda, která pracuje na principu přidání náhodného šumu (zprávy) do původního vzorku na podobné frekvenci. Zazní-li totiž současně dva zvuky, které jsou si blízké frekvencí, tišší zvuk zanikne v tom hlasitějším. Obdobou je časové maskování. Zazní-li tišší zvuk těsně před, nebo po silnějším zvuku, nedokáže ho lidský sluch rozeznat. Další metodou může být využití ozvěny (Echo Data Hiding). Pracuje na principu, že lidský sluch nedokáže vnímat krátké ozvěny. Informace se do krycího zvukového signálu vkládá přidáváním krátkých ozvěn s dvěma různými délkami mezery, které znamenají 0 nebo 1. [8, 9, 10]
9
Kódování tajných zpráv do obrázků je v dnešním digitálním světě jednoznačně nejrozšířenější způsob steganografie. Jelikož se na postu kontrolora očekává člověk a ne stroj, využívá se nedokonalosti lidského zraku, který nedokáže zachytit určité nepatrné změny. Skoro každý zakódovaný nebo nezakódovaný text, obrázek či jakýkoliv jiný soubor, který se dá převést na proud bitů, může být ukryt v digitálním obrázku. Pro počítač je obrázek kolekce čísel, které charakterizují různé barvy v různých oblastech. Číselná reprezentace vytváří mřížku a jednotlivé body jsou označovány jako pixely. Každý pixel má polohu a barvu. Některé běžné přístupy k ukrývání informací jsou LSB (Least Significant Bit) vkládání, maskování a filtrování, které využívají více sofistikované algoritmy a transformace. LSB je technika ukrývání informací s využitím nejméně podstatného bitu, která je založena na nedokonalosti lidských smyslů (zraku a sluchu). Tato technika dává poměrně velký prostor k ukrytí dat, ale je také snadné, takovou zprávu najít. Lepší variantou je použití LSB náhodně vybraných bytů (pixely v obrázku nebo části zvukového souboru). Klíčem k rozluštění skryté zprávy je potom hodnota generátoru pseudonáhodných čísel. Systémy využívající LSB jsou náchylné na filtrování, zpráva je poté většinou porušena. Nejvýhodnější jsou tzv. „zaměstnané“ obrázky, kde je nejmenší šance k povšimnutí změny. Informace ukládaná do obrázku, která obsahuje relativně stejné barvy, často vytváří viditelný šum. Aplikování vkládání na nejnižší bit není limitováno pouze na LSB, záleží na obrázku. Například s obrázkem, který obsahuje vysokofrekvenční oblasti (jako je tráva), může být manipulováno více než s obrázkem obsahujícím nízkofrekvenční oblasti, jako je čistě modrá obloha. Metoda LSB je rychlá a snadná cesta k ukrytí informací, ale je náchylná vůči malým změnám, které mohou vzniknout při zpracování nebo při ztrátové kompresi. Čím více bitů je při vkládání využito, tím více informací se dá uložit, ale tím nápadněji se daný obrázek bude jevit jako stegogram. Mezi programy, které se zabývají ukrytím zprávy do obrázku, patří: Hide and Seek, White Noise Storm, S-Tools a jiné. [8, 9] Ukrývání zpráv v síťovém provozu stojí na okraji pozornosti odborníků. Záleží pouze na dohodě komunikujících stran, která část paketu bude obsahovat tajnou zprávu a jak v ní bude zakódována. Aby takto generovaný síťový provoz nebudil pozornost, výběr polí je značně omezen a přenosová kapacita tajných bitů je malá. Využívá se například šesti rezervních polí. Každý den je posláno přes internet nepočitatelně mnoho paketů a každý z těchto paketů může poskytovat skrytou komunikaci. Filtry mohou být nastaveny, aby zjistily přítomnost informace v nepoužívaných nebo rezervních částech. Covert-tcp je nástroj, který využívá TCP/IP hlaviček, aby poslal informaci v nevinně vypadajícím síťovém provozu. Pakety mohou vypadat jako žádost o spojení, ustanovení datového proudu nebo jiné kroky při vysílání. Zpráva je vložena do identifikace IP paketu a do sekvenčního číselného pole TCP. Tyto pole jsou méně náchylné na změnu při síťovém směrování nebo filtrování. [8] RSTEG (Retransmission Steganography) využívá toho, že pokud při přenosu paketu v protokolu TCP dojde k chybě, pošle se paket znovu. Odesilatel čeká na to, až příjemce potvrdí, že data byla doručena v pořádku, jinak přenos automaticky zopakuje. Chyba se vyskytuje přibližně u každého tisícího paketu. Spoléhá se na to, že příjemce označí paket za nedoručený nebo poškozený (i když může být doručený úspěšně) a poté odesilatel pošle nový paket s tajnou informací. Pokud není systém přetěžovaný tímto způsobem komunikace, útočník nemůže říct, zda byla použita RSTEG, protože pokud byl paket porušen, nový paket se od něj bude stejně lišit. [9]
10
WLAN steganografie využívá metody, při kterých se vysílají steganogramy v bezdrátových sítích. Těchto metod využívá HICCUPS systém (Hidden Communication System for Corrupted Networks). Existuje mnoho dalších technik pro zajištění bezpečnosti. Zde jsou zmíněny některé z nich [8]: - Ukrytí dat uvnitř šifrovaných nebo náhodných dat. Tajná zpráva se nejdříve zašifruje a teprve poté se s ní přepíše mnohem větší blok šifrovaných nebo náhodných dat. - Chaffing and winnowing [11] – technika pro zajištění důvěryhodnosti, která přidává ke každému paketu MAC (Message Authentication Code), což slouží jako důkaz pravosti. Dále se užívá plev, které obsahují podvodný MAC. - Vkládání obrázků do video souborů, které se musí přehrávat na nižší nebo vyšší rychlost. - Vložení malého zpoždění mezi pakety, které jsou poslány do sítě. Toto zpoždění může sloužit k zakódování zprávy.
11
Kapitola 3 Steganografické souborové systémy Souborový systém je struktura, která je fyzicky uložena na datovém nosiči a organizuje na něm prostor tak, aby uživatel mohl vůbec pracovat se soubory. Zajišťuje ukládání, organizování, získávání a spravování počítačových souborů a jejich dat. Většinou se používá na trvalé úložiště, jako je pevný disk, aby si soubory udržely svou fyzickou polohu. Na druhou stranu nemusí být úložiště potřeba vůbec. Souborový systém může být použit k organizaci a reprezentaci přístupu k datům, ať již jsou někde uložena nebo dynamicky vygenerována. Steganografický FS je taková struktura, která ukrývá data buď mimo viditelný souborový systém, tj. v prostoru, který FS chápe jako volné místo na nosiči, mimo dosah uživatele i operačního systému, nebo přímo v souborovém systému. K datovému úložišti lze přistupovat dvěma způsoby. Buď pomocí FS, který je na něm zaveden pro pohodlí uživatele, nebo také přímo jako k sekvenci bitů, přičemž jsou viditelné všechna data na nosiči. Druhému způsobu by tajná data na volném místě neunikla, proto se do utajovacího procesu zapojuje kryptografie. Šifrování dat na úrovni souborového systému pomocí symetrické šifry zajistí, že bez správného klíče není možno data přečíst, ani když nepovolaná osoba získá datový nosič. Takto uložené data jsou však chráněna pouze kryptograficky a útočník, který má k dispozici dostatečný výpočetní výkon, může heslo uhodnout. Jelikož šifrování za sebou zanechává důkaz o existenci důležitých dat, může samotná existence přimět útočníka k prolomení ochrany nebo dokonce k donucení vlastníka dat k vyzrazení klíče. Steganografický systém povoluje přístup ke chráněným datům pouze, pokud jsou zadány správné klíče. Bez nich útočník nemůže vědět, zda nosič obsahuje skryté informace, i když má všechny dostupné znalosti o hardwaru a softwaru a může disk procházet bit po bitu. Jestliže útočník přinutí vlastníka odhalit data, vlastník může věrohodně popřít jejich existenci bez vzbuzení pozornosti (plausible deniability – věrohodná popiratelnost). Pro dosažení věrohodné popiratelnosti je v základu nutné splnit 3 předpoklady [9]: - Celý steganografický FS se fyzicky vyskytuje na místě, kde nepůsobí výjimečně. - Na nosiči existuje druhý kryptografický systém s daty, která budí dojem, že je vlastník může chtít skrývat, avšak jejich prozrazení nezpůsobí vlastníkovi žádnou škodu. Pokud například státní analytik zjistí na nosiči přítomnost šifrovaných dat, soud může přikázat vlastníkovi sdělení klíče. Vlastník sdělí klíč ke zdánlivě citlivým datům a skutečně citlivá data zůstanou neodhalena. - Z nosiče nesmí být znát, kolik tajných šifrovaných dat obsahuje.
3.1
Základní pojmy používané u souborových systémů
Na tomto místě je uvedeno několik základních pojmů, které se v práci používají: - Blok – je nejmenší jednotka zapisovatelná souborovým systémem. Všechno, co souborový systém dělá, je složeno z operací na blocích. Velikost bloku souborového systému je stejná nebo v násobcích celých čísel větší než velikost bloku disku. - Segment/oddíl – je podmnožina všech bloků na disku. Disk může mít několik segmentů. - Metadata – obsahují informace o datech, ale nejsou jejich přímou součástí. Například velikost složky je velice důležitá informace o složce, ale není součástí dat ve složce. 12
-
3.2
I-node – je místo, kde souborový systém ukládá všechny nepotřebné metadata o souboru. Tento termín se používá především u unixových systémů. Raw disk – „hrubý disk“. Jde o metodu přístupu k disku jako k proudu bitů, kdy je možné číst bit po bitu. Plaintext – nešifrovaný text. Ciphertext – šifrovaný text. Bitmap – „bitová mapa“. Pro každou skupinu bloků existuje jeden blok, který je ve skutečnosti mapa. Každý bit zde označuje určitý blok. Tento bit může být buď 0 (blok je volný) nebo 1 (blok je zaplněný).
První návrhy steganografického FS
V [1] představují první dva návrhy steganografického souborového systému, které ukrývají data přímo na raw disk. FS dovoluje uživateli asociovat heslo se souborem nebo adresářem takovým způsobem, že přístup ke skrytému souboru je povolen pouze tehdy, pokud známe jméno souboru a příslušné heslo. Útočník, který nemá správné jméno a heslo a nemá ani dostatečný výpočetní výkon na jejich uhádnutí, nemůže vědět, zda daný objekt vůbec existuje. Protože není moc přesvědčivé tvrdit, že datový nosič je prázdný, je vždy rozumnější odhalit některé méně citlivé soubory a o ostatních mlčet. Útočník nemůže vědět, kolik dat se ještě skrývá na nosiči. Takový systém dosahuje mnohem lepší vytíženosti a výkonu než klasické steganografické metody, které využívají cover média. Práce předpokládá, že útočník, který přinutí vlastníka ke spolupráci, je schopný, dokáže procházet disk na úrovni bitů a má všechny dostupné znalosti o hardwaru a softwaru. Jediný rozdíl mezi ním a vlastníkem je znalost jednoho nebo více hesel. Autoři navrhují dva různé způsoby konstrukce takového systému. 3.2.1
První konstrukce
První konstrukce je zobrazena na obrázku 3.1 a vychází z předpokladu, že útočník nemá žádné znalosti o uloženém plaintextu. Místo silného šifrování se využívají pouze operace lineární algebry. FS se inicializuje náhodně generovanými covery. Data jsou uložena modifikováním počátečně náhodných coverů, takže plaintext lze získat jejich lineární kombinací. Heslo k souboru odpovídá podmnožině cover souborů, které musí být pomocí XOR funkce spojeny dohromady, abychom dostali ukryté data. Vzhledem k velkému množství krycích souborů je bez správného hesla výpočetně neproveditelné obdržet správnou množinu cover souborů, které konstruují ukryté data. Menším problémem této konstrukce je, že nemusí být vždy vhodné mít hierarchii založenou na striktním lineárním přístupu. Hlavním problémem je, že takový systém by byl nevýkonný. Čtení nebo zápis by zahrnovalo příliš mnoho V/V (vstupních/výstupních) operací na cover souborech, což by u většího množství souborů bylo nepřijatelné.
13
Obrázek 3.1: První konstrukce 3.2.2
Druhá konstrukce
Nejprve je souborový systém kompletně zaplněn náhodnými bity. Bloky ukrývaných dat se zašifrují a poté se pomocí pseudonáhodného procesu zapíší na absolutní adresu disku – viz obrázek 3.2. Bloky jsou tak pro útočníka výpočetně neodlišitelné od pseudonáhodných dat. K získání souboru poskytne uživatel heslo, které slouží jako semínko generátoru pseudonáhodných čísel, který postupně poskytne adresy na hledané bloky.
Obrázek 3.2: Pseudonáhodný proces Problém s tímto postupem je ten, že různé soubory mohou být mapovány na stejnou adresu a tím vznikají kolize. Pravděpodobnost kolize se dá redukovat replikováním ukrývaných souborů a snížením jejich počtu. Kolize se však nedají odstranit úplně. Tímto způsobem může být využito pouze malé procento disku.
3.3
StegFS: A Steganographic File System for Linux
Andrew D. McDonald a Markus G. Kuhn přišli s návrhem implementace steganografického FS pro Linux [6]. Návrh vychází z druhé konstrukce v [1]. Není potřeba samostatného oddílu na disku, místo toho se soubory ukládají do nepoužitých bloků oddílu, který již obsahuje normální soubory. Návrh využívá separate block alokační tabulku a plní podobnou úlohu jako bitmapa. Tabulka je vždy přítomná, jestliže je nainstalovaný ovladač pro steganografický systém. Nezáleží na tom, zda je používaný nebo ne. Její šifrování zajišťuje, že inspektoři nemůžou získat žádnou další informaci kromě té, že StegFS je nainstalovaný. Protože není ukryta existence samotného ovladače, není potřeba skrývat její existenci. Je téměř nemožné zjistit, kolik bezpečnostních vrstev je použito. Inspektoři mohou přinutit uživatele přepsat celý disk novými daty, což zaručeně přepíše nejskrytější data. Tento návrh tomu nebrání a
14
spoléhá spíše na to, že uživatel má svá data zálohována někde jinde a raději ukrývaná data zničí, než aby je vydal. 3.3.1
Shrnutí
StegFS nabízí následující základní funkcionality: - Uživatel může věrohodně popřít počet souborů uložených na disku. - Garantuje důvěrnost obsahu všech skrytých souborů. - Mazání jakýchkoliv souborů vede k jejich bezpečnému odstranění. - Využívá několik vrstev zabezpečení. Uživatel může prozradit přístup k několika z nich, ale další vrstvy mohou být věrohodně popřeny. - Obyčejné soubory mohou být dále přístupné, i když je StegFS ovladač a jeho tabulka odstraněna. - Povoluje sdílení oddílu s jiným souborovým systémem, který zjednodušuje instalaci a poskytuje další stupeň ochrany tím, že dělá skryté soubory nerozlišitelnými od nevyužitých bloků. StegFS neřeší následující funkcionality: - StegFS neukrývá přítomnost samotného ovladače pro steganografický souborový systém. - Nenabízí rychlý zápis do ukrytých vrstev. - Nechrání integritu souborů. - Nechrání proti filtrování obsahu celého disku. - StegFS byl navržen pro lokální uložiště a nezabývá se možnými útoky ze sítě.
3.4
StegFD: A Local Steganographic File System
Tato práce [3] je praktický návrh implementace steganografického FS. Toto schéma je navrženo tak, aby splnilo 3 základní cíle: - StegFD by neměl ztratit data nebo poškodit žádné soubory; - Měl by ukrýt existenci chráněných dat před uživateli, kteří nevlastní příslušný přístupový klíč, i když jsou důkladně seznámeni s implementací souborového systému; - Měl by minimalizovat procesní náročnost a náročnost na místo. Když se vytvoří souborový systém, všechny bloky jsou vyplněny náhodnými bity. Dále jsou některé náhodně vybrané bloky ponechány tím, že jsou v bitmapě zaznačeny jako obsazené. Tyto bloky jsou zamýšleny jako zmaření jakéhokoliv pokusu o lokalizaci ukrytých dat pomocí pohledu do bitmapy a centrálního adresáře. Čím vyšší je počet těchto bloků, tím těžší je uspět při využití hrubé síly. StegFD soustavně udržuje jeden nebo více skrytých dummy souborů, které pravidelně aktualizuje. Toto zabraňuje pozorovateli vydedukovat, které bloky alokované mezi jednotlivými úspěšnými pohledy na bitmapu, které nepatří žádnému plain souboru, musí obsahovat skryté data. Počet dummy souborů může být nastaven manuálně nebo automaticky. Dummy neodstraňují potřebu zanechaných bloků, protože mohou být náchylné na útok s administrátorskými právy. Zanechané bloky poskytují extra ochranu, protože nemohou být vystopovány. Ke každému skrytému souboru se přistupuje přes hlavičku, která obsahuje 3 datové struktury: Odkaz na i-node tabulku, která indexuje všechny datové bloky souboru. Značku, která jednoznačně identifikuje složku. Spojovaný seznam ukazatelů na volné bloky držené souborem. Všechny tyto části, včetně hlavičky a dat, jsou šifrovány přístupovým klíčem, aby byly nerozlišitelné od zanechaných bloků a dummy souborů pro neoprávněného pozorovatele. 15
Obrázek 3.3: Struktura hlavičky ukrývaného souboru Jelikož skryté soubory nejsou zaznamenány v centrálním adresáři, StegFD musí být schopen lokalizovat hlavičku využitím pouze jména souboru a jeho přístupového klíče. Během vytváření souboru, StegFD dodává hash hodnotu vypočítanou ze jména a přístupového klíče jako jádro generátoru pseudonáhodných čísel bloků, a v bitmapě kontroluje každý následně generovaný blok, dokud souborový systém nenarazí na volný blok. Jakmile je alokována hlavička, zbytek bloků souboru může být po porovnání s bitmapou uložen do volných bloků disku a propojen do i-node tabulky. Aby systém předešel přepsání jiným uživatelem, který má stejné jméno souboru a heslo, jméno souboru je odvozeno zřetězením uživatelova id s kompletní cestou k souboru. Pro obnovu skrytého souboru musí StegFD zase využít hash hodnotu vypočítanou ze jména a hesla do jádra pseudonáhodného generátoru čísel bloků a hledat první blok, který je označen v bitmapě jako obsazený a obsahuje shodnou značku. Počáteční čísla bloků dané generátorem nemusí vždy držet správnou hlavičku, protože byly nedostupné, když se vytvářel soubor. Značka je tedy klíčová pro potvrzení, že byla nalezena správná hlavička. Značka musí být dlouhý řetězec znaků, aby se vyhnulo nesprávné shodě. Aby útočník nemohl odvodit ze jména souboru heslo a jeho značku, je na vygenerování značky použita jednosměrná hashovací funkce (například SHA [34]). 3.4.1
Potenciální limitace StegFD
StegFD poskytuje nové funkce v ukrývání existence chráněných dat, což přináší určité limitace: - Všechny skryté soubory musí být obnoveny společně. Dočasným řešením je obnovení všech skrytých složek do dočasného místa na disku, kde uživatel může pracovat se soubory. - Bez kooperace s uživatelem, které vlastní přístupový klíč, není souborový systém schopný odstranit fragmentaci skrytých souborů, aby zvýšil efektivnost jejich obnovy. Toto je běžný problém u bezpečných souborových systémů. Řešením je vytvořit mechanismus pro obnovu klíče, který umožňuje uživateli uložit kopii jeho klíče s několika manažery skrz tajné sdílené schéma. K obnově klíče později je potřeba současného minimálního počtu těchto manažerů, čímž se zajistí bezpečnost klíče. - Souborový systém nemůže odstranit skryté soubory náležící již neexistujícímu uživateli bez kooperace s uživatelem, který vlastní přístupový klíč. Tato limitace je taktéž běžná pro bezpečný souborový systém a může být řešena uložením klíče u administrátora.
16
Kapitola 4 Souborové systémy v síti Všechny doposud zmíněné souborové systémy se zabývaly ukrytím dat na lokálním počítači. FS však může být rozprostřen mezi počítači v síti. Tyto systémy mají schopnost vlastního přeorganizování. Nový uzel se může připojit nebo odpojit do/ze sítě bez narušení systému nebo bez potřeby centrálního řízení. A právě potřeba centrálního řízení je místo, kde chyba může zničit celou síť. Proto se u síťových souborových systémů většinou nevyužívá centrálního řízení.
4.1
Napster
Napster [13,14] byla společnost založená na propojování lidí nabízejících MP3 soubory s lidmi, kteři si je chtějí stáhnout. Jednalo se o centralizovaný model, služba neposkytovala žádnou anonymitu a popírala právní odpovědnost uživatelů, proto se stala velice úspěšnou. V roce 2001 byla po soudních sporech vypnuta. Dnes se jedná o službu, kde se za hudbu platí.
4.2
Gnutella
Gnutella [14,15] je decentralizovaný peer-to-peer model pro sdílení souborů. Vývojáři tvrdili, že sdílení na síti je anonymní. Analýzy protokolu však odhalily, že tomu tak není. Hlavička paketu se skládá ze dvou polí: TTL (time to live – počet následujících skoků, po kterých bude paket zahozen) a Hops taken (počet skoků, které tento paket doposud udělal). TTL začíná na hodnotě závislé na očekávané velikosti sítě. Protokol je navrhnutý pro uživatele, kteří chtějí být ve spojení se svými přáteli, avšak neposkytuje žádnou možnost k nalezení nových přátel. Vlastní síť je hierarchický systém. Je zde malé množství centrálních uzlů, které by byly ideálními terči pro sbírání informací o uživatelích a dotazech. Navíc je chráněno pouze dotazování, vlastní stahování je prováděno přímým propojením, kdy si server a žadatel navzájem odhalí IP adresy. Tento způsob je zaveden kvůli efektivnosti, za anonymní ho však považovat nemůžeme.
4.3
Freenet
Freenet [16] je peer-to-peer síťová aplikace, která povoluje publikování, replikování a získávání dat, zatímco zajišťuje anonymitu autora i čtenáře. Funguje jako síť uzlů, které dávají dohromady svou úložnou kapacitu pro ukládání dat a kooperují požadavky k nejpravděpodobnějšímu fyzickému umístění dat. Nevyužívá se broadcast ani centrální správa. Soubory jsou dynamicky replikovány v místech poblíž žadatelů a mazány z míst, kde o ně není žádný zájem. Objevit pravý původ souboru, který putuje v síti, je velmi obtížné. Je velice těžké, aby byl uživatel odpovědný za obsah svého uzlu. Jeho základem je 5 cílů: - Anonymita pro autora i čtenáře; - Popiratelnost pro toho, u koho jsou fyzicky uloženy informace; 17
-
Decentralizovaná správa pro všechny funkce v síti; Efektivní dynamické ukládání a směrování informací; Odolnost proti pokusům třetích stran o přístup.
Freenet negarantuje trvalé úložiště a doufá se, že se připojí dostatek uzlů s velkou kapacitou, takže by většina souborů mohla vydržet velice dlouhou dobu. Tento systém existuje na aplikační vrstvě a předpokládá existenci zabezpečené transportní vrstvy. Neposkytuje anonymitu v obecné síti, poskytuje ji pouze pro Freenet souborové transakce. Jakmile uživatel požaduje určitý dokument, systém zahashuje jméno dokumentu, aby dostal klíč, a potom se zeptá svého vlastního serveru na jeho polohu. Jestli server nemá tento dokument, pošle žádost na další server, který má větší šanci ho mít. Žádosti o dokumenty jsou posílány přes cachingenabled network (namísto peer-to-peer). Statistické útoky by totiž mohly odhalit polohu čtenáře nebo autora, výše zmíněná metoda však proti těmto útokům poskytuje ochranu tím, že se pro určitý dokument mění síťová topologie po každé žádosti. 4.3.1
Bezpečnost Freenetu
Není zde žádná ochrana proti odposlouchávání zpráv mezi uživatelem a prvním kontaktovaným uzlem. Jelikož i první uzel může být kompromitován, doporučuje se, aby uživatel používal jako první uzel svůj vlastní počítač. I když jsou zprávy mezi uzly šifrovány proti odposlouchávání, může být provedena analýza provozu (např. naslouchač může zpozorovat zprávu jdoucí ven, bez toho aniž by předtím přišla zpráva dovnitř, a tím zjistit jejího odesílatele). Systém Základní Freenet Freenet + pre-routing
Útočník odposloucháváni linky nepřátelský uzel odposlouchávání linky nepřátelský uzel
Anonymita odesilatele odhalena bez podezření odhalena bez podezření
Anonymita klíče odhalena odhalena bez podezření odhalena
Tabulka 4.1: Anonymitní vlastnosti Freenetu Jakmile se v síti vyskytne nepřátelský uzel, anonymita odesílatele je stále zachována. Uzel, který je v požadované cestě nemůže říct, jestli jeho předchůdce vyslal žádost nebo ji pouze přesměroval. Jelikož komunikace není směrována přímo k příjemci, díváme se na anonymitu příjemce spíše jako na anonymitu klíče, tedy ukrytí klíče, který je požadován. Použití hashovaných hodnot jako klíčů sice poskytuje určitou míru nesrozumitelnosti proti obyčejnému odposlouchávání, je však zranitelné vůči slovníkovému útoku. Využívá se proto tzv. pre-routing, který zajišťuje anonymitu klíče a lepší anonymitu odesílatele. Další nebezpečnou hrozbou je modifikace nebo úplné nahrazení souboru nepřátelským uzlem. Jelikož směrovací tabulky jsou založeny na odpovědích na žádosti, může se uzel pokusit směrovat žádosti na sebe předstíráním, že má požadované soubory, i když je nemá, a jednoduše vracet fiktivní data. Pro data uložená pomocí hash hodnoty založené na jejich obsahu není tato možnost pravděpodobná, protože neautentická data mohou být detekována, pokud uzel nenajde správný hash. Bohužel data uložená pomocí obyčejného textového klíče jsou zranitelná. U útoků způsobujících odmítnutí služby (denial-of-service) je největší hrozba ta, že útočník se pokusí zaplnit celou úložnou kapacitu sítě vložením velkého množství odpadních dat. Zajímavou možností vůči tomuto útoku je Hash Cash schéma. Toto schéma potřebuje, aby vkladatel provedl 18
zdlouhavý výpočet („platbu“) před tím, než je vložení přijato a tímto je zpomalen útok. Další možností je rozdělit úložný prostor do dvou částí, jednu pro nově vložené soubory a druhou pro soubory, které již mají minimální počet žádostí. Nové vložení může vytěsnit pouze nové vložení. Tímto způsobem může útočník dočasně ochromit operaci vložení, ale nevytěsní existující soubory. Bohužel při tomto způsobu je těžké pro nová nefalšovaná data vydržet dostatečně dlouho na to, aby se dostala do druhé skupiny.
4.4
The Free Haven Project
Free Haven [14] je systém, který poskytuje infrastrukturu pro anonymní publikování. Neměl by jít znát vydavatel, klienti, kteří požadují dokumenty, a aktuální lokace, kde je dokument uložen. Systém je založen na skupině serverů (dohromady se označují servnet), kde každý server obsahuje data z jiných serverů a na oplátku může ukládat své vlastní data do servnetu. Stabilní a použitelný systém potřebuje kromě anonymity i další vlastnosti. Systém musí umět vkládat i získávat zpět dokumenty. Poskytuje mechanismus pro odstranění souborů, kdy vydavatel zadá, jak dlouho má být daný soubor v síti. Musí přidávat nové servery bez narušení stávající funkcionality a odstraňovat neaktivní servery. Systém dále musí být robustní, jednoduchý, dostatečně modulární, decentralizovaný, flexibilní a kontextově neutrální (popularita by neměla ovlivnit trvanlivost dokumentu v síti). Pro tento systém není efektivnost tak důležitá. Zákeřné servery mohou akceptovat sdílení dokumentu, ale potom ho neuloží. Pokud je takovýchto falešných sdílení mnoho, dokument již nelze získat zpět. Free Haven obsahuje buddy systém, který vytváří spojení mezi dvěma sdíleními dokumentu. Každé sdílení je zodpovědné za udržování informací o umístění toho druhého. Jakmile se jeho lokace změní, upozorní na to buddyho. Servery, které dokumenty ztratí nebo jsou jinak nespolehlivé, jsou upozorněny a jejich věrohodnost je snížena. Každý server si udržuje databázi o ostatních serverech a jejich důvěryhodnosti založené na chování, přímých zkušenostech s nimi a názoru jiných serverů. Existuje mnoho typů útoků, zde si projdeme pouze několik z nich [17]: -
Útoky na dokumenty nebo servnet: - Útočník se může pokusit fyzicky zničit server, což by nemělo snížit dostupnost souboru kvůli více kopiím v síti. - Útok na protokol časové synchronizace, aby vypršela platnost souboru. Pro obranu se spoléhá na schopnost operátorů udržovat přesný čas v systému. - Obsah serveru může být považován za ilegální. Free Haven spoléhá na možnost věrohodné popiratelnosti, záleží však na zákonech dané země.
-
Útoky na anonymitu: - Rozšířit virus a hledat nakažené. - Stát se servnet uzlem a shromažďovat informace o ostatních uzlech. - Hledat servery, které nedávno publikovaly dokument, a pokusit se rozhodnout, s kým v poslední době komunikovaly.
19
4.5
NFS – Network File System
NFS [18] poskytuje uživateli možnost přístupu k souborům, jako kdyby byly na jeho lokálním disku. Dosahuje toho pomocí klient-server rozhraní, kdy server nabízí svůj disk nebo část svého disku k operacím pro klienta. Klient se může připojit na více serverů zároveň a naopak. Dále existují hosti, kteří se chovají jako servery a klienti dohromady. NFS je založen na mechanismu vzdáleného volání procedur (RPC – Remote Procedure Call). Server neuchovává žádné informace o klientech, kteří se na něj připojují. Zatímco se klienti připojují pouze na pár serverů, musí servery podporovat velké množství klientů. Použití RPC umožňuje NFS být velice robustní při selhání na obou stranách. Při selhání klienta si server ničeho nevšimne. Při selhání serveru navážou všechny operace bez viditelného přerušení. NFS se stal široce používaným ve většině unixových systémů. Verze 4 [19] má stejné cíle jako předchozí verze - přímý design, snadné zotavení z chyb a nezávislost na transportním protokolu i na operačním systému. Navíc přináší vestavěné zamykání souboru a silnější bezpečnost a slučování. Protokol byl navrhován tak, aby zajišťoval dobrou meziplatformní interoperabilitu a roz1išitelnost. Pokud je na souboru zámek, operace jiných uživatelů jsou na něm zablokovány, dokud vlastník zámku zámek neodemkne. Ve verzích 2 a 3 byly implementovány pouze nepovinné zámky. Zámek mohl zůstat navždy zamčen, pokud transportní protokol nedoručil pakety ve stejném pořadí, v jakém byly odeslány. Verze 4 zavádí lease, což je doba, po kterou jsou zámky zapůjčeny od serveru. 4.5.1
Bezpečnost NFS
Veškerá bezpečnost NFS4 závisí na bezpečnosti RPC komunikace. Už v dřívějších verzích existovalo několik ochran, ale ty nebyly dostatečně bezpečné a jejich použití bylo nepovinné. Ve verzi 4 je povinná implementace bezpečnostního protokolu založeném na Generic Security Services API, který se nazývá RPCSEC_GSS. Ten zahrnuje autentizaci, kontrolu integrity a šifrování RPC požadavků. Z bezpečnostních mechanismů GSS-API standard udává povinnost implementovat alespoň Kerberos verze 5 [20] a LIPKEY [21]. Kerberos je vhodný pro intranet a lokální sítě. Pro aplikace přes Internet se více hodí schéma LIPKEY, které zajišťuje autentizaci serveru. Autentizací klienta rozumíme schopnost definovat seznam autorizovaných klientů na NFS serveru. Systémy jsou zaznamenány podle jména a IP adresy. NFS server ověřuje zdrojovou IP adresu a příchozí žádosti. Autentizace uživatele probíhá s využitím Kerberos. Pro zajištění integrity dat je povinný TCP protokol. RPCSEC_GSS je schopno provádět kontrolní součet celého těla NFSv4 zavolání a zajišťuje důvěrnost dat šifrováním provozu (používá šifrovací algoritmy AES a 3DES). Dále následují systémy, které se brání útokům ze sítě steganograficky.
20
Kapitola 5 Steganografické souborové systémy v síti Jedná se o systémy, které mají přístup do sítě a brání se útokům zvenčí steganograficky nebo jsou decentralizovány přes síť na více počítačů. Počítá se s útoky, kdy útočník získá přístup k celému obsahu disku a může číst bit po bitu a taktéž může určit, které bity se od posledního skenování změnily, a tím určit, se kterými soubory bylo manipulováno.
5.1
Mnemosyne
Mnemosyne [5] je systém, který poskytuje vysoký stupeň důvěrnosti a věrohodné popiratelnosti. Jedná se o peer-to-peer steganografický úložný systém. Poskytovatelé úložiště mohou nabídnout službu bez schopnosti znát obsah ukládaných souborů. Tato vlastnost může být zajímavá především pro poskytovatele obávající se právní odpovědnosti. Pro uživatele, který chce bezpečně uložit své soubory, je distribuovaný systém lepší volbou oproti lokálnímu úložišti, protože jsou informace méně náchylné na strojové poruchy nebo odmítnutí služby. Lokální úložiště může být ukradeno, ale peer-to-peer systém je mnohem těžší vypnout. Každý soubor je zapsán do pseudonáhodně vybrané lokace pomocí hashování jména souboru a čísla bloku tajným klíčem. Jelikož lokace souboru nemůže být zjištěna nikým, kdo nezná jméno souboru a přístupové heslo, není možné se vyhnout kolizím. Aby soubor přetrval co nejdéle, využívá se replikace souborů. V tomto návrhu je každý blok souboru zapsán do n nezávislých lokací určených sekvencí hashovaných hodnot. Jelikož není udržována žádná centralizovaná struktura, není zde žádná záruka toho, že jakýkoliv soubor vydrží v systému nebo ne. Starší soubory postupně degradují, jestliže nejsou periodicky obnovovány. Mnemosyne je dále zamýšlen jako vysoce distribuovaný systém pracující v peer-to-peer prostředí. V tomto prostředí se počítá s možností, že klient nebo server mohou být zlomyslné uzly, a proto se jim nevěří. Z tohoto důvodu poskytuje serverové rozhraní možnost čtení a zapisování až na úrovni bloků pro všechny klienty. Samotní klienti buď zapisují, nebo sestavují soubory založené na jejich deterministickém umístění identifikovaného pomocí jména souboru a tajného klíče. Ani jména nebo tajné klíče necestují za uživatelsky důvěryhodnou oblast klienta. Jelikož je obsah souboru šifrovaný, může server povolit jakoukoliv žádost o čtení s jistotou, že pouze autorizovaný uživatel vlastní jak jméno souboru, tak klíč potřebný k opětovnému sestavení souboru. Na druhou stranu je možnost zapisovat bloky volně potenciální bezpečnostní díra. V tomto případě může jakýkoliv zlomyslný uživatel přepsat celý obsah systému. Důležitý aspekt je ten, že Mnemosyne provádí steganografii na každém souboru zvlášť. To znamená, že každý má svůj vlastní klíč, který je důležitý pro jeho nalezení a dešifrování. Není zde žádná možnost zpřístupnění hierarchie nebo skupiny souborů. V [12] je uvedeno několik zranitelných míst pro peer-to-peer systémy: - Load Skew: Většina P2P schémat předpokládá, že všichni účastníci jsou si rovni, ale studie ukázaly, že schopnosti uzlů a chování uživatelů se velice liší. Toto vyvrací základní předpoklady návrhu a vyžaduje nové, neuniformní řešení (např. superuzly [22]). - Nedůvěryhodný peer: jelikož se každý může kdykoliv připojit k síti, jsou tyto schémata náchylné na určité útoky způsobující odmítnutí služby. Zlomyslný peer může libovolně narušovat vyhledávání. Jako obrana slouží využití byzantských chyb-tolerujících schémat [23]. 21
-
„Sybil“ útoky [24]: jedná se o identitu replikující útoky, nad kterými nemohou dostatečně operovat ani byzantské protokoly. Těmto problémům se můžeme vyhnout limitováním účastníků, kteří se mohou připojit do sítě. Buď limitováním systému do uzavřeného prostředí, nebo návrhem systému.
5.2
Mojitos
Mojitos [25] je distribuovaný steganografický souborový systém. Při ukrývání existence souborů je velice těžké se vyhnout kolizím. Tento systém má několik vylepšení oproti předchozím variantám. Zaměřuje se především na lepší životnost souborů v síti. Mojitos je motivován prozkoumáváním vztahů mezi bezpečnostními opatřeními a životností souborů. Systém je založen na 2 hlavních principech: - Bezpečnost: Steganografický systém musí být robustní vůči útokům. Komunikace mezi počítači nesmí být rozluštitelná pro pozorovatele zvenčí, proto je nutné šifrování. Důležitou roli v zabezpečení různých systémových operací hraje stupeň důvěry dané každému klientovi a serveru. Jelikož se ukrývá fyzické umístění daného souboru, musí se chránit informace jako velikost, typ a cíl síťové komunikace, protože by mohli odhalit něco o existenci nebo umístění souboru. Ani žádný mechanismus, který zajišťuje lepší výkon nebo vyšší životnost souboru, nesmí vyzradit žádnou informaci. - Škálovatelnost a dostupnost: Distribuovaný systém může být naimplementovaný pro malé nebo velké měřítko. Mojitos není limitovaný ve škálovatelnosti a počítá se selháním serveru. Problémy s dostupností souboru řeší pomocí autonomních serverů a replikováním a rozptýlením dat i metadat. Hashovací funkce využívá k zabránění broadcastu. Mojitos tvoří 2 základní části: klienti a servery. Na jednom stroji může pracovat více klientů nebo serverů zároveň. Komunikují mezi sebou pomocí RPC. Uživatel, který chce mít přístup k souborům, musí znát pouze jejich jména a klíče k nim. Protože zapamatovat si klíče ke všem souborům je pro uživatele nepohodlné, zavádí Mojitos (stejně jako StegFS) fixní počet (15) bezpečnostních vrstev, kde každá má svůj vlastní klíč. Všechny soubory uložené ve stejné vrstvě sdílí stejný klíč. Dále jsou bezpečnostní vrstvy organizovány v lineární struktuře. Uživatel, který vlastní klíč k určité vrstvě, má přístup ke všem souborům v dané vrstvě a ve vrstvách pod ní. I když jsou vyšší vrstvy více bezpečné, nemají tak vysokou životnost, protože jsou více náchylné ke kolizím. 5.2.1
Útoky na Mojitos
Existují 3 hlavní typy útoků, díky kterým může útočník získat informace: - Využití klienta: Protože Mojitos klienti (programy) jsou nedůvěryhodní, útočník přes ně nemůže získat žádné informace. Jestliže útočník nevlastní klíč k bezpečnostní vrstvě, každý požadavek od klienta bude odmítnut. Útočník může za pomoci klienta snížit systémový výkon. Pomocí útoku způsobujícího odmítnutí služby může přetížit systém nebo síť. Další možností je využití trojského koně, kdy protivník modifikuje software klienta. Takovýto klient pak může sbírat všechny uživatelem zadané klíče a protivník tak získá přístup ke všem korespondujícím vrstvám. - Získání kontroly nad serverem: Jsou zde 2 možné hrozby: útočník se fyzicky dostane k serveru nebo ho modifikuje. V případu fyzického vlastnictví je Mojitos bezpečný. Šifrování na disku a náhodné rozptýlení bitů zajišťují, že útočník nemůže získat žádnou informaci o 22
souboru nebo jeho existenci, i když prozkoumá celý obsah disku. Při zničení nebo vypnutí serveru postupuje Mojitos stejně jako při výpadku na síti. Modifikace serveru představuje vážný problém. Klient může pozměnit server kód tak, aby nahrával hesla zasílaná do něj. Jestliže se podaří útočníkovi vložit server do sítě tak, aby si klienti ničeho nepovšimli, může sbírat všechny klíče a má tudíž přístup do celého systému. Tento problém se řeší pomocí hierarchie klíčů. - Útoky za sítě: Mojitos je robustní vůči útokům ze sítě. Využívá se veřejného klíče s kombinací ID uživatelů, které zabrání většině klasických útoků. Krycí provoz a konstantní velikost paketů zajišťují, že neunikne žádná informace o souboru. Ve své podstatě existují 3 vrstvy bezpečnosti v systému: ukrytí existence, lokace a obsahu souboru. Mojitos přináší vylepšení užitím rozdílného klíče pro každou vrstvu, což omezuje prolomení bezpečnosti. Jedná se o existenční, lokační a obsahový klíč. Pouze existenční klíč je vysílán na server. Narušení bezpečnosti na serveru povoluje prolomení existenčního klíče, ale nekompromituje zbylé 2 vrstvy.
5.3
Ukrývání aktualizací ve steganografickém FS
Data, která jsou součástí všudypřítomných služeb, musí být trvalá a dostupná kdekoliv a kdykoliv. To znamená, že musí migrovat z lokálního počítače do sdíleného úložiště v síti. Data mohou být uložena v distribuovaném systému, kde se musí počítat s možností nedůvěryhodného serveru. Steganografický přístup k ochraně dat je žádoucí. Pro steganografický FS na sdíleném úložišti existují nové způsoby, kterými se protivník může pokusit zaútočit. Jestliže může porovnat po sobě jdoucí snímky úložného prostoru, tak může detekovat blokové změny, které nepatří žádnému nešifrovanému souboru, a vyvodit z toho, že existuje nějaký ukrytý soubor. Tento útok se nazývá update analysis. Na obranu proti tomuto typu útoku nabízí v [26] několik způsobů ochran, které balancují mezi třemi různými cíly: - Bezpečnost: protivník nemůže zjistit, které bloky v pozorovatelných aktualizacích obsahují pravé data. - Integrita: přemístění dat a dummy aktualizace nesmí ohrozit celistvost skrytých souborů tak, aby nedošlo k nenávratnému poškození dat. - Výkon: jakékoliv snížení výkonu, které je způsobené režií, by mělo být minimální. Dummy updaty jsou samoúčelné aktualizace na úložišti zavedené proto, aby se zabránilo tomu, že pravé updaty odhalí existenci ukrytých dat. Jestliže by tyhle dummy aktualizace byly nerozlišitelné od pravých updatů, útočník by nebyl schopný vydedukovat existenci skrytých souborů. Tyto updaty jsou prováděny pravidelně a jedná se o základní myšlenku při konstrukci protiopatření proti výše zmíněnému útoku. Využití agenta je systémový model, který se snaží ukrýt samotné aktualizace dat a využívá k tomu důvěryhodného agenta, který je autorizován pro přímý přístup k úložišti. Všechny přístupy k datům jsou prováděny přes agenta. Pokud není pracovně vytížen, provádí automaticky dummy updaty. Uživatel a agent záměrně komunikují přes důvěryhodnou linku a společně se nachází v chráněné doméně. Úložiště se nachází v nechráněné doméně.
23
Obrázek 5.1: Model s využitím agenta Útočník je schopný opakovaně skenovat hrubý obsah úložiště, předpokládá se, že kompletně zná celý systém a nezná žádný přístupový klíč uživatele ani agenta. Dále se taktéž předpokládá, že nemůže pozorovat operace uvnitř agenta a interakci mezi ním a uživatelem. Agent potřebuje nějakou pracovní paměť a rozlišujeme 2 druhy podle typu paměti. Agent se stálou pamětí běží ve velice bezpečném prostředí. Systémový administrátor může být přinucen k prozrazení tajností uložených v paměti. Úložiště je rozděleno do standardizovaných bloků, které se rozlišují na datové bloky obsahující užitečná data a dummy bloky obsahující náhodné data. Obě skupiny jsou náhodně rozptýleny po úložišti. Datový blok obsahuje IV (iniciální vector) a datové pole, které je šifrované. IV slouží k provádění dummy updatů. Útočník bez znalosti klíče nemůže říct, zda bylo datové pole změněno. Falešné updaty by měly být úplně náhodné (každý datový blok má stejnou šanci, že bude vybrán). Útočník potom nemůže rozlišit mezi dummy updaty, které mění pouze IV, a mezi updaty, které mění datové pole, protože jsou vloženy mezi aktualizace dat a jejich frekvence je podobná. Samotné falešné aktualizace nejsou dostatečné k ukrytí existence datových updatů. Způsob aktualizací musí být podobný náhodnému procesu. Dosahuje se toho pomocí realokace datových bloků po každém updatu. Agent s nestálou pamětí je méně náchylný ke kompromitování systému, má však vyšší cenu údržby. Nepoužívá trvalou paměť na ukládání tajemství o systému, takže útočníci nemohou získat žádnou užitečnou informaci od administrátora. Šifrovací klíč je držen u vlastníka a každý uživatel vlastní dummy soubor. Klíč a FAK (File Acces Key) jsou odhaleny agentovi pouze, když se uživatel přihlásí. FAK každého skrytého souboru se skládá ze tří složek: lokace hlavičky souboru, klíč ke hlavičce pro její odšifrování a klíč pro dešifrování obsahu. Uživatel, který je přinucen odhalit ukryté soubory, může odhalit pouze dummy soubory nebo může odhalit klíč ke hlavičce, dát špatný klíč k obsahu a poté tvrdit, že soubor je falešný.
5.4
Obrana proti analýze provozu
Analýza provozu byla rozsáhle studována pro poskytnutí větší bezpečnosti systémů. Útočník se pokusí odhalit informace monitorováním provozu na síti. Protiopatření by měla být schopna odstranit všechny statisticky pozorovatelné artefakty způsobené skrytými daty. 2 mechanismy, které poskytují takovou vlastnost, jsou [27]: - PIR (Private Information Retrieval): PIR povoluje uživatelům neveřejně získat jejich data ze sekundárního úložiště, jako je databáze. Data jsou uložena ve vícenásobných databázích, které o sobě navzájem neví, takže uživatel může získat data bez jejich prozrazení. Většina schémat se zaměřuje na snížení komunikační složitosti. Ignorují však V/V režii a potřebují skenovat celý obsah úložiště pro každou žádost.
24
-
Oblivious RAM: je šifrovací zpracovatel, který je odolný proti změnám. Slouží k ochraně soukromí kódu a zabraňuje narušení autorských práv softwaru. Útočník, který se může podívat do paměti a monitorovat v ní přístupy, nemůže získat žádné užitečné informace o tom, co je počítáno nebo jak je to počítáno. Tyto techniky nejsou příliš efektivní pro steganografický FS. V [26] jsou navrženy 2 konstrukce pro vypořádání se s analýzou provozu, které ukrývají opravdový V/V provoz do náhodného dummy provozu. Jedná se o: Oblivious Storage a DataCavern. Oblivious Storage je inspirováno oblivious RAM. Jedná se o velice bezpečný FS, který může úplně zakrýt uživatelovy přístupy v provozu. Trpí však nadměrnou V/V režií, což může být problém u některých aplikací. Disk je rozdělen na 2 části: zapomnětlivá část, která slouží jako cache systému, a stegFS oddíl, kde jsou trvale uložena data. Všechna čtení jsou přesměrována na zapomnětlivou část, takže následující přístupy do bloků jsou prováděny pouze v této části (kromě aktualizací dat). Mohou se odstranit vzory v uživatelových přístupech tak, že jsou ukryty v dummy updatech. Ale neslouží jako trvalé úložiště, protože datové bloky jsou často promíchávány. DataCavern je výpočetně bezpečný FS, který se zaměřuje na minimalizování přesnosti analýzy provozu, namísto pokusu zakrýt datový provoz úplně. - promíchává datový a dummy provoz, aby se redukoval jejich vzájemný vztah; - periodicky přemísťuje stránky disku, aby se změnily uživatelovy přístupové vzory; - ukládá do paměti často požadované stránky, aby se odstranily jakékoliv nerovnoměrné rozložení v datových přístupech. DataCavern obsahuje 2 paměti: datové úložiště, které je situováno v nechráněné doméně, a paměť agenta, která je v chráněné doméně. Paměť agenta se zaměřuje na transformování datových přístupů na steganografické přístupy, které neprojevují žádné statistické vlastnosti, které by mohli prozradit existenci skrytých dat. Paměť agenta se skládá z 3 částí: mixer žádostí, shuffler a buffer. Mixer slouží k přeskupení žádostí. Pokud není dostatek žádostí, využijí se dummy žádosti. Shuffler je zodpovědný za realokaci datových bloků v úložišti. Zpřístupněná data jsou uložena v bufferu, což snižuje počet V/V operací na často požadovaných stránkách. Útočník, který poslouchá kanál mezi agentem a úložištěm, si je vědom falešných žádostí a musí se rozhodnout, zda se jedná o dummy nebo pravé žádosti. Aby uspěl, musí vymyslet statistický test, který určí pravost žádostí.
25
Kapitola 6 Šifrování disků Šifrování disku poskytuje větší úroveň bezpečnosti než šifrování složek, protože šifruje všechna data a poskytuje uživateli možnost autentizace při startu systému. Jedná se o kryptografickou ochranu dat v klidu pro blokově orientovaná úložiště (např. pevný disk). Je většinou implementováno jako tzv. onthe-fly šifrování, což znamená, že data jsou automaticky šifrována předtím, než jsou uložena, a dešifrována po jejich načtení bez jakékoliv potřeby uživatelova zásahu. K šifrování disku se dá přistupovat různými způsoby [33, 46]. Prvním z nich je hardwarově a softwarově orientovaný přístup. Hardwarový přístup umožňuje šifrovat každý jednotlivý bit na disku, zatímco softwarový ne. Důvodem je MBR (Master Boot Record), který obsahuje důležité instrukce nutné pro zapojení disku, a proto musí být nezašifrovaný. Dále pro načtení operačního systému je nutné stejně ponechat i další část (pre-boot jádro). I když tento způsob nešifruje všechny data na disku, stále je chrání i při neaktivním operačním systému. Hardwarové šifrování se vyhýbá těmto omezením postupným šifrováním a dešifrováním každého bitu na hardwarové úrovni, takže software si není vědom nějakého šifrování. Dále není použitý šifrovací klíč ponechán v paměti, což zabraňuje tzv. cold boot útokům [48]. Výhodou strojového šifrování je vyšší výkon oproti softwarovému, které je však pro tento účel, díky freeware programům, levnější na pořízení a navíc použitelné u všech typů úložišť. Druhým přístupem je narrow-block a wide-block šifrování. Narrow-block algoritmy operují s malými bloky dat (většinou 16 bytů) a jsou výkonnější (zvláště pro hardwarovou implementaci). Na druhou stranu jsou více náchylné na útoky. Wide-block algoritmy šifrují a dešifrují celý sektor najednou (většinou 512 bytů). Jsou považovány za pomalejší, což je u streamovaného čtení a zapisování nepřípustné. Pokud však má implementace k dispozici větší buffer, výpočetní výkon a lepší latenci, poskytují tyto algoritmy lepší ochranu než narrow-block algoritmy. Dalším způsobem je transparentní a autentizované šifrování. Transparentní šifrování znamená, že šifrovací proces může být naimplementovaný tak, aby se objevil v softwaru nebo uvnitř samotného úložiště, a to bez nutnosti modifikování protokolů pro přenos dat nebo datových vrstev úložiště. Šifrovací transformace musí být aplikovatelná na jednotlivé datové jednotky nezávisle a v libovolném pořadí. Dále musí zachovávat délku (délka plaintextu musí být stejná jako délka ciphertextu), což znamená, že tato transformace musí být deterministická. Autentizované šifrování se na druhou stranu nejvíce hodí pro pásky a ne pro blokově orientovaná úložiště. Toto šifrování vytváří u každého ciphertextu autentizační značku pro zajištění integrity dat.
6.1
Možnosti šifrování disků
Úplné šifrování systémového disku (FSDE – Full System Disk Encryption) [46, 47, 49] je technika šifrování oddílu nebo celého obsahu disku (šifrují se i metadata) s využitím jednoho klíče. Před instalací FSDE softwaru na počítač ukazuje MBR většinou na primární operační systém. Jakmile se FSDE použije, je MBR přesměrováno do speciálního pre-boot prostředí (PBE), které kontroluje přístup k počítači. Toto prostředí vyžaduje po uživatelovi login a heslo předtím, než odšifruje a načte operační systém. Poté může uživatel normálně používat počítač. Jakmile si zažádá nějaký soubor, FSDE software odšifruje a po jeho zavření zase zašifruje daný soubor. Tato vlastnost může zvýšit čas pro načtení nebo uložení souboru, čehož se dá obecně všimnout spíše u větších souborů. U načítání nebo vypínání
26
systému se jedná řádově o sekundy. Zpoždění se může objevit také u hibernace1, protože FSDE software musí šifrovat a dešifrovat velké soubory pro hibernaci, které jsou ukládány na disk. Délka zpoždění je závislá na velikosti paměti, rychlosti disku a jiných faktorech. FSDE mění, jakým způsobem se počítač načítá, což může způsobit problémy. Například modifikování MBR může způsobit nesprávnou funkcionalitu u počítačů s více OS a vložení PBE mezi MBR a bootovací sektor může způsobit konflikty s jinými programy, jako jsou nástroje pro pracování s diskem. K zadání kódu se používá klávesnice. PDA nejsou schopny zobrazit klávesnici, protože OS není spuštěný. FSDE se zdá být dobrým nástrojem pro ochranu důležitých dat. Před použitím se musí zvážit několik faktorů: správa klíče, výběr klíče, dostupnost hardwaru a bezpečnostní útoky na technologii. Musí se zajistit, že privátní klíč je bezpečně uchovaný a FSDE umí obnovit soubory při ztrátě klíče. Velice důležitý je výběr klíče, protože ochrana celého disku záleží na tomto výběru. Většina FSDE softwarů ponechává po autentizaci šifrovací klíč v paměti. Tyto řešení jsou náchylné na cold boot útoky. Tento typ útoku se pokouší uložit obsah RAM předtím, než elektrický náboj zmizí a data jsou ztracena. Existují 2 techniky, z nichž první technika náhle vypne systém a rychle ho restartuje s pozměněným OS navrženým speciálně na uložení obsahu paměti do souboru. Druhá technika zahrnuje fyzické odstranění paměti z původního systému a její umístění do jiného systému s pozměněným OS. Jelikož jsou tyto techniky zaměřeny na nezabezpečený hardware, je toho velice málo, co může FSDE software udělat proti tomuto typu útoku. Virtuální šifrování disku [47] je proces šifrování souboru, kterému se říká kontejner. Může obsahovat mnoho souborů a složek a poskytuje k nim přístup až po řádné autentizaci, kdy se z něj stává virtuální disk. Využívá se u všech typů úložišť, a jakmile proběhne autentizace, software automaticky šifruje a dešifruje soubory. Kontejner může být přenášen z jednoho média na druhé bez dopadu na šifrované soubory (např. mohou být vypalovány na CD a DVD). Může dojít k malému zpoždění při manipulaci se soubory nebo při zapojování a odpojování disku. Je velice lehké zálohovat citlivá data. Kontejner se jednoduše zkopíruje na záložní médium nebo server. Výhodou oproti FSDE je, že může být použito v situacích, kde je potřeba mít chráněnou i nechráněnou část úložiště. Některé produkty podporují mobilitu tím, že nabízejí možnost připojení spustitelných souborů na médium s kontejnerem. Při připojení média k jinému počítači se spustitelné soubory zapnou a nainstalují ovladače nebo spustí autentizaci a příslušnou dešifrovací utilitu. Kontejnery jsou chráněny až do doby, než se uživatel přihlásí. Virtuální šifrování neposkytuje žádnou ochranu pro soubory mimo kontejner, ani pro swap soubory a soubory pro hibernaci, které mohou obsahovat nešifrované soubory z kontejneru (ty které jsou načteny v paměti). Úplné šifrování disku (FDE) je proces šifrování celého obsahu úložného média, až na MBR. Přístup k souborům je poskytnut až po autentizaci. Nejčastěji je prováděno na odnímatelných zařízeních, jako jsou USB flash disky nebo externí pevné disky. Je velice podobné FSDE, nezvládne však zašifrovat disk s operačním systémem.
1
Hibernace je zachování stavu počítače a jeho umístění do stavu s nízkým odběrem energie. Obsah paměti je uložen na disk, avšak některé OS neukládají obsah paměti do složky. Takové módy by neměly být používány s FSDE softwarem, protože tak nemůže být zajištěna jejich ochrana.
27
6.2
Módy operací
Módy operací [33, 45, 50] umožňují opakované a bezpečné použití blokových šifer pod jedním klíčem. Bloková šifra sama o sobě dokáže šifrovat pouze jeden blok dat (velikost podle vstupu pro danou šifru). Kryptografický mód šifry obvykle kombinuje její základní algoritmus se zpětnou vazbou. Tato kombinace je zajištěna pomocí nějaké jednoduché operace a to proto, že bezpečnost má být zajištěna samotnou šifrou a nikoliv módem jejího provozu. Přirozeně musí platit, že kryptografický mód bezpečnost šifry nijak nesnižuje. Některé módy jsou též standardizovány – konkrétně ECB, CBC, CFB a OFB jsou součástí norem FIPS 81 a ANSI X3.106-1983. Při šifrování dat, jejichž velikost má nenulový zbytek při dělení vstupním blokem dat u šifry, se využívá tzv. padding schéma. Jedná se o doplnění posledního bloku dat (který obsahuje míň bitů než je potřeba) nulami nebo připojením 1 a teprve poté doplnění nulami. Prvním z módů operací je ECB (Electronic CodeBook), kde je šifra použita na každý blok nezávisle. Nevýhodou tohoto módu je, že stejný plaintext se šifruje při stejném klíči na stejný ciphertext, proto se obecně skoro nepoužívá. Nejběžnějším módem je CBC (Cipher Block Chaining) a rozšiřuje základní algoritmus blokové šifry o zpětnou vazbu. Konkrétně se popsaná zpětná vazba uplatňuje tak, že blok otevřeného textu je před šifrováním XORován se zašifrovaným předchozím blokem. Jelikož je CBC mód rekurzivně definován, potřebuje šifrování prvního bloku dat nějaký předcházející blok. Tomuto bloku se říká inicializační vector (IV). IV je vlastně blok náhodných dat a jeho použitím se zabraňuje tomu, že dvě identické zprávy budou šifrovány za použití stejného klíče na stejný ciphertext. CBC není paralelizovatelné, protože nesplňuje V/V nároky RAID polí. CFB (Cipher FeedBack) mód překonává limitace CBC tím, že se bloková šifra chová jako proudová šifra s vlastní synchronizací. Pro šifrování se na začátku musí naplnit posuvný registr (má velikost bloku šifry) inicializačním vektorem. Pomocí standardního šifrovacího mechanismu (pro danou šifru) se zašifruje obsah posuvného registru a z výsledku se vezme nejlevějších (tj. nejvíce významných) n bitů. Prvních n bitů otevřeného textu se pak zXORuje s touto hodnotou a získá se prvních n bitů šifrovaného textu. Obsah posuvného registru se posune o n bitů doleva. Příslušných n bitů šifrovaného textu se pak vloží na místo nejnižších n bitů v posuvném registru, čímž je zajištěna zpětná vazba. Útočník může lehce pozměnit plaintext prohozením bitů ciphertextu. Proto by se proudové šifry neměly používat bez mechanismu pro kontrolu integrity. OFB (Output FeedBack) mód pracuje podobně jako CFB s tím rozdílem, že se na uvolněné místo v posuvném registru vkládají bity podklíče. Tento způsob netvoří skutečnou zpětnou vazbu mezi šifrovaným a otevřeným textem (tak jak tomu bylo u CBC nebo CFB) – tomuto se někdy říká vnitřní zpětná vazba (internal feedback). Neznalost IV způsobí chybné dešifrování všech bloků šifrového textu. CTR (Counter) mód je obdobný OFB. Ovšem namísto posuvného registru se používá čítač (tím se ztrácí jakákoliv zpětná vazba). Po každém zakódování jednoho bloku se hodnota čítače změní o konstantu, zpravidla se zvětší o jedna. Namísto čítače je možné použít i např. generátor náhodných čísel (pro dešifrování je však vždy nutno použít stejnou posloupnost hodnot, která byla použita pro šifrování). Tento mód je plně paralelizovatelný, protože je datově nezávislý a nejsou zde žádné vnitřní závislosti pro generování jednotlivých klíčů pro proudové bloky. Následující módy jsou navrženy pro šifrování disku: LRW, XEX, MCB, CMC, EME, XCB, ABL [33, 45]. Většina z nich je navržena skupinou SISWG – Security In Storage Working Group [51], která se snaží standardizovat bezpečnostní řešení pro data v klidu a správu klíče. Více v podkapitole 6.3. 28
LRW (Liskov, Rivest, Wagner) je tweakable narrow-block šifrovací mód využívající AES šifrování. Tweakable bloková šifra má 3 vstupy: klíč, zprávu a tweak. Tweak je číselná hodnota a je zde vytvořen násobením mezi tajným klíčem a indexem bloku, který se šifruje. Tím, že je tweak závislý na indexu se zajišťuje efektivní propojení ciphertextu a lokace na disku, což snižuje hrozby útoků typu kopírovat-a-vložit. Jedná se však o pomalejší šifrování, které se dá zrychlit vytvořením tabulky s tweaky (po sobě jdoucí bloky mají stejný index). XEX (XOR-Encryption-XOR) je další tweakable narrow-block šifrovací mód. Konstrukce je jednoduchá XOR-zašifrovat-XOR. Tweak se skládá z násobení mezi adresou sektoru a 2 na index bloku uvnitř sektoru. XEX je podobný LRW, je však navržen pro obecné šifrování, ale dá se upravit i pro šifrování disku. Dále šifruje adresu a samotný blok dat a vyhýbá se zdlouhavému generování klíčů tím, že používá stejný klíč pro šifrování adresy i bloků. MCB (Masked CodoBook) je tweakable narrow-block šifrovací mód. Používají se 3 klíče. První se používá k vytvoření maskovacího matice (pro proměnu výstupu u každé operace). Druhý je využit k šifrování tweaku a poslední šifruje samotná data. Maskovací matice se používá pro celý sektor a je sestrojena za použití AES v counter módu. Tweak se vypočítá zašifrováním ID sektoru druhým klíčem. Poté se produkují maskovací hodnoty pomocí XORování tweaku s jejich příslušným řádkem v maskovací matici. Autoři MCB tvrdí, že MCB je bezpečné tak dlouho, dokud útočník nezná použité klíče. CMC (CBC-Mask-CBC) je tweakable wide-block šifrovací mód, který není paralelizovatelný, protože používá 2 kroky CBC zpracování. Nejdříve se použije obyčejné CBC, poté se z výsledného ciphertextu vypočítá maska, která je aplikována na všechny bloky a vytvoří tak mezi nimi závislost. CBC se spustí znovu na průběžném ciphertextu, ale tentokrát odzadu. Hodnoty tweaků slouží jako IV pro CBC. Jelikož CBC proběhne dvakrát, může se znovu použít existující CBC implementace. EME (ECB-Mix-ECB) je paralelizovatelný tweakable wide-block šifrovací mód. Jak již název napovídá, nejdříve se provede ECB šifrování plaintextu, následuje mixovací krok a znovu ECB. Díky symetrické struktuře je dešifrování prováděno stejným způsobem. Oproti CMC má EME dvě výhody. U všech šifer se využívá pouze jeden klíč, namísto dvou, a zašifrování používá pouze dopředný směr blokových šifer, zatímco dešifrování opačný. Tyto změny jsou užitečné při použití např. AES šifry, kde jsou oba směry značně rozdílné. ABL (Arbitrary Block Length) může být nastaveno pro formování šifrovacích bloků libovolné délky (stejná vlastnost jako mají proudové šifry). ABL XORuje plaintext s klíčem, využívá LubyRackoff strukturu [59] a je specifikováno jako ABL3 a ABL4. ABL4 přidává další kola k ochraně proti příležitostnému znovupoužití. Může využívat jeden nebo více klíčů. XCB (Extended CodeBook) je další wide-block šifrovací mód, který využívá Luby-Rackoffovu strukturu. Na rozdíl od ABL využívá jiné funkce a má 5 kol. Podle autorů se XCB nemusí používat pouze pro šifrování disku, najde také uplatnění v jiných oblastech, kde systém nemůže povolit rozpínání dat (např. síťové protokoly). První a poslední kolo využívá jednoblokovou šifru. Velkou nevýhodou XCB, EME a CMC módů je, že v jejich původní formě jsou patentovány.
6.3
IEEE 1619-2007 standardy
IEEE 1619 [33, 51] (Institute of Electrical and Electronics Engineers) je projekt, který byl schválen jako standard v prosinci roku 2007. Zaměřuje se na kryptografickou ochranu dat na blokově-
29
orientovaných úložištích v klidu. Obecněji jsou tyto standardy vytvořeny skupinou SISWG. Skládá se ze 4 částí: - P1619: Narrow-block šifrování – zaměřuje se na XTS-AES šifrovací algoritmus; - P1619.1: Autentizované šifrování – popisuje metody a algoritmy pro autentizované šifrování disku; - P1619.2: Wide-block šifrování – poskytuje alternativní algoritmus pro šifrování disku; - P1619.3: Správa klíče – je založena na XML formátu. XTS-AES [52] je transparentní narrow-block šifrovací mód speciálně navržený pro šifrování disku (může být implementovaný v softwaru i hardwaru). Jedná se o TCB (Tweakable CodeBook) mód založený na XEX módu se zkracováním ciphertextu (XTS) a využitím AES jako základní blokové šifry. Existuje ve dvou variantách: XTS-AES-128 a XTS-AES-256. Tento mód může být rozdělen na 3 části. První je podobná jako XEX algoritmus (modifikovaný pro disky), kde však využívá 2 klíče místo jednoho. Prvního klíče je potřeba v šifrovacím kroku XOREncrypt-XOR, zatímco druhý se využije pro šifrování adresy. Pojem TCB je odvozen z faktu, že XTS používá ECB s dvěma vstupy navíc v každém šifrovacím kroku (odtud přívlastek tweakable). Aby byl algoritmus schopný zpracovat data, která nejsou rovnoměrně dělitelná na bloky, využívá se CTS techniky. CTS (Ciphertext Stealing) je technika, která povoluje šifrování dat, která nejsou rovnoměrně dělitelné do bloků, bez rozšiřování ciphertextu. Módy operací, které využijí CTS, jsou ECB a CBC, které jinak musí využívat padding (proudové šifry tudíž CTS nevyužívají). Běžný způsob implementace je, že normální procedura šifrovacího módu se využije na všechny bloky kromě posledních dvou a ty jsou zpracovány jinak. Vyžaduje se bufferování těchto bloků, aby mohly být řádně zpracovány na konci datového proudu, což zvyšuje zpoždění. [33] Wide-block [54] šifrování v P1619.2 využívá módů EME2 [56] a XCB společně pouze s AES (EME2-AES a XCB-AES). Velikost vstupu je stejně velká jako velikost výstupu, což je všeobecně žádoucí. Malá změna v plaintextu produkuje úplně jiný ciphertext (až 50% bitů se liší). Toto šifrování lépe chrání proti situacím, kdy útočník může sledovat šifrování dat při mnoho přečíst-modifikovatzapsat cyklech. EME2 přidává určité funkcionality k EME, například zvládá libovolně velké zprávy a libovolně velké tweaky, které šifruje. P1619.1 [53] specifikuje požadavky pro kryptografické jednotky, které poskytují šifrování a autentizaci dat obsažených uvnitř úložiště. Autentizace je dosaženo pomocí MAC (Message Authentication code). Schválené módy jsou CCM-128-AES-256, GCM-128-AES-256, CBC-AES-256-HMACSHA a XTS-AES-256-HMAC-SHA. Všechny tyto módy využívají AES-256 blokovou šifru. CCM-AES (Counter mode with CBC-MAC) je navržen pro zajištění autentizace a důvěrnosti. Vstup se skládá ze tří částí: data, asociovaná data (např. hlavička), které nejsou šifrované, ale jsou autentizované, a jedinečná hodnota, které se říká nonce. CCM se skládá z dvou procesů: generováníšifrování a dešifrování-verifikace. Při šifrování se nejdříve použije CBC na data, poté nonce ke generování MAC, dále se na obě části se použije counter mód a vznikne výsledný ciphertext. Dešifrování je provedeno opačně. [45] GCM-AES (Galois/Counter) mód využívá násobení v Galoisově poli [7] pro hashování dalších autentizačních dat s univerzálním hashem. Galoisovo pole může být implementováno v hardwaru. Tím se sníží cena operací. Šifrování je prováděno šifrou v counter módu. Nejdříve se data zašifrují a potom proběhne autentizace. Jedná se o paralelizovatelný mód. [45]
30
CBC-AES-HMAC-SHA je CBC mód pro šifrování s autentizací založenou na hashování klíče (HMAC) a využitím zabezpečeného hashovacího algoritmu (SHA [34]). HMAC [57] má 2 parametry: zprávu na vstupu a klíč, který zná pouze původní vlastník a očekávaný příjemce. XTS-AES-HMAC-SHA je XTS mód pro šifrování s autentizací založenou na hashování klíče a využitím zabezpečeného hashovacího algoritmu. XML-based Key-Export format [55] je formát pro správu klíče v P1619.3. Zálohovací struktura poskytuje všechny potřebné informace k dešifrování libovolného počtu datových jednotek, které jsou šifrovány pomocí XTS-AES. Element ID struktury Standard Rozsah klíče Transform Klíčový materiál
Popis identifikátor současné struktury identifikátor standardu rozsah klíče popis transformace materiál klíče a jeho délka
Tabulka 6.1: Zálohovací struktura klíče ID struktury obsahuje informace potřebné k identifikování určité instance ve struktuře. Standard obsahuje informaci, ve kterém standardu jsou data šifrována. Rozsah klíče definuje rozsah klíče a sekvenci datových jednotek. Transform jméno je jeden z podporovaných řetězců: XTS-AES-128 nebo XTS-AES-256. Tato struktura může být dále chráněna šifrováním klíčového materiálu. [33]
31
Kapitola 7 Analýza šifrovacích programů V následující části je proveden rozbor open-source šifrovacích programů, jejich bezpečnostní prvky a způsoby, jakými zajišťují šifrování dat. Jak již bylo zmíněno v šesté kapitole, existují 3 různé možnosti šifrování disků: - úplné šifrování disku – šifruje každý jednotlivý bit na disku nebo jeho oddílu. Jediný nešifrovaný sektor je MBR, který obsahuje data nutná pro zapojení disku. - úplné šifrování systémového disku – šifruje všechno kromě MBR a pre-boot jádra. Používá se u disků, které obsahují operační systém. - virtuální šifrování oddílů – vytváří kontejner, který může být zapojen jako normální šifrovaný disk.
7.1
TrueCrypt
TrueCrypt [30, 31] je bezplatný program pro šifrování disku u Windows, Mac OS X a Linux. Udržuje on-the-fly šifrování a obsahuje následující funkcionality [32]: - vytváří virtuální šifrovaný disk uvnitř souboru, který zapojuje jako pravý disk; - šifruje celý obsah úložiště nebo pouze jeho část; - šifrování je automatické a průběžné a může být hardwarově urychlené procesory; - poskytuje 2 úrovně věrohodné popiratelnosti. První je steganograficky skrytý obsah a druhou úrovní je vlastnost, že obsah není rozlišitelný od náhodných dat. Jakmile je provedeno šifrování disku nebo je zapojen virtuální disk, šifrování/dešifrování je úplně transparentní a kromě malé ikony po něm není ani stopa. Heslo se zadává při startu systému a od verze 6.1 je dokonce možné vypnout všechen text, takže útočník, který sleduje start systému, není schopný zjistit, že je TrueCrypt používán. Dále je od této verze možné vytvořit oddělený skrytý operační systém. [33] Šifrování se skládá ze tří různých blokových šifer. Jejich účelem je poskytnou důvěrnost pomocí rozptýlení a prohození plaintextu do ciphertextu. TrueCrypt používá tyto blokové šifry: AES, Serpent a Twofish. AES (The Advanced Encryption Standard nebo také Rijndael) využívá 256 bitový klíč, 14 kol a 128 bitový vstup a výstup. S výjimkou počáteční inicializace a posledního kola je každé kolo stejné a může být rozděleno do 4 specifických operací: - substituce bytů – plaintext je rozdělen na 16 bytů, jejichž hodnoty jsou potom použity k určení substituce; - posunování po řádcích – plaintext se uspořádá do matice bytů 4x4, kde je každý řádek periodicky posouván vlevo; - míchání sloupců – využívá se zde lineární transformace pro další rozptýlení textu; - vypočítání odděleného podklíče z primárního klíče a generování klíče pro použití v šifře. Twofish taktéž používá 256 bitový klíč a 128 bitový vstup a výstup. Jedná se o komplexnější algoritmus, který sdílí společné funkce s AES. Na Twofish se dá nahlížet jako na kolekci o 2128 různých kryptosystémů, kde 128 bitů odvozených z 256 bitového klíče kontroluje výběr kryptosystému. Využívá na klíči závislé S-boxes (Substitution boxes), což přidává další vrstvu 32
zabezpečení. Jelikož pro dva různé klíče je primární substituční schéma rozdílné, je velice těžké prolomit jedno kolo bez znalosti klíče. Šifrovací proces Serpent algoritmu zahrnuje počáteční permutaci plaintextu, která jednoduše přemapuje 128 vstupních bitů na nové pozice, 31 kol operací, modifikované 32. kolo a poslední permutaci, která je inverzní k počáteční. TrueCrypt využívá kaskádové šifrování, kdy je nejprve použit jeden algoritmus a poté další. Každý z nich používá svůj vlastní klíč a všechny šifrovací klíče jsou vzájemně nezávislé (dokonce i hlavičky klíčů jsou nezávislé, i když jsou odvozeny ze stejného hesla). Podporují se následující kombinace: AES-Twofish, AES-Twofish-Serpent, Serpent-AES, Serpent-Twofish-AES, TwofishSerpent. Algoritmus AES Serpent Twofish AES-Twofish AES-Twofish-Serpent Serpent-AES Serpent-Twofish-AES Twofish-Serpent
Velikost Klíče (bity) 256 256 256 256; 256 256; 256; 256 256; 256 256; 256; 256 256; 256
Velikost bloku (bity) 128 128 128 128 128 128 128 128
Mód operace XTS XTS XTS XTS XTS XTS XTS XTS
Tabulka 7.1: Přehled šifrovacích algoritmů Hashovací algoritmy jsou obvykle použity pro zajištění integrity dat. TrueCrypt využívá těchto algoritmů jako generátorů pseudo-náhodných čísel, protože každá zpráva je hashována na jinou hodnotu. Tímto způsobem se produkují klíče (a sůl2). TrueCrypt podporuje následující hashovaní algoritmy: RIPEMD-160, SHA-512 a Whirlpool. SHA-512 [34] algoritmus nejprve vezme vstupní zprávu (až 2128 – 1 bitů dlouhou) a doplní ji nulami tak, že obsahuje 896 mod 1024 bitů. 128 bitů je připojeno ke zprávě a označuje její původní velikost. Zpráva tak obsahuje n 1024 bitových bloků dat. V každém kole (80) jsou bloky rozděleny na šestnáct 64 bitových slov, se kterými se dále pracuje. Konečný hash má 512 bitů. Whirlpool [35] algoritmus akceptuje až 2256 – 1 bitů dlouhý vstup. Pokud není vstup kongruentní s 256 mod 512, přidá se 1, potřebné množství nul a poté 256 bitů reprezentujících velikost. Zpráva je rozložena do 512 bitových bloků a je organizována jako matice 8x8 bytů. První kolo funkce vezme vstup a výstup předchozí blokové funkce (Hi-1 kde H0 je prázdný řetězec, samé 0) jako počáteční klíč a spojí je dohromady. Dále se využívá S-boxes, sloupcové posouvání a řádkové mixování. Konečný hash má 512 bitů. RIPEMD-160 [36] se liší velikostí hashe, který má 160 bitů. Vstup může mít až 264 – 1 bitů a přidává se 0, dokud není zpráva kongruentní s 448 mod 512. Dále se přidá 64 bitů označujících délku. RIPEMD je podobný SHA-512 i Whirlpool.
2
Sůl je série náhodných bitů určená pro vytvoření silnějšího hesla a rozlišují se i tak hesla, kdy mají různí uživatelé stejné hesla.
33
7.1.1
Práce s TrueCryptem
Po výběru šifrovacího a hashovacího algoritmu je uživatel vyzván k provedení několika náhodných pohybů s myší. To se provádí z toho důvodu, že TrueCrypt využívá data spojená s pohybem myši jako jádro pro hashovací algoritmus během generování klíče a soli. Čím delší a čím více náhodný je pohyb myši, tím lépe. Při použití programu ve víceuživatelském prostředí se povolí přístup každému, kdo má potřebné heslo, proto by se heslo mělo dávat pouze oprávněným lidem. Jakmile se šifrovaný disk připojí, zůstane přístupný pro jakéhokoliv uživatele. Změna uživatele tento disk neodpojí. Odpojit disk může pouze ten, kdo jej připojil nebo systémový administrátor. Pro zachování požadované úrovně bezpečnosti je tedy důležité odpojit všechny šifrované disky při přepínání uživatelů. Při vytváření šifrované části se požaduje vytvoření tzv. záchranného disku (na CD, DVD), který slouží pro následující účely: - jakmile se poškodí tzv. Boot Loader, záchranný disk jej obnoví. - mohou se poškodit kritická data nebo dokonce šifrovací klíč, pomocí tohoto disku se obnoví (je stále potřeba znát daný klíč). - umožňuje trvalé dešifrování oddílu (např. při poškození OS). - jestliže útočník získá přístup k tomuto disku, není schopen získat přístup k datům, protože nezná potřebné heslo. TrueCrypt dále umožňuje vytváření tzv. keyfiles. Keyfile je soubor, jehož obsah je kombinovaný s heslem. Dokud není dodáno správné heslo, žádný obsah, který využívá keyfile nemůže být připojen. Nevýhodou je, že keyfiles nejsou podporovány pro šifrování systému. Dále se jako keyfile může využít jakýkoliv soubor a jeho obsah se nezmění. Použití těchto souborů má však několik výhod: - může zlepšit ochranu proti útoků hrubou silou. - dovoluje využívat bezpečnostní tokeny nebo tzv. smart-karty. - dovoluje více uživatelům připojit jeden obsah s využitím různých hesel. TrueCrypt je šifrovací program, není proto odolný vůči malwaru. Jeho použití na infikovaném počítači může být nebezpečné. Např. útoky key-loggerů mohou zjistit vaše heslo. Dále nezajišťuje ani integritu dat, ani jejich autentičnost. Některé zařízení a některé souborové systémy využívají opotřebovací mechanismus, který zvyšuje životnost úložiště nebo média. Pomocí něho jsou i opakovaně zapisovaná data rovnoměrné rozdělena po celém médiu. Při změně hesla nemůže TrueCrypt u takového zařízení zaručit, že se stará hlavička přepíše. Útočník se tak může pokusit připojit starou kopii dat za použití starého kompromitovaného klíče. Proto se doporučuje jej neprovozovat na takových zařízeních. Dalším nebezpečím je realokace špatných sektorů. Zařízení automaticky přesměruje špatné sektory (nedá se do nich zapisovat, ale mohou být čteny, pokud je to možné) na jiné. Data připravená k šifrování nebo smazání tak mohou zůstat v otevřené podobě. Tento program lze používat bez administrátorských práv jedině tehdy, pokud už je nainstalovaný. Bez těchto práv se může pouze připojit/odpojit šifrovaný obsah, zapisovat/ načítat data a vytvářet šifrované soubory. Nemůže se však šifrovat oddíl, vytvářet NTFS obsah, instalovat/odinstalovat TrueCrypt, změnit heslo, zálohovat hlavičky a pustit v přenosném módu. 7.1.2
Generování klíčů a soli
Generátor náhodných čísel (RNG – Random Number Generator) se používá ke generování primárního klíče, sekundárního klíče, soli a keyfiles. RNG vytváří zásobu náhodných dat v RAM. Tato zásoba má 320 bytů a je plněna z různých zdrojů: 34
-
pohybem myši nebo stiskem různých kláves; MAC OS X a Linux: pomocí vestavěného RNG; MS Windows: MS Windows CryptoAPI, časové proměnné a čítače.
Keyfile se zpracuje tak, že se nejdříve pro něj aktualizuje zásoba. Hodnota získaná z např. pohybu myši se rozdělí na jednotlivé byty. Tyto byty jsou pomocí modulo 28 přičteny do zásoby od pozice jejího kurzoru. Po zapsání bytu se kurzor posune o jeden byte a po dosažení konce se posune na začátek. Po každých 16 bytech se na zásobu použije mixovací funkce, která pracuje na principu difuze. Obsah této zásoby se aplikuje na heslo tak, že se heslo (pokud je heslo kratší než zásoba, doplní se nulami) i zásoba rozdělí na byty a ty se sečtou. Toto heslo je pak předáno funkci pro derivování klíče hlavičky (PBKDF2 [59]), která ho zpracuje (společně se solí) s použitím vybraného hashovacího algoritmu. Klíč hlavičky se používá pro šifrování/dešifrování šifrované oblasti v hlavičce souboru, kde je uložen primární klíč a jiná důležitá data. Šifruje se pomocí XTS módu. Sůl má 512 bitů, což značně snižuje účinnost slovníkových útoků s využitím předpočítaných tabulek (rainbow table attack). Náhodné bity jsou vytvořeny pomocí RNG. Klíče hlaviček použité v kaskádovém módu jsou vzájemně nezávislé i přesto, že jsou odvozeny ze stejného hesla. Například pro AES-Twofish-Serpent kaskádu funkce pro derivování klíče hlavičky vytvoří 768 bitů dlouhý klíč (sekundární klíč hlavičky se tvoří stejně). Ten se rozdělí na 3 klíče o velikosti 256 bitů. Prvních klíč využije Serpent, druhý Twofish a třetí AES. Jestliže útočník získá přístup k jednomu klíči, nemůže ho použít k odvození ostatních klíčů, protože neexistuje žádná rozumná metoda pro odvození hesla z klíče (kromě útoků hrubou silou na slabá hesla). Všechna data použitá při dešifrování jsou uložena v RAM (nikdy se neukládají na disk). TrueCrypt tak nezajišťuje, že RAM neobsahuje žádná citlivá data. Doporučuje se po ukončení práce s TrueCryptem vypnout počítač s tím, že se několik minut počká a poté se začne opět pracovat (vyžadované pro smazání RAM). TrueCrypt je tedy náchylný vůči cold boot útokům. Každá šifrovaná část obsahuje zanořenou zálohovanou hlavičku, která se nachází na konci té části (může se dokonce vytvořit externí zálohovací hlavička). Tato záloha není kopie původní hlavičky, protože je šifrována za použití jiné soli. Jestliže se změní heslo nebo je původní hlavička obnovena ze zálohy, obě hlavičky (původní i záloha) jsou znovu zašifrovány pomocí jiného klíče (za použití jiné soli). Hlavičky zálohované externě neobsahují žádnou nešifrovanou část. Jakmile se uživatel s využitím správného hesla pokusí připojit disk dvakrát za sebou (neúspěšně), TrueCrypt automaticky přepne na zálohovanou hlavičku.
7.2
FreeOTFE
FreeOTFE [37, 33] je další šifrovací program, který je zdarma. Lze použít u PC i PDA. Podporované blokové šifry jsou: AES, Blowfish, RC6, Serpent, Twofish a další. Na rozdíl od TrueCryptu, který podporuje i úplné šifrování systémového disku, podporuje jenom úplné šifrování disku a virtuální šifrování oddílů. FreeOTFE má následující vlastnosti: - Je vysoce přenositelný a nemusí se instalovat. - Zdrojový kód je volně dostupný a program se lehce používá. - Jsou podporovány bezpečnostní tokeny pro další vrstvu zabezpečení. - Přidává sůl k heslům a tím snižuje riziko, které představují slovníkové útoky. - Povoluje uživatelům zálohovat a obnovit kritické části. 35
Charakteristickou vlastností FreeOTFE je, že poskytuje modulární architekturu, která povoluje třetím stranám v případě potřeby implementovat další algoritmy. Původně bylo podporováno pouze šifrování pomocí CBC s ESSIV, od verze 3.0 jsou zahrnuty také LRW a XTS módy. ESSIV (Encrypted Salt-Sector) se využívá pro odvození IV pomocí kombinování adresy sektoru s hashem klíče (používaným CBC šifrou). Jelikož IV závisí na privátní informaci (klíči), sekvence iniciálních vektorů není známa a útoky založené na znalosti IV nemohou být provedeny. Dále poskytuje možnost vytvoření libovolného počtu skrytých disků, čímž poskytuje věrohodnou popiratelnost. Autoři tohoto programu dále poskytují i FreeOTFE Explorer, který povoluje, aby byl šifrovaný disk používán bez administrátorských práv. Tato vlastnost se hodí při použití v knihovnách nebo internetových kavárnách, kde nejsou dostupné administrátorské práva. Na rozdíl od FreeOTFE však neposkytuje on-the-fly šifrování pro virtuální disky. FreeOTFE obsah se skládá ze dvou částí: - kritický datový blok (CDB – Critical Data Block) – skládá se z kritické délky, která je 4096 bitů; - šifrovaný obraz oddílu – šifrovaný oddíl, který tvoří velký objem obsahu, je šifrován na 512 bytů sektor po sektoru. Toto probíhá pomocí primárního klíče uloženého uvnitř CDB nebo IV.
Obrázek 7.1: Kritický datový blok [37] CDB může být pouze součástí obsahu, v tom případě se připojí k šifrovanému obrazu oddílu, nebo může být uložen jako oddělený soubor, který se zde nazývá keyfile (obsahuje informace nutné k připojení obsahu). Tento soubor se používá v případech, kdy je potřeba mít kritickou informaci, která je nutná k připojení obsahu, uloženou odděleně. Např. na USB disk, který je jinak příliš malý na uložení celého obsahu. Keyfile je šifrován stejnou šifrou jako vztahující se šifrovaný obraz oddílu. FreeOTFE může využívat bezpečnostní tokeny nebo smart-karty, které mohou být použity jako bezpečné úložiště pro keyfile nebo jako další úroveň šifrování. RNG generuje čísla na základě pohybu myši nebo Microsoft CryptoAPI a vyprodukuje se 512 bytů náhodných čísel. Využívají se pro solení hesel a padding pro nevyužitý prostor u CDB.
7.3
Další šifrovací programy
DiskCryptor [60] je open-source program pro šifrování celého obsahu disku nebo jeho částí. Používá šifry AES-256, Twofish, Serpent a jejich kombinace v XTS módu a hashovaní funkci HMAC-SHA512. Má vysoký výkon, podporuje hardwarovou akceleraci AES a transparentní šifrování disku. Pro práci s ním jsou zapotřebí administrátorské práva. Uživatelská hesla jsou ukládána v paměti. Hlavička šifrovaného kontejneru obsahuje je dlouhá 2048 bytů. Obsahuje informace o oddílu a uživatelských klíči. Šifruje se pomocí vybraného algoritmu v XTS módu, kdy je klíč odvozený z uži36
vatelského hesla. Tato hlavička není viditelná a bez znalosti správného hesla je nerozlišitelná od náhodných dat. Jelikož se jedná o open-source program, bude zde částečně rozebrána jeho práce s hesly podle zdrojového kódu. Program je napsaný v jazyku C++ a má asi 10 MB. Samotné heslo je uloženo jako struktura o třech atributech: int příznak, double entropie hesla a int délka hesla. Obsahuje funkci pro kontrolu hesla, která ověřuje, zda je zadané heslo správně zadané a uloží ho do struktury hesla (heslo předělá na entropii, která je ve dvojkové soustavě). Další metoda přiřadí heslu odpovídající hodnocení jeho síly, zatímco jiná nastavuje nové heslo tak, že nejdříve smaže staré a teprve poté nastaví nové. Dm-crypt [38] je program implementovaný v linuxovém jádře verze 2.6 a vyšší a podporuje úplné šifrování systémového disku, úplné šifrování disku, virtuální šifrování oddílů a šifrování specifických souborů. Podporuje módy operací XTS, LRW a CBC s ESSIV. Samotný dm-crypt sídlí v jádře a zabývá se pouze šifrováním/dešifrováním. Sám o sobě neztvárňuje žádná data a spoléhá na uživatelovy programy. Jsou dostupné 2 programy: cryptsetup [40] a cryptmount [39]. Cryptsetup rozhraní nezapisuje žádné hlavičky do šifrovaného obsahu a z toho důvodu poskytuje pouze základ. Šifrovací nastavení musí být poskytováno pokaždé, když se zapojí disk a je použit pouze jeden klíč na celý obsah. Jednoduchost cryptsetupu se využije, když se kombinuje s třetí stranou, například při autentizaci čipovými kartami. Cryptmount je alternativou pro cryptsetup. Rohos Mini Drive [41] je šifrovací utilita, která šifruje obsah USB zařízení. Jeho činnost nevyžaduje žádné administrátorské práva (kromě prvotní instalace), proto se hodí, stejně jako FreeOTFE Explorer, především do kaváren a knihoven. Obsahuje virtuální klávesnici, která zabraňuje key-loggerům v získání hesla a využívá AES-256. Má vlastnost ukrytí a šifrování složky (využívá se např. pro Skype, Firefox a jiné), která nespustí danou aplikaci, jakmile není USB disk připojen. Obsahuje vlastní prohlížeč souborů, takže na hostujícím počítači nezanechá žádné dočasné soubory. Tato free verze dokáže šifrovat pouze 2GB velký oddíl. Cryptainer LE [42] je program určený pro všechny druhy Windows. Využívá 128 bitové šifrování (Blowfish, AES) a vytváří virtuální diskové jednotky. Pro využití v přenositelných zařízeních je zde utilita Cryptainer Mobile. Dále umožňuje posílání šifrovaných emailů. CryptoExpert Lite [43] je další freeware program určený pro vytváření virtuálních disků. Podporuje blokové šifry AES-256, Blowfish, CAST a 3DES. Dokáže šifrovat až 750GB velký prostor a je určen pro systémy Windows.
37
Kapitola 8 Závěr Cílem této práce byla bezpečnost souborových systémů a způsoby zabezpečení dat na disku šifrováním nebo dodatečnými technikami. Mezi dodatečné techniky patří především steganografie, která skrývá existenci jednotlivých souborů (nejčastěji do obrázků pomocí LSB techniky). Steganografické souborové systémy jsou popsány od starších modelů (StegFS pro Linux, StegFD) až po novější, kde se počítá s ukrýváním dat mezi počítače v síti (Mnemosyne, Mojitos). Mezi systémy, které zachovávají anonymitu odesilatele a příjemce, patří FreeNet, Free Haven a NFS. NFS je široce používaný u unixových systémů. Při šifrování disku závisí na použité blokové šifře. Některé šifry pro zabezpečení disku jsou již standardizovány (XTS-AES v P1619, wide-block šifrování v P1619.2, autentizované šifrování v P1619.1), a tak je jejich použití schváleno jako bezpečné. V praktické části jsou rozebrány různé šifrovací programy, které dokážou šifrovat celý obsah disku nebo jeho části. Nejrozšířenějším nástrojem je jednoznačně program TrueCrypt, který má velkou základnu programátorů a dobře zpracovanou dokumentaci. Je vhodný pro většinu situací, kdy je potřeba silného šifrování (využívá šifry AES, Twofish, Serpent a jejich kombinace). Při dodržování všech doporučení vývojářů, jako je např. zajištěná ochrana proti malwaru, se jedná o velice bezpečný program. Na rozdíl od FreeOTFE nedokáže používat více klíčů pro jeden kontejner (ani DiskCryptor), na druhou stranu oproti FreeOTFE podporují TrueCrypt i DiskCryptor hardwarovou akceleraci šifrovacích algoritmů, předstartovní autentizaci (pouze u Windows) a šifrování hibernačních souborů (pouze u Windows). Tyto programy (kromě DiskCryptor) jsou vhodné pro vytváření skrytých kontejnerů. Nevýhodou těchto tří programů je však potřeba administrátorských práv pro většinu funkcí, takže se příliš nehodí do knihoven a internetových kaváren. Pro tyto případy je lepší použít FreeOTFE Explorer nebo Rohos Mini Drive. Nedokážou však šifrovat disk s operačním systémem. Jistě by se mezi placenými programy našly stejně dobré nebo lepší aplikace pro tyto účely, nejsou však předmětem této práce.
38
Literatura [1]
[2] [3]
[4]
[5]
[6]
[7] [8] [9] [10] [11]
[12]
[13] [14]
[15]
[16]
[17]
Anderson, R., Needham R. a Shamir, A. The steganographic file system [online], aktualizace duben 1998, [cit. 5. 5. 2011]. Dostupné z:
. Reavis, J. Digital watermarking [online], aktualizace 3. 1. 2000, [cit. 5. 5. 2011]. Dostupné z: . Pang, H., Tan, K. L. a Zhou, X. StegFS: A Steganographic File Systém [online], aktualizace 5. 3. 2011, [cit. 22. 3. 2011]. Dostupné z: . Zhou, X., Pang, H. a Tan, K. L. Hiding Data Accesses in Steganographic File System [online], aktualizace 2004, [cit. 22. 3. 2011]. Dostupné z: . Hand, S., Roscoe, T. Mnemosyne: Peer-to-peer steganographic storage [online], aktualizace březen 2002, [cit. 22. 3. 2011]. Dostupné z: . McDonald, A. D., Kuhn, M. G. Stegfs: A steganographic file system for linux [online], aktualizace říjen 1999, [cit. 22. 3. 2011]. Dostupné z: . Weisstein, Eric W. "Finite Field." From MathWorld--A Wolfram Web Resource. http://mathworld.wolfram.com/FiniteField.html Devi. G, U. Steganography-Survey on File Systems [online], aktualizace 19. 8. 2006, [cit. 26. 4. 2011]. Dostupné z: . Žilka, R. Steganografie a stegoanalýza [online], aktualizace 2008, [cit. 26. 4. 2011]. Dostupné z: . Bartl, J. Steganografie a možnosti jejího využití [online], aktualizace 19. 2. 2010, [cit. 5. 5. 2011]. Dostupné z: . Rivest, R. L. Chaffing and Winnowing: Confidentiality without Encryption [online], aktualizace 24. 4. 1998, [cit. 5. 5. 2011]. Dostupné z: . Roscoe T., Hand S. Transaction-based Charging in Mnemosyne: a Peer-to-Peer Steganographic Storage System [online], aktualizace květen 2002, [cit. 5. 5. 2011]. Dostupné z: . Napster [online], aktualizace 2011, [cit. 5. 5. 2011]. Dostupné z: . Dingledine, R., Freedman, M. J. a Molnar, D. The Free Haven Project: Distributed Anonymous Storage Service [online], aktualizace 17. 12. 2000, [cit. 5. 5. 2011]. Dostupné z: . Ivkovic, I. Improving Gnutella Protocol: Protocol Analysis And Research Proposals [online], aktualizace 2001, [cit. 5. 5. 2011]. Dostupné z: . Clarke, I., et al. Freenet: A Distributed Anonymous Information Storage And Retrieval System online], aktualizace 1. 7. 2000, [cit. 5. 5. 2011]. Dostupné z: . Dingledine, R. R. The Free Haven Project: Design And Deployment of an Anonymous Secure Haven [online], aktualizace 22. 5. 2000, [cit. 5. 5. 2011]. Dostupné z: . 39
[18]
[19] [20] [21]
[22]
[23] [24] [25]
[26] [27]
[28] [29] [30] [31] [32]
[33]
[34] [35] [36]
Dlugolecki, J. NFS Security in Both Trusted and Untrusted Environments [online], aktualizace 21. 9. 2007, [cit. 5. 5. 2011]. Dostupné z: . Network Working Group, Network File System (NFS) version 4 Protocol [online], aktualizace duben 2003, [cit. 5. 5. 2011]. Dostupné z: . MIT, Kerberos: The Network Authentication Protocol [online], aktualizace 23. 4. 2011, [cit. 5. 5. 2011]. Dostupné z: . Eisler, M., Zambeel Lipkey – A Low Infrastructure Public Key Mechanism Using SPKM [online], aktualizace červen 2000, [cit. 5. 5. 2011]. Dostupné z: . Singla, A., Christopher, R. Ultrapeers: Another Step Towards Gnutella Scalability [online], aktualizace 18. 12. 2001, [cit. 5. 5. 2011]. Dostupné z: . Castro, M., Liskov, B. Practical Byzantine Fault Tolerance [online], aktualizace únor 1999, [cit. 5. 5. 2011]. Dostupné z: . Douceur, J. R. The Sybil Attack [online], aktualizace 2002, [cit. 5. 5. 2011]. Dostupné z: . Giefer, CH., Letchner, J. Mojitos: A Distributed Steganographic File System [online], aktualizace 2004, [cit. 4. 4. 2011]. Dostupné z: . Zhou, X. Steganographic File System [online], aktualizace 2005, [cit. 5. 5. 2011]. Dostupné z: . Lipmaa, H. Oblivious Transfer or Private Information Retrieval [online], aktualizace 2009, [cit. 5. 5. 2011]. Dostupné z: . Handbook of Applied Cryptography [online], aktualizace 6. 3. 2010, [cit. 26. 4. 2011]. Dostupné z: . Fenzi, K., Wreski, D. Linux Security HOWTO [online], aktualizace 22. 1. 2004, [cit. 26. 4. 2011]. Dostupné z: . TrueCrypt – Free Open-Source Disk Encryption Software [online], aktualizace 25. 4. 2011, [cit. 29. 4. 2011]. Dostupné z: http://www.truecrypt.org/docs/. TrueCrypt: Analysis and Implementation [online], aktualizace 2008, [cit. 29. 4. 2011]. Dostupné z: . Olzak, T. Evaluation of TrueCrypt as a Mobile Data Encryption Solution [online], aktualizace 4/2008, [cit. 29. 4. 2011]. Dostupné z: . Vaseem Alam, A. Disk Encryption, Norwegian University of Science and Technology [online], aktualizace červen 2009, [cit. 5. 5. 2011]. Dostupné z: . Gueron, S., Johnson, S. a Walker, J. SHA-512/256 [online], aktualizace 2010, [cit. 29. 4. 2011]. Dostupné z: . Stallings, W. The Whirlpool Secure Hash Function [online], aktualizace 2006, [cit. 29. 4. 2011]. Dostupné z: . Dobbertin, H., Booselaers, A. a Preneel, B. RIPEMD-160: A Strengthened Version of RIPEMD [online], aktualizace 18. 4. 1996, [cit. 29. 4. 2011]. Dostupné z: .
40
[37] [38] [39] [40] [41] [42] [43] [45] [46]
[47]
[48]
[49] [50] [51] [52]
[53]
[54]
[55]
[56]
FreeOTFE, Free disk encryption software for PCs and PDAs [online], [cit. 29. 4. 2011]. Dostupné z: . dm-crypt: a device-mapper crypto target [online], [cit. 29. 4. 2011]. Dostupné z: . cryptmount - a utility for accessing encrypted filesystems [online], aktualizace 3. 6. 2010, [cit. 29. 4. 2011]. Dostupné z: . cryptsetup – setup virval encryption devices under dm-crypt Linux [online], aktualizace 2011, [cit. 29. 4. 2011]. Dostupné z: . Rohos - Data security and user authentication for PC a [online], aktualizace 2010, [cit. 29. 4. 2011]. Dostupné z: . Cryptainer LE – Free 128bit Encryption Software [online], aktualizace 2011, [cit. 29. 4. 2011]. Dostupné z: . CryptoExpert 2011 LITE – Free on-the-fly drive encryption system [online], aktualizace 15. 4. 2011, [cit. 29. 4. 2011]. Dostupné z: . Fruhwirth, C. New Methods in Hard Disk Encryption [online], aktualizace 18. 7. 2005, [cit. 5. 5. 2011]. Dostupné z: . Tevora, Full Disk Encryption: What is it and how can it help your enterprise? [online], aktualizace únor 2009, [cit. 5. 5. 2011]. Dostupné z: . Scarfone, K., Souppaya, M. a Sexton, M. Guide to Storage Encryption Technologies for End User Devices [online], aktualizace listopad 2007, [cit. 5. 5. 2011]. Dostupné z: . Halderman, A., et al. Lest We Remember: Cold-Boot Attacks on Encryption Keys [online], aktualizace 21. 2. 2008, [cit. 5. 5. 2011]. Dostupné z: . Lubert, H. Full Disk Encryption (FDE) vs. File Encryption Technologies [online], aktualizace 2011, [cit. 5. 5. 2011]. Dostupné z: . NIST – National Institute of Standards and Technology [online], aktualizace 16. 2. 2010, [cit. 5. 5. 2011]. Dostupné z: . IEEE 1619 SISWG – Security In Storage Working Group [online], aktualizace 11. 3. 2011, [5. 5. 2011]. Dostupné z: . IEEE 1619 SISWG – Security In Storage Working Group, Narrow-Block Encryption [online], aktualizace 11. 3. 2011, [5. 5. 2011]. Dostupné z: . IEEE 1619.1 SISWG – Security In Storage Working Group, Authenticated Encryption [online], aktualizace 11. 3. 2011, [5. 5. 2011]. Dostupné z: . IEEE 1619.2 SISWG – Security In Storage Working Group, Wide-Block Encryption [online], aktualizace 11. 3. 2011, [5. 5. 2011]. Dostupné z: . IEEE 1619.3 SISWG – Security In Storage Working Group, Key Management [online], aktualizace 11. 3. 2011, [5. 5. 2011]. Dostupné z: . Mancillas-López, C., et al. On Some Weaknesses in the Disk Encryption Schemes EME and EME2 [online], aktualizace 2009, [cit. 5. 5. 2011]. Dostupné z: .
41
[57]
[58]
[59]
[60]
FIPS PUB 198, The Keyed-Hash Message Authentication Code (HMAC) [online], aktualizace 6. 3. 2002, [cit. 5. 5. 2011]. Dostupné z: . Luby, M., Rackoff, CH. How to construct pseudorandom permutations from pseudorandom functions [online], aktualizace 2. 4. 1988, [cit. 5. 5. 2011]. Dostupné z: . RSA Laboratories, PKCS #5 v2.0: Password-Based Cryptography Standard, RSA Data Security, Inc. Public-Key Cryptography Standards (PKCS), March 25, 1999, available at ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-5v2/pkcs5v2-0.pdf. DiskCryptor - Open source partition encryption solution [online], aktualizace 15. 11. 2010. [cit. 20. 5. 2011]. Dostupné z: .
42