BEZPEôNÁ POôÍTAôOVÁ SÍŤ
část 5, díl 2, str. 1 díl 2, Kryptografie
5/2 KRYPTOGRAFIE
5/2.1 5/2.2
5/2.3
5/2.4
Kryptografie - proč a jak Symetrická kryptografie 5/2.2.1 Blokové šifry 5/2.2.2 Blokové šifry - operační módy 5/2.2.3 Proudové šifry a Linear Feedback Shift Register 5/2.2.4 Skutečně neprolomitlená šifra 5/2.2.5 DES, Standard II - AES, IDEA 5/2.2.6 Hashovací funkce Asymetrická kryptografie 5/2.3.1 Pre-řešení: Diffie-Hellmanův algoritmus - ustanovení tajného klíče 5/2.3.2 Princip dvou klíčů 5/2.3.3 Man in the middle attack a PKI 5/2.3.4 Širší nasazení - sjednocení koncepcí Kryptografické protokoly 5/2.4.1 Řešení problémů 5/2.4.2 Kombinovaný systém - taková jedna normální zpráva listopad 2005
část 5, díl 2, str. 2
BEZPEôNÁ POôÍTAôOVÁ SÍŤ
díl 2, Kryptografie
5/2.5 5/2.6
listopad 2005
5/2.4.3 Ostatní protokoly - kryptografie nasazená v praxi Kerberos Systém s/key a jednorázová hesla
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 1, str. 1 díl 2, Kryptografie
5/2.1 KRYPTOGRAFIE - PROČ A JAK
Ačkoliv se pojem informací spojuje s peněžními hodnotami především v době dnešní technické éry, ve skutečnosti platila tato rovnost nebo, chcete-li, podobnost, již od pradávna. Více informací pro mne znamená lepší rozhodování, tedy základ jakéhokoliv zlepšení či pokroku. Ve skutečnosti jsou informace převoditelné takřka na jakékoliv hodnoty, které si ve svém reálném životě dokážeme představit, a z tohoto důvodu byly, jsou a budou předmětem lidských snažení a střežení - na opačných stranách. Hmotné cennosti jsme zvyklí nejčastěji uschovávat v různých trezorech, bezpečnostních přihrádkách apod., ke kterým máme (prostřednictvím klíče, hesla, pinu...) výhradní přístup. Pozitivum je v tom, že již není třeba střežit danou velkou věc, ale stačí střežit malý klíč - ten od trezoru. A kryptografie? Není velkého rozdílu.
prosinec 2003
část 5, díl 2, kap. 1, str. 2
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
Kryptografie je věda o minimalizování tajných informací. Skutečně. Že se malé věci střeží lépe než velké, je jasné, a pokud jde o data, není tomu jinak. Chránit milióny stránek tajných dokumentů v elektronické podobě je i v dnešní době obtížné. Kryptografie nám umožní místo obrovského balíku dat chránit pouze malou posloupnost se stejným efektem. V historii se objevovaly různé způsoby, jak tohoto cíle dosáhnout. „Umění tajných písem“ doporučuje milencům dokonce Kámasútra, několik metod je známo z dob starověkého Říma. Z této doby prozatím zmiňme jeden vskutku originální způsob psaní (obdoba tetování) na vyholenou hlavu královského posla. Poté, co mu vlasy opět narostly, byl vyslán k adresátovi, který ho znovu oholil a zprávu si přečetl. Abychom dostáli co nejefektivnějšího řešení, musíme oblast strukturovat. Nemůžeme navrhnout komplexní zabezpečení něčeho „z ničeho“, od začátku až do konce a při změně situace znova. Nemůžeme se znova zabývat již jednou vyřešeným. Strukturování problému a dodržování standardizovaných postupů při práci s používanými objekty je jeden z nejlepších, nejlevnějších a nejefektivnějších způsobů dosahování pokroku. Nástroje
Definujme si předmět naší práce. Budou to pojmy, kterých se budeme dále ve výkladu držet. To je důležité především pro zamezení nedorozumění v budoucích kapitolách. Daty budeme nazývat jakkoliv (kladně) dlouhou posloupnost znaků dané abecedy. Nejčastěji budeme jako jednotlivé znaky brát bajty, tedy v desítkovém zápisu
prosinec 2003
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 1, str. 3 díl 2, Kryptografie
čísla mezi 0 a 255. V počítači je vše posloupnost, posloupnost nul a jedniček, tj. bitů, kde každý z nich může nabývat právě dvou hodnot. Začnete-li používat nějaký kus paměti, stroj musí vědět, kde ho má hledat, tedy znát začátek a konec (resp. začátek a jeho délku). Takovýto blok paměti může nabývat jen konečně mnoha hodnot. Proto není rozdílu, jak ho budeme chápat: posloupnost bitů (nul či jedniček), posloupnost bajtů (tj. osmic bitů, 28 = 256), či jako jediné velké číslo (tato poslední ekvivalence plyne právě z omezeného počtu stavů, viz výše). Jakákoliv „lidská“ slova jsou také zapsána čísly. Mluvím o tom proto, abychom práci s bloky (na které se nějakým jménem odvoláváme, třeba „šifrovaný“ text) chápali obecně. Co se jednou může hodit pojmout jako číslo, může být příště výhodnější jako posloupnost menších čísel atd. Otevřený text jsou data, která můžeme algoritmicky transformovat do stavu majícího nějakou informační hodnotu a tato transformace není nijak spojena s utajováním obsahu, bezpečností atd. Šifrovaný text jsou naopak data, jejichž transformace do formy mající informační hodnotu je spojena s ochranou jejich obsahu. Šifra bude funkce, které pro danou vstupní dvojici dat spočítá dle zadaného algoritmu výstup. Klíč (šifrovací) bude opět posloupnost znaků (abecedy), ovšem až na výjimky nějak omezená na délce. Odvoláme-li se na úvodní poznámku o snižování délky utajovaných informací, bude otevřený text to (dlouhé), co chceme chránit, klíč to (krátké), co budeme chráprosinec 2003
část 5, díl 2, kap. 1, str. 4
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
nit místo toho, a šifrovaný text to, čehož vyjádření v důsledku chránit nemusíme. Vstupními daty šifry tak budou otevřený text a klíč. Proces vytváření šifrovaného textu budeme nazývat šifrováním, proces opačný dešifrováním. Kryptografie jako vědecká disciplína
Vědu, která v sobě zahrnuje jak vytváření bezpečnosti, tak zkoumání jejích slabin, nazýváme kryptologií. Kryptografií, která bývá z nějakého důvodu vyzdvihována nad celek, kam patří, označujeme oblast tvoření, tj. výzkum a vývoj šifer, naopak o hledání metod prolomení se snaží kryptoanalýza.
Kombinačky na bezpečnost
Kryptografie je prostředek, nikoliv podstata problému sama o sobě. Je to nástroj. Nástroj moderní vědy na dosažení cíle, nikoliv cíl jako takový. Mnozí počítačoví odborníci se domnívají o opaku a bezpečnost jako takovou zaměňují s kryptografií a hlásají, že něco je bezpečné, protože je to šifrované. Šifra je jejich víra a 128 bitů jejich desatero. Skutečnými cíly používání této vědní disciplíny nejsou jen programátorské efekty ve smyslu, že „něco se předtím dalo přečíst, a teď už to nejde“. Smyslem používání kryptografie je pomoci vyřešit váš problém se zabezpečením. Pomoci vyřešit komplexní, strukturovaný a často nadmíru složitý systém ochrany cenné věci před několika nebezpečími. A v tomto komplikovaném procesu je teoretická stránka ochrany, kterou se tato část knihy zabývá, přes všechnu svou důležitost pouze jedním nástrojem na jeden problém. V praxi má každé zabezpečení založené na kryptografii několik stádií vývoje, kterými musí toto zabezpečení, či alespoň v něm použité techniky projít. Vý-
prosinec 2003
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 1, str. 5 díl 2, Kryptografie
sledkem naší námahy bude konkrétní služba pro uživatele, která v sobě bude obsahovat několik hlavních „vrstev“ lidského snažení. • Zkoumání elementárních vlastností struktur. Stavíme-li na číslech, musíme číslům rozumět. Kryptografie staví na matematice, která pro ni speciálně zkoumá řadu teoretických objektů. Algebra, teorie čísel či vědy o speciálních strukturách jsou při budování bezpečnosti nepostradatelné. Každé zabezpečení založené na vědeckých poznatcích musí stát na solidních logicky-vědních základech. Myšlenky, ze kterých se vyvozuje výsledný dojem o bezpečnosti, musí stát na dokázaných či dostatečně probádaných větách či zákonech.Výsledkem tohoto zkoumání jsou „kryptografické objekty“ - samostatně funkční, ale zatím bez kontextu. • Zkoumání a vývoj protokolů. Je třeba vyřešit problém, je třeba se podívat, jak mi to či ono může pomoci v praxi. Pokud požadujeme extra funkce, které teorie nenabídla, nastupuje opět věda - mohu to nějak udělat s tím, co mám k dispozici, nebo musím opět na začátek, k matematice? • Praktická implementace. Jsou na to připraveny dnešní sítě? Jsou na to vůbec připraveni uživatelé? Odkud nebezpečí hrozí a odkud může hrozit v budoucnu? Jak jsme na tom s náročností na hardware? Převedení řeči vědy do světa počítačů musí být věnována stejná pozornost jako návrhu myšlenky jako takové. To proto, že ona sama reálný svět nepostihuje. Provádíme-li nějaký výpočet na papíře či jenom v naší hlavě, nelze automaticky předpokládat naprostou ekvivalenci s prací např. procesoru.
prosinec 2003
část 5, díl 2, kap. 1, str. 6
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
Jde-li o bezpečnost (a mohl bych napsat „jde-li o peníze“), nemůžeme si dovolit uživateli naservírovat nové, z rukávu vytažené myšlenky. Pouze to, co odolalo několika letům útočení světových odborníků, může být skutečně považováno za kandidáta na bezpečné řešení. Obor se vyvíjí příliš rychle na to, aby jedinec, firma či instituce s rozpočtem na bezpečnost řekněme menším než vládním mohla sama této hranice dostát. Nejen že se možné metody útoků zlepšují a zlepšují. Ony dokonce ve svém slova smyslu „žijí“ jako samostatný obor - některé upadají v zapomnění, některé se objevují znenadání a napadají implementovaný systém z míst, kde by to nikdo ještě včera nečekal. Zažívají své „boomy“, dny slávy a popularity. Stavíme bezpečnost
Jak zanedlouho poznáme, řešení konkrétních praktických problémů je oborem samo o sobě a jeho spojitost například s detailní matematikou jednotlivých algoritmů může být značně nepřímá. Nebude nouze o situace, kdy vědec vyřeší problém „na papíře“ a ještě navíc dokáže, že jeho postup skutečně formálně uspokojuje daný problém, ovšem při praktické realizaci jeho algoritmus pohoří. Z několika oblastí vědy tak vybereme různé díly, které budou plnit nějakou funkci samy o sobě, a jejich poskládáním teprve vznikne skutečná použitelná věc. Částmi, které budeme nejčastěji používat, budou především: • dva druhy šifrovacích algoritmů, • některé funkce počítající pro daný text jistý výstup s požadovanými speciálními vlastnostmi, • algoritmy pro generování náhodného či pseudonáhodného výstupu, • různé modely důvěryhodných třetích stran.
prosinec 2003
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 1, str. 7 díl 2, Kryptografie
Bezpečnost celého systému bude záležet na bezpečnosti každé jeho části ve smyslu minima. Řetěz je tak pevný, jak je pevný jeho nejslabší článek. Některé zmiňované části a postupy najdou široké uplatnění i mimo oblast ochrany dat. Nás ovšem nejčastěji zajímá, zda, popř. nakolik použitý „díl“ snižuje bezpečnost našeho celku, a proto budeme mít na zmiňované metody často požadavky lehce odlišné od těch, se kterými se můžeme setkat v jiných oborech (třeba při generování náhodných jevů budeme ostře sledovat jiný fakt než třeba statistika a podobně). Výsledkem „sestavení“ zmiňovaných částí dohromady bude tzv. (bezpečnostní) protokol. Neboli algoritmus, který jasně a přesně definuje chování nějakého (programovatelného) stroje (často ovšem budeme pro názornost přemýšlet s lidskými bytostmi...). Každému z nich říkejme účastník protokolu. Pro úspěšnou realizaci je bezpodmínečně nutné, aby účastníci rozuměli každé instrukci protokolu a aby byl protokol navržen nejen správně (skutečně řeší daný problém), ale řekněme i „optimálně“. Totiž tak, aby jednotlivé kroky byly dobře proveditelné na současné výpočetní technice. K ničemu je například protokol, jehož algoritmy vykazují extrémně špatnou časovou či paměťovou složitost či v němž se řešení nedočkáme vůbec. Jak je vidět z definice, od počátku této kapitoly počítáme s použitím šifrovacího klíče jakožto informace, která nám zajistí přístup k zašifrovaným datům. Budeme se tedy zabývat mechanismy, které bezpečnost řeší přes ochranu klíče, nikoliv přes ochranu algoritmu. Ten nechť je veřejně znám ve své kompletní podobě.
Algoritmus vs. klíč
prosinec 2003
část 5, díl 2, kap. 1, str. 8
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
Tomu, že tato idea byla ve své době vskutku revoluční, se asi nikdo nebude divit. Myšlenka založit bezpečnost na prosté tajné transformaci otevřeného textu na šifrovaný je daleko jednodušší a lidskému mozku bližší. Přestože i dnes existují ojedinělé případy, kdy je tato technika používaná, nejčastěji se s ní objevuje anglický termín „Security Through Obscurity“ - ve smyslu bezpečnost přes obstrukce. Utajování algoritmu musí mít nějaký zvláštní důvod, jinak se rozhodně jedná o krok špatným směrem. Existují například situace, kdy v principu není možné postavit ochranu dat na tajném klíči („šifrování“ pak slouží na obranu jen před těmi nejprimitivněji vybavenými protivníky) či se touto cestou vedle tajného klíče posiluje bezpečnost systému jako celku. Zda by neměl být tajný (i) algoritmus, je otázka, na kterou by se dalo odpovědět celou kapitolou. Šifry, jejichž algoritmy se pečlivě střeží, mohou mít při praktickém nasazení výhodu, zvláště pokud jsou při dešifrování známy jenom šifrované texty. Problém je v kvalitě algoritmů jako takových, totiž zda vůbec nějaká uzavřená komunita může vymyslet algoritmus, který by bezpečností konkuroval obdobným, veřejně známým, nad kterým si lámala hlavu celosvětová vědecká obec a jenž odolává útokům třeba již třetí desetiletí. Uzavřeme zobecněním: otázkou je, jak dobrý proprietální šifrovací algoritmus může vymyslet jak bohatá firma. Teoreticky nemusí být mezi utajením algoritmu a klíče rozdílu - můžeme klíče popsat jen jako parametry nějaké (tajné) transformační funkce. Hlavní přínos je v praxi - stálo by velké množství energie studovat algoritmy jako celky jeden za druhým, daleko lepší je soustředit se na méně variant a ptát se, na kolik je jeprosinec 2003
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 1, str. 9 díl 2, Kryptografie
jich bezpečnost zastupitelná bezpečností klíče (parametru) Při pojmenování komunikujících stran existuje jistá konvence. Není to předpis či pravidlo v přesném slova smyslu, spíš velmi často přebíraná praktika. Účastníkům protokolu se přiřazují podle jejich funkce jména. Dvě strany, snažící se o bezpečnost v komunikaci, se často pojmenovávají Alice a Bob, od prostého A a B, popř. C jako Carrol. Útočníci bývají nejčastěji Eva (E, eavesdropping, odposlech) či Mallory (M, malicious, škodlivý). Jménem Trent (T, trust, důvěra) se tituluje nezávislá třetí strana.
V hlavních rolích
Těchto výrazů se nebudeme držet doslova. Výhodou jsou při studiích pokročilých kryptografických algoritmů, kde najednou vystupuje několik komunikujících stran s různými úmysly a vztahy navzájem. Zvláště v kratších myšlenkách vystačíme se slovním popisem či s písmeny A a B. Pojmenovávání je opravdu jen kosmetická záležitost. Elementární požadavky na bezpečnost symetrických šifrovacích algoritmů se odvíjejí od hlavních teoretických možností útoku, které by případný útočník mohl realizovat.
Útoky pasivní - na data
Útok se známým šifrovaným textem (known-plaintext attack) je patrně nejlépe představitelná situace. U kryptografa předpokládá znalost pouze šifrovaného textu, aniž by věděl cokoliv o použitém algoritmu či klíči. Jeho úkolem je najít otevřený text, popřípadě algoritmus či klíč. Vedle toho útok se známým otevřeným textem (known-cipertext attack) označuje situaci, kdy krypprosinec 2003
část 5, díl 2, kap. 1, str. 10
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
tograf disponuje oběma korespondujícími texty, které byly při komunikaci zachyceny. Klade se mu za cíl odhalit konkrétní požitý algoritmus a/nebo klíč tak, aby bylo možné dešifrovat zbývající obsah komunikace. Tato metoda útoku předpokládá znalost dvojic textů určených (v praxi nevědomě) druhou stranou a žádné další „pokusy“ s šifrovacím strojem nejsou k dispozici. Nakonec útok s vybraným otevřeným textem (choosen-ciphertext attack) popisuje situaci, kdy je kryptografovi k dispozici vstup a výstup šifrovacího zařízení a může si tak nechat k jakémukoliv otevřenému textu nechat vygenerovat jeho šifrovanou alternativu. Může tak použitý algoritmus „testovat“ na různé speciálně vymyšlené vstupy a podle obdržených výstupů odhadovat způsob šifrování. Jak vidíme, jedná se o principiálně odlišné situace, které zkoumají odolnost algoritmu z různých stran. Přestože možná intuitivně chápeme „prolomení šifry“ jako úspěšnou realizaci především prvního zmiňovaného útoku, je na místě uvést, že pro skutečně seriózní využití kryptografie nejsou zbylé dva nikterak zástupné či podřadné. Na kvalitní a odolné algoritmy jsou dnes kladeny vysoké nároky a tyto tři popisované situace představují jen jakési základní směrnice. Skálopevná odolnost proti všem třem z nich je skutečně nutnou podmínkou. Útoky proti protokolu
prosinec 2003
Vedle útoků na šifru jako takovou existují i jiné třídy nebezpečí. Poté, co navrhneme bezpečnostní protokol (složený z šifer, tzv. hashovacích funkcí, generátoru náhodných čísel atd.), je třeba prozkoumat i bezpečnost jeho jako celku. Přestože můžeme použít „absolutně“ bezpečné (rozuměj: ty nejbezpečnější, které
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 1, str. 11 díl 2, Kryptografie
máme) šifry, funkce apod., nikde nemáme zajištěno, že tajná informace neuniká nějakým jiným způsobem či že nejde zneužít identita. Typickým příkladem je tzv. útok opakováním (přehráním), angl. reply attack. Bez toho, abychom jediný pokročilejší protokol znali, si ho dokážeme lehce představit: při autorizaci klienta do systému útočník poslouchá a „nahrává“ komunikaci. Poté, ve vhodnější době, ji „přehraje“ systému, který, dostávaje jen čísla a čísla, není schopen odhalit podvod. Ve své nejprimitivnější podstatě se jedná samozřejmě jen třeba o odposlechnutí hesla na síti, při přihlašování do freemailboxu, nicméně i daleko sofistikovanější protokoly řešící daleko komplexnější situace mohou být proti této základní metodě nezabezpečené. Mimochodem, jak uvidíme převážně v druhé části tohoto oddílu, řeč protokolů je velmi systémová, má daný řád. Je to samé „A pošle toto, B spočítá toto a pošle zpět toto“. Systém, který v těchto komunikacích panuje, evokuje myšlenku, že jejich studium (ptáme se např., je-li uživatel dostatečně autorizován) by mohlo mít nějaké „algoritmické“ řešení. Uvozovky v předposledním slově jsou na místě, nicméně skutečně existují strojové metody na ověřování podobných vlastností, které si poradí se zadáním bez vlastního chápání jednotlivých akcí. S nadsázkou si to můžeme představit, jako by se prostě jen řešila rovnice zadaná jednotlivými kroky protokolu. Vyřešeno - bezpečné, nevyřešeno - děravé. Máme-li úlohu na stroji s omezeným počtem stavů, musí existovat omezený počet řešení. Existuje-li skutečně takovéto řešení, zkoušením jedné možnosti po druhé se k němu za konečný čas dostaneme.
Útok hrubou silou
prosinec 2003
část 5, díl 2, kap. 1, str. 12
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
To je základní princip řešení metodou hrubé síly, v angloamerické literatuře bývá nejčastěji označována jako brute-force attack či exhaustive key search. Algoritmus vykonávaný na běžných strojích dnešního typu se vždy nachází v jednom z konečně mnoha stavů, neboť, jak již víme, všechny proměnné mají omezenou délku. Při návrhu nějakého bezpečnostního systému je proto dobré řídit se dvěma principiálními směrnicemi, a sice: • aby prolomení pokud možno jakkoliv sofistikovanou (předem neodhadnutelnou) metodou nebylo časově principiálně lehčí než náročnost útoku hrubou silou pro jakoukoliv délku zadání (šifrovacího klíče) a nezávisle na ní; • aby délka zadání byla zvolena taková, že se současnou technikou nelze díky potřebnému času bruteforce použít. Množinu všech zadání (v našem případě obvykle klíčů), které je třeba prohledat, označujeme jako prostor klíčů, angl. keyspace. Protože s každým bitem zadání se tento prostor zvětšuje dvakrát, v principu nepomůže jakékoliv polynomiální zrychlení počítání, protože exponenciála (2x) vždy přemůže polynom o jakýkoliv rozdíl pro dostatečně dlouhé zadání (velké x). Speciálně si nepomůžeme s lineárním zrychlením, ukažme si příklad. Spočítejme, o kolik bitů musíme zvětšit délku klíče, máme-li ke zkoušení k dispozici milionkrát rychlejší metodu. Hledáme jednoduše 2x = 1000000, tedy x.log 2 = 6, x = 0,6.0,3, tj. o 18 bitů. Je třeba se neunáhlit při srovnání nároků na brute force pro různě dlouhé klíče, svádí myšlenka, že klíč délky 2 m je dvakrát bezpečnější než klíč délky m, což pochopitelně není pravda. Věc je složitější v případě, že složitost brute-force prosinec 2003
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 1, str. 13 díl 2, Kryptografie
s každým bitem neroste přímo exponenciálně, nebo resp. že není splněn první z výše uvedených dvou bodů (tyto situace považuji za navzájem ekvivalentní, převoditelné). Pak je třeba se ptát (a kryptografové se ptají), jakou složitost tedy algoritmus vlastně má. U některých bohužel přesnou odpověď na tuto otázku nemáme (tj. nemáme důkaz, že neexistuje lepší metoda než ta, na jakou délku klíče dimenzujeme). Délky klíčů dnešních algoritmů jsou pochopitelně dimenzovány tak, aby prohledání všech možností nebylo v praxi časově realizovatelné. Kdybychom měli miliardu počítačů, které by vyzkoušely miliardu klíčů za sekundu, stále pořád by brute-force attack na šifru používanou při bezpečném internetovém připojení přes protokol SSL trval déle, než dosud existuje vesmír. Praktických výsledů aplikování metody hrubou silou bylo dosaženou jen za předpokladů krátkého (ale v praxi používaného!) klíče. V každém případě se navíc jednalo o nějakou „nadstandardní iniciativu“ - buď o distribuovaný výpočet (počítalo několik tisíc strojů připojených do Internetu), nebo o speciální hardware, ušitý namíru dané šifře. Principiálně odlišný typ útoku představuje situace, kdy protivník aktivně pracuje s daty, které si mezi sebou mění komunikující strany, je funkčním článkem komunikačního protokolu a dělá činnost, kterou nemůže provést pasivním způsobem, např. po zaznamenání odposlechnuté komunikace. Takovému útoku se říká man-in-the-middle attack a bude o něm řeč v dalších kapitolách.
Útoky aktivní - na komunikaci
prosinec 2003
část 5, díl 2, kap. 1, str. 14 díl 2, Kryptografie
prosinec 2003
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 2, str. 1 díl 2, Kryptografie
5/2.2 SYMETRICKÁ KRYPTOGRAFIE
Pojem symetrie značí podobnost, vlastně docela přesně souměrnost akcí, prováděných na protějších stranách při šifrování a dešifrování. Jelikož A provádí operace, ke kterým může lehce nalézt inverzní, stačí, aby B měl stejné informace. Tedy vedle algoritmu „parametr“ celého systému - šifrovací klíč. Symetrické šifry šifrují a dešifrují na základě shodných informací. Není důležité, zda chceme provést operaci „tam či zpět“ - klíč buď mám, nebo nemám. O
prosinec 2003
část 5, díl 2, kap. 2, str. 2
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
Jak je vidět z obrázku, stojíme před světem „černých“ krabiček, s mnoha možnostmi, jak vstup přeměnit na výstup. Tato kapitola poskytne základní přehled metod, které se při jejich práci, tj. k výstavbě symetricky myšlené bezpečnosti, používají.
prosinec 2003
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 2.1, str. 1 díl 2, Kryptografie
5/2.2.1 BLOKOVÉ ŠIFRY
Třída symetrických šifer, které bývají souhrnně označovány jako blokové, v sobě zahrnuje většinu dnes v praxi používaných algoritmů. „Poznávací“ vlastnost těchto algoritmů vyplývá již z názvu. Nazývají se tak proto, že pracují po částech s bloky dat dané délky, na kterém provádějí šifrovací a dešifrovací operace. Všechny takové algoritmy tak mají charakteristickou vlastnost délky vstupu, kterou umějí šifrovat či dešifrovat v jednom kole (liší se tím od šifer tzv. proudových, které naopak operují s jednotlivými bity, jak na vstupu přicházejí). Studium algoritmů na neomezeně dlouhých datech jsme tak zredukovali na konkrétní transformaci s jasně ohraničeným vstupem a výstupem, kterou podrobíme dalšímu výzkumu. V následujících tématech se povídání týká jí a přechod k algoritmu pracujícímu na celém otevřeném/šifrovaném textu máme prozatím vyřešený. prosinec 2003
část 5, díl 2, kap. 2.1, str. 2
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
Feistelovy šifry
Velké množství z používaných symetrických algoritmů jsou tzv. Feistelovy šifry. Idea, kterou mají společnou, pochází ze začátku sedmdesátých let minulého století. Patří mezi základní prostředky k navrhování blokových šifer, resp. jejich konkrétních funkcí, pracujících na blocích. Nápad spočívá v následujícím jednoduchém principu. Blok dat délky n rozdělíme na levou (L) a pravou (R) polovinu (n sudé) a po několik kol (zde se spíše používá termínu rund) se vždy jejich následující stav vypočítá pomocí vzorce: L[i] = R[i-1] R[i] = L[i-1] xor f(R[i-1], K[i]), kde f je nějaká funkce a K[i] jsou části klíče K. Tedy, v každém i-tém kroku počítání výstupního bloku se do levé části přesune minulé pravá a do pravé XOR minulé levé a výstupu nějaké funkce f. Přitom f na vstupu bere minulou část pravou a nějaká i-tý díl klíče K.
O
prosinec 2003
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 2.1, str. 3 díl 2, Kryptografie
Každý jeden běh této výměny a počítání f nazýváme rundou. Jelikož jde o principiální koncept, je počet rund důležitým parametrem algoritmu (algoritmy, u kterých se jedna operace opakuje nad stejnými daty vícekrát, nazýváme také iterační). Jelikož délka jednotlivých K[i] násobena počtem rund nemusí dávat délku K (f může požadovat delší vstup), musíme si v některých algoritmech K[i] připravit, nejčastěji před samotným během algoritmu. Mimoto jednotlivé K[i] se nazývají rundovní klíče. Proces výpočtu K[i] se anglicky nazývá key scheduling, česky prostě příprava rundovních klíčů. Tento princip najdete skutečně u mnoha šifer. Co je na popsaném algoritmu tak zajímavého? Především je celý reverzibilní nezávisle na funkci f, a proto je implementace dešifrování téměř shodná s šifrováním. Skutečně, znám-li předchozí vstup f, další xorování výstupem f provede inverzí operace: R[i] = L[i-1] xor f(R[i-1], K[i]) xor f(R[i-1], K[i]) = L[i-1] což je inverze k prvnímu definovanému přiřazení. Běh několika rund Feistelovy šifry je dobře vidět na obrázku.
prosinec 2003
část 5, díl 2, kap. 2.1, str. 4
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
O
Získané vlastnosti představují obrovskou výhodu, protože celou třídu algoritmu opět redukují, a to na studium funkce f. Dále díky reverzibilitě není nutné programovat či implementovat do hardwaru odlišný algoritmus pro šifrování a dešifrování. A znovu opakuji, že tyto pozitiva nejsou podmíněna tím, že by f musela být prostá. Počítání inverze k zašifrovanému prosinec 2003
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 2.1, str. 5 díl 2, Kryptografie
textu nijak nesouvisí s počítáním inverzní funkce f-1. Nutno dodat, že v praxi je třeba provést k docílení úplné shodnosti šifrování a dešifrování před, resp. po každém běhu ještě prohození levé a pravé strany otevřeného/šifrovaného textu. Další technikou, která je při návrzích často používaná, je mapování n na m bitů. Přestože n a m bývají často stejné, mohou se délky různých výstupů z toho či onoho lišit, a proto je nutné provést nějakou transformaci. V tomto případě mluvíme nikoliv o transformaci algoritmem, ale o systému přiřazování hodnot výčtem, tj. susbtituci. Odtud písmenko „S“ v názvu. Slovo výčet jsem uvedl záměrně, abych vyzdvihl nestrojovost postupu - v S-boxu je prostě napsáno, jaká hodnota odpovídá jaké a naopak. Můžeme si představit tabulku o n/2 x n/2 buňkách, kde v každé je napsáno číslo délky m bitů. Je-li x vstup, najdeme výstup v řádku s pořadím reprezentovaným prvními n/2 bity a ve sloupci reprezentovaným druhými n/2 bity čísla x.
S-boxy, permutace, expanze
Cílem s-boxů je především větší komplexnost a nelinearita šifry. Ta zaručuje větší rozdmýchání bitů klíče/dat a větší odolnost vůči analýze. Díky de facto mechanickému převodu „vyhledáním“ hodnoty (jako ve slovníku) je také docíleno snížení informační hodnoty, kterou nese výstup o vstupu. Další metodou míchání dat může být zaručeno pomocí různých technik expanzí (zvětšování délky, kdy se vzniklá místa nějakým způsobem dopočítají) a permutací (změna pořadí). Jelikož jde o lineární operace (algoritmické, lehce inverzní), nejsou samy o sobě garantem bezpečnosti.
prosinec 2003
část 5, díl 2, kap. 2.1, str. 6 díl 2, Kryptografie
prosinec 2003
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 2.2, str. 1 díl 2, Kryptografie
5/2.2.2 BLOKOVÉ ŠIFRY - OPERAČNÍ MÓDY
Vraťme se nyní zpět od funkcí pracujících na blocích či v rundách Feistelových schémat k problematice bloků jako takových. Podle toho, jak jsou jednotlivé po sobě jdoucí vstupy a výstupy při šifrování provázány, můžeme rozlišit několik pracovních módů, ve kterých jsou schopny operovat. Nejjednodušší, ale bezpochyby také nejméně bezpečný mód se nazývá ECB, Electronic Codebook. Anglické slovo codebook vyjadřuje podobnost s takzvanými kódovými knihami, což byl prostředek používaný pro šifrování a dešifrování v minulosti. Princip takovéto knihy neměl daleko ke slovníku - jakákoliv daná část otevřeného textu měla jednoznačně korespondující část textu šifrovaného a „překlad“ mezi nimi zajišťovala právě kódová kniha. Skutečně, mód ECB nepředpokládá žádný vztah mezi jednotlivými bloky otevřeného či šifrovaného textu. Výstup, který pro jeprosinec 2003
část 5, díl 2, kap. 2.2, str. 2
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
den konkrétní blok algoritmus spočítá, tak nezávisí na čemkoliv jiném, mimo dat v něm. O
Rizika, která takovýto přístup představuje, jsou, jak je po delším zkoumání vidět, značná. Z jakékoliv obdržené komunikace máme okamžitě jasnou informaci o shodných částech otevřeného textu - z definice módu musí být totiž ekvivalentní i příslušné části textu šifrovaného. Dále, jelikož jsou bloky zpracovávány nezávisle na sobě, zde může hrozit případná neoprávněná manipulace s daty. Přijímající strana totiž za takovýchto podmínek nedokáže ověřit, zda pořadí bloků v obdržené zprávě skutečně odpovídá originálu, protože pokud by byly některé zaměněny tak, aby výsledek dával stále smysl, nelze z principu nic poznat. Každý blok „je“ ve zprávě sám za sebe. Představme si například bankovní příkaz, jehož přenos je zabezpečen nějakou blokovou šifrou operující v módu ECB. Byli bychom velmi neradi, kdyby útočník vyměnil například zdrojový a cílový účet atd. Tyto a další problémy, které se při aplikaci blokových šifrovacích schémat objevují, se nejčastěji řeší různými druhy zřetězení. Výstup z jednoho kola běhu šifrovacího algoritmu tak slouží jako druhý vstup do kola dalšího (jedno kolo zde označujeme „odbavení“ jednoho bloku dat, nezaměňovat s rundami při počítání jednoho bloku či s funkcí f ve Feistelově schématu). Různé módy se liší podle toho, na jaké místo schéprosinec 2003
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 2.2, str. 3 díl 2, Kryptografie
matu jsou jaké informace z minulého kola přidávány. Provázání přitom samozřejmě musí být postaveno tak, aby dešifrování nečinilo žádné nadměrné obtíže. Ciper Block Chaining (CBC), v překladu přesně znamená zřetězení šifrového textu. Před vlastním šifrováním se do otevřeného bloku přidá informace z minulého zašifrovaného bloku, tj. z výstupu algoritmu. Jelikož dva identické bloky na různých místech otevřeného textu mají různé předchůdce ve smyslu „všechny bloky, nacházející se před“, není možné, aby do vlastního šifrovacího algoritmu proudila dvakrát stejná data. Míchání výstupu s následujícím vstupem se děje za použití operace XOR, o které zde byla již několikrát řeč. O
Důležitým ukazatelem, při studiu různých módů, je také míra destrukce zprávy při chybně přeneseném či úplně chybějícím bloku. Při použití primitivního módu ECB se zmiňované nevýhody odrazí v menší propagaci chyby: při špatném přenosu jednoho bloku (či jen některého jeho bitu!) jej nejsme schopni dešifrovat. Zřetězení a závislost jednotlivých výstupů a vstupů na sobě napovídá horší situaci. Jak je ale vidět, situace prosinec 2003
část 5, díl 2, kap. 2.2, str. 4
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
není nikterak katastrofální. Vžijme se do situace příjemce zprávy a minulý obrázek (ukazoval postup při šifrování) si otočme vzhůru nohama: O
Vzhledem k tomu, že jsme při šifrování do dalšího bloku jako druhý vstup používali až konečný výstup z bloku minulého, stačí nám teď provést po dešifrování stejnou operaci s blokem šifrovaného textu. Tedy: výpadek jednoho bloku způsobí faktické nedoručení ještě jednoho následujícího. To upřímně řečeno není zase taková ztráta, můžeme skoro říci „jen jednoho následujícího“. Říkám to proto, že kdybychom jako druhý vstup při šifrování brali hodnotu minulého XORu, dosáhli bychom sice obdobného výsledku zřetězení, nicméně jakákoliv chyba v přenosovém kanále by znamenala totální znehodnocení zbytku zprávy. Co se přimíchá do prvního bloku otevřeného textu, je samozřejmě otázka na místě. Náhodný řetězec dat, který má stejnou velikost jako bloky používané v konkrétním algoritmu, se nazývá inicializační vektor a v praktické realizaci se přikládá k posílané zprávě. Vzhledem k tomu, že nemá žádný bezpečnostní význam ve smyslu dešifrování zprávy jako takové, může být bez problémů přenášen v otevřené podobě.
prosinec 2003
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 2.2, str. 5 díl 2, Kryptografie
Další možností, jak logicky propojit jednotlivé bloky mezi sebou, jsou dva tzv. feedback módy, konkrétně Output-feedback a Ciphertext-feedback módy.
Feedback módy
První ze jmenovaných dvou funguje na principu vytváření posloupnosti bloků dat nezávisle na blocích otevřeného textu, přičemž tyto dvě skupiny dat jsou postupně blok po bloku na sebe naxorovány. Tento postup je velmi zajímavý tím, že vlastní šifrovací algoritmus s otevřeným textem vůbec nepracuje: v prvním kole se zašifruje inicializační vektor (IV) a v každém dalším se místo něj vezme výstup z kola předchozího. Někomu možná chod systému objasní spíše následující: E (B, K) je šifrovací funkce, beroucí na svém vstupu klíč a blok dat délky n a vracející na výstupu opět blok délky n. Po několika kolech chodu šifrovacího algoritmu v módu OFB budeme mít k dispozici posloupnost E(IV,K), E(E(IV,K), K), E(E(E(IV,K),K),K) atd. Konkrétní hodnoty takovéhoto řetězce kompletně závisí na inicializačním vektoru IV, algoritmu dané funkce F a klíči K. Jelikož jsou dvě první veličiny obecně veřejné, není, jednoduše přiblíženo, rozdíl mezi (1) vlivem šifrovacího klíče na výsledný šifrovaný text např. v módu ECB a (2) (ne)predikovatelnosti hodnot obdržené posloupnosti bez kompletní znalosti K. Proto vezmeme-li po řadě obdržené hodnoty E(IV,K), E(E(IV,K),K), E(E(E(IV,K),K),K)... a naxorujeme je opět popořadě na bloky otevřeného textu, máme stejně bezpečný kryptosystém. OFB vlastně vytváří v závislosti na klíči proud pseudonáhodných dat. OFB má mimo jiné ihned patrnou výhodu v oddělení práce s textem od chodu „šifrovacího stroje“. Jak je vidět, celou posloupnost si můžeme vygenerovat předem, dokonce bez znalosti budoucího otevřeného prosinec 2003
část 5, díl 2, kap. 2.2, str. 6
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
textu. To může mít například radikální vliv na rychlost běhu. Říkám může, protože v tomto případě to není s rychlostí tak jednoduché. Zrychlení je podmíněno faktem, že máme kam bezpečně (!) předvygenerovanou posloupnost uložit, navíc ještě v dostatečně velké délce. Požadavek na bezpečnost je pochopitelně elementární. To ale nejde obecně zajistit a v teoretické rovině to nemůžeme předpokládat. Další výhoda je v nulové distribuci chyby. Kolik špatných bitů přijmu, tolik jich také ve výsledku nepřečtu. To je zatím nejlepší výsledek, který jsme obdrželi vzhledem k použití komplexních šifrovacích funkcí v ostatních módech jsme vždy ztratili minimálně jeden celý blok dat. Můžeme říci, že pro kanály s vysokým procentem poruchovosti při přenosu může být OFB výhodnější variantou. Ale jsou i nevýhody. Tak například jednoduchost použité operace XOR v sobě skrývá potencionální nebezpečí, pokud útočník v podobě třetí strany otevřený text zná. V takovémto případě totiž může změnit přenášená data tak, že adresát, kterému jsou určena, dešifruje cokoliv, nač si útočník vzpomene. Skutečně, jeli M otevřený text, E posloupnost generovaná šifrovací funkcí, potom X = M xor E je zpráva přenášená v šifrovaném tvaru. Opětovným naxorováním M na X máme (M xor E) xor M = E, a chce-li někdo podvrhnout přenos, stačí místo přenášených dat odvysílat E xor M’, kde M’ je jeho (útočníkova) zpráva v otevřeném tvaru. A nakonec, jelikož se při OFB xoruje bit po bitu, není třeba originální zprávu nikterak zarovnávat na násobek délky bloku, což bylo vždy nutné u předchozích módů. Mód Ciphertext-feedback, na rozdíl od minule popsaprosinec 2003
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 2.2, str. 7 díl 2, Kryptografie
ného, bere v každém kole jako vstup minulý výstup, ovšem naxorovaný s blokem otevřeného textu. Přestože se ten tak do vlastního algoritmu také nedostane, není možné si posloupnost pro xorování vytvořit předem. Další potencionálně negativní vlastnost představuje fakt, že při xorování se mohou vytvořit dva stejné bloky šifrovaného textu - tedy oba následující běhy šifrovací funkce budou mít stejný vstup, což může znamenat potencionální únik informací. Navíc je v tomto módu vysloveně požadována unikátnost inicializačního vektoru.
prosinec 2003
část 5, díl 2, kap. 2.2, str. 8 díl 2, Kryptografie
prosinec 2003
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 2.3, str. 1 díl 2, Kryptografie
5/2.2.3 PROUDOVÉ ŠIFRY A LINEAR FEEDBACK SHIFT REGISTER
Proudové šifry pracují podle názvu s otevřeným textem jako s proudem bitů. Jejich rychlost zpracování vstupu je podstatně rychlejší ve srovnání s šiframi blokovými. Při své činnosti vytvářejí k proudu otevřeného textu jakýsi „klíčový proud“, keystream, který se poté bit po bitu xoruje se vstupem tak, aby se na výstupu opět generoval bit po bitu šifrovaný text. Zásadní vliv na tvorbu keystreamu má samozřejmě, mimo použitého algoritmu, šifrovací klíč. Jak algoritmus běží, mění se stavy interních proměnných a v závislosti na nich se generují bity pro následné xorování. Stejně tak jako u některých módů blokových šifer je tak činnost algoritmu nezávislá na otevřeném či šifrovaném textu.
Proudové šifry
Je vidět jistá souvislost mezi proudovými algoritmy a některými módy jejich blokových kolegů. Jak jsem viděli v minulé kapitole, i blokové šifry dokáží v output-feedback módu generovat analogii posloupnosti, kterou zde nazýváme keystream. Ty ji ovšem generují prosinec 2003
část 5, díl 2, kap. 2.3, str. 2
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
po blocích, což pravda ve výsledku na věci tolik nemění. Všechny výhody takovéhoto postupu platí proto i zde, namátkou například možnost vygenerovat si posloupnost pro xorování předem či nulová propagace chyby v přenosu. V souvislosti s proudovými šiframi se často zmiňuje takzvaný one-time pad, neboli jednorázový blok, v této publikaci diskutovaný na jiném místě. Upřímně řečeno, on se pro své velmi obecné vlastnosti zmiňuje opravdu vedle skutečně různých pojmů a dle mého názoru nemá velký smysl se zabývat tím, zda jde z formální definice o šifru typem takovou či jinou. Pro čtenáře asi není problém si one-time pad napasovat na zde uvedený popis proudové šifry, stejně tak jako na nějaké další, hodící se téma. Linear Feedback Shift Register
Nahlédnete-li do tajů konkrétních schémat šifrovacích algoritmů, tj. do toho, co se děje mezi vstupem a výstupem, uvidíte pravděpodobně změť šipek a značek data se budou rozdělovat, míchat, prohazovat, xorovat, posouvat a tak dále. Množství kombinací, které mohou těmito postupy vzniknout, je obrovská řada a vybudování nějaké seriózní a z hloubky jdoucí teorie by při absenci jakéhokoliv řádu v nich bylo velmi obtížné, takřka nemožné. Prakticky od doby, kdy se kryptografie začala vážně zkoumat jako věda, se pozornost matematiků ubírala především k těm strukturám, které se při konstrukci šifer objevovaly nejčastěji. Jsou-li dostatečně obecné, není problém je použít pro širokou škálu úloh a potřeb, na druhou stranu je možné na nich postavit vědu jako takovou, a budeme-li se držet zaběhnutých definic a standardů, můžeme se o funkci takovýchto struktur dovědět velmi mnoho.
prosinec 2003
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 2.3, str. 3 díl 2, Kryptografie
Lineární posuvný registr (Linear Feedback Shift Register, LFSR) jedním z takových matematických aparátů je. Jeho účelem je v závislosti na nějakém počátečním stavu generovat proud bitů. Registr představuje pole (posloupnost) položek o daném počtu n, které v jednom okamžiku nese v každé položce jedno číslo nějakého rozmezí. V každém kroku vygeneruje jeden bit tak, že ho odejme z položky nejvíce vpravo, všechny ostatní hodnoty posune o jednu doprava a obsah položky vlevo spočítá jako xor některých daných ze všech položek. O
Počáteční stav registru bývá obvykle spočítán z hodnot tajného klíče. Praktická implementace není náročná, a to jak hardwarově, tak softwarově. To je nesporná výhoda. Totiž realizace podobných struktur v praxi je podstatné kritérium, které může rozhodnout o jejich dalším osudu. Pro podobně zásadní věci se předpokládá, že najdou praktické uplatnění nejen ve velkých, rychlých a paměťově dobře vybavených počítačích - musí se naopak počítat s nutností běhu i na přesných opacích, tedy pomalé stroje s omezenou paměťovou kapacitou apod. V žádném případě teď nemluvím o nějakých starších PC - řeč je o mobilech, bankomatech, čipových kartách, identifikačních zařízeních atd.
prosinec 2003
část 5, díl 2, kap. 2.3, str. 4
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
Na druhou stranu není jednoduché použití LFSR bezpečné, co se týče predikovatelnosti výstupu. Jelikož jde o strukturu dostatečně obecnou a lehce zadanou, bylo kolem ní vytvořeno mnoho teorie, která pronikla skutečně do hloubky problému a umožnila registry velmi pečlivě ze všech úhlů pohledu analyzovat. Využívají se ale hojně jako stavební kameny pro větší, bezpečnostní systémy. Z těchto „stavebních kamenů“ lze vytvářet například pokročilejší registrové kaskády, kdy výstup z jednoho ovlivňuje chod druhého apod. Pomocí dvou registrů lze například skonstruovat model, kde jeden registr bude říkat (pomocí 0/1), zda výstup z druhého se zahrne do výsledného proudu. Již tuto konstrukci lze použít jako symetrickou proudovou šifru, říká se jí Shringing generator. Vzájemná četnost nul a jedniček má ovšem, bez dalších předpokladů, nestálý poměr, což je samozřejmě nevýhoda.
prosinec 2003
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 2.4, str. 1 díl 2, Kryptografie
5/2.2.4 SKUTEČNĚ NEPROLOMITLENÁ ŠIFRA
Tak zvaný jednorázový blok, neboli one-time pad, vskutku jediný příklad skutečně stoprocentního zabezpečení. Je to jediná možná konstrukce ochrany, jejíž bezpečnost nestojí na faktu, že nemáme dostatečně rychlé procesory nebo, že jsme ještě nepřišli na patřičné nové vzorečky. Zde a jen zde se jedná o bezpečnost principiální. Vtipem této dokonalé ochrany je přestat rozlišovat mezi otevřeným textem a šifrovacím klíčem, pokud možno v žádném slova smyslu. Tedy při vlastních matematických operacích musí mít klíč stejný efekt na výsledný text jako vlastní data, která chceme zašifrovat. Pro jakýkoliv daný řetězec otevřeného textu musí existovat stejně dlouhá posloupnost dat klíče, aby byl výsledkem zašifrování opět jakýkoliv řetězec. A naopak, pro všechny klíče musí existovat taková data, že na výsledku opět dostaneme, nač si vzpomeneme. Výsledek? Pokud každý klíč použijeme jen, ale skutečně prosinec 2003
část 5, díl 2, kap. 2.4, str. 2
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
jen jednou, nelze rozhodnout, zda informaci nese šifrovaný text nebo šifrovací klíč. Systém předpokládá skutečně náhodné generování klíče o stejné délce, jakou má otevřený text. V opačném případě by totiž existovala informace (např. počáteční stav generátoru pseoudonáhodných čísel, délkou kratší než dostatečně dlouhý otevřený text), která by nebyla schopna dosáhnout potřebné variability výsledku. Obdobný efekt má jakékoliv opakování již jednou použitého klíče... Pro příklad si data definujme jako posloupnosti bytů v desítkové soustavě, tedy čísla 0–255. K otevřenému textu, řekněme o 100 bytech, si náhodně vygenerujeme stejně dlouhou posloupnost a výsledek spočítáme jednoduše byte po bytu prostým součtem modulo 256. Je vidět, že každý byte šifrovaného textu sám o sobě neříká vůbec nic, mohl totiž vzniknout sečtením přesně 255 různých dvojic, a proto nic neříká text jako celek. Nepřítel tak má stejnou pravděpodobnost, že při luštění dostane Máchův Máj jako zákon o letošním státním rozpočtu. Informace totiž v šifrovaném textu samotném není. Dle definice by stejně dobře někdo mohl říci, že je obsažena v tom, co jsme nazvali klíčem a druhé straně předali předem, a že jsme jí poté vlastně poslali jenom klíč. Použití každého vygenerovaného klíče jenom jednou není jen tak nějaká hříčka. Jde o to, že s druhým použitým klíčem získáváme pro jednotlivé bajty dat také další rovnici, a to pouze s jednou novou neznámou – druhý otevřený text. Matematická struktura, kde se jednotlivé operace provádějí (u nás množina {0–255} spolu s operací sčítání} je v jistém matematickém slova smyslu „hezká“, nebo, chcete-li raději, „uspořáprosinec 2003
část 5, díl 2, kap. 2.4, str. 3
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
daná“, což nám dává do rukou například nástroj inverzní operace k té, kterou jsme použili při šifrování. Odečteme-li tedy v našem případě oba dva výsledky od sebe (vše opět modul 256), dostaneme: (klic + text1) – (klic + text2) = text1 – text2 otevfien˘ text 1: klíã: ‰ifrovan˘ text 1:
2 8 10
13 33 46
71 1 72
4 0 4
55 5 60
otevfien˘ text 2: klíã: ‰ifrovan˘ text 2:
96 8 4
79 33 12
8 1 9
80 0 80
3 5 8
rozdûl. ‰ifr. textÛ: rozdûl ot. textÛ:
96 96
66 66
37 37
76 76
48 48
O
Pozn.: Pro zjednodu‰ení v‰echny operace probíhají modulo 100.
A katastrofa je na světě, klíč úplně zmizel! Výsledkem je jen rozdíl obou textů, tedy de facto jeden text zašifrovaný druhým. Je patrně jasné, že prostý psaný text (text1, text2) jako klíč splňuje ledacos, jen ne požadavky zavedené při definici systému. Můžeme o něm předem říct mnoho informací, např. častý výskyt mezer, procentuální zastoupení jednotlivých písmen či samotný smysl textu. Všechny tyto údaje ulehčují dešifrování zásadním způsobem a systém je možné v tomto případě považovat za prolomený. Tedy, síla jednorázového bloku spočívá především v distribuci informace na víc stejně dlouhých balíků dat. Dobře zvolená operace nám umožňuje jeden z nich předat předem, aniž ještě víme cokoliv o budoucí tajné zprávě.
prosinec 2003
část 5, díl 2, kap. 2.4, str. 4
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
Hojně se v tomto systému využívá operace xor, a to především pro její reverzibilní charakter, kdy dešifrování probíhá naprosto stejným způsobem jako šifrování. Jen pro větší názornost bylo zvoleno prosté známé sčítání.
prosinec 2003
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 2.5, str. 1 díl 2, Kryptografie
5/2.2.5 DES, STANDARD II - AES, IDEA
DES, Data Encryption Standard, patří k nejznámějším šifrám vůbec. Jeho pestrá historie začala v polovině sedmdesátých let, konkrétně v roce 1974, kdy ho IBM navrhla americkému Národnímu úřadu pro standardizaci (NBS, dnes NIST) jako řešení tehdejší poptávky po symetrické kryptografii. Výsledkem byl standard ANSI X3.93, American National Standard for Data Enctyption Algorithm (DEA). Jedná se o blokovou šifru s 64 bitovou délkou bloku a 65 bitovým klíčem. Funkce šifrování a dešifrování jsou implementovány Feistelovým systémem s 60 rundami. Přestože se původně počítalo jen s několikaletým využitím, mnoho dobrých vlastností DESu zajistilo daleko větší časové i prostorové rozšíření, než si původní autoři asi představovali. Hrála zde roli jak dobrá možnost implementace hardwarem i softwarem, tak skvělý kryptografický návrh. prosinec 2003
část 5, díl 2, kap. 2.5, str. 2
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
Ani všechna zmíněná pozitiva ovšem nemohla oddálit blížící se konec tohoto algoritmu. Ten byl na dosah, jakmile se hranice délky klíče (56 bitů) jen teoreticky přiblížila možnostem brute-force attacku. Zvyšování výpočetního výkonu je relativně dobře predikovatelná věc, a tak bylo jasné, že algoritmus nemá, alespoň v takovéto podobě, další perspektivu. I dnes ale představuje relativně dobrou ochranu pro náhodné hackery apod., nicméně zde jeho bezpečnost končí. Vládní organizace, kriminální živly, nadnárodní korporace či bohatí jedinci jsou schopni prohledat všechny možné klíče DESu během několika hodin či dní. Varianta, známá jako TripleDES (3DES), je vylepšení těžící z bezpečnosti DESu. Metodou šifrování a dešifrování pomocí tří nezávislých klíčů se docílí celkové délky 168 bitů. Výhoda 3DESu byla především v snadném upgradu hardwaru i softwaru, nebylo třeba cokoliv přeprogramovávat, stačilo použít vícekrát jednu rutinu. TripleDES zkrátka tenkrát představoval tu nejrychlejší a nejlevnější cestu k bezpečnosti. Standardem se ale nestal, přestože byl nasazen mj. v mnoha známých aplikacích. Pravděpodobně proto, že je podstatně pomalejší než jiné, již známé symetrické šifry, které dosahují srovnatelné bezpečnosti. Navíc byla objevena slabina, která kompletně odstraní vliv jednoho ze tří procesů a délka klíčů se tak zredukuje na 112. Standard II - AES
prosinec 2003
V době hrozících útoků na DES NIST vyhlásil soutěž na nový šifrovací algoritmus pro 21. století, Advanced Encryption Standard. Z přibližně dvou desítek bylo vybráno celkem 5 kandidátů, postupujících do druhého kola soutěže: MARS, Serpent, Twofish, RC6, Rijndael. Nutno podotknout, že vybrat šifru pro no-
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 2.5, str. 3 díl 2, Kryptografie
vou digitální éru nebylo vůbec jednoduché. Předně nutno říci, že bezpečnost všech byla skvělá - jsou to vynikající šifry předních uznávaných světových kryptografů. I když vyhrál algoritmus belgických kryptografů Vincenta Rijmena a Joana Deamena, Rijndael, NIST konstatoval, že není důvodu, proč z bezpečnostního hlediska nepoužít jakoukoliv z nich. A co tedy nakonec rozhodovalo? Na takovéto úrovni a pro tak očekávané široké použití hrají často roli některé praktické faktory, především náročnost na implementaci. Rijndael v tomto ohledu dosahuje vynikajících výsledků na široké škále hardwarových zařízení. Dále se pamatuje mj. na rychlost běhu. Šifra IDEA (International Data Encryption Algorithm) je jedním z mezistádií vývoje mezi DES a AES. Operuje na 64bitových blocích, délka klíče 128 bitů. Koncept návrhu vychází z DESu a původně se o ní hovořilo jako o jejím nástupci. Stejně jako její předchůdce je považována za velmi bezpečnou. Stejného srovnání se jí dostává i z hlediska rychlosti, čímž je některými algoritmy překonaná.
IDEA
prosinec 2003
část 5, díl 2, kap. 2.5, str. 4 díl 2, Kryptografie
prosinec 2003
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 2.6, str. 1 díl 2, Kryptografie
5/2.2.6 HASHOVACÍ FUNKCE
Anglické slovo hash, které označuje klíčový pojem této kapitoly, můžeme v literatuře také často nalézt ve své „české“ podobě, vzniklé prostým fonetickým přepisem. V této publikaci se ovšem autor drží původního anglického termínu. Důvodem je fakt, že v odborných kruzích je tento pojem natolik známý, že není třeba vytvářet ekvivalenty, jejichž sémantická příslušnost k češtině je minimálně diskutabilní. Slovo hash, hashing je v širším pojetí výraz pro mleté maso či proces jeho mletí, který není (s nadsázkou) v našem kontextu vůbec od věci. Dalším důvodem je pochopitelně zvyk...
Hash
Hashovací funkce je reprezentována algoritmem, který pro jakkoliv dlouhý vstup M jistým způsobem spočítá výstup o pevné velikosti. Obvykle píšeme H(M) = h. Podle požadavků na vztah mezi vstupem a výstupem mají funkce tohoto charakteru mnoho uplatnění v různých oblastech teoretické informatiky prosinec 2003
část 5, díl 2, kap. 2.6, str. 2
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
(namátkou třeba databáze a zpracování dat). Pro využití v kryptografii, přesněji v kryptografických protokolech, požadujeme vlastnosti speciální a řekněme „jistotou jejich dodržení“ pak také kryptografickou kvalitu takové funkce hodnotíme. Základní požadavky na kryptograficky bezpečnou hashovací funkci jsou: - vstupem může být jakkoliv dlouhá posloupnost znaků (dané abecedy) - výstupem je řetězec o pevně dané délce (pro všechny vstupy stejná) - H(X) dokážeme relativně lehce spočítat pro jakýkoliv vstup X - Při daném h dokážeme jen velmi obtížně najít takové X, aby H(X)=h - Funkce H je „v praxi bezkolizní“, viz výklad. Předposlední požadavek se často nazývá jednocestnost (tj. jednocestné funkce). Říká, že spočítat H-1 je velmi obtížný problém a v praxi téměř nerealizovatelný. Je patrné, že pro třídu vstupů delších, než je daná hodnota délky výstupu, nemůže být funkce H prostá. Tedy určitě musí existovat nějaké dva vstupy M1 a M2 tak, že H(M1) = H(M2) = h, a tuto situaci, resp. její provedení v praxi, označujeme jako kolizi. Bezkolizní můžeme nazvat funkci, u které nebyla (či ještě nebyla?) v praxi žádná kolize nalezena. V teorii se rozlišují takzvané slabě a silně bezkolizní funkce. Slabší varianta předpokládá, že je nespočitatelné Y pro dané (!) X tak, aby H(X) = H(Y). Silně bezkolizní funkcí označujeme ty, pro které je výpočetně neproveditelné najít jakékoliv (!) X a Y, aby zmiňovaná rovnost platila. Rozdíl mezi těmito dvěma situacemi se dá dobře ilustrovat v praxi, představme si prosinec 2003
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 2.6, str. 3 díl 2, Kryptografie
zámky a klíče (tentokrát klasické, kovové). Mohu-li ke každému klíči najít jeho shodný ekvivalent, jsou všechny zámky nabouratelné minimálně jedním člověkem. Vytáhnu-li z hromádky klíčů náhodou dva stejné, tak velké nebezpečí nehrozí, nicméně důkaz horší než absolutní bezpečnost je na světě, tj. „někde to tam je“. Systém, jakým jakkoliv dlouhý vstup postupně ovlivňuje celkový výstup, je, můžeme-li to tak říci, pro mnoho funkcí standardizován. K tomuto účelu se používají takzvané kompresní funkce: výstup mají stejně dlouhý jako hashovací funkce v celku, na vstupu ovšem berou řetězec délky větší. Dokážeme tak vypočítat několik různých částečných hodnot výstupu, jejichž „smrknutím“ do jedné dostaneme výsledek konečný. Věc se často implementuje tak, že kompresní funkce má mimo vstupu, na kterém bere části dat, ještě druhý vstup, ze kterého čerpá výstup kompresní funkce na minulém bloku.
Uvnitř mlýnku
Stejně tak jako hashovací funkce celkově, může i na kompresní funkci docházet ke kolizím. Vztah mezi těmito jevy v obou případech je intenzivně zkoumán a samozřejmě kolize na kompresní funkci ještě neznamená prolomení hashovacího algoritmu celého. Nejsou ojedinělé případy, kdy přes známou kolizi kompresní funkce je hashovací algoritmus tále hojně používán. Používaných funkcí je pochopitelně celá řada. Dvě nejznámější z nich nesou názvy MD5 a SHA1.
Používané funkce
MD5 značí pátou verzi Message Diegest, rodiny funkcí R. L. Rivesta (RSA Laboratories). První verze algoritmu byly publikovány ještě před rokem 1989, prosinec 2003
část 5, díl 2, kap. 2.6, str. 4
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
poslední aktualizovaná verze se datuje rokem 1991. Z jakéhokoliv vstupu spočítá 128bitový výstup. Přestože jisté slabiny byly nalezeny (kolize kompresní funkce), algoritmus jako celek se jeví jako velmi povedený a byl použit skutečně v mnoha praktických implementacích. Kolize algoritmu jako takového samozřejmě nalezena nebyla. SHA1 je opět zkratka, tentokrát znamenající Secure Hash Algorithm. První verze funkce pochází z dílen americké National Security Agency, algoritmus byl poprvé publikován v roce 1995. Číslo 1 značí drobné vylepšení proti původnímu SHA, ve kterém byl objeven drobný bezpečnostní nedostatek. Výstup z funkce má délku 160 bitů a je schopná pojmout jakýkoliv vstup do délky 264 bitů. Patrně se nestane, že by bylo v praxi potřeba hashovat větší množství dat (jedná se o 2 milióny gigabytů dat) a pokud ano, v oné době již patrně budou k dispozici daleko pokročilejší algoritmy. U SHA1 nejsou známé prakticky žádné relevantní slabiny. Vedle „standardního provedení“ ještě existují varianty SHA-256 a SHA-512, které produkují 256bitový, resp. 512bitový výstup. Narozeninový paradox
prosinec 2003
Pro náš obor je klíčový čtvrtý v úvodu uvedený požadavek, resp. čtvrtý s pátým, neboť spolu úzce souvisí. Jak obtížné je pro danou funkci H spočítat inverzi či najít kolizi, je klíčový parametr bezpečnosti. Vzhledem ke zmiňované nejednoznačnosti při vstupu delším než je fixní výstup, je jasné, že jistého výsledku dosáhneme maximálně po prohledání (2h)+1 hodnot, kde h je délka výstupu funkce v bitech. Zmiňované kolize musí být dosaženo, protože jinak by funkce vracela minimálně (2h)+1 hodnot, což se nevejde do |h| bitů. Prohledání všech možností vstupu
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 2.6, str. 5 díl 2, Kryptografie
je tedy maximálně náročná úloha, která ovšem danou funkci „řeší“. Cílem matematiků, kteří algoritmy pro tyto účely navrhují, je se této hranici co nejvíce přiblížit. Paradox či útok, který bývá označován jako narozeninový, aplikuje podobnou matematiku na situaci hledání dvou lidí z celkového počtu n, kteří se narodili ve stejný den v roce. Dá se spočítat, že pravděpodobnost, že mezi n lidmi budou dva takoví lidé s větší než padesátiprocentní jistotou, je relativně malá: n = 23. Z toho tedy plyne jednoduché ponaučení: chceme-li zabránit i méně nebezpečné formě kolize, nestačí délku výstupu dimenzovat na fakt, že pro tuto hodnotu je se současnou technikou nemožné prohledat všechny vstupy (viz závěr minulého odstavce). Neměli bychom vůbec žádnou jistotu, zda nelze touto nejhorší, ale vždy účinnou metodou i se současným vybavením vyvrátit silnou bezkoliznost funkce. Bylo by to dost dobře možné. Podle obdržených matematických výsledků můžeme očekávat kolizi s větší než padesátiprocentní pravděpodobností již po prohledání 2(h/2) možných vstupů, kde h je opět pevná délka výstupu. Musíme ji tedy minimálně zdvojnásobit oproti n, pro které je možnost prohledání úplně všech vstupů „na hraně“. Mnoho příkladů na aplikaci hashovacích funkcí je k nalezení v této knize. Nejčastěji se o nich mluví v souvislosti s digitálními podpisy, ovšem specifikace takovýchto funkcí jsou natolik jasné, přímé a univerzální, že jejich místo je takřka ve všech koutech programování.
prosinec 2003
část 5, díl 2, kap. 2.6, str. 6 díl 2, Kryptografie
prosinec 2003
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 3.1, str. 1 díl 2, Kryptografie
5/2.3 ASYMETRICKÁ KRYPTOGRAFIE 5/2.3.1 PRE-ŘEŠENÍ: DIFFIE-HELLMANŮV ALGORITMUS - USTANOVENÍ TAJNÉHO KLÍČE Je jasné, že symetrické pojetí šifer je, poté, co přijmeme myšlenku tajných klíčů, nikoliv algoritmů, intuitivně lidskému mozku blízké. Po právě řečeném si většina lidí jen obtížně dokáže představit pod pojmem šifra něco opravdu principiálně odlišného „jen tak“. Odhaduji, že problém bude v intuitivním chápání práce nějakého programu jako z principu invertibilní záležitosti: zkuste vymyslet nějakou posloupnost akcí s daty/čísly tak, aby jakékoliv transformace byly prosté (a unikátních vstupů jednoznačně odpovídá a unikátní výstupů) a přesto nalezení inverzního postupu bylo obtížný až neřešitelný problém. Všechny symetrické šifry, se kterými jsme se zde zatím seznámili, vkládaly svou bezpečnost do dobře utajeného hesla, které bylo předem a po bezpečném kanále, dopraveno protější straně, se kterou chceme prosinec 2003
část 5, díl 2, kap. 3.1, str. 2
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
bezpečně komunikovat. Za takovýchto předpokladů již několik let či desítek let existují skutečně spolehlivé a odzkoušené algoritmy, které nedávají útočníkovi při luštění žádnou větší než mizivou výhodu oproti systému vyzkoušení všech možností. Jsou obvykle včetně detailů veřejně známy, také jsou odzkoušeny v praxi a vydržely dlouholetý nápor odborníků ve snaze o prolomení. Plní tedy svou úlohu dobře, tedy bohužel až na vyslovené podmínky a nejen ty. Nutnost výměny šifrovacího klíče představuje především dva problémy. Jednak je zde otázka, jak to udělat bezpečně, jednak jak to udělat vůbec, očekávámeli větší počet navzájem komunikujících stran. Předpokládáme totiž nutnost existence kanálu již zabezpečného a naskýtá se otázka, proč tedy vlastně šifrovat. Na přenos klíče potřebujeme bezpečí tak jako tak, a pokud někdo klíč zachytí či odposlechne, je nám celé šifrování k ničemu. Myslím, že není třeba si cokoliv namlouvat: vlastní zajištění nějakého takovéhoto kanálu je neefektivní, drahé atd. a to nemusíme ani do starších špionážních filmů z časů agentů s kufříkem takřka připevněným k ruce. Druhý problém, ač se tak nemusí zdát, není také lehké vyřešit. Chce-li mezi sebou komunikovat n lidí, bude potřeba celkem 0,5.[(n2)-n] klíčů. Tedy již pro 200 lidí je třeba dohromady vygenerovat a spravovat 19900 unikátních (!) klíčů. A s každým novým účastníkem toto číslo rychle narůstá. Situace je tedy krajně nepohodlná. Pre-řešení: Diffie-Hellmanův algoritmus
prosinec 2003
Problém bezpečné dohody symetrického šifrovacího klíče nám vyřeší algoritmus, který můžeme označit jako jakési předstádium. Nikoliv ve smyslu kvality, nýbrž ve smyslu principu. Metoda, kterou si zde po-
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 3.1, str. 3 díl 2, Kryptografie
píšeme nyní, je ideově starší než myšlenka šifrování ryze symetrického, které bude vysvětleno záhy. Tato metoda totiž šifrování jako takové vůbec neřeší, jejím úkolem je pro začátek pouze zajistit bezpečnou dohodu mezi stranami A a B na klíči symetrickém, který bude následně použit ke komunikaci. Nejedná se proto zatím o asymetrický kryptografický systém. Abychom si dokázali něco podobného představit, již se neobejdeme s přirovnáními a abstrakcemi. Z matematického hlediska používá Diffie-Hellmanův systém jen obměny středoškolských znalostí, a proto se jím zkusme společně prodrat. Odměnou nám bude vskutku pozoruhodný teoretický výsledek. Jelikož všechny proměnné v paměti např. počítače mají z principu omezený rozsah, nejsou elementární matematické operace s nimi uzavřené. Například sčítání: mějme čísla x, y a ptejme se na součet. Obě proměnné mohou nabývat jen hodnot od nuly do nějaké maximální hodnoty, v případě sečtení ale hrozí přetečení této hranice. Počítání s takto „defektní“ a neúplnou strukturou by nebylo efektivní. Můžeme si ale některé operace předefinovat tak, že pokud danou hranici přesáhnou, vezmeme na místo toho zbytek po dělení výsledku rozsahem dané proměnné. Jakýkoliv jeho násobek tak srazíme zpět na nulu, kde se začíná jakoby opět „znovu“. Stejnou „fintu“ můžeme používat pro jakékoliv m, prostě budeme všechny výpočty dělit m a ptát se na zbytek po dělení. Použité m se obvykle označuje jako modul. Pokud m = 10, máme například 6 + 8 = 4 (6 + 8 = 14, zbytek po dělení 10 je 4). 7.10 = 0 (7.10=70, zbytek 0), 33 = 1 (33 = 3.3.3 = 81, zbytek 1). Chceme-li vyznačit počítání s jistým modulem, prosinec 2003
část 5, díl 2, kap. 3.1, str. 4
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
K systému
napíšeme za výpočet obvykle mód m. Jelikož ale při takto definovaném sčítání, násobení atd. platí obdobná pravidla, jaká známe z běžné praxe čísel přirozených, může se poznámka vynechat. Zvláště probílá-li v módum celý výpočet. Protokol má dva veřejné parametry, které mohou používat všichni účastníci. Parametr p je velké prvočíslo, parametr g (generátor) je jakékoliv číslo menší než p tak, že pro všechny x mezi 1 a p-1 včetně existuje takový exponent k, že x = gk mód p. Tedy, jakoukoliv hodnotu v daném rozmezí mohu dostat umocněním generátoru g na nějaký exponent, modulo p. Dvě strany, Alice a Bob se dohodnou na společném klíči pomocí Diffie-Hellmanova protokolu následovně. Alice si zvolí svůj tajný exponent a, stejně tak Bob b. Obě dvě hodnoty musí být menší než p-2. Jejich veřejné klíče pak spočítají umocněním generátoru g na své tajné exponenty, modulo p. Alicin veřejný klíč tak bude ga, Bobův gb, vše opět modulo p. Poté, co si tyto hodnoty vymění, oba lehce spočítají dohodnutý klíč k = ga.b (mod p), prostě umocněním veřejného klíče druhé strany na svůj tajný exponent: (ga)b, resp. (gb)a, což se oboje rovná chtěnému ga.b. Pokud by všechny operace probíhaly s přirozenými čísly a „standardním“ umocňováním, lehce bychom mohli z odposlechutého ga a gb spočítat pomocí logaritmu oba exponenty a následně i celý klíč. V modulární aritmetice (resp. v matematické struktuře, kde je násobení, tj. umocňování, takto definováno) je ovšem výpočet logaritmu obtížný problém, na kterém celý systém defakto stojí. Předpokládá se totiž, že spo. čítat sdílený klíč k = g(a b) ze znalosti veřejných hoda b not g a g je se současnou technikou neřešitelný úkol,
prosinec 2003
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 3.1, str. 5 díl 2, Kryptografie
samozřejmě pokud jsou všechna čísla dostatečně velká. Dá se ukázat, že je tato úloha s výpočtem „modulárního“ (tzv. diskrétního) logaritmu za jistých podmínek ekvivalentní. Mimochodem se dá lehce nahlédnout, že není těžké systém zobecnit na více komunikujících stran, společný klíč tak bude např. k = ga.b.c.
prosinec 2003
část 5, díl 2, kap. 3.1, str. 6 díl 2, Kryptografie
prosinec 2003
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 3.2, str. 1 díl 2, Kryptografie
5/2.3.2 PRINCIP DVOU KLÍČŮ
Na otázku doby vzniku skutečně revoluční myšlenky tajného a veřejného klíče, která stála u zrodu asymetrické kryptografie, není dnes odpověď přesně známa. Je tomu tak z důvodu nejrůznějších vládních či armádních organizací, silných hráčů na poli kryptografie v druhé polovině minulého století. V devadesátých letech prosákly na veřejnost kusé informace o znalosti principu dvou klíčů americkou NSA již na počátku sedmdesátých let, čímž se posunula odhadovaná doba zhruba o půl desetiletí zpět.
Jak asymetricky
Idea je v použití zvláštních operací při šifrování a dešifrování tak, že pro každou činnost budou potřeba jiné informace. Jeden blok dat, tzv. veřejný klíč, bude k dispozici všem stranám zainteresovaným v systému a bude sloužit jen k šifrování. K dešifrování bude notné použít data jiná, tzv. tajný nebo privátní klíč, kterou bude jeho vlastník přísně střežit.
prosinec 2003
část 5, díl 2, kap. 3.2, str. 2
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
Že konkrétní matematická realizace algoritmu s takovýmito požadavky je pro běžného smrtelníka těžký oříšek, není třeba dodávat. Prakticky všechny operace, které jsme až dosud používali, měly totiž charakter opačný: když jsem něco provedl, tak bylo jednoznačně jasné, co musím udělat, abych to vrátil opět zpět. Je třeba systém postavit na nemožnosti reverzní operace k šifrování, tedy musíme pracovat s myšlenkou, že něco NEJDE, a přitom to podložit seriózní matematikou. O
Pre-řešení: Diffie-Hellmanův algoritmus
prosinec 2003
Veřejný klíč můžeme přirovnat k jednocestné funkci, ovšem se zadními vrátky. Tedy k funkci, ke které je velmi obtížné spočítat funkci inverzní, pokud ovšem nemám informaci o zadních vrátkách, kterou představuje tajný klíč.
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 3.3, str. 1 díl 2, Kryptografie
5/2.3.3 MAN IN THE MIDDLE ATTACK A PKI
Jak právě zavedený systém dvou klíčů, tak výše zmiňované Diffie-Hellmanovo schéma řeší jednou provždy problém pasivního útočníka, který poslouchá dění na komunikačním kanále. Ani jedna z metod mu v jeho situaci nedává šanci dešifrovat dále posílaná data, přestože má přístup ke všemu, co bylo po kanálu předem posláno.
Hash
Další třída problémů ovšem nastává ve chvíli, kdy nepřítel začne mít aktivní roli. Tj. pokud může komunikaci mezi A a B jakýmkoliv způsobem měnit. Může totiž každé straně simulovat druhou, čímž všechna komunikace bude přecházet přes něj. Nemají-li A a B o sobě předem žádnou informaci, nemohou podvod poznat. Třeba Diffie-Hellman. Stejně tak jako většina ostatních „holých“ systémů, které řeší problém bezpečného dohodnutí klíče či jsou přímo asymetrickými kryptoprosinec 2003
část 5, díl 2, kap. 3.3, str. 2
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
systémy, ani tento není odolný proti man-in-the middle útoku. Vloží-li se do systému nepřítel E, bude Alice věřit klíči k1 = g(a.e) a Bob klíči k2 = g(e.b). Nemá-li A o b žádnou informaci, nemůže nikterak ověřit původ obdržených dat. Jelikož jí B posílá data, která zatím nezná, nedokáže odlišit ta jeho od těch útočníkových. Z tohoto důvodu takto jednoduše navržené systémy, zprostředkovávající bezpečnou výměnu klíče, principu nemohou vyřešit problém aktivního útočníka, muže uprostřed (man in the middle), který má nad kanálem úplnou moc. Tento problém je principiálně neřešitelný, probíhá-li úvodní dohadování či výměna veřejných klíčů po nezabezpečeném kanále. Použití asymetrické šifry, do které se vložil útočník uprostřed, věrně popisuje obrázek. O
Alice obdržela veřejný klíč, domněle od Boba, ve skutečnosti od Evy. Stejný klíč obdržel Bob, v domnění, že je od Alice. Eva má veřejné klíče obou. Tajná zpráva, kterou nyní Alice zašifruje ve skutečnosti Eviným klíčem, bude u Evy dešifrována, přečtena (upravena), zašifrována veřejným klíčem Boba a odeslána. Ani jedna strana nic netuší. prosinec 2003
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 3.3, str. 3 díl 2, Kryptografie
Nemožnost úspěšného řešení s danými prostředky (Alice, Bob) je principiální. Protokol je nutné obohatit o přenos nějaké další informace mezi A a B, děje se tak prostřednictvím nezávislé třetí strany. Man-in-the-middle attack a s ním spojený problém důvěryhodnosti klíče nemá bez použití institutu důvěryhodné třetí strany žádné uspokojivé principiální řešení. Zkrátka, symetrická kryptografie vyřešila problém dohody na klíči, co se týče odposlechu. Ale nevyřešila bezpečnost klíčů jako takových, tj. toho, co se děje před vlastní komunikací. Pořizování veřejných klíčů, jejich distribuci, obnovování, odvolávání, důvěryhodnost a především spojení s reálným fyzickým subjektem (toho využívá Eva při m-i-t-m útoku!). Řeší totiž jenom bezpečnost informací jako takových, tj. z hlediska soukromí, ale nijak se nezabývá důvěryhodností komunikujících stran. Můžeme označit komunikaci s někým, kdo se vydává za náš protějšek, za bezpečnou, když o ní víme jen to, že je soukromá? Pochopitelně že ne.
PKI
Bez nějakého systému ověřování identity je veřejný klíč jen bezcenné číslo, pomocí kterého po nezabezpečeném kanálu tečou důvěrné informace v tisíckrát hůře čitelné, ale stále de facto otevřené podobě, za použití složitých protokolů, výpočtů a algoritmů. Za tímto účelem vznikají k potvrzování identity vlastníků sítě autorit, tak aby koncový uživatel k získání maximální možné důvěry musel vynaložit pokud možno co nejmenší úsilí. Dokument, který digitálním podpisem veřejný klíč spojuje s nějakou fyzickou identitou, nazýváme certifikát. Vydavatel certifikátu, tj. subjekt, kterým je certifikát podepsán, tak veřejně tvrdí: ověřil jsem si, že tento veřejný klíč patří tomu, prosinec 2003
část 5, díl 2, kap. 3.3, str. 4
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
kdo se identifikuje tak a tak. Je jenom otázkou konkrétní praktické situace, jaké atributy jsou o dané osobě, společnosti či organizaci v certifikátu uvedeny.
prosinec 2003
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 3.4, str. 1 díl 2, Kryptografie
5/2.3.4 ŠIRŠÍ NASAZENÍ - SJEDNOCENÍ KONCEPCÍ
Tak jak se v minulém století začala symetrické kryptografii dostávat praktická realizace v programech, vznikaly sítě vzájemně více či méně kompatibilních systémů veřejných klíčů. Různí tvůrci softwaru si pod pojmem certifikát představovali odlišné struktury nesoucí různý obsah. Mnoho sítí bylo navrženo na míru té či jiné představě o fungování asymetrické kryptografie v praxi, nicméně žádná z nich nepokrývala celou škálu požadavků, které na věc kladla praxe. A tak některé programy i přes značnou kryptografickou pokročilost nestačily na např. legislativní nároky svého systému správy sítě veřejných klíčů. Jako výsledek standardizace můžeme dnes považovat RFC 3280: „Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile“, které navazuje na stejnojmenné již překonané RFC 2459.
prosinec 2003
část 5, díl 2, kap. 3.4, str. 2
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
Systému veřejných klíčů, certifikátů k nim a subjektů, které certifikáty vydávají, říkáme infrastruktura veřejných klíčů, Public Key Infrastructure, PKI. Obšírněji, tento pojem zahrnuje nejen technické aspekty věci, ale dále znalosti, vzdělanost uživatelů, logistiku atd. Systémy PKI se dočkaly vlastního standardizování tak, aby řešily co nejvíce situací kolem správy, distribuce a používání klíčů asymetrické kryptografie. Bohužel, míra náročnosti jejich implementace mnohdy znamená více starostí a nákladů než užitku. Není tak ojedinělý názor, že PKI je v pravém slova smyslu svou detailností velkým neohrabaným kolosem, vyžadující lidské i finanční náklady a řešícím věci, které se de facto takto vůbec řešit nemusí či se to nevyplatí. Zvláště pro menší subjekty není nutné vyhovět všem normám standardizovaného gigantu a mnohdy lepší je poohlédnout se po „volnější implementaci“ struktury veřejných klíčů, ušité namíru konkrétním potřebám. Pro certifikování klíče je třeba projít procedurami žádosti a vydávání. Jak to bude dlouho trvat, co vás to bude stát a co k tomu potřebujete, závisí především na typu certifikátu, který požadujete. To jest na způsobu jeho použití, existují osobní (personal) certifikáty, certifikáty pro internetové servery, certifikáty pro klíče podepisující software (code-signing certificates) atd. Vedle způsobu použití certifikátu se také rozlišuje několik účelů použití klíče. Ty mají standardizované názvy a vyjadřují, k ověřování čeho v PKI bude použit certifikovaný klíč. Může jít o klíč k ověřování autentizace uživatelů, k šifrování klíčů (viz kombinovaný šifrovací systém v kapitole o bezpečnostních protokolech), klíč k vyměňování symetrických klíčů apod. Mnoho lidí překvapí, že mohou existovat certifikáty, které neslouží k „digitálnímu podpisu“ takovému, jak je např. prezentováno v médiích. prosinec 2003
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 3.4, str. 3 díl 2, Kryptografie
Také je třeba ještě vzít v potaz příslušné legislativní normy, tj. v obecném případě nároky, subjektu, která vaši certifikaci vyžaduje. A tak zatímco jednoduchý certifikát, který v sobě zahrnuje ověření e-mailu a nese anonymní hlavní jmenovku, můžete mít do pěti minut, dostát požadavkům pro certifikát opravňující ke komunikaci s našimi úřady je věc podstatně komplikovanější. Čím důvěrnější má váš certifikát být, tím více prostředků stojí. V praxi není neobvyklé, že agentury vydávají certifikáty různých „bezpečnostních tříd“ (Class 1, 2, 3...), lišících se právě mírou ověření žadatelem udávané identity. Jedna jediná ani globální společnost nemůže zajistit ověřování identit ve všech státech světa. Proto koncept počítá s institutem lokálních certifikačních agentur, působících na jednom místě. Aby byla síť na správu a ověřování co nejjednodušší (tj. měla co nejméně „vrcholů“), jsou klíče certifikovány většími subjekty či navzájem mezi sebou (bridge-ca) Cesta ke konkrétnímu klíči tak může vést přes několik podpisů a při jeho ověřování se musí ověřit platnost všech. Je-li tomu tak a na vrcholu je podepsán subjekt, kterému bezmezně věřím, mohu věřit i klíči na spodním konci řetězu. Čím výše postavená autorita, tím je její tajný klíč důležitější a v každém případě se jedná o nejstřeženější věc daného subjektu vydávajícího certifikáty. Proto mají „hlavní“ CA extrémní nároky na další autority, jejichž klíče podepisují. Pokud by některá lokální autorita certifikovala klíč s nepravou identifikací, stín by padl i na subjekt, který certifikoval tuto agenturu. V různých systémech PKI jsme se mohli setkat s tištěným vydáním klíčů nejdůležitějších subjektů.
prosinec 2003
část 5, díl 2, kap. 3.4, str. 4
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
Co se týče pojmů certifikát a klíč, v literatuře a v různých softwarových implementacích se často hovoří například o „šifrování certifikátem“. Nebo jsme upozorňováni, že pro elektronické podepisování musíme vlastnit certifikát. Já osobně sám za sebe jsem toho názoru, že podobný výklad je matoucí, protože uživatel tak získá zkreslené představy o funkci asymetrické kryptografie. Těžko pak může pochopit jakékoliv další funkce systému, pokud žije v představě, že se šifruje certifikátem. Certifikát dle mého názoru není základním stavebním kamenem teorie - ta může fungovat i bez něho (například dostanu-li klíč od kolegy osobně, není certifikát potřeba). Právě naopak, jedná se o důsledek praxe. K zamyšlení je fakt, že vedle extrémních nároků na certifikační autority daných legislativou, jsou nároky na informovanost uživatele mizivé. Troufám si tvrdit, že míra potencionální nebezpečnosti obou faktorů je minimálně vyrovnaná. Používané standardy, jimiž se řídí vydávání certifikátů, popisují datové položky, které musí certifikát nést. Položky a jejich atributy mají unikátní názvy, aby se programy, které s nimi pracují, mohly domluvit kdekoliv na světě. Nejdůležitější roli hrají samozřejmě definice identifikace vydavatele a uživatele. Identifikace vydavatele (položka issuer) musí být jedinečná v rámci všech certifikačních autorit, identifikace uživatele (položka subject - předmět certifikátu) musí být jedinečná v rámci všech certifikátů vydaných danou agenturou. V případě shody je pro rozlišení nutné použít dalšího atributu položky. Jelikož účely vydávání certifikátů jsou velmi rozmanité, nelze nikdy předem odhadnout data, která bude certifikát nést. Proto standardy definují celou řadu rozšiřujících položek - ty nesou data, které se do základních struktur nevešly. prosinec 2003
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 3.4, str. 5 díl 2, Kryptografie
Situaci, kdy se privátní klíč dostane do rukou neoprávněné osoby, nelze nikdy vyloučit na sto procent. Když už se tak stane, je třeba co nejrychleji zabránit dalším dopadům. Tajné zprávy, které má útočník k dispozici, nelze už nijak zachránit. Daleko větší katastrofu by ale znamenalo zneužití elektronického podpisu. Paradoxně se stoupající důvěrou v certifikační autority a používanou PKI jako celek toto nebezpečí vzrůstá, protože čím je systém bezpečnější, tím je do něho vkládána větší důvěra a případný průlom způsobí větší škody.
Certificate Revocation List
Mimo jiné i pro tento účel certifikační autority spravují seznam zneplatněných certifikátů - Certifacate Revocation List. Kompromituje-li se něčí soukromý klíč, začíná hra o čas - původnímu majiteli jde o to se na CRL dostat co nejrychleji, pokud možno dříve než útočník vytvoří první falešný podpis. Různé autority nabízejí různé způsoby „dostání“ certifikátu na CRL. Asi nejjednodušší metodou je žádost o zneplatnění podepsat certifikovaným klíčem a odeslat, některé autority přidělují klientům pro tento účel speciální jednorázové heslo. To se hodí mimo jiné v případě, že klíč není certifikován pro elektronický podpis, viz výše. V době vyřizování žádostí o certifikát je dobré se seznámit se zásadami, které CA pro tento účel má. Jiná možnost, jak se dostat na CRL, není tak dramatická: pokud je certifikát vydáván na dobu určitou, zahrne se do neplatných certifikátů jednoduše po jejím vypršení. Přestože certifikát jako takový může vydat z principu jakýkoliv majitel páru klíčů, stejně tak jako se každý může rozhodnout o míře důvěry ve vydavatele certi-
Ideové vlastnosti PKI
prosinec 2003
část 5, díl 2, kap. 3.4, str. 6
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
fikátu, můžeme nastínit dvě hlavní myšlenky, kudy se může certifikování v praxi ubírat. - metoda hierarchické adresářové struktury, - metoda individuálních poukazů („referrals“). Přestože obě metody staví principiálně na stejném základu, rozdílný je především princip posuzování důvěryhodnosti. Jde o věc konceptu a náhledu na certifikát jako takový. V obou případech se v komunikaci objevují tři základní typy účastníků. Jsou to: • vydavatel - třetí strana, jejímu podpisu na certifikátu se obecně důvěřuje, • systém - subjekt, který vyžaduje autorizaci svých klientů a dá na „slovo“ vydavatele, • klient - subjekt, který musí ujistit pomocí vydavatele systém o své fyzické identitě. Metoda hierarchické struktury staví na velkých důvěryhodných vydavatelích. Ti, mají-li dostatečné zázemí, jsou stabilními garanty důvěryhodnosti, neboť z ní, resp. z důvěryhodnosti jejich podpisu, profitují. Spravují databáze svých klientů, starají se o ověřování atributů fyzické totožnosti apod. Těmito subjekty jsou certifikační autority. Metoda individuálních poukazů přenáší roli CA na všechny uživatele sítě veřejných klíčů, čímž jejich důležitost zarovnává do stejné „výšky“. Jakýkoliv majitel páru privátní+veřejný klíč tak může fungovat jako certifikační autorita s důvěrou, kterou si sám vybuduje. Výhoda je jasná: uživatel se může sám rozhodnout, komu věří a komu nikoliv, stejně tak mu nic nebrání aby svou důvěrou v kohokoliv jiného vydáním „certifikátu“ posílil tento spoj v PKI.
prosinec 2003
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 3.4, str. 7 díl 2, Kryptografie
Obě dvě metody mají své principiální výhody i nevýhody. Decentralizovanou metodu zpopularizoval především světoznámý šifrovací program PGP, Pretty Good Privacy. Dává uživateli naprostou volnost při rozhodování o důvěře či nedůvěře klíčů. Její efektivita se projeví především v malých sítích, které nejsou nijak hlouběji strukturovány, a možnost správy probíhá pokud možno na jednom fyzickém místě. Vytvoření takovéto infrastruktury je jednoduché a levné. Protože i k PGP existují veřejné „seznamy klíčů“, které ovšem za nic neručí. Koncept PGP silně propaguje metodu ověřování tzv. otisků (Fingerprints) klíčů, což jsou vlastně jejich hashe. Ten pak stačí ověřit s protější stranou jinou metodou - telefon, sms. Chceme-li používat asymetrickou kryptografii v širším kontextu, je třeba obdobně posílit PKI. Přestože by „sousedské“ sítě v decentralizovaném modelu byly kompatibilní, systém ověřování důvěryhodnosti klíčů by se stal neudržitelným.
prosinec 2003
část 5, díl 2, kap. 3.4, str. 8 díl 2, Kryptografie
prosinec 2003
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, část 4, str. 1 díl 2, Kryptografie
5/2.4 KRYPTOGRAFICKÉ PROTOKOLY
5/2.4.1 Řešení problémů 5/2.4.2 Kombinovaný systém - taková jedna normální zpráva 5/2.4.3 Ostatní protokoly - kryptografie nasazená v praxi
ãerven 2004
část 5, díl 2, část 4, str. 2 díl 2, Kryptografie
ãerven 2004
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 4.1, str. 1 díl 2, Kryptografie
5/2.4.1 ŘEŠENÍ PROBLÉMŮ
Kryptografické protokoly řeší konkrétní praktické problémy. Využívají systémů jako symetrické a asymetrické šifry, generátory náhodných čísel, důvěryhodné třetí strany atd. k sestavení postupu, který s největší bezpečností plní daný cíl. Studium těchto protokolů je důležité zejména z důvodu, že v elektronickém světě nejde provádět některé činnosti tak jako ve světě reálném. Například známá hra „kámen, nůžky, papír“: dva lidé najednou ukáží každý jeden z těchto symbolů a podle „síly“ se rozhodne o vítězi: kámen je víc než nůžky, nůžky jsou víc než papír a papír je víc než kámen. Problém nastane, pokusíme-li se tuto situaci přenést do světa strojů, protože v momentu, kdy jedna strana (počítač) obdrží informaci o volbě protivníka, může lehce přizpůsobit „náhodnou“ situaci tak, aby výhra byla na její straně.
ãerven 2004
část 5, díl 2, kap. 4.1, str. 2
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
Čtenáři si mohou položit otázku, zda má takováto hra nějaké praktické využití. Rozhodně. Může se například chtít, aby se mezi x počítači v každém kole vybral pro nějakou akci jeden, a to nepředvídatelně náhodně. Nemáme-li rozhodčího, který by „házel kostkou“, je docela obtížné něco takového zajistit akce se musí odehrávat jen za účasti hráčů, kteří mají sklon k podvádění. Ale obdobné potíže jsou i jinde, tak například prosté elektronické podepisování kontraktů. Opět systém „podepíše jeden, předá, podepíše druhý“ naráží, protože „druhý“ je evidentně ve výhodě. Jak všichni víme, poslat něco e-mailem není nikdy stoprocentní jistota. Hodilo by se mít něco ve smyslu elektronických doručenek, kdy by před vlastním přečtením adresát musel oznámit, že zásilku skutečně dostal. Bohužel, zrovna tato úloha nepatří k nejjednodušším. Mohlo by se zdát, že ji řeší krátké schéma, ve kterém se nejdříve pošle zpráva zašifrovaná, poté adresát oznámí přijetí a nakonec odesílatel pošle dešifrovací klíč. Jenže to jsme pouze celý problém posunuli o krok dál, tj. na posílání klíče - adresát se opět může vymluvit, že ho neobdržel atd. Předně je nutné definovat, v jakém smyslu zde uvádíme pojem bezpečnost - musíme si „pojmenovat nebezpečí“. Různé protokoly mají různě pokročilou obranu proti některým či všem uváděným problémům, detailní vyhovění požadavkům se často řeší bokem či v praxi (např. zavedením toho či onoho šifrování atd.). • Autorizace uživatelů - s kým vlastně komunikuji? • Soukromí - kdo může číst zprávy předávané při chodu protokolu?
ãerven 2004
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 4.1, str. 3 díl 2, Kryptografie
• Integrita - jak je zaručeno nepoškození/neupravení zpráv v průběhu přenosu? • Anonymita - můžu ovlivnit to či ono, aniž by si to někdo spojil s mou identitou? • Neopakovatelnost - co když někdo bude opakovat moje odpovědi v jiné situaci? • Únik informací - kolik může nezainteresovaný pozorovatel „zvenčí“ odhadnout z naší komunikace? Stejně tak musíme počítat s různými nebezpečími v podobě nepoctivých komunikujících stran. Předpokládáme, že každá z nich má přístup ke všem použitým matematickým a programovacím myšlenkám, tj. zdrojové kódy, informace, rozbory, znalost potencionálních útoků atd. Dále tvoříme vše na míru faktu, že každá z komunikujících stran má principiálně sklon podvádět ve svůj prospěch či může být podplatitelná a snažit se ovlivnit protokol v prospěch strany jiné. Podle míry náročnosti na další subjekty mimo komunikujících stran můžeme protokoly rozdělit do tří typů: - Činnost nezávislého arbitra, důvěryhodné třetí strany, je k chodu protokolu potřeba. - Arbitr je potřeba jen v případě sporu mezi komunikujícími stranami. V takové situaci musí být popsán podprotokol, který definuje komunikaci s arbitrem v průběhu řešení sporu. - Bezpečnost a férovost je zajištěna protokolem jako takovým. Existují protokoly, kde je třetí strana nutná z principu, tj. lze dokázat, že daná situace jen za použití komunikujících stran nemá řešení. V jiných protokolech může zavedení takovéto instituce výrazně zjednodušit
ãerven 2004
část 5, díl 2, kap. 4.1, str. 4
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
a urychlit proces. Na druhou stranu jsou s ní spojeny některé obtíže, protože arbitr obecně: • je drahý, • může způsobovat neodhadnutelné prodlení, • je teoreticky podplatitelný, • znamená, že se celý systém musí spolehnout na jeden subjekt.
ãerven 2004
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 4.2, str. 1 díl 2, Kryptografie
5/2.4.2 KOMBINOVANÝ SYSTÉM – „TAKOVÁ JEDNA NORMÁLNÍ ZPRÁVA“
Princip popsaný v této kapitole patří k základním mechanismům aplikace kryptografie v praxi. Popíšeme konkrétní protokol, který řeší realizaci přenosu zprávy od odesílatele k adresátovi tak, aby se dosáhlo následujících bezpečnostních požadavků: • Autorizace – oba dva účastníci protokolu budou mít jistotu o totožnosti druhé strany vzhledem k údajům, které mají k dispozici. • Bezpečnost obsahu – jen adresát bude schopen dešifrovat a přečíst obsah posílané zprávy. • Nezávislost na bezpečnosti kanálu – předpokládáme, že přímý bezpečný (např. neodposlouchávaný) kanál mezi adresátem a příjemcem nebyl, není a nebude k dispozici. Na druhou stranu vyžadujeme existenci bezpečného kanálu od obou účastníků k nějaké, zatím nespecifikované, důvěryhodné třetí straně T či struktuře takovýchto „třetích“ stran. Mimo jiné díky
ãerven 2004
část 5, díl 2, kap. 4.2, str. 2
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
existenci tohoto kanálu musí mít obě dvě strany k dispozici důvěryhodnou kopii veřejného klíče T. • Autenticita obsahu – nikdo mezi odesílatelem a adresátem s jakýmkoliv možným vlivem na přenosový kanál nebude schopen upravit obsah zprávy tak, aby to adresát nepoznal. • Nepopiratelnost – odesílatel nebude moci nikdy v budoucnu popřít, že zprávu s daným obsahem poslal. Adresát bude moci kdykoliv dokázat, že zpráva pochází od konkrétní fyzické osoby. • Rychlost – celý proces bude bude na dnešním hardwaru realizovatelný ve „velmi krátkém čase“. Uvozovky zde znamenají jakousi intuitivní definici. Velmi krátkým časem nazývejme takovou dobu, která nebude omezovat člověka (!) v práci s programem, který bude protokol vykonávat. Dále požadujme, aby počet vykonávání náročnějších matematických operací nikterak nerostl s délkou posílané zprávy. Části systému
Realizování takovéto situace si vyžádá použití několika odlišných funkčních algoritmů či metod. Budeme potřebovat především dva typy šifer: • Asymetrický algoritmus pro vyřešení, resp. odstranění problému bezpečné dohody hesla. • Symetrický algoritmus pro rychlé šifrování dat (asymetrické šifry jsou podstatně výpočtově náročnější). Dále pro realizaci tzv. kombinovaného systému, tj. pro spojení obou typů algoritmů, požadujeme: • kryptograficky bezpečný generátor (pseudo)náhodných čísel a k zajištění autenticity nepopiratelnosti vyžadujeme: • kryptograficky bezpečnou hashovací funkci.
ãerven 2004
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 4.2, str. 3 díl 2, Kryptografie
Zamezení man-in-the-middle nejsme schopni zajistit bez: • důvěryhodné třetí strany či nějaké její struktury Před zahájením jakékoliv komunikace mezi A a B musí tyto strany bezpečně vyměnit veřejné šifrovací klíče. Při tomto přenosu se neklade důraz na například již zmiňovaný odposlech kanálu apod. Přenášejí se přeci od A k B a od B k A jen veřejné klíče. Co ale je třeba zajistit, je jejich autentičnost: patří skutečně ten klíč, který obdržela Alice, Bobovi? Nebo je to jen padělek „muže uprostřed“ (E), který se pod Bobovou jmenovkou snaží vzbudit dojem důvěry? Kdyby tomu tak bylo a na stejnou chybu by naletěl Bob, neexistovala by možnost detekce, zda případný útočník neprovádí přešifrování A--->E, E--->B (komunikace od A k B) a naopak. Strana A by si myslela, že odesílá Bobovi, odesílala by však útočníkovi E, příjemce B by si myslel, že přijímá od A, ale přijímal by od E. Analogicky samozřejmě obráceně.
Část první, distribuce šifrovacích klíčů
Tedy, obě dvě strany musí nabýt jistoty, že obdržené klíče skutečně jsou té fyzické osoby, která je napsána na jejich jmenovce. Jak? Jejich identitu je nutné ověřit pomocí důvěryhodné třetí strany (T), která bezpečným kanálem k A a B disponuje. Říkám „bezpečným kanálem“, ale v tomto případě si zde můžeme představit skutečně jakýkoliv systém, který autorizaci již poskytuje. Například fyzický kontakt s předložením osobních dokladů (občanský průkaz apod.). Pochopitelně pokud kanál splňující zmiňované požadavky již existuje, není problém celou operaci provést elektronicky. Po ověření identity a předložení veřejného šifrovacího klíče je stranám A i B vydán certifikát – viz kapitola o certifikátech a certifikačních auãerven 2004
část 5, díl 2, kap. 4.2, str. 4
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
toritách. Ověřením podpisu na něm se A i B ujistí o vlastnictví obdržených veřejných klíčů. Jejich víra v ně bude tak silná, jak moc důvěřují autoritě T. Část druhá, kryptografie se zprávou
Použití jen symetrického či jen asymetrického šifrovacího algoritmu neřeší požadavky, které jsou uvedeny na začátku kapitoly. Prvně jmenovaný druh šifer sám principiálně požaduje bezpečnou výměnu klíče, která není z podmínek k dispozici, můžeme například uvažovat vzdálenost mnoha tisíc kilometrů mezi komunikujícími subjekty. Použití jen druhého typu algoritmů je sice teoreticky dostatečné, ovšem v praxi vše kazí obrovské výpočetní nároky, které asymetrické šifry mají. Při jejich používání se totiž musí počítat extrémně čas konzumující umocňování, navíc s čísly o délce několika stovek (desítkových) číslic. Šifrovat celou zprávu asymetricky je tedy nemožné. Řešením je zabalit data do symetrické „obálky“ a asymetricky zašifrovat jen její klíč. Bude-li použit dobrý algoritmus, celková bezpečnost systému se nesníží. Symetrická kryptografie je dnes relativně dobře prozkoumána v tom smyslu, že jsou známy šifry, u kterých se možnost prolomení nepředpokládá principiálně horší než brute-force attack. Proto použijeme-li dostatečně dlouhý klíč, náročnost prolomení této symetrické části se zvýší nad náročnost prolomení části asymetrické. Pro symetrický algoritmus je třeba vymyslet jednorázový klíč. Ten se v anglické literatuře nazývá session key, český ekvivalent by byl patrně klíč relace. Jeho vytvoření bude úkol pro generátor (pseudo)náhodných čísel (resp. posloupností, řetězců). Odesílatel vygeneruje náhodný klíč relace, jím symet-
ãerven 2004
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 4.2, str. 5 díl 2, Kryptografie
ricky zašifruje zprávu, klíč sám zašifruje veřejným klíčem odesílatele, přiloží jej ke zprávě a odešle. Příjemce na druhé straně provede postup opačný: dešifruje svým tajným klíčem klíč relace a jím dešifruje obsah. O
Když jsme mluvili o generátorech náhody v obecné části o protokolech, jasně jsme definovali nároky, které na algoritmus generátoru požadujeme z bezpečnostního hlediska. Ty se zde jasně ospravedlňují v praxi, uvažme následující situaci. Strana A posílá po nezabezpečených síťových kanálech velké množství zpráv skupince deseti adresátů B1, B2, ...B10, kteří si vzájemně nevěří. Poté, co bylo kombinovaným systémem sto zpráv odesláno účastníkovi B1, má být další zpráva odeslána účastníkovi B2. Jelikož jde ale (například!) o počítačovou síť či jiný systém, není problém pro jakéhokoliv B ostatní zprávy odposlechnout. Zde je ale kámen úrazu: prvních sto bylo určeno pro B1 a ten má tedy k dispozici sto klíčů relace, tedy de facto sto po sobě jdoucích výstupů generátoru. Pokud by byl nyní schopen predikovat 101. výstup, stačí to k prolomení první a vlastně i dalších zpráv určených pro B2. Mimo to má k dispozici ještě velmi dobrý test správnosti svého odhadu (pro případ, že by další výstup nedoká-
Generujeme klíč
ãerven 2004
část 5, díl 2, kap. 4.2, str. 6
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
zal predikovat s jistotou), totiž zprávu jako takovou. Kandidáty na další výstup generátoru může testovat jakožto (symetrické) klíče. Dále si také uvědomme, že každý bit, který B1 o stoprvním výstupu generátoru zná, snižuje bezpečnost následující zprávy o polovinu. Považujeme-li dnes za teoreticky překonatelnou mez 64 bitů symetrického klíče a používáme-li běžně 128 bitů, útočníkovi stačí, uhodne-li ve výstupu průměrně jeden bit ze dvou. Jak je vidět, i na náhodná čísla a posloupnosti klademe v kryptografii vysoké nároky, které často nemusí mít mnoho společného s aplikacemi v jiných oblastech. Vůbec jsem se třeba nezmínil o samozřejmém požadavku na (co největší) náhodu jako takovou, která je samozřejmě také nutnou podmínkou. Nicméně požadavek na absolutní nepredikovatelnost má v kryptografii oproti jiným vědám zásadní postavení. Ale zpět k protokolu. Část požadavků je tedy splněna: není třeba dohodnout symetrický klíč mezi A a B (vyžaduje bezpečný kanál), vzhledem k rychlosti symetrických algoritmů celá akce netrvá dlouho a doba není téměř závislá na délce zprávy, útoku s třetí stranou uprostřed jsme také předešli. Co ještě nemáme, je jistota B o odesílateli A (zpráva mohla přijít odkudkoliv) a s tím spojená nepopiratelnost. Konstrukci, která zajišťuje v definici posledně zmiňované požadavky, se, jak patrně víte či tušíte, říká digitální podpis. Jeho výsledkem jsou data, na základě kterých adresát dokáže jednoznačně určit odesílatele, a může o tom kohokoliv přesvědčit. Dvě věci zmíněné v poslední větě minulého odstavce ãerven 2004
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 4.2, str. 7 díl 2, Kryptografie
si zaslouží ještě malý komentář. Předně je tu opět otázka určení identity. Jsme v digitálním světě a máme k dispozici jen ty „features“, které jsou uvedeny na začátku kapitoly. Při podobném ověřování na začátku protokolu, kdy jsme vyměňovali klíče, jsme se spolehli na třetí stranu, která k tomu měla své prostředky. Stejně tak to uděláme i teď: navrhneme protokol tak, že z dat digitálního podpisu půjde nade vší pochybnost dokázat, že autor musel mít přístup k privátnímu protějšku daného veřejného klíče. A fyzickou ekvivalenci veřejný klíč-fyzická osoba máme již vyřešenou. Co se týče druhé poznámky (...příjemce může komukoliv dokázat odesílatelovo autorství dané zprávy), existují protokoly, které tuto vlastnost úmyslně nemají. Ačkoliv se to na první pohled může zdát nesmyslné (a pravda ani v odborné literatuře se o podobných systémech nehovoří často), může to mít velmi praktický účel. Může se stát, že budeme chtít někomu něco podepsat, ale za žádnou cenu nebudeme chtít, aby tento podpis někomu ukazoval. Ověřit si s jistotou jeho pravost pak bude moci skutečně jen on a bez našeho souhlasu nebude schopen pravost komukoliv dokázat. Skutečně, takovéto protokoly existují a čeká se jen na dostatečný rozmach kryptografie jako vědy, aby byly nasazeny v praxi. Můžeme být potěšeni faktem, že zvolená konstrukce umožňuje rychle a efektivně šifrovat zprávu více příjemcům najednou, a to bez opakování zašifrovaného obsahu. Stačí přiložit vícekrát různým lidem zašifrovaný klíč relace a je to. Celková délka odesílané zprávy se tak zvýší o pouhých několik bytů.
ãerven 2004
část 5, díl 2, kap. 4.2, str. 8
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
Část třetí, digitální jistota
Při digitálním podepisování si klíče vymění svou roli. V nejjednodušší variantě, pokud něco podobného šifra „umí“, stačí pouhá výměna, kdy data k potvrzení autorství zašifrujeme svým tajným klíčem a příjemce je dešifruje našim veřejným. Tak jednoznačně pozná, že nikdo jiný než majitel tajného doplňku k veřejnému klíči, který má k dispozici, nemohl tuto operaci provést. K vlastnímu šifrování použijeme výstup z hashovací funkce na daném dokumentu. Tím docílíme několika výhod. Předně je její výstup vždy dostatečně krátký, aby proces zabral konstantní a nikterak dlouho trvající čas. Dále obsah takovéhoto doplňku za zprávou bude jednoznačně s jejím obsahem spjat, takže adresát si bude moci, opětovným vypočítáním H(M), kde M je zpráva, ověřit autentičnost obsahu. Celý postup bude tedy probíhat takto: strana A spočítá H(M), výsledek zašifruje svým tajným klíčem, přidá jakožto podpisovou část ke zprávě a odešle. Příjemce nejprve dešifruje obsah a obdrží M’ (viz minulá část protokolu), z něho spočítá h1 = H(M’), dále dešifruje obdrženou podpisovou část odesílatelovým veřejným klíčem a obdrží h2. Pokud se h1 = h2, tak se M = M’ a obsah jednak nebyl při přenosu změněn, jednak pochází určitě od předpokládaného odesílatele. Bezpečnost takovéhoto schématu těží z kryptografických požadavků na hashovací funkci. V nich je řečeno, že nalézt k h takový originál M, aby h = H(M), je neproveditelné. Proto by bylo možné upravit obsah zprávy jen tehdy, měl-li by útočník k dispozici tajný klíč odesílatele. V opačném případě by jím buď podpisová část nebyla podepsána (adresát by na to přišel),
ãerven 2004
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 4.2, str. 9 díl 2, Kryptografie
nebo by po dešifrování nesouhlasila hodnota výstupu hashe, protože v hodnotě nově vypočtené by se projevila útočníkova změna textu. Příjemce by to při porovnávání opět poznal. Stejně jako u výkladu samotných principů asymetrické kryptografie, nemůžeme si vystačit jen s komunikujícími stranami A a B. Ve výkladu výše je popsáno podvržení veřejných klíčů aktivním útočníkem, analogické věci platí u digitálního podpisu. Vše osvětlí opět obrázek.
Bez certifikace – man-in-the-middle útok
O
Poté, co Eva ověřila Alicin podpis, podepíše data vlastním tajným klíčem, Bob nemá šanci cokoliv poznat, myslí si, že jde o Alicin tajný (veřejný) klíč. Analogicky obráceně. Tím je základní protokol bezpečně ukončen. Dostáli jsme všech požadavků, které na nás byly prostředím kladeny – dokážeme bezpečně komunikovat po nezabezpečeném kanále, s jistotou o příjemci, odesílateli i autentičnosti přenášeného obsahu.
ãerven 2004
část 5, díl 2, kap. 4.2, str. 10
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
RSA – „šifra Š“
RSA je asymetrický šifrovací systém, jehož název představuje zkratku tří matematiků, kteří se zasadili o jeho vytvoření: Ronald Rivest, Adi Shamir a Leonard Aldeman. Jeho objev se oficiálně datuje do roku 1977. Systém poskytuje jak služby asymetrického šifrování, tak je možné ho použít pro účely digitálního podpisu. Těží z obtížnosti rozložit součin dvou velkých prvočísel zpět na oba součinitele. Objev algoritmu, který by toto dokázal v krátkém čase i pro extrémně velká čísla, by znamenal okamžitý pád šifry jako celku. Právě proto se metoda faktorizace (rozklad na prvočísla) stala předním objektem zkoumání nejlepších matematiků světa a je jím již čtvrt století. Přes toto obrovské úsilí vědců z vládních i nevládních organizací se zatím nezdá, že bychom, alespoň co se matematiky týče, byli na cestě předznamenávající nějaký principiální úspěch. V matematických metodách rozkladu čísla na součin prvočísel se pochopitelně dílčí pokroky objevují, nicméně nejsou takového řádu, aby nešly lehce vyrovnat přidáním několika málo bitů násobených prvočísel. Výhodou algoritmu je mimo jiné lehký převod situací šifrování/dešifrování na korespondující podepisování/ověřování. Prakticky totiž stačí vyměnit klišé: digitální podpis vznikne zašifrováním podepisovaného tajným klíčem, ověření podpisu naopak dešifrováním klíčem veřejným. Že druhá strana obdrží smysluplný výsledek, je důkaz faktu, že k podpisu musela být použita soukromá část ke známému veřejnému klíči. Bezpečnost systému lze narušit několika potencionálními způsoby. Jako u všech asymetrických šifer, největší škodu by napáchal objev možnosti dopočítání
ãerven 2004
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 4.2, str. 11 díl 2, Kryptografie
privátního klíče jen ze znalosti veřejného. Toho by šlo dosáhnout efektivním zpětným rozkladem, který naštěstí není přes extrémní snahu znám. Druhou možností by bylo provádět operace šifrování a dešifrování inverzním způsobem, což je problém obdobný základům Diffie-Hellmanova algoritmu, popsaného jinde v této publikaci. To by znamenalo možnost dešifrovat a podepisovat dokumenty i bez znalosti privátního klíče. RSA používá pro operace šifrování a dešifrování modulární umocňování, tj. operaci na čas relativně náročnou. Přestože je zrychlování samozřejmě předmětem výzkumu, třeba s blokovými šiframi se podobné algoritmy nemohou srovnávat. Podle informací rsasecurity.com je například DES stokrát rychlejší při softwarové a tisíckrát až desetitisíckrát rychlejší při hardwarové implementaci, v závislosti na implementaci. Jak je vidět, systém stojí a padá na matematice, přesně podle hesla „We don’t need laws to protect ourselves, we need mathematics.“. Jelikož se stále zlepšuje výkon výpočetní techniky, stejně tak jako čas od času metody pro vlastní faktorizaci, je třeba věnovat pozornost volbě šifrovacího klíče. Ta se nejčastěji udává v délce součinu použitých prvočísel, resp. v jeho dvojkovém logaritmu, který vyjadřuje počet bitů. I když efektivnost metody použití hrubé síly v tak jednoduchém vztahu s tímto údajem jako u blokových šifer, pro názornost nezabíhejme do detailů. S každým bitem klíče se počet možností zvyšuje násobně (či „skoro násobně“), proto roste-li výkonnost počítačů i matematiků také maximálně exponenciálně, stačí za dané časové období zvýšit průměrnou délku klíčů o konstantních k bitů. ãerven 2004
část 5, díl 2, kap. 4.2, str. 12
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
Obecně se dnes uvádí hranice prolomitelnosti 1024 bitů. Mimochodem, pro obě prvočísla to znamená délku v bitech 512, tedy průměrnou hodnotu 2512. A kolik to vlastně je? Logaritmováním lehce spočítáme: log 2512 = 512 . log 2 = 512 . 0,3 = 154 dekadických číslic pro každé prvočíslo (obdobný výpočet jsme prováděli v odstavcích o brute-force útoku). Pro extrémně důležité klíče se doporučuje zvolit 2048 bitů, což se dostáváme k 600místnému součinu, se kterým je třeba počítat. Na druhou stranu, každé zvýšení také znamená větší časovou náročnost, která s každým bitem roste několikanásobně. Uvádí se, že doba pro operace s veřejným klíčem se čtyřikrát na jeden bit, s tajným osmkrát a vlastní generování klíče šestnáctkrát.
ãerven 2004
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 4.3, str. 1 díl 2, Kryptografie
5/2.4.3 OSTATNÍ PROTOKOLY - KRYPTOGRAFIE NASAZENÉ V PRAXI
Nejjednodušší autorizace spočívá v prostém pověření korespondence nějakým identifikátorem uživatele s heslem v databázi při každé interakci. Za všech dalších předpokladů je něco podobného samozřejmě náchylné snad na všechny druhy útoků, především na útok opakováním situace: protivník odposlechne komunikaci a při další příležitosti ji serveru přehraje, ten pak nedokáže rozeznat mezi námi a jím.
Autorizace uživatele symetricky
Je-li však jednou heslo bezpečně dohodnuto, můžeme pomocí relativně dostupných programátorských prostředků docílit velmi efektivních výsledků, které na první pohled vyžadují použití asymetrické kryptografie. Tak například jakoukoliv akci mezi klientem a serverem lze digitálně podepsat pomocí hashovací funkce, a tím ji autorizovat. Klient to provede tak, že serveru pošle trojici (ID, M, H(ID, M,K,t)), kde ID je unikátní identifikátor klienta, M zpráva/akce k auãerven 2004
část 5, díl 2, kap. 4.3, str. 2
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
torizaci, H hashovací funkce, K sdílený tajný klíč a t aktuální časová známka. Má-li server k dispozici sdílené tajemství K, není pro něj problém si hash čtyř uvedených parametrů spočítat. Sedí-li jeho výpočet s obdrženou hodnotou, nutně se musí shodovat klíč K z databáze serveru s klíčem uloženým u klienta a zpráva M je ověřena. Jelikož M může nabývat jakýchkoliv hodnot, je systém dostatečně obecný pro implementaci jakékoliv situace. Podle M se může jednat jak o požadavek na přihlášení, tak o bankovní příkaz atd. Díky obsažené časové známce t je protokol odolný proti útoku opakováním. I stejné akce M budou totiž autorizovány jiným hashem, do výsledku se totiž přimíchá aktuální datum a čas. Aby mohl útočník replikovat výsledek hashe, musel by znát vzhledem ke komplexnosti používaných funkcí vždy všechny čtyři parametry ID, M, K a t. Jelikož se po používaném nezabezpečeném kanálu K vůbec neposílá (klíč byl dohodnut předem), není to možné. Stejným způsobem může samozřejmě jednat i server. Právě nastíněný jednoduchý algoritmus je jádrem mnoha hardwarových řešení bezpečnosti. Krabičku, na kterou uživatel vyťuká číslo a obdrží jiné, můžeme vidět ledaskde, ideálním případem jsou elektronické klíče některých bank, které pracují na obdobném principu. Jediným způsobem, jak tuto ochranu obejít (v případě použití kvalitní funkce), je fyzicky ze stroje „vytáhnout“ sdílené tajemství H. Není asi překvapením, že i tato oblast se aktivně řeší (např. laserové odkrývání čipů atd).
ãerven 2004
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 4.3, str. 3 díl 2, Kryptografie
Pokud v systému mají všichni účastníci přiřazeny páry šifrovacích klíčů, provede se potvrzení identity nejčastěji metodou důkazu přístupu k tajnému klíči. Autorita, která ověření potřebuje, vygeneruje dostatečně dlouhé náhodné číslo, které odešle klientovi. Ten číslo podepíše a vrátí zpět. Ověřením podpisu oproti veřejnému klíči, který má autorita k dispozici, se lehce dokáže přístup klienta k soukromé části.
Autorizace uživatele asymetricky
Jediný potencionální problém spočívá v možnosti podstrčení nějakého smysluplného obsahu autoritou - klient by tak mohl podepisovat ledacos. To se ale lehce vyřeší vložením bezpečné hashovací funkce do protokolu - klient nebude podepisovat přímo obdržené číslo, ale výsledek funkce na tomto čísle. Stejný výpočet provede autorita při ověřování. Takzvané „svěřování bitů“ je elementární metodou pro řešení velké škály situací a nachází uplatnění v mnoha dalších protokolech.
Bit commitment
Problém je zadán takto: Alice chce svěřit Bobovi nějaké svoje očekávání, ale nechce mu vlastní skutečnost oznámit, dokud se ve skutečnosti nepotvrdí či nevyvrátí. Bob, na druhou stranu, chce předejít situaci, kdy Alice v případě neúspěchu změní svůj názor potom, co se už jednou svěřila. Předpokládáme, že ani jedna ze stran nevěří komukoliv třetímu. Patrně nejjednodušší nápad by používal klasickou symetrickou šifru: Alice by svou předpověď M poslala Bobovi zašifrovanou klíčem K, který by mu ovšem poslala až ve chvíli, kdy by přišlo na odhalování její predikce. Problém je v tomto případě v tom, že symetrické šifry nejsou na tento účel navrhované. Alice by si tak mohla vytvořit alternativní M’ (s jinou preãerven 2004
část 5, díl 2, kap. 4.3, str. 4
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
dikcí) a K’ tak, že při šifrování dostane stejný výsledek. Zvláště pokud je M kratší nebo stejně dlouhé jako K. Aby systém lépe fungoval, necháme Boba ještě před vlastním začátkem poslat Alici náhodné číslo R. Ta poté Bobovi místo E(M) pošle E(R,M), kde E je nějaká (kvalitní) symetrická šifrovací funkce. Zbytek se provede stejně, Bob pouze po obdržení klíče ověří R. Oba dva návrhy mají své analogické řešení pomocí hashovacích funkcí, kdy Alice nemusí posílat žádné heslo, Bob si lehce spočítá hash oznámené situace. V prvním případě je při použití zaručena bezpečnost. Jelikož patří bit-commitment k elementárním problémům, na kterých se dále protokoly staví, je na ně kladen patřičný důraz. První verze obou možností mají výhodu v tom, že Bob nemusí vůbec nic posílat. Obdobné systémy zajišťují dohodu na nějakém náhodném čísle (v nejmenším případě bitu) dvou, popř. více stran tak, aby se každá z nich na výsledku podílela stejným způsobem a nikdo nemohl své generování přizpůsobit aktuální situaci ve svůj prospěch. Oblivious transfer
ãerven 2004
Občas se dostaneme do situace, kdy je třeba adresátovi přidělit jednu z několika možností, přičemž jednak on sám nechce, abychom věděli, která mu byla přidělena, jednak my nechceme, aby on věděl o obsahu ostatních možností. Například při rozdávání karet: hráči si mají náhodně vybrat právě jednu, nesmí vědět, co si táhli jejich kolegové, stejně tak jako to nemá vědět rozdávající a nakonec si nesmí vybrat „podle svého uvážení“. Tyto a podobné situace bývají označovány jako oblivious transfer, kde oblivious znamená něco ve smyslu zapomínat, nevšímat si. Stejně
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 4.3, str. 5 díl 2, Kryptografie
tak jako pro ostatní případy i pro tento existuje celá řada lišících se protokolů, které ho řeší - některé zajišťují autorizaci odesílatele, některé používají nezávislého arbitra atd. Ukažme si zde jeden z nich ve své nejjednodušší verzi, kdy Bob bude mít na výběr dvě možnosti. 1. Alice vygeneruje dva páry asymetrických klíčů a (dva) veřejné zašle Bobovi. 2. Bob vygeneruje jeden symetrický klíč K a zašifruje ho jedním, náhodně vybraným veřejným klíčem od Alice. Výsledek zašle zpět Alici. 3. Alice klíč K dešifruje pomocí obou svých tajných klíčů. Jelikož ale neví, který veřejný Bob použil, dostane symetrické klíče dva: K1 a K2. 4. Klíčem K1 zašifruje jednu alternativu, klíčem K2 druhou a obě pošle Bobovi. 5. Bob obě zprávy dešifruje, ale smysluplný obsah bude mít jen jedna. Tím byla jeho varianta vybrána. Řádné podepisování smluv je typický problém, který se standardními metodami velmi špatně řeší. Hlavním problémem je situace, kdyby jedna strana měla podpis druhé, ale ne naopak, popřípadě by vlastněné části podpisů protějších stran byly nestejně dlouhé (informačně hodnotné). V tom případě by jedna strana mohla kontrakt prohlásit za podepsaný druhou a nikoliv naopak.
Podepisování kontraktů (contract signing)
Je tedy potřeba, aby pokud jeden subjekt své podepisování stornuje, měly obě dvě strany stejnou moc nad dalším osudem kontraktu, tj. aby měly stejné šance si vlastními silami dopočítat zbytek protivníkova podpisu, aby měly stejné šance uspět s nedokončeným podpisem u nezávislé autority atd. Oba podpisy se budou posílat po částech. ãerven 2004
část 5, díl 2, kap. 4.3, str. 6
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
Mohli bychom navrhnout následující jednoduchý systém: Alice svůj podpis zašifruje náhodným symetrickým klíčem stejně jako Bob. Ten si pak posílají bit po bitu, a pokud někdo z nich přestane, mají obě strany +-1 bit stejný díl podpisu. Toto schéma ale tratí na tom, že v průběhu přenosů jednotlivých bitů nemůže ani jedna strana rozhodnout, zda skutečně přijímá bity elektronického podpisu a ne nějaký nesmysl. Při zastavení přenosu či po jeho dokončení tak může dojít k velké nerovnováze, když jedna strana od jistého momentu posílala data s podpisem nesouvisejícím. Lépe situaci zvládá následující, relativně komplexní protokol. 1. Alice i Bob si vytvoří 100 párů zpráv, kde každá obsahuje: index (pořadí) dvojice, ze které polovina pochází, identifikátor o tom, zda jde o levou nebo pravou část, a dle tohoto identifikátoru levou nebo pravou polovinu podpisu. Kontrakt budeme považovat za podepsaný, můžeme-li se prokázat levou i pravou částí nějaké dvojice (obě části musí pocházet ze stejné). 2. Oba dva ke každé zprávě vygenerují náhodný symetrický klíč, těch tedy bude 2.2.100 a budou taktéž „levé“ a „pravé“. Levé části svých dvou stovek zpráv (tj. 100 zpráv) zašifrují postupně levými klíči, pravé části pravými. To udělá stejně Alice jako Bob. 3. Pomocí protokolu pro oblivious transfer si oba účastníci pošlou z každé dvojice klíčů jednu (náhodnou!) polovinu. Situace je tedy taková, že mohou z každé dvojice dešifrovat jednu náhodně vybranou polovinu podpisu, ale protivník kvůli oblivious transferu neví kterou. (Ke svým dvojicím mají samozřejmě klíče všechny.) 4. Nyní si po dvou stovkách bitů posílají navzájem ãerven 2004
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 4.3, str. 7 díl 2, Kryptografie
první, druhé, třetí atd. bity všech svých vygenerovaných klíčů. 5. Na konci mohou obě strany dešifrovat všechny dvojice a kontrakt tak může být oběma prohlášen za podepsaný. Použili jsme relativně složitý algoritmus, neboť jsme potřebovali předejít několika pokusům o podvod principiálního charakteru. Obě strany mohou podvádět při posílání svých, zatím zašifrovaných zpráv či se mohou pokusit o podvod při provádění oblivious transferu. Jenže to bude záhy odhaleno při dešifrování polovin podpisu - podvodník nemá šanci se při odesílání špatných dat přesně do těch sta ze dvou set, které si druhá strana náhodně při O. T. vybere. Stejně tak nelze blufovat při odhalování bitů v předposledním kroku jelikož se posílají n-té bity všech zpráv, poslání jednoho špatného se s pravděpodobností 50% projeví, druhá strana má totiž průměrně jednu ze dvou polovin dešifrovanou. Při předčasném ukončení tak mají obě strany stejné preference dopočítat zbytek nějakého podpisu. Protokol neřeší situaci, pokud by byl jeden účastník výpočetně podstatně silnější než druhý. Dokáži si ale například představit zakomponování jakéhosi „parametru výpočetní síly“ pro obě strany, řekněme pA a pB. To by byly veřejné, pro daný subjekt konstantní hodnoty a ve čtvrtém kroku by pak vyměňování probíhalo v poměru pA/pB. Obdobný problém představují „elektronické doručenky“. V zobecněném případě jde o simultánní výměnu dvou dokumentů, čísel, řetězců apod. tak, že každá ze stran podmiňuje odevzdání toho, co nabízí, přijmutím toho, co chce.
Elektronická potvrzovaná pošta (digital certified mail)
ãerven 2004
část 5, díl 2, kap. 4.3, str. 8
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
Vyřešme problém doporučených e-mailů lehkou modifikací předchozího algoritmu. Předně nechme Alici odeslat Bobovi dopis (hlavní předmět transferu), zašifrovaný symetrickým klíčem K, který zná jenom Alice. Již nyní bychom mohli opakovat minulou situaci s tím, že by Alice místo podpisu pod smlouvou posílala K a Bob podepsané oznámení o potvrzení. Problém je ovšem v tom, že takovýto postup je náchylný na podvádění ze strany Alice - klíč jako takový totiž nedává smysl a případnému vysílání/přijímání falešných bitů se tak hůře předchází. Udělejme to tedy tak, že Alice bude Bobovi postupně odkrývat nějakou pomocnou zprávu a samotný klíč K bude skryt v klíčích, kterými se šifrují poloviny zprávy. Alice jich vytvoří jen sto, budiž K[1]...K[100], a zbývající vytvoří prostým xorováním: K[100+n] = K[n] xor K. Bob tak bude současně s pomocnou zprávou odhalovat i klíč K k vlastnímu obsahu mailu. Timestamping
Služby časového razítka jsou v reálném světě běžnou věcí. Chceme-li dokázat existenci dokumentu v daném čase, stačí požádat nejbližšího notáře. Přijdeme do kanceláře, zaplatíme poplatek a dostaneme razítko. Jak asi tušíte, budeme v této kapitole řešit elektronickou verzi a požadavky na výsledek budou obdobné: chceme mít k dispozici důkaz existence, který se bude těšit všeobecné důvěře. Elektronický notář určitě může fungovat prakticky stejně jako notář fyzický: obdrží dokument, opatří ho časovou známkou, podepíše a vrátí. Máme ale k dispozici pokročilejší kryptografické techniky, jděme tedy dále. Předně transport dokumentu
ãerven 2004
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 4.3, str. 9 díl 2, Kryptografie
k e-notáři: nemusíme chtít, aby viděl jeho obsah, navíc se vzrůstající délkou stoupají nároky na přesnost. Lepší bude, pokud notáři dáme podepsat jen hash dokumentu, všechny zmiňované nevýhody se rázem řeší. Vzhledem k jednocestnosti hashovacích funkcí se nemusí autorita bát o kompromitaci svého podpisu, protože je nemožné vymyslet alternativní zprávu generující stejný výsledek funkce. Samozřejmě použijeme-li opravdu kvalitní funkci (jak vidíme, na kvalitě základních stavebních kamenů, jako jsou generátory náhodných čísel, oba typy šifer či například naposled zmiňované hashe, stojí a padá skutečně rozsáhlá třída protokolů). Jelikož je v elektronickém světě vše anonymní, rychlé a neosobní, musíme si dát předem pozor na nebezpečí, která jinak nemohou nastat či která neřešíme. Zvláště máme-li zkušenosti, že kryptografickými metodami dokážeme vyřešit mnoho nestandardních situací, neměli bychom se zastavit hned po vyřešení situace „fyzické“. Rádi bychom předešli zkorumpovatelnosti autority, která časová razítka vydává. Zatím neexistuje způsob, jak odhalit podvodníka, který přinutí/přemluví autoritu vydat k jeho dokumentu starší razítko, než je aktuální čas. Podpis jednou existuje a je to. Toho docílíme zřetězením zpráv. Každá nechť obsahuje informace alespoň o jednom subjektu, který si podal razítko před námi. Musí to být nějaký identifikátor, podle kterého můžeme subjekt dohledat v případě sporu. Ověřování pravosti razítka se provede přezkoumáním, zda má následující subjekt shodný identifikační údaj se subjektem zkoumaným. Pokud ne, nevzniklo razítko v uváděné době. listopad 2004
část 5, díl 2, kap. 4.3, str. 10
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
O
Systém, který se odvolává na jedno jediné razítko, je velmi náchylný na ztrátu „konzistence“ - někdo razítko ztratí, někdo zemře... Pokročilejší protokoly řeší efektivnější možnosti zřetězení tak, aby byla možnost podvodu pro autoritu či její klienty co nejmenší. Mimochodem, výpočet hashe z dané zprávy znamená nutnost publikování skutečně jen minimálního bloku dat, a tak se v praxi otvírá škála možností, jak si případný důkazní materiál obstarat sám. Poslání hashe do elektronické diskusní skupiny, vytištění v novinách v podobě inzerátu atd. Kryptografie, především asymetrická, dokáže digitální formou implementovat celou řadu situací, které známe z praxe. Nejenom že se divíme, že „i to“ jde realizovat digitálně, ale často jdeme za hranice analogového světa a vytváříme protokoly, které zcela vybočují ze známých postupů. Často to pak navenek vypadá, jako že si samo zadání digitálního problému odporuje, a ono to přeci jen jde! Jeden příklad za listopad 2004
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 4.3, str. 11 díl 2, Kryptografie
všechny představují takzvané důkazy s nulovou znalostí (Zero-knowledge proofs). Použití této techniky v praxi by doslova znamenalo, že pro ověření jakékoliv identity na dálku (přes síť) nebudou přenášeny žádné informace, které by se případný odposlech nemohl dozvědět, i kdyby ověřování vůbec neprobíhalo. To je úžasná myšlenka, která by mohla zabezpečit miliony dennodenních ověřovacích procesů našich jmen a hesel, kreditních karet, přístupových práv atd. Mimo praktické využití pokládám tuto kapitolu (vlastně společně s částí minulé) za velmi zajímavou až futuristickou. Hodně algoritmů, které je zde popsáno či naznačeno, musí na svůj boom ještě počkat, stále na ně žijeme ve věku hodně analogovém. Na všechny z nich lze sestavit z dílčích postupů symetrická šifra, asymetrická šifra, generátor náhodných čísel a hashovací funkce, jako tomu bylo např. u podepsání kontraktu, elektronických doručenkách atd. Místo toho často musela nastoupit na scénu matematika a upravit vzorce, na kterých algoritmy stojí tak, aby vyhovovaly novému zadání. To je pochopitelně většinou mimo záběr publikace a vyžadovalo by si to další desítky stran suché teorie. Proto budou některé postupy popsány jen jednoduše, popř. bude pouze poznamenána jejich existence. Pro další informace odkazuji případného zájemce především na odbornou literaturu (výhradně v cizím jazyce) a Internet. Zadání jakéhokoliv názvu algoritmu do světového vyhledávače by vám mělo přinést množství informací, které vystačí na týdny či měsíce studia. Velmi dobrým souhrnem mnoha protokolů je již klasická publikace „Applied Cryptography“, od světoznámého odborníka Bruce Schneiera (John Wiley & Sons, Inc., New York 1996). Zde uvádíme po řadě několik nejznámějších listopad 2004
část 5, díl 2, kap. 4.3, str. 12
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
problémů, které se řeší takřka v každé odborné publikaci o tématu. I vzhledem k předminulému odstavci je výzkum na poli matematiky stále v plném proudu a stává se, že se najednou zjistí, že původně navržené rovnice pro tu či onu specialitu mají nějakou chybu (ať již teoretickou či praktickou). Výsledkem je mj. to, že pro jeden konkrétní problém může existovat vícero matematických řešení od různých autorů. Podprahová komunikace
V originále Subliminal Channel je technika zahrnutí jednoho informačního kanálu do druhého. Potencionální využití může být značné (správnost chování nehodnotíme): veškerá komunikace může např. procházet dozorem, který zajišťuje, zda někdo nevynáší informace. Nebo, pokud něco publikujeme, můžeme digitální obsah „označkovat“ - zapsat do něj nějakou informaci - a později ji z různých kopií číst. Zjistíme tak původního majitele, kterému byla vydána. Prostě něco jako digitální vodotisk (watermark). Existuje mnoho technik, jak něco takového provést. Obvykle pracují s daty jako takovými, a proto se liší formát od formátu. Je třeba mnoho algoritmů na JPEG vodotisk, tj. na zapsání informace do ztrátově komprimovaného obrázku. Různé z nich dokonce odolají různým úpravám - tisk/skenování, zvětšování/zmenšování atd. Obdobná je situace u zvukových souborů, tam je na straně vydavatele velké množství dat (v řádu megabytů) na malé množství vkládané informace, tak se to samozřejmě dělá lépe. Sofistikované metody využívají možnosti skrýt informace do digitálního podpisu. To je „skvělé“ z několika důvodů. Předně díky nezávislosti na formátu stačí podepsat cokoliv a je možné pár bytů přenést.
listopad 2004
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 4.3, str. 13 díl 2, Kryptografie
Dále nemodifikovatelnost podpisu - pokud by se někdo snažil informace upravit, změní podpis a ten se tím stane neplatný. Pro jakoukoliv třetí stranu je nemožné rozlišit normální digitální podpis a ten, který nese nějaké přídavné informace. Konceptů, které to navrhují, je několik, mají různé vlastnosti, co se týče zabezpečení komunikace mezi stranami, které si „povídají“ prostřednictvím podpisů. Vedle toho, a to je docela zajímavé, byly vymyšleny naopak modifikace algoritmů digitálních podpisů tak, aby podprahovou komunikaci neumožňovaly. Vlastně taková proti-technika. Když už jsme u možnosti generovat různé podpisy, povězme si ještě o jiné zajímavé modifikaci vzorců a rovnic. Idea je taková, že k jednomu veřejnému klíči bude existovat více klíčů privátních, které budou, každý z nich, generovat jiné digitální podpisy. Mimo výše popsané možnosti komunikace v podpisu je účel této změny jiný. Spočívá ve faktu, že pokud by se někdo pokoušel vypočítat privátní klíč z veřejného a uspěl, stejně mu to není mnoho platné. Pokud algoritmus dostatečně zobecníme, může počet privátních klíčů neomezeně růst, s tím ovšem šance, že se útočník trefí do toho pravého, klesá k nule. To samozřejmě potřebuje lehké doplnění v modifikaci protokolu, protože v případě sporu (u soudu) je třeba vyřešit, jak ověřovat „správnost“ použitého privátního klíče ke konkrétnímu podpisu. Jen v takové situaci získáme něco navíc, při běžném provozu nemá ověřovatel možnost zjistit, zda podpis není zfalšovaný někým, kdo spočetl jeden konkrétní privátní klíč.
Více privátních klíčů
To je extrémně zajímavý koncept. V anglickém jazyce bývá nazýván Undeniable digital signatures, což je ovšem na první pohled trochu zavádějící. Nepopira-
Nepřenositelné (nepopiratelné) podpisy listopad 2004
část 5, díl 2, kap. 4.3, str. 14
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
telné (undeniable) jsou všechny digitální podpisy vzhledem k jeho tvůrci - ten nemůže popřít, že daný popis vytvořil. Název pochází z jiné skutečnosti, kterou si vysvětlíme. Problémem digitálních podpisů (tedy vlastně nejen digitálních, ale všech - právě jsme překročili pomyslnou hranici mezi analogovou realitou a digitální fikcí) je to, že může sloužit jako důkaz pro jakoukoliv třetí stranu. Pokud někdo věří technice podpisu a má k dispozici informace nutné k ověření, nabude bezesporného dojmu, že odesilatel podepsal právě to, oč se právě jedná. Ne vždy je takováto situace chtěná - můžeme chtít se k něčemu zavázat, ale byli bychom neradi, aby daný písemný závazek mohly dostat například média. Nepřenositelný podpis zaručí, že příjemce si bude jist identitou odesilatele vzhledem k obsahu, ale nikoho dalšího nemůže o tomto faktu přesvědčit. Nemůže mu to dokázat. Na první pohled to vypadá zajímavě, nicméně při detailnějším zkoumání narazíme na problém. Uvažme situaci, že závazek podepsaný nepřenositelně je vymáhán u soudu. Ale od toho se přeci věci podepisují, aby se takto státním autoritám říkalo, že jsem se k něčemu zavázal a v případě neplnění ponesu důsledky. Nepřenositelný podpis pak ale k ničemu není, smluvní strana se jím nemůže „ohánět“. Nač potom uzavírat nevymahatelnou smlouvu? Právě proto je třeba funkce algoritmu zařídit ne tak benevolentně, speciálně, člověk nesmí mít možnost podpis popřít (deny), právě pokud ho vydal. Odtud pramenní původní název. Konkrétních protokolů existuje několik. Častá realizace potřebuje k ověření platnosti podpisu nějakou spoluakci od vlastníka tajného klíče, kterým byl podpis vytvořen. Jiné jsou vytvořeny tak, že případná pralistopad 2004
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 4.3, str. 15 díl 2, Kryptografie
vomoc vyžádat si důkaz (ne)vytvoření podpisu je dána do rukou předem vybrané osobě (resp. jejím klíčům). Složitější řešení umožňují vydavateli pověřit třetí osobu ověřováním nepřenositelných podpisů. To se hodí v případě, že vydavatel nemá zájem trávit svůj čas ověřováním sám. Na druhou stranu pověřená osoba nemůže tuto pravomoc přenést na někoho jiného. Výše nastíněná myšlenka by se zobecněná hodila na velké množství praktických situací. Pokud je třeba majitel firmy dočasně nedostupný (mimo internetové spojení), bylo by dobré, pokud by mohl dát plnou moc k podepisování někomu jinému. Jednoduše by to šlo vyřešit pomocí již popsaných technik - prostě by se stanovil datový formát „plná moc“, kde by byly uvedeny oba zainteresované klíče. S tím by se pak pracovalo při ověřování. Dokáži si např. představit systém, kdy je v takovémto formátu uvedeno XML schéma (navíc možná nějaká detailní specifikace obsahu), a podpis by pak byl platný jen za předpokladu, že by podepsaný dokument danému schématu vyhovoval. Tím by šlo vyřešit např. pověření zástupce podepisovat bankovní příkazy na danou množinu cílových účtů s definovanou maximální částkou.
Elektronická plná moc
Toto řešení je samozřejmě trochu „analogové“, jiné metody pracují více s konkrétním algoritmem elektronického podpisu. Toto téma je extrémně široké, protože zahrnuje nepřeberné množství potencionálních implementací. Oč jde?
Podpisy s číselnou vahou
Doposud jsme fakt, že je něco podepsáno někým, brali jako „výrok“ ano/ne. Byl zde vždy vztah ke konkrétní fyzické entitě - k vydavateli, což byl majitel privátního klíče, kterým byl podpis vytvořen. Jiná situace listopad 2004
část 5, díl 2, kap. 4.3, str. 16
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
nastává, pokud se na zmíněného vydavatele díváme jako na organizaci a na vlastní podpis spíše jako na výsledek hlasování. Definice obecné situace by vypadala asi takto: máme n společníků, mezi kterých je rozděleno 100,00 ideálních procent (bodů). Chceme navrhnout systém, který umožní identifikovat podpis jako platný, pokud se vyjádřilo pro (= podepsalo) tolik společníků, že celkový součet jejich bodů je více než 50,00. Toto je typický případ protokolu, který lehce realizujeme pomocí důvěryhodné třetí strany. Což je ale opět nevýhoda, v tomto případě dle mého názoru zásadní. Pokud nikomu nedůvěřujeme natolik, abychom mu svěřili do rukou celé tajemství (tajný klíč), těžko se můžeme spokojit s tím, že to dáme k dispozici třetí straně. Ale jak věc zařídit tak, aby společníci tvořili podpis dohromady, ale nezjistili svoje díly? Sofistikované protokoly to dokáží vyřešit. Jiné zásadní otázky se týkají anonymity jednotlivých společníků. V žádném případě nechceme uvést ve známost jejich tajemství, ale pokud se oprostíme od přirovnání k hlasování, můžeme něco takového potřebovat. Co když je nutnost více podpisů jen zabezpečení před nějakým nezvratným, ale důležitým faktem? Nejde tedy o vyjádření názoru - ten je přijat „shora“ a nyní je nutné provést akci - dát dohromady několik podpisů. Některý z účastníků ale může celý proces sabotovat a výsledek? Pokud je vše anonymní, nic se nestalo (podpis neexistuje) a nikdo neví proč. Částečně anonymní podpisy
listopad 2004
Zde se opět jedná o posunutí identifikace klíče s osobou trochu někam jinam, ale ovšem v jiném smyslu. Identifikace je přesný opak soukromí - každý, kdo podpis ověřuje, si může na vydavatele přímo ukázat.
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 4.3, str. 17 díl 2, Kryptografie
To je někdy kontraproduktivní, například v situaci, kdy prostě nějaká služba není prodejná, pokud její použití (s nutným ověřením totožnosti pomocí digitálního podpisu) bude nutně znamenat kompromitaci identity. Kompromis by spočíval v tom, že by ověřovatel měl jistotu jenom o nějaké vlastnosti vydavatele. Např. chceme, aby k nějaké službě měli přístup jen zaměstnanci firmy, ale nechceme je odrazovat faktem, že budou identifikováni. Tedy ověřovatel bude vědět, že vydavatel má nějakou vlastnost (patří do nějaké množiny, skupiny), ale nebude moci zjistit, kdo konkrétně z jejich členů to je. Možných řešení, která kryptografie nabízí, je hned několik. Jako obvykle, jednodušší z nich mají nevýhodu v nutnosti použití třetí, nezávislé strany. Nicméně v závislosti na situaci je možné ji do procesu začlenit, např. můžeme chránit identitu před pokladní u „přepážky“, ale v případě nesrovnalostí bude tato třetí strana v rukou ředitele firmy moci danou osobu dohledat. Ověřování identity (a následné porovnávání jména oproti seznamu uživatelů) se řeší situaci od situace různými způsoby. Ve standardních prostředích ale mají jedno společné: existuje centrální služba s přístupem do databáze, která tuto činnost provádí.
Autentizace bez centrální autority
Jiná věc je případ, kdy takovéto centrum neexistuje a chceme, aby se každý uživatel mohl jinému „prokázat“. Ve skutečném životě by mohlo jít o nějaký spolek, kde si jsou všichni rovni, ale nechtějí mezi sebe pustit zvěda. Obvykle pak není možné dát tuto pravomoc všem, což je problematické - utajení seznamu, jeho distribuce, update atd. Matematici přišli se zajímavou modifikací hashovacích funkcí, výsledek se jmenuje akumulátor. Předlistopad 2004
část 5, díl 2, kap. 4.3, str. 18
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
stavte si, že každý uživatel dostane seznam hodnot hash (jméno, heslo). Mohou si tak ověřovat identitu každý s každým standardním způsobem. Nyní si představte, že se všechny tyto hodnoty sbalí do jedné, stejně dlouhé, a stejně je možné ověřovat přítomnosti jednotlivých hashů v této hodnotě. Ta vlastně dokáže jiné hodnoty akumulovat, odtuď název. Pokud jste někdy na škole studovali datové struktury, možná si vzpomínáte na pojem trie. To je zjednodušeně něco (datová struktura), co podporuje operace Vloz(x), Vyjmi(x) a Test(x). Výsledkem Testu je 1, pokud x do trie patří, jinak 0. Totéž, realizováno bezpečně (= nejde zjistit výčet obsažených hodnot) pomocí jedné hodnoty, by byl hashovací akumulátor. Poznámka: Pokud si to rozmyslíte, dospějete k faktu, že algoritmus se musí od standardní hashovací funkce lišit především v délce akumulátorové hodnoty. Z logického hlediska nemůže nést více 0/1 informací, než je její binární délka... Důkaz s nulovou znalostí
Ověřování identity na dálku se nejčastěji provádí znalostí něčeho. Posílají a následně porovnávají jistá autorizační data, typicky jméno a heslo, oproti databázi. Pokud je v ní údaj přítomen, je zdroj považován za důvěryhodný. Celá řada algoritmů, realizující takzvaný důkaz s nulovou znalostí (Zero-knowledge proof), řeší tuto cestu extrémně zajímavým způsobem. Zásadní otázka zní takto: Pokud dám klientům, kteří budou svoji totožnost prokazovat, skutečně vhodně zvolenou informaci, nelze její existenci u nich ověřit jinak než přenosem? Ještě jednou: Nemůže mi náhodou klient dokázat, že zná to či ono, bez toho, že mi to pošle a já to porovnám? Všimněte si, že v první větě této podkapitoly
listopad 2004
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 4.3, str. 19 díl 2, Kryptografie
stálo slovo „znalostí“. To ale až v druhé jsem tak nějak mimochodem napsal, že se něco přenáší, a skutečně, o ten přenos nejde, to je věc navíc, kterou autorita nepotřebuje. Ona nemusí vědět, co je zrovna moje heslo, stačí když se ujistí (jakkoliv), že já ho vím. Nebudeme čtenáře napínat a rovnou řekneme, že algoritmy, které něco podobného umí, existují. Je jich hned několik, některé si zde přiblížíme detailněji. Možná se vám zdá myšlenka natolik revoluční, že máte pochyby. Zde je na místě říci, že se bude přenášet (resp. nepřenášet) něco jiného, nikoliv jméno a/nebo heslo. Klient bude dokazovat, že zná řešení nějakého obtížného matematického problému. Jednotlivé algoritmy se většinou liší právě podle toho, na kterém problému staví. Pokud bychom chtěli situaci přiblížit heslu, vypadala by asi tak, že při jeho zadávání by se z něho (hesla, lépe asi z jeho hashe) nějakým způsobem vytvořilo nejprve řešení. Kdyby to bylo naopak, nemohli bychom řešení získat prostě proto, že problém nejde lehce vyřešit. Dále by se vyrobilo zadání problému, aby ho dané řešení řešilo, nejlépe pouze a právě to. Toto zadání by se poslalo serveru, obdobně jako se nastavuje nové heslo. Verifikace by probíhala důkazem znalosti řešení, jak ji vysvětlíme dále. Nutno podotknout, že tento postup je velmi obecný a „orientační“. Jak takový důkaz o znalosti bez přenosu vlastní informace probíhá, si ukážeme pomocí obrázku jeskyně, na kterém se věc (takřka v každé publikaci) většinou ilustruje. Jeskyně má tvar, jaký je vyznačen na obrázku. Alice chce dokázat Bobovi znalost kouzelného zaklínadla ke dveřím dole. Vejde do jeskyně, na rozcestí si náhodně (!) vybere levou nebo pravou stranu listopad 2004
část 5, díl 2, kap. 4.3, str. 20
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
a dojde až ke dveřím. Nyní do jeskyně vstoupí Bob a na rozcestí se zastaví. Náhodně (!) si vybere, zda zakřičí „zleva“ nebo „zprava“. Alice nyní z tohoto směru přijde. Rozmysleme si, k čemu vlastně došlo. Pokud Alice zaklínadlo zná, není problém a vždycky dokáže Bobovi vyhovět. Pokud ho nezná, má šanci 50:50, že vyvázne, a Bob má stejně tak o Alicině znalosti jistotu 50:50. Jenže, a to je zásadní, tato jistota se snižuje o polovinu s každým opakovaným pokusem, protože Alice musí vyhovět vždy a jediná chyba ji prozradí. S vícenásobným opakováním dokážeme Bobovu jistotu zvýšit nad jakoukoliv mez. Poznámka: Pokud se ptáte, proč Alice prostě neodejde jedním směrem a nepřijde druhým, pak vězte, že obrázek zde slouží jen pro demonstrační účely. Nyní již záleží na konkrétní matematické reprezentaci. Pokud si vzpomínáte ze školy na základy teorie grafů, možná vám problém přiblíží následující algoritmus: Problémy zde budou dva. Jednak takzvaná Hamiltonovská kružnice, která v grafu prochází všemi vrcholy právě jednou, jednak otázka izomorfismu grafů (rovnost až na přejmenování). Oba dva problémy jsou výpočetně náročné. Alice chce dokázat Bobovi, že k danému grafu zná zmíněnou kružnici. Proto vytvoří (to je jednoduché) isomorfní ’ a Bob jí dá na výběr: buď ukaž isomorfismus mezi a ’, nebo Hamiltonovskou kružnici na ’. A co odposlech? Chce znát kružnici, ale dozví se buď ’ (to je k ničemu), nebo kružnici na něm. A spočítat isomorfismus (na hodně velkém grafu) je extrémně náročné, srovnatelné s kružnicí. Proto mu ani tato informace neposlouží. Tato procedura se opakuje, dokud není Bob úplně přesvědčen. listopad 2004
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kap. 4.3, str. 21 díl 2, Kryptografie
Musím přiznat, že dle zdrojů dostupných na Internetu nemusí být tento algoritmus úplně stoprocentní. Myslím to ve smyslu, že matematika je věda jako každá jiná a řešení obtížných úloh se vyvíjí.
Služby s nulovou znalostí
V minulém odstavci jsme popsali způsoby, kterými lze například ověřovat identita tak, že vlastní identifikační informace vůbec nejsou kanálem přenášeny. Jiný, „vzhledově“ obdobný problém představuje tzv. počítání se zašifrovanými daty. V principu požadujeme komutativitu při skládání funkce Enc(), provádějící šifrování, s nějakou obecnou f(). Výsledkem by bylo, že bychom si mohli nechat vzdáleně spočítat f(Enc(x))= , následně aplikovat Dec( )=Dec(f(Enc(x)))=Dec(Enc(f(x)) )=f(x) (druhá rovnost díky zmiňované komutativitě skládání /= pořadí/), aniž bychom museli protistraně, která výpočet provádí, posílat x (jenom Enc(x)). Obecně to samozřejmě není možné, matematika řeší, u kterých funkcí to tím či oním způsobem jde či nikoliv.
listopad 2004
část 5, díl 2, kap. 4.3, str. 22 díl 2, Kryptografie
listopad 2004
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kapitola 5, str. 1 díl 2, Kryptografie
5/2.5 KERBEROS
Nejčastěji skloňovaná zařízení v oblasti bezpečnosti IT jsou firewally. Přestože jejich množství funkcí, škálovatelnost a „inteligence“ jednoznačně neustále stoupají a jakožto „strážci u brány“ jsou nepostradatelní, rozhodně jen na takto pracujících zařízeních nelze postavit bezpečnost komplexních systémů s mnoha objekty, pravidly, právy atd. Výstupem firewallu je v drtivé většině případů stav ano/ne, tj. provoz je buď povolen, nebo nepovolen. Jinými slovy - vezmeme-li v úvahu provoz zvenku dovnitř, veškeré pokusy (resp. jejich „autoři“) se v závislosti na obsahu dotazu rozpadají na dvě skupiny - jedna se dovnitř dostane, druhá ne.
Proč autentizační a autorizační systémy
Takováto „variabilita“ je možná nasaditelná k ochraně menší sítě, ale je to zásadně nedostačující pro jakoukoliv organizaci většího rázu. Infrastruktura, kterou má firewall chránit před vnější sítí, může být ohromná a zde je třeba poznamenat, že se nejedná jen o prostý listopad 2005
část 5, díl 2, kapitola 5, str. 2
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
„počet počítačů“ - objektem sítě může být jakýkoliv zdroj, ke kterému je přistupováno, od hardwaru po dokumenty. Dalším nutným krokem je tedy vybudování nějakého interního mechanismu, který zajistí bezpečnost mezi těmi „klienty“, které firewall již do sítě pustil. Možná čtenáře napadá, proč něco takového nezařídit i na rozhranní sítě a vnějšího Internetu - to je pochopitelně možné, ale jednoznačně se musí jednat o nějaký robustní a univerzální systém, nikoliv o konkrétní specifickou implementaci na míru chráněnému prostředí. Návrh musí být schopen postihnout co možná největší škálu možností. Čtenář má z předchozích kapitol publikace jistě velmi dobré povědomí o tom, co se dá pomocí šifrovacích klíčů a elektronických podpisů dokázat - ostatně jsme namodelovali situace a nástroje, které svými schopnostmi předčily ekvivalentní „instituce“ reálného světa. Autentizační systémy se v principu nijak zásadně neliší od popisovaných „zajímavých nápadů“ jako slepé digitální podpisy, elektronické podepisování smluv apod. Jsou totiž postaveny na úplně stejných kryptografických nástrojích (symetrické šifry, asymetrické šifry, hashovací funkce). Stejně tak jejich účel je víceméně jen další „věc“, která si žádá implementaci v digitálním světě. Můžete si představit organizaci, kterou máme za úkol ochránit, jako nějakou přísně střeženou budovu, nebo ještě lépe komplex budov. Třeba jako z nějakého filmu, typicky „tajnou vládní laboratoř“ apod. V komplexu je mnoho místností a objektů různých oddělení a úrovní zabezpečení, pohybují se tam lidé různých skupin (hodností, důvěr apod.). K tomu všemu se používají visačky (s fotografií a jmenovkou), čipové karty listopad 2005
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kapitola 5, str. 3 díl 2, Kryptografie
a čtečky u dveří, piny na otevírání dveří a mnoho dalšího. Toto všechno implementuje systém, který zajišťuje, že „každý bude moci dělat jen to, co má“. A právě takto vágní formulaci je třeba pro digitální řešení zpřesnit a implementovat. Obecně řečeno - množina lidí chce nějakým způsobem pracovat s množinou objektů. Způsobů práce je přitom několik, od „žádného“ (žádná práva) po „vše“. Tato škála je pochopitelně závislá na konkrétním prostředí a navrhovaný autorizační/autentizační systém by měl umožnit postihnout co nejvíce detailů. Možná čtenářovi přijde, že s kryptografickou výbavou, popsanou v této publikaci, by neměl být problém něco takového vymyslet. Je tomu skutečně tak. Co však odlišuje (extrémně zjednodušeně řečeno) „dobrý a špatný“ systém, je použitelnost v praxi. Ta totiž, ač by se to mohlo zdát zvláštní, má velmi malý vztah s „moderností“ používaných technologií (pro případ nemusíme chodit daleko, stačí se podívat, jakým „hitem“ je elektronický podpis mezi běžnými uživateli počítačů). Pokud byste si například zkusili nějaký takový systém navrhnout, mohu se skoro vsadit, že bude obsahovat jednu z následujících vlastností: - každý člověk bude muset mít u sebe soupis nějaké podmnožiny objektů (např. té, ke kterým má přístup, tj. ve velikosti až do množství všech objektů), - naopak každý objekt bude muset mít u sebe nějaký seznam lidí (tento případ je ještě horší v tom smyslu, že hmotné objekty obvykle nemívají někde nějakou centrálu, kam si jednotně chodí vyřizovat podobné formality, takže aktualizace těchto seznamů se podstatně komplikuje). listopad 2005
část 5, díl 2, kapitola 5, str. 4
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
Něco takového je pro mnoho případů naprosto nepoužitelné, protože celkový management seznamů u jednotlivých objektů či lidí by představoval obrovskou „elektronickou administrační“ zátěž a s tím související režijní náklady. V praxi není problém, aby organizace měla několik milionů objektů a denně se vytvářelo tisíce nových (především nově vytvářené objekty generují nutnost provedení mnoha úkonů na udržení systému v aktuálním stavu). Například armáda od tanků po jednotlivé dokumenty. V takovém případě je třeba mít jaké základ systému nějaký úplně jiný přístup. Vezměte v úvahu například takové elektronické nálepky a hodnosti - každý objekt má nějaký stupeň utajení (nálepku, visačku) a lidé si vyřizují jen jakési „hodnosti“, tj. maximální stupeň utajení, ke kterému mají přístup. Žádné seznamy lidí u objektů, žádné seznamy objektů u lidí. Ale to je jen jeden příklad možného základu návrhu. Mnoho protokolů
Čtenáři si jistě všimli, že kryptografické protokoly tvoří relativně ucelenou část oboru - v publikaci je jim vyhrazena kapitola. Je třeba říci, že stejné postavení mají samotné autentizační protokoly - jedná se o komplexní vědní obor, který se také vyvíjí stále kupředu. Hloubku zkoumání dokládá mnoho faktů. Vedle nepřeberné škály autentizačních protokolů, pojmenovaných obvykle podle jejich vynálezců, existuje komplexní a ucelená metodika ověřování jejich kvality (bezpečnosti). Všechny se skládají ze stále stejných kroků s různými daty, typu „jedna strana má již nějaké informace z minulé komunikace, něco s nimi spočítá a něco pošle straně druhé“ - a to se opakuje, dokud protokol nedojde ke konci. Tj. k výsledku, jestli autentizace probě-
listopad 2005
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kapitola 5, str. 5 díl 2, Kryptografie
hla v pořádku, nebo ne. Jelikož lze jednotlivé protokoly takto formalizovat, nabízí se otázka, zda nelze nějak automaticky vyhodnocovat jejich funkčnosti a bezpečnost. Na jejich analýzu, která pracuje s příkazy napsanými v jednotném symbolickém formátu, programy a algoritmy skutečně jsou. Pokud k něčemu můžeme vytvořit formální model, matematika a informatika dříve či později přijdou s nástroji, jak mnoho kroků algoritmizovat. Matematický aparát, který se v souvislosti s analýzou bezpečnostních protokolů obecně uvádí, se nazývá BAN logic (Burrows-Abadi-Needham logic). Tím se ale zatím nebudeme zabývat - jedná se jednoznačně o vědeckou disciplínu a nikoliv o znalosti okamžitě použitelné v praxi. Nicméně se rozhodně seznámíme se základy zapisování protokolů. To je relativně jednoduchá syntax, popisující akce mezi komunikujícími stranami (Alice A, Bob B....). Ti navíc často mají k dispozici nějaké sdílené klíče K, server S a další objekty. Ještě se zmíníme o tzv. nonces, což je zkomolenina anglického „number used once“ - v bezpečnostní branži se tento termín skutečně čas od času používá. Použití není tak složité vymyslet - typicky se chce zabránit nějakému útoku pomocí opakování komunikace. V našem případě prezence nonce N bude většinou znamenat, že strana, co ji odesílá, ji vygenerovala, pro větší názornost můžeme použít NA apod. Jedna akce protokolu se skládá ze tří částí: kdo je odesilatelem, kdo je příjemcem a co je obsahem sdělení. Tj. kdo, komu a co. Komunikující strany jsou jasné, označíme je prostě písmenkem a mezi nimi uděláme šipku. listopad 2005
část 5, díl 2, kapitola 5, str. 6
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
Obsah sdělení si vysvětlíme také jednoduše: obecně je to nějaká n-tice hodnot. Tu budeme zapisovat do složených závorek, jakoby výčet (uspořádané) množiny. Za uzavírací závorkou budeme v dolním indexu psát, čím je tento obsah zašifrován. Musíme nějak odlišit jednotlivé klíče. Většinou KABC (nebo K(ABC) aby se nekumuloval dolní index) znamená klíč sdílený mezi subjekty ABC a z toho logicky KA či K(A) je tajný klíč A. PK(A) naopak znamená veřejný klíč A. Tedy příklad. Když Alice pošle Bobovi zprávu M, zašifrovanou jeho veřejným klíčem, píše se: A->B : {M}PK(B) Jednotlivé části zprávy mohou být také jakoby ucelené „podzprávy“, navíc něčím zašifrované. Jak se to zapisuje, je jasné z příkladu, ve kterém chce Alice Bobovi poslat unikátní náhodnou hodnotu N1 a zprávy M1 a M2, zašifrované jeho veřejným klíčem, a to celé chce zašifrovat společným (tajným) klíčem: A->B : {N1,{M1,M2}PK(B)}K(AB) Nyní tedy dost teorie a na nějaký autentizační protokol se podívejme. Kerberos
listopad 2005
Kerberos je robustní síťový autentizační systém, původně vyvinutý na Massachusetts Institute of Technology (MIT). Název je totožný se jménem známého tříhlavého psa z řecké mytologie, který střežil vstup do podsvětí. Vývoj protokolu probíhal v principu již od roku 1983, resp. právě v tuto dobu byl na MIT spuštěn projekt Athena, kterého byl Kerberos součástí. Athena byl v principu pokus o heterogenní síť, postavenou z přibližně deseti tisíc klientských počítačů (chtělo se, aby uživatel mohl pracovat na jakémkoliv z nich a defakto nepoznal rozdíl v přístupu k datům a aplikacím).
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kapitola 5, str. 7 díl 2, Kryptografie
Kerberos se dočkal několika verzí, konkrétně pěti, nicméně první tři jsou defakto věcí MIT. Pátá verze je zakotvena v RFC 1510 a 4120, někde se používá verze 4. Pozitivní je fakt, že MIT dal protokol volně k dispozici, pod licencí ne mnoho se lišící od BSD. Přestože jde o software, který je naprosto neznámý široké veřejnosti, právě díky jeho robustnosti a liberálnímu licencování se objevuje v mnoha zákoutích informačních technologií - lidé ho používají, aniž by o tom věděli. Tak například Windows 2000, XP a 2003 Server Kerbera používají jako základ svého autentizačního mechanismu. Stejně tak je Kerberos implementován v operačním systému MacOS. Pochopitelně se některé implementace dočkaly od svých vývojářů „vylepšení“, zpětně nekompatibilní s obecně platným standardem (z toho byl také přibližně před pěti lety obviňován Microsoft). To pochopitelně zas tolik nevadí, pokud jsou inovace drženy v rámci produktu, ale velmi problémové je prezentování něčeho takového navenek, s ambicemi prorazit jakožto „nový standard“. V principu Kerberos umožňuje komunikujícím stranám se proti sobě autentizovat, tj. navzájem si dokazovat svou identitu. Speciálně v dobách vývoje Kerberosu, bylo něco takového dost problematické. Je známo mnoho síťových nástrojů, které ačkoliv neměly naprosto žádné zabezpečení, byly přesto používány k tak zásadním úkonům jako třeba vzdálenému přístupu na server. Nicméně i dnes, resp. právě dnes, kdy se účty k různým IT službám plíží do našich životů na každém rohu, se stále spoléháme na několik desítek let staré autentizační metody. Kerberos dokáže udělat velký pokrok i v oblastech, na jejichž ve skutečnosti chudé zabezpečení jsme si i zvykli. Například se ví, že přinutit průměrného uživatele používat skutečně listopad 2005
část 5, díl 2, kapitola 5, str. 8
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
bezpečná hesla je problematické. Ještě detailněji: pokud se třeba z domova vzdáleně přihlásím na server A (pomocí bezpečného nástroje) a z něj na server B (také pomocí bezpečného nástroje), heslo „do“ B jde k A v otevřené podobě, i když mezi mnou a A, stejně tak mezi A a B, jsou nasazeny nejmodernější prostředky kryptografické ochrany! A právě nutnost takovéhoto demonstrování (doslova na každém rohu) tajných znalostí uživatelem k úspěšné autentizaci se Kerberos pokouší odstranit. Základní pojetí Kerbera je podobné reálnému životu. Všichni u sebe nosíme sadu autentizačních tokenů. Nemají většinou digitální podobu, proto jim říkáme průkazy. Takové kartičky obvykle tvrdí dva logické výroky. Zaprvé, že někde nějaká autorita dala nějaká práva identitě, která je popsána na průkazu. A za druhé, že popis má dostatečně dobré bezpečnostní vlastnosti na to, aby si kdokoliv mohl zkontrolovat jeho rovnost se skutečností ohledně dané osoby (jinými slovy, nikdo se nemůže „předělat“ tak, aby vypadal jako někdo jiný). Pro větší škálovatelnost průkaz často rozlišuje různé stupně oprávnění, např. k řízení motorových vozidel od - do obsahu v kubických centimetrech. Dále pak něco vyplývá implicitně z existence tokenu (nemůžete mít občanský průkaz, není-li vám alespoň 15 let). Nakonec na kartičce bývá uvedeno období platnosti. Z bezpečnostního hlediska je třeba mimo zmíněné změny vlastností „na“ někoho jiného ošetřit i potenciální možnost padělatelnosti - to se týká právě uvedených údajů (třeba datum platnosti) a fyzická příslušnost tím není dotčena.
listopad 2005
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kapitola 5, str. 9 díl 2, Kryptografie
Průkazům v systému Kerberos se říká lístky (tickets) a jejich paralela se zmíněnými průkazy je nesporná. Pokud si objekt na síti vyžádá potvrzení identity, uživatel se prokáže lístkem, který mu vydal tzv. Kerberos authentication server (AS). Pravost lístku je pak zkontrolována a v případě shody je autentizaci vyhověno. Pro zajímavost uveďme, že mimo Kerbera se v devadesátých letech používal protokol Bones. Ten fungoval přesně jako Kerberos, pouze jednotlivé zprávy nebyly šifrované. Bylo tomu tak kvůli nařízení na omezení vývozu kryptografických technologií vydaném americkou vládou. Kdesi na Internetu jsem četl vtipnou poznámku, že mezi logem obou protokolů by mohla být hezká paralela v tom smyslu, že pokud Kerberos bude mít ve znaku zmíněného tříhlavého psa, Bones (anglicky „kosti“) by mohl mít na tom samém místě kostru daného tvora. Velmi dobře by to tak ilustrovalo schopnosti obou protokolů. Předně je třeba říci, že i bezpečnost Kerbera závisí na heslech a z tohoto důvodu se předpokládá uživatelova znalost nutnosti skutečně bezpečných hesel. Obvykle v systémech, kde má jedno heslo nahradit několik dalších, nebývá tak obtížné uživatele správně instruovat, nechuť pamatovat si správná krkolomná hesla většinou vyplývá z toho, že člověk jich v životě má „hodně nedůležitých“ místo pár důležitých.
Jak systém pracuje
Jak za chvíli uvidíte, Kerberos je protokol, používající institut důvěryhodné třetí strany. Mezi jednotlivými účastníky a tímto prostředníkem musí být pro správnou funkci protokolu sjednána silná hesla, na kterých bezpečnost stojí.
listopad 2005
část 5, díl 2, kapitola 5, str. 10
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
Dále se na různých místech protokolu objevují nonce, jejichž účel je většinou stále tentýž - zabránit možnosti použití replay attack či nějakého podobného útoku. Čtenář většinou přijde na to, že bez těchto náhodných identifikátorů by vše fungovalo, až na nějakou formu útoku pomocí opakování spojení či odposlechu. Proto ne vždy budeme použití nonce identifikátorů detailně rozebírat. NeedhamSchroeder protocol
Needham-Schroeder protocol představuje pro Kerbera teoretický základ a další postupy se od něj odvíjejí. V následujícím příkladu předpokládejme, že klient A chce komunikovat s B a oba společně sdílí důvěryhodnou třetí stranu S (server). Alice sděluje serveru, že chce komunikovat s Bobem: A -> S {A, B, NA} Server Alici vrátí dvě zprávy - pro každou stranu jejich společný klíč (tzv. session key) a identifikaci druhé strany. Zpráva pro B je zašifrována jako část zprávy pro A: S -> A {B, K(AB), {K(AB), A}K(BS), NA}K(AS) Do systému tedy vstupuje session-key K(AB), který vygeneroval server. Bude použit pro další komunikaci mezi A a B. Zde jen poznamenám, že je třeba zajistit autenticitu odpovědi, za což se stará NA. V protokolu Kerberos, jak uvidíme, je na tomto místě udělána drobná změna. Že si Alice bude jista, odkud odpověď pochází, se zařídí obsažením jejího vlastního identifikátoru A na místě NA v odpovědi (při dešifrování podvrhu by poznala nesmyslnou hodnotu). Dále část {K(AB), A}K(BS) je v Kerberu posílána separátně, což je jen de-
listopad 2005
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kapitola 5, str. 11 díl 2, Kryptografie
tail, protože co je zašifrované K(AS), může Alice kdykoliv dešifrovat. V Needham-Schroederovi Alice nadále pošle klíč Bobovi: A -> B {K(AB), A}K(BS) Nyní proběhne již jen kontrola oboustranné znalosti společného klíče K(AB) - Bob pošle nějaké NB Alici, ovšem zašifrované tímto klíčem: B -> A{NB} K(AB) Alice provede s hodnotou nějakou jednoduchou operaci, kterou Bob zná, a výsledek pošle zpět: A -> B{f(NB) }K(AB) Je nutné dodat, že přesně v této formě se protokol Needham-Schroeder již nepoužívá. Jak vidíte, Bob nijak nekomunikuje se serverem S a veškeré informace se dozvídá od Alice až ve třetím kroku. To není zrovna nejvhodnější, hrozí její podvodné chování, např. opětovné vyvolání té samé komunikace. Jak záhy uvidíme, základ v N-D protokolu je více než evidentní, pouze do hry vstoupilo několik dalších věcí. Předně se server S pojmenoval Key Distribution Center (KDC) a rozdělil na dvě logické části: Authentication Server (AS) a Ticket Granting Server (TGS).
Kerberos protocol
Úvodní část Kerbera probíhá takřka stejně jako u N-S protokolu. Klient A musí oznámit serveru, s kým chce komunikovat, ten naopak odpoví podobnou dvojicí zpráv pro A a pro B. Abychom však předešli problémům s časováním, do obou z nich je ještě zahrnuta dvojice {TS,L}, která znamená čas serveru a dobu platnosti vygenerovaných údajů (lifespan). Tedy máme {K(AB), B, TS, L}K(AS) pro A a {K(AB), A, TS, L}K(BS) listopad 2005
část 5, díl 2, kapitola 5, str. 12
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
pro B. V následujícím kroku A přepošle B zprávu určenou pro B, navíc ještě zaručí aktuálnost zprávou {A, TA}K(AB) (tj. odešle svůj vlastní čas), B poté potvrdí spojení obdobně jako A v N-S protokolu, jen operaci provede na vlastní hodnotě TA. Je evidentní, že zpráva {K(AB), A, TS, L}K(BS) určená pro B je vlastní ticket, opravňující A k používání služby. Zpráva {A, TA}K(AB) lístek vhodně doplňuje, všimněte si, že je v ní obsažen čas klienta A, zatímco v ticketu je čas serveru. Pokud by se někdo snažil lístek opakovat, nepochodí. Bude si totiž muset obstarat zprávu, zašifrovanou klíčem K(BS), kterou mu bude muset vydat server, pochopitelně se správným časem. To znamená, že při podvodu by se oba časové údaje zásadním způsobem lišily. Časování je u Kerbera obecně, ale vlastně i u mnoha ostatních podobných protokolů, dost zásadní. Počítač, provozující službu, musí mít implementováno několik dalších mechanismů na správné zacházení s časem a lístky. TA a TS se totiž vždy liší alespoň o nějaký nenulový interval, tj. teoreticky hrozí zneužití v průběhu této povolené odchylky. Zprávě {A, TA}K(AB) se v angličtině říká authenticator a mimo uvedených údajů může obsahovat cokoliv dalšího, co je pro komunikaci mezi A a B třeba (např. nějaké další šifrovací klíče apod). Ticket Granting Server (TGS)
listopad 2005
Jak jsme již naznačili, v plné implementaci Kerbera se KDC rozděluje na dva odlišné funkční celky - Authentication Server (AS) a Ticket Granting Server (TGS). První z nich obstarává veškerou autentizační činnost, jak jsme ji až dosud popsali. TGS funguje víceméně pro zvýšení pohodlí. Zádrhel stále vzniká na začátku protokolu, kdy Alice dešifruje zprávu od serveru. K tomu je potřeba klíč K(AS), který typicky bude v zaheslované (zašifrované) podobě někde na disku
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kapitola 5, str. 13 díl 2, Kryptografie
u Alice. Nějaké cacheování připadá sotva v úvahu pro značné ohrožení soukromí, navíc protokol se nemusí využívat často a aby Alice skutečně heslo nemusela zadávat, muselo by být v paměti v otevřené podobě velmi dlouho. Ticket Granting Server funguje jako jakýsi prostředník mezi klientem a službou. Logicky je to jiný celek než Authentication Server, ale často se jedná o stejný program. Předtím, než se klient pokusí připojit k jakékoliv službě, připojí se pomocí AS k TGS, jako kdyby to byla jakákoliv jiná služba. Od AS obdrží ticket pro TGS - tomu se říká ticket granting ticket. Pokud se chce nadále připojit k další službě, nežádá klíč od AS, ale od TGS (odpověď je zašifrována nikoliv klíčem K(AS), ale pomocí session key mezi TGS a Alicí. Uvnitř zprávy je standardní K(AB) a vše ostatní probíhá podle výše uvedeného standardního schématu. Myšlenka za tímto procesem je ta, že bezpečnost TGT (ticket granting ticket) není nutné udržovat na tak vysoké úrovni jako hlavní heslo, protože se jedná o dočasnou informaci, mající dobu platnosti omezenou často na několik hodin.
listopad 2005
část 5, díl 2, kapitola 5, str. 14 díl 2, Kryptografie
listopad 2005
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kapitola 6, str. 1 díl 2, Kryptografie
5/2.6 SYSTÉM S/KEY A JEDNORÁZOVÁ HESLA
Hesla v informačních technologiích představují při ochraně dat jedno z největších rizik, protože mají blízko k lidem, nejnebezpečnějšímu článku informační bezpečnosti. Mnozí domácí uživatelé by raději měli služby jako e-mail, ICQ apod. úplně bez hesla, než aby si ho museli pamatovat. Při návrhu zabezpečení bychom proto měli přijít s něčím, co bude vysoký stupeň ochrany vyžadovat pokud možno samo z principu. Čím více se bezpečnostní opatření stanou pro uživatele nutná a nevyhnutelná, tím méně dostanou prostoru k jejich poddolováním slabými údaji (hesly). Obecně můžeme ve všech autentizačních systémech použít tři druhy ochrany: uživatel prokáže svou identitu tím, že něco ví (hesla), něco má (tokeny, čipové karty) nebo něco je (biometriky). První z těchto způsobů je pochopitelně nejvíce rozšířen, poslední naopak na své masivní rozšíření čeká. Zdá se, že autentizace vlastněním nějakého předmětu je doménou listopad 2005
část 5, díl 2, kapitola 6, str. 2
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
středních a speciálně větších organizací. Všechna řešení na této bázi jako by říkala, že jsou k použití jen (proč?) v případě, že „už o něco jde“. Že malá firma na tento způsob není „dost dobrá“. Vždyť defakto jedinou oblastí, kde jsou techniky autentizace předmětem masivně rozšířeny, jsou bankovní služby, oblast velice „honosná“. Mohlo by se zdát, že pokud nejste bankovní dům, není tato oblast pro vás. Výborná kvalita skoro bez investic
V této kapitole si ukážeme, že tomu není tak. Jednoduchým způsobem lze za jedno promile nákladů získat několikanásobné zlepšení ochrany, které se od korporátních a drahých elektronických kalkulaček kvalitou nebude řádově lišit. Jak uvidíme, největší překážkou v implementování systému „něco mám“ pak budou logovací „brány“, které nemáte možnost ani s najmutím průměrného programátora upravit pro svůj účel. Naopak, jste-li weboví programátoři (na webu se vše programuje lehce), máte skvělou možnost zabezpečit své aplikace o dva řády lépe než dosud. Prostě budeme používat jednorázová hesla, dalo by se říci. A použitelnost takového systému pak „schováme“ do nutnosti mít u sebe třeba ještě jednu kartičku velikosti kreditní karty nebo mobilní telefon (stačí ten, co máte). Základní nevýhoda použití standardních hesel je v nutnosti jejich opakování při každém přihlašování. Pokud někdo zachytil heslo jednou, bude mu dobré od této doby víceméně na vždycky (jeho změnu může udělat sám). Hrozí odposlech či logování klávesnice, „čmuchání“ po síťovém provozu a další. Myšlenka zlepšení je přitom velmi jednoduchá - prostě hesla nebudeme opakovat. Jednou použité heslo bude nenávratně pryč. Nehodnotné a nepoužitelné.
listopad 2005
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kapitola 6, str. 3 díl 2, Kryptografie
Nepleťte si jednorázová hesla s jednorázovým blokem. To byl způsob návrhu šifry, toto je systém autentizace s následným použitím jakékoliv šifry. První myšlenka ohledně realizace nás přivede na problém, jak budou jednotlivá hesla používána. Pokud nebude jedno, musí jich být více. V principu máme na výběr tři možnosti: - hesla budou závislá na pořadí, tj. budeme je používat postupně, - hesla budou závislá na čase, což znamená, že každé bude platné jen po nějaký časový interval, - hesla budou závislá na prováděných akcích, tj. pro různé akce různé heslo. Doposud tedy víme, že obě strany musí mít nějakým způsobem k dispozici „rezervoár“ hesel, které se budou používat podle nějakých přesně daných pravidel. Záměrně říkám k dispozici, protože není nutné, aby šlo přímo o výčet, pokud dokážeme shodu klienta se serverem spočítat nějak jinak (počáteční synchronizaci pomocí bezpečného kanálu neřešíme). Není pochopitelně možné, aby si člověk zapamatoval obrovský seznam kvalitních hesel složených z písmen a číslic.
Jak na jednorázová hesla
Nejjednodušší způsob je generovat hesla na obou stranách nějakou funkcí. Ideálně hashovací, kterou můžeme „točit“ stále dokola se zachováním všech kvalit defakto náhodných výstupů. Pro každý přístup ke službě vložíme minulý výstup hashe do jeho vstupu a obdržíme novou hodnotu. Ta bude použita jako následující heslo. Tentýž postup se musí odehrávat na obou stranách. Hesla mohou být předtištěna na malé kartičce - existuje mnoho programů, které neumí nic jiného než tisklistopad 2005
část 5, díl 2, kapitola 6, str. 4
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
nout hesla na obdélníkový papír o velikosti kreditní karty. Elektronickou verzi může představovat mobilní telefon a příslušná javová aplikace. Pokud se trochu porozhlédnete po Internetu, určitě najdete mnoho freewarových implementací standardu S/KEY, o kterém budeme hovořit dále. Dále je třeba uvážit, že investice do vývoje aplikace pro mobilní telefon na míru může problém jednorázově vyřešit za deset, dvacet tisíc korun. Program víceméně není nic jiného než použití (již hotové) knihovny s hashovacími funkcemi a jeden dva režijní dialogy. Jiný přístup představuje použití času. Víceméně stačí, aby midlet hashoval aktuální časový údaj zaokrouhlený řekněme na 20 sekund a z výsledku spočítal nějaké použitelně dlouhé číslo v desítkové soustavě. Třetí možností je naprogramovat výstupy tak, aby jejich hodnota závisela na nějakém vstupu. Přihlašovací obrazovka tedy zobrazí nějaký údaj, uživatel ho vepíše do „mobilní kalkulačky“ a obdrží nějaký výstup. Zde opět stačí údaj hashovat s nějakým tajným klíčem, uloženým v telefonu. Ten uživatel nezná, a proto nemůže autentizační údaj získat bez telefonu. S/KEY
listopad 2005
Systém S/KEY představuje standardizovaný algoritmus pro jednu z výše uvedených metod. Dokument popisující chování serveru a klienta v detailech je zahrnut v RFC standardu RFC 2289 - A One-Time Password System. Standardizace je jeho hlavní výhodou, protože narazíte-li nyní na jakýkoliv generátor, který bude o sobě tvrdit, že podporuje S/KEY, můžete ho „instantně“ použít bez jakéhokoliv dalšího programování. Softwarová výbava pro serverovou část je k dispozici na mnoha distribucích Unixu/Linuxu.
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
část 5, díl 2, kapitola 6, str. 5 díl 2, Kryptografie
Systém se snaží o maximální bezpečnost i v rámci protokolu jako takového. Kupříkladu v algoritmu uvedeném výše není nutné, aby server vůbec věděl, jaké následující heslo bude. To je skvělá věc, že ani u jednorázových hesel nemusí být heslo vůbec přítomné na serveru. Použijeme k tomu způsob, který jsme si ukazovali u databází. Tam jsme do tabulek dávali hesla v hashované podobě. Klíčový nápad je, že jednotlivá jednorázová hesla nejdříve předgenerujeme na klientovi, následně je budeme klientovi posílat pozpátku, od posledního. Podívejme se, jak bude celá situace vypadat: klient postupně vygeneruje p[1]=h(p[0]), p[2]=h(p[1]), p[3]=h(p[3]) atd. Je třeba algoritmus synchronizovat, což se stane posláním hodnoty p[n] serveru. Nyní při každém přihlašování stačí, aby klient vždy poslal heslo s pořadovým číslem o jedno menší. Server kontrolu provede tak, že obdržený údaj zahashuje a porovná s hodnotou, kterou má uloženou z minulé relace. Pokud se rovnají, autentizace proběhla v pořádku a nyní stačí jen v paměti nahradit původní hodnotu za novou. Do celého systému lze bez problémů dodat vlastní heslo, které si uživatel pamatuje. Typicky to bývá na počátku generování, kdy se spolu s přihlašovacím jménem použijí jako prvotní, nultá hodnota. Nebo je také možné heslo implementovat přímo na telefonu - uložená inicializační hodnota bude zašifrována, tj. bez správného hesla se budou generovat nesmyslná jednorázová hesla. Nicméně pro programátora by neměl být problém o tento systém obohatit víceméně jakoukoliv již funkční autentizaci.
listopad 2005
část 5, díl 2, kapitola 6, str. 6
BEZPEČNÁ POČÍTAČOVÁ SÍŤ
díl 2, Kryptografie
Existuje dobrý důvod, proč implementovat ochranu heslem (i) na mobilním telefonu. Ten má totiž obrovskou výhodu ve stále ještě jednoduchém prostředí. Oproti tomu standardní PC je velmi nehomogenní prostředí, kde si, co se bezpečnosti týče, běžný uživatel nemůže být vůbec ničím jistý. Přeci jen přeprogramovat firmware tak, aby zachytával stisky kláves, nahrát ho nepozorovatelně do cizího telefonu atd. je stále ještě relativně obtížné. Na druhé straně v dnešní době děravých prohlížečů je něco takového na PC relativně snadné. Zpětné inženýrství
Rozdíl mezi takto podomácku naprogramovanou elektronickou kalkulačkou a tou, kterou jste obdrželi od své banky, je v možnosti zpětného inženýrství. Přestože jsme dokázali do autentizace přidat nutnost vlastnění nějakého předmětu, paměť mobilního telefonu může být např. při krádeži lehce přečtena. To může být provedeno tak rychle, že zloděj telefon bez problémů vrátí a uživatel nic nepozná. Pak bohužel není problém java aplikaci pustit v nějakém simulovaném prostředí a zpětně analyzovat stav generování hesel. Naopak v případě použití profesionální bezpečnostní kalkulačky je hardware přímo navržen tak, aby k přečtení uložených hodnot pokud možno nemohlo dojít. Nutno podotknout, že právě v této oblasti probíhá na obou frontách intenzivní výzkum a stále se rodí nové a nové techniky, jak čipy otevřít a jejich obsah přečíst.
listopad 2005