Šifrování a autentizace
Základní pojmy
Pojmem utajení (angl. confidentality) rozumíme přenos dat takovým způsobem, že cizí posluchač naslouchající na přenosovém kanále významu přenášených dat nerozumí.
Autentizace (angl. authentication) zdroje dat dává příjemci jistotu, že odesílatel dat je skutečně tím, za koho se vydává. Zajištěná integrita dat (data integrity) dává příjemci jistotu, že data nebyla na cestě nikým zmodifikována.
Kryptografickým systémem rozumíme systém, který na straně odesílatele dat šifruje zprávu, přenáší ji zašifrovanou (angl. cyphertext) a na straně příjemce původní zprávu dešifruje. Šifrování lze principiálně realizovat dvěma způsoby.
- Prvním z nich je vyvinout konkrétní šifrovací algoritmus a ten přede všemi mimo příjemce utajit. V případě prozrazení je však (možná i hardwarová) implementace takovéhoto systému k ničemu.
- Proto se zpravidla používá druhý způsob a to použít (i veřejně známý) algoritmus, jenž však bude parametrizován pomocí klíčů, které jediné musí zůstat utajeny. Podmínkou je pouze to, aby bylo dost možných klíčů, aby útočník nebyl schopen jednoduše vyzkoušet všechny z nich.
Slovem šifra nebo šifrování budeme označovat kryptografický algoritmus, který převádí čitelnou zprávu neboli prostý text na její nečitelnou podobu neboli šifrový text. Klíč je tajná informace, bez níž nelze šifrový text přečíst. Hašovací funkce (speciálně navržena pro kryptografii) je způsob, jak z celého textu vytvořit krátký řetězec, který s velmi velkou pravděpodobností identifikuje nezměněný text. Certifikáty a elektronický podpis jsou softwarové prostředky, které umožní šifrování textu.
Základní typy šifrování
S ohledem na způsob zacházení s klíči rozlišujeme v kryptografii 2 způsoby šifrování:
- Symetrická šifra je taková, která pro šifrování i dešifrování používá tentýž klíč a to jak na vysílači tak na příjmači.
- Asymetrická šifra používá veřejný klíč pro šifrování a soukromý klíč pro dešifrování, který zná pouze příjemce zprávy. Asymetrická šifra má narozdíl od symetrické tu výhodu, že ji odpadá problém s utajenou distribucí klíčů. Na druhou stranu používané algoritmy pro šifrování jsou mnohem složitější a náročnější na výpočty (např. RSA, Diffie-Hellman) a tudíž pomalejší. Uplatnění má např. u digitálního podpisu.
Na obrázku vpravo: Bob chce poslat Alici zašifrovanou zprávu - zašifruje ji veřejným klíčem Alice a ona už si ho rozšifruje svým soukromým.
Autentizace v symetrickém a asymetrickém systému
Šifrování v symetrickém i asymetrickém systému je realizováno konkrétním šifrovacím algoritmem. Podívejme se ale nyní, jak lze v obou těchto systémech prakticky zrealizovat autentizaci a na ní se vážící zabezpečení integrity dat.
V symetrickém systému založeném na sdíleném tajemství (hesle) mezi vysílačem a přijímačem můžeme uživatele autentizovat jednoduše tak, že jeho uživatelské jméno zašifrujeme klíčem a na přijímači je opět dešifrujeme a porovnáme se seznamem autorizovaných uživatelů.
Autentizace na základě symetrického šifrování (sdíleného klíče) a otisku (hashe)
Jestliže chceme pouze ověřit identitu odesílatele, aniž bychom k tomu potřebovali seznam uživatelských jmen na přijímači, můžeme postupovat tak, že na vysílači nejprve ke jménu uživatele připojíme jeho otisk (hash) a celou zprávu poté zašifrujeme. Přijímač, který zprávu jako celek dešifruje, pak může smysluplnost dešifrované informace ověřit tak, že z dešifrovaného uživatelského jména stejnou hash funkcí jako předtím (např. MD5) vysílač vypočte otisk a srovná jeho shodu s dešifrovaným otiskem .
Pro výpočet otisku používáme vhodnou jednosměrnou funkci (hash), která z velkého bloku dat vypočte tzv „otisk“ – blok několika bajtů, jenž blok dat charakterizuje. Hash funkce je volena tak, aby nebylo možné najít a podvrhnout jiný text zprávy, který bude mít stejný otisk jako zpráva původní.
Společně s autentizací odesílatele se zpravidla implementuje i zajištění integrity přenášených dat. Zajištění integrity mezi uživateli sdílejícími tajný klíč se realizuje tak, že odesílatel v paměti za zprávu připojí sdílený tajný klíč a z celého bloku [zpráva+sdílený tajný klíč] vypočte otisk. Poté vyšle původní zprávu a otisk celé dvojice. Přijímač pak za došlou zprávu v paměti připojí sdílený klíč a stejnou hash funkcí jako vysílač vypočte otisk. Ten poté srovná s otiskem, který spolu se zprávou vyslal vysílač.
Autentizace na základě asymetrického šifrování (sdíleného klíče) a otisku (hashe)
V asymetrickém systému se autentizuje poněkud odlišným způsobem, na kterém jsou mj. založeny i elektronické podpisy.
Princip je vidět z obrázku:
Uživatel Alice chce poslat zprávu uživateli Bob. Z dat nejprve vypočte otisk a ten zašifruje svým soukromým klíčem KA_PRIVATE. Data zprávy zašifruje veřejným klíčem Boba, který jako jediný může zprávu dešifrovat svým soukromým klíčem
KB_PRIVATE. Mimo to Bob prověří, zda zprávu vyslala Alice tak, si z dešifrované přijaté zprávy sám spočítá otisk a dešifrovaný otisk od Alice dešifruje všem dostupným veřejným klíčem Alice. Dešifrování proběhne úspěšně pouze v případě, že byl otisk zašifrován soukromým klíčem Alice, který vlastní jedině ona. A pouze v případě úspěšného dešifrování otisku se bude dešifrovaný otisk zprávy shodovat s otiskem vypočteným Bobem a Alice bude považována za autentizovaného odesílatele přijaté zprávy.
Zdrojem jsou skripta - Směrované a přepínané sítě (Petr Grygárek) a wikipedie