![]() Specializovaný týdeník o výpočetní technice |
|
![]() |
Seriál o bezpečnosti a informačním soukromí |
Část 33 - CW 46/97
Kryptografické protokolyJan Paseka
Význam slova protokol (kromě jiného) je obvykle popsání způsobu umístění a uspořádání účastníků nějaké mezinárodní (diplomatické) konference, a to včetně pořadí jednotlivých vystoupení, případně dalších náležitostí (oblečení apod.). Občas jsou jednání o protokolu takovéto akce delší než akce sama.
Kryptografický protokol je pak algoritmus (přesně specifikovaná posloupnost operací a výměny dat), určený pro komunikaci mezi různými stranami a využívající kryptografické transformace. Konkrétní kryptografický protokol vychází z požadavků komunikujících stran a při jeho dodržení by mělo být splnění požadavků zajištěno. Kryptografický protokol specifikuje, jakým způsobem každá strana vysílá, přijímá a odpovídá na zprávy, a to včetně chybných nebo ilegálních zpráv. Protokol může rovněž specifikovat požadavky na definici prostředí, jako je např. nastavení knihovny veřejných klíčů. Strana, která se řídí protokolem, bude ochráněna proti specifikovaným nebezpečím i v tom případě, že ostatní strany se protokolem neřídí. Účelem protokolu je například výměna kryptografických klíčů pro následný přenos šifrovaných dat, autentizace účastníků protokolu, generování kryptografických klíčů apod. K jednoduchým příkladům požadavků komunikujících stran patří to, že některé komunikující strany mohou chtít sdílet své utajené informace, aby dosáhly společného cíle, nebo chtějí spojit své možnosti, aniž by žádná z komunikujících stran seznámila ostatní se svou informací, nebo jedna ze stran chce přesvědčit ostatní, že je jí známá nějaká tajná informace, aniž by ji zveřejnila atd. Nejjednodušším příkladem kryptografického protokolu je např. přenos elektronické pošty, kdy je odesílaná zpráva zašifrována veřejným klíčem příjemce, a proto ji může dešifrovat pouze on. Ovšem příjemce neví, zda mu tuto zprávu zasílá přítel či nepřítel, který se za něj vydává. Proto je vhodné na nezašifrovanou zprávu použít soukromý klíč odesilatele a pak veřejný klíč příjemce. Pak příjemce následovně dešifruje zprávu svým soukromým klíčem a veřejným klíčem odesilatele. Spolehlivost této metody je založena na důvěryhodnosti správce veřejných klíčů. Totéž platí samozřejmě u určení příjemce (falešný příjemce, který by získal přístup na server důvěryhodné instituce a zaměnil by veřejný klíč správného příjemce svým veřejným klíčem, by mohl číst zprávy určené správnému příjemci).
Protokol typu stále uzavřené truhly Protokol typu stále uzavřené truhly vypadá takto (za předpokladu, že operace šifrování a dešifrování jsou pro všechny účastníky protokolu vzájemně záměnné a účastníci se mohou přesvědčit o své identitě): odesilatel zašifruje zprávu svým klíčem a odešle ji příjemci, příjemce totéž provede se zašifrovanou zprávou se svým klíčem a odešle odesilateli. Odesilatel dešifruje tuto zprávu a obdrží svou původní zprávu zašifrovanou klíčem příjemce. Takto zašifrovanou zprávu odešle příjemci, který ji následně dešifruje svým klíčem a obdrží původní zprávu odesilatele.
Hod mincí po telefonu Dalším jednoduchým příkladem protokolu je tzv. hod mincí po telefonu. Dvojice manželů se chce po telefonu domluvit, kam pojedou na prázdniny -- zda k babičce do Jižních Čech nebo na zájezd do Španělska. Manžel preferuje Španělsko, manželka babičku. Dohodnou se, že manželka provede náhodný výběr tak, že manžel (odesilatel) odešle dvě zprávy zašifrované pomocí symetrického šifrovacího systému (jedna je "hlava" -- jede se do Španělska a druhá "orel" -- jede se k babičce). Manželka (příjemce) si z nich jednu vybere a pokračuje stejně jako v předchozím protokolu. Na konci protokolu manželka přečte otevřenou zprávu -- padla hlava a oba manželé si pro kontrolu po telefonu sdělí své tajné klíče.
Zero-knowledge protocol Věnujme se nyní protokolu s nulovým rozšířením informací (angl. zero-knowledge protocol), což je dvoustranný protokol; jedna strana se nazývá dokazovatel, druhá prověřovatel. Dokazovatel zná nějakou skutečnost a přeje si přesvědčit pomocí protokolu prověřovatele o této skutečnosti. Prověřovatel se chce pomocí protokolu přesvědčit o platnosti této skutečnosti právě tehdy, když je tato skutečnost pravdivá. Přesněji, dokazovatel (jestliže jedná podle protokolu) bude schopen přesvědčit prověřovatele o platnosti skutečnosti, pokud je tato skutečnost pravdivá, ale dokazovatel (dokonce i když se pokusí podvádět) nebude mít žádnou podstatnou šanci v přesvědčení prověřovatele o platnosti skutečnosti, pokud tato neplatí. Přitom si dokazovatel nepřeje podat žádnou informaci o podstatě skutečnosti (např. důvody, proč skutečnost platí). Základními příklady tohoto protokolu jsou schopnost faktorizovat nějaké přirozené číslo či schopnost nalezení řešení nějakého matematického problému v polynomiálním čase. Obvyklým jednoduchým příkladem protokolu s nulovým rozšířením informací je tzv. jeskyňka -- dokazovatel má přesvědčit ověřovatele, že zná heslo k tajným dveřím rozdělující kruhovitou jeskyni na pravou a levou část, přičemž vchod pro obě části je společný. Protokol pak vypadá následovně: Dokazovatel vejde do náhodné části jeskyně tak, že prověřovatel, který stojí mimo jeskyni nevidí, do které části vešel. Prověřovatel pak vejde do vchodu jeskyně a zavolá na dokazovatele stojícího již u uzavřených dveří, kterou částí má k němu přijít. Zná-li dokazovatel tajné heslo, může vždy správně vyjít. Nezná-li ho ale, má pouze 50% šanci, že vešel do správné části a po dostatečném počtu opakování výše uvedeného postupu prověřovatel zjistí, že klamal. Navíc prověřovatel nemůže ubezpečit nikoho jiného než sebe, že dokazovatel tajné heslo zná. Z praktických verzí protokolu s nulovým rozšířením informací se jedná o použití při identifikaci (identifikační a kreditní karty, počítačová hesla). Totiž dokazovatel dokáže, že je pověřená osoba, aniž by prověřovateli (který může hrát falešně) sdělil své heslo či jinak přenechal informaci, jak za sebe vystupovat.
Volby Co nás možná čeká v příštím roce, jsou předčasné volby. Jaký je ideální způsob jejich realizace, aby byly bezpečné a odpovídaly požadavkům na ně kladeným? Protokol tradičního volebního systému je velmi jednoduchý. Korektnost voleb je zajištěna tím, že každý volič je při příchodu do volební místnosti pozitivně identifikován (na základě občanského průkazu, resp. znalostí člena volební komise) a v průběhu voleb je vytvářen záznam těch voličů, kteří již odvolili. Tajné hlasování je zajištěno volební plentou -- nikdo nemůže vidět, jak který volič volí (až na speciální, zákonem předem stanovené případy -- invalidé aj.). Prověřitelnost výsledku voleb by měla být zajištěna opětovným sečtením volebních lístků, které by měly být do konce určitého období uschovány a nepřístupné. Spojení mezi voličem a volební obálkou je ukončeno po vložení obálky do urny. Volební obálky jsou otvírány jako celek -- jediným spojením s voličem je tedy lokální volební místnost a počet hlasů, které byly na základě příslušné komise sečteny. Bohužel, je dobře známo, že se během existence tohoto protokolu vyskytly různé typy podvodů. Například sdělení volebních komisí při sčítání neodpovídala skutečnosti. Jiná, inteligentnější možnost spočívá v tom, že volební lístky se počtem a jmény kandidátů neliší, zato ale jejich pořadím. Lze tedy na základě volebního lístku identifikovat příslušného voliče. Předpokládejme, že se naše volby budou realizovat pomocí počítačové sítě. Pak zde jako hlavní požadavky vystupují zároveň požadavek legitimity a požadavek utajení, což jsou zdánlivě dva zcela nesourodé požadavky, protože jak může být zajištěno utajení, když se volič musí prokázat? Popišme ve zkratce dvě hlavní metody. V metodě zašifrování volby volič provede svou volbu veřejně, ale v zašifrovaném tvaru. Jednotlivé volby pak nesmí být dešifrovatelné, ale musí být možné provést celkové spočítání volebních hlasů. Druhá možnost je provést volby anonymně, ale společně s důkazem oprávnění volit, což je informace obdržená od volební komise dopředu, přičemž nesmí být možné rozpoznat z důkazu oprávnění, o jakého voliče se jedná. Zároveň voliči nesmí být schopni samostatně vytvořit důkaz oprávnění. Na závěr poznamenejme, že je obvykle velmi obtížné předložit matematický důkaz bezpečnosti protokolu samotného nebo v závislosti na použití šifrovacího systému, což je dobře známo při analýze obvyklých algoritmů. Navíc případ kryptografických protokolů navíc v sobě zahrnuje to, že každý z účastníků má jistou výpočetní sílu a usuzovací schopnosti, závisející na předtím obdržených informacích, čímž se celý proces dokazování stává ještě náročnějším. Přitom je potřebné, aby každý navržený protokol byl zkoumán co nejpodrobněji, aby byla nalezena jeho případná slabá místa, která by umožnila jeho obcházení či zneužití. Za tímto účelem byly vypracovány speciální metody dokazování správnosti a síly protokolu. To vše však nemění nic na tom, že vhodně utvořené protokoly, z nichž některé budou pojednávány v dalších částech seriálu, nám zajistí bezpečnější a důvěryhodnější svět. | COMPUTERWORLD - seriál o bezpečnosti | COMPUTERWORLD | IDG CZ homepage | |