Bezpečnost na sítích II. – šifrování
16. 10. 2013 08:00 Rubrika: Technologie Autor: Jakub Pavlis
Velice zásadní záležitostí při práci na síti je schopnost autentizovat data a potvrdit jejich integritu po přenosu. A ne vždy také chceme, aby kdekdo znal obsah zprávy, ať už je to naše přihlašování do banky, milostný dopis nebo datum útoku na znepřátelený sushi bar. Řešením podobných situací se zabývá kryptografie.
Dnes si v krátkosti představíme princip symetrického a asymetrického šifrování, hashování a jeho využití při ověřování integrity dat nebo u elektronického podpisu. Kryptografie je sice prakticky vzdálenější odvětví matematiky, ale pro naše potřeby se přidržíme jen neodborného výkladu.
Šifrování se obvykle dělí na dvě oblasti, z nichž jedné říkáme symetrické šifrování a druhé asymetrické. Liší se mezi sebou způsobem, kde a jak vzít klíč k dešifrování zpráv.
Symetrické šifrování je výpočetně nenáročné a svým způsobem bezpečnější, ostatně jediná šifra, u níž je matematicky dokázáno, že nelze prolomit, a to ani při použití statistické kryptoanalýzy nebo útoku hrubou silou o neomezené velikosti, tzv. Vernamova šifra. Prakticky se ovšem Vernamova šifra téměř nepoužívá, lze si vystačit s jednoduššími řešeními, pokud splňují nejzákladnější rovnici, totiž že náklady na dešifrování budou větší než zisk z dešifrované zprávy. U metod brutal force (tedy mechanického zkoušení všech možných klíčů) pak lze transformovat tuto rovnici do časové platnosti, tedy prolomení šifry bude trvat déle, než jaká je platnost zprávy.
Symetrické šifrování se takto nazývá proto, že používá stejný klíč pro šifrování i dešifrování zprávy. Použití dostatečně silné šifrovací metody (algoritmu) a dlouhého klíče se lze snadno přiblížit praktické nedešifrovatelnosti. Používají se dva druhy metod, totiž proudové šifry, které kódují zprávu po jednotlivých bitech, a blokové šifry, častěji používané, které kódují bloky dat (obvykle 64 nebo 128 bitů). Sem patří známé šifry jako AES 128, Blowfish, Twofish, zastaralý DES (dnes nepovažovaný za bezpečný) a novější Triple DES.
Problémem v tomto případě není nic jiného, než distribuce klíčů. Po síti to v okamžiku, kdy očekáváte snahu o zachycování i jen šifrovaných zpráv samozřejmě nejde a fyzicky to nemusí být také snadné. Proto existuje ta druhá oblast.
Asymetrické šifrování. Je založeno na tom, že existuje sada dvou klíčů, přičemž veřejný klíč může znát kdokoli a používá se k zašifrování zprávy, zatímco soukromý klíč si uchovává příjemce a je tajný. Každý, kdo vám chce zaslat šifrovanou zprávu, si tedy může zcela veřejně stáhnout váš veřejný klíč, jím zprávu zašifrovat a jediný, kdo bude moci zprávu dešifrovat, jste vy. Asymetrické šifrování je extrémně náročné matematicky, obvykle se používají jednocestné funkce, u nichž je snadné dojít k výsledku (násobení dvou velice vysokých prvočísel), ale zpětně (faktorizace, rozklad na činitele) je velice obtížný. Vedle násobení prvočísel (například asi nejznámější šifra RSA) lze použít i výpočty diskrétního logarismu nebo tzv. problém batohu. Principiálně žádná asymetrické šifra není dokonale odolná vůči brute force útoku, ale vhodně dlouhým klíčem (obvykle minimálně 1024 bitů, uvádí se, že každým přidaným bitem se zdvojnásobuje délka luštění) lze převážit rovnici nákladů a zisku na svou stranu.
Protože je asymetrické šifrování složité a vyžaduje veliký výpočetní výkon, obvykle se používá jen v kombinaci se symetrickým šifrováním, čímž vzniká tzv. Hybridní šifrování. Na tom není nic složitého, prostě se asymetricky šifruje pouze symetrický klíč, (odpadá problém distribuce) a zbytek zprávy je zašifrován symetricky. Nejde samozřejmě o nejsilnější možnou variantu, ale vhodně kombinuje výhody obou přístupů.
Zajímavou a pomalu se rozvíjející se oblastí je kvantová kryptografie, která je odolná proti odposlechu, neboť pokus o odposlech je okamžitě objeven. Praktické využití je vecí budoucnosti a vždy asi půjde o velice specializované použití, neboť (minimálně prozatím) je možné používat pouze po optických sítích bez zesilovačů signálu. Využívá kvantových vlastností fotonů a pravidla kvantové fyziky, že i pouhé pozorování mění nekteré vlastnosti kvantových částic, například jejich spinu nebo polarizace.
Co je to hash? Do češtiny se toto slovo nejčastěji překládá jako „otisk“. Ve skutečnosti jde o výsledek jednocestné funkce, která převede text do nějaké číselné podoby a spočítá výsledek o konstantní délce. Tento by měl přesně charakterizovat text, takže jakoukoli změnou v textu by vyšel odlišný. Rozsah výsledného hashe je vždy pro daný algoritmus stejný, například 20 B u SHA-1, dnes jsou kvůli zvýšené bezpečnosti obvykle používány hashe rozsáhlejší (SHA-256 má 32 B, SHA-384 dosahuje 48 B a SHA-256 (též SHA-2) dokonce 64 B. Rozsah hashe může být prakticky libovolný, krátké se udržují především z praktických důvodu a faktu, že při současném výkonu poččítaču je 64 B prostě dostatečné a pravděpodobnost vytvoření stejných hashů z různých zpráv je minimální. Důležité je mít na mysli, že hash není dvojcestná šifra (k funkcím v hashovacím mechanismu neexistují inverzní funkce), ale jakýsi „otisk prstu“ dat, ze znalosti hashe principiálně nelze zjistit původní zprávu (informace v otisku je příliš redukovaná). Na sítích se hashe používají především ke sledování integrity dat kvůli možnosti vzniku poruch na fyzické úrovni linek.
A praktické využití? Výpočetní algoritmy určitého hashe jsou pořád stejné. Autor tedy odešle spolu se zprávou i hash (ať už se jedná o email nebo datový paket na síti), příjemce zprávu znovu zahashuje a výsledný hash porovná se zaslaným. Problém nastává v okamžiku, kdy neočekáváme pouhou poruchu v komunikaci, ale možnost nějakého napadení zprávy nebo přímo její podvrhnutí, protože se změněnou zprávou může přijít i pozměněný hash. Lze to řešit že k výpočtu hashe zprávy vždy přidáme ještě další skupinu dat, kterou sdílíme s protějškem, ale další strany ji neznají. Zprávu samu však samozřejmě posíláme bez těchto „přidaných dat“. Příjemce pak ke zprávě také přidá tato data, která musí dopředu znát, a spočítá hash jako v prvním případě. Takovéto hashe se nazývají MAC (Message Authentication Code) a jsou používány v protokolech SSL/TLS, nebo IPsec. Takto lze bezesporně zajistit, že dojde zpráva od původního autora, ovšem ještě to neprokazuje jeho totožnost. V tomto případě sice nehrozí, že zprávu podvrhne třetí strana, ale pořád je tu možnost, že ji pozmění samotný příjemce. Jak na to? Pak je třeba použít digitální podpis.
Digitální podpis kombinuje vlastnosti hashování a asymetrických šifer, jen asymetrické šifry obrací naruby. Stačí totiž vyrobit MAC hash dokumentu, ten poté zašifrovat svým soukromým klíčem a obě zprávy poslat příjemci. Ten si pomocí veřejného klíče hash dešifruje (tím je dokázána totožnost autora) a hash zprávy porovná se svým výpočtem (čímž se ověří totožnost a integrita zprávy). Jednoduché a elegantní.