Tento text je úryvkem z knihy:
Fred Piper, Sean Murphy: Kryptografie - průvodce pro každého
O knize na stránkách vydavatele
(pokračování předešlého dílu)
Dohoda na klíči
Základní myšlenkou ustavení společného klíče je, že obě strany jsou dohodnuty na metodě, jak se na společném klíči dohodnout. Této metodě se říká protokol dohody na klíči a představuje alternativu k distribuci klíčů. Je samozřejmě naprosto nezbytné, aby se obě strany před dohodou na klíči vzájemně řádně autentizovaly. To je možné například prostřednictvím certifikátů s veřejným klíčem. Nejznámější a nejrozšířenější protokol tohoto typu vytvořili Diffie a Hellman. U Diffieho-Hellmanova protokolu si obě strany vymění své veřejné klíče. Prostřednictvím pečlivě zvoleného kombinačního pravidla poté každý z nich spojí svůj vlastní soukromý klíč s veřejným klíčem druhé strany. Tím vznikne společná hodnota, od které se odvodí klíč.
Je naprosto nezbytné, aby oba uživatelé navzájem ověřili svou totožnost. V opačném případě by se mohl protokol stát obětí tzv. „útoku člověka uprostřed“. Při něm útočník zachytí komunikaci mezi oběma stranami a pak se při vzájemné komunikaci vydává vždy za osobu na druhém konci linky. Ve výsledku se obě strany domnívají, že se navzájem smluvily na klíči, ovšem ve skutečnosti si vytvořili společný klíč s „člověkem uprostřed“. V takovémto případě jsou digitální certifikáty k nezaplacení.
Základní myšlenkou Diffieho-Hellmanova protokolu zakládání klíče je, že i kdyby někdo dokázal zachytit komunikaci potřebnou pro dohodu na klíči, nebyl byl schopen tento klíč vypočítat. Zajímavou novou technikou pro ustavení klíče, která se nespoléhá na sílu kryptografického algoritmu, je kvantová kryptografie. Kvantová mechanika má takové vlastnosti, díky kterým ji mohou obě strany využívat jak k samotnému vysílání informací, tak pro zjišťování, zda se toto vysílání někdo nesnaží zachytit. Při ustavení klíče v tomto případě vyšle jeden uživatel druhému náhodou sekvenci. Jestliže dojde k zachycení přenosu, bude toto narušení odhaleno a celý proces začne nanovo. Sekvence, jež nebyla zachycena, je následně použita jako základ klíče.
Používání klíče
V mnoha systémech má každý klíč předepsaný způsob využití a není možné jej použít k jiným účelům. Neexistuje ovšem žádný způsob, jak zajistit, aby byl tento požadavek plněn. Lze však najít mnoho případů, kdy k oslabení systému došlo z důvodu vícenásobného používání jednoho klíče. Dnes se považuje za standard, aby každý klíč měl jen jedno jediné využití.
Už jsme si na různých příkladech ukázali, že koncepce používání klíčů k jedinému určenému účelu je dobrá. Probírali jsme mimo jiné koncept používání klíčů k šifrování jiných klíčů, k čemuž je zapotřebí jiného přístupu než k šifrování dat. Abychom pochopili plný rozsah omezenosti takovéhoto využití v praxi, musíme si vysvětlit myšlenku bezpečnostního modulu odolného proti nabourání (tamper-resistent security module, TRSM). Jestliže uživatel obdrží šifrový text a vloží jej společně s příslušným klíčem do TRSM, očekává z TRSM jako výstup původní data. Jestliže však obdrží zašifrovaný klíč, potom nechce, aby mu TRSM vydalo klíč v jeho otevřené podobě. Zcela postačí, když dojde k dešifrování klíče, který bude následně uschován v modulu. Klíč i šifrový text jsou ovšem bitové řetězce a dešifrovací algoritmus nedokáže odlišit jeden od druhého. Koncepce používání klíče se tedy musí vázat na funkční prvky TRSM, ne na samotný algoritmus.
Mají-li mít klíče jen jedno výhradní použití, musíme ke každému klíči přiřadit příslušné označení. To následně určuje, k čemu má být klíč použit. Tímto označením může být například „klíč pro šifrování dat“, „klíč pro šifrování klíčů“, „klíč pro generování MAC“ nebo „ověřování MAC“. Konkrétní podoba těchto označení samozřejmě závisí na konkrétním TRSM a na příslušném systému. U asymetrických algoritmů například uživatelé potřebují dva páry veřejných a soukromých klíčů – jeden pár pro samotné šifrování a druhý pro podpisy.
Jakmile si vytvoříme příslušná označení, musíme vymyslet způsob, jak je ke klíčům přiřadit takovým způsobem, aby je útočník nemohl měnit a tím pádem zneužívat k jiným účelům. Jednou z možností je, aby veškeré zašifrované podoby klíče byly závislé na hlavním klíči v TRSM a na označení klíče. Tím pádem by bylo možné označení měnit jen v rámci TRSM. Jakmile je označení ke klíči přiřazeno, musí být pomocí nějakého mechanismu zabráněno, aby klíč nemohl být zneužit. Toho je možné docílit především správným designem a nastavením TRSM.
Změna klíčů
Každý kryptografický systém musí být z mnoha důvodů schopen měnit klíče. K těmto změnám může docházet buď pravidelně podle předem stanoveného plánu, nebo v důsledku podezření na vyzrazení klíče. Existuje-li podezření, že klíč byl zneužit, mělo by dojít k jeho okamžité změně. V mnoha organizacích dochází z bezpečnostních důvodů také k pravidelným výměnám klíčů, díky čemuž jsou tyto organizace připraveny na výjimečné situace a jejich pracovníci mají dostatek praxe k tomu, aby věděli, jak se v takovýchto okamžicích chovat.
Důvodem pro pravidelnou výměnu klíčů je, aby se snížilo riziko jejich vyzrazení a zároveň aby nebyly pro útočníky tak cenné. Význam úspěšného útoku závisí především na tom, kolik času a úsilí do něj musí útočník vložit. Například u systémů EFTPOS (Electronic Funds Transfer at Point of Sale) se klíče mění po každé provedené transakci. V takových případech je velice nepravděpodobné, že by útočník investoval množství prostředků do útoku, jehož výsledkem by bylo získání jediného klíče k jediné transakci.
Neexistují žádná přesná pravidla na to, jak často by se klíče měly měnit. Je ovšem zřejmé, že ke každé změně by mělo dojít dlouho před uplynutím doby potřebné k provedení důkladného hledání klíče. Dalším ovlivňujícím faktorem by mělo být, aby riziko vyzrazení klíče odpovídalo nákladům a problémům způsobeným jeho výměnou za nový.
Likvidace klíče
Když už nejsou klíče nadále zapotřebí, je nutné je nějakým bezpečným způsobem zničit. Prosté smazání souboru, v němž byl klíč uložen, v tomto případě nestačí. Často je třeba mít k dispozici podrobný popis postupu, jak toho docílit. V příslušném standardu ANSI například stojí: „Klíčový materiál na papíru či podobném záznamovém prostředku by měl být rozstříhán, roztrhán, spálen nebo skartován. Klíčový materiál na všech jiných typech záznamových prostředcích by měl být zničen tak, aby jej nešlo fyzicky ani elektronicky obnovit.“ To znamená, že veškeré elektronicky uložené klíče by měly být po smazání kompletně přepsány, aby se o nich nikde neuchovala žádná informace, kterou by útočník mohl zneužít. To je velice důležité především u softwarových aplikací, jež ukládají klíče do paměti, kterou pak lze využít i k jiným účelům.
Hierarchie klíčů
Jak jsme již uvedli, ruční zpracování bývá náročné na čas i prostředky. Je tedy pochopitelné, že by mělo být omezeno na nezbytné minimum. To samé platí o správě klíčů – elektronická distribuce je výhodnější než manuální rozesílání. Při elektronické distribuci je ovšem zapotřebí, aby byl přenos nějakým způsobem chráněn. Nejběžnější způsob představuje ochrana klíče zašifrováním pomocí klíče jiného. Jak jsme již uvedli, tím se dostáváme k hierarchii klíčů, v níž existuje jeden nejvyšší (hlavní) klíč, který není chráněn žádným způsobem. Hlavní klíč tedy musí být distribuován ručně, a to buď v podobě zařízení odolného proti nabourání, nebo v jednotlivých komponentech.
Nejjednodušší podoba hierarchie klíčů má dvě úrovně. Hlavní klíč je určen k šifrování ostatních klíčů a slouží výhradně k tomuto účelu. Klíčům nižší úrovně se říká pracovní klíče či klíče na sezení. Jejich funkce se liší podle konkrétního způsobu použití. Mohou například sloužit k šifrování zabezpečené komunikace nebo k ověřování integrity dat. Sezení jako takové můžeme definovat mnoha různými způsoby, například dobou platnosti klíče nebo počtem jeho použití. Je-li zapotřebí klíč sezení vyměnit, je jeho náhrada zasílána v šifrované podobě prostřednictvím hlavního klíče. Jestliže ovšem nastane potřeba vyměnit hlavní klíč, je nutné celý proces obstarat ručně.
Ruční změny klíčů jsou většinou velice nepraktické, takže většina systémů má hierarchii o třech úrovních, kdy se mezi hlavním klíčem a pracovními klíči nachází ještě jedna vrstva. Klíče této úrovně slouží k šifrování jiných klíčů, a jsou tedy používány k ochraně klíčů pracovních; samy jsou přitom chráněny hlavním klíčem. Díky této dodatečné vrstvě je již možné klíče pro šifrování jiných klíčů distribuovat elektronicky, čímž se výrazně snižuje potřeba manuálního rozesílání. Obě tyto možnosti jsou popsány ve výše uvedeném diagramu, přičemž každý klíč „chrání“ ten pod ním.
V celé této části věnované správě klíčů jsme vycházeli z předpokladu, že pracujeme se symetrickými klíči. Není ovšem žádný důvod, proč by měl být algoritmus určený k šifrování pracovních klíčů stejný jako algoritmus k šifrování dat. Skutečnost, že jsou pracovní klíče symetrické, nám nijak nebrání použít pro klíče na vyšší úrovni kryptografii založenou na veřejných klíčích. V praxi existuje mnoho hybridních systémů, jež k distribuci klíčů určených pro symetrické algoritmy používají algoritmy asymetrické.
Správa klíčů na sítích
Jestliže si dvě strany vyměňují šifrované zprávy, nabízí se jim v závislosti na konkrétních podmínkách a potřebném stupni utajení celá řada možností, jak s klíči nakládat. Uživatelé se například mohou osobně setkat, aby si klíče vyměnili. Pokud se rozhodnou pro používání šifrovacího zařízení, pak může tento produkt obsahovat protokol, jenž bude vytvářet klíče místo nich – například Diffieho-Hellmanův protokol. Takovéto zařízení ovšem může být příliš drahé nebo složité. Existují zařízení, která obsahují šifrovací algoritmus a radí uživatelům, aby klíč vytvořili v podobě řetězce alfanumerických znaků, jenž poté odesílatel sdělí příjemci telefonicky. Na bezpečnostní rizika asi nemusíme nijak zvlášť upozorňovat, pro většinu osobní komunikace jsou ovšem pravděpodobně přijatelná. Jenže málokdo se asi bude chtít zdržovat telefonátem v případě, kdy chce pouze poslat e-mail s utajeným obsahem.
Je-li požadována vysoká úroveň zabezpečení, bude součástí dohody o úvodním klíči jistě i nějaký manuální proces. Vzhledem k jejich nízké rychlosti a vysoké náročnosti je pravděpodobné, že se uživatelé vynasnaží, aby veškerá další jednání o klíčích již probíhala elektronicky. Pokud je síť dostatečně malá, pak je možné, aby každá dvojice terminálů měla společný klíč pro vzájemnou komunikaci. Taková situace ovšem někdy může být náročné na čas i prostředky. U velkých sítí pak hrozí velké riziko, že správa klíčů naroste do neúnosných rozměrů. Aby bylo možné tento problém vyřešit, mají mnohé sítě důvěryhodná centra, jejichž úkolem je zajišťovat vytváření klíčů mezi dvojicemi uživatelů sítě.
V běžném případě to znamená, že si každý uživatel musí vytvořit sdílený klíč s důvěryhodným centrem. Ačkoliv je tento proces náročný na čas i prostředky, stačí jím projít jen jedinkrát. Chtějí-li pak dva uživatelé komunikovat po zabezpečené lince, požádají o pomoc důvěryhodné centrum. To vytvoří sdílený tajný klíč pomocí tajných klíčů, jež již existují mezi důvěryhodným centrem a každým z uživatelů. Řešení, o kterých mluvíme, vycházejí ze standardů ANSI a ISO.
3. díl - Dokončení: Obnova a zálohování klíčů
Tento text je úryvkem z knihy:
Fred Piper, Sean Murphy: Kryptografie - průvodce pro každého
O knize na stránkách vydavatele