Diskove´ šifrovánı
Transkript
Diskové šifrovánı́ Michal Dočekal 10. května 2007 1 Obsah 1 Úvod 3 2 Slabá mı́sta diskového šifrovánı́ 2.1 Napadenı́ přes sı́t’ . . . . . . . . . . . 2.2 Napadenı́ běžı́cı́ho systému . . . . . 2.3 Úprava nešifrované části systému . . 2.4 Prosáknutı́ zašifrovaných dat . . . . 2.5 Obnovenı́ dřı́vějšı́ záznamové vrstvy . . . . . 3 4 4 4 4 4 3 Technické aspekty diskového šifrovánı́ 3.1 Struktura pevného disku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Co se šifruje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 5 4 Implementace kryptosystémů 4.1 Šifry, hashe . . . . . . . . . . . . . . . . . . . 4.2 Šifrovacı́ módy . . . . . . . . . . . . . . . . 4.2.1 ECB, CBC . . . . . . . . . . . . . . . 4.2.2 LRW, XEX . . . . . . . . . . . . . . . 4.2.3 CMC, EME . . . . . . . . . . . . . . 4.2.4 Shrnutı́ . . . . . . . . . . . . . . . . . 4.3 Přı́prava disku/oddı́lu . . . . . . . . . . . . 4.4 Vzorová implementace . . . . . . . . . . . . 4.4.1 Dvouúrovňové šifrovánı́ . . . . . . . 4.4.2 Formát zašifrovaného oddı́lu . . . . 4.4.3 Zpracovánı́ klı́čů se slabou entropiı́ 4.4.4 Technická implementace . . . . . . . 4.5 Obecné závěry a doporučenı́ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 6 6 7 8 9 9 9 10 10 10 11 12 13 5 Porovnánı́ existujı́cı́ch implementacı́ 14 6 Nevýhody diskového šifrovánı́ 6.1 Zpomalenı́ přenosových rychlostı́ . . . . 6.2 Vyššı́ zátěž CPU, vyššı́ provoznı́ teplota 6.3 Komplikovanějšı́ záchranné operace . . 6.4 Vážnějšı́ následky narušenı́ integrity dat 6.5 Dalšı́ vrstva pro vznik chyb . . . . . . . 6.6 Single point of failure . . . . . . . . . . . 6.7 Falešný pocit bezpečı́ . . . . . . . . . . . 15 15 16 16 16 17 17 17 7 Závěr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2 1 Úvod Diskové šifrovánı́ je technika, při které se šifruje blokové zařı́zenı́1 . Šifrovat lze bud’ diskové oddı́ly nebo celé pevné disky, ale i jiná zařı́zenı́ (flashdisky, pamět’ové karty, CD, DVD, apod.). Z pohledu uživatele je celý proces transparentnı́, tj. po zadánı́ hesla a zprovozněnı́ šifrovacı́ a dešifrovacı́ vrstvy lze pracovat s daným zařı́zenı́m, jako by nebylo šifrováno. Data se dle potřeby dešifrujı́ a před zápisem na dané zařı́zenı́ jsou zašifrována. Proto se tato metoda označuje jako „on-the-fly encryption“, tedy šifrovánı́ za běhu. Implementace diskového šifrovánı́ však musı́ řešit celou řadu problémů. Po technologické stránce je to integrace do přı́slušných částı́ operačnı́ho systému. Nutnostı́ je i možnost náhodného přı́stupu k zašifrovaným datům a transparentnost. Musı́ být zvolen vhodný způsob šifrovánı́, tedy silná šifra, šifrovacı́ mód, popřı́padě některé dalšı́ dodatečné zabezpečovacı́ metody. V neposlednı́ řadě je třeba, aby uživatel danou implementaci znal dostatečně dobře, aby byl schopen celý zabezpečovacı́ systém nastavit tak, aby byl bezpečný. Filosofie diskového šifrovánı́ Šifrovánı́ pevného disku je činnost, která zvyšuje zátěž procesoru (při datových přenosech z/na šifrované oddı́ly), zpomaluje přenosy dat a komplikuje situaci při záchranných operacı́ch. Filosofiı́ použı́vánı́ tohoto prostředku je tedy předpoklad, že raději o daná data přijdu, než aby se dostala do nepravých rukou. 2 Slabá mı́sta diskového šifrovánı́ Diskové šifrovánı́ je poslednı́ obranná linie. Pomůže v situaci, kdy už jsme s největšı́ pravděpodobnostı́ o data přišli (odcizenı́ počı́tače či laptopu), a v optimálnı́m přı́padě zajistı́, že se k datům nedostane ani útočnı́k. Na druhou stranu, nenı́ to univerzálnı́ zabezpečovacı́ nástroj. Diskové šifrovánı́ je pouze jedno „ozubené kolečko“ navı́c v systému zabezpečenı́. Zvolı́me-li bezpečnou implementaci diskového šifrovánı́, bude pro útočnı́ka obtı́žné (ne-li nemožné) prolomit šifru nebo kryptosystém. Proto lze předpokládat, že prvnı́, co útočnı́k vyzkoušı́, bude cesta „kolem“. V úvahu přicházı́ následujı́cı́ možnosti. 1 Blokové zařı́zenı́ je jakékoliv zařı́zenı́ umožňujı́cı́ náhodný přı́stup k datům (pevný disk, CD/DVD médium, apod.). Opakem je znakové zařı́zenı́, které náhodný přı́stup neumožňuje (tiskárna, scanner, apod.) 3 2.1 Napadenı́ přes sı́t’ Diskové šifrovánı́ je metodou pro fyzické zabezpečenı́ dat, a proto nebude účinné v přı́padě, že se útočnı́kovi podařı́ prolomit do běžı́cı́ho systému ze sı́tě. V takovém přı́padě zı́ská kompletnı́ přı́stup k chráněným datům. Proto je třeba počı́tač adekvátně zabezpečit proti útokům ze sı́tě (at’už z mı́stnı́ sı́tě nebo z Internetu). 2.2 Napadenı́ běžı́cı́ho systému Je také nutné uvažovat o situaci, kdy se někdo dostane k běžı́cı́mu systému, zatı́mco jsme stále přihlášeni. Pak opět zı́ská kompletnı́ přı́stup k šifrovaným datům. Automatické zamykánı́ po určité době bývá na mı́stě. Stejně tak, pokud lze nějak obejı́t ověřenı́ uživatele v daném operačnı́m systému, je to potenciálnı́ zranitelnost. Přihlašovánı́ bez hesla nenı́ v tomto směru dobrý nápad. 2.3 Úprava nešifrované části systému Bohužel, stále nenı́ možné zavést operačnı́ systém ze zašifrovaného oddı́lu. Současné BIOSy toto neumı́. Proto musı́ vždy určitá část operačnı́ho systému zůstat nešifrovaná, aby jej bylo možné zavést. To je ovšem potenciálnı́ slabé mı́sto celé implementace. Útočnı́k může upravit programy v nešifrované části systému tak, aby někam zapsaly uživatelovo heslo, které si později útočnı́k vyzvedne, a zı́ská tak přı́stup ke všem zašifrovaným oddı́lům. Vhodnou obranou proti této formě útoku v prostředı́ch, kde je možné něco takového očekávat (např. u laptopů, které nejsou neustále pod dozorem majitele), je danou část operačnı́ho systému přenést na externı́ médium (např. flashdisk), nechat systém zavádět z něj a médium nosit neustále při sobě. 2.4 Prosáknutı́ zašifrovaných dat Operačnı́ systém má jistá vyhrazená mı́sta pro ukládánı́ dočasných souborů. Jsou-li tato mı́sta na nešifrovaných oddı́lech, hrozı́, že se v nich objevı́ i zašifrovaná data, se kterými budeme pracovat. Proto by bylo dobré všechny tyto oblasti zašifrovat také. Dalšı́m problémem je swap. Operačnı́ systém jej použı́vá k odkládánı́ neaktivnı́ch stránek operačnı́ paměti, a tyto neaktivnı́ stránky mohou obsahovat jak zašifrovaná data (v nešifrované podobě), tak, v horšı́m přı́padě, přı́mo plain text hesla pro přı́stup k šifrovaným oddı́lům. To je důvod, proč je vhodné do šifrovánı́ zahrnout i swap. 2.5 Obnovenı́ dřı́vějšı́ záznamové vrstvy Disk je magnetické záznamové médium. Jeho způsob záznamu nebyl navržen s ohledem na bezpečnost, a proto nebývá problém dostat se k předchozı́m vrstvám záznamu. Magnetický záznam bitu totiž nevyplňuje celou oblast pro záznam, ale pouze jejı́ část. 4 Jednotlivé vrstvy záznamu se tedy částečně překrývajı́ a podle některých zdrojů je možné se (s vhodným vybavenı́m) dostat až k několikáté předchozı́ vrstvě záznamu. Pokud jsme tedy data určená k zašifrovánı́ přechovávali na pevném disku v nešifrované podobě, je nutné daný pevný disk opakovaně přepsat různými vzorci dat, aby nebylo možné se k zašifrovaným datům dostat touto cestou. Za bezpečné se považuje 25 přepsánı́. 3 Technické aspekty diskového šifrovánı́ 3.1 Struktura pevného disku Pevný disk je magnetické záznamové médium, kde jsou data uložená na jedné nebo vı́ce plotnách. Z hlediska operačnı́ho systému se jedná o jeden veliký spojitý datový celek. Prvnı́ch 512 bytů pevného disku tvořı́ MBR (Master Boot Record). Ten obsahuje v prvnı́ch 446 bytech kód zavaděče operačnı́ho systému (bootloader), dále tabulku rozdělenı́ disku o velikosti 64 bytů (16 bytů na každý ze čtyř primárnı́ch oddı́lů) a tzv. magic number (2 byty). Rozdělenı́ ilustruje následujı́cı́ tabulka: pozice délka obsah 0-446 446 zavaděč 447-510 64 partition table 511-512 2 magic number Jelikož maximum v podobě 4 oddı́lů nebylo uspokojivé, byl zaveden tzv. rozšı́řený oddı́l. Ten vyplňuje jeden ze 4 oddı́lů primárnı́ch, ale umožňuje jej rozdělit na dalšı́ „logické“ oddı́ly. Na každém oddı́lu může být různý souborový systém[15]. To je, zjednodušeně řečeno, specifikace, která udává způsob uloženı́ souborů a přı́slušných metadat (oprávněnı́, ACL a jiné atributy). 3.2 Co se šifruje Diskovým šifrovánı́m je zpravidla myšleno šifrovánı́ na úrovni diskových oddı́lů, i když je teoreticky možné zašifrovat celý disk i s MBR. Pokud takové implementace hodláte použı́t, pořád je nutné mı́t na paměti, že současné BIOSy neumı́ zavést systém z takto zašifrovaného disku. Diskové šifrovánı́ je technicky realizováno jako mezivrstva mezi pevným diskem a souborovým systémem. To je jeho zásadnı́ odlišnost od speciálnı́ch souborových systémů, které šifrovánı́ implementujı́ (např. encfs2 ). Diskové šifrovánı́ stojı́ mimo souborový systém, a proto nezáležı́ na tom, který ze souborových systémů bude po zašifrovánı́ přı́slušného oddı́lu na něm vytvořen. 2 Informace o encfs naleznete na http://en.wikipedia.org/wiki/EncFS. 5 4 Implementace kryptosystémů Implementacı́ diskového šifrovánı́ je značné množstvı́. Mı́sto probı́ránı́ mnoha alternativ proberu jednu jedinou implementaci, se kterou mám zkušenosti a kterou považuji za bezpečnou. U nı́ pak zdůraznı́m jednotlivé vlastnosti, které by bylo dobré obecně preferovat nebo naopak se jich vyvarovat. Nejprve si však projdeme jednotlivé vlastnosti implementacı́ diskového šifrovánı́, jako jsou šifry, hashe, šifrovacı́ módy a některé dalšı́ faktory, které přı́mo ovlivňujı́ bezpečnost celého kryptosystému. 4.1 Šifry, hashe Výběr šifry je otázkou osobnı́ preference. Většina lidı́ si dnes patrně vybere vı́těze AES, šifru Rijndael. Jejı́ implementace bývá proto nejrychlejšı́. Někteřı́ si třeba vyberou některého jiného z AES finalistů, jako Serpent, Twofish, MARS nebo RC6. U šifer je dobré si pohlı́dat velikost bloku, zejména pak, zda-li přı́slušnou velikost zvládá i daná implementace. Bývá dobré hlı́dat délku hashe, aby 256bitovou šifru naplňovala 256bitová a nikoliv pouze 128bitová hash. Jelikož některé hashovacı́ algoritmy byly již téměř nebo zcela prolomeny, bylo by dobré zvolit takové, které jsou stále považovány za bezpečné. Za nevhodné hashovacı́ algoritmy lze považovat následujı́cı́[4]: • MD5 • SHA-0 • RIPEMD • SHA-1 4.2 Šifrovacı́ módy Jelikož šifrovaná data mohou být různě veliká a při šifrovánı́ stejného plain textu stejným klı́čem je výsledkem stejný šifrový text, vznikla řada šifrovacı́ch módů. U diskového šifrovánı́, kde docházı́ k šifrovánı́ obrovských datových celků s částečně predikovatelným obsahem v určitých mı́stech je použitý šifrovacı́ mód klı́čový. Bohužel, řada implementacı́ diskového šifrovánı́ použı́vá nevhodné šifrovacı́ módy (např. CBC), které potom vystavujı́ zašifrovaná data některým speciálnı́m typům útoků (např. watermarking attack). Ještě před vlastnı́m výkladem šifrovacı́ch módů si dovolı́m malou terminologickou vsuvku. Některé ze šifrovacı́ch módů využı́vajı́ tzv. inicializačnı́ vektor. To je blok bitů, který je využı́ván jako „počátek“ pro daný šifrovacı́ mód. Běžně je inicializačnı́ vektor stejně veliký jako velikost použité blokové šifry. 6 4.2.1 ECB, CBC ECB (Electronic Codebook) je šifrovacı́ mód, kde se každý blok šifruje nezávisle. Slabinou tohoto přı́stupu je neschopnost skrýt vzory v datech a naprosto se nehodı́ pro šifrovánı́ většı́ch objemů dat. Pokud objevı́te implmementaci diskového šifrovánı́ s ECB, obloukem se jı́ vyhněte. CBC (Cipher Block Chaining) je stále jeden z nejpoužı́vanějšı́ch šifrovacı́ch módů v rámci diskového šifrovánı́, navzdory tomu, že k tomuto účelu nebyl narvržen a trpı́ řadou zranitelnostı́. Jeho princip je následujı́cı́. Provede se XOR prvnı́ho bloku plain textu s inicializačnı́m vektorem, výsledek se zašifruje. Následně se provede XOR druhého bloku plain textu s prvnı́m, již zašifrovaným blokem, výsledek se zašifruje. Takto se pokračuje až do konce. Dešifrovánı́ pak probı́há přesně opačně. Dešifruje se prvnı́ blok šifrového textu a provede se XOR s inicializačnı́m vektorem. Druhý blok se dešifruje a provede se XOR se zašifrovaným prvnı́m blokem. Tak se pokračuje dále. Nejjednoduššı́ řešenı́ pro diskové šifrovánı́ představuje šifrovánı́ každého sektoru podle vzoru Ci = E(Ci−1 ⊕ Pi ), kde C je šifrový text, E je operace šifrovánı́ a P je plain text. Jako inicializačnı́ vektor posloužı́ 32-bitové čı́slo sektoru (zbytek bloku je vyplněn nulami). Inicializačnı́ vektor se použı́vá při šifrovánı́ každého sektoru v CBC 7 módu. Skutečnost, že inicializačnı́ vektor je predikovatelný (resp. veřejně známý), je tato implementace zranitelná vůči tzv. watermarking attack[9]. (5) (6) (5) Je-li P0 = 0 a P0 = 1, pak C0 = E(5 ⊕ 0) = E(6 ⊕ 1) = C06 . Tudı́ž, pokud bude na zašifrovaném oddı́lu uložen speciálně upravený soubor, který využije predikovatelnosti změn v inicializačnı́m vektoru, vzniknou v šifrovém textu identické sektory. Vzhledem ke statisticky mizivé pravděpodobnosti náhodného výskytu tohoto jevu, lze takto dokázat přı́tomnost daného souboru i na zašifrovaném oddı́lu. (Sektor) Proto byl navržen ESSIV (Encrypted Salt-Sector Initialization Vector)[8], kde C−1 = E(Sektor k Salt). Salt (česky sůl) jsou náhodně zvolené bity užı́vané jako jedna z proměnných vstupujı́cı́ch do přı́slušných kryptografických funkcı́. ESSIV generuje inicializačnı́ vektor z kombinace čı́sla sektoru s hashı́ klı́če (to je v tomto přı́padě ona „sůl“). Právě hash klı́če činı́ inicializačnı́ vektor nepředvı́datelný, a zabraňuje tak watermarking attack. Nezabránı́ ovšem jiným typům útoků[2]: • content leak - pokud útočnı́k najde dva shodné bloky šifrového textu Cm a Cn , může odhadnout změnu mezi plain texty tak, že prozkoumá rozdı́l mezi Cm−1 a Cn−1 ; v přı́padě, že jeden z bloků plain textu je nula, rozdı́l pak určı́ obsah druhého bloku • data modification leak - změnı́-li útočnı́k jeden blok plaintextu v sektoru, pak se změnı́ pouze jeden blok šifrového textu (toho lze využı́t pro sledovánı́ změn šifrového textu) • malleable plain text - úprava šifrového textu, která povede k predikovatelné změně plain textu • movable - za cenu ztráty jednoho bloku (který se dešifruje jako změt’náhodných znaků) může útočnı́k přesouvánı́m dvou po sobě jdoucı́ch bloků „pohybovat“ s plain textem (CBC závisı́ na Cn a Cn−1 , obojı́ je známé a dá se změnit) Všechny tyto typy útoků s výjimkou prvnı́ho předpokládajı́ opakovaný přı́stup k šifrovému textu. Proto je jejich závažnost relativně nižšı́. Pro úspěch „content leak“ útoku je zase třeba najı́t dva stejné bloky šifrového textu, což je relativně málo pravděpodobné (pravděpodobnost roste s růstem objemu zašifrovaných dat a klesá s růstem délky blokové šifry). 4.2.2 LRW, XEX LRW (Liskov, Rivest, Wagner) a XEX (Xor-Encrypt-Xor) pracujı́ na podobném principu a označujı́ se jako „tweakable narrow-block encryption“. Oproti CBC nepracujı́ na úrovni sektoru, ale na úrovni jednotlivých bloků (odtud označenı́ „narrow-block“). LRW použı́vá dva klı́če. Jeden pro blokovou šifru a druhý, sekundárnı́ klı́č („tweak“). Ten má stejnou velikost jako šifra a je svázán s logickým indexem (resp. je jı́m vynásoben). 8 Logický index obvykle představuje absolutnı́ pozici na disku měřenou velikostı́ bloku šifrovacı́ho algoritmu. Sekundárnı́ klı́č plnı́ podobnou úlohu jako inicializačnı́ vektor v přı́padě diskového šifrovánı́ s CBC. V přı́padě LRW je Ek = (P ⊕ X) ⊕ X, kde X = F ⊗ I, přičemž F je druhý klı́č a I je logický index. XEX pracuje tak, že rozdělı́ klı́č na dvě části stejné velikosti: K = K1 k K2 . Druhý klı́č je reprezentován kombinacı́ adresy sektoru a pozice bloku v sektoru. Tyto šifrovacı́ módy nabı́zı́ nejoptimálnějšı́ poměr bezpečnosti a rychlosti. 4.2.3 CMC, EME CMC (CBC-mask-CBC) a EME (ECB-mask-ECB) jsou šifrovacı́ módy, které tuto zranitelnost nemajı́. Majı́ ovšem dost podstatnou nevýhodu, a sice nutnost každý blok zašifrovat dvakrát. Vzhledem k faktu, že prosáknutı́ datové modifikace na úrovni bloku se vyhnout nelze, mnozı́ považujı́ cenu dvojı́ho šifrovánı́ za přı́liš vysokou (v poměru k tomu, co zı́skáme). 4.2.4 Shrnutı́ Šifrovacı́ mód ECB by se v implementacı́ch pro diskové šifrovánı́ neměl nacházet, neb je to nejméně bezpečný mód. Pokud existuje nějaká implementace diskového šifrovánı́ s tı́mto módem, doporučuji se jı́ obloukem vyhnout. CBC je pro účely diskového šifrovánı́ často použı́ván. Bohužel má celou řadu zranitelnostı́, počı́naje watermarking attack. Tyto zranitelnosti sice předpokládajı́ jisté okolnosti, bez jejichž splněnı́ nemohou být využity, nicméně přesto by bylo dobré využı́t jiného šifrovacı́ho módu, je-li to možné. Pokud ne, doporučuji použı́t ESSIV variantu CBC. LRW či XEX se zdajı́ být vhodnými kandidáty pro diskové šifrovánı́. Naopak CMC a EME jsou sice o malinko bezpečnějšı́, ovšem za poměrně vysokou cenu - ztrátu výkonu. Vše ještě ilustrujme následujı́cı́ tabulkou: zranitelnost CBC CBC-ESSIV LRW CMC, EME content leaks ano ano ne ne watermarkable ano ne ne ne malleable ano ano ne ne movable ano ano ne ne modification leak ano ano ano ne 4.3 Přı́prava disku/oddı́lu Pokud hodláme zašifrovat data, která na přı́slušném disku či oddı́lu byla již dřı́ve a v nešifrované podobě, musı́me zajistit, aby útočnı́k tuto předchozı́ vrstvu záznamu na pevném disku nemohl obnovit. S pomocı́ přı́slušného softwaru bychom měli přepsat disk náhodnými vzorci dat. Jako bezpečný počet přepisů je považováno 25 přepsánı́. 9 Oddı́l či disk bývá vhodné před zašifrovánı́m přepsat náhodnými daty. To zabraňuje možnosti rozeznat, kde jsou zašifrovaná data a kde ne. Pokud nebudeme mı́t k dispozici dostatečně rychlý generátor náhodných čı́sel (což bude ve většině přı́padů), použijeme co nejkvalitnějšı́ generátor pseudonáhodných čı́sel. V unixových systémech nám za tı́mto účelem posloužı́ zařı́zenı́ /dev/urandom, které skrývá generátor pseudonáhodných čı́sel, jehož výstupem přı́slušný disk či oddı́l přepı́šeme. 4.4 Vzorová implementace Vybranou implementacı́ je LUKS3 (Linux Unified Key Setup), současný standard diskového šifrovánı́ v operačnı́ch systémech postavených na Linuxu4 . Vybral jsem ji ze dvou důvodů. Jednak s nı́ už poměrně dlouho pracuji, a jednak má veřejné specifikace (a zdrojový kód). Podle mého názoru je minimálně zveřejněnı́ specifikace implementace diskového šifrovánı́ klı́čové pro důvěryhodnost takového systému. Bez přı́stupu ke specifikaci nenı́ možné posoudit jejı́ bezpečnost. Veřejný přı́stup ke zdrojovým kódům dané implementace je také pozitivum, nebot’se tak značně snı́žı́ riziko „zadnı́ch vrátek“, navı́c v tomto přı́padě si bezpečnost takového řešenı́ může ověřit každý. Znalost specifikace navı́c usnadňuje eventuálnı́ záchranné operace. 4.4.1 Dvouúrovňové šifrovánı́ LUKS použı́vá dvouúrovňové šifrovánı́, vlastnı́ data nejsou šifrována přı́mo (klı́čem od uživatele), nýbrž náhodně vygenerovaným „master key“, jehož kontrolnı́ součet je uložen v LUKS hlavičce. Ta obsahuje mj. prostor pro 8 uživatelských klı́čů, přičemž kterýkoliv z nich „odemkne“ daný oddı́l. Do slotů pro uživatelské klı́če se ukládá uživatelským heslem zašifrovaný master key. Použitı́m kteréhokoliv klı́če je tedy možné zı́skat master key a dešifrovat diskový oddı́l (resp. naplnit přı́slušný on-the-fly encryption kryptosystém). Dvouúrovňové šifrovánı́ značně usnadňuje revokaci klı́če - nenı́ nutné dešifrovat a znovu zašifrovat celý oddı́l. Jeho význam je ovšem v separaci uživatelského hesla, které bývá často přı́liš slabé, a hesla pro zašifrovánı́ oddı́lu, které je náhodně vygenerováno jako dostatečně silné. 4.4.2 Formát zašifrovaného oddı́lu Schéma oddı́lu zašifrovaného pomocı́ LUKS je naznačeno následujı́cı́ tabulkou: LUKS hlavička klı́č 1 . . . 3 4 http://luks.endorphin.org/ http://en.wikipedia.org/wiki/Linux 10 klı́č 8 zašifrovaná data V LUKS hlavičce se nacházı́ následujı́cı́ informace[5]: • LUKS verze • jméno šifry • šifrovacı́ mód • jméno hashovacı́ho algoritmu • odkaz na začátek vlastnı́ch zašifrovaných dat • počet bytů klı́če • kontrolnı́ součet pro master key • salt parametr pro master key • počet iteracı́ pro master key • UUID oddı́lu5 • sloty pro klı́če 1 až 8 4.4.3 Zpracovánı́ klı́čů se slabou entropiı́ Bohužel, technika dnes postupuje tak rychle a schopnost zapamatovat si dostatečně dlouhá a bezpečná hesla s rostoucı́m časem prudce klesá. Uživatelská hesla bývajı́ v dnešnı́ době již slabá a je čı́m dál jednoduššı́ je prolomit. Pokud bychom tvořili heslo ze 64 znaků (A-Z, a-z, 0-9, „/“, „.“), pak bychom si museli pamatovat náhodný řetězec o délce 42 znaků, abychom poskytli dostatek entropie pro 256bitový klı́č6 . Obvyklá délka použı́vaných hesel bývá podstatně menšı́. Pro ilustraci, 13 znakové heslo by v tomto přı́padě poskytovalo pouze 78 bitů entropie, 10 znakové heslo pak 60 bitů7 . Přitom DES má velikost 56bitů a je dnes už dešifrovatelný v reálném čase. LUKS implementuje PBKDF2 funkci pro derivaci klı́če, která posiluje entropii slabých hesel. Tato funkce obsahuje iteračnı́ cyklus představujı́cı́ intenzivnı́ transformace zatěžujı́cı́ procesor. Útočnı́k, který by zkoušel jednotlivá slabá hesla, by musel tı́mto iteračnı́m cyklem při každém pokusu projı́t, což neúměrně zvyšuje dobu potřebnou k úspěšnému brute force útoku. Doba třeba 5 sekund, během které uživatel čeká na potvrzenı́ hesla, se zdá být relativně krátká. Útočnı́k by ovšem musel na stejném hardwaru čekat 5 sekund při každém pokusu heslo prolomit. 5 UUID je unikátnı́ identifikátor, vı́ce viz http://en.wikipedia.org/wiki/UUID log2 (6442 ) = 252 7 log2 (6410 ) = 60 6 11 Obrázek 1: Schéma diskového šifrovánı́ 4.4.4 Technická implementace V jádře Linuxu je vrstva pro práci s blokovými zařı́zenı́mi nazývaná device mapper[12]. Ta de facto provádı́ mapovánı́ jednoho blokového zařı́zenı́ na jiné. Je základem pro konstrukci softwarového RAIDu, LVM, EVMS a dm-cryptu. Dm-crypt[13] je na nı́ postavená vrstva zajišt’ujı́cı́ transparentnı́ šifrovánı́ a dešifrovánı́. Využı́vá CryptoAPI, které je také součástı́ jádra a obsahuje implementace šifrovacı́ch algoritmů, šifrovacı́ch módů a hashı́. Schéma funkce diskového šifrovánı́ v Linuxu je naznačeno na obrázku 1. V Linuxu se jednotlivé souborové systémy mapujı́ na adresáře (nikoliv na pı́smena, jako v DOSu a ve Windows). To zajišt’uje vrstva VFS[14] (Virtual File System). Uživateli se tedy jakýkoliv připojený souborový systém jevı́ jako adresář, se kterým může pracovat dle libosti. VFS pak pracuje s konkrétnı́mi souborovými systémy na jednotlivých oddı́lech. Na straně uživatele se vše jevı́ jako jednotná adresářová struktura, ale VFS je schopen pracovat s mnoha různými konkrétnı́mi souborovými systémy. Souborový systém[15] je, jak už jsme si řekli, metoda ukládánı́ a správy souborů. Přı́slušný ovladač pak „překládá“ instrukce z VFS (zapiš xyz do souboru abc) do konkrétnı́ch instrukcı́ pro blokové zařı́zenı́ (zapiš xyz do sektoru 123). Blokovým zařı́zenı́m je v tomto přı́padě virtuálnı́ zařı́zenı́ vytvářené vrstvou device mapperu, jehož součástı́ je dm-crypt, který zajišt’uje šifrovánı́ a dešifrovánı́. Zmı́něný požadavek o zápis „xyz“ do sektoru „123“ pak projde touto vrstvou, kde se „xyz“ zašifruje a šifrový text se zapı́še do přı́slušného sektoru (samozřejmě v závislosti na šifrovacı́m módu). 12 LUKS jako takový je technicky realizován jako rozšı́řenı́ programu cryptsetup, který sloužı́ k nastavenı́ parametrů dm-cryptu. Z LUKS hlavičky pozná, který šifrovacı́ algoritmus, hash a šifrovacı́ mód má použı́t. Dm-cryptu pak předá tyto informace a finálnı́ verzi hesla, kterou si odvodı́ pomocı́ vlastnı́ch funkcı́ pro derivaci klı́če. Jak už bylo řečeno na začátku, současné BIOSy neumı́ zavádět systém ze zašifrovaného oddı́lu. V přı́padě Linuxu a LUKS postačı́ nechat na nešifrovaném oddı́lu obraz jádra a iniciálnı́ ramdisk (malý souborový systém se všı́m potřebným pro zavedenı́ systému). 4.5 Obecné závěry a doporučenı́ Předpokládám, že každý si vybere svou vlastnı́ implementaci diskového šifrovánı́. Bylo by naivnı́ se domnı́vat, že bude každý použı́vat LUKS. Nicméně, na této implementaci jsem chtěl ukázat řešenı́ jednotlivých problémů, se kterými se implementace diskového šifrovánı́ potýkajı́. Mám-li nastı́nit, jak si představuji dostatečně bezpečnou implementaci diskového šifrovánı́, pak bych se zaměřil na následujı́cı́ faktory: Veřejná specifikace Pokud nejsou k dispozici zdrojové kódy, měla by být k dispozici alespoň podrobná specifikace dané implementace. Bez nı́ nenı́ možné posoudit bezpečnost přı́slušné implementace. Vhodná šifra a šifrovacı́ mód Šifra je záležitostı́ osobnı́ preference a jednotlivé implementace diskového šifrovánı́ zpravidla umožňujı́ jejı́ výběr. Šifrovacı́ mód je, jak už bylo vysvětleno, potenciálnı́ slabé mı́sto. Proto je vhodné zvolit takovou implementaci, která zahrnuje některý z módů vhodných pro diskové šifrovánı́. Dvouúrovňové šifrovánı́ Pokud je to možné, zvolte dvouúrovňové šifrovánı́. Pokud ne, zvolte si opravdu dlouhé a bezpečné heslo. Vhodná práce s uživatelskými klı́či Funkce pro derivaci klı́če by měla počı́tat s tı́m, že uživatel zadá relativně slabšı́ heslo, a zvýšit vhodným způsobem jeho entropii. 13 5 Porovnánı́ existujı́cı́ch implementacı́ Na závěr jsem připravil několik tabulek s vlastnostmi vybraných[7] implementacı́ diskového šifrovánı́. Prvnı́ tabulka obsahuje základnı́ informace k implementacı́m. Vysvětlivky následujı́: • licence - použitá licence, u komerčnı́ platı́ současně i nedostupný zdrojový kód, s výjimkou BestCryptu, který nabı́zı́ omezený přı́stup k jeho zdrojovému kódu • OS - podporované operačnı́ systémy, tady jsem kvůli mı́stu nasadil zkratky: W = Windows, L = Linux, D = DOS, P = Pocket PC, M = MacOS, NB = NetBSD, FB = FreeBSD • stav - vyvı́jen znamená aktivnı́ vývoj, zranitelný znamená ukončený vývoj a zranitelnou implementaci • klı́čů - kolik je možné použı́t klı́čů k přı́stupu na daný disk/oddı́l • zesı́lenı́ hesla - přı́tomnost iteračnı́ch cykly název BestCrypt Sentry 2000 PGP Disk CrossCrypt DriveCrypt CGD GBDE cryptoloop Filevault TrueCrypt dm-crypt/cryptsetup dm-crypt/LUKS FreeOTFE GELI n-Crypt Pro Scramdisk licence OS stav klı́čů zesı́lenı́ hesla komerčnı́ L, W, D udržován vı́ce ? komerčnı́ W, P vyvı́jen ? ? komerčnı́ W, M udržován vı́ce ano GPL W ? 1 ne komerčnı́ W udržován vı́ce ano BSD NB udržován vı́ce ano BSD FB udržován vı́ce ne GPL L zranitelný 1 ne komerčnı́ M ? 2 ano FOSS L, W vyvı́jen 1 ano GPL L vyvı́jen 1 ne GPL L vyvı́jen 1 ano FOSS W, P vyvı́jen vı́ce ano BSD FB udržován vı́ce ano komerčnı́ W udržován 1 N/A FOSS W zastaven 1 ? Následuje tabulka s porovnánı́m podpory jednotlivých šifrovacı́ch módů. Disk a oddı́l naznačujı́, co je daná implementace schopna šifrovat CBC/v. IV je CBC s veřejným inicializačnı́m vektorem, která je zranitelná mj. vůči „watermarking attack“. CBC/t. IV je CBC s tajným inicializačnı́m vektorem (např. ESSIV, ale nikoliv nezbytně pouze ten). Ta zmı́něnou zranitelnostı́ netrpı́. LRW je LRW, „náhodné“ klı́če představujı́ speciálnı́ mód, kde se pro každý sektor generuje náhodný klı́č. Toto provádı́ třeba GBDE ve FreeBSD. 14 název disk oddı́l CBC/v. IV CBC/t. IV LRW náhodné BestCrypt ano ne ? ? ano ne Sentry 2000 ne ne ? ? ? ? PGP Disk ano ano ? ? ? ? CrossCrypt ne ne ano ne ne ne DriveCrypt ne ano ? ? ? ? CGD ano ano ne ano ne ne GBDE ano ano ne ne ne ano cryptoloop ano ano ano ne ne ne Filevault ne ne ano ne ne ne TrueCrypt ano ano ne ne ano ne dm-crypt/cryptsetup ano ano ano ano ano ne dm-crypt/LUKS ano ano ano ano ano ne FreeOTFE ano ano ano ano ne ne GELI ano ano ne ano ne ne n-Crypt Pro ano ano ? ? ne ne Scramdisk ne ano ? ? ? ? 6 Nevýhody diskového šifrovánı́ Diskové šfirovánı́ má, stejně jako všechno ostatnı́, svoje výhody i nevýhody. Mezi výhody patřı́ v optimálnı́m přı́padě (s bezpečnou a kvalitnı́ implementacı́) nemožnost dostat se k původnı́m datům nepovolanou osobou. Cenou za tuto bezpečnost jsou následujı́cı́ nevýhody. 6.1 Zpomalenı́ přenosových rychlostı́ Strategiı́ ve vývoji hardwaru dosud bylo co nejvı́ce ulehčit procesoru při datových přenosech (nebo jej dokonce „obejı́t“ v přı́padě DMA8 ). On-the-fly šifrovánı́ však opět začleňuje procesor do operacı́ spojených s přesuny dat. Vše se musı́ dešifrovat a podle potřeby opět zašifrovat. Jelikož se tak zvyšuje zátěž procesoru, snižuje se objem přenesených dat za jednotku času. Pro lepšı́ představu jsem sestavil malý benchmark pro sekvenčnı́ čtenı́ a sekvenčnı́ zápis, kde jsem prozkoumával, jak výkonné jsou jednotlivé šifrovacı́ algoritmy, respektive jak moc zpomalujı́ datové přenosy. Hodnoty jsou udávány v MB/s. 8 DMA je popsán na http://en.wikipedia.org/wiki/Direct_memory_access 15 filesystém ext3 reiserfs jfs xfs disk R W 57,0 65,8 57,6 59,2 57,9 66,9 57,7 59,6 Rjindael R W 39,8 34,9 39,6 31,9 40,0 34,6 39,7 32,1 Serpent R W 33,8 30,1 33,7 27,9 34,0 29,9 33,8 36,6 Twofish R W 25,3 27,2 25,3 31,5 25,4 26,9 25,3 30,8 Anubis R W 22,0 20,8 21,8 24,7 22,0 20,6 22,0 24,8 cast6 R W 21,2 20,6 21,0 24,0 21,2 20,4 21,1 24,7 Jak vidı́me, v některých přı́padech nám disková cache zřejmě ovlivnila výsledek u zápisu. Samotným hodnotám bych nepřikládal přı́liš velikou váhu, nebot’ jsou silně závislé na použitém hardwaru, metodice benchmarku a samozřejmě konkrétnı́m implementacı́m šifrovacı́ch algoritmů. Nicméně, alespoň se potvrzuje to, že AES je z testovaných implementacı́ šifrovacı́ch algoritmů nejrychlejšı́. 6.2 Vyššı́ zátěž CPU, vyššı́ provoznı́ teplota Tento bod navazuje na předchozı́. Dı́ky tomu, že přenosy dat z/na zašifrované oddı́ly nadměrně zatěžujı́ procesor, je potom k dispozici méně strojového času pro ostatnı́ běžı́cı́ programy než kdybychom nešifrovali. S vyššı́ zátěžı́ procesoru je potom spjata i jeho vyššı́ provoznı́ teplota, která vyžaduje zajištěnı́ vhodného chlazenı́. 6.3 Komplikovanějšı́ záchranné operace Dojde-li k poruše pevného disku, může šifrovánı́ zkomplikovat pokusy o záchranu dat. Toto je mı́sto, kde se nám může hodit přesná specifikace použité implementace. Z té se dozvı́me, kde jsou uložena metadata, klı́če a šifrový text, jakým způsobem se klı́č derivuje a jakým způsobem je oddı́l zašifrován. Pak můžeme přı́slušné záchranné operace provést ručně, pokud by došlo k takovému poškozenı́, že by nám přı́slušná implementace odmı́tla zašifrovaný disk/oddı́l zpracovat a dešifrovat. Kromě toho máme šanci ze specifikace zjistit, které informace bychom si měli zálohovat, abychom měli šanci dešifrovat data i při masivnı́m poškozenı́ záznamové vrstvy pevného disku. 6.4 Vážnějšı́ následky narušenı́ integrity dat Pokud dojde k narušenı́ integrity dat, třeba v důsledku nějaké poruchy či problému s pevným diskem, jsou vlivem šifrovánı́ a šifrovacı́ho módu následky o něco horšı́, než kdybychom nešifrovali. Uvažme, jak se třeba projevı́ přehozenı́ jednoho jediného bitu v jednom bloku při užitı́ CBC: 16 V přı́padě diskového šifrovánı́, kdy se u každého sektoru v rámci CBC generuje vlastnı́ inicializačnı́ vektor, nebudou následky řetězenı́ takové, jako na obrázku (přehozený bit v následujı́cı́m bloku), nicméně stále je třeba uvážit, že i drobná změna šifrového textu v rámci jehnoho bloku povede k jeho ztrátě při dešifrovánı́. U jiných šifrovacı́ch módů mohou být následky jiné. 6.5 Dalšı́ vrstva pro vznik chyb Šifrovánı́ představuje dalšı́ vrstvu, kterou data procházejı́ a kde může nastat nějaká chyba či problém. Tento problém pak samozřejmě adekvátně ovlivnı́ šifrovánı́ a dešifrovánı́, což v extrémnı́ch přı́padech může vést i ke ztrátě dat. To samozřejmě závisı́ na kvalitě přı́slušné implementace, ale právě v této věci se promı́tá „filozofie“ šifrovánı́ - raději přijdeme o data, než aby se dostala do nesprávných rukou. Při zálohovánı́ bychom měli pamatovat na bezpečnost, aby nedošlo k tomu, že data na disku jsou sice šifrovaná, ale nešifrované zálohy nám útočnı́k odnesl. 6.6 Single point of failure V přı́padě dvouúrovňového šifrovánı́ nenı́ pro zašifrovánı́ dat na pevném disku použit uživatelský klı́č, ale náhodně vygenerovaný, „hlavnı́ klı́č“. Pokud by tedy došlo ke ztrátě přı́slušného sektoru s úložištěm klı́čů, data by už nebylo možné dešifrovat. Proto se u LUKS doporučuje hlavičku oddı́lu zálohovat. Pak je ovšem při revokaci některého uživatelského klı́če třeba provést zničenı́ záloh a hlavičku s úložištěm klı́čů zálohovat znovu. 6.7 Falešný pocit bezpečı́ V přı́padě, že si zvolı́me špatnou implementaci, která trpı́ některými vážnými zranitelnostmi, popřı́padě si zvolı́me správnou implementaci, ale špatně ji nastavı́me, pak nám hrozı́ falešný pocit bezpečı́, že naše data nemůže nikdo nepovolaný dešifrovat. 17 7 Závěr Diskové šifrovánı́ je určitě cenným pomocnı́kem při fyzickém zabezpečenı́ dat. Je však třeba vybrat správnou implementaci a být schopen ji správně nastavit. 18 Reference [1] Wikipedia, Disk Encryption Theory, http://en.wikipedia.org/wiki/Disk_ encryption_theory. [2] Clemens Fruhwirth, Linux hard disk encryption settings, http://clemens. endorphin.org/LinuxHDEncSettings. [3] Klı́ma, V., Šifry s mnoha tvářemi, Chip, červenec 2000, str. 50 - 53., http:// crypto-world.info/klima/2000/chip-2000-07-050-053.pdf. [4] Wikipedia, Cryptographic hash function, http://en.wikipedia.org/wiki/ Cryptographic_hash_function. [5] Clemens Fruhwirth, LUKS on-disk-format, http://luks.endorphin.org/ LUKS-on-disk-format.pdf. [6] Clemens Fruhwirth, TKS1 - An anti-forensic, two level, and iterated key setup scheme, http://clemens.endorphin.org/TKS1-draft.pdf. [7] Wikipedia, Comparison of disk encryption software, http://en.wikipedia.org/ wiki/Comparison_of_disk_encryption_software. [8] Wikipedia, ESSIV, http://en.wikipedia.org/wiki/ESSIV [9] Wikipedia, Watermarking Watermarking_attack attack, http://en.wikipedia.org/wiki/ [10] Markku-Juhani O. Saarinen, Encrypted Watermarks and Linux Laptop Security, http: //mareichelt.de/pub/notmine/wisa2004.pdf [11] Wikipedia, Block cipher modes of operation, http://en.wikipedia.org/wiki/ Block_cipher_modes_of_operation [12] Wikipedia, mapper Device mapper, http://en.wikipedia.org/wiki/Device_ [13] Wikipedia, dm-crypt, http://en.wikipedia.org/wiki/Dm-crypt [14] Wikipedia, Virtual file system, http://en.wikipedia.org/wiki/Virtual_ file_system [15] Wikipedia, File system, http://en.wikipedia.org/wiki/File_system 19
Podobné dokumenty
O aplikaci Parallels Desktop 7 for Mac
– 3D hry se v režimu Koherence automaticky přepínají do režimu celé obrazovky.
– Do nabídky Zařízení > Klávesnice byla přidána kombinace Ctrl-Alt-End.
– Pro zjednodušení bylo přepracováno rozhraní ...
jak dlouho vydrž í, aneb otěruvzdornost
abraze. Typicky mi prıklady jsou naprıklad korby na kladnıch automobil˚ (ra zova abraze pri
nakla dce, trecı abraze pri vykla dce), boc nı klıny c elis…ovy ch drtic ˚ (trecı abraze s mensım
podılem...
O aplikaci Parallels Desktop 7 for Mac
– 3D hry se v režimu Koherence automaticky přepínají do režimu celé obrazovky.
– Do nabídky Zařízení > Klávesnice byla přidána kombinace Ctrl-Alt-End.
– Pro zjednodušení bylo přepracováno rozhraní ...
O aplikaci Parallels Desktop 7 for Mac
– 3D hry se v režimu Koherence automaticky přepínají do režimu celé obrazovky.
– Do nabídky Zařízení > Klávesnice byla přidána kombinace Ctrl-Alt-End.
– Pro zjednodušení bylo přepracováno rozhraní ...
Manuál Tmou
spı́še s různými nadstavbami a kombinacemi. Je tedy důležité, abyste tyto základy dobře ovládali. Vzhledem k tomu, že čtenář, potenciálnı́ účastnı́k Tmou,
má IQ většı́ než 150, ...
Galda
nainstalovat nebo přímo používat (Live CD)
Zároveň se díky použitým licencím jedná o
volně šiřitelný software, takže je možné ho
nejen volně používat, ale i dále upravovat a
distribuovat (kopírov...
Zabezpečení počítačových sítí
Získání dat bez šifrování disku je opravdu jednoduché a heslo administrátora vás neochrání. To
se dá změnit během 10ti sekund.
Krivky a kryptografie - A-Math-Net
Eliptické křivky
Eliptickou křivkou E nad polem F rozumı́me algebraickou
křivku třetı́ho stupně s rovnicı́
y 2 + a1 xy + a3 y = x 3 + a2 x 2 + a4 x + a6 ,
kde a1 , a2 , a3 , a4 , a6 ∈ F a kde...
Bezdrátové síte
Služby přı́stupového bodu
autentizace – AP zjišt’uje informace o stanici a rozhoduje,
zda jı́ dovolı́ přı́stup do sı́tě
asociace (přidruženı́) – vzniká vazba mezi AP a stanicı́,
stanice je...