Mendelova univerzita v Brně Provozně ekonomická fakulta
Bezpečné používání nezabezpečeného file serveru z pohledu klienta Bakalářská práce
Vedoucí práce: Mgr. Tomáš Foltýnek, Ph.D.
Antonín Crha
Brno 2010
Děkuji Mgr. Tomáši Foltýnkovi, Ph.D. za trpělivé vedení práce, Ing. Janu Přichystalovi, Ph.D. za výborné webové prostědí pro sazbu prací a své ženě Hance za trpělivost a jazykovou korekturu.
Prohlašuji, že jsem tuto práci vyřešil samostatně s použitím literatury, kterou uvádím v seznamu.
V Brně dne 20. dubna 2010
....................................................
4
Abstract Crha, A. Client side secure use of an unsecure file server. Bachelor thesis. Brno, 2010. The objectives of this work are to describe, deside and implement methodics instruments which provide secure use of current unsecure infrastructure used for transfer and storage data in the Internet environment. A functional implementation of FTP client is part of this work.
Abstrakt Crha, A. Bezpečné používání nezabezpečeného file serveru z pohledu klienta. Bakalářská práce. Brno, 2010. Práce si klade za cíl popsat, stanovit a implementovat metodické prostředky umožňující bezpečné využití stávající nezabezpečené infrastruktury používané pro přenos a ukládání dat v prostředí Internetu. Součástí práce je implementace bezpečného FTP klienta.
5
OBSAH
Obsah 1 Úvod a cíl práce 1.1 Úvod do problematiky . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Cíl práce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Šifrovací algoritmy 2.1 Asymetrická kryptografie . . . . . . . . . . . . . . . . . . . 2.2 Symetrická kryptografie . . . . . . . . . . . . . . . . . . . 2.2.1 Proudové šifry . . . . . . . . . . . . . . . . . . . . . 2.2.2 Synchronní . . . . . . . . . . . . . . . . . . . . . . 2.2.3 Samočinně synchronizující . . . . . . . . . . . . . . 2.2.4 Blokové šifry . . . . . . . . . . . . . . . . . . . . . 2.3 Popis v současnosti používaných symetrických algoritmů . 2.3.1 DES . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.2 Triple DES . . . . . . . . . . . . . . . . . . . . . . 2.3.3 Rijndael (AES) . . . . . . . . . . . . . . . . . . . . 2.3.4 Serpent . . . . . . . . . . . . . . . . . . . . . . . . 2.3.5 Twofish . . . . . . . . . . . . . . . . . . . . . . . . 2.3.6 Blowfish . . . . . . . . . . . . . . . . . . . . . . . . 2.3.7 Bezpečnost používání FTP . . . . . . . . . . . . . . 2.3.8 Net2FTP klient . . . . . . . . . . . . . . . . . . . . 2.3.9 Existující metody bezpečného přenosu dat na server
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
3 Metodika 4 Vlastní práce 4.1 Srovnání výkonu . . . . . . . . . . . . . . . . . 4.1.1 Testovací sestava . . . . . . . . . . . . . 4.1.2 Nastavení jednotlivých algoritmů . . . . 4.2 Implementace šifrujícího FTP klienta . . . . . . 4.2.1 Použitý šifrovací algoritmus . . . . . . . 4.2.2 CTR - použitý mód blokových šifer . . . 4.2.3 Derivace šifrovacího klíče z hesla. . . . . 4.2.4 Inicializační vektor . . . . . . . . . . . . 4.2.5 Šifrování dat . . . . . . . . . . . . . . . . 4.3 Výsledky . . . . . . . . . . . . . . . . . . . . . . 4.3.1 Přehled funkcí aplikace Crypto Net2FTP 4.4 Diskuze . . . . . . . . . . . . . . . . . . . . . . 5 Závěr
7 7 7 9 9 9 10 10 10 11 13 13 13 14 14 14 15 15 16 16 17
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
19 19 20 20 20 22 22 24 26 26 28 29 29 31
OBSAH
6
6 Souhrn a resume 32 6.1 Souhrn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 6.2 Resume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 7 Literatura
34
8 Seznam použitých zkratek
40
Přílohy
41
A Přihlašování k FTP serveru
42
B Standartní způsob zobrazení v klientu Crypto Net2FTP
43
C Způsoby zobrazení cesty k souboru v klientu Crypto Net2FTP
44
D Rychlost práce s daty velikosti 500 kB
45
E Rychlost práce s daty velikosti 1000 kB
46
F Rychlost práce s daty velikosti 5 MB
47
G Rychlost práce s daty velikosti 10 MB
48
H Rychlost práce s daty velikosti 50 MB
49
I
Rychlost práce s daty velikosti 100 MB
50
J Rychlost práce s daty velikosti 500 MB
51
K Rychlost práce s daty velikosti 1000 MB
52
1
ÚVOD A CÍL PRÁCE
1
7
Úvod a cíl práce
1.1
Úvod do problematiky
Řada jednotlivců si v posledních letech začíná uvědomovat fakt, jehož znalost je ve firemním prostředí již delší dobu naprostou nutností. Duševní vlastnictví, kterého informační společnost dnešní doby produkuje nepředstavitelné množství, stěží představitelnou rychlostí, je potřeba chránit před zvídavým okem státu, konkurence, slídilů, i před neškodným zvědavcem. Tento zdánlivě nepříliš složitý úkol se značně zkomplikoval s nástupem moderních forem komunikace, publikování, kooperace a archivování dat. Internet nabízí jednotlivcům i společnostem nepřeberné množství způsobů a míst, kde lze, podle slov provozovatelů těchto služeb, zaručeně bezpečným způsobem uschovat a v řadě případů i komfortně upravovat důležitá data. (Backup Review, 2010) Uživatelé, často opojeni falešným pocitem bezpečí, nahrávají na podobné služby přehršel citlivých dat s uspokojením plynoucím z čerstvě vytvořené zálohy a příjemného uživatelského prostředí služby, které právě vydali svá nejcitlivější data na pospas. Počet uživatelů dvou nejznámějších online zálohovacích služeb se v USA mezi březnem 2009 a březnem 2010 takřka zdvojnásobil. Zatímco v prvním období každou ze služeb využívalo 200 000 lidí měsíčně, v březnu 2010 počet unikátních uživatelů vystoupil na 400 000 za měsíc. (Backup Review, 2010)
1.2
Cíl práce
Pro účely této práce budeme předpokládat, že neexistuje ani jeden provozovatel výše popsaných služeb, který by dokázal garantovat naprosté bezpečí jemu svěřených dat před slídily z prostředí Internetu, nebo z řad vlastních zaměstnanců. Všichni velicí hráči v oboru1 používají pro zabezpečení přenosu jim svěřených dat zcela shodně SSL v 128bitové verzi. Jakkoliv uklidňující tato informace může být, žádný z nich ve svých webových prezentacích příliš nerozebírá bezpečnostní opatření aplikovaná na již přenesené soubory. 1
Mezi největší poskytovatele řešení pro online zálohu patří: Carbonite, KeepIt, Mozy, Backblaze, iDrive. Všechny tyto společnosti nabízejí řešení jak pro jednotlivce, tak pro firmy.
1.2
Cíl práce
8
Zákazníci, kteří byly nuceni využít služeb obnovy dat ze zálohy prostřednictvím disků DVD, se shodují na tom, že data od poskytovatele dorazila vypálená v nezašifrované podobě, což svědčí o tom, že jsou uchovávaná v nezašifrované podobě, nebo (v horším případě) provozovatel skladuje hesla uživatelů v čitelné formě. (Raanan Bar-Cohen blog, 2009) Autor této práce sám sebe považuje za příslušníka skupiny lidí, jejichž názor by se dal vyjádřit výrokem: ”Bezpečnost každé služby, která není provozována samotným uživatelem, je nepřímo úměrná jeho aktuální míře paranoie.” Cílem této práce je porovnání běžně dostupných symetrických šifrovacích algoritmů, a to jak z hlediska rychlosti, tak z hlediska bezpečnosti, a následná implementace FTP klienta šifrujícího zpracovávaná data, při jehož tvorbě by se prací nabyté poznatky promítly. Tato práce si neklade za cíl zkoumat důvody, které vedou uživatele Internetu k bezhlavému nahrávání dat na kdejakou přívětivě vypadající službu umožňující zálohu dat. Pokud by si však bezpečný klient, který vzešel z této práce, našel skupinu uživatelů, kteří hledají způsob jak zabezpečit svá data, byl by to obrovský pokrok na poli ochrany osobních dat nahrávaných na Internet.
2
ŠIFROVACÍ ALGORITMY
2
9
Šifrovací algoritmy
Pro účely šifrování se v dnešní době téměř výhradně užívají dva druhy kryptografie. Symetrická a asymetrická kryptografie. V úvodu této práce provedu jejich srovnání a vysvětlím, proč je symetrická kryptografie výhodnější pro šifrování dat většího rozsahu.
2.1
Asymetrická kryptografie
Asymetrická kryptografie se kromě utajení přenášené informace dá použít také k elektronickému podpisu. Pro šifrování a dešifrování se používají dva odlišné klíče, z nichž jednomu se říká veřejný a druhému soukromý. Veřejný klíč může být všeobecně znám, je však nutné zaručit jeho pravost. Soukromý klíč je znám pouze majiteli. Použití asymetrické kryptografie pro zabezpečení komunikace má proti symetrické kryptografii několik výhod. (Britannica, 2010) • Komunikující strany si nemusí předávat šifrovací klíč. • Bezpečnost za předpokladu použití dostatečně dlouhého klíče. • Za předpokladu vlastnictví správných veřejných klíčů je autor zprávy nezpochybnitelný. • Je možné ověřit, zda bylo zprávou manipulováno. Za hlavní nevýhodu asymetrické kryptografie je považována značná výpočetní náročnost a z toho plynoucí nemožnost použití na větší množství dat.
2.2
Symetrická kryptografie
V dnešní době je symetrická kryptografie velice oblíbená pro šifrování dat velkého objemu. To je dáno hlavně řádově nižší výpočetní náročností. Některé zdroje uvádějí, že symetrické šifrovací algoritmy, jako například Rijndael, jsou oproti asymetrickým (například RSA) 100–10000x rychlejší. Dalším důvodem může být fakt, že pro některé druhy použití je výhodnější využít klasické heslo místo sady dvou klíčů pro příjemce i adresáta. (Wikipedia, 2010) Symetrická kryptografie používá pouze jeden klíč pro šifrování i dešifrování dat. Tento způsob šifrování s sebou tedy nese na jednu stranu riziko v podobě prozrazení klíče během jeho předávání všem zúčastněným stranám, ale na druhou stranu odpadá nutnost zřizovat a udržovat pro všechny účastníky komunikace dvojici klíčů, což může být v některých případech příliš obtěžující.
2.2
Symetrická kryptografie
10
Symetrické šifrovací algoritmy se dělí na dvě skupiny. Proudové a blokové šifry. 2.2.1
Proudové šifry
Na rozdíl od blokových šifer, které budou zmíněny později, není nutno pro potřeby proudových šifer vstupní data jakkoliv upravovat. Na základě 128bitů (většinou) dlouhého klíče je vygenerován pseudonáhodný řetězec znaků, který se kombinuje se vstupními daty užitím logického XOR. Vygenerovaný řetězec musí být stejně dlouhý jako samotná zpráva, aby mohlo být šifrování provedeno na veškerých datech. 2.2.2
Synchronní
Synchronní proudové šifry generují řetězec pseudonáhodných znaků bez závislosti na šifrované zprávě. Tento druh šifry je vhodný pro použití na kanálech s velkým rušením, neboť je odolný proti změně jednotlivých znaků. V takovém případě sice dojde k pozměnění konkrétního znaku, ale zbytek zprávy zůstává beze změny. Naproti tomu, pokud je do zprávy vložen nebo ze zprávy odebrán znak, dojde ke ztrátě synchronizace. V takovém případě se systematicky testují možné kompenzace, až je nakonec synchronizace obnovena. 2.2.3
Samočinně synchronizující
Samočinně se synchronizující šifry používají N předchozích zašifrovaných znaků k výpočtu šifrovaného řetězce. Příjemce takto zašifrované zprávy se synchronizuje po přijetí N znaků a je proto odolný proti ztraceným nebo do zprávy vloženým znakům. Změny v jednotlivých znacích způsobují chybu v maximálně N dalších znacích. Proudový způsob šifrování je velice výhodný z hlediska výpočetní nenáročnosti a používání pouze elementárních výpočetních operací, ale jeho bezpečnost je extrémně závislá na unikátnosti a kryptografické kvalitě zvoleného klíče. Klíč musí mít značnou periodu, jinak je celý princip náchylný vůči útoku. Už pokud zašifrujeme dvě zprávy stejným klíčem, může útočník zjistit použitý řetězec pseudonáhodných znaků a s jeho mocí zprávy dešifrovat. Z tohoto důvodu je použití proudových šifer nevhodné, pokud je žádoucí použít stejný klíč více než jedenkrát. (Britannica, 2010)
2.2
Symetrická kryptografie
2.2.4
11
Blokové šifry
Oproti proudovým šifrám se blokové vyznačují mnohem vyšším stupněm komplexity operací prováděných nad vstupními daty. Bloky. V závislosti na použitém algoritmu jsou data rozsekána na bloky o jednotné velikosti (většinou 64 nebo 128 bitů). Vzhledem k tomu, že vstupní data mohou být prakticky jakékoliv délky, stává se, že poslední blok je kratší, než bloky ostatní. V takovém případě je tento blok doplněn tak, aby jeho velikost souhlasila s předepsanou délkou. Inicializační vektor. Inicializační vektor je blok náhodných nebo pseudonáhodných bytů, který je v kombinaci s různými druhy operačních módů2 používán pro vytvoření unikátní zašifrované zprávy, bez ohledu na to, že na stejná data je použit stejný klíč. Inicializační vektor bývá stejně dlouhý jako blok a nesmí být nikdy použit dvakrát se stejným klíčem. V takovém případě nelze šifrovaný text považovat za bezpečný. Délka klíče. Od roku 2006 je za minimální délku bezpečného klíče považováno 80 bitů. Podle vyjádření NIST3 budou klíče o délce 80bitů snadno prolomitelné kolem roku 2015 a v aplikacích se zvýšenými nároky na bezpečnost je proto dovoleno je používat pouze do roku 2010. Do té doby musí být délka klíčů navýšena alespoň na 128 bitů. V dnešní době se pro účely symetrického šifrování používají klíče délky 128 až 256 bitů. Americká vláda používá pro šifrování vysoce citlivých dat klíče délky 192–256 bitů. (Wikipedia, 2010) Bezpečnost. Bezpečnost každé symetrické šifry se značně odvíjí od délky použitého šifrovacího klíče a stupně rozptylu výstupu z generátoru pseudonáhodných čísel, který je použit jako inicializační vektor. Jak již bylo zmíněno, bezpečnost šifry je kriticky závislá na unikátnosti použitého inicializačního vektoru. Ten se nesmí pro daný klíč nikdy použít opakovaně. Kerckhoffův princip: Spolehlivost šifrovacího systému nesmí záviset na utajení algoritmu. Spolehlivost je založena pouze na utajení klíče. 2 3
Druhy operačních módů: ECB, CBC, OFB, CFB, IAPM, CCM, EAX, GCM, OCB. National Institute of Standards and Technology (USA)
2.2
Symetrická kryptografie
12
Kreckhoffův princip dodržují všechny dnes používané symetrické šifrovací algoritmy. Bezpečnost proto závisí skutečně pouze na délce použitého šifrovací klíče, náhodnosti inicializačního vektoru, bezchybné implementaci daného algoritmu a utajení klíče. V ideálním případě je šifra tak silná a implementace tak bezchybná, že nejrychlejší způsob, jak šifru prolomit, je použít brute force attack4 . Za předpokladu, že používáme klíč délky n, existuje 2n kombinací, které mohou být správným klíčem. Pokud je brute force attack jediný způsob jak prolomit šifru, bývá algoritmus považován za bezpečný. Některé v dnešní době používané implementace šifrovacích algoritmů narážejí na problém s nedostatečnou náhodností výstupu generátoru pseudonáhodných čísel. Současné počítače totiž postrádají hardwarový generátor a musejí se spoléhat na vstupy z konvenčních, pro tyto účely neuzpůsobených, kusů hardware. Proto se jako vstup generátoru používá aktivita na síťovém rozhraní, uživatelem způsobené události jako pohyb myši nebo údery do klávesnice, zápisy na disk a podobně. Může proto dojít k situaci, že generátor vlivem nedostatku entropie generuje nedostatečně náhodné výstupy nebo například hodnoty pouze z určitého intervalu. (Wikipedia, 2010) Vysvětlení pojmů náhodný a pseudonáhodný. Náhodná čísla generovaná počítačem jsou výsledkem stále stejného algoritmu. Z tohoto důvodu jsou označovány pojmem pseudonáhodné. Pokud totiž funkce obstarávající generování dostane na vstup dvakrát po sobě stejné hodnoty, dočkáme se pokaždé stejného výsledku. Skutečně náhodné číslo nebo hodnotu nemůžeme od žádného algoritmu čekat, neboť konec konců je to pouze konečně dlouhá sada instrukcí, která už ze samotné podstaty algoritmu musí pro jeden vstup generovat stále stejný výstup. Generátory pseudonáhodných čísel, jak se počítačové algoritmy pokoušející se generovat náhodné hodnoty nazývají, mají několik společných znaků. (Wikipedia, 2010)
4
Brute force attack je útok na šifru pomocí zkoušení všech možných kombinací znaků a délek klíče. Pokud vyzkoušíme všechny prvky z množiny přípustných klíčů, s jistotou se doberme toho správného. Pokud je brute force attack jediný způsob jak algoritmus prolomit, bývá považován za bezpečný.
2.3
Popis v současnosti používaných symetrických algoritmů
13
• • • • •
Pro jeden vstup dostaneme vždy stejný výstup. Výsledek je produktem stále stejné matematické funkce. Entropii získávají z událostí v systému (bylo popsáno výše). Na osobních počítačích nemívají hardwarovou část. Míra rozptylu náhodné veličiny z nich získané je kritická pro kryptografické funkce, které ji využívají. • Náhodnost výstupu se příliš nezvýší, zařadíme-li na vstup výsledek nějaké funkce nebo konstantu. • Skutečně kvalitní generátory mají hardwarovou část. Většinou se používají různé druhy měření atmosférického šumu, turbulencí na aktivních chladičích počítačových komponent, atd. • Složitější algoritmy používají statistické algoritmy k zajištění vyšší kvality výstupu.
2.3 2.3.1
Popis v současnosti používaných symetrických algoritmů DES
Tento v současnosti již nepoužívaný symetrický algoritmus byl zveřejněný firmou IBM v roce 1977. Používá bloky o velikosti 64 bitů a klíč o délce 64 bitů. 8 bitů klíče je kontrolních, zbylých 56 efektivních. Z výše uvedeného vyplývá, proč se dnes již algoritmu nepoužívá. Již v roce 2006 se týmu univerzit Bochum a Kiel z Německa podařilo s vynaložením 10.000 dolarů prolomit DES během 9 dnů. Tento postup byl v následujících letech upraven natolik, že na současném hardwaru je možné DES prolomit v řádu několika hodin. Pro zašifrování každého bloku dat je třeba vykonat 16 průchodů. (Wikipedia, 2010) 2.3.2
Triple DES
Triple DES vylepšuje svého předchůdce znásobením počtu klíčů. Byl standardizován v roce 1998 a pracuje ve třech režimech. Hlavní nevýhodou je fakt, že pro dosažení maximální bezpečnosti je nutné použít tři rozdílné klíče. (Wikipedia, 2010) • K1 6= K2 6= K3 Tato varianta je nejbezpečnější, neboť efektivní délka klíče přibližně odpovídá 168 bitům. • K1 6= K2 AND K3 = K1 Efektivní délka klíče odpovídá 112 bitům.
2.3
Popis v současnosti používaných symetrických algoritmů
14
• K1 = K2 = K3 Tento režim slouží pro zachování zpětné kompatibility s DES. Oproti DES nezvyšuje bezpečnost, neboť první dva klíče jsou při zpracování vypuštěny. 2.3.3
Rijndael (AES)
Algoritmus Rijndael byl poprvé zveřejněn v roce 1998. Jeho autory jsou Vincent Rijmen a Joan Daemen. Tento algoritmus používá 128, 192, nebo 256 bitů velké bloky a klíče o délce 128, 192, 256 bitů. Pro zašifrování jednoho bloku je třeba 10, 12, respektive 14 průchodů v závislosti na délce použitého klíče. V současné době je používán vládou Spojených států, která Rijndael s 192 nebo 256bitovým klíčem používá pro šifrování dokumentů s označení TOP SECRET. Na tento algoritmus není znám žádný úspěšný útok. V druhé půlce roku 2009 byly poprvé publikovány zprávy, ze kterých vyplývá, že existují postupy jak snížit počet zkoušených klíčů na 296 , respektive 2119 pro 192 a 256 bitové klíče. (Wikipedia, 2010) 2.3.4
Serpent
Algoritmus Serpent byl poprvé zveřejněn v roce 1998 a stal se jedním z finalistů soutěže o nový Advance Ecryption Standart vyhlášený vládou Spojených států. Jako většina moderních algoritmů využívá Serpent bloky o velikosti 128 bitů a klíče délky 128, 192, nebo 256 bitů. Autoři Ross Anderson a Eli Biham se při návrhu algoritmu vydali konzervativním směrem a přesto, že ostatní autoři, kteří se se svými algoritmy zapojili do soutěže, se shodli na tom, že 16 průchodů je dostatečný počet pro zajištění bezpečnosti, oni zvolili 32 průchodů, neboť chtěli vytvořit algoritmus, který bude vysoce odolný i do budoucna. Serpent je navržen s ohledem na maximální možnou paralelizaci šifrování a dešifrování. (Wikipedia, 2010) 2.3.5
Twofish
Algoritmus Twofish byl poprvé zveřejněn v roce 1998 a jeho autory jsou Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall, Niels Ferguson, Stefan Lucks, Tadayoshi Kohno, a Mike Stay. Algoritmus pracuje se 128bitovými bloky a klíči délky 128, 192, 256 bitů.
2.3
Popis v současnosti používaných symetrických algoritmů
15
Pro zašifrování jednoho bloku je třeba 16 průchodů. Do dnešního dne není znám žádný úspěšný útok ani slabina tohoto algoritmu. Tento algoritmus je jedním z finalistů soutěže o nový AES. (Wikipedia, 2010) 2.3.6
Blowfish
Autorem algoritmu Blowfish je opět Bruce Schneier. Poprvé byl publikován v roce 1993. Užívá bloky velikosti 64 bitů a klíče délky 32–448 bitů. Pro zašifrování jednoho bloku potřebuje 16 průchodů. Algoritmus byl navržen jako náhrada za zastaralý DES. V současné době není znám žádný úspěšný útok proti tomuto algoritmu. (Wikipedia, 2010) Tab. 1: Srovnání finalistů AES. (Bruce Schneier, 2000, s. 4)
Algoritmus MARS RC6 Rijndael Serpent Twofish 34-round RC6 18-round Rijndael 24-round Rijndael
Koeficient bezpečnosti 1.90 1.18 1.11/1.33/1.56 3.56 2.67 2.00 2.00 2.67
Z tabulky je patrné, že výherce soutěže o nový šifrovací standard americké administrativy (Rijndael) nepatří mezi nejbezpečnější. Před závěrečným kolem soutěže bylo autorům doporučeno zvýšit počet průchodů na 18, respektive 24. Takové zvýšení by vedlo k safety faktorům, které jsou k vidění v posledních dvou řádcích tabulky. Nicméně autoři počet průchodů nezvýšili a soutěž o nový AES přesto vyhráli. Hlavním benefitem je totiž vysoká rychlost a bezproblémová implementace napříč platformami. Algoritmy MARS a RC6 byly vyřazeny z důvodu problematického běhu na různých platformách. RC6 byl navíc v základní verzi považován, stejně jako Rijndael, za nedostatečně bezpečný. 2.3.7
Bezpečnost používání FTP
Historie protokolu FTP se datuje až do roku 1971, kdy byl publikován jako RFC 114. Vzhledem ke značnému stáří nelze, stejně jako u jiných letitých protokolů, očekávat
2.3
Popis v současnosti používaných symetrických algoritmů
16
jakékoliv bezpečnostní prvky. Přihlašovací údaje jsou, stejně jako veškerá ostatní komunikace, přenášeny v nezašifrované podobě. Z bezpečnostního hlediska je největším problémem právě přihlašování k FTP serveru bez jakéhokoliv způsobu šifrování přenášených přihlašovacích údajů. Tyto údaje lze lehce přečíst. 2.3.8
Net2FTP klient
Při implementaci vlastního řešení šifrujícího FTP klienta byla jako základ použita aplikace Net2FTP, která je pod licencí GNU/GPL vyvíjena od roku 2003. Tato aplikace slouží již mnoho let jako základní webový FTP klient pro velké množství web hostingových společností v České republice i ve světě 5 . Net2FTP je čistě webový klient. Od toho se odvíjí i použité technologie a programovací jazyk. Aplikace je naprogramována ve skriptovacím jazyce PHP a využívá několik kompilovaných knihoven, běžně dostupných v každé instalaci web serveru založené na Apache2. (Net2FTP, 2010) 2.3.9
Existující metody bezpečného přenosu dat na server
Protokol SCP. Protokol Secure Copy se podobá RCP6 . K zabezpečení přenášených dat používá SSH, který zajišťuje šifrování a autentizaci. Tento protokol pracuje na portu 22 a v serverovém je silně rozšířený. Bohužel však nebývá podporován ze strany poskytovatelů hostingových služeb. (Wikipedia, 2010) Protokol SFTP. Protokol SSH File transfer protocol byl navržen jako rozšíření SSH verze 2.0. Poskytuje prostředky pro bezpečný přístup ke vzdáleným souborům, k jejich přenosu a managementu. Stejně jako Secure Copy protokol není optimálním kandidátem na bezpečný přenos a uchování dat z důvodu jeho malého rozšíření. (Wikipedia, 2010)
5
Některé hostingové společnosti využívající Net2FTP: Svet hostingu, Pípni, český hosting, Bluehost, Webhost, EHCP. 6 Remote copy Unix příkaz.
3
3
METODIKA
17
Metodika
Aby mohl z této práce vzejít vhodný kandidát pro šifrování velkých objemů dat, bylo třeba posoudit všechny zvažované algoritmy nejen z pohledu bezpečnosti, ale i z pohledu výkonu při šifrování a dešifrování různých objemů dat. Od roku 2000, kdy proběhla soutěž o AES, došlo k velkému pokroku v oblasti podpory moderních šifrovacích algoritmů ze strany výrobců hardware. Z toho důvodu autor považuje za prospěšné provedení přetestování kandidátů a jejich výkonu. Tato kapitola popisuje metodiku použitou k tomuto testování. (Britannica, 2010) Pro srovnání výkonu jednotlivých algoritmů byl použit program Truecrypt verze 6.3 od společnosti TrueCrypt Foundation. Tento nástroj, šířený pod GPL licencí, nabízí prostředky potřebné pro všechna provedená měření již v základní instalaci. (TrueCrypt Foundation, 2010) Standardní modul programu Truecrypt, nesoucí výstižný název Benchmark, provádí testování výkonu počítačové sestavy pomocí šifrování a následného dešifrování dat o velikosti nastavené uživatelem. Toto rozšíření bylo využito autorem práce k veškerým výkonostním měřením, které tato práce obsahuje. V první fázi testování byla vytvořena pseudonáhodná data o velikostech 100 kB, 500 kB, 1 MB, 5 MB, 10 MB, 50 MB, 100 MB a 1000 MB. Pro každou velikost dat bylo provedeno pět měření šifrování a následného dešifrování. Z výsledných dat byl spočítán aritmetický průměr pro jednotlivé velikosti. Jako reprezentativní výsledek je prezentována maximální propustnost, které bylo dosaženo při testu dat o velikosti 1000 MB. Důvod, proč jsou do testu zahrnuty pouze algoritmy Rijndael, Twofish a Serpent, je porovnatelnost výsledků. Program Truecrypt neumožňuje testovat jiné algoritmy. Pokud by byly do testu zařezeny výsledky testů provedených pomocí jíného nástroje, nelze je mezi sebou porovnávat. Měření bylo provedeno i pro řetězené šifrování, kdy je nejprve soubor zašifrován jedním algoritmem a pak je výsledek zašifrován dalším algoritmem pomocí stejného klíče. Toto řetězení má mít za následek vyšší bezpečnost zašifrovaných dat. Bezpečnostní přínos tohoto postupu je však sporný vzhledem k tomu, že všechny šifry používají stejný klíč. Útočník sice může být zmaten, protože i při správném klíči dostává nesrozumitelný výsledek, ale pokud si je vědom toho, že čelí vícenásobné šifře, není dešifrování výrazně složitější, pouze časově náročnější.
3
METODIKA
18
Výsledky měření však s ohledem na cíl této práce nejsou relevantní, proto se omezíme jen na konstatování, že doba zpracování těchto řetězců na sebe navázaných šifer byla úměrně delší době zpracování jednoduchých (nezřetězených) šifer.
4
19
VLASTNÍ PRÁCE
4 4.1
Vlastní práce Srovnání výkonu
Z pohledu bezpečnosti je v současné době nepodstatné, jaký šifrovací algoritmus zvolíme. Každý z finalistů AES je plně kompetentní šifrovat jakákoliv citlivá data. Některé popsané algoritmy jsou teoreticky silnější než jiné, ale žádnému dnes používanému nebyla prokázána výrazná slabost v jakémkoliv směru. Situace se ale výrazně komplikuje, pokud do rozhodování zahrneme faktor výkonu jednotlivých algoritmů. Pokud například chceme všechna data na pevném disku šifrovat, rozhodně nás nemůže zajímat pouze míra bezpečnosti jednotlivých algoritmů, ale musíme se zajímat i o rychlost s jakou jsou moderní procesory schopné jednotlivé algoritmy zpracovat. Pro stručné shrnutí všech testů byly zvoleny výsledky měření provedených nad daty o velikosti 1000 MB. Vzhledem k jejich značnému objemu nejlépe reprezentují datovou propustnost jednotlivých algoritmů. Tab. 2: Srovnání propustnosti jednotlivých algoritmů. Testovací data o velikosti 1000 MB.
Operace/MBps AVR Encryption AVR Decryption
Rijdael 279 279
Serpent 125 130
Twofish 239 252
Z výše uvedené tabulky jasně vyplývá, že kladné body přidělené algoritmu Rijndael za výrazně vyšší rychlost zpracování dat by bylo možno udělit i dnes. Bez ohledu na to, že dnešní procesory zahrnují instrukční sady implicitně podporující nejčastější operace využívané testovanými algoritmy. Své konkurenty při testování výrazně předčil jak při šifrování, tak při dešifrování dat. Algoritmus Twofish od Bruce Schneiera však z ohledem na výrazně vyšší koeficient bezpečnosti podává velice dobré výkonostní výsledky.
4.2
Implementace šifrujícího FTP klienta
4.1.1
20
Testovací sestava
Tab. 3: Počítačová sestava použitá pro měření rychlosti algoritmů
Typ hardware Procesor Základová deska Paměti Disk Systém Testovací program
4.1.2
Hodnota R Q6600 2.40 GHz, 8 MB cache Intel Core 2 Quatro Gigabyte EP43-S3L Kingston 2x2 GB, DDR2, 800 MHz, CL5 Samsung SpinPoint F1, SATA II, 16 MB, 500 GB Microsoft Windows 7 64b Truecrypt 6.3 32b
Nastavení jednotlivých algoritmů
• AES - 14 rounds, 256bit key, 128bit block, and operates in XTS mode7 • Serpent - 32 rounds, 256bit key, 128bit block, and operates in XTS mode • Twofish - 16 rounds, 256bit key, 128bit block, and operates in XTS mode
4.2
Implementace šifrujícího FTP klienta
V současné době existuje nespočet výborných implementací FTP klienta, které jsou dostupné prakticky ve všech myslitelných programovacích jazycích. Trendem posledních let je přesouvání nejrůznějších služeb do prostředí Internetu. Ani tato práce nebude výjimkou. Výše uvedená teorie bude tedy uvedena do praxe za pomoci oblíbeného skriptovacího jazyka PHP v prostředí Internetu. Program byl autorem práce pojmenován Crypto Net2FTP8 , aby bylo jasně patrné, že se jedná o nádstavbu nad již existujícím webovým FTP klientem Net2FTP, na jehož originální realizaci nemá autor práce žádný podíl. Ústřední myšlenkou této práce je realizace rozšíření projektu Net2FTP tak, aby při veškeré komunikaci s FTP servery byla přenášena výhradně šifrovaná data a v čistě textové formě probíhala pouze výměna FTP příkazů. Původní, mnoha léty prověřený FTP klient Net2FTP9 byl doplněn o šifrovací funkcionalitu a jeho vnitřní logika byla upravena tak, aby bylo možné komfortně 7
Autorem XTS módu je v podstatě Phillip Rogaway, který v roce 2003 vytvořil mód XEX, jehož drobnou úpravou XTS vznikl. V roce 2007 schváleno IEEE pro použití na blokových úložných zařízeních. (TrueCrypt Foundation, 2010) 8 Aplikace k nalezení na https://projekt-hosting.eu/crypto 9 První verze byla uvolněna v lednu 2003.
4.2
Implementace šifrujícího FTP klienta
21
pracovat s názvy souborů a složek v zašifrované podobě a přitom se nevzdát pohodlí, které tento klient skýtá.
Obr. 1: Princip funkce Crypto Net2FTP
Použitý programovací jazyk. Skriptovací jazyk PHP10 patří spolu s jazyky Java a C, C++ mezi nejpopulárnější, nejrozšířenější a nejpoužívanější jazyky. (Langpop, 2010) V prostředí menších Internetových aplikací má PHP naprostou převahu. Důvodem jeho rozšíření je hlavně volná PHP licence, která se nejvíce podobá licenci BSD. Díky vhodné licenční politice se PHP velice rozšířilo. Majitelé hostingových společností nemusejí za každou instalaci platit poplatky a mohou zcela bez omezení zasahovat do kódů a konfigurace PHP interpretru. Skriptovací jazyk PHP poprvé spatřil světlo světa v roce 1995 a jeho autorem je Rasmus Lerdorf. Interpret a některé knihovny jsou psány v jazyku C. V současné době je tento jazyk vyvíjen a udržován organizací The PHP Group. Jelikož PHP není kompilovaným jazykem, nabízí se proti jeho použití ve spojitosti se šifrováním argument nedostatečné výkonosti. Tento problém ale 10
Zkratka: ”PHP: Hypertext Preprocessor”.
4.2
Implementace šifrujícího FTP klienta
22
elegantně řeší knihovna MCrypt11 , která umožňuje spojit výhody skriptovacího programovacího jazyka a rychlosti kompilovaného programu. MCrypt. Knihovna MCrypt byla vytvořena s úmyslem nahradit unixovou knihovnu crypt, kterou již nelze v dnešní době považovat za bezpečnou. Tuto knihovnu lze bez problémů provozovat na všech unix-like systémech a ve 32bitové verzi i pod Windows. MCrypt v nabízí širokou paletu šifrovacích algoritmů: BLOWFISH, TWOFISH, DES, TripleDES, 3-WAY, SAFER, LOKI97, GOST, RC2, MARS, RIJNDAEL, SERPENT, CAST, ARCFOUR a WAKE a implementuje tyto módy: CFB, CBC, CTR, ECB, OFB. (MCrypt, 2010) 4.2.1
Použitý šifrovací algoritmus
Pro účely tohoto projektu, s ohledem na výsledky měření a testu bezpečnosti se jako optimální algoritmus jeví Rijndael, což je vládou Spojených států amerických preferovaný šifrovací algoritmus a vítěž soutěže o AES.12 Tento algoritmus, ačkoliv není odborníky považován za nejbezpečnější z produktů v současné době dostupných na trhu, nebyl doposud úspěšně prolomen. Největším úspěchem v této oblasti bylo lehké teoretické oslabení algoritmu. (Wikipedia, 2010) Co se bezpečnosti týče, není důvod používat pomalejší a bezpečnější algoritmy, neboť Rijndael je ve všech směrech dostačující. Na poli rychlosti nemá tento algoritmus soupeře. Měření, provedená za účelem srovnání rychlosti nejběžnějších algoritmů, jasně dokazují, že právě pro šifrování velkého množství dat je Rijndael nejlépe vyhovující. 4.2.2
CTR - použitý mód blokových šifer
Při šifrování jakýchkoliv dat delších něž 1 standardní blok je potřeba vzít v potaz, jaký mód blokové šifry použijeme. Pro účely této práce byl nejvhodnějším kandidátem shledán mód CTR13 . S ohledem na předpokládaný velký objem zpracovávaných dat se silné zaměření na paralelizaci jeví jako velice vhodná vlastnost módu CTR. Jednotlivé bloky se šifrují bez závislosti na blocích předcházejících, což umožňuje zpracovávat vstupní data ve více vláknech. 11
http://mcrypt.sourceforge.net/ Advanced Encryption Standard 13 Counter: Také znám jako Integer Counter Mode(ICM), nebo Segment Integer Counter(SIC). 12
4.2
Implementace šifrujícího FTP klienta
23
Mód CTR byl prvně publikován v NIST14 Special Publication 800-38A edice 2001. Autorem je Morris Dworkin. Průběh šifrování s užitím módu CTR. 1. V první fázi se pro aktuálně zpracovávaný blok určí hodnota counteru15 . 2. Výsledek bodu 1 se následně zašifruje s použitím vybraného algoritmu (Rijndael). 3. Takto zašifrovaný blok je následně sečten s vstupním textem pomocí operátoru exluzivního logického součtu XOR. Průběh dešifrování s užitím módu CTR. 1. V první fázi se pro aktuálně zpracovávaný blok určí hodnota counteru. 2. Výsledek bodu 1 se následně zašifruje s použitím vybraného algoritmu (Rijndael). 3. Takto zašifrovaný blok je následně sečten s výstupem výše popsaného šifrovacího procesu pomocí operátoru exluzivního logického součtu XOR. Nedostatky CTR. • Použití CTR vyžaduje silný mechanismus pro generování inicializačního vektoru. Použití samotného counteru v kombinaci se slabším šifrovacím algoritmem oslabuje bezpečnost výsledné šifry. David A. McGrew ve své publikaci doporučuje vždy dopňovat counter o pseudonáhodný 64bitový řetezec, který výrazným způsobem ztíží možné útoky založené na predikci hodnoty counteru. (McGrew, David A., 2002, s. 6) • Je zcela stěžejní, aby byla každá hodnota couteru použita právě jednou. Jakékoliv znovupoužití má katastrofické důsledky na bezpečnost. Problematika chybného použití se ale týká všech, v současné době používaných, módů. • Pokud při šifrování dojde k takzvané bit-flip chybě16 , projeví se tato chyba vždy ve stejném bloku a vždy na stejném bitu výsledné šifry. 14
National Institute of Standards and Technology V tomto významu se jedná o celočíselný čítač, obsahující za každých okolností unikátní hodnotu. Často se používá jednoduchý čítač jehož výstup se sčítá s výstupem generátoru pseudonáhodných čísel pomocí exkluzivního logického součtu. 16 Ustálený výraz pro záměnu hodnoty jednoho bitu - tedy jeho negaci. 15
4.2
Implementace šifrujícího FTP klienta
24
• CTR mód neposkytuje žádnou kontrolu intergrity. Pokud požadujeme kontrolu intergrity šifrované zprávy, je nutné zajistit ji externě. Například použitím MAC17 . 4.2.3
Derivace šifrovacího klíče z hesla.
Pokud chceme mluvit o bezpečném použití symetrických algoritmů, je nutné zvolit bezpečný klíč. Tato problematika vůbec není jednoduchá, neboť šifrovací klíč musí být pro algoritmus Rijndael dlouhý 128, 192, 256 bitů. To, pro představu, odpovídá 16, 24, nebo 32 znakům ASCII. Aby nebyli uživatelé nuceni nosit v hlavě takto dlouhé šifrovací klíče, byla vyvinuta metoda pro derivaci šifrovacího klíče z hesla, které není limitováno přesnou délkou. Uživatel tedy nemusí nosit v hlavě heslo, o přesně 16, 24, nebo 32 znacích, ale může si zvolit heslo jednoduché, zapamatovatelné a prakticky libovolně dlouhé. Z tohoto hesla je následně, pomocí jednoduchého algoritmu, derivován šifrovací klíč odpovídající délky. Průběh derivace šifrovacího klíče. Pro výše popsané odvození klíče z hesla byl v tomto konkrétním případě použit algoritmus PBKDF2, popsaný v RFC 2898. Průběh derivace hesla by se dal shrnout do následujících bodů: 1. Určíme délku hashovaného řetězce tak, že funkci hash18 předáme požadovaný algoritmus a libovolný řetězec. Následně se změří délka navráceného řetězce. Pro algoritmus sha256 je standardní délka výsledku 32 bytů. 2. Na základě požadované délky klíče se spočítá počet derivovaných bloků jako celočíselný podíl požadované délky klíče a délky výstupu z hashovacího algoritmu. Pokud je toto číslo vyšší než 1, je nutné vytvořit více než 1 blok. 3. Pokud je požadovaná délka klíče různá od násobku standardní délky výstupu používaného hashovacího algoritmu, dojde na závěr, při spojování jednotlivých derivovaných bloků, k ořezu posledního bloku tak, aby navrácená délka odpovídala zadání. 4. Následuje hlavní cyklus, který má tolik iterací, kolik požadujeme bloků klíče. 17
Message Authentication Code. Krátký řetězec znaků určený k autentizaci šifrované zprávy. (Wikipedia, 2010) 18 Algoritmus zajišťující jednosměrný převod dat na řetězec předem známé délky.
4.2
Implementace šifrujícího FTP klienta
25
5. Uvnitř hlavního cyklu dochází k mnohonásobnému (podle nastavení algoritmu) hashování vloženého hesla a následnému exluzivnímu logickému součtu tohoto výsledku s předochozím výsledkem. 6. Aby bylo dosaženo změny počátečního hashe, je vždy v inicializačním běhu k salt19 přičtena 32bitová binární reprezentace čísla vyjadřujícího pořadové číslo běhu řídícího cyklu. 7. Na závěr řídícího cyklu se aktuálně zpracovávaný blok připojí k výslednému. 8. Na konci celé funkce se délka návratové hodnoty zkrátí na požadovanou oříznutím řetězce od konce.
Obr. 2: Schématické znázornění CTR módu 19
Řetězec znaků přidávaný k hashovanému řetězci za účelem zkomplikování slovníkového útoku na výsledný hash. Pokud salt nepřidáme, vystavujeme snadno uhodnutelná hesla uživatelů značnému nebezpečí. Pro útočníka totiž není problém vypočítat hodnotu hash pro všechny běžně používané fráze a pak pouhým porovnáním zjistit původní heslo.
4.2
Implementace šifrujícího FTP klienta
4.2.4
26
Inicializační vektor
Inicializační vektor je v kryptografii často skloňovaný pojem. Od jeho kvality se totiž do značné míry odvíjí celková bezpečnost výsledného produktu šifrovacího algoritmu. Jedná se o generovaný řetězec pseudonáhodných znaků o délce odpovídající velikosti jednoho bloku šifry. V případě blokových šifer, mezi které Rijndael patří, slouží k zajištění rozdílného výstupu při použití stejného klíče na stejný plain text20 . Vzhledem k tomu, že šifrovací algoritmy jsou vždy deterministické, je z bezpečnostních důvodů nutné zajistit změny na výstupu i při opakovaném šifrování stejných dat stejným klíčem. Pokud bychom totiž vyprodukovali stejný výstup při šifrování stejných dat stejným klíčem, závažně bychom ohrozili bezpečnost přenášených dat. Z výše popsaných důvodů se tedy první blok plain textu sečte s inicializačním vektorem stejné délky pomocí exkluzivního logického součtu. Takto provedená úprava vstupních dat má posléze za následek změnu na výstupu šifrovacího algoritmu, čímž je zajištěna odolnost proti analýze postavené na porovnávání dvou stejných, stejně zašifrovaných zpráv. Knihovna MCrypt21 poskytuje funkci určenou pro generování inicializačního vektoru. Při tvorbě IV se vychází z hodnoty získané ze systémového generátoru náhodných čísel22 . Tato funkce byla využita i při implementaci tohoto projektu, neboť problematika generování náhodných čísel je neskutečně komplikovaná a doposud ne zcela přesvědčivě vyřešená záležitost. 4.2.5
Šifrování dat
Bezpečnost, a s ní související otázku šifrování dat, je nutno rozdělit na dva různé problémy. • Šifrování dat přenášených od klienta k aplikaci. • Šifrování dat přenášených mezi aplikací a FTP serverem. 20
Zažitý výraz pro nezašifrovaná data vstupující do šifrovacího algoritmu. Standardní součást drtivé většiny instalací Apache2 serveru. 22 Například pro Linux: /dev/random 21
4.2
Implementace šifrujícího FTP klienta
27
Přenos dat mezi klientem a aplikačním serverem. Problematika přenosu dat z klientského počítače na aplikační server je v době moderních internetových prohlížečů lehce zabezpečitelná pomocí extrémně rozšířeného protokolu HTTPS, který umožňuje bezpečně komunikovat se serverem zcela standardním způsobem, bez nutnosti měnit či upravovat stávající protokoly. Protokol HTTPS používá pro přenost dat HTTP, přičemž přenášená data jsou před odesláním šifrována pomocí SLL23 , nebo TLS24 . V případě standardního nastavení pak server naslouchá na portu 443. Ve své podstatě je myšlenka protokolu HTTPS velice podobná myšlence celé práce. Jedná se totiž o nádstavbu nad protokolem HTTP, přičemž data jsou před odesláním šifrována - což svou myšlenkou silně připomíná i způsob realizace bezpečných přenosů v tomto projektu. (Wikipedia, 2010) Protokol HTTPS pro svou činnost využívá asymetrickou kryptografii, je proto nutné mít pro server vygenerovaný pár klíčů. V současné době projekt využívá pár klíčů, který byl vygenerován přímo na serveru bez zásahu certifikační autority. Postrádá tedy jakékoliv ověření pravosti. Pro potřeby bezpečné komunikace, za předpokladu, že dojde k ověření původu jinou cestou, je ale dostačující. Přenos dat mezi aplikací a nezabezpečeným FTP serverem. Aby bylo možné dosáhnout bezpečného uložení dat na FTP serveru, o jehož nastavení a správci nemáme žádné informace, musíme data zabezpečit již před jejich samotným přenosem. Právě k tomuto účelu slouží Crypto Net2FTP klient. Popis procesu přenosu souborů na FTP server. 1. Uživatel prostřednictvím internetového prohlížeče naváže šifrované spojení25 se serverem, na kterém je naistalovaná aplikace Crypto Net2FTP. Veškerá komunikace mezi serverem a uživatelem bude probíhat šifrovaně. 2. Uživatel zadá přihlašovací údaje k FTP serveru a heslo, které používá pro šifrování dat. 3. Crypto Net2FTP pomocí standardních FTP příkazů získá výpis vzdáleného adresáře, obsahujícího zašifrované položky. 23
Secure Socket Layer Transport Layer Security 25 S využítím protokolu HTTPS. 24
4.3
Výsledky
28
4. V první fázi rozšifruje názvy souborů a adresářů uložených na serveru a předloží je uživateli v čitelné podobě. Uživatel nemusí ani tušit, že data na serveru jsou šifrována, neboť veškeré výstupy směrem k němu jsou před zobrazením dešifrovány. 5. Uživatel vydá aplikaci příkaz ke stažení dat, načež aplikace stáhne zašifrovaná data z FTP serveru, rozšifruje je a následně prostřednictvím prohlížeče nabídne uživateli ke stažení. 6. Data dorazí do cíle v čitelné podobě.
4.3
Výsledky
Výsledkem této práce je funkční implementace webového FTP klienta, který šifrováním zvyšuje bezpečnost dat uložených na nezabezpečených FTP serverech. Mimo standardních funkcí společných pro všechny implementace umožňuje tato aplikace bezpečnou komunikaci s klientským PC prostřednictvím internetu za využití protokolu HTTPS. Vzhledem k nutnosti provádět náročné výpočetní operace spojené s šifrováním a dešifrováním dat, jsou pro tyto části aplikace použity externí kompilované knihovny zaručující dostatečný výkon aplikace. Aplikace umožňuje také stahovat a nahrávat data na server s využitím souborového formátu zip, jehož použití umožňuje ve specifických případech výrazně rychlejší upload a download dat mezi aplikací a klientem26 . V rámci snahy o vysokou míru bezpečnosti byla implementována pokročilá funkce pro derivaci šifrovacích klíčů z uživatelských hesel. Takto vzniklá hesla se vyznačují vysokou kryptografickou kvalitou a odolností proti útokům pomocí předpočítaných hash tabulek. Aplikace dále umožňuje do určité míry využívat jedno úložiště více uživatelům, díky tomu, že soubory, které jsou uloženy za pomoci rozdílného hesla, přihlášený uživatel nevidí. Tato vlastnost vyplývá z principu fungování symetrické kryptografie. Bez správného hesla nelze korektně rozšifrovat názvy souborů uložených v daném úložišti ani zobrazit jejich pravý obsah. 26
Protokol HTTP, a nad ním postavený HTTPS, nebyly původně konstruovány pro rychlý přenos velkého množství malých souborů. Měření prováděná za účelem srovnání výkonu HTTP při přenosu velkého množství malých souborů a malého množství velkých souborů ukazují, že rychlost přenosu dat je u velkých souborů vyšší, neboť nedochází k přenosu tak velkého množství režijních dat, jako v případě malých souborů. S ohledem na tuto skutečnost se zdá být výhodnější malé soubory před přenosem na server komprimovat. (Google Inc., 2010)
4.4
Diskuze
4.3.1
29
Přehled funkcí aplikace Crypto Net2FTP
• Zabezpečená komunikace klienta s aplikací pomocí HTTPS. • Jednoduché ovládání odpovídající běžným FTP klientům. • Hromadné nahrávání a stahování dat díky podpoře komprimačního souborového formátu zip. • Bezpečná manipulace s uživatelským heslem. • Šifrování názvů a obsahu souborů. • Plná kompatibilita se stávající implementací FTP serverů.
4.4
Diskuze
Odborná veřejnost si je vědoma rizik, které s sebou nese používání FTP prokolu kombinaci s nezabezpečeným FTP serverem. Z tohoto důvodu bylo vytvořeno několik náhrad za tento zastaralý protokol, mající za cíl zvýšit bezpečnost komunikace se serverem. FTP protokol jsme v současné době schopni nahradit například SecureFTP, FTPS, nebo SFTP. V každém případě však narážíme na nedostatečnou podporu těchto vylepšení ze strany serverů a na nutnost provádět změny v implementacích již fungujících aplikací. Mimo výše popsané nevýhody dále narážíme na fakt, že ne každý námi používaný server je v naší správě a nelze proto vyloučit riziko zneužití dat ze strany správce serveru. Řešení navržená v této práci mnoho výše popsaných nevýhod eliminuje tím, že nám umožňuje z úvah o bezpečnosti vyloučit problematiku zneužití dat na straně serveru a v průběhu komunikace, aniž by bylo nutné jakkoliv měnit stávající implementace FTP protokolu a existujících serverů. Absolutní kontrola nad bezpečností přenášených dat má ale i své nevýhody. I přes dobře zvolený šifrovací mód a algoritmus, stávající implementace stále spotřebovává výrazně více výpočetního výkonu na straně aplikačního serveru. Každý přenos dat na FTP server znamená pro aplikační server zátěž spojenou s šifrováním nebo dešifrováním aktuálně zpracovánaných dat. Tato skutečnost by mohla do určité míry zkomplikovat vlastní nasazení, neboť zdaleka ne všechny hostingové společnosti umožňují klientům využívat rozšíření potřebná pro bezproblémový provoz této aplikace, jelikož nemají zájem na tom, aby podobné aplikace zvyšovaly zátěž na jejich serverech.
4.4
Diskuze
30
Typickým příkladem takového omezení může být zakázaná MCrypt knihovna, či hashovací funkce sha256. Přičemž jak MCrypt, tak algoritmus sha256 jsou pro běh aplikace zcela stěžejní. Dalším nezanedbatelným omezujícím faktorem je maximální délka názvu souboru a cesty, kterou konkrétní file systémem, běžící na FTP serveru, podporuje. Délka zašifrovaného názvu souboru nebo adresáře může totiž bez problémů dosáhnout hodnot kolem 128 ASCII znaků. V případě použití žurnálovacího systému souborů ext3, který je často na serverech tohoto typu používán, se toto riziko jeví spíše jako teoretické. (Wikipedia, 2010) Při používání aplikace lze narazit na problém spojený s používáním souborového formátu zip. Vzhledem ke komplikované práci s šifrovanou a nešifrovanou podobou jmen souborů a adresářů, nepodporuje prozatím aplikace komprimování adresářové struktury. Komprimovat lze pouze obsah adresáře za podmínky, že neobsahuje žádné další vnořené adresáře. V takovém případě sice bude zip soubor vytvořen, ale vnořený adresář nebude jeho obsahem. Posledním, autorem přiznávaným bezpečnostním rizikem je skutečnost, že přenášená data zůstávají v aplikaci Crypto Net2FTP krátkou dobu uložena v nezašifrované podobě. Toto je dáno technologickým omezením použitého šifrovacího algoritmu a faktem, že knihovna MCrypt je schopna zašifrovat obsah souboru pouze jako celek. Z tohoto důvodu jsou data nejprve přenesena do aplikace a teprve poté zašifrována a odeslána. Po krátkou dobu lze tedy k souborům v dočasném adresáři přistupovat a číst je bez nutnosti znalosti hesla. Proces šifrování je však zahájen v momentě, kdy jsou data kompletní a ihned po zašifrování jsou původní soubory odstraněny; toto riziko tedy v praxi není příliš významné.
5
5
ZÁVĚR
31
Závěr
Tato práce se zabývá výběrem vhodného šifrovací algoritmu pro použití v implementaci bezpečného FTP klienta. Protože práce ústí v reálnou aplikaci, byly zvažované algoritmy posuzovány jak z hlediska bezpečnosti, tak z hlediska rychlosti zpracování dat. Vzhledem k dostatečné bezpečnosti všech zkoumaných algoritmů bylo pro rozhodnutí o nevhodnějším algoritmu pro šifrování soukromých dat potřeba zvolit dodatečné kritérium. Jak bylo zdůvodněno výše, druhým nejdůležitějším kritériem pro hodnocení šifrovacích algoritmů je rychlost zpracování dat. Proto bylo provedeno množství měření, která měla za cíl rozhodnout, který algoritmus bude pracovat nejrychleji na v dnešní době průměrném hardwarovém vybavení. Jako nejvhodnější algoritmus pro šifrování velkého množství mnohdy značně obsáhlých souborů, které uživatelé s oblibou vytvářejí, se tedy jeví algoritmus Rijndael, jehož hlavní benefit spočívá ve výrazně rychlejším běhu, a který i přes sporné bezpečnostní kvality doposud nebyl prolomen. Pokud bychom uvažovali situaci, kdy bude Rijndael úspěšně napaden, jako nejvhodnější kandidát by se jevil algoritmus Twofish, jehož spoluautorem je světoznámý bezpečnostní expert Bruce Schneier a který svou bezpečností Rijndael překonává. Poslední částí práce je uvedení nabytých poznatků do praxe v implementaci FTP klienta, který před přenosem dat na server provádí šifrování. Klient využívá přesně ty šifrovací algoritmy a nastavení, jaké byly shledány nejvýhodnějšími pro tento způsob práce. Odborná a technická pomoc. V případě nejasností ohledně fungování aplikace, žádostí o technickou podporu, hlášení případných chyb, nebo požadavků na doplnění funkčnosti, lze kontaktovat autora projektu na emailové adrese
[email protected].
6
SOUHRN A RESUME
6 6.1
32
Souhrn a resume Souhrn
Tato práce se zabývá analýzou volně dostupných symetrických šifrovacích algoritmů. Účelem bylo vybrat vhodný algoritmus pro implementaci FTP klienta, který data před odesláním na server šifruje. Bylo provedeno zhodnocení jak z hlediska bezpečnosti, tak z hlediska rychlosti. Pořadí algoritmů dle bezpečnosti 1. Serpent 2. Twofish 3. Rijndael Pořadí algoritmů dle rychlosti 1. Rijndael 2. Twofish 3. Serpent Závěr. Jako nejvhodnější kandidát se jeví algoritmus Rijndael, který přes svůj menší bezpečnostní index stále nebyl prolomen (květen 2010) a disponuje vysokým šifrovacím výkonem a jednoduchou implementací napříč platformami.
6.2
Resume
This work analyses free symetric crypto algorithms. The intention was to choose appropriate algorithm for a FTP client implementation, which encrypts data before sending them to server. Security factor and speed were considered while choosing the best candidate. Algorithm order. Sort criterium: security. 1. Serpent 2. Twofish 3. Rijndael
6.2
Resume
33
Algorithm order. Sort criterium: speed 1. Rijndael 2. Twofish 3. Serpent Conclusion. The Rijndael algorithm appears to be the best candidate. It has lower security index, but since May 2010 there is no known succesfull attack. In addition this algorithm is extreamly fast and its implementation across platforms is easy.
7
7
LITERATURA
34
Literatura 1. KNUTH, D. E. Umění programování : Základní algoritmy. 1. díl. 1. vyd. Brno: Computer Press, 2008. 648 s. ISBN 978-80-251-2025-5. 2. MCCONNELL, S. Dokonalý kód : umění programování a techniky tvorby software. 1. vyd. Brno: Computer Press, 2005. 894 s. ISBN 80-251-0849-X. 3. MENEZES, A. J. – VAN OORSCHOT, P. C. – VANSTONE, S. A. Handbook of applied cryptography. Boca Raton: CRC Press, 1997. 780 s. CRC Press series on discrete mathematics and its applications. ISBN 08493-8523-7. 4. SOCHOR, T. Komunikační protokoly počítačových sítí. Ostravská univerzita, 2003. 200 s. ISBN 80-7042-868-6. 5. SCHNEIER, B. Applied Cryptography: Protocols, Algorithms, and Source Code in C. 2. vyd. New York: John Wiley Sons, 1996. 758 s. ISBN 0-47111709-9. 6. LangPop.com [online]. 2008, 22.04.2010 [cit. Programming Language Popularity. Dostupné
.
2010-05-02]. z WWW:
7. PHP Group [online]. 2001, 02.05.2010 [cit. 2010-05-02]. PHP: License Information. Dostupné z WWW: . 8. Smith, John. MCrypt [online]. 2003, 04.12.2007 [cit. 2010-0502]. Programming Language Popularity. Dostupné z WWW: .
7
LITERATURA
35
9. Message Authentication Code In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida) : Wikipedia Foundation, 07.01.2005, 07.12.2007 [cit. 2010-05-02]. Dostupné z WWW: . 10. MCGREW, David A. Mindspring [online]. 2002 [cit. 2010-05-02]. Counter Mode Security: Analysis and Recommendations. Dostupné z WWW: . 11. Google Code : Let’s make the web faster [online]. 2009 [cit. 2010-05-02]. Dostupné z WWW: . 12. Comparison of file systems In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida) : Wikipedia Foundation, 30.05.2006, 24.04.2010 [cit. 2010-05-02]. Dostupné z WWW: . 13. Symmetric-key algorithm In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida) : Wikipedia Foundation, 23.10.2001, 27.04.2010 [cit. 2010-05-02]. Dostupné z WWW: . 14. Advanced Encryption Standard In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida) : Wikipedia Foundation, 10.11.2001, 20.04.2010 [cit. 2010-05-02]. Dostupné z WWW: . 15. HTTP Secure In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida) : Wikipedia Foundation, 07.12.2001, 06.05.2010 [cit. 2010-05-10]. Dostupné z WWW: . 16. SCHNEIER, Bruce, et al. Schneier on Security [online]. 2000 [cit. 201005-02]. The Two?sh Teams Final Comments on AES Selection. Dostupné z WWW: .
7
LITERATURA
36
17. Truecrypt : Free open-source on-the-fly encryption 2008, 20.04.2010 [cit. 2010-05-02]. Dostupné z .
[online]. WWW:
18. Truecrypt : Free open-source on-the-fly encryption [online]. 2008, 20.04.2010 [cit. 2010-05-02]. Modes of operation. Dostupné z WWW: . 19. BAR-COHEN, Raanan. Raanan Bar-Cohen blog [online]. 13.05.2009 [cit. 2010-05-10]. Mozy Online Backup Service Review. Dostupné z WWW: . 20. Backup Review : Helping you choose the right backup solution [online]. 02.05.2010 [cit. 2010-05-10]. Top 75 Online Backup Companies for May 2010. Dostupné z WWW: . 21. Backup Review. Online Remote Offsite Data Backup Web Based Internet Storage, SaaS, Cloud, Reviews, Articles, Tools [online]. 03/2010 [cit. 2010-05-10]. USA Traffic Stats for our Top 5 Online Backup Companies - Consumer Sector. Dostupné z WWW: . 22. Net2FTP : forum [online]. 2010 [cit. 2010-05-11]. Dostupné z WWW: . 23. SSH file transfer protocol In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida) : Wikipedia Foundation, 13.01.2004, 04.05.2010 [cit. 2010-05-11]. Dostupné z WWW: .
7
LITERATURA
37
24. Secure copy In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida) : Wikipedia Foundation, 10.04.2004, 04.04.2010 [cit. 2010-05-11]. Dostupné z WWW: . 25. Britannica. Encyclopedia Britannica [online]. 2010 [cit. 2010-0511]. Advanced Encryption Standard (AES). Dostupné z WWW: . 26. Britannica. Encyclopedia Britannica [online]. 2010 [cit. 2010-05-11]. Public-key cryptography. Dostupné z WWW: . 27. Britannica. Encyclopedia Britannica [online]. 2010 [cit. 201005-11]. Block and stream ciphers. Dostupné z WWW: . 28. Block cipher In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida) : Wikipedia Foundation, 10.11.2001, 07.04.2010 [cit. 2010-05-11]. Dostupné z WWW: . 29. Pseudorandom number generator In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida) : Wikipedia Foundation, 22.03.2002, 10.05.2010 [cit. 2010-05-11]. Dostupné z WWW: . 30. Data Encryption Standard In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida) : Wikipedia Foundation, 30.03.2001, 23.04.2010 [cit. 2010-05-11]. Dostupné z WWW: .
7
LITERATURA
38
31. Triple DES In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida) : Wikipedia Foundation, 09.04.2002, 10.05.2010 [cit. 2010-05-11]. Dostupné z WWW: . 32. Serpent (cipher) In Wikipedia : the free [online]. St. Petersburg (Florida) : Wikipedia 02.12.2003, 14.04.2010 [cit. 2010-05-11]. Dostupné .
encyclopedia Foundation, z WWW:
33. Twofish In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida) : Wikipedia Foundation, 18.09.2002, 11.03.2010 [cit. 2010-05-11]. Dostupné z WWW: . 34. Blowfish (cipher) In Wikipedia : the free [online]. St. Petersburg (Florida) : Wikipedia 10.11.2001, 06.05.2010 [cit. 2010-05-11]. Dostupné .
encyclopedia Foundation, z WWW:
35. JOHNSON, Andrew. Itnewb [online]. 2009 [cit. 2010-05-02]. PHP Encryption / Decryption Using the MCrypt Library (libmcrypt). Dostupné z WWW: . 36. RFC 2898. PKCS 5: Password-Based Cryptography Specification : Version 2.0. RSA Laboratories : RSA Laboratories, 2000. 34 s. Dostupné z WWW: . 37. DWORKIN, Morris Recommendations for Block Cipher Modes of Operation : Methods and Techniques. In textitNIST Special Publication 800-38A 2001 edition. NIST, 2001 [cit. 2010-05-02]. Dostupné z WWW: .
7
LITERATURA
39
38. WAGNER, David. Comments to NIST concerning AES Modes of Operations : CTR-Mode encryption [online]. Berkeley : Berkeley, 2000. 4 s. Oborová práce. UniversityofCaliforniaBerkeley. Dostupné z WWW: . 39. Initialization vector In Wikipedia : the free [online]. St. Petersburg (Florida) : Wikipedia 16.10.2002, 08.04.2010 [cit. 2010-05-02]. Dostupné .
encyclopedia Foundation, z WWW:
8
SEZNAM POUŽITÝCH ZKRATEK
8
Seznam použitých zkratek • • • • • • • • • • • • • • • • •
CBC Cipher-block chaining Mode CBC-MAC Cipher Block Chaining Message Authentication Code Mode CCM Counter with CBC-MAC CFB Cipher feedback Mode CTR Counter Mode EAX Mode of operation ECB Electronic codebook Mode FTP File transfer protocol GCM Galois/Counter Mode IAPM Integrity Aware Parallelizable Mode IEEE Institute of Electrical and Electronics Engineers MAC Message authentication code NIST National Institute of Standards and Technology OCB Offset Codebook Mode OFB Output Feedback Mode PKCS Public Key Cryptography Standards XOR Exkluzivní disjunkce
40
Přílohy
A
A
PŘIHLAŠOVÁNÍ K FTP SERVERU
Přihlašování k FTP serveru
42
B
B
STANDARTNÍ ZPŮSOB ZOBRAZENÍ V KLIENTU CRYPTO NET2FTP
43
Standartní způsob zobrazení v klientu Crypto Net2FTP
C
C
ZPŮSOBY ZOBRAZENÍ CESTY K SOUBORU V KLIENTU CRYPTO NET2FTP
44
Způsoby zobrazení cesty k souboru v klientu Crypto Net2FTP
D
D
45
RYCHLOST PRÁCE S DATY VELIKOSTI 500 KB
Rychlost práce s daty velikosti 500 kB Encryption - 500 kB (rychlost neměřitelná) 500 kB
AES
Serpent
Twofish Jednotky
1. měření
226
102
193
MBps
2. měření
230
100
194
MBps
3. měření
208
103
178
MBps
4. měření
220
100
98
MBps
5. měření
216
102
191
MBps
Decryption - 500 kB (rychlost neměřitelná) 500 kB
AES
Serpent
Twofish Jednotky
1. měření
221
92
133
MBps
2. měření
229
106
203
MBps
3. měření
222
106
203
MBps
4. měření
222
95
295
MBps
5. měření
215
102
122
MBps
E
E
46
RYCHLOST PRÁCE S DATY VELIKOSTI 1000 KB
Rychlost práce s daty velikosti 1000 kB Encryption - 1000 kB (0,5 sekundy) 1000 kB AES
Serpent
Twofish Jednotky
1. měření
210
103
191
MBps
2. měření
224
92
203
MBps
3. měření
224
94
270
MBps
4. měření
231
103
298
MBps
5. měření
230
155
278
MBps
Decryption - 1000 kB 1000 kB AES
Serpent
Twofish Jednotky
1. měření
171
105
199
MBps
2. měření
205
105
212
MBps
3. měření
223
159
301
MBps
4. měření
225
125
298
MBps
5. měření
196
161
294
MBps
F
F
47
RYCHLOST PRÁCE S DATY VELIKOSTI 5 MB
Rychlost práce s daty velikosti 5 MB Encryption - 5 MB (1,0 sekundy) 5 MB
AES
Serpent
Twofish Jednotky
1. měření
231
104
199
MBps
2. měření
230
105
212
MBps
3. měření
342
154
301
MBps
4. měření
348
154
298
MBps
5. měření
228
105
294
MBps
Decryption - 5 MB 5 MB
AES
Serpent
Twofish Jednotky
1. měření
235
108
212
MBps
2. měření
231
111
211
MBps
3. měření
337
156
306
MBps
4. měření
340
159
307
MBps
5. měření
233
108
203
MBps
G
G
48
RYCHLOST PRÁCE S DATY VELIKOSTI 10 MB
Rychlost práce s daty velikosti 10 MB Encryption - 10 MB (1,5 sekundy) 10 MB
AES
Serpent
Twofish Jednotky
1. měření
234
104
201
MBps
2. měření
346
154
298
MBps
3. měření
345
154
300
MBps
4. měření
348
153
303
MBps
5. měření
231
102
200
MBps
Decryption - 10 MB 10 MB
AES
Serpent
Twofish Jednotky
1. měření
229
107
207
MBps
2. měření
345
160
313
MBps
3. měření
347
160
313
MBps
4. měření
346
158
306
MBps
5. měření
219
107
213
MBps
H
H
49
RYCHLOST PRÁCE S DATY VELIKOSTI 50 MB
Rychlost práce s daty velikosti 50 MB Encryption - 50 MB (10 sekund) 50 MB
AES
Serpent
Twofish Jednotky
1. měření
234
105
204
MBps
2. měření
344
154
297
MBps
3. měření
345
154
298
MBps
4. měření
234
105
204
MBps
5. měření
345
153
281
MBps
Decryption - 50 MB 50 MB
AES
Serpent
Twofish Jednotky
1. měření
234
108
213
MBps
2. měření
341
154
311
MBps
3. měření
342
159
312
MBps
4. měření
244
116
212
MBps
5. měření
341
158
310
MBps
I
I
50
RYCHLOST PRÁCE S DATY VELIKOSTI 100 MB
Rychlost práce s daty velikosti 100 MB Encryption - 100 MB (20 sekund) 100 MB
AES
Serpent
Twofish Jednotky
1. měření
342
154
298
MBps
2. měření
233
107
203
MBps
3. měření
233
105
204
MBps
4. měření
342
154
298
MBps
5. měření
342
153
290
MBps
Decryption - 100 MB 100 MB
AES
Serpent
Twofish Jednotky
1. měření
344
155
312
MBps
2. měření
250
110
213
MBps
3. měření
239
108
224
MBps
4. měření
343
155
310
MBps
5. měření
343
159
309
MBps
J
J
51
RYCHLOST PRÁCE S DATY VELIKOSTI 500 MB
Rychlost práce s daty velikosti 500 MB Encryption - 500 MB (1:36 minuty) 500 MB
AES
Serpent
Twofish Jednotky
1. měření
242
106
207
MBps
2. měření
233
105
203
MBps
3. měření
240
110
215
MBps
4. měření
225
103
202
MBps
5. měření
239
105
205
MBps
Decryption - 500 MB 500 MB
AES
Serpent
Twofish Jednotky
1. měření
248
111
216
MBps
2. měření
231
113
209
MBps
3. měření
241
112
223
MBps
4. měření
241
114
221
MBps
5. měření
240
109
211
MBps
K
K
52
RYCHLOST PRÁCE S DATY VELIKOSTI 1000 MB
Rychlost práce s daty velikosti 1000 MB Encryption - 1000 MB (3:20 minuty) 1000 MB AES
Serpent Twofish Jednotky
1. měření
339
153
296
MBps
2. měření
238
103
214
MBps
3. měření
338
153
270
MBps
4. měření
242
109
208
MBps
5. měření
238
109
207
MBps
Decryption - 1000 MB 1000 MB AES
Serpent Twofish Jednotky
1. měření
340
158
310
MBps
2. měření
235
111
218
MBps
3. měření
341
156
289
MBps
4. měření
246
112
222
MBps
5. měření
236
114
222
MBps