Kryptografie Jan Paseka 11. února 1998 Úvod Od chvíle co existují tvorové obdaření řečí, existují i důvěrná sdělení, jež jsou určena jen pro jedinou osobu nebo jen pro zcela určitý okruh lidí, přičemž pro ostatní osoby mají být nedostupná. Jakým způsobem lze „bezpečně" předat zprávu, tedy tak, že nikdo nežádoucí nezjistí obsah této zprávy? S tím pak souvisí téměř ještě důležitější otázka: Jak můžeme dosáhnout toho, aby zpráva skutečně dorazila k příjemci a sice právě v tom stavu, jak byla odeslána? Obvykle jsou dvě možnosti, jak tyto problémy vyřešit. První z nich je zamlčení existence zprávy. Mohli bychom napsat důvěrnou zprávu například pomocí neviditelného inkoustu nebo ji poslat pomocí důvěryhodné osoby. O toto se ve všech dobách pokoušeli tajně zamilovaní - a téměř všechny klasické tragédie svědčí a selhání těchto snah. Jiná možnost spočívá v zakódování důvěrné zprávy. V tomto případě se neu-tajuje její existence. Naopak: Zpráva se předá pomocí nejistého kanálu, ale tak „zašifrovaná", aby nikdo - mimo skutečného příjemce - nemohl zprávu „rozšifrovat". Zde se jedná o vědomě proradnou výzvu soupeři; takovéto výzvy bývají zpravidla také přijaty - a ne zřídka se hra obrátí. Dále je zajímavý problém integrity a autentičnosti dat. Zde se jedná o to, aby zpráva byla chráněna proti neoprávněné změně. Až do nedávna byly armáda a tajné služby jediný subjekt, který se profesionálně zabýval s takovýmito systémy utajení. Pouze v tomto odvětví byla dostatečná motivace - a odpovídající peněžní prostředky - na vyvinutí šifrovacích strojů, což byly chytré mechanické zázraky. Skutečnost, že se kryptologie účastnila zrodu moderních počítačů, má symbolický charakter. S ohromným rozšířením elektronického zpracování dat se kryptologie postavila na nový základ. To má různé příčiny a to: • Při pokusu o prolomení nepřátelského systému se musí zpracovat obrovská množství dat (řetězce písmen, sloupce cifer); musí se srovnat data, spočítat průměrné hodnoty, štandartní odchylky a mnoho jiného - to všechno jsou věci, které počítač zvládne mnohem rychleji a lépe než člověk. Důsledkem je pak, že kryptosystémy, které se v současnosti používají, musí být podstatně komplexnější než jejich předchůdci před dvěma generacemi. • Z druhé strany umožňuje moderní hardware a software implementaci komplexních a náročných matematických algoritmů. Pomocí těchto algoritmů lze dosáhnout takového stupně jistoty, který v historii nemá obdoby: malý přírůstek komplexity algoritmu vede k obrovskému nárůstu zdrojů nutných k prolomení systému. Vtip moderní kryptologie spočívá v tom, že počítač není jenom příčinou mnoha problémů, nýbrž i klíčem k jejich řešení. • Vstupem elektronického zpracování dat a obzvláště elektronické komunikace do stále více odvětví se otevírají zcela nová pole působnosti pro kryp-tologii. Vedle „klasického" vojenského použití nastupují na kryptologii zcela nové požadavky. Není nutné mít mnoho věšteckého nadání k předpovědi, že kryptologie (která se nyní stává seriózní vědou) zažije v příštích letech další razantní rozvoj. Z novodobých problémů kryptologie vyjmenujme následující: • Mnoho telefonních hovorů je v současnosti zprostředkováno přes satelit. Tímto je umožněno, že v principu kdokoliv je schopen tyto hovory odposlouchávat. Tedy alespoň tajné telefonní hovory je nutno tak šifrovat, že odposlouchavač slyší pouze slátaninu tónů. • Podobný problém se týká placené televize. Zde spočívá problém v tom, že se neautorizovaný uživatel chce podívat na svoje oblíbené filmy, aniž by za to platil. Pomocí prostředků na rozpoznání autentičnosti uživatele se tomuto lehce zabrání. • V stále rostoucí míře se provádí převody peněz elektronicky („Homebanking, electronic cash"). Zde je nutná elektronická náhrada obvyklého podpisu vlastní rukou. Přitom tzv. elektronický podpis je v mnohém směru lepší než obvyklé podepsání. • Většina nynějších středních a větších počítačů je tak uzpůsobena, že mnoho uživatelů může navzájem nezávisle pracovat s počítačem (multiuser systémy). V takovýchto situacích se počítač musí přesvědčit o identitě uživatele. V současné době se to děje pomocí hesla; v budoucnosti toto bude u situací souvisících s obzvláštní bezpečností nahrazeno „čipovou kartou". • Zároveň se můžeme zmínit o „počítačových virech". To jsou programy, které prakticky nepozorovaně vniknou do počítačového programu; mají schopnost se samostatně reprodukovat a to je důvodem k vzniku velkých škod na programovém, datovém i hardwarowém vybavení počítače. Zhruba řečeno, virus změní svůj „hostitelský program"; lze tedy použít s úspěchem k rozpoznání viru metodu autentičnosti programu. 3 Každý, kdo má něco společného s těmito nebo jim podobnými aplikacemi, bude souhlasit: „Ovšemže potřebujeme bezpečnost! Ale - proč má být kryptolo-gie všelék? Nejsou k dispozici jiné metody, abychom získali potřebnou jistotu?" Přirozeně, jsou jiné metody! Pomyslete na techniky vyvíjené po staletí, aby byly naše bankovky bezpečné proti falšování: speciální papír, komplexní (mnohdy dokonce krásné) obrazy, perfektní tisk, vodoznak a mnoho jiného. Tedy ještě jednou: Proč kryptologie? f Odpověď je jednoduchá: Kryptologie je lepší! Důvodem proto je: Kryptologie je matematická disciplína. To může znít nadneseně, ale není tomu tak: Matematika poskytuje - alespoň v principu - teoretické odůvodnění pro sílu algoritmu nebo šifrovacího protokolu. S matematikou lze (v ideálním případě) dokázat, že kryptografický algoritmus má jistý stupeň bezpečnosti. A jakmile je jednou bezpečnost algoritmu jednou matematicky dokázána, není žádných pochyb o tom, že algoritmus je skutečně bezpečný; nemusíme se pak spoléhat na (zpravidla rozporuplné) posudky expertů, nepotřebujeme se odvolávat při posuzování bezpečnosti na „technologii dneška" (která může být zítra úplně jiná), atd. Je však nutno přiznat, že takovéto důkazy se podařily jen ve velmi málo případech. Avšak přesto: matematika je důvěrohodný nástroj pro systematické zkoumání kryptosystémů (tzn. návrh a analýza). To je důvod, proč dáváme kryp-tologickým mechanismům v případě pochyb přednost před jinými bezpečnostními systémy: In dubio pro mathematica Věda, která se zabývá se všemi těmito problémy (a mnoha dalšími) se nazývá kryptologie nebo také kryptografie. Jí jsou věnovány následující stránky tohoto učebního textu, který si neklade žádné nároky na úplnost či původnost. Případné komentáře či kritické připomínky k textu očekávám nejlépe na e-mailové adrese paseka@math.muni.cz či jinou formou. Text je průběžně doplňován a měněn a je umístěn k volnému použití na ftp serveru oboru matematika PřF MU. Části textu jsou tvořeny referáty či obrázky a grafy zpracovanými studenty M. Kučerová, M. Misáková, J. Mráka, A. Rozsypal, R. Sedláček, Svitel a E. Žáčkova v rámci stejnomenné přednášky na Přírodovědecké fakultě Masarykovy univerzity. Veškerá zodpovědnost za styl a obsah však padá na moji hlavu. 4 Obsah 1 Caesar neboli Každý začátek je lehký! 9 1.1 Spartská skytála............................ 10 1.2 Posouvací šifry ............................ 11 1.3 Monoabecední šifrování........................ 15 1.4 Záměnné šifry............................. 16 1.5 Klíčová slova ............................. 18 1.6 Kryptoanalýza............................. 18 2 Proč jednoduše, když to jde i složitě? 23 2.1 Zneprůhlednění četností ....................... 23 2.2 Vigenerova šifra............................ 25 2.3 Kryptoanalýza............................. 27 2.3.1 Kasiského test......................... 28 2.3.2 Friedmanův test........................ 29 2.3.3 Určení klíčového slova .................... 34 2.3.4 Závěrečné poznámky..................... 35 3 Dopřejme si jistoty neboli trochu teorie 37 3.1 Šifrovací systémy........................... 37 3.2 Perfektní bezpečnost......................... 38 3.3 Redundance přirozeného jazyka a bod unicity........... 46 4 One-time Pad 55 4.1 Posouvací registry........................... 56 4.2 Kryptoanalýza lineárních posouvacích registrů........... 60 5 Výpočetní složitost 63 5.1 Obtížnost problému.......................... 63 5.2 P=polynomiální čas ......................... 66 5.3 N P = nedeterministický polynomiální čas............. 69 5.4 NP-úplné a NP-těžké problémy................... 70 5.5 Složitost kombinačních obvodů.................... 71 5.6 Náhodné algoritmy.......................... 72 6 OBSAH 6 Autentičnost a digitální podpisy 73 6.1 Motivace................................ 73 6.2 Integrita a autentičnost........................ 74 6.2.1 Symetrická autentičnost................... 74 6.2.2 Asymetrická autenticita ................... 76 6.2.3 Message-Authentication-Code................ 76 6.3 Autentičnost uživatele........................ 80 6.3.1 Zero-Knowledge protokol................... 83 6.4 Čipové karty.............................. 88 6.4.1 Cipové karty na kontrolu vstupu............... 88 6.4.2 Nákupy s čipovou kartou................... 90 7 Asymetrické šifrovací systémy neboli systémy s veřejným klíčem 93 7.1 Asymetrické šifrovací systémy.................... 93 7.2 Elektronický podpis.......................... 95 7.3 Idea funkce s vlastností padacích dveří............... 99 7.4 RSA-algoritmus............................ 100 7.5 Diskuse RSA-algoritmu........................ 103 7.6 Systémy založené na ruksakové metodě............... 104 7.7 Systém s veřejným klíčem se složitostí stejnou jako faktorizace . . 107 7.8 Jak se napadá RSA-algoritmus?................... 118 7.9 Diskrétní logaritmus......................... 129 7.10 Rychlejší podpisy ale méně bezpečnosti............... 131 7.11 Kódy opravující chyby jakožto systém s veřejným klíčem..... 133 7.12 Digitální peníze............................ 134 7.13 Náročnější protokoly......................... 137 7.13.1 Bezpečné volby........................ 137 7.13.2 Bezpečné víceúčastnické počítání.............. 147 7.13.3 Šíření anonymních zpráv................... 151 8 Šifrový standard DES a jeho kolegové 153 8.1 Potřeba a historie vzniku DES.................... 153 8.2 Popis šifrovacího algoritmu DES................... 155 8.3 Kritika šifrového standardu ..................... 164 8.4 Použití NP-těžkých problémů v šifrovacích systémech....... 174 8.5 GOST aneb GOsudarstvennyj STandart .............. 175 8.6 Proudová šifra RC4.......................... 180 8.7 Šifrovací algoritmus IDEA...................... 183 8.7.1 Základní vlastnosti šifrovacího systému IDEA....... 183 8.7.2 Popis systému IDEA..................... 183 8.7.3 Kryptoanalýza systému IDEA................ 185 8.8 PGP - Pretty Good Privacy..................... 186 OBSAH_7 9 Náhodné šifrování 189 9.1 Náhodnost v šifrovacím procesu...................190 9.2 Sémantická bezpečnost a Goldwasser-Micaliho schéma.......191 9.3 Kryptograficky bezpečná pseudonáhodná čísla...........195 9.4 Wynerův kanál............................198 9.5 Pravděpodobnostní podpisovací schémata..............202 A Obecná pravidla kryptologie 205 B Charakteristika českého jazyka 207 C Charakteristika anglického jazyka 211 D Charakteristika německého jazyka 215 8 OBSAH Kapitola 1 Caesar neboli Každý začátek je Nun-e-zuz-o-fuf-e-juj! Bub-u-dud-e-šuš o-sus-vuv-o-bub-o-zuz-e-nun! Pup-o-zuz-o-rur! Tut-o juj-e tut-e-nun vuv-rur-a-huh! Astrid Lingrenová Při každém zakódování musí být příjemce vždy o něco před útočníkem. S pomocí této informace může příjemce zprávu rozšifrovat; tato informace nesmí být žádnému útočníkovi k dispozici, neboť by útočník byl schopen rozluštit zprávu zrovna tak lehce jako příjemce. O této exkluzivní informaci mluvíme jako o klíči. Klasické šifrovací metody jsou založeny na tom základě, že odesilatel a příjemce mají společný šifrovací klíč, se kterým odesilatel zprávu zašifruje a příjemce ji rozšifruje; takováto metoda se nazývá symetrická. V dalším uvidíme, že existují také asymetrické šifrovací algoritmy: v těchto systémech potřebuje pouze příjemce tajný klíč. V této kapitole se budeme zabývat v jistém slova smyslu pouze těmi nejjed-noduššími šifrovacími algoritmy a to takovými, že v nich je jedno a totéž písmeno nahrazeno jedním a tímtéž symbolem. Například písmeno e obsažené v textu by se zašifrovalo pomocí písmena K. Nejdříve několik slov k terminologii. Pojmy kryptologie a kryptografie pochází z řeckých slov Kpvnroa (tajný) a Xojoa (slovo, smysl) a ypapeiv (psát).Obě slova označují umění a vědu, která se zabývá rozvojem metod k utajení zpráv. (Mnozí autoři rozlišují mezi kryptografií, tj. vědou o vývoji kryptosystémů a kryptoanalýzou, uměním tyto kryptosystémy a prolomit a označují slovem kryptologie, spojení těchto věd.) Text, řetězec znaků nebo písmen, který chceme zprostředkovat se nazývá zpráva; obvykle budeme zprávu reprezentovat pomocí malých písmen a, b, c,.... * 10 Caesar neboli Každý začátek je lehký! Zašifrovanou zprávu budeme nazývat kryptogram; tento pak budeme psát pomocí velkých písmen A, B, C,____Šifrovací postup nazýváme šifrování, odšif- rovací postup dešifrování. Odesilatel tedy šifruje, zatímco příjemce musí dešifrovat, aby si mohl přečíst zprávu. Texty, které budeme šifrovat, se skládají z písmen; tato písmena jsou prvky nějaké abecedy. V prvních dvou kapitolách bude obvykle naše abeceda přirozená abeceda {a, b, c,...}. Budeme také vybírat za abecedu např. množinu {1,..., 26}, množinu {0,1} nebo také množinu {(ai,..., a^) : £ {0,1}} všech binárních posloupností délky 64 v případě, že to bude pro naše úvahy vhodné. V rozporu s nadpisem kapitoly začínají dějiny kryptografie před Caesarem. Historie začíná asi před 2500 lety. Jak dobře víme z díla řeckého dějepisce Plutar-cha, používala vláda ve Spartě následující lstivou metodu pro přenos tajné zprávy pro své generály: odesilatel a příjemce museli mít oba tzv. skytálu: byly to dva válce o přesně stejném průměru. Odesilatel navinul úzkou pergamenovou pásku spirálovitě okolo své skytaly a napsal pak podle délky svou zprávu na pásku. Po odmotání pásky mohla zprávu číst jen ta osoba, která měla skytálu stejného rozměru - doufejme, že to byl pouze příjemce. Uvažujme nyní příklad převedený do moderního jazyka. Představme si, že jsme zachytili list papíru, na kterém čteme následující řetězec písmen: Skytala odesílatele má průměr, který můžeme vyjádřit pomocí počtu písmen. Můžeme tedy jednoduše vyzkoušet různé rozsahy u. Zvolíme-li u = 7, dostaneme následující nesmysl: 1.1 Spartská skytala UNDTLATEDZEEIOVEMEJKSSMYNZ.EOI IELAENLTCTENLOIEKRZOAMKKIUENN U N D T L A T E D Z E E I O V E M E J K S S M Y N Z 0 1 I E L A E N L T C T E N L 0 1 E K R Z 0 A M K K 1 U E V N E zvolíme-li ale uspořádání textu pro u 9, dostaneme: 1.2 Posouvací šifry 11 U N D T L A T E D Z E E I O V E M E J K S S M Y N Z E 0 1 I E L A E N L T C T E N L 0 1 E K R Z O A M K K I U E V N Skytala je prototyp transpozičního algoritmu; přitom písmena zůstávají, co jsou, nezůstanou však, nejsou. Nejedná se o nic jiného, než o permutaci míst písmen. Transpoziční algoritmy jsou důležitým stavebním kamenem pro moderní algoritmy. Jinou složkou jsou substituční algoritmy; u nich se zpráva stane nečitelnou tím, že každé písmeno se nahradí jiným, ale jeho pozice zůstane zachována. A nyní nastává doba pro vstup Caesara na scénu. 1.2 Posouvací šifry Jeden z prvních, kdo používal kryptologické techniky, byl římský vojevůdce a státník Gaius Julius Caesar(100-44 př. n. 1.). U Suetona (Caes. LVI) můžeme číst Exstant et [epistolae] ad Ciceronem, item ad familiares de rébus, in qui-bus, si qua occultius perferenda erant, per notas scripsit, id est sic structo litterarum ordine, ut nullum verbum effici posset; quae si qui investigare et persequi velit, quartam elementorum litteram, id est D pro A et perinde reliquas commutet. Překlad zní přibližně následovně Existují také [Caesarovy dopisy] Cicerovi a známým o věcech, v kterých psal tajným písmem, pokud něco muselo být důvěrně sděleno. Tzn. změnil pořadí písmen tak, že nešlo zjistit jediné slovo. Pokud někdo chtěl toto rozluštit o poznat obsah, musel dosadit čtvrté písmeno abecedy, tedy D, Zel cl podobně toto provést se zbývajícími písmeny. Šifru použitou Caesarem obdržíme tím způsobem, že místo abecedy zprávy budeme psát abecedu kryptogramu, ale o 23 míst doprava, což znamená totéž, jako posunutí doleva o 3 místa: Zpráva: Kryptogram: abcdefghijklmnopqrstuvwxy z ABCDEFGHIJKLMNOPQRSTUVWXYZ. 12 Caesar neboli Každý začátek je lehký! Šifruje se tím způsobem, že nahradíme písmeno zprávy pod ním stojícím písmenem kryptogramu. Například ze slova „zprava" se stane zdánlivě nesmyslné slovo „CSUDYD". Dešifrování je zrovna tak jednoduché: Každé písmeno kryptogramu se nahradí nad ním stojícím písmenem zprávy. Člověk se ovšem může ptát, proč Caesar zvolil právě posunutí o 3 místa. Odpověď je jednoduchá: nebyl na to vůbec žádný důvod! Samozřejmě můžeme posunout abecedu o libovolný počet míst. Protože se naše abeceda sestává z 26 písmen, existuje právě 26 takových šifrování; mluvíme o posouvacích neboli aditivních šifrách a mezi nimi je samozřejmě triviální šifrování a —>■ A, b —>■ B, ..., z —>■ Z, které samozřejmě nikdo nebude používat k šifrování tajných zpráv. Vyjasněme si na této nejjednodušší třídě šifer pojmy „šifrovací algoritmus" a „klíč". Šifrovací algoritmus je bezprostředně vidět na šifrování slova zprava. Naproti tomu klíč je např. počet míst, o která je nutno posunout abecedu. Klíč nám přesně popisuje, jak se algoritmus použije ve speciální situaci. Partneři, kteří spolu komunikují, se musí dohodnout o šifrovacím algoritmu a o způsobu přenosu klíče. Šifrovací algoritmus a klíč mají dvě zcela rozličné funkce a musí být proto zcela jasně rozlišitelné. Algoritmus jako takový je zpravidla velmi „velký". Přitom mnoho algoritmů se realizuje pomocí mechanického zařízení nebo spočívá na více či méně veřejně přístupném postupu. Z toho plyne, že algoritmus nelze v podstatě udržet v tajnosti. To pak znamená, že celková bezpečnost krypto systému leží na utajení klíče. Tento požadavek se zdá být přehnaný, je ale nanejvýš realistický: pro někoho, kdo chce neoprávněně číst naši zprávu, je srovnatelně lehké získat algoritmus (např. odcizit či zkopírovat přístroj). A pak tento zlosyn ví vše o algoritmu; nezná ale (doufejme) současný klíč. Z toho nutně plyne, že klíč je nutno předat bezpečnou cestou. K čemu pak vůbec šifrování zprávy? V tom případě jsme mohli hned přenést celou zprávu touto bezpečnou cestou! - Tato námitka je plně oprávněná, lze ji však následujícími argumenty podstatně zmírnit. 1. Zpráva bývá zpravidla velmi dlouhá, klíč se obvykle volí co nejkratší. Dodatečná námaha pro spolehlivý přenos klíče je pak silně redukovatelná. Proto je pravděpodobnost, že klíč bude odposloucháván, relativně malá. 2. Odesilatel a příjemce si mohou libovolně vybrat dobu předání klíče. Klíč lze například dohodnout dny před přenosem zprávy. Naproti tomu se zpráva musí odeslat v okamžiku, který není ovlivnitelný komunikujícími partnery (uvažme politické události, vývoj na burze, atd.) 3. S pomocí tzv. Public-Key systémů lze klíče bez nebezpečí vyměnit, abychom pak provedli zakódování s pomocí konvenčních postupů. Upozorněme ještě na další nebezpečí. Je-li klíč vyměněn, musí být spolehlivě uložen; nesmí nastat případ, že jej bude možno z přístroje zjistit. Experti souhlasí 1.2 Posouvací šifry 13 s tím, že klíč je pouze tehdy bezpečně uložen, pokud přístroj nelze najít fyzikálními prostředky. Nyní ale nastala doba na změnu stran. Kryptologie se nezabývá pouze tím, že navrhuje bezpečnostní systémy pro přenos zpráv; jedna z jejich ústředních úloh je takové systémy „rozluštit" (nebo se o to alespoň pokusit!). Začněme tedy na okamžik hrát roli zlosyna - to lze vyjádřit trochu slušněji následovně: pracujeme jako kryptoanalytik a provádíme kryptoanalýzu kryptogramu (případně zkoumaného kryptosystému). Tvůrce kryptosystému musí vždy počítat s možností, že algoritmus je protivníkovi znám (alespoň po delší dobu). Kromě toho se doporučuje protivníka nepodceňovat a přisoudit mu co nej vyšší inteligenci; nazvěme je Mr. X. Představme si, že Mr. X zachytil následující kryptogram: BIBV HXZIDI CH VMVQ BIRVI Na základě jistých indicií došel k domněnce, že tento text byl zašifrován pomocí posouvací šifry (např. by mohl „najít" jeden z výše popsaných šifrovacích strojů). Takovýto text pak lze principiálně analyzovat dvěma způsoby. 1.„Systematické" prozkoušení všech možností Protože se jedná pouze o 26 posunutí, není naše námaha příliš velká. Mr. X ale může tuto námahu podstatně zredukovat, omezí-li se pouze na malou část zachyceného textu. Uvažme např. „slovo" VMVQ. Vyzkoušíme-li všechna „posunutí" této posloupnosti písmen, zjistíme snadno, že ze všech možných ekvivalentů pouze slovo neni dává smysl. Je tedy více než pravděpodobné, že kryptogram byl získán posunutím o 8 míst. Mr. X pak prověří svou domněnku tím, že dešifruje celkový text: tato zprava uz neni tajná. Tato metoda pro prolomení posunovací šifry je proto tak dobrá, protože většina kombinací písmen je v češtině zcela bez významu. Ačkoliv je toto pozorování důležitý základ pro mnoho kryptoanalytických metod, má výše uvedená metoda velkou nevýhodu. Nelze ji totiž (nebo jen s neúměrně velkou námahou) automatizovat. Pokud by tato metoda měla být provedena počítačem samostatně, pak by bylo nutno uložit všechna (nebo v každém případě velmi mnoho) česká slova. I když je to v principu možné, používali bychom zbytečně silný nástroj. A to nelze následující metodě vytknout. 2.Statistická analýza V češtině, němčině a angličtině (stejně jako v každém přirozeném jazyku) se nevyskytují všechna písmena se stejnou četností; spíše má každé písmeno svou charakteristickou četnost. Tyto početnosti jsou uvedeny v následující tabulce: 14 Caesar neboli Každý začátek je lehký! Písmeno Četnost v % Četnost v % němčina angličtina a 6.51 6.40 b 1.89 1.40 c 3.06 2.70 d 5.08 3.50 e 17.40 10.00 f 1.66 2.00 g 3.01 1.40 h 4.76 4.20 i 7.55 6.30 j 0.27 0.30 k 1.21 0.60 1 3.44 3.50 m 2.53 2.00 n 9.78 5.60 0 2.51 5.60 P 0.79 1.70 q 0.02 0.40 r 7.00 4.90 s 7.27 5.60 t 6.15 7.10 u 4.35 3.10 v 0.67 1.00 w 1.89 1.80 x 0.03 0.03 y 0.04 1.80 z 1.13 0.02 Můžeme pak písmena rozdělit v závislosti na četnosti jejich výskytu do čtyř skupin (např. v němčině). V první skupině budou nejpočetněji se vyskytující e a n, v druhé skupině budou písmena s ještě relativně velkou četností (cca. 7%); ve třetí skupině jdou uvedena písmena s malou, ale dosti podstatnou četností zatímco v poslední skupině jsou uvedena zanedbatelná písmena. Skupina Počet písmen skupiny v textu e, n 27.18% i, s, r, a, t 34.48% d, h, u, 1, c, g, m, o, b, w, f, k z 36.52% P, v, j, y, x, q 1.82% Co se stane, dešifrujeme-li nějakou (německou) zprávu? Pak samozřejmě zůstane četnost písmen zachovánana; avšak jednotlivá četnosti písmen nemusí být 1.3 Monoabecední šifrování 15 již přiřazeny svým odpovídajícím písmenům. Např. zašifrujeme-li ve zprávě písmeno e za X, pak bude písmeno X nejčetnějším písmenem kryptogramu, zašifrujeme-li y za S, nebude se S v kryptogramu téměř vyskytovat. Konkrétně Mr. X ve své analýze zprávy MRNBNA CNGC RBC WRLQC VNQA PNQNRV vytvoří seznam jednotlivých četností Písmeno: ABCDEFGHIJKLMNOPQRSTUVWXYZ Četnost: 2240001000013 601340002 1 000. Písmeno s největší četností je N; můžeme tedy v prvním přiblížení vyjít z toho, že N v kryptogramu odpovídá e ve zprávě. Pozor: Protože celá metoda je založená na statistice, není nic 100% jisté! Mr. X se musí zabývat dalším potvrzením své domněnky. Je-li jeho domněnka správná, jedná se o posunutí o 9 písmen. Pak by muselo R odpovídat písmenu i (to potvrzuje jeho hypotézu, že se R vyskytuje relativně často) a W by muselo odpovídat písmenu n - to je však v rozporu s tím, že W se vyskytlo pouze jednou. Z druhé strany se vyskytují A, B, C relativně často (měly by odpovídat r, s, t, a ekvivalenty x, y, z (totiž G, H, I se prakticky nevyskytují). Mr. X se tedy pokusí provést posunutí zpět o 9 písmen a obdrží dieser text ist nicht mehr geheim. Výše uvedený text je smysluplný a tedy jeho domněnka je s konečným závěrem potvrzena. Závěrem několik poznámek. Druhá metoda má bezespornou přednost, že ji počítač může sám lehce provést. Protože zde ale rozhodující roli hrají statistické úvahy, musí být zachována jistá obezřetnost. Obzvláště při krátkých textech může vést naivní hledání po nejčastěji se vyskytujícím písmenu do slepé uličky. Pokud ale uvážíme ještě četnosti několika jiných písmen, lze použít algoritmy, které jsou i při velmi krátkých textech velmi úspěšné. 1.3 Monoabecední šifrování Šifrování se nazývá monoabecední, jestliže každé písmeno abecedy zprávy je zašifrováno jako nějaké písmeno téže abecedy. Monoabecední šifrování si můžeme představit tím, že pod abecedu zprávy napíšeme abecedu kryptogramu. Např. následující metody šifrování jsou monoabecední. ľclVclI abcdefghijklmnopqrst uvwxy z Kryptogram: qwertzuiopasdfghjklyxcvbnm. 16 Caesar neboli Každý začátek je lehký! Zpráva: Kryptogram: ab c d e f g h ijklmnopqrst u vwxy z j->nctre/3"J_ffli< 'HET#n>3ß79~245. Poslední příklad by nám měl připomenout, že zpráva a kryptogram nemusí být definovány nad stejnou abecedou. Je-li tomu ale tak, pak každému monoabecední šifrování odpovídá permutace písmen abecedy; obráceně lze každé permutaci přiřadit monoabecední šifrování. Z toho zejména plyne, že máme přesně Chceme-li použít k zakódování písmen počítač, pak identifikujeme obvykle a (resp. A) s 1, b (resp. B) s 2, atd.; x (resp. X) s 24, y (resp. Y) s 25 a z (resp. Z) s 0. Pomocí této reprezentace lze posunovací šifry popsat obzvlášť dobře: posunutí o s míst odpovídá přičtení čísla s modulo 26. Konkrétně postupujeme následovně: • Nejdříve převedeme písmena zprávy do odpovídajících číslic; • pak připočteme k tomuto číslu číslo s; • z výsledku uvažujeme pouze zbytek, který obdržíme po dělení 26; tento zbytek přeložíme zpátky na odpovídající písmeno. Tímto způsobem získáme příslušný text kryptogramu. Příklad.Nyní chceme zašifrovat písmeno a pomocí posunovací šifry, která posouvá o 3 místa. • a se reprezentuje pomocí číslice 1; • 1 + 3 = 4; • 4 je reprezentace písmena D kryptogramu. Při dešifrování písmene B postupujeme následovně: 26! = 26 • 25 •... • 2 • 1 « 4 • 10: ,26 monoabecedních šifrování nad přirozenou abecedou {a, b, c, ..., z}. 1.4 Záměnné šifry • B se reprezentuje pomocí číslice 2; • 2 - 3 = -1; • Zbytek -1 po dělení26 je 25 a to odpovídá písmenu y zprávy. 1.4 Záměnné šifry 17 S pomocí této metody lze tzv. čísla sčítat.Celá věc se stává podstatně zajímavější, pokud budeme písmena násobit.To lze provést následovně: Abychom mohli násobit písmena číslem t, budeme počítat opět modulo 26. Tzn., že vynásobíme číslo odpovídající zadanému písmenu číslem t a uvažujeme zbytek po dělení 26. Pak je tomuto zbytku odpovídající písmeno výsledek tohoto „násobení". Vynásobíme-li hodnotu každého písmena zprávy číslem 2, obdržíme ľclVci: abcdefgh i j k lmnopqrst uvwxy z Kryptogram: bdfhjlnprtvx zbdfhjlnprtvxz. Vidíme, že vždy dvě písmena (např. ha u) nám dávají tentýž „součin" (v našem případě P). Proto nemůžeme tuto substituci použít jako šifru. Pro každé šifrování musí totiž platit doposud nevyslovené ale zcela samozřejmé pravidlo, že text zprávy musí být s pomocí klíče jednoznačně rekonstruovatelný z kryptogramu. Mnozí považují tozo pravidlo za příliš omezující; lze ho však zeslabit a zároveň odůvodnit: Každý kryptogram musí být s pomocí klíče dešifrovatelný nějakým počítačem. Pokusme naše štěstí ještě jednou a vynásobme všechna písmena číslem 3: raVa: abcdefghijklmnopqrstuvwxy z Kryptogram: cfiloruxadgjmpsvybehknqtwz. V tomto případě získáme skutečně monoabecední šifrování. Lehkým prozkoušením vidíme, že obdržíme monoabecední šifrování právě tehdy, když násobíme jedním z čísel 1, 3, 5, 7, 9, 15, 17, 19, 21, 23 nebo 25; takovéto šifrování nazýváme multiplikativní šifry. Máme tedy (včetně triviální šifry) právě 12 multiplikativních šifrování; jejich počet je tedy ještě menší než počet posouvacích šifer. Proto můžeme od těchto šifer očekávat velmi nepatrnou kryptografickou bezpečnost. Můžeme ale navzájem kombinovat posouvací a multiplikativní šifry. Za tímto účelem přičteme nejprve k písmenu zprávy číslo s a výsledek vynásobíme dalším číslem t. Podle tohoto předpisu získáme opět šifru, tzv. záměnnou (afinní) šifru, kterou budeme označovat [s,t\. Klíč záměnné šifry [s, t] sestává z dvojice čísel (s, t) (přirozeně musí být pro každou záměnnou šifru číslo t zvoleno tak, že násobení číslem t je multiplikativní šifra; t tedy musí být jedno z výše uvedených čísel 1, 3, 5, 7, 9, 15, 17, 19, 21, 23 nebo 25). Počet všech záměnných šifer vypočteme jako počet všech posúvacích šifer vynásobený počtem všech multiplikativních šifer; tedy počet všech záměnných šifer je 26 • 12 = 312. Toto číslo je už tak velké, že při ruční kryptoanalýze nám systematické prověření všech možností dá pěkně zabrat. 18 Caesar neboli Každý začátek je lehký! 1.5 Klíčová slova Velké množství monoabecedních šifer získáme následujícím způsobem: klíč sestává ze dvou komponent - klíčového slova a klíčového písmene. Nejdříve vytvoříme z klíčového slova posloupnost písmen, ve které se každé písmeno vyskytne pouze jednou. To získáme následujícím způsobem, že každé písmeno se při svém druhém, třetím, ... výskytu vyškrtne. Máme-li zvoleno například klíčové slovo MATEMATIKA, získáme posloupnost MATEIK. Napišme nyní tuto posloupnost pod abecedu zprávy, a to tím způsobem, že bude začínat právě pod klíčovým písmenem. Např., zvolili jsme jako klíčové písmeno obdržíme ľclVclI abcdefghi j k 1 mn o pqrstuvwxyz Kryptogram: mateik Na závěr napíšeme zbývající písmena kryptogramu v abecedním pořádku, přičemž začneme po posledním písmenu klíčového slova. V našem případě pak získáme rclVct: abcde f g h i j k ] mn o p q r s t u vwx y z Kryptogram: qrsuvwxyzmateikbcdfghjlnop. Zřejmě lze každé monoabecední šifrování získat pomocí vhodného klíčového slova. 1.6 Kryptoanalýza „Filozofii" moderní kryptoanalýzy lze popsat Kerckhoffovým principem; tento princip byl poprvé formulován v knize La cryptographie militaire (1883) holandským jazykovědcem Jeanem Guillaumem Hubertem Victorem Francoisem Alexandrem Augustem Kerckhoffem von Nieuwenhofem (1835-1903). Kerckhoffův princip. Spolehlivost kryptosystému nesmí záviset na utajení algoritmu. Spolehlivost je založena pouze na utajení klíče. To je zásadní varování pro tvůrce kryptosystému. Nesmíme být tak naivní a přepokládat, že Mr. X nemá možnost získat znalost algoritmu. Dějiny kryptografie jsou plné příkladů, kdy objevitel kryptosystému založil důvěru na něm tím, že jeho algoritmus nikdy nemohl být znám. 1.6 Kryptoanalýza 19 Naopak: Cílem moderní kryptografie musí být vývoj systémů, které zůstanou bezpečné i v tom případě, že o algoritmu bylo dlouhou dobu veřejně diskutováno. „Příkladem" je DES-algoritmus. Kryptoanalytik rozlišuje následující případy útoku na šifru: 1. Known ciphertext attack: Kryptoanalytik zná relativně velkou část kryptogramu. To je opravdu reálný předpoklad, protože je zpravidla celkem jednoduché zajistit si (libovolně dlouhé) části kryptogramu. 2. Known plaintext attack: Kryptoanalytik zná relativně malou část související zprávy/kryptogramu. Tato hypotéza je reálnější, než se na první pohled zdá. Totož často „ví" Mr. X, o co se jedná, a může proto uhádnout několik hlavních slov. Mimoto lze nalézt zpravidla standardní úvodní a závěrečné fráze atd. 3. Chosen plaintext attack: Má-li kryptoanalytik přístup k šifrovacímu algoritmu (s aktuálním klíčem), může pak za účelem zjištění klíče kódovat vybrané části zprávy a pokusit se udělat z obdrženého kryptogramu závěry o struktuře klíče. Mohl by například do stroje vkládat pravidelná zdrojová slova, např. posloupnosti stejných písmen (aaa ...) za účelem jejich zakódování. Nebezpečí takovéhoto útoku spočívá v tom, že by se mohlo Mr. X podařit přimět šifrovací stroj k tomu, aby zakódoval zdánlivě neškodné zprávy, s jejichž pomocí pak Mr. X může zašifrovat zprávu, kterou by odesilatel nikdy nezašifroval. Jak nebezpečný může být takovýto útok, se obzvláště ukáže, když pomyslíme na to, že mnohé šifrovací přístroje pouze nešifrují, ale také „podpisují: Pokud je algoritmus tak slabý, že dovolí tento útok, pak by mohl Mr. X vytvořit z nevinně vyhlížejících podepsaných zpráv brizantní, platně podepsaný dokument. * Každé monoabecední šifrování přirozeného jazyka může být dosti lehce prolomena. Musíme si pouze ujasnit, že každé monoabecední šifrování (přirozeného jazyka) lze prolomit již za vysoce slabého (přičemž nanejvýš realistického) předpokladu 1. Předvedeme pouze „princip" algoritmu. Představme si, že Mr. X zachytil kryptogram o délce asi 500 písmen a že ví, že kryptogram byl zašifrován pomocí monoabecedního šifrování. Krok 1. Nejdříve Mr. X zjistí četnosti písmen kryptogramu. Tím získá ekvivalent e, n spolu s množinou písmen {i, s, r, a, t}. Jednotlivá písmena z této množiny přitom zpravidla ještě nemůže identifikovat. Krok 2. Nyní Mr. X spočte bigramy, tzn. páry po sobě sledujících písmen. Nejčastější bigramy německého jazyka jsou uvedeny v následující tabulce: 20 Caesar neboli Každý začátek je lehký! Bigram Četnost Bigram Četnost en 3.88% nd 1.99% er 3.75% ei 1.88% ch 2.75% ie 1.79% te 2.26% in 1.67% de 2.00% es 1.52% Tímto způsobem může Mr. X izolovat písmena o největším výskytu. Např. dvojice er má velmi velkou četnost, zatímco všechny jiné kritické kombinace s e se vyskytují dosti zřídka (ea a et jsou opravdu velmi řídké - pod 0.5%) a také es se vyskytuje se signifikantně malou četností. Konkurentem by mohla být dvojice ei; tu však lze vyřadit tím způsobem, že testujeme inverzní dvojice: jen u těchto dvojic je tomu tak, že jak v původní posloupnosti, tak i v obráceném pořadí se vyskytují s prakticky stejnou četností. Tímto způsobem může Mr. X nejprve izolovat rozlišitelná písmena skupiny { i, s, r, a, t} s druhou největší četností. Dále může rozpoznat písmena c a h podle toho, že se jako dvojice vyskytují relativně často ale samostatně velmi zřídka. Tímto způsobem může prakticky bezchybně identifikovat nejčastěji se vyskytující písmena; tj. písmena e, n, i, s, r, a, t, h, c, která tvoří více než dvě třetiny textu. A to všechno lze provést automaticky pomocí počítače! Krok 3. Pak nechá Mr. X dosadit rozpoznaná písmena do celého textu. Jinak řečeno: počítač rozšifruje známé díly textu. Ten se objeví na obrazovce, přičemž nerozluštěná písmena se nahradí účelně prázdnými znaky. Zpravidla tento text není rozšifrován, nebo se jeho šifrování provádí ještě stále náročně. Další písmena však může inteligentní Mr. X na základě kontextu lehce hádat To provede a nechá si vždy po každém kroku ukázat změněný text. Po dvou nebo třech krocích dospěje k velmi dobře čitelnému textu. * Shrnutí: Monoabecední šifrování nad přirozeným jazykem jsou pozoruhodně nejistá (přirozený jazyk má málo písmen, jež jsou dost nerovnoměrně rozdělena) . V současné době proto používáme bud monoabecední šifrování nad umělým jazykem nebo pofo/abecední šifrování. Nejpopulárnější monoabecední šifrování je DES - Data Encryption Standard. Tento algoritmus byl vyvinut firmou IBM a v roce 1977 se stal standardem. DES nešifruje písmena, nýbrž symboly 0 a 1, a to 64 naráz (v případě, že používáme DES k zašifrování obyčejného textu, musí být písmena nejdřív přeložena do řetězce bitů. Jednou z takových metod je použití ASCII kódu. Tedy DES je monoabecední algoritmus nad abecedou {(ai,..., a^) : £ {0,1}}. Jako klíč lze se bere posloupnost binárních řetězců z 56 bitů, tj. všech klíčuje právě 256 fa 7-1016. 1.6 Kryptoanalýza 21 Tento algoritmus byl od samého počátku úplně publikován - jednalo se o první algoritmus historii, kdy se to stalo. DES se převážně úspěšně používá v bankovnictví. V roce 1990 předvedli Biham a Shamir, že DES je algoritmus vyvinutý podle vynikajících principů; všeobecně však převládá obecné přesvědčení, že by délka klíče měla být větší. Biham a Shamir zároveň ukázali, že mnoho algoritmů příbuzných DESu lze jejich chytrou analýzou rozbít. 22 Caesar neboli Každý začátek je lehký! Kapitola 2 Proč jednoduše, když to jde i složitě? Slovo, věta a z šifer se zvedá poznaný život, náhlý smysl. Gottfried Benn V této kapitole se budeme zabývat převážně polyabecedními šifrováními. U těchto šifrování se písmena zprávy nešifrují pomocí téže abecedy. Zejména tedy nelze polyabecední šifrování popsat jednoduše pomocí abecedy zprávy a pod ní napsané abecedy kryptogramu. Přiřazení písmene zprávy k nějakému písmenu kryptogramu nesmí být prováděno svévolným způsobem. Šifrování musí splňovat silný požadavek jednoznačnosti; v opačném případě by nebylo možné žádné dešifrování. Jinak řečeno: kdyby nebylo šifrování jednoznačné, nenacházel by se příjemce principiálně v žádné lepší situaci než Mr. X! Typickým příkladem algoritmu, u kterého není šifra jednoznačná, je homo-fonní šifra. Takovéto algoritmy budou předvedeny v následujícím odstavci. Nej-větší část kapitoly bude však věnována zkoumání takovýchto polyabecedních šifer, které vzniknou z kombinací monoabecedních algoritmů; takovýmto charakteristickým příkladem je Vigienérevo šifrování. 2.1 Zneprůhlednění četností Jak můžeme dosáhnout toho, že všechna písmena kryptogramu se v něm vyskytují se stejnou četností? Zcela jednoduše: Šifrovací předpis přiřadí každému písmeno nikoliv znak, nýbrž množinu znaků (v našem příkladu to budou dvojice čísel), a to tak, že jsou splněny následující podmínky: - Aby bylo dešifrování jednoznačné, musí být množiny příslušející různým písmenu zprávy disjunktní. 24 Proč jednoduše, když to jde i složitě? - Počet písmen kryptogramu, které patří k nějakému písmenu zprávy, odpovídá četnosti tohoto písmene. V následujícím příkladu homofonní šifry jsou znaky kryptogramu tvořeny 100 dvojicemi číslic 00, 01, ..., 99: Homofonní šifra Písmeno Zašifrování (němčina) a 10 21 52 59 71 b 20 34 c 28 06 80 d 04 19 70 81 87 e 09 18 33 38 40 42 53 54 55 60 66 75 85 86 92 93 99 f 00 41 g 08 12 97 h 07 24 47 89 i 14 39 46 50 65 76 88 94 j 57 k 23 1 16 03 84 m 27 11 49 n 30 35 43 62 63 67 68 72 77 79 0 02 05 82 P 31 q 25 r 17 36 51 69 74 78 83 s 15 26 45 56 61 73 96 t 13 32 90 91 95 98 u 29 01 58 v 37 w 22 x 44 y 48 z 64 Při zašifrování se přiřadí písmenu zprávy náhodně jeden z příslušných znaků kryptogramu. Příjemce pak může pomocí výše uvedené tabulky jednoduš dešifrovat následující text: 00097449599505371089483102139964713748836696427752. Protože znaky byly vybrány náhodně, vyskytuje se každý znak (v našem případě dvojice číslic) stejně často (odtud jméno „homofonní"). Případný kryptoa-nalytik je tak postaven před podstatně těžší úlohu než při zkoumání monoabe-cedního šifrování. 2.2 Vigenerova šifra 25 Avšak neměli bychom příliš jásat, neboť kryptoanalýza je také zde možná. Analýza je založena na pozorování, že četnosti písmen kryptogramu jsou sice stejné, ale že z uvažování nad dvojicemi znaků kryptogramu můžeme stejně dobře získat novou informaci. Budeme diskutovat dva příklady • Uvažuje-li Mr. X ekvivalent písmena c, tedy dvojici 28, zjistí, že v úvahu jako přirozený následník přichází pouze určitá písmena kryptogramu. Toto jsou dvojice 07, 24, 23, 47, 89, tedy ekvivalenty písmen h a písmenk. • Zkoumáme-li ekvivalent písmene e, tedy např. 99, zjistíme, že jisté znaky kryptogramu se vyskytují jako předchůdci a následníci 99 - a to prakticky stejně početně. Musí se pak jednat o ekvivalenty písmene i. 2.2 Vigenerova šifra Vigenerovo zašifrování bylo veřejnosti zpřístupněno v roce 1586 francouzským diplomatem Blaisem de Vigenere (1523-1596). Základní idea je používat střídavě různá monoabecední šifrování. Tato idea je tak přirozená, že variace Vigenerova zašifrování byly vícenásobně znovuobjeveny. Dva z nej důležitějších předchůdců byli Johannes Trithemius (1462 - 1516), jehož knihy Poligraphia (1518) a Ste-ganographia (1531) byly uveřejněny posmrtně, a Giovanni Battista Deila Porta (1538-1615), vynálezce přístroje Camera obscura, který v roce 1558 ve své knize Magia naturalis zveřejnil polyabecední algoritmus, který vykazuje velkou podobu s Vigenerovou šifrou. V této kapitole se budeme hlavně zabývat Vigenerovou šifrou, která je nejzná-mější mezi všemi periodickými polyabecedními algoritmy, a to ze dvou důvodů: • Vigenerova šifra je prototyp mnoha algoritmů, které byly profesionálně používány až do našeho století (Caesarova šifra je zvláštním případem Vige-nerovy šifry pro klíčové slovo délky 1). • Při kryptoanalýze se seznámíme se dvěmi extrémně důležitými metodami, a to Kasiského testem a Friedmanovým testem. Abychom mohli použít Vigenerův algoritmus, potřebujeme dvě věci: klíčové slovo a Vigenerův čtverec. Tento čtverec se skládá z 26 abeced, které jsou napsány pod sebou takovým způsobem, že první abeceda je obyčejná abeceda, druhá abeceda je o jedno písmeno posunutá, třetí o dvě atd. Jinak řečeno: Vigenerův čtverec sestává z 26 posouvacích šifer v přirozeném pořadí. 26 Proč jednoduše, když to jde i složitě? Vigenerův čtverec ľclVcl! abcde f g h i j k lmnopqr s t u v w x y z Kryptogram: abcdefghi jklmnopqrstu vwx y z bcdefghijklmnopqrstuvwxyza c d e f g h i jklmnopqrstu vwx y z a b d e f g h i jklmnopqrstuvwxyzabc e f g h i jklmnopqrstu vwx y z a b c d pghi jklmnopqrstu vwx y z a b c d e gh i j klmnopqrs tuvwxyzabcde f Hl j klmnopqrs tu vwx yzabcde fg i j klmnopqrs tuvwxyzabcdefgh j klmnopqrs tuvwxyzabcde f g h i klmnopqrs tu vwx yzabcdefgh i j lmnopqrs tu vwx yzabcdefgh i jk mnopqrs tu vwx yzabcdefgh i j k l nopqrs tu vwx yzabcdefghi j k l m o p q r s tu vwx yzabcdefghi j k l m n p q r s tu vwx yzabcdefghi j k l m n o q r s t u vwx yzabcdefghi j k l m n o p r s t u vwx yzabcdefghi jklmnopq stu vwx yzabcdefghi jklmnopqr t u vwx yzabcdefghi j klmnopqrs u vwx yzabcdefghi j klmnopqrs t vwx yzabcdefghi jklmnopqrstu w xyzabcdefgh i j klmnopqrs tuv xyzabcdefghijklmnopqrstuvw yzabcdefghijklmnopqrstuvwx zabcdefghijklmnopqrstuvwxy Klíčovým slovem může být libovolná posloupnost písmen; pro náš demon-stranční případ vybereme slovo „VENUŠE". Klíčové slovo: VENUSEVENUSE Zpráva: P o 1 yabecedni. Při šifrování určí písmeno klíčového slova, které stojí nad určitým písmenem zprávy příslušnou abecedu tj. řádku ve Vigenerově čtverci a pomocí této abecedy bude písmeno zprávy šifrováno. Celkem tedy máme Klíčové slovo: VENUSEVENUS E Zpráva: polyabecedn i Kryptogram: KSYSSFZGRYFM. 2.3 Kryptoanalýza 27 Je jasné, že takováto šifrovací metoda staví Mr. X před podstatně větší problémy, než je tomu při monoabecedním šifrování. Četnost písmen je daleko rovnoměrnější, což lze poznat i na našem krátkém příkladu. Např. písmeno zprávy e bylo zašifrováno do Z a R, písmeno kryptogramu S vzniklo ze tří různých písmen zprávy (o, y, a). 2.3 Kryptoanalýza Přirozeně lze i pomocí dnešních metod prolomit text zašifrovaný pomocí Vigene-rovy šifry. Totiž dostatečně dlouhý text vykazuje mnoho statisticky zachytitelných pravidelností, které umožňují zjištění klíčového slova. První uveřejněný útok byl publikován v roce 1863 pruským majorem delostrelectva Friedrichem Wilhelmem Kasiským (1805-1881). Druhá metoda se připisuje plukovníkovi Williamu Fre-dericku Friedmanovi (1891-1969). Obě metody slouží k určení délky klíčového slova. Protože oba testy mají i mimo speciální analýzu Vigenerovy šifry svůj dalekosáhlý a zásadní význam, představíme podrobně obě metody. Předpokládejme, že Mr. X zachytil následující text, o kterém ví (nebo se domnívá), že je zašifrován pomocí Vigenerovy šifry: Kryptogram UE Q P CVCKAHVNR ZURNLAO KIRVGJTDVRVR I C V ID L M Y IYSBCCOJQS Z N Y M B VD LOK FS LMWEFR ZAVIQ MFJTD I H CIFP SEBXMFFTD MHZGNMW KAX A UVUH JHNUULSVSJIP JCKT IVSVMZ JEN Z S KAH Z S UI H Q V IBXMF F I P LCXEQXO CAV B VRTWMB LNG N I VR L P F VTDMH ZGNMWKRX VRQEKVR LKDB SEIPUC EAW J S BA P M B VSZCFUEGITLEU OSJOUOH UAVAGZEZ I S YRH VRZHUMF RR E M WKU L K V K G H A H FE U B K LRGMBJIHL I I FW M B ZHUMP LEUWGRBH Z O L CK CWTHWD S I L D A G VNEM J F R V Q S VI QMU VSWM Z CTH I I WGD J S XEOW S J T K I HKEQ 28 Proč jednoduše, když to jde i složitě? 2.3.1 Kasiského test Ačkoliv tato působivá metoda analýzy polyabecedních algoritmů byla poprvé publikována Kasiským, musíme se zmínit, že anglický matematik Charles Babbage (1792-1871), který je mimo jiné znám svou koncepcí předchůdce moderního počítače, provedl neuverejnená zkoumání i v kryptografii. Mj. vyvinul Kasiského test už v roce 1854, tj. devět let před Kasiským. Test je založen na následující myšlence: vyskytují-li si ve zprávě dvě posloupnosti stejných písmen (např. v němčině slovo ein), mohou obecně odpovídající posloupnosti v kryptogramu dopadnout různě. Jsou-li ale obě počáteční písmena posloupností zašifrována pomocí téhož písmene klíčového slova, jsou i obě písmena kryptogramu stejná. V tomto případě bude také druhé písmeno posloupnosti v zprávě zašifrováno pomocí téhož písmene klíčového slova; tedy obdržíme i v kryptogramu stejné písmeno. To tedy znamená: Budou-li obě počáteční písmena posloupností zprávy zašifrována pomocí téhož písmene klíčového slova, pak sestávají obě posloupnosti v kryptogramu ze stejných písmen. Kdy může nastat případ, že dvě písmena jsou zašifrována pomocí téhož písmene klíčového slova? Právě tehdy, když se klíčové slovo mezi tato písmena n-krát vejde pro vhodné přirozené n. * Když nyní Mr. X najde v kryptogramu dvě posloupnosti skládající se se stejných písmen, pak se může domnívat, že jejich vzdálenost je několikanásobek délky klíče. Tato pravděpodobnost se řídí pravidlem „čím delší, tím milejší": stejná písmena nevypovídají, že víme něco o délce klíče, a také dvojice složené ze stejných písmen by mohly vzniknout náhodně. Z posloupností třech nebo více písmen již může Mr. X dostatečně spolehlivě usuzovat na délku klíčového slova. V našem případě pak zjistí: Posloupnost Odstup Rozklad na součin prvočinitelů odstupu JTD 50 2-5-5 VIQM 265 5-53 TDMHZGNMWK 75 2-3-3-5 MWK 75 3-5-5 Největší společný faktor je 5. Optimistický kryptoanalytik by mohl říci, že „že délka klíčového slova je 5" (ve skutečnosti funguje Kasiského test v praxi velmi dobře). Pokud je ale kryptoanalytik opatrný, mluví pouze o silné indicii pro délku klíčového slova 5. Jsou dva důvody pro jeho opatrnost: 1. Mohl by nastat případ, že se vyskytují dvě posloupnosti kryptogramu ze tří nebo více stejných písmen, které mají vzdálenost nedělitelnou pěti. Pak 2.3 Kryptoanalýza 29 bychom získali jako největší společný dělitel jedničku! (V našem případě tento případ skutečně nastane: posloupnost KAH se vyskytne dvakrát a sice s odstupem 128 = 2 • 2 • 2 • 2 • 2 • 2.) To znamená, že nesmíme počítat největší společný dělitel „slepě" pomocí počítače, ale musíme jej určit „citem". Musíme tedy zřejmé chyby vypustit. 2. Právě proto bychom mohli přijít na myšlenku, že délka klíče by nemusela být pouze 5, nýbrž 10, 15 nebo 30 (neboť faktory 2 a 3 se vyskytují také dostatečně často). Jinak řečeno: Kasiského test nám poskytuje délku klíčového slova až na násobek. Kryptogram UEQP CVCKAHVNR ZURNLAO KIRVGJTDVRVRI C V ID L M Y I Y S B C CO J Q S Z N Y M B VD L O K F S L MWEF R Z AVIQ M F J T D I H C I F P S EBXMF FTP MHZGNMW KAX A UVUH JHNUULSVSJIP TCKT I VSVMZ J EN Z S KAH Z S UI H Q V IBXMF F I P L CXEQ X O CAV B VRTWMB L NG N I VR L P F VTDMH ZGNMWKRX VRQEKVR LKDB SEIPUC E AW J S BA P M B VSZCFUEGITLEU OSJOUOH UAVAGZEZ I S YRH VRZHUMF RREMWKUL K VKGH A H FE U B K LRGMB JIHLI IFWMBZHUMP LEUWGRBH Z O L CK CWTHWD S ILD A G VNEM J F R V Q S VI QMU VSWM Z CTH I I WGD J S XEOW S J T K I HKEQ Z výše uvedeného důvodu budeme prezentovat druhou metodu; tato určuje řádový odhad délky klíčového slova. Kombinace těchto obou metod je prakticky úplně spolehlivá. 2.3.2 Friedmanův test Tento postup byl vyvinut Williamem Friedmanem v roce 1925. V tomto testu se ptáme na to,s jakou šancí se náhodně vybraný pár písmen ze zprávy sestává ze stejných písmen. Odpověď je pak dána indexem koincidence. 30 Proč jednoduše, když to jde i složitě? Představme si nejprve libovolnou posloupnost písmen délky n. Bud n\ počet písmen a, n2 počet písmen b, ..., n26 počet písmen z. Zajímáme se o počet dvojic, kdy jsou obě písmena rovna aa. (Nepožadujeme, aby se uvažované dvojice skládaly za sebou následujích písmen.) Pro počet prvního a máme práve n\ možností, pro výběr druhého a zbývá n\ — 1 možností. Protože nezáleží na pořadí písmen, je počet hledaných dvojic roven . Je tedy počet dvojic, kdy jsou obě písmena stejná, roven ni • (ni - 1) n2 • (n2 - 1) n26 • (n26 - 1) _ y-, rij ■ {rij - 1) 2 2 + ■■■ + 2 ~ 2-i 2 1=1 Šance obdržení dvojice složené ze stejných písmen je určena následujícím výrazem: I=E|inrK-l) n • (n — 1) a nazývá se Friedmanův index koincidence. Friedman sám značil toto číslo jako k, proto se občas pro metodu, kterou v dalším předvedeme, používá název kappa-test. * Přibližme se nyní tomuto indexu koincidence z jiné strany. Předpokládejme, že bychom věděli, že se v našem textu vyskytuje písmeno a s pravděpodobn-pstí pi, písmeno b s pravděpodobnpstí p2, ..., písmeno z s pravděpodobnpstí P26- (Konkrétní hodnoty pro pravděpodobnosti pi můžeme udat, jestliže víme, ze kterého jazyka text pochází.) Představme si nyní dvě libovolně vybraná písmena našeho textu. Pravděpodobnost, že první písmeno je rovno a je pi, tedy přibližná pravděpodobnost, že obě písmena jsou rovna a je p\ (pokud n je dostatečně velké, lze takto vzniklou chybu zanedbat). Odpovídající vztahy platí i pro ostatní písmena. Tedy pravděpodobnost toho, že obě písmena jsou si rovna je 26 2,2, , 2 2 Pl +P2 + ■ ■ ■ +P26 = Z^Pi ■ i=l Toto číslo závisí přirozeným způsobem na pravděpodobnostech pi,p2,...,P26-Spočtěme si dva příklady. • Pro text v německém jazyce máme 26 J>2 = 0.0762. i=l To znamená, že náhodně zvolená dvojice písmen se skládá ze dvou stejných písmen s šancí 7,62%. 2.3 Kryptoanalýza 31 • Představme si obráceně zcela náhodný text, tj. text, ve kterém jsou písmena divoce promíchána. Pak každé písmeno se zde vyskytne se stejnou pravděpodobností 1 Pi~ 26' V tomto případě pak 26 26 1 1 y pí2 = y —k = — = 0.0385. h éí 262 26 Šance, že v takovémto textu najdeme dvě stejná písmena, se nám zmenšila na polovinu. 1. Pokud známe pravděpodobnosti Pi,P2, ■ ■ ■ ,P26 (jako je tomu např. s němčinou či angličtinou), pak víme, že součet čtverců pracděpodobností je přibližně roven indexu koincidence: 26 i=l Obecně lze pak dokázat, že index koincidence (nebo stejně platně i YlltiPi2) je tím větší, čím je text nepravidelnější, a menší, čím je text pravidelnější. Hodnota 0.0385 je absolutní minimum proi index koincidence. Totiž 26 i 2 26 -i oM 38 Dopřejme si jistoty neboli trochu teorie a že pro všechna (M, K) E M x K platí: d(e(M,K),K) = M. Zejména tedy pro každý klíč K máme invertibilní funkci (transformaci) f k '■ M -+ C tak, že f k (M) = e(M, K) a fK-\fK{M)) = M. Systém {fK)KeK je nazýván šifrovací algoritmus. Výše uvedená definice byla formulována praotcem moderní kryptografie Clau-dem E. Shannonem. Uveďme dvě triviální pozorování: 1. Je možné, že dvě různé transformace převádí tutéž zprávu na jednu transformaci. 2. Skutečnost, že transformace je invertibilní, implikuje |M| < |C|. 3.2 Perfektní bezpečnost Nyní víme, co je šifrovací systém. Těžištěm tohoto odstavce je podání definice a popisu bezpečného šifrovacího systému. Intuivně řečeno znamená „perfektní bezpečnost", že Mr. X nemá žádnou šanci zvětšit své znalosti o systému, i kdyby měl k dispozici všechno vědění a všechnu počítačovou kapacitu světa. Předpokládejme nyní, že máme šifrovací systém (M,K,C) a že (a) pi je pravděpodobnost, že je odeslána zpráva Mj, 1 < i < n = \M\; tyto pravděpodobnosti se nazývají a priori (nebo teoretické) pravděpodobnosti a jsou přirozeně každému dobrému kryptoanalytikovi známy. (b) pravděpodobnost, že je použit klíč Kj je kj a výběr klíče nezávisí na zprávě, která je přenášena. Tyto dvě rozdělení pravděpodobností indukují rozdělení pravděpodobností na množině možných kryptogramu, kde pro jistý kryptogram C, řekněme Cu, je pravděpodobnost toho, že „náhodný" kryptogram C je roven kryptogramu Cu, je určena vztahem P(C = Cu) = Y,Pikj, kde v sumě na pravé straně sčítáme přes všechny dvojice zpráva-klíč (Mí,Kj) takové, že e(Mj, Kj) = Cu. Výše uvedené lze přeformulovat následovně pomocí pojmu náhodné veličiny. Mějme tři náhodné veličiny M, K, C tak, že jev M = Má znamená, že byla odeslány zpráva Mj E M, jev K = K j znamená, že byl pro šifrování vybrán klíč Kj E K. & jev C = Cu znamená, že byl zachycen kryptogram Cu E C. Zejména tedy P(M = Má) = pť a P(K = Kj) = P(K = K,\M = Afť) pro všechan i a všechna k. 3.2 Perfektní bezpečnost 39 Připomeňme, že výše uvedená situace je analogická situaci v teorii kódování pro případ zdroje bez paměti. Přitom považujeme zdroj za proud symbolů jisté konečné abecedy. Zdroj má obvykle nějaký náhodný mechanismus, který je založen na statistice situace, která je modelovaná. Tento náhodný mechanismus může být poměrně dost komplikovaný, ale my se budeme pro okamžik soustředit na následující opravdu speciální a jednoduchý příklad. Značí-li Xi i-tf symbol vytvořený zdrojem, dohodneme se pak, že, pro každý symbol a,j, pravděpodobnost P{Xi = aj) = pj je nezávislá na i a tedy je nezávislá na všech minulých nebo v budoucnosti vyslaných symbolech. Jinak řečeno, X\,X2,... je právě posloupnost identicky distribuovaných, nezávislých náhodných veličin. Takovýto zdroj nazveme zdrojem s nulovou pamětí nebo zdrojem bez paměti a jeho entropie H je definována jako H = -^PjlogPj, kde sčítáme přes množinu j takových, že p j > 0. Připomeňme, že jsou-li X\,..., Xm náhodné proměnné takové, že každá z nich nabývá pouze konečně mnoha hodnot, lze pak považovat X = (X\,... ,Xm) za náhodný vektor a definovat souhrnou entropii X\,..., Xm jako H{Xi,...,Xm) = H(X) = -J2PÍxi,---,xm) ■log2p(x1,...,xm), (3.1) k kde p(xu ...,xm) = P(Xx = xuX2 = x2,... ,Xm = xm). Předpokládejme dále, že X je náhodná proměnná na pravděpodobnostním prostoru fl a A je událost z Q. Nabývá-li X konečné množiny hodnot {aá : 1 < i < m}, je přirozené definovat podmíněnou entropii náhodné proměnné X určenou událostí A jako m H(X\A) = -J2P(X = ak\A)\ogP(X = ak\A). k=l Úplně stejně, je-li Y jiná náhodná proměnná nabývající hodnot bk (1 < k < m), definujeme podmíněnou entropii náhodné proměnné X určenou náhodnou proměnnou Y jako H(X\Y) = J2H(X\Y = bJ)P(Y = bJ). j Považujeme H(X\Y) za entropii náhodné proměnné X určenou jistou hodnotou Y zprůměrovanou přes všechny hodnoty, jichž může Y nabývat. Diskrétní kanál bez paměti je charakterizován vstupní abecedou Ei = {a\,..., am} vstupních znaků, výstupní abecedou E2 = {b\,..., bn} výstupních znaků a maticí 40 Dopřejme si jistoty neboli trochu teorie P kanálu ( Pii P21 P\2 P22 Pln-l P2n-1 Pln P2n Pm—ln—1 Pm—ln Pmn—1 Pmn Pm-11 Pm-\2 \ Pml Pm2 Způsob používání kanálu je následující: každá posloupnost (u\,U2,--symbolů ze vstupní abecedy Ex na vstupu se převede na posloupnost (v\,V2, téže délky symbolů z výstupní abecedy E2 na výstup tak, že P(vk = bj\uk = ai) = pij (1 < i < m, 1 < j < n), ,uN) -,vN) a to nezávisle pro každé k. Implicitně je ve výše uvedeném obsaženo, že pro každé i, 1 < i < m platí 12 Pii = 1- Matice P s nezápornými hodnotami taková, že součet prvků v každém řádku je roven 1, se nazývá stochastická matice; v teorii náhodných procesů mluvíme o matici přechodu markovského řetězce. Kapacita komunikačního kanálu je míra jeho schopnosti přenášet informaci. Formální definice je motivována níže uvedeným: Předpokládejme, že máme diskrétní kanál bez paměti se vstupní abecedou Ei = {a\,..., am}, výstupní abecedou E2 = {b\,..., bn} a maticí P kanálu P = \pij] = P{hj obdrženo|aj odesláno). Přidáme-li k tomuto kanálu zdroj S bez paměti, který vysílá symboly a\,..., am s pravděpodobnostmi pi,... ,pm, pak výstup kanálu můžeme považovat za zdroj J bez paměti, který vysílá symboly b\,..., bn s pravděpodobnostmi qt,... ,qn, kde Qj = S^Li Pfoj obdrženo|aá odesláno)P(a.i odesláno) = Y^i=\P%Pij- Jsou-li U a V dva náhodné vektory, definujeme informaci o U poskytnutou V jako číslo I(U|V) = H(\J) -H(\J\V). Jinak řečeno, I(U|V) vyjadřuje množství nejistoty o U odstraněné V. Totiž, množství informace, průměrně obsažené v jednom znaku zprávy, je entropie vstupního rozdělení H(S) = —^2iP^ogpi. Při přenosu diskrétním kanálem se ztratí informace H{S/J) = - J2Pi,jl°SPi,j 3.2 Perfektní bezpečnost 41 průměrně najeden znak. Zbývá pak H{S)—H{S/J) přenesené informace. Jestliže entropii počítáme v bitech a známe průměrnou dobu r, kterou kanál spotřebuje na přenos jednoho znaku, je rychlost přenosu = H{S) - H{S/J) bM ^ gekundu r Často se za jednotku času volí jeden přenos znaku a potom I(S\J) = H(S) - H(S/J) bitů za jednotku času. Informace o S podaná pomocí J je pak rovna I(S\J) = H(S) - H(S\J) = H(S) + H(J) - H(S, J) a je to funkce, která závisí pouze na pravděpodobnostním rozdělení qi,..., qn, a maticí kanálu P. Proto je přirozené definovat kapacitu C kanálu jako maximální rychlost přenosu, tedy C = sup I(S\J), (3.2) kde supremum je bráno přes všechny zdroje bez paměti S, nebo, ještě přesněji, nad všemi možnými rozděleními pravděpodobností (p\,..., pn). V dalším tedy můžeme považovat M za zdroj bez paměti s šifrovací funkcí e, přičemž klíče slouží jako komunikační kanál. Základním pojmem je pojem klíčové ekvivokace zavedený Shannonem H(K\C). ten nám měří průměrnou nejistotu, která nám zůstává po zachycení kryptogramu C. Podobně budeme definovat ekvivokaci zpráv jakožto H(M\C). Občas budeme psát S = (M, K, C) a budeme značit H(S) klíčovou ekvivokaci H(K\C). Náhodná proměnná zpráv má pak entropii zpráv H(M) = -Y,PilogPi, a, jsou-li po řadě K a C náhodné proměnné klíčů a kryptogramu, jsou pak klíčová entropie H(K) a entropie kryptogramu definovány jakožto H(K)=-E P(K = Ki)\ogP(K = Ki), H(C)=-ZP(C = Cj)logP(C = Cj), kde sumace je prováděna přes všechny možné klíče Ki a všechny možné kryptogramy Cj. Následující vlastnost ekvivokace vyjadřuje tu skutečnost, že daleko více nejistoty je spjato s klíčem než se zprávou. Věta 3.2.1 Klíčová ekvivokace je určena ekvivokaci zprávy vztahem H{K\C) = H{M\C) + H(K\M, C). 42 Dopřejme si jistoty neboli trochu teorie Důkaz. Připomeňme základní identitu pro entropii H(X\Y) = H{X,Y) - H(Y) Můžeme tedy psát H(M\C) H(M, C) - H(C) H{M, K, C)-H(K\M, C) H(C). Nyní tedy i H(K\C) H(K, C) - H(C) H{M, K, C) - H(M\K, C) H(C). Ale H{M\K,C) = 0, protože jakmile je znám kryptogram C a klíč K, je jednoznačně určena i zpráva M a tedy míra neurčitosti je nulová. Tedy což, porovnáno s výše uvedeným, nám dává dokazovanou identitu. Důsledek 3.2.2 Klíčová ekvivokace je alespoň tak velká jako ekvivokace zprávy. Lemma 3.2.3 Pro každý kryptosystém (M,K,C) platí H(K,C) = H(M) + H(K). Důkaz. Protože náhodné veličiny K a M jsou nezávislé, víme, že H(M) + H(K) = H(M, K). Stačí tedy ověřit, že H{C,K) = H(M, K) tj. H(C\K) = H(M\K). Poznamenejme, že stačí pro pevný klíč Kj ověřit, že H{C\K = Kj) = H(M\K = Kó). Položme C = {Cu G C : existuje Afť G M tak, že Cu = e{Mi,Kj)}. Pak evidentně H(C\K = Kj) = H(C'\K = Kj), protože pro kryptogramy neležící v C je odpovídající podmíněná pravděpodobnost nulová. Připomeňme známý fakt z teorie informace ií(U|V) = 0 právě tehdy, když U = ■ C tak, že fKj{Mi) = e(MhKj) a Ík^Uk^Mí)) = Mi, je fxj bijekce. Speciálně, C'\K = K j je funkcí M\K = K j a obráceně M\K = Kj je funkcí C'\K = Kj. Lehkou úpravou pak obdržíme, že H(M\K = Kj) = H[C'\K = Kj), tj. H(C\K = Kj) = H(M\K = Kj). Důsledek 3.2.4 Pro každý kryptosystém (M, K, C) platí H{K\C) = H(M, K, C) - H(C), H{C\K) = H(M\K), H(C,K) = H(M,K) a H(M) < H{C). 3.2 Perfektní bezpečnost 43 Důkaz. Stačí ověřit poslední nerovnost. H(M)+H(K) = H(M,K) = H[C,K) < H{C) + H(K) tj. H(M) < H(C). Příklady: (a) Předpokládejme, že „zprávy" v M jsou písmena slov nějaké (německé) knihy; pravděpodobnost zprávy je pak četnost odpovídajícího písmene; v případě písmene e je pak p(e) fa 0.174. (b) Nyní předpokládejme, že „zprávy" v M jsou dvojice za sebou následujících písmenslov nějaké (německé) knihy; pravděpodobnost zprávy je pak četnost odpovídajícího bigramu. Představme si nyní, že Mr. X zachytil kryptogram C. Aby ho byl schopen analyzovat, může (alespoň teoreticky) vyzkoušet všechny zprávy a vždy určit pravděpodobnost toho, že kryptogram C vznikl zašifrováním zprávy M. Označme pak tyto pravděpodobnosti pc{M) = P(M\C); mluvíme pak o a posteriori (nebo pozorovaných) pravděpodobnostech. Příklady: (c) Bud M stejné jako ve výše uvedeném příkladu (a); jako algoritmus budeme uvažovat posouvací šifry se všemi 26 možnými klíči. Uvažme, že každé písmeno kryptogramu C má tutéž šanci, že odpovídá určitému písmenu zprávy; např. v 17.4% případů vznikne C z e, v 9.8% případů vznikne z n, atd. Jinak řečeno, pro každý kryptogram C platí pc{M) = p(M) pro každou zprávu M. (b) Nyní předpokládejme, že každá zpráva v M sestává z prvních 100 písmen každé strany prvního dílu slovníku das große Brockhaus. Algoritmus nechť opět sestává z posouvacích šifer. Pro každou zprávu M je její pravděpodobnost , malé, ale stále ještě kladné číslo. Protože je relativně snadné prověřit, zda určitý kryptogram pochází z určité zprávy (rozdělení písmen v kryptogramu musí přesně odpovídat rozdělení písmen ve zprávě), je pc{M) rovno bud jedné nebo nule. To znamená obzvlášť, že pro každý kryptogram je pc{M)^p{M). Proberme tuto skutečnost podrobněji: Předpokládejme, že kryptoanalytik Mr. X zjistí, že pro jistou zprávu M je pc{M) > p(M). Pak by věděl, že kryptogram C vznikl s vysokou pravděpodobností ze zprávy M. Tzn., že by se analýzou něco nového naučil. To ale nesmí při perfektním systému nastat. V případě, že by bylo pc{M) < p(M), pak by Mr. X věděl, že kryptogram C vznikne s velmi malou pravděpodobností ze zprávy M. I v tomto případě by si Mr. X rozšířil svoje znalosti. 44 Dopřejme si jistoty neboli trochu teorie Můžeme tedy definovat: Šifrovací systém (M, K, C) poskytuje perfektní bezpečnost, jestliže pro každý kryptogram C platí Pc(M) =p(M) pro každou zprávu M. Jinak řečeno, (M,K,C) je perfektní, pokud jsou a priori pravděpodobnosti rovny pravděpodobnostem a posteriori (viz příklad (c)). Posouvací šifry jsou perfektní, jestliže operují nad jednotlivými písmeny. Mr. X se pak může namáhat jak chce; písmena kryptogramu jsou totiž zcela náhodně rozdělena. Chceme-li perfektnost šifrovacího systému vyjádřit pomocí náhodných proměnných M a C, je systém perfektní právě tehdy, když M a C jsou nezávislé. Z toho bezprostředně plyne, že šifrovací systém (M, K, C) poskytuje perfektní bezpečnost, jestliže pro každou zprávu M platí pM(C)=p(C) pro každý kryptogram C. * Věta 3.2.5 Kryptosystém (M, K, C) je perfektní právě tehdy, když H{M\C) = H(M). Důkaz. Z teorie informace je známo, že H(M\C) = H(M) právě tehdy, když M a C jsou nezávislé náhodné proměnné tj. to je právě tehdy, když se jedná o perfektní kryptosystém. Ptejme se nyní, jak můžeme rozpoznat, kdy je šifrovací systém perfektní či nikoliv. K tomu si dokážeme několik jednoduchých kritérií. 1. Kritérium Je-li šifrovací systém (M, K, C) perfektní, pak každá zpráva s odpovídajícím klíěem může být zobrazena na libovolný kryptogram. Proěplatí toto kritérium? Uvažme zprávu M a kryptogram C. Protože (M, K, C) je perfektní, platí pc{M) = p(M). V každém šifrovacím sytému je p(M) > 0, protože každá zpráva se vyskytuje s kladnou pravděpodobností. Dohromady obdržíme pc{M) > 0. To znamená, že existuje klíč, pomocí kterého se zašifruje M do C.Tím je dokázáno první kritérium. Toto kritérium je velmi užitečné - v „negativním smyslu": Umožní nám rozhodnout, že jisté systémy nejsou perfektní. 2. Kritérium Je-li šifrovací systém (M, K, C) perfektní, pak platí: 3.2 Perfektní bezpečnost 45 Ml < |C| < |K|. Důkaz. Zřejmě |M| < |C|. Proč platí |C| < |K|? Uvažme libovolnou, pevně zvolenou zprávu M a zašifrujme ji pomocí všech možných klíčů z (M, K, C). Podle prvního kritéria lze M převést do každého možného kryptogramu. Pro každý kryptogram C potřebujeme alespoň jeden klíč (totiž pomocí jednoho klíče nemůžeme M zobrazit na dva různé kryptogramy). Potřebujeme tedy alespoň tolik klíčů, kolik je kryptogramu. Máme tedy |C| < |K|. 3. Kritérium Buď (M, K, C) šifrovací systém tak, že ve kterém se všechny klíče vyskytují s toutéž pravděpodobností. Dále předpokládejme, že ke každé zprávě M a ke každému kryptogramu C existuje právě jeden klíě K z (M, K, C) tak, že e(M, K) = C. Pak je (M, K, C) perfektní. Důkaz. Stačí zřejmě ověřit, že pro každou zprávu Má platí P(M = M^C = Cj) = P(M) pro každý kryptogram Cj. Z Bayesova vzorce máme neboť P(C = Cj\M = Mk) = nezávisle na j a fc. Přirozeným způsobem jak zvýšit bezpečnost šifrování je vzít různé systémy a kombinovat je. Dvě takovéto metody navržené Shannonem jsou stále základem mnoha praktických kryptosystémů. Jedná se o • Vážený souěet: Jsou-li Si a S2 dva kryptosystémy se stejným prostorem zpráv M = Mi = M2 a 0 < p < 1, je pak jejich vážený souěet pS\-\-(l — p)S2 kryptosystém určený následným výběrem: použijeme Si s pravděpodobností p a S2 s pravděpodobností 1 — p. Má-li tedy Si klíče K\,..., Km s pravděpodobnostmi použití Pí pro klíč Ki a S2 má klíče K[,...,K'n s pravděpodobnostmi použití p'j pro klíč K'-, má pak kryptosystém pS\ + (1 — p)S2 m + n klíčů Kx,..., Km, K[,..., K'n s pravděpodobnostmi použití ppi pro klíč Ká a s pravděpodobnostmi použití (1 — p)p'j pro klíč Kj. Tento postup lze přirozeně rpzšířit na více než dva • Souěin: Druhý způsob kombinování kryptosystémů Si a S2 je to, že nejprve použijeme na naši zprávu kryptosystém Si a potom aplikujeme S2 na výsledný kryptogram. Abychom toto mohli provést, musí být nutně Ci CM2. Pak můžeme definovat součin jako Si*S2. M C K|, P{M = Mi\C = Cj) systémy. 46 Dopřejme si jistoty neboli trochu teorie Jsou-li klíče Ki,..., Km s pravděpodobnostmi použití Pí pro klíč Kj v kryp-tosystému Si a S2 má klíče K[,..., K'n s pravděpodobnostmi použití^ pro klíč .říj, má pak kryptosystém Si*S2 m.n klíčů {K^K'-) s pravděpodobnostmi použití pip'j. Poznamenejme, že skutečně efektivních klíčů může být méně, protože některé se složených transformací mohou splývat. Poznamenejme, že evidentně platí následující: Jsou-li Si, S2 a S3 kryptosystémy tak, že níže uvedené operace jsou definovány, 0 < p < 1, q = 1 — p, pak S3*(pSi+qS2)=pS3*Si+ ?S3*S2, (pS1+qS2)*S3=pS1*S3+ gpi, pí kde pi je pravděpodobnost výskytu í-tého symbolu . Podobně obdržíme HE 0 : H(K\CN) = 0}, tj. H(Mu) + H(K) - H{Cu) = 0. Předpokládejme, že platí následující: 52 Dopřejme si jistoty neboli trochu teorie 1. Přirozený jazyk, ve kterém šifrujeme, má tu vlastnost, že je dán vhodný odhad H(MN) jako H{MN) ~ NH, kde H je entropie jednoho symbolu jazyka; 2. kryptosystém má tu vlastnost, že všechny sekvence délky N symbolů mají stejnou pravděpodobnost jakožto kryptogram; jinak řečeno tf(CV)~iVlog|I]|. To není nevhodný požadavek: každý dobrý kryptosystém by měl mít tuto vlastnost. Z výše uvedeného obdržíme UH + H(K) - [71og|£| = 0, tj- log|E| -H' Obvykle se rovněž předpokládá, že každý klíč můžeme vybrat se stejnou pravděpodobností a to znamená, že u log|K| log|E| -H' kde H je entropie symbolu zdroje. Připomeňme, že existuje těsný vztah mezi bodem unicity kryptosystému a redundancí jazyka, ve kterám se přenáší zpráva. Přitom redundance R jazyka s entropií H je určena vztahem R=l H log|£|' a tedy v_ log|K| log|K| \og\n-H i?log|E|- Zejména pak má-li jazyk nulovou redundanci, je pro každý kryptosystém splňující 1 a 2 bod unicity nekonečno. Příklad: Předpokládejme, že šifrujeme pomocí jednoduché substituce tak, že máme právě 26! klíčů. Uvažujeme-li log26 = 4.7 a entropii anglického jazyka HE rovnu 2 bitům na symbol, obdržíme Jog26! =88;4 4.7-2 2.7 3.3 Redundance přirozeného jazyka a bod unicity 53 Jinak řečeno, při výše uvedené entropii anglického jazyka jsme obdrželi hodnotu bodu unicity rovnu 32 symbolům. To pak celkem souhlasí s empirickým pozorováním Shannona (1949), který tvrdí, že pro bod unicity "lze ukázat, že leží mezi krajními body 20 a 30. S 30 písmeny existuje téměř vždy jediné řešení pro kryptogram tohoto typu a s 20 můžeme najít nějaký počet řešení. " Podobným způsobem Friedman (1973) tvrdí, že "Prakticky každý příklad 25 nebo více charakterů reprezentujících monoabe-cední zašifrování smysluplné zprávy v angličtině lze snadno vyřešit." V roce 1977 M.E. Hellman návrh alternativní a přitažlivé rozšíření výše zkoumaného přístupu. V tomto modelu je prostor zpráv rozdělen do dvou disjunktních podmnožin. První podmnožina obsahuje 2HN smysluplných či typických zpráv, přičemž každá z těchto zpráv má a priori pravděpodobnost 2~HN. Zbývající zprávy nemají v našem jazyku smysl a mají pravděpodobnost 0. Zároveň budeme předpokládat, že klíče jsou použity nezávisle na zprávě a se stejnou pravděpodobností. Je-li C kryptogram, označme Z (C) počet dvojic (M, K) takových, že zpráva M je smysluplná a e(Mi,Kj) = C, pak nepřítel, který zachytí C bude v pochybách o použitém klíči. Je-li \Z(C) \ > 1, je kryptogram C zašifrován pomocí šifrování s falešným klíčem. Klademe-li s(C) =max{[Z(C) - 1],0}, očekávaná hodnota s(C), totiž š= £ s(C)P(C), ceC nám odhaduje očekávaný počet šifrování s falešným klíčem. Ale je okamžitě vidět, že š = ž — 1, kde ž= Y z(c)p(c) = E Z2{C)/2NH\K\, ceC ceC a tedy z definice modelu obdržíme pro každý kryptogram C P(C) = Z(C)/2NH\K\. Přitom evidentně Y Z(C) = 2NH\K\. ceC 54 Dopřejme si jistoty neboli trochu teorie Aplikujeme-li na výše uvedené jednoduché lemma tvrdící, že pro všechna Xi splňující n i=l máme n i=l obdržíme Ž > (2Aři?|K|)2/|C|2Ařií|K| = 2^1X1/101. Můžeme pak vyslovit následující Věta 3.3.1 Za předpokladu platnosti výše uvedeného je očekávaný počet šifrování s falešným klíčem odhadnut jako š> (2^|K|/|C|)-1. Píšeme-li nyní K = 2h(k\ C = 2nh° = \T,\N, kde H0 je entropie jazyka, lze výše uvedenou větu přepsat jakožto ^ > 2nh-h(k)-nh0 _ ! přičemž pravá strana je rovna nula přesně v bodu unicity. Příklad: Předpokládejme, že šifrujeme pomocí Vigenerova šifrování tak, že máme anglickou abecedu s 26 písmeny. Víme, že H0 = 4.7 = log26 a H = HE ~ 1.5 bitů, H(K) = 801og26 = 376. Obdržíme pak průměrně alespoň 2376"320 ~ 256 různých šifrování s falešným klíčem pro kryptogram o 100 písmenech. Kapitola 4 One-time Pad Nyní budeme hovořit o následujícím perfektním systému: Předpokládejme, že abeceda E je obvyklá 26-ti písmenná anglická abeceda a že tečky, mezery atd. jsou vypuštěny a že odesílaná zpráva M sestává z N písmen. Abychom zašifrovali zprávu, vygenerujeme náhodnou posloupnost o N písmenech z abecedy E, přičemž výběr každého písmene je nezávislý a každé písmeno má pravděpodobnost ^r, že bude vybráno. Tato náhodná posloupnost (Z\,... ,ZN) bude klíč K a, abychom zašifrovali M = (x\,..., xn) pomocí K budeme definovat C = e(M, K) Vi = Xi® Zi mod 26, kde jako v obvyklém substitučním číslicovém systému jsme písmenům po řadě přiřadili číselnou hodnotu z množiny {0,..., 25}. Tedy jako klíče vybereme rovněž všech 2§N posloupností délky N; každou z těchto posloupností lze zvolit se stejnou pravděpodobností tj. H(K) = iVlog26. Protože klíč K = (Zi,Z2,... ,ZN) je posloupnost náhodných písmen z 26-ti prvkové abecedy E, je zřejmé, že existuje 26N stejně pravděpodobných kryptogramu. Zároveň platí P(K\C) = pro všechna K E K. Z kritéria 3 vidíme, že šifrovací systém (M,K,C) je perfektní, neboť klíč je jednoznačně určen zprávou a kryptogramem, množina zpráv je je zároveň množinou klíčů, resp. kryptogramu, zejména tedy mají stejnou mohutnost. Zejména je tedy tento tzv. one-time pad systém perfektní. Tento šifrovací systém byl objeven v roce 1926 americkým inženýrem společnosti AT&T Gilbertem S. Vernamem (v dřívějších dobách byla písmena klíče napsána na listech trhacího bloku a jakmile bylo klíčové písmeno použito, byl odpovídající list vytrhnut a zničen). 56 One-time Pad Dnes se one-time pad neprovozuje s písmeny nýbrž s bity. Pak a^, ká E {0,1} a kryptogram ai©kia2©k2.. . an©kn získáme pomocí binárního sčítání. Pro bezpečnost tohoto systému je podstatné, že všechny posloupnosti délky n se vyskytují s toutéž pravděpodobností. Jinak řečeno: Bity klíčového slova musí být voleny náhodně. Nejlépe si to představíme tím způsobem, že vrháme ideální minci. V praxi používáme fyzikální náhodný zdroj a tím automaticky vytvoříme bity. Za tuto formu perfektní bezpečnosti musíme - nikoliv neočekávaně - platit vysokou cenu. Pro tradiční one-time pad potřebujeme velké množství papíru, který musí být před útočníkem absolutně bezpečně ukryt. Proto se takovéto systémy používají jen zřídka. V druhé světové válce se one-time pad používal anglickou dešifrovací skupinou, aby zprostředkovala zprávy premiérovi, které byly Němci zašifrovány pomocí Enigmy a které Angličané rozšifrovali. Tímto způsobem si spojenci zajistili, že Němci až do konce války nevěděli, že Enigma byla rozluštěna. Jednou z dalších nevýhod tohoto systému je neexistence matematického způsobu generování nezávislých náhodných proměnných, které slouží jako klíč. Tedy je nutné použít pseudonáhodných posloupností generovaných jednou z mnoha standardních metod. Neexistuje pak žádná záruka, že takováto pseudonáhodné posloupnosti nám budou stejnou úroveň bezpečnosti. Jedná se o hluboký matematický problém. * Proč se tento nepochybně perfektní systém používá jen velmi zřídka? Abychom byli schopni zodpovědět tuto otázku, představme si sebe v roli příjemce. Ten může přirozeně kryptogram pohodlně rozšifrovat: dešifrování je v podstatě stejný postup jako zašifrování (používáme-li bity, jedná se dokonce o přesně totéž). To al může příjemce provést jen v případě, že má klíč. Kde je vlastně problém? Problém spočívá v tom, že musíme přenést (doručit) dlouhý tajný klíč. Kdybychom toto prováděli pomocí stejné cesty jako zprávu, je vzhledem k délce klíče šance přečtení klíče stejná jako při předání nezašifrovaného textu zprávy. Člověk by si mohl myslet, že u takovéhoto systému by mohl odesilatel zprávu nepříteli předat přímo do domu. To ale není zcela správné; totiž pro přenos klíče může odesilatel určit druh, způsob a dobu předání, což samozřejmě u přenosu zprávy neplatí. Jiný způsob přenosu klíče je použití kurýra. 4.1 Posouvací registry Při přenosu klíče se nejedná pouze o teoretický problém, nýbrž o to, že obtížnost výměny klíče silně ovlivňuje nasazení šifrovacích systémů. 4.1 Posouvací registry 57 Důležitý postup pro vyřešení tohoto problému spočívá v tom, že namísto skutečně náhodných klíčových posloupností použijeme pouze pseudonáhodné posloupnosti. Takováto posloupnost vypadá na první pohled jako skutečná náhodná posloupnost. A co je ještě důležitější: náhodnou posloupnost lze určit pomocí několika málo dat; tyto data pak představují skutečný klíč. Oba komunikující partneři pak mohou z těchto dat spočítat náhodné posloupnosti a zašifrovat zprávu resp. dešifrovat kryptogram. Problém přenosu klíče tak není zcela vyřešen, ale podstatně ulehčen. Samozřejmě musíme za tuto výhodu zaplatit: takovéto systémy neposkytují žádnou perfektní bezpečnost. Budeme tedy hledat kompromis mezi docílenou bezpečností a množinou tajně přenositelných dat. * Posouvací registrJe poslopnost v řadě za sebou následujících registrů, přičemž každý registr může obsahovat pouze číslici 1 (on) nebo 0 (off). Hodinový strojek reguluje chování systému, který pracuje v souladu s následujícími podmínkami: Předpokládejme, že systém má n registrů R\, R2,..., Rn a že Xi(t) označuje obsah registru r4 v čase t. Nechť je dále na začátku systém ve stavu x(0) = (X1(0),...,Xn(0)). Pokud x(t) = (X1(t),...,Xn(t)). označuje stav systému v době t, stav v čase t + 1 je určen vztahy Xi(t+l)=Xi_1(t) (2-i,2/o, 2/2, ■ ■ ■, 2/p-i,2/o,2/i, ■ ■ ■ ■ x(t + l) Cx(t), (4.3) kde C je matice tvaru C Cl c2 c3 1 0 0 0 1 0 Cn-l 0 o 0 0 ■n 0 0 0 1 o Protože jsme předpokládali, že c, 1 a protože det C = cn = 1, vidíme, že C je regulární matice. Iterováním rovnice 4.3 dostaneme x(t) = Cťx(0). Přitom platí 4.1 Posouvací registry 59 Věta 4.1.1 Posloupnost vytvořená pomocí lineárního posouvacího registru je periodická a pokud je vytvořena z n registrů, je její maximální perioda 2n — 1. Důkaz. Protože je C regulární, je i regulární matice C1 (i = 0,1,...); přitom je x(0) nenulový vektor a existuje právě 2™ — 1 nenulových vektorů délky n. Je-li m = 2n — 1, pak jsou x(0), Cx(0), C2x(0),..., Cmx(0) nenulové vektory délky n a tudíž nemohou být všechny různé: řekněme, že Csx(0) = Cs+tx(0), kde 0 0, a C je periodická s periodou nejvýše t < 2n — 1. Posloupnost vytvořená pomocí lineárního posouvacího registru je tedy periodická. Definujme charakteristický polynom lineárního posouvacího registru jako polynom n pn(x) = i + y>^, i=l s cn ^ 0, Cj E {0,1}. Charakteristický polynom je primitivní, jestliže (a) nemá vlastní netriviální dělitele, (b) Pn{x) nedělí polynom xd + 1 pro všechna d < 2n — 1. Následující tvrzení uvedeme bez důkazu. Věta 4.1.2 Posloupnost vytvořená pomocí lineárního posouvacího registru z nenulového vstupu má maximální periodu právě tehdy, je-li její charakteristický polynom primitivní. Nalezení primitivních polynomů je netriviální úloha moderní algebry. Poznamenejme pouze, že primitivní polynomy existují pro každé n a že jsou tabelovány. 60 One-time Pad 4.2 Kryptoanalýza lineárních posouvacích registrů Můžeme tedy použít lineární posouvací registry k vytvoření pseudonáhodných posloupností pro kryptografické účely. To je laciné, lineární posouvací registry provádí výpočty velmi rychle - co můžeme ještě víc chtít? Nelze popřít, že posloupnosti vytvořené pomocí lineárních posouvacích registrů mají vynikající statistické vlastnosti; a to platí dokonce pro posloupnosti, které vzniknou z relativně krátkých lineárních posouvacích registrů. Ale z krypto-logického pohledu mají tyto posloupnosti mimořádně pochybný charakter. To je důsledkem toho, že v případě known-plaintext útoku mu nejsou schopny odolat. Definujme blok délky t jako posloupnost tvaru 011... 10 obsahující právě t jedniček. Dírou délky t je posloupnost tvaru 100... 01 obsahující právě t nul. Platí následující výsledek. Věta 4.2.1 Má-li lineární posouvací registr s n registry maximální periodu 2n — 1, mají pak výsledné posloupnosti délky 2n — 1 následující vlastnosti: (a) obsahuje právě 2n~1 — 1 nul a 2n~1 jedniček; (b) obsahuje pro všechna t taková, že 1 < t < n — 2, 2n~t~2 bloků délky t a stejný počet děr délky t. Důkaz. Stav lineárního posouvacího registru lze v každém okamžiku jednoznačně popsat přirozeným číslem z intervalu [1..2n — 1]: stačí vzít příslušnou část výstupní posloupnosti. Protože se všechna nenulová čísla z intervalu [1..2n — 1] musí vyskytnout jako stavy v cyklu maximální délky, výsledek okamžitě dostaneme výsledek (a) spočtením sudých a lichých čísel v této množině. Abychom dokázali (b), poznamenejme, že běh typu 011... 10 obsahující právě t jedniček se může vyskytnout jako součást výstupu právě tehdy, když v nějaké části výpočtu je stav lineárního posouvacího registru 011... lQx\X2 ■ ■ ■ xn-t-2, kde Xi E {0,1}. Protože máme právě 2n~t~2 stavů tohoto tvaru a protože každý stav je realizován v nějakém okamžiku výpočtu vzhledem k tomu, že lineární posouvací registr má maximální periodu, výsledek (b) pro bloky platí. Zaměníme-li 0 a 1, dostáváme výsledek (b) pro díry. Vraťme se nyní k dešifrování. Je-li M = mim2 ... zpráva složená z binárních číslic, a je-li X = X\X +b, y = c2^ + d, pak součin z lze získat pomocí tří multiplikací \ n-bitových čísel použitím repre- 64 Výpočetní složitost zentace z = xy = {ac)2n + [ac + bd - {a - b){c - d)]2^n + bd. Označíme-li T(n) čas, který nám zabere násobení podle této metody, máme, prože násobení 2n je rychlé, že T(n) < 3T(^n) + 0(n). Po vyřešení výše uvedené rekurentní nerovnosti obdržíme, že T(n) < Anlo& + Bn, kde A a B jsou konstanty. Protože log 3 ~ 1.59, máme k dispozici algoritmus o časové složitosti 0(nL59) v porovnání se standardním 0(n2) algoritmem. V současnosti má jeden z nejlepších známých algoritmů (Schônhagen, Strassen) složitost O(nlognloglogn). Příklad. 2 Determinanty a permanenty. Uvažujme následující dva výpočetní problémy. Pro každý vstup složený z binární matice A typu nxn chceme vypočítat 1. determinant matice A, píšeme pak detA, 2. permanent matice A, píšeme pak perA, permanenent je definován jako peľ A = £ 0^(1)02^(2) ■ ■ ■ gw(ra)> kde sčítáme přes všechny permutace 7r na množině {1,2,..., n} a značí (i, j)— tou komponentu matice A. Zdánlivě je permanent mnohem jednodušší funkce matice A než její determinant; jedná se o součet toho samého systému termů, ale bez toho, že bychom dávali pozor na ± znaménka jako u determinantu. Avšak z hlediska výpočetní složitosti platí opak: zatímco determinant je relativně snadná funkce k výpočtu, u permanentu se prokázalo, že se jedná o vždy téměř jistě o neobvykle obtížnou záležitost. Upřesněme výše uvedené: standardní Gaussova eliminační metoda výpočtu determinantu matice nxn potřebuje 0(n3) bitových operací, přičemž V. Strassen zkonstruoval algoritmus, který potřebuje 0(nlog27) = 0(n2-81-) bitových operací. Redukce exponentu pod hranici log27 se prokázalo být velmi obtížné a jeden z nej rychlejších současných algoritmů (Coppersmith, Winograd) potřebuje 0(n2 3976") operací. Snadn je vidět, že všechny vstupy matice musí být načteny a tedy n2<ídet(n) v > 0. Pak obdržíme posloupnost dělení: u=a\v + b\, 0 < b\ < v, v=a2bi + b2, 0 < b2 < bi, bi=a3b2 + 63, 0 < 63 < b2, bk-2=akbk-i + bk, 0 < 63 < 62, která skončí bud bk = 0 nebo bk = 1. Pokud bk = 1, jsou čísla u a v nesoudělná; pokud bk = 0, je nsd(u,v) = bk-\. O tomto algoritmu lze snadno dokázat, že je korektní a detailní analýza jeho účinnosti ukáže, že nejhorší případ (měřeno počtem dělení) nastane, jsou-li u a v za sebou následující Fibonacciho čísla Fn+2 a Fn+Í. Pak v tomto případě Fk+2 = Fk+X + Fk, a to vede k následujícímu Lamého výsledku (1845) Věta 5.1.1 Je-li 0 < u, v < N, pak počet delení při použití Euklidova algoritmu na u a v je nejvýše \logv,(V5N)} - 2, kde (p je zlatý řez \ (1 + v^)- 5.2 P=polynomiální čas Základní mírou obtížnosti výpočtu je množství doby, které nám výpočet zabere. Zformulování přesné definice, co to je čas, je netriviální záležitost; přesná formulace požaduje velmi precizní definici strojového modelu, jednotky času atd. V příkladech z předchozího paragrafu jsme měřili složitost výpočtu v pojmech počtu základních operací, které byly prováděny. Mohlo se jednat o součet bitů, srvnání nebo cokoliv jiného. Klíčové pojmy jsou následující: 5.2 P=polynomiální čas 67 1. složitost je funkce velikosti vstupu (obvykle ji značíme jako n), 2. pro danou velikost vstupu n je složitost doba nejhoršího možného případu běhu algoritmu. Připomeňme si, že při testování prvočíselnosti přirozeného čísla N jsme obdrželi jinou složitost v případě, že jsme považovali vstup velikosti N nebo vhodněji pomocí reprezentace n = [log A?"] binárních číslic. Na základě tohoto důsledku bude velikost vstupu vždy považována za „přirozenou" délku ekonomického vstupu. Co se týče definice složitosti jako nejhoršího možného případu, jiná možnost - „průměrný případ" - se potýká s obtížemi, a to jak teoretickými tak praktickými. Ne poslední obtížnost je rozhodnout citlivě o pravdivostním rozdělení na vstupu. Nejprve budeme postupovat neformálně. Řekneme, že algoritmus A má polynomiální složitost, jestliže existuje polynom p(x) tak, že tAÍn) < p(n), pro všechna přirozená čísla n, přičemž t^(n) je maximální doba potřebná algoritmem k výpočtu přes všechny vstupy velikosti n. Problém lze provést v polynomiálním ěase, pokud existuje nějaký algoritmus, který ho řeší a má polynomiální složitost, v tomto případě tvrdíme, že problém leží v třídě P. Porovnejme naši definici s příklady 1-5 z předchozího paragrafu. Příklad. 1 Násobení přirozených čísel je operace prováděná v polynomiální době, Příklad. 2 Determinanty a permanenty. Výpočet determinantu je problém, který určitě leží v P. U výpočtu permanentu nevíme, zda tento problém leží v P, předpokládá se, že zde neleží, a důkaz jakékoliv implikace by měl velkou důležitost v teorii složitosti. Příklad. 3 Třídění lze provést pomocí O(nlogn) srovnání a protože srovnání lze provést v polynomiálním čase, leží třídění v P. Příklad. 4 O testu prvočíselnosti nevíme, zda leží v P. Zatím bylo dokázáno, že je „velmi blízko" P. Příklad. 5 Nalezení největšího společného dělitele dvou přirozených čísel velikosti < N & proto velikosti vstupu log A?" bitů lze provést v čase O (log N) a proto tento problém leží v P. Třída P je v současnosti nejdůležitější třídou v matematice a computer science, to, že nějaký problém leží v P, lze obvykle považovat za to, že se jedná o výpočetně dobrý problém. Ačkoliv poslední uvedené obecně zcela neplatí (problém nalezení klik v grafu), následující tvrzení nám ukazují, že se jedná o atraktivní a efektivní pojem. 68 Výpočetní složitost 1. Třída P je robustní vzhledem k různým reprezentacím vstupních hodnot za předpokladu, že tyto změny jsou vůči sobě polynomiálně korelovány.* Například, zda uvažujeme vstup matice typu n x n velikosti n nebo n2, nedělá žádný rozdíl. 2. Třída P je robustní vzhledem k použitému modelu výpočetního stroje. Jinak řečeno, zda použijeme Pentium nebo stroj s náhodným přístupem nebo Turingův stroj, naše třída zůstane nezměněna. Toto lze celkem snadno dokázat. Je pouze nutno ověřit, že doby pro simulaci základních operací na obou strojích, jsou polynomiálně korelovány. Připomeňme stručně formální definici třídy P. Turingovy stroje — formální definice třídy P Turingův stroj sestává z 2-směrné nekonečné pásky rozdělené do čtverců. Každý čtverec může obsahovat symbol z konečné abecedy E. Páska je snímána rychlostí 1 čtverec za jednotku času tzv. čtecí i zapisovací hlavicí. Stroj může být v jednom z konečné množiny Q stavů, Q = {qo,qi, ■ ■ ■, qm} a příslušná akce stroje v danám čase je jednoznačně určena jeho vnitřním stavem a symbolem v současně snímaném čtverci. Akce provede libovolnou z následujících operací: 1. změní (přepíše) snímaný symbol na jiný symbol ze E, 2. posune čtecí hlavici o jeden čtverec doprava či doleva, 3. změní svůj současný stav z na qj. Výpočet Turingova stroje sestává z následujících kroků: 1. reprezentace výpočtu konečným řetězcem x E E*, který je umístěn ve čtvercích 1 — n, kde n je počet symbolů obsažených v x, 2. odstartování činnosti Turingova stroje z jeho počátečního stavu (obvykle q0) s přepisovací hlavou na čtverci 1 a jeho pokračování se základními operacemi (četní, zapsání a změny stavu) až do doby, kdy stroj skončí v koncovém stavu (qj). Výstup stroje M po jeho aplikování na stav £ je obsah pásky dosažený v koncovém stavu. Jeden krok výpočtu stroje sestává z jedné akce 1-3 uvedených výše a délka neboli čas použitý při výpočtu je počet takovýchto kroků. Pokud M označuje nějaký Turingův stroj , označíme tuto dobu ímÍx). Funkce / : E* —>■ E* je vyčíslitelná pomocí Turingova stroje M, jestliže pro všechna x E E*, x je vstup pro M, v případě ukončení výpočtu stroj zastaví s *Dvě funkce / a g jsou vůči sobě polynomiálně korelovány, pokud existují polynomy pi a p% tak, že f(n) < Pi{g{n)) a g(n) < Pi{f{n)) pro všechna dostatečně velká n. 5.3 NP = nedeterministický polynomiální čas 69 hodnotou f(x) na jeho výstupní pásce. Tedy Turingův stroj je přesná analogie počítače - každý výpočet, který lze vykonat moderním počítačem, lze provést i Turingovým strojem. Ovšem v praxi je konstrukce Turingova stroje schopného i pouze jednoduchých výpočtů velmi časově náročná. Proto byl vyvinut soubor základních Turingových strojů, které provádí odpovídající úlohy. Konstruujeme-li pak složitý Turingův stroj, používane strojů již dříve zkonstruovaných, podobně jako když používáme podrutiny v obvyklých počítačových programech. Můžeme pak formálně definovat časovou složitost. Je-li M Turingův stroj, který zastaví pro všechny vstupy x E E*, časová složitost Turingova stroje M je funkce t m '■ Z+ —>■ Z+ určená vztahem ímÍp) = max{í : existuje x E E* tak, že \x\ = n a čas provedený strojem M na vstupu x je t}. Funkce / je vyčíslitelná v polynomiálním čase nebo má polynomiální složitost, pokud existuje nějaký Turingův stroj, který vypočte / a jistý polynom p tak, že ímÍp) < p(n) pro všechna n. V praxi většinou neuvažujeme s Turingovým modelem, ale pracujeme na mnohem vyšší úrovni. 5.3 NP = nedeterministický polynomiální čas Popišme si neformální ideu třídy NP. Předpokládejme, že máte za úkol prodat velká složená čísla opravdu hodně zaměstnaným nákupčím. S pomocí otroků pracujících neomezený počet hodin můžete sestavit seznam složených čísel c\, C2, ■ ■ ■ a abychom byli schopni prodávat tato čísla rychle, budete mít k dispozici odpovídající seznam faktorů y\, 1/2, ■ ■ .tak, že pokud má dojít k prodeji, vše, co musíte udělat, je dát číslo c* dohromady s faktorem y i a ověřit, že složené číslo Cj je dělitelné číslem y A. Pak y i nazýváme certifikátem neprvočíselnosti čísla Cj, protože pak existuje při jeho použití algoritmus pracující v polynomiální době pro ověření, že c j je složené. Neformálně můžeme tedy říci, že vlastnost náleží do NP, jestliže splnění této vlastnosti lze ověřit v polynomiální době s pomocí vhodného certifikátu. Podejme nyní formální definici: Bud E nějaká konečná abeceda. Libovolnou podmnožinu 7r množiny E* nazveme vlastností (jazykem). Řekneme pak, že 7r g NP, jestliže existuje funkce / : E* x E* {0,1} tak, že 1. x E 7t právě tehdy, když existuje y E E* tak, že f {x, y) = 1, 2. výpočtová časová náročnost / je omezena polynomem v proměnné x. V pojmech teorie Turingových strojů, považujem y sdružené se vstupem x za certifikát relace patřit prvku x v tt, a necháváme Turingův stroj pracovat v 70 Výpočetní složitost polynomiální době na vstupu sestávajícímu z vstupu x a certikátu y. Speciálně pak P C N P, považujeme-li P za soubor vlastností. Otázka, zda P = NP je pracděpodobně nej důležitější otázkou v teoretické computer science. 5.4 NP-úplné a NP-težké problémy Důležitou vlastností třídy NP je, že obsahuje „nejtěžší vlastnosti" tak, že kdybychom byli schopni vyřešit některou z těchto vlastností, byli bychom schopni rozhodnout každou z vlastností v NP. Precizněji, řekneme, že vlastnost tti je polynomiálně redukovatelná na vlastnost 7T2, pokud existuje funkce / z P tak, že x má vlastnost tti právě tehdy, když f(x) má vlastnost 7t2. Píšeme pak 7Ti 7T2. Je snadno vidět, že pokud tti01^, implikuje existence polynomiálního algoritmu pro 7r2 existenci polynomiálního algoritmu pro tti. Totiž, nechť .A je algoritmus pro 7t2, který pracuje v čase t(n). Je-li x nějaký vstup pro tti tak, že |x| = n, pak transformujme x na f(x) a aplikujme algoritmus A Protože transformace pracuje v polynomiálním čase, je \ f{x) \ ohraničené nějakým polynomem g(n). Tedy transformace / a algoritmus A pracují v čase ohraničeny nějakým polynomem. Připomeňme následující tvrzení: Věta 5.4.1 Existuje vlastnost tt E NP tak, že libovolná jiná vlastnost ir' je polynomiálně redukovatelná na ir. Takovéto 7r se nazývá polynomiálně úplný problém. Připomeňme, že máme k dispozici seznam více než 3000 NP-úplných problémů. Přitom téměř každá vlastnost z NP, o které se neví, zda leží v P, je iVP-úplná, ačkoliv máme k dispozici tvrzení, které říká, že pokud NP ^ P, pak NP — P obsahuje problémy, jež nejsou JVP-úplné. Řekneme, že problém 7r je JVP-těžký, pokud existuje nějaká JVP-úplná vlastnost 7To tak, že pokud existuje polynomiální algoritmus pro tt, existuje i polynomiální algorotmus pro 7r0. Triviální důsledky této definice jsou následující tvrzení: 1. Pokud existuje polynomiální algoritmus pro každý NP-problém, je pak NP = P. 2. Je-li Tri JVP-těžký a tti01^, je i -K2 iVP-těžký. 3. Každý A^P-úplný problém je JVP-těžký. Obrácené tvrzení k 3 není pravdivé. 5.5 Složitost kombinačních obvodů 71 5.5 Složitost kombinačních obvodů Věnujme se na chvíli zcela odlišnému modelu výpočtu, který zhruba odpovídá realizaci čipu nebo VLSI obvodu (very large scale integration - velmi vysoká integrace). Kombinační obvod (logický obvod, hradlo) je zařízení pro výpočet boo-lovských funkcí. Obvykle je reprezentován jakožto konečný orientovaný acyklický graf, jehož množina vrcholů se dělí na vstupní vrcholy, vnitřní vrcholy neboli brány a jediný výstupní vrchol. Každý vstupní vrchol patří k právě jednomu z argumentů počítané boolovské funkce. Každý z vnitřních vrcholů odpovídá vzájemně jednoznačně příslušné boolovské funkci dvou proměnných použité během výpočtu. Výstupní vrchol pak obsahuje výsledek výpočtu boolovské funkce na vstupních vrcholech. Řekneme, že kombinační obvod C s n vstupními vrcholy vypočte boolovskou funkci f(x\,... ,xn), pokud, v případě, že vstupním vrcholům je přiřazena po řadě posloupnost X\, x%, ■ ■ ■, xn a tyto vstupní hodnoty jsou zpracovány vnitřními branami dle zřejmého pořadí indukovaného acyklickým uspořádáním grafu C, je hodnota výstupního vrcholu rovna f(x\,... ,xn). Velikost kombinačního obvodu C je počet vnitřních vrcholů a značí se c(X). Je-li / boolovská funkce, je pak obvodová složitost funkce / definována jakožto minimální velikost kombinačního obvodu, který vypočtu (realizuje) funkci / a označuje se jakožto c(/). Příklad 5.5.1 (Hamiltonovská kružnice ) Uvažme následující otázku: Určete, zda graf G obsahuje Hamiltonovskou kružmici. Pro každou hodnostu n můžeme najít kombinační obvod Cn, jenž má 0(n2) vstupních vrcholů (jeden pro každou možnou hranu), která dává na výstupu výsledek TRUE tehdy a jen tehdy, když vstupní graf G má hamiltonovskou kružnici. V současné době, bohužel, všechny známé takovéto kombinační obvody Cn mají exponenciální počet vrcholů. Řekneme tedy, že vlastnost 7r má polynomiální obvodovou velikost neboli obsahuje pouze malé obvody, pokud existuje posloupnost kombinačních obvodů (Cn : 1 < n < oo) a polynom p tak, že Cn rozhodne 7r na všech možných vstupech velikosti n a velikost c(Cn) splňuje c(Cn)■ T, kde S a T jsou množiny takové, že (1) pro všechna x E S je f (x) „snadno" vypočitatelné, (2) máme-li k dispozici informaci, že f (x) = y, neexistuje žádný „přiměřený" způsob jak získat (výpočtem) x pro „dostatečně velké" množství prvků y z T. Pracovní slova zde jsou „snadno", „přiměřeně" a „dostatečně velké". Je zřejmé, že je-li dáno f(x), jeden způsob, jak získat x je prohledávat všechny možné hodnoty x E S. Nepovažujeme to za přiměřené, protože S sestává obvykle z posloupnosti binárních řetězců délky n ~ 200. Požadujeme, že výpočet pro nalezení x ze znalosti y je příliš dlouhotrvající nebo nákladný, kdykoliv y leží v „dosti velké" podmnožině množiny T. Příklad. Elementárním příkladem kandidáta na jednosměrnou funkci je, pro dostatečně velké prvočíslo p, funkce f(x), kde f(x) je polynom nad tělesem Zp. Pak je relativně snadné vypočíst f(x) (1 < x < p — 1), ale obvykle je těžké nalézt řešení rovnice f(x) = y. Výše uvedená nepřesná definice znamená, že co je jednosměrná funkce se mění s dobou. Například, výpočet požadující milión instrukcí a 10 OOO slov paměti nemohl být v roce 1950 považován za snadný, ale nyní by trval několik sekund na osobním počítači. Tedy funkce považovaná v roce 1950 za jednosměrnou nemusí být za ni považovaná nyní. 6.2 Integrita a autentičnost 79 Jedna metoda podání formální definice by mohlo být užitím fyzikálního přístupu. Např. 1060-bitová paměť vždy zůstane nedosažitelnou, protože i kdybychom potřebovali pouze jednu mulekulu na bit paměti, její konstrukce by vyžadovala více hmoty než existuje v slunečním systému. Podobně, termodynamika nám dává omezení maximálně 1070 operací, které lze provést s využitím celkové energie slunce. Nižší úroveň nedosažitelnosti je použití myšlenek výpočetní složitosti. Nejdříve uvažujme některé z vlastností, které bychom rádi požadovali po jednosměrné funkci. (I) Výpočet f(x) z x musí být přiměřený: vyjádříme to tím, že / je vypočita-telná v polynomiálně omezené době (říkáme, že / G P. (II) Výpočet /_1 nesmí být snadné; budeme tudíž požadovat, že není znám žádný algoritmus pro výpočet /_1 v polynomiálně omezené době. (III) Třetí podmínka bude tzv. upřímnost funkce tj., že existuje polynom p splňující \x\ < p(\f(x)\). Poslední podmínka je technická podmínka pro vyloučení funkcí jako f(x) = [log loga;], která zcela jistě splňuje (I) a (II), ale kterou bychom nemohli obvykle považovat za jednosměrnou funkci. Funkce / splňující (I),(II) a (III) se nazývá slabě jednosměrná funkce. Příklad. Nechť 1^ značí množinu všech A;-bitových přirozených čísel tj. lk = {2k~\...,2k-l} (£ = 1,2,...). Nechť Sk = Ifc x Ik a nechť / : —>■ Z+ je definována jako f(m, n) = m ■ n. Položíme-li S = \J{Sh : 1 < k < oo} a rozšiříme-li / na S, získáme slabě jednosměrnou funkci. Přitom v současné době není známo, že by inverzní funkce ležela v P. Není lehké najít matematickou explicitní definici jednosměrné funkce. Uveďme následující příklad. Příklad. Bud F šifrovací algoritmus, který zobrazuje zprávu M pomocí klíče K na kryptogram C, FK(M) = e(M,K) = C a předpokládejme, že M C K. Změňme trochu tuto funkci. Zafixujme za tímto účelem (ne tajnou) zprávu M0 (např. Mq = 00 ... 0); tato „zpráva" se objeví v algoritmu místo obvyklé zprávy, 80 Autentičnost a digitální podpisy nehraje ale roli variabilní zprávy. Variabilní zpráva se vloží do algoritmu F na místě klíče. Krátce: uvažujeme funkci / = e(M0,-) :M->C. Tvrdíme pak, že / je jednosměrná funkce. Představme si, že Mr. X zná jak M0 tak i C a chtěl by nají M. V řeči šifrovacího algoritmu F to lze vyjádřit následovně: Mr. X zná sobě odpovídající dvojici zpráva-kryptogram (M0,C) a chtěl by vypočíst klíč. Je-li algoritmus F kryptologicky bezpečný, je rezistentní proti tomuto known-plaintext útoku a proto je / jednosměrná funkce. Položme si otázku, zda lze matematicky dokázat, že tato funkce / je jednosměrná. Odpověď zní: Ne! Matematici nemohli ještě o žádné funkci dokázat, že je jednosměrná. To znamená, že neznáme žádnou funkci, jejíž funkční hodnoty lze spočítat v polynomiálně omezené době, ale která při výpočtu funkce inverzní potřebuje exponenciální dobu. Nevíme tedy, zda teoreticky jednosměrné funkce existují. Pro praktické účely mají ale výše popsané funkce dostatečně dobré vlastnosti. 6.3 Autentičnost uživatele Základní úloha bezpečnostní techniky je spolehlivá identifikace osob tj. autenti-fikace. Dřívo to byl výlučně proces mezi dvěma lidmi, který je dnes rozšířen na proces mezi člověkem a počítačem. Přitom vznikají přirozeně problémy; ale, jak uvidíme, lze i s počítačem provádět velmi dobrou autenticitu uživatele. Nejprve si připomeňme, jak je tento problém řešen mezi lidmi. Zásadně lze lidi poznávat podle následujících znaků: - Osobu lze identifikovat podle charakteristických vlastností. - Osobu lze identifikovat podle vlastnictví. - Osobu lze identifikovat podle znalosti. První mechanismus je v běžném životě používán tak často, že si ho ani nejsme vědomi: poznáváme naše známé podle jejich obličeje, hlasu, chůze atd. V jistých situacích se používají za účelem obzvlášť spolehlivé identifikace otisky prstů. Následující metody se používají jen ve speciálních situacích. V druhém kole kupónové privatizace je nutno předložit občanský průkaz, kde je uvedeno české občanství; při přechodu hranic se musíme prokázat pasem; platíme-li kreditní kartou, lze ověřit identitu jejím vlastnictvím atd. Identifikace na základě znalosti je prováděna velmi zřídka - ačkoliv tento mechanismus je znám již z nejstarších dob (vojáci musí znát současné heslo, aby se mohli identifikovat). Při procesu autenticity mezi člověkem a počítačem je situace zcela jiná. Autenticita na základě znalosti je mechanismus, který lze nejjednodušeji realizovat; 6.3 Autentičnost uživatele 81 autenticita na základě vlastnictví je rovněž možná. Naproti tomu je autenticita podle charakterostických vlastností velmi komplexní a používá se pouze při aplikacích, které vyžadují extrémně vysokou bezpečnost. Proto se budeme výhradně zabývat s metodami založenými na znalosti resp. vlastnictví. Při použití těchto metod má uživatel nějaké tajemství a počítač se chce přesvědčit, že osoba má skutečně jí odpovídající tajemství. Hesla Klasická metoda, se kterou se osoba prokáže stroji, je založena na heslech. Heslo je libovolná posloupnost znaků (písmena, číslice, speciální znaky), která je výlučným tajemstvím osoby a počítače. To znamená, že v ideálním případě znají jen uživatel a počítač příslušné heslo. Základní myšlenka je jednoduchá: počítač uložil „referenční heslo" Po, které je známo uživateli. Když chce uživatel prokázat svou antenticitu (např. přístup k danému počítači), napíše své heslo P a počítač porovná, zda jsou P a Po totožné. Uživatel je připuštěn, jestliže P = Po. Je mnoho problémů s hesly, obzvláště takové, které souvisí se špatnám zacházením s hesly. My se budeme věnovat jen těm problémům, které lze řešit pomocí kryptologických prostředků. To jsou problémy, které se týkají ukládání hesel. V případě, že má Mr. X čtecí práva na soubor obsahující hesla (nebo si ho opatří), může číst všechna hesla a tím se stát libovolným uživatelem. Výše popsaná procedura je pouze tehdy bezpečná, jestliže je soubor obsahující hesla uložen jako nečitelný - a to je požadavek, který každý systémový programátor odmítne jako nerealizovatelný. Přirozeně nám napadne zašifrovat hesla. Když to provedeme „naivně", navrhneme následující protokol: počítač uloží zašifrovaná hesla P* = e(Po,K),; při ověření autenticity uživatele se P* rozšifruje a srovná se s heslem zadaným uživatelem. Tato procedura má jasnou výhodu. Dokonce i když Mr. X může číst soubor obsahující hesla, může je číst pouze zašifrovaná. Protože ale není schopen je dešifrovat, nemůže simulovat jednotlivého uživatele vložením správného hesla. Je tento argument správný? Přirozeně jsme podstatně redukovali množinu tajných dat; namísto neohraničeného počtu hesel, která mají být tajně uložena, musíme v šifrovacím modelu jen uložit tajně klíč K. To je nepochybně velká výhoda, ale není to žádné principiální řešení problému: Pokud si Mr. X opatří klíč K, může dešifrovat všechna zašifrovaná hesla a má tak stejně jako předtím možnost stát se libovolným uživatelem. Po takovéto analýze je pro tvůrce přístupového systému založeného na heslech těžké vyjádřit své přání: chtěl by mít k dispozici funkci, která „zašifruje" hesla bez toho, že by použila tajný klíč - to není nic jiného, než naše známá jednosměrná funkce. Nyní použijme takovouto jednosměrnou funkci /. V paměti počítače uložme hodnotu P# = f {Po)- Během procedury ověření autenticity se aplikuje / na 82 Autentičnost a digitální podpisy posloupnost znaků P, kterou vloží uživatel. Pak počítač prověří, zda platí P# = m- Přednost této metody je zřejmá: soubor obsahující hesla je nedešifrovatelný a není žádné tajmeství. Je pozoruhodné, že jednosměrné funkce byly vyvinuty proto, aby ukládaly hesla v nečitelné formě; tato metoda byla v šedesátých letech navržena a realizována Rogerem Needhamem z University Cambridge. Přirozeně nechrání takováto procedura proti špatně zvoleným heslům. Mr. X se může totiž pokusit o „chosen password"-útok: Má-li seznam nejčastěji používaných hesel (dívčí jména, telefonní čísla, data narození,...), může aplikovat / na tato populární hesla a výsledky srovnat s obsahem souboru obsahující pozměněná hesla. Empirické výsledky ukazují, že Mr. X může tímto způsobem získat podstatné procento všech hesel. Autenticita pomocí čipových karet Žádný systém založený na heslech nesplňuje extrémně vysoké bezpečnostní požadavky. To spočívá zcela jednoduše na tom, že lidé nemají schopnost si pamatovat hesla; aby si člověk zapamatoval heslo (bez toho, že by si je bokem zapsal) , musí se jednat o krátké a přehledné slovo. Mimo to je ochrana pomocí hesel statická metoda pro určení autenticity. Přiroozeně může počítač nutit uživatele k pravidelné obměně hesel, např. každý měsíc. To je ale jen malý pokrok: Stejné heslo se vždy použije vícekrát. Proč je to problém? Mr. X jednou odposlechne přenos hesla a od té chvíle se může vydávat za uživatele. Abychom vyřešili tento problém, musí se data, která jsou vyměňována mezi počítačem a uživatelem neustále měnit - pokaždé nová otázka a nová odpověď. Je jasné, že uživatelova odpověď se musí formulovat tak, že nikdo jiný nemůže tuto odpověď poskytnout. To znamená, že reakce uživatele na otázku musí záviset na nějakém tajemství, jinak by totiž na ni mohl odpovědět i Mr. X. Odpovídající protokol podle metody Challenge-and-Response probíhá následovně. Jak počítač tak uživatel mají k dispozici jednosměrnou funkci / a společný tajný klíč K. Počítač obdrží od uživatele data k identifikaci; v našem případě třeba jméno uživatele A. Nato si počítač opatří pro dané jméno příslušný klíč K. (Klíč K může být uložen v seznamu, může být odvozen systémovým globálním klíčem nebo dán k dispozici pomocí podobné procedury.) Počítač se musí přesvědčit o tom, že uživatel, který se chce identifikovat, je skutečně uživatel A a ne zákeřný Mr. X. Pokud může uživatel dokázat, že má správný klíč K, je automaticky uznán za autentického. Tj. považujeme za dokázané, že se skutečně jedná o uživatele A. Cílem počítače v následující popsané proceduře autenticity je „nepřímo" se přesvědčit, že uživatel je ve vlastnictví klíče K. V popisu protokolu označme klíč, který je ve vlastnictví uživatele (to by mohl být i Mr. X) jako K'. Za tímto účelem klade počítač uživateli otázku tím, že mu zašle náhodně zvolené číslo RAND. Pak uživatel vypočte parametr autenticity AP' = fK>{RAND) 6.3 Autentičnost uživatele 83 a zašle jej počítači. Současně počítač vypočte hodnotu AP = fK(RAND) a porovná zda AP = AP'. Pokud ne, pak něco nesouhlasí, v opačném případě má počítač s vysokou pravděpodobností stejný klíč jako uživatel. Tedy uživatel bude akceptován. Tato procedura má dvě výhody a dvě nevýhody. Protože je číslo RAN D náhodně voleno, mění se případ od případu a Mr. X nemá žádnou šanci předpovědět následující RAND. Také AP má charakter náhodného čísla, takže Mr. X nikdy nemůže na otázku dát správnou odpověď. Právě tak důležitá je skutečnost, že pomocí protokolu se prokáže, že oba klíče jsou identické, ale klíče samotné se uvnitř protokolu nikdy neobjeví. Nevýhody Challenge-and-Response protokolu jsou sice „malé", ale nesmějí být jak prakticky tak teoreticky zanedbány. Uvědomme si, že počítač vlastní přístup k tajným klíčům uživatelů. To počítači umožňuje, aby se vydával vzhledem k jiným instancím (nebo vůči sám sobě) za uživatele. Jinak řečeno: Předpoklad pro použití Challenge-and-Response protokolu je, že uživatelé důvěřují integritě počítače provádějícího autenticitu. Jiná nevýhoda spočívá v tom, že odesilatel A musí provést algoritmus /. Provedení kryptografického algoritmu však přesahuje znalosti a možnosti každého lidského stvoření; tyto věci bychom měli přenechat elektronickému sluhovi. Takovýmto sluhou může být např. tzv. „čipová karta". Problém je však v tom, aby čipová karta rozpoznala, že ji chce použít oprávněný uživatel A a ne Mr. X. Musí tedy od uživatele vyžadovat, aby vůči ní prokázal totožnost. 6.3.1 Zero-Knowledge protokol Zero-Knowledge protokol je procedura, která jedné straně dovolí přesvědčit druhou stranu, že má určité tajemství, aniž by prozradila o tomto tajemství nejmenší informaci. Zero-knowldege protokol je dvoustranný protokol; jedna strana se nazývá do-kazovatel, druhá prověřovatel. Dokazovatel zná nějakou skutečnost a přeje si přesvědčit prověřovatele o této skutečnosti. Prověřovatel chce protokol, který mu dovolí se přsvě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í). Uveďme tři jednoduché příklady. Historický příklad: Tartagliovo tajemství 84 Autentičnost a digitální podpisy Řešení rovnic byl v historii matematiky nanejvýš důležitý problém. Jednoduché bylo řešení lineárních a kvadratických rovnic. Kubická rovnice, tedy rovnice tvaru axs + bx2 + cx + d = 0 nebyla tak snadno řešitelná a nalezení jejího řešení trvalo podstatně déle. Benátský matematik Niccolo Tartaglia (1499-1557) objevil podle svých údajů v roce 1535 metodu jejího řešení. Veřejně oznámil svůj objev, ale vzorec pečlivě tajil. Tartaglia snadno ukázal, že je schopen kubickou rovnici řešit a tím každého bez obtíží přesvědčil, že jeho řešení je správné. Ačkoliv se Tartagliovi konkurenti mimořádně snažili, nebyli schopni odhalit jeho tajemství. Až Geronimo Cardano (1501-1576) přesbědčil Tartagliu, aby mu vzorec ukázal. Slíbil, že ho udrží v absolutní tajnosti. Stalo se. co se stát muselo: Ve své knize Ars Magma (1545) zveřejnil Cardano Tartagliův vzorec; čestně však popsal, že tato formule pochází od Tartaglii. Přesto zůstává ironií osudu, že se dnes vzorec pro řešení kubické rovnice nazývá Cardanova formule. Pro nás je důležité, že Tartaglia měl tajemství (metodu řešení kubických rovnic), které byl schopen utajit a o jehož existenci mohl přesvědčit ostatní. Odmocninový příklad Uvažme hru probíhající následovně: Máma hráče A a hráče B. Hráč A tvrdí, že zná číslo s, které hráč B nezná, a s přitom splňuje, že s2 = 34 mod 55. Hráč A chce hráče B přesvědčit, že toto číslo opravdu zná. Proto náhodně zvolí číslo r, umocní je na druhou a spočítá zbytek po dělení 55, řekněme např. 26 a ukáže jej hráči B. Nyní přichází na řadu hráč B. Hodí si mincí; pokud padne hlava, chce znát od prvního hráče r ■ s mod 55, jinak pouze r. Předpokládejme, že padla hlava. Pak řeknu, že r ■ s mod 55 = 53, a to lze jednoduše prověřit, neboť skutečně platí 532 mod 55 = 4 = (26 • 34) mod 55 = r2 ■ s2 mod 55. Uvědomme si, že je právě tak těžké najít s, pokud navíc známe r2 mod 55 a r ■ s mod 55, jako kdybychom je obě neznali. Připomeňme, že r nesmí být zcela náhodně zvoleno; například by r mělo být větší než y/ŠE. Lze u této hry podvádět? Ano - v případě, že hráč B neobjeví podvod. Ale po čase se na alespoň jeden podvod přijde. Představme si, že hráč A podváděl a číslo s nezná. Kdyby věděl, že mince hráče B neukáže hlavu, neměl by žádný problém ukázat hráči B číslo r. Avšak A by nevěděl, co udělat, kdyby hráč B chtěl znát r ■ s mod 55! Kdyby hráč A věděl, že mince hráče B ukáže hlavu, mohl by A také podvádět; nejprve by si vybral číslo, o kterém by věděl, že jeho zbytek po dělení 55 je čtverec, např 22 = 4 a zvolil by pak 6.3 Autentičnost uživatele 85 r2 = (A/s2) mod 55 = (4/34) mod 55 = 26. V případě, že by hráč B chtěl znát r ■ s mod 55, odpoví jednoduše 2 a hráč B se může přesvědčit, že platí 22 = (26 • 34) mod 55 = (4/34) • 34 mod 55. Když ale hráč A musí říci číslo r, okamžitě se přijde ne jeho podvod. Celkem tedy můžeme říci, že hráč A má v každém kole 50%-ní šanci úspěšného podvodu. Aby se tedy hráč B přesvědčil, že hráč A nelže, musela by se hra hrát více kol. Tato hra ukazuje rozhodující vlastnosti skutečného Zero-Knowledge protokolu: • Protokol je interaktivní; oba partneři provádí náhodné volby (hráč A volí náhodné číslo r, hráč B se rozhodne, zda chce znát r nebo r ■ s mod 55). • Pravděpodobnost úspěšného podvodu závisí na počtu odehrátých kol. V každém kole se pravděpodobnost zmenší na polovičku. Příklad tříbarevného obarvení grafu Uvažme následující hru dvou hráčů A a B. Hráč A chce přesvědčit hráče B, že jistý graf je obarvitelný třemi barvami, aniž by mu prozradil konkrétní obarvení. Přitom hráč A to může provést v posloupnosti \E\2 stavů zadaných následovně: • Hráč A náhodně přebarví tyto tři barvy (např. všechny červené uzly na modro, všechny žluté uzly na červeno a všechny modré uzly na žluto). • Hráč A zašifruje barvu každého uzlu pomocí použití šifrovacího schématu s různou pravděpodobností pro každý vrchol. Potom ukáže hráči B všechna tato zašifrování spolu s předpisem přiřazujícím zašifrování s odpovídajícím vrcholem. • Hráč B vybere hranu grafu. • Hráč A provede dešifrování barev dvou uzlů této hrany odkrytím odpovídajících šifrovacích klíčů. • Hráč B potvrdí, že dešifrování bylo provedeno správně a že dva koncové uzly hrany jsou obarveny dvěma různými, ale legálními hranami. 86 Autentičnost a digitální podpisy Je-li graf skutečně 3-barevný (a hráč A zná obarvení), pak hráč B nikdy nezjistí žádnou špatně obarvenou hranu. V případě, že graf není 3-barevný, pak existuje šance alespoň l-E1]-1 v každém stavu, že hráč A se hráče B pokouší podvést. Šance, že by hráč A mohl hráče B podvést v \E\2 krocích je exponenciálně malá. Poznamenejme, že historie naší komunikace - v případě, že graf je 3-barevný - sestává se zřetězení zpráv odeslaných během každého stavu. Je možné dokázat, (za předpokladu, že je možné perfektní zašifrování), že pravděpodobnostní rozdělení definované nad těmito průběhy naší množinou možných interakcí je nerozeznatelné v polynomiálním čase od rozdělení, které můžete vytvořit nad těmito průběhy samotnými, bez účasti hráče A. To znamená, že hráč B nezíská jinou vědomost z protokolu, než že graf je skutečně 3-barevný. Nyní se věnujme skutečnému protokolu. Fiat-Shamirův protokol V roce 1986 předložili izraelští matematici Adi Shamir a Amos Fiat protokol, který otevřel nové rozměry v určování autenticity uživatele. Přesněji, jedná se o určení autenticity typu počítač - počítač, přičemž jedním z počítačů je čipová karta uživatele. Fiat-Shamirův protokol je založen na výsledcích Shafi Goldwas-sera a Silvia Micaliho z Massachusettského technologického institutu a rovněž Charles Rackoffa z Univerzity Toronto. Verze, kterou nyní popíšeme, je zobecněním odmocninového příkladu. Bezpečnost protokolu spočívá na tom, že je mimořádně obtížné najít druhou odmocninu nějakého čísla v modulo n. Přesněji, bud dáno přirozené číslo n, které není prvočíslo. Jestliže neznáme rozklad n na součin prvočísel, je prakticky nemožné najít číslo s tak, že s2 mod n = v. Doporučeje se volit n tak veliké, aby bylo řádově asi 10200; to znamená, že normálním písmen je n dlouhé asi 1 m. Před vlastním procesem určení autenticity uživatele pomocí Fiat-Shamirova protokolu se zvolí v šifrovací centrále dvě prvočísla p a q a utvoří se jejich součin n = p ■ q. Je rozhodující, že centrála drží p a q v tajnosti, zatímco n je veřejně známo. Proto musí být n tak veliké, že faktorizace n je odsouzena k neúspěchu. Důvod proto je, že můžeme relativně jednoduše určit druhé odmocniny z mod p a mod q. Z těchto čísel lze pak snadno získat druhou odmocninu mod n. Centrála spočítá pro každého uživatele číslo s (které je tajemství uživatele) a číslo v tak, že platí v = s2 mod n. Číslo v slouží k veřejné identifikaci uživatele. Centrála by mohla zvolit pro v identifikační údaje uživatele (v binární podobě) a odtud vypočítat s. Číslo n je veřejná systémová konstanta. Tímto jsou už všechny úlohy centrály popsány. Zejména už centrála nehraje při aktuálních procesech určení autenticity žádnou úlohu. 6.3 Autentičnost uživatele 87 Popis Fiat-Shamirova protokolu Uživatel Počítač Uživatel náhodně zvolí číslo r, které je nesoudělné s n a vypočte x = r2 mod n. Počítač náhodně vybere bit b. Uživatel v případě, že b = 1 položí y := r • s mod n; v případě, že 6 = 0 položí y := r mod n. 0 — Počítač prověří, že y je nesoudělné s n;v případě, že 6 = 1 prověří, zda y2 mod n = x ■ v mod n; v případě, že b = 0 prověří, zda y2 mod n = x. Přitom zřejmě má Fiat-Shamirův protokol následující vlastnosti: • Oba počítače musí provést jen několik málo výpočtů mod n: na straně uživatele se musí pouze umocnit na druhou náhodné číslo r; v polovině všech případů se musí ještě spočítat r • s. Počítač provádějící určení autenticity uživatele musí umocnit na druhou číslo y a v polovině všech případů vynásobit x s v. • Počítač používá pouze veřejně dostupné informace, zatímco uživatel podstatným způsobem používá tajemství znalosti s. • Počítač se za jistou dobu přesvědčí, že uživatel zná opravdu tajemství s. Pravděpodobnost, že by nepřítel, který nezná tajemství s pokaždé předpověděl, který bit b bude zvolen, je při í-násobném opakování protokolu jen 1/2*. V případě, zet = 20, je tato pravděpodobnost méně než 1 ku miliónu. • I po provedení určení autenticity uživatele zůstane tajemství s absolutně utajeno. 88 Autentičnost a digitální podpisy • Bezpečnost protokolu je v rozhodné míře závislá na tom, že výpočet odmocnin mod n je tak obtížné, že ani sám Mr. X není schopen vypočítat druhou odmocninu z v - a to ani tehdy ne, když odposlechne tisíce transakcí mezi uživatelem a počítačem. Co je to čipová karta? Čipová karta je plastiková karta o velikosti obvyklé šekové nebo kreditní karty, do které je zabudován čip, který je schopen ukládat data a provádět výpočty tj. čipová karta je skutečný minipočítač. Dnešní čipové karty nemají žádné baterie, takže proud musí být přiváděn během provozu z venku. To je jedna z úloh zlatých kontaktů, podle kterých lze odlišit čipovou kartu od jejích zaostalých příbuzných. Jiná jejich důležitá funkce je, že zajišťují transport dat od a do karty. Čipová karta vznikla v roce 1974, kdy francouzský novinář Roland Mořeno nahlásil k patentování systém pro ukládání dat na nezávislém přenosném predmetu. Od této doby byly vyrobeny stovky miliónů čipových karet a to hlavně ve Francii, kde se stala vzorem čipová karta CP 8 firmy Bull. Také v Německu se čipové karty masově používají (telefonní karty). Proč se tak zajímáme v kryptologii o čipové karty? Protože s čipovou kartou máme poprvé k dispozici médium, které zajišťuje bezpečnost na základě krypto-logie a to pro každého a ne pouze pro experty. To spočívá v tom, že čipová karta má dvě vlastnosti, které doposud byly od sebe odděleny: • Čipové karty jsou ideální pro kryptologii: mohou provádět kryptologické algoritmy a ukládat bezpečným způsobem tajné klíče. • Čipové karty jsou ideální pro lidi: dají se velmi jednoduše používat. Uvidíme, že jediná úloha uživatele je, aby si zapamatoval svoje tajné číslo, aby se mohl vůči čipové kartě identifikovat. Shrneme-li si předchozí argumenty, máme že čipové karty se neobsluhuj! obtížněji než obvyklé kreditní karty; poskytují však bezpečnostní služby na nejvyšší úrovni, totiž takové, které jsou založeny na kryptologických mechanismech. 6.4.1 Čipové karty na kontrolu vstupu Základní idea je vložit čipovou kartu mezi uživatele a počítač, aby se proces určení autenticity uživatele stal bezpečnější. Tento proces je prováděn následovně: • Uživatel se identifikuje vůči své čipové kartě pomocí tajného čísla, které se obvykle nazývá PIN (osobní identifikační číslo). 6.4 6.4 Čipové karty 89 • Karta se identifikuje vůči počítači pomocí dynamického protokolu pro určení autenticity. V případě, že Mr. X si chce zajistit neoprávněný přístup k systému, musí nejen zjistit u právoplatného uživatele tajné číslo, nýbrž i získat čipovou kartu. Uvažme nyní oba kroky k určení autenticity samostatně. • Když uživatel zadá svůj PIN přes klávesnici terminálu, přenese se tajné číslo přímo k čipové kartě a porovná se s uvnitř uloženou referenční hodnotou. Pokud obě tyto hodnoty nesouhlasí, nedovolí karta žádnou jinou službu. Protože se porovnává pouze tajné číslo uživatele uvnitř jeho karty, není třeba žádného centrálního PIN-souboru. Můžeme si snadno představit systémy, u kterých může uživatel měnit svůj PIN, pokud chce, a u kterých může mít PIN proměnnou délku. • Proces určení autenticity karty vůči počítači se provádí pomocí Challenge-and-Response procedury, jak je popsáno v odstavci 6.3. Proto potřebují karta a počítač společný algoritmus / a společný tajný klíč K. Počítač vyzve kartu tak, že jí zadá náhodné číslo RAND. Karta aplikuje algoritmus / za klíče K na náhodné číslo RAND a zašle výsledek AP jako odpověď počítači. Tento pak v mezidobí rovněž spočítal AP a může se tak přesvědčit, zda oba výsledky splývají. Přednosti této procedury leží na dlani: Čísla RAND se mění případ od případu; z tohoto důvodu nemůže Mr. X předpovědět, které bude příští číslo RAND. Přitom tajná data (jako např. klíče) zůstanou utajené. Dnešní čipové karty nají standardizované rozměry 53,98 x 85, 595 x 0, 76 mm dle normy ISO 7810. Čipové karty nesou ve svém těle vlepený nebo zalaminovaný plochý mikroelektronický paměťový modul, jehož poloha, význam a počet kontaktů je normován. Všeobecně i u nás rozšířenou takovou kartou je telefonní karta SPT Telecom, s.p. pro placení ve veřejných telefonních automatech. Modul totiž nesmí být větší než 20 mm2, jinak by se totiž čip pro ohnutí karty mohl zlomit. Proto jsou na čipových kartách prakticky všude implementovány symetrické algoritmy, tj. algoritmy, u kterých obě strany vlastní tentýž tajný klíč. Samozřejmě bychom si přáli implementaci Zero-Knowledge protokolu nebo asymetrických algoritmů, což ale doposud není zcela možné. Karty osazené paměťovým čipem jsou bud kontaktní nebo bezkontaktní. Velikost a typ jejich paměti předurčují čipové kary pro určité typy aplikací. Z hlediska použití lze rozlišit tyto základní skupiny karet: - paměťové karty s volným přístupem (Free Access Cards) obvykle s 2-4 kbity paměti typu EEPROM. 90 Autentičnost a digitální podpisy - předplatní karty (Prepaid Cards/Token Memorz Cards) obvykle v podobě PROM nebo kombinace ROM/PROM 104-160-208 bitů, při aplikaci „abacus" čitačů až 20 kbitů jednotek, - víceúčelové paměťové karty (Multi-Service Cards, Electronic Purse) s pamětmi ROM/EPROM do 1 kbit spolu se zabezpečovací logikou jakou je transportní kód, který slouží k otevření karty v procesu jejího vydávání,PIN na kartě, který je vydavatelem karty přidělen adresně uživateli karty, který slouží pro ověření konzistence karty a jejího předkladatele ap. Aplikace pro identifikaci uživatele Důkazy založené na Zero-Knowledge protokolu tvoří nový revoluční způsob pro realizaci hesel. Základní myšlenka je, že každý uživatel uloží tvrzení věty ve své veřejně přístupné knihovně a přitom důkaz tvrzení zná pouze on. Po loginu uživatel provede Zero-Knowledge důkaz správnosti věty. Je-li důkaz uspokojivý, je poskytnuto povolení práce na počítači. Toto garantuje, že dokonce protivník, který odposlechne Zero-Knowledge důkaz, se nemůže naučit tolik, aby získal neautorizovaný přístup k počítači. To je nová vlastnost, které nemůže být dosaženo tradičním heslovým mechanismem. 6.4.2 Nákupy s čipovou kartou Idea elektronických nákupů (electronic cash) je následující: Zákazník A jde do obchodního domu, vybere si zboží a zaplatí pomocí čipové karty. Situace, která vznikne, je problém určení autenticity mezi třemi různými skupinami: zákazník A, obchodník O a banka B (za předpokladu identity banky obchodníka a zákazníka). Musíme rozlisšovat mezi dvěma různými službami - určení autenticity komunikujících partnerů a určení autenticity zprávy, což je nyní něco jako elektronický šek. Určení autenticity zákazníka A vzhledem k terminálu obchodníka O se provede pomocí obvyklého protokolu pro určení autenticity uživatele. Obvykle se požaduje oboustranné určení autenticity; také terminál obchodníka se musí vykázat vůči čipové kartě jako autentický. Čipová karta má pak možnost rozlišit manipulované terminály od opravdových. Takovýto protokol opět probíhá podle metody „Challenge-and-Response" s tím rozdílem, že nyní posílá karta náhodné číslo, na které musí dát počítač obchodníka správnou odpověď. Jiná věc je určení autenticity elektronického šeku. Tento dokument se podepíše způsobem MAC a pak je odeslán od čipové karty k terminálu obchodníka. Je zřejmé, že obchodník O nemůže změnit šek; z druhé strany je vhodné, aby mohl ověřit platnost šeku. Ale problém při použití symetrických algoritmů spočívá v tom, že každý, kdo dovede ověřit MAC, je schopen ho také zfalšovat (změní 6.4 Čipové karty 91 jednoduše dokument a určí s pomocí tajného klíče odpovídající nový MAC). Zde se nabízí jako nejjednodušší řešení asymetrická podpisovací schémata. Když je z praktických důvodů nutné použít symetrické algoritmy, lze postupovat následovně: Zákazník A a jeho banka B mají společný tajný klíč K*, který obchodník O nezná. Na elektronický šek D aplikujeme obvyklou MAC-proceduru. Potom, co jsou zákazník a karta akceptováni, lze uskutečnit nákup. Za tímto účelem musí potvrdit účetní data D (obnos, druh zboží, datum, jméno obchodního domu) a předat je takovým způsobem obchodníkovi O, že - obchodník má jistotu, že obdrží peníze od banky, a - na obchodmích datech obchodník O nemůže provést dodatečné úpravy (podvodný obchodník by mohl po dodání zboží zvýšit dohodnnutou částku a tuto zvýšenou částku požadovat od banky). Aby bylo možno zabránit tomuto podvodu, má čipová karta uložený tajný klíč K*. To je klíč, který byl dohodnut mezi zákazníkem A a jeho bankou B - a tento klíč je zcela neznám každému potenciálmímu podvodníkovi. Čipová karta neposílá pouze účetní data D na terminál obchodníka, nýbrž také s pomocí klíče K* podepsaná data. Takto konstruovaný MAC se nyzývá certifikát a označuje se CER. Takovýto CER zaručuje, že obchodník O nemůže zfalšovat získaný šek. Pokud se chce přesvědčit o spolehlivosti šeku, může pověřit určením pravosti banku. Způsob certifikovaní není přirozeně ideální a to ze dvou důvodů. Nejdřív musí jak zákazník A, tak obchodník O důvěřovat bance B. Dále nemůže obchodník vyměnit šek okamžitě. Dohromady však nabízí tento systém podstatně větší bezpečnost pro všechny zúčastněné než jiné systémy založené na magnetických či jiných kartách. 92 Autentičnost a digitální podpisy Kapitola 7 Asymetrické šifrovací systémy neboli systémy s veřejným klíčem Doposud jsme pracovali se šifrovacími systémy následujících vlastností: 1. Kdo může zašifrovat zprávu, může ji i dešifrovat. 2. Každá dvojice partnerů musí mít svůj společný tajný klíč. Druhá vlastnost je nepochybně nevýhodná. Pokud by počítačová síť měla n navzájem propojených účastníků, museli by používat nin+1) různých šifrovacích klíčů, které by si účastníci museli mezi sebou vyměnit. Zvolíme-li např. n = 500, bylo by nutno mít v systému cca 125000 klíčů. Vzhledem k nutné obnově za nové klíče bychom se dostali do prakticky nerealizovatelné situace. O šifrovacím systému s první vlastností pak obvykle mluvíme jako o symetrickém šifrovacím systému. První vlastnost můžeme považovat za výhodnou, protože lze k šifrování a dešifrování použít stejný stroj. Asymetrické algoritmy se vyznačují tím, že jsou od první vlastnosti co nejvíce možná vzdáleny. Ukážeme, že takovéto systémy nemají druhou vlastnost a tedy práce s klíči je jednoduchá. Budeme hlavně používat pojem asymetrického algoritmu; občas budeme mluvit o public-key algoritmu. Takovéto postupy byly vyvinuty v roce 1976 Whitfieldem DifRem a Martinem Hellmanem v jejich práci New Directions in Cryptography, za kterou tito američtí matematici obdrželi v temže roce výroční cenu M.I.T. 7.1 Asymetrické šifrovací systémy Budeme předpokládat, že každý účastník T má dvojici klíčů, a to • veřejný klíč E = Et k zašifrování; 94 Asymetrické šifrovací systémy neboli systémy s veřejným klíčem • soukromý (tajný) klíč D = Dt k dešifrování; které se vyznačují následující vlastností: Ze znalosti klíče Et nelze zjistit soukromý klíč Dt- Kryptosystém s touto vlastností se nazývá asymetrický kryp-tosystém. Pokud navíc předpokládáme, že pro každou zprávu M platí D(E(M)) = M, mluvíme o asymetrickém šifrovacím systému. Asymetrický kryptosystém se nazývá asymetrické podpisovací schéma, pokud pro každou zprávu M lze pomocí veřejného klíče E prověřit, zda se k sobě M a D(M) hodí. Všechny veřejné klíče jsou uloženy ve veřejně dostupném souboru (podobnému telefonnímu seznamu), zatímco soukromé klíče jsou tajné tj. známé pouze jejich vlastníkům. Šifrování a dešifrování pomocí asymetrického šifrovacího systému probíhá ve 3 krocích: 1. Chce-li A zaslat B zprávu M, pak • najde veřejný klíč Eb pro B, • zašifruje zprávu M pomocí klíče Eb a • odešle EB(M) k B. 2. B může kryptogram Eb(M) dešifrovat, protože zná jako jediný tajný klíč DB(EB(M)) = M. 3. Žádný jiný účastník nemůže (Eb(M) rozluštit, protože podle předpokladu ze znalosti (Eb a (Eb(M) nelze získat znalost o Db- Výhody asymetrického šifrovacího systému jsou následující: • JVeni potřeba výměna klíčů. Tímto je vyřešen hlavní problém symetrického algoritmu. Zejména je tedy s pomocí asymetrického algoritmu možná bezprostřední komunikace. Můžeme tedy navzájem komunikovat, aniž bychom se složitě dohadovali o klíči. Asymetrické algoritmy jsou ideální pro otevřenou komunikaci. • Není potřeba mnoho klíčů. U symetrického algoritmu se zvyšuje počet klíčů kvadraticky s počtem uživatelů, u asymetrického algoritmu je počet klíčů roven dvojnásobku počtu uživatelů. 7.2 Elektronický podpis 95 • Lze přijmout bez problémů nové uživatele. Je-li přijat nový účastník do symetrického systému, musí si s ním všichni staří účastníci vyměnit klíč. U asymetrického systému není naproti tomu nutno, aby staří účastníci aktualizovali svoje data. • Mnoho asymetrických systémů poskytuje skvělé možnosti pro elektronický podpis. Nevýhody asymetrického šifrovacího systému jsou pak: • Doposud není znám žádný asymetrický kryptosystém, který by byl zároveň rychlý a bezpečný. Postup, kterým se budeme hlavně zabývat, je tzv. RSA-algoritmus. V poslední době se také pracuje s algoritmy, které spočívají na „diskrétních logaritmech". • Asymetrické algoritmy potřebují jistý dohled nad klíči. Může se totiž stát, že Mr. X opatří svoji schránku s falešným jménem, ke kterému se však hodí jeho klíč. Pak může zachytit všechny zprávy, které byly adresovány původnímu adresátovi. 7.2 Elektronický podpis Další důležitou myšlenkou Difneho a Hellmana je elektronický neboli digitální podpis. Nejdříve si ujasněme vlastnosti obvyklého podpisu rukou. Předpokládejme, že osoba A se podepsala rukou na nějaký dokument D. Pak má tento podpis v ideálním případu následující vlastnosti: • Pouze osoba A může vytvořit tento podpis. • Každý jiný účastník může prověřit, že se opravdu jedná o podpis osoby A. Diskutujme nejprve digitální podpis s použitím symetrického šifrovacího systému (např. DES). Popíšeme dva možné přístupy. Diffie-Lamportovo schéma Odesílat A, který si přeje podepsat n-bitovou binární zprávu M = M1...M„, si předem vybere 2n klíčů šifrovacího systému (M,K, C). Označme je po řadě jako ax,...,an; bx,...,bn. Tyto klíče jsou tajné. 96 Asymetrické šifrovací systémy neboli systémy s veřejným klíčem Je-li šifrovací algoritmus e, osoba A vygeneruje 4n parametru {{Xi, Yi} t/j, Vj) : 1 < i < n}, kde X i, Yi leží v definičním oboru e a Ui = e(Xi,ai) a Vj = e(Fj,&j) (1 < i < n). (7.1) Tyto parametry jsou dopředu zaslány příjemci B. Zároveň jsou odeslány nezávislému prověřovateli (veřejný registr). Nyní předpokládejme, že osoba A chce odeslat podepsanou n-bitovou zprávu M = Mi... Mn. Bude postupovat podle následující procedury. Jejím podpisem bude řetězec S = S\... Sn, kde pro všechna i, 1 < i < n platí „ _ í flj pokud Mi = 0, ť ~ \ bi pokud Mi = 1. Ověřovací protokol osoby B probíhá následovně: pro všechna i (1 < i < n) použije osoba B bit Mj a klíč Si, aby ověřila, že pokud Mi = 0 pak e(Xh Si) = Uh pokud Mi = 1 pak e(YhSi) = Ví. Osoba B pak akceptuje podepsanou zprávu pouze za předpokladu, že ověřovací protokol je splněn pro všechna i. Ačkoliv tento systém je jednoduchý pro použití a snadno pochopitelný, má minimálně dvě nevýhody. První je nutná předběžná komunikace s parametry. Důležitější je však zvýšení rozměru zprávy - např. v případě DESu, kdy klíče mají délku 64 bitů, by se zpráva zvětšila 64-krát. Rabínovo pravděpodobnostní podpisovací schéma Rabin (1978) navrhl jiný přístup. Bud e šifrovací funkce nějakého šifrovacího systému (M,K,C). Bud dále (Kí : 1 < i < 2r) posloupnost náhodně vybraných klíčů, které odesílatel A uchová v tajnosti. Příjemce B obdrží seznam 2r parametrů (Xí,Uí), (1 < i < 2r), kde e{Xi,Ki) = Ui (l 1- Dle předpokladu RSA-algoritmu • c?a = ( 1, je M dělitelné buď pa nebo qA- Nechť např. M = a ■ pa, 1 < a < qA- Pak (MdA)eA = MeA'dA = aeA'dA -pAeA'AA = aeA'dA -^mod pA ■ qA- Protože (a, = 1, máme dle Eulerovy věty aeA-dA = a qA Po vynásobení číslem pA máme Pa ■ aeA'dA = pa ■ a = M mod pa ■ qA- 102 Asymetrické šifrovací systémy neboli systémy s veřejným klíčem Pro M = b • q a, 1 < b < p a se důkaz provede analogicky. Poznamenejme, že odhlédneme-li od nutného požadavku 7.3, musí být nutné podpis S vypočtený odesílatelem A v definičním oboru šifrovací procedury eB. Tato poslední podmínka nemusí platit, když použitý systém je RSA; podpis S může být větší přirozené číslo, než je veřejný klíč nB. Můžeme však zajistit platnost této podmínky tím, že přizpůsobíme velikost bloků naší zprávy tak, že výsledek padne do požadovaného definičního oboru. Příklad. Zvolme (e^,^) = (5,35), (eB,nB) = (3,15), M = 3. Pak Úa = 5, dB = 3. Máme pak S = 35 = 33 (mod35), C = 333 = 12 (modl5). B vypočte podpis S' = 123 = 3 (modl5) a z něho zprávu M' = 35 = 33 (mod35). Protože 3 ^ 33, není pro uživatele B splněna podmínka 7.3 a M se nám zobrazí na zcela jinou zprávu M'. Pokud by však bylo n a < ííb (zvolme např. (eB,nB) = (5,35), (eA,nA) = (3,15), M = 3, dB = 5, dA = 3), máme S = 33 = 12 (modl5), C = 125 = 17 (mod35), S' = 175 = 12 (mod35), M' = 123 = 3 (modl5). Rivest, Shamir a Adleman (1978) navrhli mnohem elegantnější řešení: Je zvolena mezní hodnota h pro systém s veřejným klíčem (řekněme h ~ 10199). Každý uživatel pak má dvě dvojice veřejných klíčů, jednu pro zašifrování a druhou pro ověření podpisu. Označme je po řadě (e/,n/) a (//,m/), kde / probíhá množinu uživatelů. Soukromý klíč odpovídající dvojici pro ověření podpisu budeme značit Zvolený předpis se řídí tím, že šifrovací modul a podpisovací modul mi by měly pro každého uživatele / splňovat mi < h < n/. Počítáme pak následovně: 1. Odesílatel A vypočte podpis S jako S = M9A(modmA). 2. Pak A vypočte kryptogram C = SeB(modnB). 3. Po obdržení kryptogramu C vypočte B podpis S = CdB{modnB). 4. Dále B vypočte zprávu M = 5/A(modmA). Snadno se ověří, že tento systém opravdu pracuje a aby bylo zprávy možno podepsat a ověřit všemi uživateli systému, vše co potřebujeme, aby platilo 0 < max M < min {m/ : / E U}, (7.5) kde Uje množina uživatelů systému. 7.5 Diskuse RSA-algoritmu 103 7.5 Diskuse RSA-algoritmu V uvedené verzi RSA-algoritmu vystupují veřejné parametry (ej,nj) a tajné parametry di,pi a qi spolu s číselným vyjádřením (části) zprávy M. Rozeberme si požadavky na jejich výběr. • Při použití RSA-algoritmu každý účastník systému používá dvě (čtyři) 100-místná prvočísla. Kolik jich máme k dispozici? Použitím prvočíselné funkce 7t, která udává počet prvočísel menších než dopředu zvolené číslo n a odhaduje se pomocí odhadu získáme přibližný počet prvočísel ô ležících v intervalu [1099,10100] ô = 7r(10100) - 7r(1099) = 3.9 • 1097. Pravděpodobnost, že by si dva účastníci systému vybrali tutéž dvojici 100-místných prvočísel, je pak řádově 10~391. • Dalším problémem je nalezení 100-místného náhodného prvočísla. Nejprve pomocí generátoru pseudonáhodných čísel sestrojíme 100-místné náhodné číslo m. V případě, že m bude sudé, nahradíme ho číslem m + 1. Pak nové číslo m otestujeme některým z testů na prvočíselnost. Pokud m nebude prvočíslo, vyzkoušíme číslo m + 2 a postup opakujeme až do té doby, než nenajdeme první prvočíslo větší než m. Lze ověřit, že počet pokusů nutných k nalezení prvočísla v okolí čísla m je logaritmickou funkcí čísla m. Jako další uvedeme příklad jednoduchého pravděpodobnostního algoritmu na zjištění prvočíselnosti čísla m. Algoritmus na zjištění prvočíselnosti čísla m na k pokusů BEGIN READ (m,k); FOR i := 1 TO k DO BEGIN a :=RANDOM(l,m- 1); b := (o**(m- 1) MODm); IF b <> 1 THEN BEGIN WRITE (m, ,je složené číslo"); GO TO KONEC END END; WRITE (m, ,je složené prvočíslo"); KONEC: END. 104 Asymetrické šifrovací systémy neboli systémy s veřejným klíčem Funkce RANDOM vybírá pseudonáhodná celá čísla z určeného intervalu. Algoritmus na vstupu načte číslo m a číslo A; a na výstupu obdržíme buď pravdivou odpověď, že m je složené číslo nebo odpověď, že se asi jedná o prvočíslo. V případě, že je k dostatečně velké, je pravděpodobnost, že se nejedná o prvočíslo, v případě kladné odpovědi velmi malá. V praxi máme několik nevýhod RSA-systému: (a) Odesílatel A může úmyslně „ztratit" svůj soukromý klíč tak, že ,ačkoliv je uložen v „bance soukromých klíčů" před startem systému, jí odeslané zprávy se stanou neověřitelnými. (b) Odesílatel A může úmyslně vydat svůj soukromý klíč Úa a dovolit tak, aby všechny jí adresované zprávy byly řešitelné. (c) Doba věnovaná šifrování, podepsání, dešifrování a prověření může být nepřiměřená. Totiž teprve nedávno byla nalezena rozumná implementace RSA-algoritmu a v současné době jsou na trhu RSA-čipy, které ale mají rychlost asi 10 Kbit/s. K dispozici jsou i speciální RSA-karty, které zvládnou 100 Kbit/s. Uvážíme-li však, že budoucí ISDN síťový standard elektronické pošty pracuje s 64Kbit/s a že se v půmyslu (lokální sítě apod.) pracuje s rychlostmi kolem 10 Mbit/s, vidíme, že nebude ještě dlouho možno použít RS A-algoritmus za účelem šifrování zpráv, nýbrž hlavně pro správu klíčů a elektronické podpisování. Při tvorbě elektronického podpisu se totiž nejdříve text zkomprimuje a podpisovací algoritmus se aplikuje na komprimát; není tedy nutno podpisovat velké soubory. 7.6 Systémy založené na ruksakové metodě Jeden z prvních (1978) sytému s veřejným klíčem byl vyvinut Merklem a Hell-manem a byl založen na tzv. ruksakovém problému. Přesněji, jedná se o výpočetní problém známý jako PODMNOŽINOVÝ SOUČET definovaný následovně: Vstup: Otázka: Kladná reálná čísla a\, a2,..., an, t Existuje podmnožina J C {1,..., n} tak, že Eáe j a>i = *? Tento problém je jedním z klasických NP-úplných problémů. Zašifrování zprávy 1. Odesílaná zpráva je odeslána v binárním tvaru m. 7.6 Systémy založené na ruksakové metodě 105 2. Veřejné klíče tvoří soubor n-tic (ai,..., an) kladných přirozených čísel. 3. Binární zpráva m je rozdělena do bloků a n znacích tak, že m = mi ... mt, kde každé m.j je n-tice nul a jedniček. 4. Pro každé j, 1 < j < t, položme n i=l kde mj = (Mu...,Mn). 5. Přeneseme posloupnost (kryptogram) C\,..., ct. Dešifrování zprávy Zdánlivě se příjemce a každý, kdo zachytí kryptogram, zabývají tínže problémem; aby bylo možno rozluštit zprávu z posloupnosti C\,..., ct a veřejného klíče (ai,..., an), musí vyřešit t různých NP-úplých problémů, každý pro jedno Cj. Merkle-Hellmanův systém je založen na skutečnosti, že ne všechny případy NP-úplných problémů jsou obtížně řešitelné. Řekneme, že posloupnost a\,..., an je superrostoucí, jestliže pro všechna k, 1 < k < n, platí k ak+l >Ysai- (7-6) i=l Snadno se dokáže následující tvrzení. Lemma 7.6.1 Existuje rychlý algoritmus (v polynomiálním čase) pro vyřešení třídy problémů podmnožinového součtu pro superrostoucí posloupnosti. Proof. Předpokládejme, že posloupnost a\,...,an je superrostoucí,. Potřebujeme reprezentovat vstup t jako součet vybrané podposloupnosti posloupnosti ai,... ,an nebo rozhodnout, že takovouto reprezentaci nelze najít. Položme r = max {i : aá < t}. Pak t = ar + s, kde nyní potřebujeme najít reprezentaci čísla s jako součet vybrané podposloupnosti posloupnosti a\,..., ar-\ nebo rozhodnout, že takovouto reprezentaci nelze najít. Opakování tohoto postupu nám pak dá naši reprezentaci pro t nebo ojeví, že takovou reprezentaci není možno najít. * Základ Merkle-Hellmanova systému je následovný: 106 Asymetrické šifrovací systémy neboli systémy s veřejným klíčem 1. Typický uživatel A si vybere „snadnou" superrostoucí posloupnost přirozených čísel e\,... ,en. 2. Uživatel si vybere dvojici „velkých" nesoudělných přirozených čísel w a N a transformuje pomocí ní vybranou superrostoucí posloupnost do „obtížné" posloupnosti T(e\),... ,T(en) podle předpisu T (a) =w-ei (modN). Transformovaný vektor (T(e\),... ,T(en)) se stane veřejným klíčem uživatele A. Přitom by mělo být ei + e2 + • + en. Lemma 7.6.2 Buď c kryptogram odeslaný uživatel A při použití obtížného veřejného klíče T(e\),... ,T(en) uživatele A a předpisu T(ei) = w ■ e* (modN). Lehký kryptogram d pak získáme z následujícího vzorce: c' = w~l ■ c (mod N). Důkaz. Položme = T(ej). Je-li tedy M = (MiM2 ... Mn) zpráva, pak máme n c = y, Mi ■ ai- i=l Ale n n n n c = J2Mi-ai = J2Mi-wei + J2Mi-N ■di = J2Mi-wei {modN) i=l i=l i=l i=l pro vhodná přirozená čísla di. Máme tedy n w'1 ■ c = J^Mí ■ a (modAQ. i=l Výhody a nevýhody Zásadní výhodou je relativně vysoká rychlost šifrování odesílatelem. Skutečně, výpočet součtuje velmi rychlý. Viditelnou nevýhodou systému je jeho nelinearita. Skutečně, platí E(x + y) = E(x) + E(y), kde E(x) = x * a = X)ľ=i Xí^í je operace zašifrování. Navíc v nejnižším bitu součtu E(x) se operace sčítání proměňuje na operaci XOR. Proto nejnižší bit součtu E(x), což je dostupný šifrový text, je roven výsledku operace XOR těch bitů otevřeného textu tj. vektoru x, které stojí u lichých aj. Bude-li například liché jen a\ a a2, dostaneme x\ or £2=nejnižší bit E(x). I když to není velká informace, ze šifrového textu by neměla „vyzařovat". Kvalitní šifrovací systémy nevydávají o otevřeném textu vůbec žádnou využitelnou informaci. 7.7 Systém s veřejným klíčem se složitostí stejnou jako faktorizace 107 Luštění, sázky a prohry Merkle, jeden ze spoluautorů výše uvedeného šifrovacího systému, si byl jeho bezpečností tak jist, že na něj vsadil 100 USD. Bezpečností se pak zabývalo mnoho vědců. Herlestam učinil zkušenost, že poměrně často lze zjistit jeden bit otevřené zprávy. Shamir ukázal, že je řešitelný tzv. kompaktní problém rance. S Zippelem pak dokázali řešitelnost Merkle-Hellmanova systému, jestliže luštitel bude znát tajný modul N. Pokrok pak nastal po Lenstrově objevu řešitelnosti „problému celočíselného programování" v polynomiálním čase. S jeho využitím pak Shamir popsal metodu řešení v polynomiálním čase a tím vyhrál Merklovu sázku. Merkle sice prohrál 100 USD, ale vsadil desetkrát tolik, že iterovaný problém nebude rozbit. E. Brickel v létě 1984 oznámil, že je schopen rozluštit čtyřicetkrát iterovaný problém rance během jedné hodiny. 7.7 Systém s veřejným klíčem se složitostí stejnou jako faktorizace Uveďme příklad systému s veřejným klíčem, o kterém lze ukázat, že jeho složitost je ekvivalentní s problémem faktorizace. Tvůrcem systému je Rabin (1979). Každý uživatel systému vybere dvojici (p,q) velkých různých prvočísel, které uchová v tajnosti. Zároveň si vybere přirozené číslo B < N = p ■ q. Veřejný klíč bude dvojice (B, N), soukromý klíč bude faktorizace {p, q) čísla N. Šifrovací funkce e zprávy M, kde M je reprezentovatelná jako přirozené číslo v definičním oboru {1,..., N — 1} (v případě potřeby se zpráva rozparceluje na více bloků), je e(M) = M ■ (M + B) (modiV). (7.7) Je-li C výsledný kryptogram, pak dešifrovací problém je nalézt M tak, že M2 + B-M = C (modiV). (7.8) Kongruenční rovnice a mocninné zbytky Poznamenejme nejprve, že platí následující tvrzení Věta 7.7.1 Kongruenční rovnice ax = b (modm). (7.9) je řešitelná právč tehdy, když (a, m)/b. V tomto případč má rovnice právč (a, m) navzájem nekongruentních řešení modulo m. 108 Asymetrické šifrovací systémy neboli systémy s veřejným klíčem Důkaz. Výše uvedená podmínka je nutná, neboť v opačném případě nemůže platit rovnost ax = b + km v oboru celých čísel. Bud tedy d = (a, m) a nechť d/b. 1. Nechť d = 1. Dle Bezoutovy věty existují celá čísla u, v taková, že au+mv = 1. Existují tedy celá čísla x, y splňující ax+my = b, tj. platí ax = b (modm). Řešení x je jednoznačně určeno modulo m, neboť je-li x' jiné řešení splňující ax' = b (modm), máme a(x — x') = 0 (modm) a tedy x = x' (modm). 2. Nechť d > 1. Protože nutně d/b, máme po dosazení do vztahu ax = b + km za a = a'd, b = b'd, m = m'd a po vydělení číslem d kongruenční rovnici a'x = b' (modm'). Z případu 1 víme, že tato kongruenční rovnice má jediné řešení x = x0 (modm'). Všechna řešení modulo m tvoří právě d následujících čísel x = xo,xo + m',... ,xo + (d — l)m', (modm). Budeme chtít vyřešit resp. zjistit, zda následující kongruenční rovnice má řešení v celých číslech pro n > 2: axn = b (modm). (7.10) Podobně jako v případě lineárních kongruečních rovnic se lze omezit na případ, kdy (a, m) = 1. Použitím Eulerovy věty pak obdržíme rovnici xn = ba^'1 (modm). Buďte tedy m, n přirozená čísla taková, že m > 2, n > 2, a celé číslo takové, že (a, m) = 1. Číslo a se nazývá n-tý mocninný zbytek modulo m, je-li řešitelná kongruence xn = a (modm). (7.11) Pro zkoumání takovýchto kongruenčních rovnic využijeme následujících tvrzení. Věta 7.7.2 Buďte číslam\,m2, ■ ■ ■, mr navzájem nesoudělná, a\, a2, ■ ■ ■, ar ab\,b2, ... ,br libovolná celá čísla taková, ze [a\,m\) = ((X2,m2) = ... = (ar,mr) = 1. Pak má systém aiX = bi (modmj) (7-12) pro 1 < i < r právě jedno řešení modulo m = m\ ■ m2, •... • mr. Důkaz. Zřejmě mají jednotlivé kongruenční rovnice právě jedno řešení, které získáme z Euklidova algoritmu pro čísla arríj (ai-Ui+nii-Vi = la pronásobíme-li bi máme • Xi + m^ • yi = bi tj. = bi (modm^)). Předpokládejme, že toto řešení je ve tvaru x = Ci (modmj) (7-13) 7.7 Systém s veřejným klíčem se složitostí stejnou jako faktorizace 109 pro 1 < i < r. Protože máme (má, mj) = 1 pro i ^ j, máme (^-, ..., ^-) = 1. Zejména tedy existují čísla yi, 1/2, ■ ■ ■, yr tak, že mm m --2/1 +--V2 + --- +--Vr = 1- m\ Tří2 mr Položme čí = -j^ • Ví pro 1 < i < r. Zřejmě platí ei + 62 + ■ ■ ■ + er = 1 (modm), (7-14) ej • e j = 0 (modm) pro i 7^ j, (7-15) e* • e* = ej (modm), (7-16) _ í 0 (modmj) pro i ^ j, % \ 1 (modmj) pro i = j. (7.17) Totiž ej • e j = m • c, • = SI • e* = 1 • e* = e* (modm), ej = m* • c', (ej,mj) = 1. Položme a;0 = Ciei + c2e2 + ... + crer, máme pak z 7.17, že x0 = Cj (modmj) pro 1 < í < r. Je tedy #0 společné řešení modulo m. Pro každé jiné řešení x'0 modulo m systému 7.13 máme xo = x'0 (modmj) pro l [o>i]mi- Řekneme, že a patří modulo m k exponentu d, pokud (a,m) = 1, ad = 1 (modm), ale an ^ 1 (modn) pro 1 < n < d. Lemma 7.7.3 Patří-li a modulo m k exponentu d, jsou čísla 1, a, a2,..., ad~x modulo m nekongruentní. Je-li dále a* = 1 (modm), tedy d\t. Důkaz. Nechť ak = ah (modm), 0 < h < k < d. Protože (a,m) = 1, je ak~h = 1 (modm). To je však spor s 0 < k — h < d a minimalitou d. Položíme-li t = dq+r, 0 < r < d, máme 1 = a* = adq+r = ar (modm), tj. musí platit r = 0. Lemma 7.7.4 Patří-li a modulo m k exponentu d an je přirozené číslo s (n, d) = 1, patří an rovněž modulo m k exponentu d. Důkaz. Nechť an patří k exponentu t. Pak z 7.7.3 a (ď1)1 = 1 (modm), obdržíme d\nt. Protože (n, d) = 1, je nutně d\t a tedy i d < t. Protože (an)d = (ad)n = 1 (modm), je nutně i t < d. Celkem t = d. Poznamenejme, že číslo g, které modulo m patří k exponentu <^(m), se nazývá primitivní kořen modulo m. Lze dokázat, že pro každé prvočíslo p vždy existuje primitivní kořen g modulo p, tedy každé číslo od 1 do p — 1 lze vyjádřit jakožto mocninu g. Speciálně lze ověřit, že pokud t\(p(p), má kongruenční rovnice xl = 1 (modp), (7.20) právě t navzájem nekongruentních řešení. Tvrzení 7.7.5 K modulu m existuje bud'žádný nebo (p((p(m)) modulo m nekon-guentních primitivních kořenů. Důkaz. Nechť g je primitivní kořen modulo m. Podle lemmatu 7.7.4 je rovněž gn primitivní kořen modulo m v případě, že platí (n,(p(m)) = 1. Takovýchto čísel n < (p(m) je právě (p((p(m)). Máme tedy v každém případě alespoň (p((p(m)) primitivních kořenů. To, že nelze nalézt žádné další primitivní kořeny, plyne z lemmatu 7.7.3. Totiž, probíhá-li v čísla mezi 0 a (p(m) — 1, probíhá pak g" grupu Gm. Zvolíme-li v tak, že (y, <^(m)) = t > 1, pak platí (gv)!eSr1 = (g^ý = 1 (modm). Pak ale nemůže být gv primitivní kořen modulo m. 7.7 Systém s veřejným klíčem se složitostí stejnou jako faktorizace 111 Tvrzení 7.7.6 Buď p prvočíslo. Pak Gp je cyklická. Zejména tedy existuje primitivní kořen modulo p. Důkaz. Prp p = 2 je tvrzení věty triviální. Nechť p je v dalším liché prvočíslo. Pro d\(p—l) označme x(d) počet zbytkových tříd z Gm, které patří k exponentu d modulo p. Máme ukázat, že xip — 1) > 0. Podle tvrzení 7.7.5 je pak dokonce V(P- 1) = X(P~ !)■ Nechť tedy existuje nějaké číslo a, které patří k exponentu d. Pak dle lemmatu 7.7.3 jsou čísla tvaru 1, a, a2,..., ad~x navzájem nekongruentní řešení rovnice xd — 1 = 0 (modp). Toto lze přepsat pomocí polynomiální kongruence následovně xd - 1 = (x - l)(x - a) ■ ■ ■ (x - a4'1) (modp). Zároveň jsou výše uvedená čísla také všechna řešení této kongruence. Podle lemmatu 7.7.4 pak i ak patří k exponentu d, pokud (d,k) = 1. To znamená, že mezi řešení přináleží cp(d) čísel, která patří k exponentu d. Nutně pak bud x(d) = 0 nebo x(d) = 2. Důkaz. Z a = g^°^sa(modm) a b = g^°^sb(modm) obdržíme ab = g^°^sa+^°^9b (mod m). Porovnáme-li toto s ab = g^°^sab(modm), obdržíme první vlastnost. Vlastnosti 2 a 3 plynou bezprostředně z vlastnosti 1. Z g = <^°§sff(modm) obdržíme 4. Pátá vlastnost je založena na Fermat-Eulerově větě: g*™ - 1 = [g^ - l) (g^ + lj = O(modm). Tvrzení 7.7.8 Buďp liché prvočíslo tak, že číslo a není dělitelnép. Kongruenční rovnice xn = a (modpr) má právě d = {n,pr~1(p — 1)) nekongruentních řešení, pokud d dělí \ogga. Jinak je tato kongruence neřešitelná. Důkaz. Tvrzení věty se logaritmováním převede na lineární kongruenční rovnici n\oggx = logffa (mod pr~1(p — 1)). Zbytek plyne z tvrzení 7.7.1. Tvrzení 7.7.9 Buďp liché prvočíslo tak, že číslo a není dělitelné p, d = {n,pr~1(p— 1)). Kongruenční rovnice xn = a (modpr) má právě řešení právě tehdy, když platí kongruenční rovnice a^-'iP-i) = i (mod/). (7.21) Důkaz. Bud g primitivní kořen modulo pr. Podle věty 7.7.8 je výše uvedená kongruence řešitelná právě tehdy, když existuje číslo h tak, že logffa = h ■ d. Pak platí a = glo&9a = ghd (modpr). Tedy a^"1^"1) = ^"Hp-i) = i (modpr). Nechť obráceně platí kongruenční rovnice 7.21. Položme // = logffa. Protože a = g^ (modpr), máme gd'pT 1(p~1) = l (modpr). Protože g je primitivní kořen modulo pr, je ^ celé číslo, tj. d dělí \i. Tedy dle tvrzení 7.7.8 je kongruenční rovnice řešitelná. Věta 7.7.10 Bud' f(x) polynom v proměnné x s celočíselnými koeficienty. Pak počet řešení kongruenční rovnice f{x) = 0 (modm),m = ^UiPV (7.22) je číslo N = nin2 •... • nr, přičemž ná je počet řešení rovnice f(x) = 0 (modp?ť) (7.23) pro 1 < i < r. 7.7 Systém s veřejným klíčem se složitostí stejnou jako faktorizace 113 Důkaz. Řešitelnost kongruenční rovnice 7.22 nastává právě tehdy, když je systém kongruečních rovnic 7.23 řešitelný. V případě řešitelnosti každé jednotlivé kongru-enčí rovnice označme x = Cj (modp**) řešení i-té kongrunční rovnice. Obdržíme pak lineární systém kongruencí, který má jednoznačně určené řešení (mod m). Probíhají-li všech nekongruentních řešení, získáme celkem N řešení (mod m). I Důsledek 7.7.11 Počet řešení kongruenční rovnice xs = x (modm),m = Uri=1pp je číslo N = ni7i2 •... • nr, přičemž rii je počet řešení rovnice xs = x (modp**) pro 1 < i < r. Tvrzení 7.7.12 Počet řešení kongruenční rovnice xs = x (modp), kde p je prvočíslo, je roven 1 + (p — 1, s — 1). Důkaz. Uvažme dva případy. Nechť x je číslo soudělné s p tj. x = p (modp) -takové x je pouze jedno (p) a je řešením. Nechť x je nesoudělné s p. Množina všech nesoudělných čísel s p tvoří cyklickou grupu stupně p — 1 a z předchozího víme, že existuje právě (p — 1, s — 1) prvků této grupy splňujících 7.26. I Důsledek 7.7.13 Počet řešení kongruenční rovnice xs = x (modm),m = Uri=1pi je číslo N = Wi=1(l + fa - 1, s - 1)). Kvadratické kongruence Uvažme pro celá čísla a, b, c, m (m > 1, a ^ 0 (modm)) kvadratickou kongruencí ax2 + b ■ x + c = 0 (modm). (7.28) Vynásobením 4a převedeme rovnici na tvar {2ax + b)2 = b2 - Aac (mod m). (7.29) (7.24) (7.25) 7.26 (7.27) 114 Asymetrické šifrovací systémy neboli systémy s veřejným klíčem To znamená, že jsme schopni plně vyřešit kvadratickou kongruenci 7.28, jestliže umíme vyřešit speciální případ x2 = a (modm). (7.30) Tím se celá problematika převede na problém kvadratických zbytků. Z důkazu věty 7.7.10 víme, že se lze dále omezit na řešení rovnice x2 = a (rnodp8), (7.31) kde p je prvočíslo. Zároveň lze předpokládat, že (a,p) = 1. Totiž v případě, že p dělí a máme 1. x = 0 (rnodp), pokud je s = 1, 2. v případě s > 1 by muselo být x = py tj. py2 = a' (modps_1),a = pa'. Nutně pak a' = pa" tj. získáme kongruenční rovnici y2 = a (modps~2),. Uvažme nyní kongruenční rovnici tvaru x2 = a {rnodp3), (a,p) = 1. (7.32) Snadným ověřením získáme řešení pro p = 2. 1. s = 1 : Existuje právě jedno řešení a to x = 1. 2. s = 2: (a) a = 1 (mod4) : Existují právě dvě řešení. (b) a = — 1 (mod4) : Neexistuje žádné řešení. 3. s > 3 : (a) a = 1 (mod8) : Existují právě čtyři řešení. (b) a / 1 (mod8) : Neexistuje žádné řešení. Věta 7.7.14 Je-li p liché prvočíslo, pak má kongruence 7.32 buď žádné nebo právč dvě řešení. Je-li a kvadratický zbytek modulo p, je také kvadratický zbytek modulo ps a obráceně. Důkaz. Víme, že (2,ps~1(p — 1) = 2. Podle věty 7.7.8 má pak kongruenční rovnice 7.32 právě dvě řešení, pokud loga = 0 (mod2) a žádné řešení, pokud loga = 1 (mod2). Musíme ještě ukázat, že loga je nezávisle na s dělitelné 2 nebo ne. Bud g primitivní kořen modulo ps pro libovolné s > 1 a //s = logffa vzhledem k modulu ps. Ze vztahu a = g^ (rnodp8),a = g^ = g111 (rnodp), plyne //s = \i\ (rnodp — 1) a proto \is = \i\ (mod2). Stačí se tedy zřejmě omezit na případ, že s = 1. 7.7 Systém s veřejným klíčem se složitostí stejnou jako faktorizace 115 Věta 7.7.15 Je-li p liché prvočíslo, pak máme právč tolik kvadratických zbytků jako nezbytků. Kvadratické zbytky modulo p jsou určeny a = l2, 22,..., ^ modp. Důkaz. Uvedená čísla jsou zřejmě modulo p nekongruentní. Totiž je-li b2 = c? (modp), kde 1 < b,c < ^y-, máme (b — c)(b + c) = 0 (modp). Protože 1 < b+c < p, máme b—c = 0 (modp), tj. b = c. Protože dále (p—k)2 = k2 (modp), musí být každý kvadratický zbytek kongruentní s jedním z výše uvedených čísel. Tímto je tvrzení dokázáno. Lemma 7.7.16 Řešení rovnice x2+ B-x = C {modp-q) (7.33) lze obdržet jako kombinaci řešení u, v rovnic x2 + B ■ x = C (modp) (7.34) x2 + B -x = C (modq) (7.35) a přirozených čísel a, b splňujících a = l (modp), a = 0 (modq), 6 = 0 (modp), 6=1 (modq), (7.36) a pak x = a ■ u + b ■ v splňuje 7.33. Důkaz. Plyne bezprostředně z předchozích tvrzení. Bud p liché prvočíslo, p nedělí číslo a. Legendrův symbol (^j definujeme jako a\ _ j +1 pokud je a kvadratický zbytek modulo p, p J [ — 1 pokud je a kvadratický nezbytek modulo p. Mimo jiné je vhodné vytvořit pravidla pro výpočet Legendrova symbolu. Evidentní jsou následující vlastnosti (p) = (p) pr° b = a (modP) (í) = 1 Z Fermat-Eulerovy věty víme, že ap~x = 1 (modp) a proto platí a~ = ±1 (modp). Podle věty 7.7.9 je podmínka a 2 =1 (modp) dostatečná a nutná pro řešitelnost kongruenční rovnice x2 = a (modp), (a,p) = 1. Máme tedy tzv. Eulerovo kritérium: 116 Asymetrické šifrovací systémy neboli systémy s veřejným klíčem Věta 7.7.17 modp. Pi Z tohoto kritéria lze odvodit řadu důležitých faktů: Tvrzení 7.7.18 ©=(3 e Důkaz. Z Eulerova kritéria máme, že f — 1 = (ab)R^~ = ■ = f - ] f - ] modp. Tvrzení 7.7.19 Důkaz. První vztah plyne bezprostředně z Eulerova kritéria. Abychom dokázali druhý vztah, uvažme součin n(-i)**=(^)K-i)^- k=l Je-li v součinu číslo k liché, zaměníme (—A;) modulo p číslem (p — k) o obdržíme rovnost p-i f[ {~l)kk = 2 • 4 • 6... • (p - 1) = (^--^)!2£íi modp. Protože ale p nedělí (^^p)!, máme v 2 ; Z Eulerova kritéria plyne tvrzení. Lemma 7.7.20 Je-li p prvočíslo tvaru 4k — 1 ad kvadratický zbytek modulo p, řešení kongruenční rovnice tvaru y2 = d{moáp) (7.37) je dáno předpisem y = dk (modp). (7.38) 7.7 Systém s veřejným klíčem se složitostí stejnou jako faktorizace 117 Důkaz. Z Eulerova kritéria máme, že f - ] = 1 = <ŕž~ moáp. Protože k = \(p + 1), máme = = d^-^d = d modp. Zkombinujeme-li předchozí úvahy, dostaneme následují tvrzení Tvrzení 7.7.21 Za předpokladu, že jak p tak q jsou kongruentní s 3 modulo 4, lze dešifrovací proceduru provést v polynomiálním čase. Důkaz. Příjemci, který zná faktory p a q a ví, že kryptogram je kvadratický zbytek, stačí jenom aplikovat předchozí lemmata. Rabin ve skutečnosti dokázal víc než 7.7.21. Totiž dokázal, že i v případě, že prvočísla p a q nejsou v tomto speciálním tvaru, kongruenční rovnice modulo p a modulo q lze řešit náhodným algoritmem v polynomiálním čase. Poznamenejme, že praktickou nevýhodou Rabínova schématu je, že příjemce obdrží čtyři možné zprávy, z nichž ná vybrat tu správnou. Obvykle to lze provést tím, že má nějakou dodatečnou informaci - např. že po převedení z binárního do textového tvaru je zpráva psaná v angličtině. Mr. X však nezná faktory p a q čísla N a musí se zabývat mnohonásobně obtížnějším problémem. Že je tomu skutečně tak, plyne z níže uvedené druhé Rabínovy věty. Věta 7.7.22 Označme DN množinu všech takových d, 0 < d < N, že existuje řešení kongruenční rovnice y2 = d{modN). (7.39) Jestliže pro alespoň \ JDn^ ] takovýchto d jsme schopni najít takové y, pak jsme vOQ n schopni najít faktor N v náhodné polynomiální době. Lemma 7.7.23 Jsou-li x, y E ZN celá čísla modulo N taková, že x2 = y2 (modiV), x ^ ±y (modiV), (7.40) jsou pak (x + y,N) a (x — y,N) dělitelé N. Zejména pro N = p-q, p a q prvočísla je (x + y, N) prvočíselný dělitel N. Důkaz, x2 = y2 (modN) implikuje x2 = y2 + rN, kde r E Z. Tudíž (x — y)(x + y) = rN. 118 Asymetrické šifrovací systémy neboli systémy s veřejným klíčem Věta 7.7.24 Rozšifrování Rabínova systému s veřejným klíčem je ekvivalentní nalezení efektivního algoritmu pro faktorizaci. Důkaz. Předpokládejme, že máme algoritmus A ,který pro dané (q, N) a pro ^"logjv"^ takovýchto q dává na výstupu odmocninu z q modulo N. Pak můžeme faktorizovat N iterováním následujících kroků: Vyberme náhodně z ze ZN tak, že (z,N) = 1 a vypočtěme q = z2 (modiV). Vložme na vstup algoritmu A dvojici (q,N). Pokud A má za výstup druhou odmocninu z q různou od z nebo —z modulo N, pak 7.7.23 nám dává, že jsme schopni faktorizovat N. Očekávaný počet iterací algoritmu bude malý, protože je N~n^ šance na faktorizaci N v každé iteraci. 7.8 Jak se napadá RSA-algoritmus? Pokusy o narušení RSA-algoritmu prostřednictvím faktorizace modulu N = p • q Faktorizace modulu N je nepoměrně obtížnější než jeho konstrukce, tj. nalezení prvočísel p a q. V době vzniku RSA-algoritmu (1978) byla 50-místná prvočísla bezpečná, což dnes už není pravda. Proto se v současné době pracuje se 100-místnými prvočísly. Přitom není vyloučené, že bude možno najít algoritmus na faktorizaci, který pracuje v polynomiálmím čase. Zároveň se nepodařilo dokázat, že by faktorizace šifrovacího modulu byla ekvivalentní s bezpečností RSA-systému. Mohla by se totiž najít metoda, jak tento systém narušit bez faktorizace N. Zatím jsou však pokusy o narušení bezpečnosti RSA-systému založeny hlavně na faktorizaci. Lze například dokázat, že výpočet dešifrovacího exponentu t je ekvivalentní faktorizaci šifrovacího modulu N. Prvním algoritmem, který nám napadne, je tzv. pokusné dělení (Trial Divi-sion) čísly 2, 3,..., \VŇ]. Postup lze urychlit tak, že dělíme jen čísly 2, 3 a pak čísly tvaru 6A; — 1,6A; + 1 pro k = 1,2,.... Další používanou metodou je Pollardova p — 1 a p + 1 metoda. Základem metody je následující tvrzení: Věta 7.8.1 Buď n = p ■ q, p, q, r prvočísla, r — l/b, r/n a n nedělí a. Pak r/{n,ab - 1). Důkaz. Podle Fermatovy věty platí ar_1 = 1 modr a tedy i ab = 1 modr tj. r/(ab — 1). Zároveň však r/n. Aby se výše uvedená věta dala využít, je nutno najít vhodná čísla a, b. Nalezení a je snadné. Stačí zvolit nějaké malé prvočíslo a přesvědčit, zdaje či není dělitelem n - pokud by bylo dělitelem, našli bychom faktorizaci čísla n a tím byli hotovi. 7.8 Jak se napadá RSA-algoritmus? 119 Volba b je obtížnější, je třeba ho najít postupným zkoušením. Přitom se obvykle za b volí čísla tvaru bj = nsn(l,2,... Tato čísla je vhodné volit z toho důvodu, že mají mnoho vlastních dělitelů a je tedy velká šance na splnění podmínky r — 1/6. Algoritmus se hodí na nalezení menších prvočíselných dělitelů čísla n. Touto metodou bylo např. faktorizované číslo 2257 — 1 jako součin tří různých prvočísel. Další známou metodou je Pollardova rho-metoda (Monte Carlo), kterou se obvykle najdou malé prvočíselné dělitele modulu N asi po y/p cyklech programu. Metoda začíná výběrem libovolné nelineární funkce / s celočíselnými koeficienty, nejčastěji f(x) = x2 + c, c ^ 0, — 2 a volbou počáteční hodnoty x0, kterou lze zvolit náhodně. V dalších krocích se rekurentně počítají hodnoty posloupnosti xj+1 = f(xj) modiV, j = 0,1,2,.... Pomocí pravděpodobnostních úvah lze dokázat, že výsledná posloupnost bude skoroperiodická. To znamená, že po jisté době lze očekávat výskyt dvou hodnot Xj,Xk, pro které platí Xj ^ Xh mod N, N = p ■ q x j = Xk mod p. To ale znamená, že (x j — x k, N) = p. Hledání nej většího společného dělitele lze však provést Euklidovým algoritmem s malou složitostí. Algoritmus se ještě trochu upraví: kdyby se tímto způsobem porovnávaly všechny rozdíly x k — x j pro všechna j < k, počet operací by neúměrně narůstal. Proto postupujeme následovně: předpokládejme, že máme už spočítané Xk, přičemž k je h + 1-bitové číslo, 2h < k < 2h+1. Označme j = 2h — 1. Pak najdeme (xk — Xj,N). Pokud prvočíslo p nenalezneme, postup zopakujeme pro k + 1. Nevýhodou takovéhoto postup je, že pravděpodobně nenajdeme „první dvojici" Xk,Xj. Věnujme se pro okamžik tzv. Fermatově faktorizaci, která je založena na tvrzení 7.7.23 tj. že x — y je pravděpodobně netriviální dělitel čísla N. Je-li navíc N = p ■ q, je pak i Protože p a q jsou různá prvočísla, nemusíme se bát toho, že by N bylo úplným čtvercem nějakého prvočísla. Pokud jsou prvočísla p a q blízko, resp. rozdíl \p — q\ je malý, je číslo ^ jen o málo větší než \/Ň. Pak ale stačí pro x = 1 + ľv^l, 2 + [v^ŽV], ■ ■ ■ počítat x2 — N = u. Je-li u = y2 úplný čtverec, bude p = x — y hledané prvočíslo. Další z možných metod je metoda tzv. řetězových zlomků. Na základě této metody lze navrhnout procesor v ceně asi 1000000 $, který rozloží 100-místné 120 Asymetrické šifrovací systémy neboli systémy s veřejným klíčem dekadické číslo asi za 1 měsíc. Pro 200-místné dekadické číslo je ale odhad 3.8 miliónů let, což garantuje postačující bezpečnost celého systému. Připomeňme si, že tvůrci RSA vsadili 100 USD na to, že nikdo nerozluští jejich anglický text zašifrovaný algoritmem RSA s veřejným modulem e = 9007 a známým modulem N, který je součinem dvou 64- a 65-ciferných prvočísel. Rivest v roce 1977 spočítal, že na roznásobení uvedeného modulu N by bylo nejlepší faktorizační metodou potřeba 40 000 000 000 000 000 let. Proto se nebáli „investovat" 100 USD do sázky. V dubnu 1994 bylo však oznámeno, že se toto 129-ciferné číslo N podařilo roznásobit. Zároveň tak byl odhalen otevřený text zašifrované zprávy, která neměla nikdy spatřit světlo světa: „The magie words are squemish ossifrage". Poznamenejme k výše uvedenému, že v roce 1873 se zdálo nemožné faktorizovat deseticiferné číslo. V roce 1977 byla však už známá Pollardova rho metoda faktorizace. S její výkonností také Rivest počítal při odhadu uvedeného času na faktorizaci našeho čísla N. Od té doby se však objevily další metody faktorizace: ECM (elliptic curve method), QS (quadratic sieve factoring) a NFS (number field sieve factoring algorithm). Pollardova rho metoda na nalezení 64-ciferného součinitele potřebovala odhadem 4 x 1032 modulárního násobení, tj. asi 1.3 x 1016 let - Rivest uvažoval, že by jedno molekulární násobení mohlo trvat jednu nanosekundu. ECM však už dnes potřebuje už jen 5 x 1015 modulárního násobení, tj. asi 2 měsíce. Ve skutečnosti se takovéto rychlosti modulárního násobení nedosahuje a reálný odhad by byl cca 15 000 let, což je však obrovský pokrok oproti 1016 letům. Na rozdíl od ECM a Pollardovy rho metody metoda QS, použitá k nalezení 64-ciferného součinitele u našeho čísla N, závisí mnohem více na přístupu do paměti než na výkonu procesoru. Na základě analýzy reálně použitých typů počítačů a jimi spotřebovaného času na faktorizaci bylo spočítáno, že k nalezení 64-ciferného součinitele se spotřebovalo celkem 4000 až 6000 tzv. MIPS roků. Přitom jeden MIPS rok je množství operací, které za jeden rok vykoná počítač s výkonem jeden milion operací za vteřinu. Je to tedy 365,25 x 24 x 3600 x 1000000 =cca. 3.16cotl013 operací. Počítáme-li průměrný výkon jednoho počítače v experimentu 10 MIPS s tím, že na experimentu pracoval jen polovinu dne tj. s reálným výkonem pouze 5 MIPS, bylo k faktorizaci použito cca. 1000 let práce. Zároveň je z výše uvedeného vidět úžasný nárůst výkonnosti faktorizačních metod v posledních letech. Faktorizaci 154-místného čísla (512 bitů) pak bude trvat cca 500000 MIPS let. Tent výkon by mohli zajistit všichni účastníci sítě INTERNET. Dostáváme pak výpočetní kapacitu 20 miliónů MIPS - tj. faktorizace by proběhla během devíti dní. Důsledky nových faktorizačních algoritmů pro bezpečnost RSA-šifrovacího systému Nejspolehlivější cesta, jak narušit veřejnou síť využívající RSA-kryptosystém, 7.8 Jak se napadá RSA-algoritmus? 121 je nalezení dešifrovacího exponentu, označme si ho třeba t. Jednou z takovýchto možností je poznání čísel p — 1 a q — 1, tj. faktorizace šifrového modulu N = pq. Slabým místem Pollardovy p — 1 a p+1 metody je nalezení vhodného čísla b. Aby jsme úlohu faktorizace čísla N pro nekompetentní osobu zkomplikovali, musíme zvolit prvočísla p a q tak, aby p — 1 (q — 1) mělo velký prvočíselného dělitel r a p + 1 (q + 1) velký prvočíselný dělitel d. Zároveň je vhodné požadovat, aby číslo r — 1 mělo rovněž velký prvočíselný dělitel e. Proto prvočísla splňující kongruenční rovnice p = lmod r p = d- lmod d (7.42) r = lmod e. (kde r, d a e jsou velká náhodná prvočísla) se nazývají silná prvočísla. Aby jsme se zabezpečili i proti metodám založeným na Fermatově faktorizaci, musíme zvolit silná náhodná prvočísla p a q tak, aby rozdíl \p — q\ byl několik řádů. Pokud budeme mít efektivní metodu na nalezení silných náhodných prvočísel, pak splnění poslední podmínky nám nezpůsobí žádné komplikace. Takováto metoda byla poprvé navržená Gordonem v roce 1985. Další možné útoky na RSA-šifrovací systém Ukážeme, že dva účastníci RSA-šifrovacího systému nemohou mít stejný šifrovací modul N. Uvažujme účastníky A a B, Na = NB = N. Pak musí platit (sA, 0. Pak v ■ sa = 1 — u ■ n = 1 mod ■ M je homomorfismus pologrup zachovávající nulový prvek. Ukažme si možnost narušení systému iterovaným šifrováním. Z konečnosti množiny M víme, že existuje číslo h tak, že T(s,-)h+1 = T(s,-) (7.66) a tedy pro každé zprávu x platí T(s,x)h = x. Navíc lze pro konkrétní zprávu najít takové minimální h - tj. délku cyklu, který obsahuje zprávu x. Tento postup je však prakticky realizovatelný jen v případě, když h bude relativně malé číslo, např. menší než milión. Je přitom dokázáno, že při vhodném výběru prvočísel p a q je pravděpodobnost nalezení takovéhoto malého h menší než 10~90. Vzhledem k tomu, že počet elementárních částic v nám známém vesmíru je řádově 1080, lze každou pravděpodobnost menší než 10~80 považovat za nulovou. Popišme si nyní pologrupu M. Taje sjednocením čtyř disjunktních grup a obsahuje přesně čtyři idempotenty - 0,1, e\, e2. Poslední dva idempotenty dostaneme jako řešení rovnic ai ■ p = 1 modg, resp. a2 • q = 1 modp, (7.67) kde di ■ p = e\ a a2 • q = e2 leží v M. Příslušné grupy jsou tedy G(0) = {0}, G(l) = {x:(x,p-q) = l}, G(ei) = {x : x = p ■ a modg,a = 1, 2,... ,q — 1}, G(e2) = {x : x = q ■ b modp, b = 1, 2,... ,p — 1}. To znamená, že počet prvků v jednotlivých grupách je 1, (p — l)(q — 1), q — 1 a p — 1. 7.8 Jak se napadá RSA-algoritmus? 125 Nejprve určeme počet těch zpráv x E M, které zůstanou při permutaci T(s,—) = Ts na místě. Ptáme se tedy na počet řešení rovnice T(s, x) = xs = x mod N. (7.68) Lze dokázat, že všechna takováto řešení tvoří podpologrupu Z\ pologrupy M, která obsahuje přesně \Z,\ = [1 + (s - l,p- 1)][1 + (s-l,q- 1)] (7.69) prvků. V případě, že zvolíme parametry s,p, q tak, že s = 2r + l, p = 2p1 + l, q = 2q1 + l, (7.70) kde pi,qi ar jsou navzájem různá prvočísla, je \Z\ \ = 9 a to je zřejmě nejmenší možný počet zpráv, které se nezašifrují. Podívejme se nyní, jak to vypadá při iterovaném šifrování. Chceme vědět, kolik různých zašifrovaných zpráv můžeme tímto způsobem přečíst, zopakujeme-li šifrování h + 1-krát. Rovnost 7.66 přepíšeme na tvar xsh+1 = xs modN, resp. xsh = x mod N. (7-71) Všechna takováto řešení opět tvoří podpologrupu Zk pologrupy M, která obsahuje přesně \Zh\ = [1 + (sh - l,p - 1)][1 + (sh-l,q- 1)] (7.72) prvků. Lemma 7.8.2 a) Zxr\Zh = Zd, kde d = (l,h), b) Delí-li číslo l číslo h, je Z% C Zk. Důkaz, a) Nechť x E G(f), kde / ^ 0 je jeden z idempotentů pologrupy M. Rovnice x3'-1 = f mod N a x3^1 = f mod N, (7.73) které získáme vydělením vztahu 7.71 v příslušné grupě G(f), mají společné řešení právě tehdy, když (sl - 1, sh - 1) = sd - 1, kde d = (l, h). Tvrzení b) je speciálním případem pro l = (l,h). Lemma 7.8.3 Označme Z% = {x : x = xsh,xs' ^ x pro všechna l < h}, Dh = {d: d/h,d^ h}. Pak a) Z*h = Zh-\J{Zd:d/h,d^h}, b) \Zl\ = \Zh\-^{\Zd\ :dEDh}- E{\Zdl r\Zd2\: dud2 E Dh, d, ± d2} + ... + + (-l)\D»\\n{Zd:dEDh,}\], 126 Asymetrické šifrovací systémy neboli systémy s veřejným klíčem c) Pokud je h = pa, p prvočíslo, je = Zh — Zh. Důkaz, a) Nechť x E Z%, pak x ^ Zx pro libovolné l < h, (l,h) ^ 1. Tedy Z*hQZh- \J{Zi :l 2, 1090. Ukážeme, že pro většinu zpráv £ je jejich exponent násobkem čísla p\q\. Připomeňme si následující známou větu z obecné algebry. Věta 7.8.4 (L. Sylow) Nechť G je abelovská grupa, \G\ = n. Nechť dále pa je největší mocnina prvočísla p, která dělí n. Pak grupa G obsahuje jedinou pod-grupu, která má přesně pa prvků. Tato podgrupa se nazývá Sylowovská. Důsledek 7.8.5 Nechť \G\ = Pi1 -p22 -.. .•p%k je kanonický rozklad čísla n = \G\. Pak G je izomorfní s kartézským součinem všech svých Sylowovských podgrup GPi. 128 Asymetrické šifrovací systémy neboli systémy s veřejným klíčem Aplikujeme-li předchozí důsledek na naši situaci, dostáváme, že pro podgrupu G(l) platí |G(1)| = í?1 • í"2 • ... • ■ pi • qx. Je tedy grupa G(l) izomorfní s kartézským součinem grup G' x GP1 x GP2, kde G' = Gt<*i x G f i x ... x G^*. Počet prvků x E G(l), jejichž exponent nebude soudělný se součinem piqi je |G'|-(pi+?i)-|G'|. Proto pravděpodobnost, že náhodně zvolené x E G(l) nebude mít exponent h, který je násobek pt ■ q1} bude rovna |G'| • (pi + ?i) - |G'| Pl + 9l - i n_90 |G'|-pi-9i pi-?i < 10"90. (7.79) Naprostá většina prvků pologrupy M má tedy exponent, který je násobkem prvočísel pi a qi, tj. h = a ■ p\ ■ q\. Aplikujeme-li tedy tento postup na grupu r různých transformací Ts pro pevně zvolený modul N, víme, že se jedná o komutativní grupu, která má přesně ip(X(N)) prvků a její exponent je ho = X(X(N)). Zvolíme-li parametry p a q v souladu s 7.78, dostaneme = Maa' = M modp. Vážnou nevýhodou tohoto systému je 3-násobná časová náročnost. Šifrovací systém s veřejným klíčem založený na diskrétním logaritmování Všichni uživatelé systému znají velké prvočíslo p spolu s primitivním kořenem a modulo p. Platí tedy, že (a,p) = 1, ď-1 = 1 modp a pro všechna d, 1 < d < (p(p) — 1 je ad ^ 1 modp. Soukromý klíč uživatele B je náhodně vybrané přirozené číslo xB, 1 < xB < p-1. Veřejný klíč uživatele B je číslo y b = cŕB modp. Předpokládejme, že A chce odeslat B zprávu M, l2r+l, pro daná čísla t a a. Je-li tedy n = 1024 = 210 a t = 50, tj, k = 524, nepřítel se musí zabývat luštěním kryptogramu, kde se v každé části délky 1024 vyskytuje až 50 náhodných chyb. 7.12 Digitální peníze Dnešní Internet je obchodem, který je otevřen 24 hodin denně a sedm dní v týdnu a očekává se, že letos jej navštíví přes 100 milionů lidí. Řada světových firem dělá vše pro to, aby dosud převážně pasivní návštěvníci začali na Internetu také nakupovat a zejména platit. Digitální peníze jsou technologií, která, jednoduše řečeno, umožňuje zaplatit číslem - na Internetu i v obchodě (např. platební kartou v supermarketu). Digitální peníze navíc nejsou ničím jiným než binárními řetězci, tj. čísly, a placení čísly se zdá být dost podivné a ne příliš bezpečné. Jak třeba poznáme, že 458967154 znamená 100 Kč nebo 90 Kč, nebo že je to vymyšlené číslo? Na digitální peníze jsou však kladeny ještě další nároky. Požadavky na digitální peníze Většina lidí u plateb na Internetu vyžaduje na prvním místě bezpečnost. Vždyť jde o peníze zákazníků, prodejců, poskytovatelů finančních služeb a komerčních bank. Protože emise digitálních peněz snižuje potřebu běžné hotovosti na trhu, do hry může vstoupit i centrální banka. Nejdiskutovanější problém digitálních peněz je problém dvojí útraty. Přestože čísla, na rozdíl od klasických bankovek, umí okopírovat i dítě, digitální peníze by vícenásobnou platbu neměly umožnit. Digitální peníze by také měly poskytnout podobnou míru anonymity a soukromí zákazníkům i obchodníkům jako klasické peníze. Banka by například z odevzdávané tržby neměla být schopna zjistit, kdo a za co tyto peníze v příslušném obchodě utratil. Vlastník nebo příjemce digitálních peněz by měl mít možnost zkontrolovat jejich platnost. Měly by dále umožnit platby off-line, tj. bez on-line účasti banky nebo nějakého autorizačního centra, a neměly by záviset na fyzické formě nosiče a na komunikačním prostředku, jímž jsou přenášeny. Digitální bankovky a mince vyšších hodnot by také měly být dělitelné a směnitelné za menší a naopak (až na úroveň nejnižší možné částky, např. haléře). Zdánlivě nás nemusí zajímat, kolik stojí tisk, počítání, distribuce a ochrana klasických peněz, protože je to starost bank nebo provozovatelů různých služeb. Ve skutečnosti to ale zaplatíme my, bud na daních (u výdajů státní banky), nebo na poplatcích 7.12 Digitální peníze 135 (u komerčních bank). Cena digitálních peněz je proto velkým stimulem jejich zavedení v řadě systémů a strategickou konkurenční výhodou. Čím bude menší, tím větší bude profit všech zainteresovaných. Digitální peníze by měly být přenositelné z osoby na osobu, bez nutnosti je ihned po platbě odevzdávat bance. Z jednoduchosti tvorby a kopírování digitálních řetězců v libovolném množství (na rozdíl od tisku nebo kopírování klasických peněz) vyplývá požadavek nepaděla-telnosti digitálních peněz. Digitální peníze (čísla reprezentující hodnotu) by tedy měl umět vytvářet jen k tomu oprávněný subjekt. Základní myšlenka digitálních peněz Existující projekty digitálních peněz nesplňují všechny zmíněné požadavky, ale už se jejich prostřednictvím platí a mají před sebou, spolu s dalšími elektronickými platebními protokoly, velkou budoucnost. Za digitálními penězi stojí vysoká matematika a minimálně čtyři revoluční objevy posledních dvaceti let. Jsou to objevy asymetrické kryptografie, konkrétního systému RSA, digitálních podpisů (digital signatuře) a slepých digitálních podpisů (blind digital signatuře). Víme, že u RSA máme veřejné číslo N (modul šifrování), veřejný exponent E (pro zašifrování) a tajný exponent D (pro dešifrování). Veřejný exponent E a modul šifrování N se může zveřejnit, zatímco tajný exponent D zná např. jen banka emitující digitální bankovku. Banka si nejprve zvolí číslo bankovky C a poté vypočte její digitální podpis p(C) = (CD) mod N, který připojí za číslo bankovky. Kdokoliv pak může snadno zkontrolovat, že binární řetězec (C,p(C)) je "číslo" vydané bankou. Každý může umocnit podpis p(C) na veřejný exponent E, a je-li vše v pořádku, musí (podle Eulerovy věty) vyjít podepisované číslo: (p(C)E) mod N = C DE mod N = C. Platnost bankovky "C,p(C)" tedy může být kýmkoliv zkontrolována. Připomeňme, že čísla E a D mají takovou vlastnost, že pro libovolné X platí XDE mod N = X mod N. Bance vydávající digitální peníze zbývá už jen zveřejnit různé exponenty E (i) pro různé nominální hodnoty (i) emitovaných "bankovek". Například i?(1000) pro tisícikorunové bankovky, E(0.01) pro haléřové bankovky apod. U systému DigiCash jsou například nominální hodnoty voleny ve dvojkové soustavě, tj. 0.01, 0.02, 0.04, 0.08, ... 10.24 atd. Klient mající zájem o digitální peníze si pak dá ze svého konta strhnout například 1000 Kč a za ně obdrží příslušný počet digitálních bankovek žádaných nominálních hodnot. Jimi (ve skutečnosti čísly), je-li na to obchodník na Internetu připraven, může pak elegantně zaplatit. Podobně je tomu i v obchodě, kde místo domácího pécéčka za nás platbu obstará platební čipová karta. Problém sledovatelnosti Už i u nás můžeme být sledováni podle plateb, které provádíme různými platebními prostředky, i podle dalších dat, která jsou o nás veřejně dostupná. 136 Asymetrické šifrovací systémy neboli systémy s veřejným klíčem Všechny naše platby současnými platebními kartami (větší nákupy, čerpání pohonných hmot), rodná čísla, bydliště a spoustu jiných údajů je možné dát pěkně dohromady, aby se z nich složil náš profil. Profil budoucího potenciálního zákazníka firmy XY. Prodej databází potenciálních klientů je na Západě běžnou věcí a podobné případy známe i u nás. Na Západě však sběr takových informací, ve velké šíři a dokonalosti, existuje jako obchod mnohem déle. Je to zásah nejen do soukromí a nemusí jít jen o zákazníky. Může jít i o hledání potenciálních cílů pro kriminální účely (databáze psychicky labilních jedinců, drogově závislých, majetných, vlastníků konkrétních typů aut a jejich technického stavu). U digitálních peněz je proto otázka anonymity často kladena na přední místo. Výše uvedené řešení je ale problematické v tom, že když se bankovky ihned vracejí bance zpět, banka ví, kde klient nakupoval. Problém dvojí útraty Uvedená informace se začíná zeslabovat, pokud digitální bankovka obíhá mezi lidmi delší dobu. V tom případě zase ale zesiluje nebezpečí jejího padělání. Některý z klientů si může pořídit N jejích kopií (pokud je uložena na pevném disku jeho PC, ani to nedá tolik práce) a kopiemi zaplatí N různým obchodníkům. Tyto falešné bankovky určitou dobu obíhají na trhu, než se dostanou do vydávající banky k zúčtování. Ten, kdo bankovku (či falešnou kopii) vrátí první, bude mít štěstí. Banka mu ji připíše na konto a zařadí ji na seznam už utracených bankovek. Další obchodníci, kteří vrátí ostatní falešné nebo i pravou bankovku bance, už nedostanou nic. I když je toto riziko reálné, zdá se, že existují systémy, které ho připouštějí, a že budou uvedeny ve značně širokém měřítku do praxe. Jak tento problém řešit? Jsou minimálně dvě možná řešení - složitější platební protokol nebo uložení digitálních peněz v hardwaru odolném proti narušení. Je však nutné vzít v úvahu, že útočníci mohou k vylákání čísel digitálních bankovek použít falešný terminál, např. ukradený a upravený, samostatně zkonstruovaný nebo řádný terminál s předsunutím falešné hardwarové části ap. Slepé podpisy Druhý z hlavních problémů digitálních peněz - riziko sledovatelnosti - umožňuje snížit na minimum vynález slepých podpisů (David Chaum, 1985). Podstata spočívá v tom, že číslo (veřejné) digitální bankovky si volí klient a že z tohoto čísla a jeho digitálního podpisu zkonstruuje nové číslo (anonymní digitální bankovky) a jeho platný digitální podpis. Banka netuší, jaké číslo anonymní bankovky podepsala, ale klientovi odepíše z účtu správnou sumu (např. 100 Kč) zajím přetvořenou bankovku. Banka přes kopírovací papír podepíše (orazítkuje) něco, co nevidí. Matematicky funguje tento postup tak, že klient si zvolí číslo cílové anonymní bankovky jako C a náhodný „zaslepující" koeficient R. Protože zná veřejný klíč 7.13 Náročnější protokoly 137 banky E, dají podepsat hodnotu (C*(RE)) mod N. Banka vytvoří digitální podpis této „zaslepené" bankovky běžným způsobem, tj. p = ((C* (RE))D) mod N, což se rovná CD * R mod N. Klient ale umí tuto hodnotu vydělit jemu známým koeficientem R a „za zády banky" obdrží hodnotu CD mod N. To je ale digitální podpis čísla C. Banka číslo C nezná, ale je schopna ověřit, že je to číslo její stokorunové bankovky. Pravost ověří běžným způsobem - umocněním podpisu CD mod N na veřejný bankovní exponent E, čímž skutečně obdrží číslo C. Nyní už tedy klient může utratit bankovku C s digitálním podpisem CD modiV. Pokud si v klidu projdete mechanismus, jak se klient dostal „pod kůži" bance, uvidíte, že tomu tak je proto, že systém RSA je multiplikativní - jinak řečeno: „podpis součinu" se rovná „součinu podpisů". Zopakujme si ještě jednou přesný postup 1. Klient (PC, čipová karta) generuje anonymní (A) a veřejné (V) číslo téže bankovky, anonymní překryje kopírovacím papírem a veřejnou bankovkou, obojí předá bance k podpisu. 2. Banka digitálně podepíše horní a přes kopírovací papír i dolní bankovku a odešle je zpět klientovi (zároveň mu z konta odešle 100 Kč). 3. Klient si ponechá podepsanou anonymní bankovku a veřejnou vrátí bance. Rizika Určitě vás napadla i další možná rizika digitálních peněz. Například u RSA by se pomocí právě uvedeného multiplikativního pravidla dala vytvořit nová bankovka ze dvou pravých! Budeme-li mít bankovky Cl a C2 s příslušnými digitálními podpisy pl, p2, můžeme skutečně vytvořit platnou, ale falešnou bankovku (C3,p3) tak, že C3 = Cl * C2 a p3 = pl * p2. Platební protokoly musí však pamatovat nejen na tato triviální pravidla, ale i na řadu dalších. Vzhledem k tomu, že oblast digitálních peněz je mladá, objevuje se mnoho nových nástrojů, myšlenek, platebních protokolů, ale i řada nepodložených tvrzení o jejich vlastnostech a bezpečnosti. To je ale v překotném vývoji běžné a soutěžení může přinést jedině prospěch. 7.13 Náročnější protokoly 7.13.1 Bezpečné volby Volení pomocí počítačů se nebude používat pro obecné volby, dokud nebude existovat protokol, krerý by jak zabezpečoval soukromí jednotlivých voličů, tak zabraňoval podvodům. Ideální protokol by měl splňovat přinejmenším těchto šest požadavků: 138 Asymetrické šifrovací systémy neboli systémy s veřejným klíčem 1. Mohou volit pouze autorizovaní voliči. 2. Nikdo nemůže volit více než jednou. 3. Nikdo nemůže být schopen určit, koho volil někdo jiný. 4. Nikdo nemůže duplikovat hlas někoho jiného. (Ukazuje se, že toto je nejsil-nější požadavek.) 5. Nikdo nemůže změnit hlas někoho jiného, aniž by nebyl odhalen. 6. Každý volič si může být jist tím, že jeho hlas byl započten do konečného hodnocení. Navíc mohou mít některá volební schémata ještě následující požadavek: 7. Každý ví, kdo volil a kdo ne. Před tím, než popíšeme komplikované volební protokoly, podívejme se na některé jednodušší. Jednoduchý volební protokol č. 1 1. Každý volič zašifruje svůj hlas veřejným klíčem CTF (Central Tabulation Facility - ústřední vyhodnocovací komise). 2. Každý volič zašle svůj hlas k rukám CTF. 3. CTF dešifruje hlasy, vyhodnotí je a výsledky zveřejní. Tento protokol s sebou nese několik problémů. CTF neví, odkud pocházejí jednotlivé hlasy, takže ani neví, zda pocházejí od právoplatných voličů. Neví, zda tito voliči nevolili více než jednou. Kladnou stránkou protokolu je to, že nikdo nemůže změnit hlas někoho jiného; ale nikdo by se ani neobtěžoval pokoušet se změnit hlas někoho jiného, když je daleko jednodušší volit opakovaně ve prospěch svého výběru. Jednoduchý volební protokol č. 2 1. Každý volič podepíše svůj hlas svým soukromým klíčem. 2. Každý volič zašifruje svůj podepsaný hlas veřejným klíčem CTF. 3. Každý volič pošle svůj hlas CTF. 4. CTF dešifruje hlasy, prověří podpisy, vyhodnotí hlasy a zveřejní výsledky. 7.13 Náročnější protokoly 139 Tento protokol splňuje vlastnosti jedna a dvě: pouze autorizovaní voliči mohou volit a nikdo nemůže volit více než jednou - CTF by zaznamenala hlasy přijaté v kroku 3. Každý hlas je podepsán soukromým klíčem voliče, takže CTF ví, kdo volil, kdo nikoliv a kolikrát volil každý volič. Jestliže přijde hlas, který není podepsaný právoplatným voličem nebo se jedná o hlas voliče, který již volil, CTF jej ignoruje. Díky digitálnímu podpisu nemůže nikdo změnit hlas někoho jiného, dokonce i kdybychom vypustili bod 2. Problémem tohoto protokolu je to, že podpis je součástí hlasu; CTF ví kdo koho volil. Zašifrováním hlasů pomocí veřejného klíče CTF zabráníme komukoliv, aby odposlouchával a zjišťoval tak, kdo koho volil, ovšem musíte zcela důvěřovat CTF. Je to podobné tomu, když nad vámi stojí člen volební komise ve volební místnosti. Tyto dva příklady ukazují, jak těžké je dosáhnout prvních tří požadavků bezpečného volebního protokolu, nehledě na ostatní. Volení se slepými podpisy Potřebujeme nějakým způsobem oddělit hlas od voliče při zachování autentikace. Právě toto umožňuje protokol slepého podpisu 7.12. 1. Každý volič generuje 10 sad zpráv, každá sada obsahuje platný hlas pro každou možnou variantu (např. je-li hlasem odpověď na zjišťovací otázku, každá sada obsahuje dva hlasy, jeden pro „ano" a druhý pro „ne".) Každá zpráva navíc obsahuje náhodně vygenerované identifikační číslo, kvůli zabránění možné shody s identifikačním číslem zpráv od jiných voličů, dostatečně velké. 2. Každý volič jednotlivě zaslepí všechny zprávy a pošle je spolu s jejich 9 z 10 zaslepujících faktorů k rukám CTF. 3. CTF zkontroluje v databázi, zda volič již dříve nepředložil své zaslepené hlasy pro podpis. Otevře devět sad, aby zjistila, zda jsou dobře utvořené a pak jednotlivě podepíše každou zprávu v sadě. Pošle je zpět voliči, jehož jméno si uloží do databáze. 4. Volič odslepí zprávy a zůstane mu sada hlasů podepsaných CTF. (Tyto hlasy jsou podepsané, ale nezašifrované, takže volič snadno vidí, který hlas je „ano" a který je „ne".) 5. Volič si zvolí jeden z hlasů (to je demokracie) a zašifruje jej veřejným klíčem CTF. 6. Volič zašle hlas CTF. 140 Asymetrické šifrovací systémy neboli systémy s veřejným klíčem 7. CTF dešifruje hlasy, ověří podpisy, zkontroluje databázi vůči duplicitnímu identifikačnímu číslu, uloží si sériové číslo a vyhodnotí hlasy. Výsledek voleb rozešle mezi všechna sériová čísla a jim příslušející hlasy. Zlomyslný volič, nazvěme ho Mallory, nemůže takový systém podvést. Tento protokol zajišťuje, že hlasy jsou jednoznačné. Pokud se pokusí poslat svůj hlas dvakrát, CTF zaznamená duplicitní sériové číslo v kroku 7 a vyřadí druhý hlas. Pokusí-li se získat více hlasů podepsaných v kroku 2, CTF to objeví v kroku 3. Mallory nemůže generovat své vlastní hlasy, protože nezná soukromý klíč CTF. Z téhož důvodu nemůže ani odposlouchávat a měnit hlasy někoho jiného. „Odstřihni a vyber" protokol v kroku 3 zajišťuje, že hlasy jsou jednoznačné. Bez tohoto kroku by si Mallory mohl vytvořit sadu hlasů, které jsou až na identifikační číslo stejné a nechat je všechny prohlásit za platné. Zlomyslná CTF není schopna určit, kdo jak volil. Díky protokolu slepého podpisu je CTF zabráněno v nahlížení do sériových čísel hlasů před tím, než jsou odevzdány, CTF nemůže přiřadit zaslepenému hlasu, který podepsala, hlas, který eventuelně bude odevzdán. Rozesláním seznamu sériových čísel a jim příslušejících hlasů umožní voličům ujistit se, že jejich hlas byl korektně započítán. Stále však jsou zde problémy. Jestliže krok 6 není anonymní a CTF může zaznamenávat, kdo zaslal který hlas, pak snadno zjistí, kdo jak volil. Zatímco, pokud obdrží hlasy v zamčené hlasovací urně a vyhodnotí je později, toto zjistit nemůže. Navíc, zatímco CTF není schopno přiřadit hlasy k voličům, může generovat velkou spoustu podepsaných platných hlasů a podvádět pak jejich přijetím. A jestliže Alice zjistí, že CTF změnila její hlas, nemá žádnou možnost, jak to dokázat. Protokol, který se snaží napravit tyto problémy, je následující. Hlasování se dvěmi ústředními komisemi Jedním řešením je rozdělení CTF na dvě volební vedení. Žádná strana by neměla sílu, aby podváděla sama sebe. Následující protokol používá s komisí Central Legitimization Agency (CLA) k potvrzení voličů a CTF ke sčítání hlasů. 1. Každý volič zašle zprávu CLA s žádostí o registrační číslo. 2. CLA zašle voliči zpět náhodné registrační číslo. CLA udržuje seznam těchto registračních čísel. CLA také uchovává seznam příjemců těchto registračních čísel pro případ, že by někdo chtěl volit dvakrát. 3. CLA pošle seznam registračních čísel CTF. 4. Každý volič si zvolí náhodně identifikační číslo. Vytvoří zprávu, která obsahuje toto číslo, registrační číslo obdržené od CLA a svůj hlas. Tuto zprávu pošle CTF. 7.13 Náročnější protokoly 141 5. CTF zkontoluje registrační číslo oproti seznamu, který obdržela od CLA v kroku 3. Pokud zde je registrační číslo, CTF je zaškrtne (aby zabránila někomu volit dvakrát). CTF přidá identifikační číslo do seznamu lidí, kteří již volili určitého kandidáta a připočte mu jeden hlas. 6. Poté, co jsou přijaty všechny hlasy, CTF rozešle výsledek spolu se seznamem identifikačních čísel a kandidátů, které jim příslušející voliči volili. Podobně jako v předchozím protokolu, každý volič se může najít v seznamu identifikačních čísel. To mu dává důkaz, že jeho hlas byl započítán. Samozřejmě, že všechny zprávy zasílané mezi jednotlivými stranami v protokolu musí být zašifrované a podepsané, aby se zabránilo někomu vydávat se za někoho jiného nebo odposlouchávat přenos. CTF nemůže změnit hlasy, protože každý volič se může podívat po svém identifikačním čísle. Pokud jej nenajde, nebo najde u něj jiný hlas, než který volil, okamžitě ví, že došlo ke změně jeho hlasu. CTF nemůže naplnit volební urnu, protože ta je kontrolována CLA. CLA ví, kolik voličů ověřila a jejich registrační čísla a tyto modifikace detekuje. Mallory, který není právoplatným voličem, se může pokusit o podvod tím, že bude hádat registrační čísla. Toto nebezpečí se dá minimalizovat tak, že počet možných registračních čísel bude mnohem větší než počet aktuálních registračních čísel, například stociferná čísla pro milión voličů. Samozřejmě, že registrační čísla musí být generována náhodně. Naproti tomu, CLA je v jistém ohledu stále ještě důvěryhodnou autoritou. Může tedy ověřit i neprávoplatné voliče nebo právoplatné ověřit vícekrát. Toto riziko se minimalizuje povinností CLA zveřejňovat seznam ověřených voličů (ale ne jejich registračních čísel). Jestliže počet voličů na tomto seznamu je menší než počet započítaných hlasů, je to špatně. Avšak, je-li více ověřených voličů než započítaných hlasů, může to znamenat, že někteří oprávnění voliči nevolili. Tento protokol je zranitelný z hlediska kooperace mezi CLA a CTF. V tomto případě mohou porovnat databáze a zjistit, kdo koho volil. Volení s jednoduchou ústřední komisí Mnohem složitější protokol může být použit, chceme-li překonat kooperaci mezi CLA a CTF. Tento protokol je identický s předchozím se dvěma modifikacemi: • CLA a CTF jsou jedinou organizací a • pro anonymní distribuci registračních čísel v kroku 2 se používá ANDOS (all-or-nothing disclosure of secrets). Protože protokol pro anonymní distribuci klíčů zabraňuje CTF, aby věděla který volič má jaké registrační číslo, nemůže CTF porovnávat registrační čísla s přijatými hlasy. CTF ale musí být důvěryhodnou v tom smyslu, že neposkytne 142 Asymetrické šifrovací systémy neboli systémy s veřejným klíčem registrační čísla neprávoplatným voličům. Tento problém se dá vyřešit slepými podpisy. Vylepšené hlasování s jednoduchou ústřední komisí Tento protokol také používá ANDOS. Splňuje všechny požadavky dobrého hlasovacího protokolu. Nesplňuje sice sedmý požadavek, ale má navíc ještě další dvě vlastnosti: 1. Volič může změnit názor (tj. vzít zpět svůj hlas a volit znovu) v rámci daného časového intervalu. 2. Když volič zjistí, že jeho hlas nebyl započítán, může to identifikovat a napravit, aniž by ohrozil tajnost svého hlasu. Protokol pak vypadá následovně: 1. CTF zveřejní seznam legitimních voličů. 2. V rámci specifikovaného času oznámí volič CTF, zda bude hlasovat. 3. CTF zveřejní seznam voličů, kteří se budou účastnit voleb. 4. Každý volič obdrží identifikační číslo, /, pomocí ANDOS protokolu. 5. Každý volič si vygeneruje dvojici veřejný klíč, soukromý klíč: k,d. Jestliže v je jeho hlas, vygeneruje následující zprávu a pošle ji CTF: I,Ek{I,v) Tato zpráva musí být zaslána anonymně. 6. CTF potvrdí přijetí hlasu zasláním: Ek{I,v) 7. Každý volič pošle CTF: I,d 8. CTF dešifruje hlasy. Na konci voleb zveřejní výsledky voleb a pro každý různý hlas i seznam všech hodnot Ek(I,v), které daný hlas obsahoval. 9. Zjistí-li volič, že jeho hlas byl započítán nesprávně, protestuje zasláním CTF: I,Ek(I,v),d 7.13 Náročnější protokoly 143 10. Pokud si volič přeje změnit svůj hlas z v na v', zašle CTF: I,Ek(I,v'),d Jiný protokol používá slepé podpisy místo ANDOS protokolu, ale je v podstatě shodný. Kroky 1-3 jsou přípravou pro volení. Jejich úkolem je zjistit a zveřejnit počet aktuálních voličů. Přestože někteří se nebudou voleb účastnit, redukuje se tak možnost přidání podvodných voličů CTF. V kroku 4 mohou dva voliči obdržet totéž identifikační číslo. Tato možnost se minimalizuje opět větším počtem možných identifikačních čísel než kolik je aktuálních voličů. Pokud dva voliči pošlou hlas se stejným identifikačním číslem, CTF vygeneruje nové identifikační číslo /', vybere jednoho voliče a zveřejní: I',Ek(I,v) Vlastník tohoto hlasu to zjistí a pošle druhý hlas opakováním kroku 5 s novým identifikačním číslem. Krok 6 umožňuje voličům zkontorlovat, zda CTF přijalo jejich hlas v pořádku. Není-li hlas započítán, zjistí to voliči v kroku 9. Za předpokladu, že voličův hlas je správný v kroku 6, zpráva, kterou pošle v kroku 9 dokáže, že jeho hlas nebyl započítán. Jedním z problémů tohoto protokolu je, že zkorumpovaná CTF by mohla zabrat hlasy lidí, kteří sice odpověděli v kroku 2, ale ve skutečnosti nevolili. Další problém je složitost protokolu ANDOS. Autoři doporučují rozdělit velkou populaci voličů do menších populací, například na volební okrsky. Jiným, vážnějším problémem je to, že CTF může zanedbávat započítání hlasu. Tento problém se nepodaří vyřešit: Alice tvrdí, že CTF úmyslně nezapočítává její hlas, ale CTF tvrdí, že Alice nikdy nevolila. Volení bez ústřední volební komise CTF Následující protokol pracuje zcela bez CTF, voliči vidí jeden druhého. Jeho autorem je Michael Merritt. Protokol nemůže být implementován prakticky pro více než hrstku lidí, nicméně je užitečné se z něj poučit. Alice, Bob, Carol a Dave volí ano nebo ne (0 nebo 1). Předpokládá se, že každý volič má veřejný a soukromý klíč. Dále předpokládáme, že každý zná veřejný klíč ostatních. 1. Každý volič si zvolí odpověď a udělá následující: (a) Ke svému hlasu přidá náhodný řetězec. (b) Zašifruje výsledek předchozího kroku veřejným klíčem Davea. (c) Zašifruje výsledek předchozího kroku veřejným klíčem Carol. 144 Asymetrické šifrovací systémy neboli systémy s veřejným klíčem (d) Zašifruje výsledek předchozího kroku veřejným klíčem Boba. (e) Zašifruje výsledek předchozího kroku veřejným klíčem Alice. (f) K výsledku předchozího kroku přidá nový náhodný řetězec a zašifruje jej veřejným klíčem Davea. Zaznamená si hodnotu náhodného řetězce. (g) K výsledku předchozího kroku přidá nový náhodný řetězec a zašifruje jej veřejným klíčem Carol. Zaznamená si hodnotu náhodného řetězce. (h) K výsledku předchozího kroku přidá nový náhodný řetězec a zašifruje jej veřejným klíčem Boba. Zaznamená si hodnotu náhodného řetězce. (i) K výsledku předchozího kroku přidá nový náhodný řetězec a zašifruje jej veřejným klíčem Alice. Zaznamená si hodnotu náhodného řetězce. Je-li E šifrovací funkce, Ri je náhodný řetězec a V hlas, jeho zpráva vypadá takto: EA(R5, Eb(Rí, Ec(Rs, Ed(R2, Ea(Eb(Ec(Ed(V, i?i)))))))) Každý volič si zaznamenává mezivýsledky v každém bodě výpočtu. Tyto výsledky použije později v protokolu na potvrzení, že jeho hlas byl započítán. 2. Každý volič zašle svou zprávu Alici. 3. Alice dešifruje všechny hlasy svým soukromým klíčem a pak odstraní všechny náhodné řetězce na této úrovni. 4. Alice zamíchá pořadím hlasů a výsledek pošle Bobovi. Každý hlas nyní vypadá takto: EB(R^Ec(R3,ED(R2,EA(EB(Ec(EDiy,Rí))))))) 5. Bob dešifruje všechny hlasy svým soukromým klíčem, podívá se, jestli jeho hlas je mezi nimi, odstraní všechny náhodné řetězce na této úrovni a výsledek pošle Carol. Každý hlas nyní vypadá takto: EcÍR^EdÍR^EaÍEbÍEcÍEd^R^))))) 6. Carol dešifruje všechny hlasy svým soukromým klíčem, podívá se, jestli jeho hlas je mezi nimi, odstraní všechny náhodné řetězce na této úrovni a výsledek pošle Daveovi. Každý hlas nyní vypadá takto: ED(R2,EA(EB(Ec(ED(y,Rí))))) 7.13 Náročnější protokoly 145 7. Dave dešifruje všechny hlasy svým soukromým klíčem, podívá se, jestli jeho hlas je mezi nimi, odstraní všechny náhodné řetězce na této úrovni a výsledek pošle Alici. Každý hlas nyní vypadá takto: EaÍEbÍEcÍEdÍV,^)))) 8. Alice dešifruje všechny hlasy svým soukromým klíčem, podívá se, jestli její hlas je mezi nimi, podepíše všechny hlasy a výsledek pošle Bobovi, Carol a Daveovi. Každý hlas nyní vypadá takto: SaÍEbÍEcÍEoÍV,^)))) 9. Bob zkontroluje a vymaže podpis Alice. Dešifruje všechny hlasy svým soukromým klíčem, podívá se, jestli jeho hlas je mezi nimi, podepíše všechny hlasy a výsledek pošle Alici, Carol a Daveovi. Každý hlas nyní vypadá takto: SB{Ec(EDiy,Rí))) 10. Carol zkontroluje a vymaže podpis Boba. Dešifruje všechny hlasy svým soukromým klíčem, podívá se, jestli jeho hlas je mezi nimi, podepíše všechny hlasy a výsledek pošle Alici, Bobovi a Daveovi. Každý hlas nyní vypadá takto: Sc(EDiy,Rí)) 11. Dave zkontroluje a vymaže podpis Carol. Dešifruje všechny hlasy svým soukromým klíčem, podívá se, jestli jeho hlas je mezi nimi, podepíše všechny hlasy a výsledek pošle Alici, Bobovi a Carol. Každý hlas nyní vypadá takto: SDiy,Rí) 12. Všichni zkontrolují a vymaží podpis Davea. Ujistí se, zda jejich hlas je mezi nimi (podívají se po svém náhodném řetězci mezi hlasy). 13. Každý odstraní náhodné řetězce a započítá hlasy. Nejenže tento protokol funguje, ale také zaručuje, že nikdo z účastníků nemůže podvádět. Alice, Bob, Dave a Carol ihned zjistí, že někdo podvádí. Není zapotřebí ani CTF, ani CLA. Abychom pochopili, jak protokol pracuje, pokusme se podvádět. Pokusí-li se někdo hlasovat vícekrát, Alice to pozná v kroku 3, když obdrží více hlasů než je lidí. Pokud se takto pokusí podvést Alice, zjistí to Bob v kroku 4. 146 Asymetrické šifrovací systémy neboli systémy s veřejným klíčem Mnohem horší je zaměnit někoho hlas za jiný. Protože hlasy jsou zašifrovány různými veřejnými klíči, kdokoliv si může vyrobit tolik platných hlasů, kolik potřebuje. Dešifrovací protokol má dvě kola: první kolo sestává z kroků 3-7, druhé z kroků 8-11. Výměna hlasu je detekována různě v různých kolech. Jestliže někdo nahradí hlas někoho jiného za jiný ve druhém kole, jeho podvod je objeven okamžitě. V každém kroku jsou hlasy podepsány a poslány všem voličům. Jestliže jeden (nebo více) voličů zjistí, že jeho hlas už není mezi těmito hlasy, okamžitě zastaví protokol. Protože hlasy jsou podepsány v každém kroku a protože každý volič se může ve druhém kole protokolu vrátit zpět, je snadné zjistit, kdo záměnu provedl. Záměna hlasu v prvním kole protokolu je záludnější. Alice to nemůže provést v kroku 3, protože Bob, Carol nebo Dave to odhalí v kroku 5, 6 nebo 7. Bob by to mohl provést v kroku 5. Pokud zamění Carolin nebo Daveův hlas (připomeňme, že neví, který hlas je kterého voliče), Carol nebo Dave toto poznají v kroku 6 nebo 7. Nevědí sice, kdo do jejich hlasu zasáhl (ačkoliv by to musel být někdo, kdo již z hlasy manipuloval), vědí však, že jejich hlas je zaměněn. Má-li Bob štěstí a trefí se svou záměnou do hlasu Alice, ona to nepozná až do druhého kola. Potom zjistí, že její hlas chybí v kroku 8. Pořád neví, kdo zaměnil její hlas. V prvním kole jsou hlasy míchány a krok od kroku odpodepisovány, takže je nemožné se v protokolu o krok vrátit zpět, aby se zjistilo, kdo záměnu provedl. Další formou podvodu je pokus odhalit, kdo jak volil. Díky míchání hlasů v prvním kole je nemožné, aby se někdo vrátil protokolem zpět a snažil se přiřadit hlasy voličům. Vypouštění náhodných řetězců v prvním kole je také velmi důležité pro zachování anonymity. Kdyby nebyly odstraňovány, účinek míchání hlasů by mohl být zrušen znovuzašifrováním nebezpečných hlasů veřejným klíčem „míchače". Tak, jak je protokol navržen, je důvěrnost voličů zabezpečena. Dokonce ještě silnější, díky iniciálnímu náhodnému řetězci R\ jsou identické hlasy zašifrovány odlišně v každém kroku protokolu. Nikdo nezná výsledek hlasu do kroku 11. Jaké jsou problémy tohoto protokolu? Za prvé, protokol obsahuje spoustu výpočtů. Popsaný příklad měl pouze 4 voliče a byl komplikovaný. Protokol by nikdy nepracoval v reálných volbách s desítkami tisíc voličů. Za druhé, Dave zná výsledek voleb dříve než ostatní. Přestože této znalosti nemůže využít, dává mu to jistou informaci navíc, kterou ostatní nemají. Na druhé straně to je problém všech centralizovaných volebních schémat. Třetím problémem je to, že Alice může zkopírovat kohokoliv hlas, přestože dopředu neví, čí hlas to je. Na vysvětlení, proč je to problém, předpokládejme, že volí tři lidé: Alice, Bob a Eva. Evu nezajímá výsledek voleb, ale pouze to, jak volila Alice. Takže zkopíruje Alicin hlas a výsledek voleb pak zaručeně bude shodný s hlasem Alice. 7.13 Náročnější protokoly 147 Další volební schémata Bylo navrženo mnoho ještě složitějších bezpečných volebních protokolů. V podstatě jsou dvojího druhu. Jednak se jedná o protokoly podobné protokolu hlasování bez Ústřední volební komise, ve kterém je hlas každého voliče zamíchán tak, že již není možné tento hlas k tomuto voliči přiřadit. Dále existují protokoly, ve kterých se voliči rozdělí do jednotlivých volebních okrsků tak, že voliči nemohou být podvedeni. Takové protokoly zabrání pouze tomu, aby se různé části vlády (nebo toho, kdo volby administruje) spikly proti voliči. Základní myšlenkou takových protokolů je, že každý volič rozdělí svůj hlas na několik částí. Například, je-li hlas typu „ano" - „ne" a 1 znamená „ano" a 0 „ne", volič generuje několik čísel, jejichž součet dá 1 nebo 0. Tyto části zašifruje a zašle komisím, každou jedné. Každá komise zkontroluje přijaté části (existují protokoly zjišťující jejich korektnost) a výsledný hlas je pak součtem všech částí. Existují i protokoly zajišťující podmínku, že části hlasu každého voliče se opravdu sčítají na 0 nebo 1. Jiný protokol od Davida Chauma umožňuje sledovat voliče, kteří se pokoušejí volby podvrhnout. Nicméně, volby pak musí být zahájeny znovu, tentokráte bez podvodných voličů, a proto se tento protokol nehodí pro volby většího rozsahu. Další, složitější protokol, který řeší tyto problémy, lze nalézt v literatuře citované v knize [19]. Dokonce existuje i protokol používající multiple-key ciphers. Jiný volební protokol použitelný pro volby většího rozsahu dovoluje voličům zdržet se hlasování. Volební protokoly fungují, ale zároveň napomáhají tomu, že za použití protokolu je jednodušší si hlasy koupit nebo je naopak prodávat. Tato motivace je tím spíš silnější, jakmile si kupující může být jist, že prodávající bude hlasovat tak, jak slíbil. Některé protokoly jsou navrženy tak, aby pro voliče nebylo možné dokázat jinému, že volil určitým způsobem. 7.13.2 Bezpečné víceúčastnické počítání Jedná se o protokol, ve kterém se vytvoří skupina několika lidí, kteří společně speciálním způsobem počítají nějakou funkci více proměnných. Každý člen skupiny poskytuje jednu nebo více proměnných. Výsledek funkce je znám každému ve skupině, ale nikdo se nemůže dovědět nic o vstupech ostatních členů kromě těch, které jsou evidentní z výsledku funkce. Zde je příklad. Protokol č. 1 Jak může skupina lidí spočítat průměrnou mzdu svých členů, aniž by kdokoliv znal plat kteréhokoliv jiného člena ve skupině? 148 Asymetrické šifrovací systémy neboli systémy s veřejným klíčem 1. Alice ke svému platu připočítá tajné náhodné číslo, zašifruje výsledek veřejným klíčem Boba a pošle mu ho. 2. Bob dešifruje Alicin výsledek svým soukromým klíčem. Přičte svůj plat k číslu přijatému od Alice, zašifruje výsledek veřejným klíčem Carol a pošle mu ho. 3. Carol dešifruje Bobův výsledek svým soukromým klíčem. Přičte svůj plat k číslu přijatému od Boba, zašifruje výsledek veřejným klíčem Davea a pošle mu ho. 4. Dave dešifruje Carolin výsledek svým soukromým klíčem. Přičte svůj plat k číslu přijatému od Carol, zašifruje výsledek veřejným klíčem Alice a pošle jí ho. 5. Alice dešifruje Daveův výsledek svým soukromým klíčem. Odečte své náhodné číslo z kroku 1, aby zjistila součet všech platů. 6. Alice vydělí výsledek počtem lidí (v našem případě 4) a zveřejní výsledek. Tento protokol předpokládá, že každý je poctivý. Pokud někdo zalže a zfalšuje výši svého platu, výsledný průměr nebude správný. Vážnějším problémem je, že Alice může zfalšovat výsledek. V kroku 5 odečte číslo, které se jí zlíbí a nikdo jiný nepozná, že výsledek je špatně. V tomto jednání se dá Alici zabránit tak, že se od ní bude požadovat zavázání se k danému náhodnému číslu použitím schématu bitového závazku z kapitoly 4.9, ale jakmile Alice prozradí své tajné číslo na konci protokolu, může si Bob spočíst její plat. Protokol č. 2 Alice a Bob jsou spolu v restauraci a přou se o to, kdo je starší. Nechtějí však druhému říci, kolik jim skutečně je. Mohou tedy svůj věk pošeptat do ucha třetí důvěryhodné straně (například číšníkovi), která porovná tato dvě čísla a výsledek oznámí Alici i Bobovi. Tento protokol má však dva problémy. První, průměrný číšník nemusí mít schopnost vyřešit těžší problém než je pouhé porovnání dvou čísel a druhý, pokud Alice a Bob opravdu budou trvat na utajení své informace, budou nuceni utopit číšníka. Asymetrická kryptografie nabízí mnohem lepší řešení. Existuje protokol, který umožní Alici, jež zná hodnotu a a Bobovi, jenž zná hodnotu b, společně určit, zda a < b, aniž by Alice dostala jakoukoliv informaci o hodnotě b a Bob o hodnotě a. Navíc jsou Alice i Bob přesvědčeni o platnosti výpočtu. Protože je tento algoritmus jen částí protokolu, detaily je možno nalézt v [19]. Samozřejmě, že tento protokol nebrání před aktivními útočníky. Nikdo a nic nezabrání Alici ani Bobovi, aby o svém věku nelhali. Kdyby Bob byl programem, 7.13 Náročnější protokoly 149 který by slepě prováděl tento protokol, Alice se dozví jeho věk (je věk počítačového programu doba, která uplynula od jeho napsání, nebo od jeho spuštění?) opakovaným spouštěním protokolu. Alice může udat svůj věk jako 60. Poté, co zjistí, že je starší než Bob, spustí protokol s tím, že jí je 30. Po zjištění, že Bob je starší, spustí protokol a oznámí, že má 45 let a tak dále, dokud se nedozví Bobův věk s přesností, jakou si přeje. Za předpokladu, že účastníci nepodvádějí, je snadné tento protokol rozšířit pro větší počet účastníků. Jakýkoliv počet lidí si zjistí setříděnou posloupnost svých věků pomocí důvěryhodné aplikace protokolu a žádný z účastníků se nedozví věk jiného. Protokol č. 3 Alice a Bob mají své koníčky. Rádi by si našli partnera se společnými zájmy. Použijeme seznamovací kanceláře, která bude používat bezpečného protokolu. Seřadíme koníčky podle abecedy. Diskrétně pomocí modemového spojení se budou Alice a Bob účastnit protokolu. Společně mohou určit, zda sdílejí stejné koníčky. Pokud ano, mohou se seznámit, pokud ne, mohou se s kanceláří rozloučit a být si jisti, že jejich koníčky zůstanou důvěrné. Nikdo, dokonce ani seznamovací kancelář, je už nebude vědět. Jak to tedy pracuje? 1. Alice zašifruje svůj koníček do řetězce sedmi čísel pomocí jednocestné ha-šovací funkce. 2. Alice použije tohoto sedmimístného čísla jako telefonního čísla, vytočí je a zanechá zprávu pro Boba. Jestliže nikdo neodpoví nebo číslo není obsluhováno, aplikuje jednocestnou hašovací funkci na telefonní číslo dokud nenajde někoho, kdo by s ní pomocí protokolu komunikoval. 3. Alice sdělí Bobovi, kolikrát aplikovala jednocestnou hašovací funkci na jejího koníčka. 4. Bob aplikuje stejněkrát hašovací funkci na svého koníčka. Také použije toto sedmimístné číslo jako telefonní číslo a zeptá se osoby na druhé straně, zda má nějaké vzkazy. Poznamenejme, že Bob může útočit pomocí vybraného otevřeného textu. Může totiž aplikovat jednocestnou hašovací funkci na obvyklé koníčky a vytočit výsledná telefonní čísla, aby se podíval na zanechané vzkazy pro něj. Tento protokol funguje pouze, když takovýchto možných otevřených textuje dostatečně mnoho na to, aby to pro Boba přestalo být praktické. Existuje též matematický protokol podobný protokolu č. 2. Alice zná a, Bob zná b a společně určí, zda a = b tak, že Bob neví nic o a a Alice neví nic o b. Detaily jsou v [19]. 150 Asymetrické šifrovací systémy neboli systémy s veřejným klíčem Protokol č. 4 Problém je následující: sedmičlenná rada pravidelně hlasuje o nějakém problému. Každý z členů rady může hlasovat ano nebo ne. Kromě toho mají dvě strany možnost volit tzv. „super-hlasy": S—ano a S—ne. Nemusí však těmito hlasy volit, pokud chtějí, mohou volit obyčejnými obvyklými hlasy. Pokud nikdo nepoužije možnost volit super-hlasy, pak rozhoduje většina hlasů. V případě jednoho nebo dvou ekvivalentních super-hlasů jsou všechny ostatní obvyklé hlasy ignorovány. V případě dvou super-hlasů, které si protiřečí, opět rozhoduje většina ostatních hlasů. Nyní chceme protokol, který by bezpečně realizoval tento způsob voleb. Ilustrujme na dvou příkladech volební proces. Předpokládejme, že máme 5 obvyklých voličů N\,..., N5 a 2 super-voliče S\ & S2. Zde jsou jejich hlasy na řešení problému č. 1: Si s2 Nt N2 N3 N, N5 S — ano ne ne ne ne ano ano V tomto případě záleží jen na hlasu S — ano a výsledek je tedy „ano". Následuje hlasování na problém č. 2: Si s2 Nt N2 N3 ív4 N5 S — ano S — ne ne ne ne ano ano Nyní se super-hlasy vzájemně vylučují a tedy vyhrává většina ostatních hlasů „ne". Pokud není nutné utajovat, zda rozhodujícím hlasem byl super-hlas nebo jen obyčejný hlas, pak je jednoduché nalézt aplikaci bezpečného volebního protokolu. Chceme-li tuto skutečnost utajit, pak je nutné použít složitějšího protokolu. Tento způsob volení by se mohl vyskytnout skutečně v reálném životě. Může jít o část korporace, kde určití lidé mají větší váhu hlasu než ostatní nebo např. o část Organizace spojených národů, kde jisté národy mají opět větší volební sílu. Víceúčastnické nepodmíněné bezpečné volební protokoly Jedná se o jednoduchý případ obecného teorému: libovolnou funkci o n proměnných může spočítat n hráčů tak, že všichni budou znát výsledek, ale žádná množina méně než n/2 hráčů nedostane žádnou další informaci, která nevyplývá bud z jejich vlastních vstupů nebo z hodnoty výsledku. Bezpečné vyhodnocování pomocí logických obvodů Alice má vstup a a Bob vstup b. Společně chtějí vypočítat nějakou funkci f (a, b) tak, že Alice se nic nedozví o vstupu Boba a Bob nic o vstupu Alice. Obecný problém se nazývá bezpečné vyhodnocování pomocí obvodů. Alice a Bob mohou vytvořit libovolný booleovský obvod. Tento obvod přijme vstup od Alice a od 7.13 Náročnější protokoly 151 Boba a produkuje výsledek. Bezpečný protokol pro tento obvod splňuje následující 3 podmínky: 1. Alice může vložit svůj vstup, aniž by byl Bob schopen se jej dozvědět. 2. Bob může vložit svůj vstup, aniž by byla Alice schopna se jej dozvědět. 3. Alice i Bob si mohou spočítat výstup a ujistit se, že je správný a že s žádnou z částí nikdo nemanipuloval. 7.13.3 Šíření anonymních zpráv Nemůžete si vyjít na oběd s bandou kryptografů, aniž byste si nepřidělali vrásek na čele. David Chaum uvádí problém obědvajících kryptografů: Tři kryptografové usednou k obědu ve své oblíbené tříhvězdičkové restauraci. Jejich číšník jim sdělí, že v souladu se zvyklostí hotelu se účet platí anonymně. Oběd tedy může zaplatit bud jeden z kryptografů nebo NSA. Všichni kryptografové respektují právo ostatních zaplatit anonymně, ale zajímá je, zda zaplatila NSA. Jak kryptografové Alice, Bob a Carol zjistí, že někdo z nich platí za oběd a přitom se zachovala anonymita plátce? Chaum pokračuje v řešení problému: Každý z kryptografů si hodí poctivou mincí vedle svého menu mezi sebe a kryptografa po pravici tak, ža pouze oni dva vidí, co padlo. Pak každý z kryptografů nahlas řekne, zda obě mince, které vidí -tu, kterou hodil on sám a tu, kterou hodil soused po levici - padly na stejnou stranu nebo ne. Jestliže jeden z nich je plátce, řekne opak, než co vidí. Lichý počet rozdílů znamená, že platil kryptograf. Sudý počet pak, že plátcem je NSA (předpokládá se, že oběd byl zaplacen pouze jednou). Nyní, pokud platil kryptograf, žádný z ostatních dvou neví, kdo to byl. Na důkaz toho, že protokol opravdu funguje, zkusme si představit Alici, která se snaží zjistit, který z kryptografů platil za oběd (předpokládáme, že ani Alice, ani NSA za oběd neplatily). Vidí-li dvě odlišné mince, pak oba kryptografové, Bob a Carol, řekli bud „stejné" nebo oba řekli „různé". (Připomeňme, že lichý počet kryptografů, kteří řekli „různé", znamená, že jeden z nich platil.) Jestliže oba řekli „různé", pak plátcem je kryptograf sedící blíže k minci, jež je stejná se zakrytou mincí (tou, kterou mezi sebou hodili Bob a Carol). Jestliže oba řekli „stejné", pak plátcem je kryptograf sedící blíže k minci, která je různá od zakryté mince. Nicméně, když Alice vidí dvě mince, že jsou stejné, pak bud Bob řekl „stejné" a Carol řekla „různé", nebo Bob řekl „různé" a Carol řekla „stejné". 152 Asymetrické šifrovací systémy neboli systémy s veřejným klíčem Jestliže zakrytá mince je stejná jako obě mince, které vidí Alice, pak je plátcem kryptograf, který řekl „různé". Pokud je zakrytá mince různá od mincí, které vidí, pak je plátcem kryptograf, který řekl „stejné". Ve všech těchto případech potřebuje Alice k tomu, aby určila, zda platil Bob nebo Carol, vědět, jaký je výsledek hození mincí mezi Bobem a Carol. Konkrétní aplikace jsou samozřejmě velmi vzdáleny sezení kolem stolu u oběda. Jako příklad uveďme protokol na rozesílání anonymních zpráv. 1. Uživatelé jsou uspořádáni do kruhu. 2. V pravidených intervalech házejí sousedící uživatelé poctivou mincí za použití některého z bezpečných protokolů pro házení mincí zabraňujících tajnému odposlechu. 3. Po každém hodu každý uživatel pouze oznámí bud „stejné" nebo „různé". Jestliže si Alice přeje rozeslat zprávu, jednoduše začne invertovat svoji odpověď v těch kolech, která odpovídají 1 v binární reprezentaci její zprávy. Například, kdyby zpráva byla „1001", invertovala by svoji odpověď, řekla pravdu, řekla pravdu, a invertovala odpověď. Kdyby výsledky jejich hodů byly „různé", „stejné", „stejné", „stejné", řekla by „stejné", „stejné", „stejné", „různé". Zaznamená-li Alice, že výsledek protokolu nesouhlasí se zprávou, kterou se pokouší vysílat, ví, že se současně s ní snaží vysílat i někdo jiný. Proto zastaví vysílání zprávy a počká náhodný počet kol před tím, než se pokusí zprávu opět vyslat. Přesné parametry musí být určeny na základě množství zpráv zasílaných po síti, ale myšlenka by měla být jasná. Aby byla věc zajímavější, tyto zprávy mohou být zašifrovány veřejným klíčem jiného uživatele. Pak, když všichni dostanou zprávu (skutečná implementace by měla přidat nějaký druh standardního počátečního a ukončovacího řetězce zprávy), pouze ten pravý příjemce ji umí dešifrovat a přečíst. Nikdo jiný neví, kdo tuto zprávu poslal. Nikdo jiný ani neví, kdo by ji mohl přečíst. Pak je také zbytečné dělat analýzu toku zpráv, která trasuje a překládá vzorky komunikace mezi účastníky, i když zprávy samotné mohou být zašifrovány. Alternativou k házení mincí mezi sousedními stranami by mohlo být udržování společného souboru náhodných bitů. Tyto soubory by mohly být uloženy na CD-ROM, nebo jeden ze sousedů by je mohl generovat a posílat ostatním stranám, samozřejmě zašifrované. Alternativně by se mezi sebou mohli dohodnout na kryptograficky bezpečném generátoru pseudonáhodných čísel a každý z nich pak generovat tentýž řetězec pseudonáhodných bitů. Problémem tohoto protokolu je, že zatímco podvodný účastník nemůže číst žádnou zprávu, může nabourat systém tím, že bude lhát v kroku 3. Existuje modifikace předchozího protokolu, která detekuje pokus o nabourání; problém se nazývá „Obědvající kryptografové na diskotéce". Kapitola 8 Šifrový standard DES a jeho kolegove 8.1 Potřeba a historie vzniku DES Obrovský nárůst počítačové komunikace a nástup elektronických bankovních systémů v sedmdesátých letech byly jedním z hlavních faktorů pro rozhodnutí exekutivy Spojených států amerických na zajištění standardu pro bezpečný a spolehlivý transfer dat Federální banky a ostatních bank. Bylo tedy potřeba zajistitit ochranu dat jak v počítačích zpracovávaných a tamtéž ukládaných, tak i dat počítači přenášených. Soutěž na tvorbu šifrovacího algoritmu vyhlásilo ministerstvo obchodu Spojených států amerických v roce 1973. Organizoval ji National Bureau of Standards (NBS). Požadovaným vlastnostem však nevyhověl žádný ze zaslaných algoritmů - základní idea byla, že šifrovací proces by mělo být možno provádět na malém čipu. Důsledkem pak by byla masová výroba těchto čipů, jejichž použití by zajišťovalo naprostou bezpečnost transferu dat. Přitom sám algoritmus měl být bezpečný, pochopitelný, dostupný, výkonný, jeho bezpečnost neměla záviset na utajení algoritmu, vhodný pro nej různější aplikace a ekonomický při elektronické realizaci - tj. čip by měl být levný. V srpnu 1974 byla výzva opakována. Tentokrát se algoritmus podařilo nalézt. Bylo akceptováno šifrovací schéma navržené firmou IBM. Její výzkumný tým pod vedením dr. Tuchmana jej založil na zdokonalení šifrovacího algoritmu LUCIFER, který IBM používala pro své potřeby. Na rozdíl od algoritmu LUCIFER, jež používal klíč o délce 128 bitů, délka klíče navržená pro NBS byla 64 bitů a z toho bylo 8 bitů odstraněno hned na začátku šifrování. NBS, IBM a NSA (National Security Agency) se dohodly, že NSA provede ohodnocení bezpečnosti DES (Data Encryption Standars), jak byl později nový algoritmus nazván, a IBM umožní jeho bezplatné využívání na území Spojených států amerických. DES byl patentován 24.2. 1975 a v březnu téhož roku byl 154 Šifrový standard DES a jeho kolegove zveřejněn pro všeobecné veřejné hodnocení. Přes některé výhrady byl 23.11. 1976 přijat jako federální standard a jako takový zveřejněn 15.1. 1977. Algoritmus byl určen pro ochranu neutajovaných dat v civilním sektoru i vládních institucí vyjma ozbrojených složek, kde nemohl být používán ani k ochramě neutajovaných dat. Předpokládaná doba použití byla 10-15 let. Algoritmus měl být po svém přijetí v roce 1977 každých pět let hodnocen a jeho platnost potvrzována NBS. V roce 1984 zahájila NSA program „Commercial COMSEC Endorsement Program" (CCEP), určený pro zabezpečování ochramy vládních informací, v rámci něhož mělo být připraveno i nahrazování DES. Byly vyvinuty hardwarové bezpečnostní moduly, provádějící šifrové algoritmy navržené pro tentokrát NSA. Tyto algoritmy byly typu 1 a typu 2. První byl určen pro utajované vládní informace a druhý pro neutajovane vládní informace (měl nahradit DES). Později byla aplikace zařízení s algoritmem typu 2 rozšířena i na soukromý sektor. Po 1.1. 1988 neměla už NSA v úmyslu doporučovat DES pro vládní použití. Bylo však zjištěno, že by to způsobilo značné potíže v bankovním sektoru. DES byl v této době už masově používán v nej různějších zařízeních včetně mezinárodního bankovního spojení. To vedlo ministerstvo obchodu USA ke zmírnění stanoviska NSA. V lednu 1988 NBS znovu potvrdil možnost používat DES v dalších 5 letech, avšak ne pro federální nefinanční použití. Ve federálních nefinančních institucích musel být DES nahrazován algoritmy vyvinutými NSA v rámci CCEP. Algoritmy jsou utajovány a nesmí být exportovány ze Spojených států amerických. Čipy, které je realizují, mají ochranný kryt. Výrobci produktů musí při jejich výrobě dodržovat zvláštní postup, stanovený NSA. Tato opatření na ochranu nových algoritmů přinášejí do celé koncepce jejich využívání velké rozpory. Jejich softwarová implementace by nebyla schválena, protože by zde nemohla být zajištěna ochrana algoritmu před jeho odhalením. Přitom v mnoha aplikacích je softwarová implementace nezbytná. Otázkou zůstávají i mezinárodní spoje, kde se předpokládá vývoz těchto zařízení. Je pravděpodobné, že dnes je už povolen přísně regulovaný vývoz, i když algoritmy zůstávají nadále utajeny. Vzhledem k tomu, že uvedená obranná opatření fungují velmi dobře, o zařízeních nevíme téměř nic, dokonce neznáme, ani jejich výkonové charakteristiky. Také není dosud nic známo o rozhodnutí, které mělo být přijato NBS v únoru r. 1993, týkajícím se dalšího existence DES ve finančním sektoru pro léta 1993-1997. DES se od roku 1977 stal nej rozšířenějším kryptografickým systémem ve světě. Je všeobecným nástrojem bezpečnosti ve veřejném i soukromém sektoru. Ve finančním sektoru se používá k ochraně všech aspektů síťové komunikace a auten-tizace a de facto se stal mezinárodním standardem. Je včleněn do maloobchodních i velkoobchodních systémů, je přístupný v nedrahém hardwaru a jako volný software. Pouze ve Spojených státech amerických vývoz hardwaru i softwaru s DES dosud podléhá kontrole. DES je dostupný ve všech možných formách: ve 8.2 Popis šifrovacího algoritmu DES 155 formě čipů, zásuvkových modulů do PC nebo celých šifrovacích jednotek. Jsou k dispozici oficiální programy pro softwarovou realizaci a pro kontrolu správnosti jeho realizace v zařízeních. Standardizaci na bázi DES podporuje pět největších standardizačních organizací: ABA, ANSI, GSA, ISO a NBS. Standardy NBS jsou používány jako základ standardů dalších organizací. DES se používá pro šifrování PIN (Personál Identification Number) v různých druzích platebních, přístupovýc aj. karet. Také v několika amerických vládních organizacích vytváří DES základní mechanismus ochrany (ministerstvo ekonomiky, ministerstvo spravedlnosti). V USA na bázi DES vznikl kryptografický průmysl. Je proto pravděpodobné, že výroba a zavádění DES budou nadále pokračovat. 8.2 Popis šifrovacího algoritmu DES DES patří do třídy blokových šifer. Otevřený text (OT) je rozdělen na bloky po 64 bitech. Každý z těchto bloků M otevřeného textu je jako celek zpracováván na blok C šifrového textu (ŠT) také o délce 64 bitů. Píšeme jako obvykle C = EK(M), M = DK(C), kde K je klíč o délce 56 bitů (vznikne z osmibajtového klíčového slova vynecháním jeho paritních bitů). Zpracování bloku M probíhá v 16 krocích. V každém z nich je z klíče K vybráno podle určitého postupu 48 bitů tvořících pracovní klíč Vlastní blokový algoritmus při šifrování zpracovává blok M tak, že M je nejprve podroben •počáteční permutaci IP, která permutuje všech 64 bitů, a poté je rozdělen na pravou polovinu i?0 a levou polovinu L0, každá o 32 bitech. Pak probíhá 16 totožných kroků, kdy je z dvojice (Li, R4) za účasti pracovního klíče Ki vytvořena dvojice (Li+i, Ri+i), i = 0,1,..., 15. R4 je nejprve rozšířen z 32 bitů na 48 bitů prostřednictvím expanze E tak, že E(Ri) = E(ri,r2,...,rsl,rS2) (8.1) = (rs2,ri,r2,rs, r4, r5, r4, r5, r6, r7, r8,r9,r28, r29, r30, r31, r32, n), a k výsledku je v modulu 2 tj. bit po bitu přečten klíč Ki. Výstup E(Ri) © Ki je rozdělen do osmi částí po 6 bitech, které procházejí přes substituční boxy S\ až Sg. Tyto S-boxy jsou v podstatě pamětí ROM 6x4 bity a výstup je tedy celkem 8x4=32-bitový. Většinou se tyto boxy popisují i zadávají tak, že krajní bity vstupu (1. a 6. bit) vybírají jeden ze čtyř možných boxů 4x4 bity a výstup těchto boxů se uvádí v tabulce. Přitom se jejich vstupní i výstupní 4-bitová hodnota pro jednoduchost zapisuje dekadicky jako 0 až 15. Jsou to permutace na množině {0,1,..., 15}. Výstup z S-boxů, tj. 8x4=32 bity, je upraven permutací P (32 na 32 bitů). Vzniklé 32-bitové slovo je označováno f(Ri,Ki), neboť je funkcí klíče Ki a slova R4. Poslední operace v i-tém kroku je Li+i — Ri Ri+i — Li® f(Ri, Ki). (8.2) 156 Šifrový standard DES a jeho kolegove Po proběhnutí 16. kroku je provedena záměna L16 a R16 a 64-bitový blok (i?i6, Lw) je permutován permutací IP-1 (permutací inverzní k IP). Výsledek je \vlC = Ek(M). 8.2 Popis šifrovacího algoritmu DES 157 Li +i L 16 -Rl6 1 Í16 Permutovaný text IP~l Šifrový text S T 158 Šifrový standard DES a jeho kolegove Tvorba klíčů kf 56 (Permutace P Cl) 56 Registr C Posunutí S HL Pi 28 28 28 28 Registr D Posunutí S HL pi Per^nutačnWýběr^PC2j 56 48 Pracovní klíč Kí 48 Tvorba pracovních klíčů Kí probíhá při šifrování tak, že klíč K o 56 bitech je podroben permutaci PCI a poté je naplněn do dvou 28-bitových registrů C a D. Obsah registrů C, D je v každém kroku i, i = 0,1,...,15 cyklicky posunut doleva o Pí bitů (posun pi je v krocích 0, 1, 8 a 15 jednobitový a ve zbývajících dvoubitový) a jejich výsledné 56-bitové zřetězení je podrobeno permutačnímu výběru PC2. PC2 svůj vstup 56 bitů nejen permutuje, ale i redukuje na 48 bitů vynecháním některých bitů. Výstup z PC2 už tvoří pracovní klíč K i. Klíče Ki lze vytvářet bud souběžně se zpracováním otevřeného textu nebo předem. Postup formování klíčů Ki je takový, že v uvedených 16x48=768 bitech je každý bit klíče K obsažen 12 až 15 a objevuje se na různých pozicích. Tímto je popis šifrovací části blokového algoritmu uzavřen. Filozofie algoritmu je taková, aby při dešifrování nemuselo být použito zcela jiné hardwarové schéma. Dešifrování M = DK(C) probíhá stejným postupem jako šifrování! Pouze pořadí výběru klíčů Ki je obrácené - místo K0, K\, ..., Kí5 se používá pořadí Kí5, Ku, ..., K2, K\, K0. Vytváříme-li klíče postupně, pak ve výše uvedeném popisu se místo SHL musí použít SHR a tabulka posunů (0,1,2,2, 2, 2,2,2,1, 2,2,2,2,2,2,1), jinak zůstane vše zachováno. Tento princip 8.2 Popis šifrovacího algoritmu DES 159 zpracování (Lj,i?á) na (Li+Í, Ri+Í) se nazývá Feistelův princip podle dr. Horsta Feistela, kryptologa IBM a vynálezce šifrovacího algoritmu LUCIFER. Tabulka permutací IP PCI PC2 P 1 58 57 14 16 2 50 49 17 7 3 42 41 11 20 4 34 33 24 21 5 26 25 1 29 6 18 17 5 12 7 10 9 3 28 8 2 1 28 17 9 60 58 15 1 10 52 50 6 15 11 44 42 21 23 12 36 34 10 26 13 28 26 23 5 14 20 18 19 18 15 12 10 12 31 16 4 2 4 10 17 62 59 26 2 18 54 51 8 8 19 46 43 16 24 20 38 35 7 14 21 30 27 27 32 22 22 19 20 27 23 14 11 13 3 24 6 3 2 9 25 64 69 41 19 26 56 52 52 13 27 48 44 31 30 28 40 36 37 6 29 32 63 47 22 30 24 55 55 11 31 16 47 30 4 32 8 39 40 25 IP PCI PC2 33 57 31 51 34 49 23 45 35 41 15 33 36 33 7 48 37 25 62 44 38 17 54 49 39 9 46 39 40 1 38 56 41 59 30 34 42 51 22 53 43 43 14 46 44 35 6 42 45 27 61 50 46 19 53 36 47 11 45 29 48 3 37 32 49 61 29 50 53 21 51 45 13 52 37 5 53 29 28 54 21 20 55 13 12 56 5 4 57 63 58 55 59 47 60 39 61 31 62 23 63 15 64 7 160 Šifrový standard DES a jeho kolegove S-box SI X6 0 1 2 3 4 5 (x2,x3,x4 6 7 8 X5) 9 10 11 12 13 14 15 0 0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 0 1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 1 0 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0 1 1 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13 S-box S2 xi X6 0 1 2 3 4 5 (x2,x3,x4 6 7 8 X5) 9 10 11 12 13 14 15 0 0 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10 0 1 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5 1 0 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15 1 1 13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9 S-box S3 xi X6 0 1 2 3 4 5 (x2,x3,x4 6 7 8 X5) 9 10 11 12 13 14 15 0 0 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8 0 1 13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1 1 0 13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7 1 1 1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12 S-box S4 xi X6 0 1 2 3 4 5 (x2,x3,x4, 6 7 8 X5) 9 10 11 12 13 14 15 0 0 7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15 0 1 13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9 1 0 10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4 1 1 3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14 S-box S5 xi x6 0 1 2 3 4 5 (x2,x3 6 7 x4 8 x5) 9 10 11 12 13 14 15 0 0 2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9 0 1 14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6 1 0 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14 1 1 11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3 8.2 Popis šifrovacího algoritmu DES 161 S-box S6 X6 0 1 2 3 4 5 (x2,x3,x4 6 7 8 X5) 9 10 11 12 13 14 15 0 0 12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11 0 1 10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8 1 0 9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6 1 1 4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13 S-box S 7 xi X6 0 1 2 3 4 5 (X2,x3,x4,x5) 6 7 8 9 10 11 12 13 14 15 0 0 4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1 0 1 13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6 1 0 1 11 4 13 12 3 7 14 10 15 6 8 0 5 9 2 1 1 6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12 S-box S8 xi X6 0 1 2 3 4 5 (x2,x3,x4 6 7 8 X5) 9 10 11 12 13 14 15 0 0 13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7 0 1 1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2 1 0 7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8 1 1 2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11 Vlastnosti DES Cílem počáteční permutace IP je provést rozprostření vlivu bitů z jedněch bajtů otevřeného textu M do ostatních. Permutace IP-1 je zde proto, aby se v dešifrovacím procesu napravil účinek IP. Kryptograficky je tato permutace nevýznamná a v rozborech je zanedbávaná. Skutečně, při útoku se znalostí otevřeného textu M, tj. při znalosti odpovídajících si dvojic M otevřeného textu a C šifrového textu, si vliv permutace IP na otevřený i šifrový text snadno eliminujeme. Uvažujeme-li IP~1(M) a IP(C), je to totéž, jako by schéma tyto permutace vůbec neobsahovalo. Také závěrečná výměna slov L a i? je zde jen proto, aby dešifrovací proces byl shodný se šifrovacím, tj. pro možnost zahájení rekonstrukce předchozích dvojic {L,R) z následujících. Základem schématu je transformace /, která vytváří tzv. substitučně-permutační síť. V podstatě se skládá ze substituce (S-boxy) a permutace P a zároveň zajišťuje vliv klíče na proces zpracování otevřeného textu. Klíč je na proměnné R načítán 162 Šifrový standard DES a jeho kolegove v modulu 2 jako heslo na otevřený text u Vernamovy šifry, permutace P nám připomíná historické transpoziční systémy a S-boxy substituční systémy. DES je pak jejich součinová šifra. DES jako celek je substituční systémem, pracujícím se slovy délky 64 bitů. Je to tedy kódová kniha, která má 264 kódových výrazů, neboť to je počet všech možných otevřených textů. Kódové výrazy se nevyhledávají, ale na základě znalosti klíče se vypočítávají. Ten, kdo nezná klíč, by měl být postaven před neřešitelnou úlohu „dekódování". Cílem algoritmu je, aby v uvedené kódové knize neexistovala jiná skrytá souvislost mezi klíčem K, otevřeným textem M a šifrovým textem C, která by byla využitelná k luštění. Jednou z vlastností DESu, která se rovněž statisticky testovala, je vliv změny jednoho bitu v otevřeném textu M (resp. v klíči K), aby pravděpodobnost změny každého bitu šifrového textu C byla asi 50%. Tímto bude mj. zaručeno, že šifrové výrazy odpovídající dvěma málo se lišícím otevřeným textů budou naprosto odlišné. Podobně to je i s požadavkem vlivu klíče na šifrový text. Dále se požadovalo, aby neexistovala žádná korelace mezi otevřeným textem M a šifrovým textem C a mezi šifrovým textem C a klíčem K. Tyto vlastnosti byly statisticky potvrzeny a testovány. Výběrové statistické testy pak mohou potvrdit jen některé vlastnosti, ale nemohou vyloučit nekonečně mnoho dalších. To se týká například vlastnosti komplementárnosti, kterou budeme diskutovat dále. Jak na ni máme přijít statistickými testy, když nevíme, že vůbec existuje? Dalšími požadovanými vlastnostmi jsou konfúze a difúze. Jedná se o to, aby měl každý bit klíče K a otevřeného textu M vliv na každý bit šifrového textu C a aby tento vliv byl velmi komplikovaný. Na složitost zde pak mají největší vliv S-boxy. Každý výstupní bit S-boxu je nelineární funkcí všech vstupních bitů (při vyjádření operacemi © a A). V případě, že by S-boxy realizovaly lineární funkci, celé schéma by realizovalo pouze lineární funkci. Potom by ovšem všech 64 bitů šifrového textu C bylo jen různými lineárními kombinacemi bitů otevřeného textu M a klíče K. Ale takovéto schéma bychom mohli okamžitě rozluštit řešením soustavy lineárních rovnic. Nelineárním vlastnostem se při studiu DES věnovala velká pozornost, neboť zajišťují požadovanou konfúzi. Bohužel, kritéria návrhu S-boxů zůstávají doposud tajná a přitom právě zde bylo nalezeno mnoho slabin. Režimy činnosti DES U DES byly stanoveny 4 základní módy činnosti, které byly odvozeny od různých potřeb. Základem je vlastní blokový algoritmus, tj. zobrazení EK : X —>■ X, kde X = {0,1}^' ^' ■ ■ ■' ^} je množina všech 64-bitových bloků. Tento algoritmus je zároveň prvním módem. 1. ECB - Elektronická kódová kniha, píšeme C = EK(M), kde M je otevřený text a C je šifrový text. Jedná se skutečně o kódovou knihu, neboť při opakovaných blocích otevřeného textu M jsou šifrové zprávy C stejné. Proto by 8.2 Popis šifrovacího algoritmu DES 163 bylo možné při šifrování zpráv tímto módem z operativních informací domýšlet část zašifrovaného obsahu bez nutnosti jejich luštění. Formalizovane části zpráv by bylo možné opakovat v zašifrovaném tvaru (platební příkazy, standardní hlášení). Proto se tento mód nepoužívá k šifrování zpráv, ale jen k šifrování klíčů. 2. CBC - Zřetězení šifrového textu, symbolicky zapsáno jako Cn = EK{Mn®Cn.l), (8.3) kde (Mn)n je systém bloků otevřeného textu. Tento mód využívá výstup z jednoho kroku šifrování k modeifikaci nového vstupu, takže každý blok Cn šifrového textu je závislý nejen na právě šifrovaném bloku Mn otevřeného textu, ale i na všech předchozích blocích otevřeného textu a šifrového textu. 3. CFB - Zpětná vazba ze šifrového textu, píšeme Cn = Mn®EK(In), (8.4) kde je vstupní registr posunutý o k bitů doleva a doplněný zprava k bity Cn-\. Přitom Mn je proud A;—bitových znaků otevřeného textu. Je to mód vhodný tam, kde se data zpracovávají po znacích nebo po částech menších než 64 bitů. Zpětná vazba je vedena ze šifrového textu, ale jen v délce k bitů, přičemž u výstupu z blokového algoritmu je využíváno také jen k bitů. Je to systém podobný proudové šifře, avšak zachovávající vlastnost závislosti šifrového textu na předchozím otevřeném textu a šifrovém textu. 4. OFB - Zpětná vazba z výstupu, symbolicky zapsáno jako Hn = EK (Jn), Cn = Mn®Hn, (8.5) kde J n je vstupní registr posunutý o k bitů doleva a doplněný zprava k bity Hn_i, Mn je proud A;-bitových znaků otevřeného textu a Hn je vytvořený proud hesla. Tento mód pracuje podobně jako Vernamova šifra, pouze zdroj hesla není náhodný. Mód byl navržen pro potřeby, kdy je nežádoucí, aby se chyby vzniklé na komunikačním kanálu rozšiřovaly působením šifrového algoritmu do otevřeného textu. Jde například o přenosy dat s vysokou rychlostí a redundancí (kódovaná řeč, Videosignal, satelitní spoje aj.). Poznamenejme, že u módů CBC, CBF a OFB je nutné „vstupní registr" nejprve na začátku naplnit nějakou hodnotou. Ta se nazývá inicializační vektor a odesílá se většinou na začátku zprávy. 164 Šifrový standard DES a jeho kolegove 8.3 Kritika šifrového standardu Příliš krátky klíč Prvními velkými kritiky návrhu DES se stali DiíSe a Hellman ze Stanfordské univerzity. Ve svém dopise NBS nejvíce kritizovali malý objem klíče - 56 bitů. Poukazovali na to, že nehledě na jiný možný útok k rozbití DES postačí pouhé zkoušení možných klíčů. To může provádět kdokoli, kdykoli a se zaručeným úspěchem. Dokazovali, že to bylo možné i s tehdejší technologií (1975). Uvažovali o sestrojení speciálního stroje, který by pro danou dvojici otevřený text M a šifrový klíč C hledal použitý klíč vyzkoušením všech jeho možností. V době kritiky, tj. v říjnu 1975, odhadovali, že by s tímto strojem vyluštili za jeden den jednu takovou úlohu za cenu 10 000 $. Speciální stroj by potřeboval vyzkoušet 256 tj. cca. 1017 klíčů za jeden den, což je přibližně 1012 klíčů za sekundu. Při ceně 10 $ za čip by tento stroj stál 20 000 000 $ (10 000 000 $ na čipy a zbytek na ostatní náklady). Při úplném odepsání stroje za 5 let by tak denní provoz stál 10 000 $. Ve skutečnosti se s padesátiprocentní pravděpodobností narazí na správný klíč už po vyzkoušení poloviny klíčů. To by hledání klíče dvakrát zrychlilo a tím i o polovinu snížilo náklady. Dále argumentovali tím, že během 5 let se cena technologie sníží v průměru 10-krát, a proto by za 10 let tento stroj stál pouze 200 000 $. Přitom si v odhadu nedělali nárok na přesnost v rozmezí jednoho řádu! Doporučovali rozšířit klíč na 128 nebo 256 bitů nebo šifrovat víckrát za sebou s použitím nezávislých klíčů, tedy šifrový text C = EKl(EK2(...EKm(M)...)). Pracovní konference NBS NBS reagoval na jejich argumenty svoláním pracovní konference, která se konala 30.-31. srpna 1976 a byla zaměřena na to, zda předpovědi a tvrzení Dimeho a Hellmana jsou realistické. Závěr z konference byl, že tehdejší technologií by jejich stroj nebylo možné nebylo možné sestrojit, a pokud se ho sestrojit podaří, nebude to dříve než po roce 1990 (a to asi za 72 000 000 $). Proti zvětšení klíče bylo argumentováno tím, že by to vedlo k prodražení čipů, horším podmínkám vývozu a že to není nezbytné ani pro zamýšlené aplikace, ani pro uvažovanou životnost schématu (10-15 let). Diffie a Hellman na to odpověděli článkem „Exhaustive Cryptoanalysis of the NBS Data Encryption Standard11 (1977), v němž vyčerpávajícím způsobem a podloženými argumenty dokazovali, že jejich odhady jsou správné (dnes víme, že měli pravdu). Mezitím i interní studie IBM odhadla, že by takový stroj mohl být sestrojen do roku 1981 a za cenu 200 000 000 $, tedy v rámci jejich tolerance. 8.3 Kritika šifrového standardu 165 Komplementárnost a pracovní bloky Protože Diffie, Hellman a dalších pět jejich kolegů nesouhlasili s tím, že IBM a NSA utajují výsledky svého zkoumání bezpečnosti DES a návrhová kritéria, zorganizovali během srpna 1976 vlastní krátké studiem DES „Results of an ini-tial attempt to cryptoanalyze the NBS Data Encryption Standard" (1976). Z něho vyplynuly další závažné slabosti DES: vlastnost komplementárnosti, určité pravidelnosti v S-boxech a jejich dostatečná nelinearita. Poukazovali na to, že veřejný standard by měl mít i veřejná návrhová kritéria. V opačném případě to budí nedůvěru. Těm, kdo návrhová kritéria znají, umožňuje využít jejich slabosti k luštění, a jsou tedy proti ostatním zvýhodněni. Mohlo by jít bud o osoby, které se k těmto tajným informacím dostanou neoprávněně (např. cizí tajné služby), nebo o samotné ochránce (IBM, NSA). To by u veřejného standardu nemělo být. Účastníci studia se domnívali, že NSA si ve skutečnosti nepřeje silný standard, aby jej mohla snadněji luštit. Nesouhlasili s tím, že by DES měl být odolný jen proti „luštění se znalostí otevřeného textu", což NBS do požadavků dal, ale i proti „luštění s možností volby otevřeného textu", což původně požadováno nebylo. Druhá konference NBS Nato NBS zorganizoval pracovní setkání matematiků v září 1976 k analýze kvality DES a možnosti, že by mohl obsahovat „trojského koně" („Report of the workshop on cryptography on support of computer security"). Přestože jiní účastníci na různé nedostatky také upozorňovali, fakticky nabyla předložena žádná konkrétní metoda na jejich přímé využití. Představitel IBM na konferenci k problému „trojského koně" dokonce prohlásil: „Musíte nám důvěřovat, my všichni jsme dobří skauti". Také NBS a NSA prohlásily, že neznají žádné metody, jak využít objevené kvazilinearity. Bezprostředně po skončení konferencí se NBS rozhodl ponechat DES beze změn. Toto rozhodnutí způsobil zejména tlak průmyslu, který už potřeboval konečný verdikt, aby mohl vyrábět čipy. Změny v DES by tento proces nejméně o rok oddálily. Aféra kolem utajovaní však zanechala na NSA nesmazatelný stín podezření. Zvláště když vyšetřovací komise Senátu USA potvrdila, že NSA přesvědčila IBM o vhodnosti redukce délky klíče. Původně totiž IBM pro své potřeby používala 128-bitový klíč. V roce 1978 prohlásil Davis na podporu DES následující: „ Každý, kdo si zakoupí kryptografické zařízení pracující na základě DES, může být ujištěn o specifické úrovni bezpečnosti dat: totiž je potřeba použít 255 pokusů a metodu prověření všech možností, aby bylo možno získat klíč pro použitý šifrovací algoritmus." 166 Šifrový standard DES a jeho kolegove Komplementárnost Objevená vlastnost komplementárnosti spočívá v tom, že ze vztahu C = EK(M) plyne non C — -Enon x (non M), (8-6) kde non označuje negaci bit po bitu. To je pravidelnost, která by se v takovémto případě rozhodně neměla objevit. Autoři rozboru její odhalení považovali diplomaticky řečeno za velmi znepokojující. Tvůrcům schématu tato vlastnost pravděpodobně unikla. Je umožněna tím, že negace klíče i vstupu se při jejich součtu mod 2 ve funkci / zruší: f(R,K) = /(non R,non K). (8.7) Totiž označíme-li R'0 = non i?0, Ľ0 = non L0 a šifrujeme-li zprávu M' = (Ľ0, R'0) klíčem K' = non K obdržíme postupně: M' = non M, platí-li, že (L'i,R'i) = non (Lí,Rí), je i (Ľi+1,R'i+1) = non (Li+1, R+Íi), protože {R[, Ľ, @f{R'i, K<)) = (non Rh (non L%) © / (non Rh non tfť)) (non Ri, (non Lá) © f(Ri, K^) = (non Ri, non Ri+X) non (Li+1,R+1i). Speciálně tedy (Ľ16,R'16) = non (L16,i?16) tj. non EK(M) = Enon ^(non M). To se dá pak využít i k luštění v případě, že hledáme klíč K a máme k dispozici dvojice (M, C\) a (non M,C2), které vznikly při šifrování tímto neznámým klíčem. Proveďme zašifrování Ek{M). Není-li tento výraz roven C\, vylučujeme klíč K. Kdyby byl při šifrování non M použít klíč non K, obdrželi bychom C2 = Enon x(non M) = non EK(M). (8.8) Nejsou-li si oba krajní výrazy, které máme k dispozici, rovny, můžeme vyloučit i klíč non K. Tím jsme nahradili jedno šifrování (klíčem non K) za pohé porovnávání výrazů, což je proti šifrování časově zanedbatelné. Prostor klíčů je tedy de facto poloviční a hledání 2-krát rychlejší. Vlastnost komplementarity by navíc mohla ve špatně navržených protokolech způsobit i nežádoucí odhalení chráněných informací. Při všech možných aplikacích na ni musí být dáván pozor. Je smutné, že mnozí kryptologové (zejména z NBS) tuto vlastnost nepovažují za podstatnou. Ostatně v oficiálním popisu DES vypracovaném NBS se také tvrdí že klíč je 64-bitový. Rozhodně nejde o chybu, ale o vytvoření dojmu, že tomu tak je. S „dobrými skauty" tedy není asi všechno v pořádku. Nevhodný návrh S-boxů (L'i+l,R'i+l) — 8.3 Kritika šifrového standardu 167 Kromě tajných návrhových kritérií, která mohla obsahovat další skryté vady, v studiu bylo poukázáno na velkou korelovanost a nedostatečnou nelinearitu výstupních bitů S-boxů. Například box S4 má pětasedmdesátiprocentní nadbytečnost. S-box S4 (xi, x6) (x2,x3 ,x4 x5) 0 0 0 1 1 0 1 1 0 0 0 0 0 1 1 1 1 1 0 1 1 0 1 0 0 0 1 1 0 0 0 1 1 1 0 1 1 0 0 0 0 1 1 0 1 1 1 1 0 0 1 0 1 1 1 0 1 0 1 1 1 0 0 1 0 0 0 0 0 0 1 1 0 0 1 1 0 1 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 1 1 0 1 1 0 0 1 0 1 0 0 1 0 1 0 1 1 0 1 1 1 1 1 0 1 1 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 1 1 1 1 1 0 1 0 1 1 1 1 0 1 0 0 0 1 1 1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 1 1 1 1 0 0 1 1 0 0 1 0 0 1 0 0 1 1 1 0 0 0 1 0 1 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 1 1 0 1 0 1 1 0 0 1 0 1 0 1 1 1 0 0 1 1 1 0 1 0 1 1 1 1 0 0 1 0 1 1 0 0 0 1 0 1 0 1 1 1 0 0 1 1 0 1 1 1 0 0 1 0 1 0 0 0 1 0 0 1 1 1 1 1 1 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 1 0 1 1 1 1 0 Jeho 4 menší boxy 4x4 (při hodnotách krajních bitů X\X& = 00,01,10,11) jsou snadno odvoditelné pouze od prvního z nich (00). Platí dokonce vztah 54(a; © 000001) = (12)(34)54(z) © (z6,non z6,non x6,x6), (8.9) kde x = (xi,X2,xs,xi,x5,xe) je vstup a symbolický zápis (1,2) znamená výměnu 1. a 2. bitu. Označíme-li y = (2/1,2/2,2/3, ž/4) jako výstup, vyplývá odud, že součet (2/1 © 2/2) je na x§ závislý pouze lineárně a (2/1 © 2/2 © 2/3 © 2/4) na něm nezávisí vůbec. Taková pravděpodobnost je nežádoucí. Slabé a poloslabé klíče Hodně pozornosti bylo věnováno studiu klíčů. Budou-li registry C a D na počátku obsahovat konstantní bity (bud nuly nebo jedničky), pak je operace SHL a PC2 je nijak nezmění a klíče Ki si budou rovny. Tím nastane i nežádoucí rovnost EK = DK. Celkem existují 4 tyto klíče (podle toho, zda registry C nebo D obsahují nuly nebo jedničky). Podobnou vlastnost má 6 dvojic tzv. poloslabých klíčů K\ a K2, pro něž platí EKlEK2 = Id neboli EKl = DK2. 168 Šifrový standard DES a jeho kolegove Ty vznikají tak, že jejich klíče jsou shodné, ale v opačném pořadí jejich použití. Tím vzniká efekt, že při šifrování druhým klíčem probíhá postupné dešifrování klíčem prvním. To nastane např. u této dvojice klíčů (01FE01FE01FE01FE,FE01FE01FE01FE01). Později bylo identifikováno mnoho dalších tříd různě „slabých" klíčů. Hellmanův časopaměťový útok Východisko k luštění lz nalézt i v efektivním využití času a paměti. Vychází se ze znalosti konkrétního otevřeného textu, který se velmi často objevuje ve zprávách, např. osm za sebou jdoucích mezer. Při zachycení jemu odpovídajícímu šifrového textu můžeme klíč luštit vyzkoušením všech jeho možností (čas t=256 šifrování, paměť m=l slovo) nebo tím, že si předem připravíme tabulku všech možných dvojic (klíč, šifrový text) (čas t=l, paměť m=256 slov) a porovnáním šifrového textu. V obou případech je celková spotřeba „časopaměti" t-m=256 -spotřebu času lze přelít do paměti a naopak. Hellman v roce 1980 přišel na to, jak část tabulky vypočítat předem a ve velmi zhuštěné podobě ji uložit do paměti. Luštění potom probíhá částečně jako šifrování a částečně jako porovnávání. Při optimalizaci požadavků na čas, paměť a cenu dospěl k návrhu, který zahrnoval 10 000 DES čipů, paměť 1000 GB a přípravné výpočty tabulek trvající 1 až 2 roky. To vše v ceně asi 3,6 miliónu $. S těmito prostředky byl schopen určit až 1000 klíčů denně (v důsledku paralelismu) s průměrným čekáním na řešení 1 den. Při plné amortizaci zařízení do 5 let by cena za vyluštění jednoho klíče byla 1-100 $. Nevýhoda Hellmanova útoku spočívá v tom, že vše se počítá pro konkrétní otevřený text. Pro jiný otevřený text musíme všechny předběžné výpočty provést znovu. Další zajímavé vlastnosti DES Při studiu DES do r. 1990 bylo popsáno několik dalších vlastností DES. Zmiňme se o odhalení kratší periody v jednom z modů činnosti DES. Při vazbě k = 64 u OFB je průměrná délka cyklu produkovaného hesla přibližně 263 bloků, avšak při jiné délce k je pouze kolem 231 bloků! Toto množství hesla při rychlosti šifrování 216 bitů za sekundu (např. pro digitalizovanou řeč) je vyčerpáno asi za 18 hodin! Poté by došlo k dvojímu použití hesla, což je pro luštitele známá a jednoduchá úloha. Musí být proto používaná pouze plná vazba k = 64, při které je průměrná délka periody hesla dostatečná. Mnohonásobné použití DES 8.3 Kritika šifrového standardu 169 K odstranění nedostatku malého objemu klíče bylo doporučováno několikanásobné šifrování DES. Při dvojnásobném šifrování algoritmem DES s použitím dvou různých klíčů, tj. C = EK2(EKl(M)) (8.10) by klíč vzrostl na 112 bitů, což se zdá být dostatečné. Avšak byla nalezena technika, která by de facto redukovala klíč na pouhých 57 bitů. Spočívá v útoku se znalostí otevřeného textu. Známý otevřený text je zašifrován všemi možnými klíči (vzniká množina EKl (M) o 256 prvcích) a známý šifrový text je dešifrován všemi možnými klíči (vzniká množina Dk2{C) o 256 prvcích). Průnik obou vzniklých množin obsahuje pravé řešení. Kromě toho vzniká asi 248 falešných párů klíčů. Ty lze snadno vyloučit kontrolním zašifrováním na dalším známém páru (M, C). Tato metoda se nazývá „meet in the middle". IBM doporučení Diffieho a Hell-mana přijala, vylepšila a k šifrování významných informací (jako jsou například klíče nižších úrovní) používá dvou klíčů následným způsobem C = EKl(DK2(EKl(M))). (8.11) Tato metoda trojnásobného šifrování (s dvojnásobným klíčem) má výhodu v kompatibilitě se systémy s jedním klíčem (původního šifrování se dosáhne volbou KX = K2). První vážný analytický útok Obránci DES, kteří argumentovali tím, že doposud nebyl předložen žádný vážnější útok proti DES (a přehlíželi tak výše uvedené skutečnosti), mají od 11.8. 1990 ztíženou argumentaci. Tento den předložili Eli Biham a Adi Shamir z Weizmanova institutu v Izraeli metodu luštění, nazývanou diferenciální kryp-toanalýza (DK). Je analytickým útokem proti DES. Snadno s ní rozbili os-mikrokovou DES, japonskou blokovou šifru FEAL a předchůdce DES LUCIFERa. U patnáctikrokové verze DES s ní dosáhli lepších výsledků, než je zkoušení všech možných klíčů. Po dvou letech pak metodu zdokonalili i pro plně šestnáctikrokovou verzi DES a tím vyvrátili tvrzení Davise. Podstata diferenciální kryptografie spočívá ve využití nevhodných S-boxů a slabého zpracování klíče. Vliv klíče K i se dá totiž určitým způsobem „vyblokovat". Uvažujme v jednom kroku DES při výpočtu f(R,K) zpracování dvou vstupů: R\ a R2. První úvaha spočívá v tom, že diference R\ a R2 {=Ri © R2) zůstává nezměněna, když R\ a R2 projdou rozšířením (expanzí) E a operací © s klíčem K. Vliv klíče se v této diferenci eliminuje: (E(Rl) © K) © (E(R2) ®K) = E(Rl) © E(R2) = E(Rl © R2)\ (8.12) Druhá myšlenka spočívá v tom, jak obejít nelineární S-boxy. Pro některé diference vstupů jsou mnohé diference výstupů z S-boxů málo pravděpodobné a 170 Šifrový standard DES a jeho kolegove jiné velmi pravděpodobné. Výstupní diference se ovšem v dalším kroku schématu stávají vstupními diferencemi! Permutace P nám v tom vůbec nevadí. Tímto postupným zřetězením vstupně-výstupních diferencí dostáváme nakonec pravděpodobnostní vztah mezi diferencemi otevřeného textu a diferencemi šifrového textu. Nalezneme-li páry (M, C), kde M je otevřený text, C je šifrový text, které vyhovují našemu modelu, máme o průběhu šifrování už dost informací. Určení klíčů Ki6 až Ki je pak jen složitou technickou záležitostí. S každým krokem se ovšem příslušné pravděpodobnosti násobí, takže čím více kroků má schéma, tím je účinnost metody horší. Například na rozbití osmikrokové verze DES stačily pouze 2 minuty, na šestnáctikrokovou verzi je to již 237 operací. Dosud je také k tomu potřeba velké množství odpovídajících si dvojic (M,C). Na druhé straně se metoda neustále zdokonaluje, takže nelze odhadnout, kde se zastaví její účinnost. Na obranu proti ní v dnešní podobě zatím postačuje trojnásobné šifrování. Avšak důvěra v DES jako celek dostala vážnou trhlinu. Záplata v podobě mnohonásobného šifrování může brzy povolit. Kromě toho existují oblasti, u nichž přepracování z jednoduchého šifrování vyjde stejně jako zavedení jiného krypto-systému (platební karta, klíčová hospodářství, ...). Další analytické útoky Ve dnech 23.-27.května 1993 se v Lofthusu, malé norské vesničce, konala další ze série konferencí Mezinárodní asociace pro kryptologický výzkum - EURO-CRYPT'93. K DES se vztahovalo několik příspěvků. Uveďme dva nej důležitější. První z příspěvků přednesl Eli Biham, jeden ze známých izraelských „rozbíječů" DES. Svůj příspěvek s názvem „Nové typy kryptoanalytických útoků na bázi příbuzných klíčů" uvedl předvedením čersvého výtisku knihy o diferenciální kryptoanalýze DES; napsal ji společně s Adi Shamirem. Biham si všiml, že některé rodiny kryptoschémat využívají poměrně jednoduché tvorby rundovských klíčů (u DES viz Ki), čímž mezi nimi vznikají zřejmé vztahy, a ty pak využil ke dvěma útokům. Prvním útokem „s možností volby otevřeného textu" dosáhl novou redukci složitosti při luštění poměrně široké třídy kryptoschémat a předvedl rychlejší variantu tohoto útoku s využitím vlastnosti komplementárnosti. Druhý útok je nový a autor ho pojmenoval „útok s možností volby vztahů v klíči s nízkou složitostí". Připomeňme rozlišení typů útoků na šifrovací systém • Luštění pouze ze šifrového textu. Kryptoanalytik má k dispozici libovolné množství kryptogramu, neví ovšem, jaký otevřený text byl zašifrován. • Luštění při znalosti otevřeného a šifrového textu. Kryptoanalytik má k dispozici libovolné množství dvojic otevřeného textu a jemu příslušného kryptogramu. 8.3 Kritika šifrového standardu 171 • Luštění s možností volby. Kryptoanalytik má možnost vnutit šifrovacímu systému svůj otevřený text a obdržet od něj odpovídající kryptogram. Jaký útok kryptoanalytik zvolí, záleží vždy na konkrétní úloze, před kterou je postaven. V tomto typu útoku bylo využito toho, že určité jednoduché vztahy mezi klíči mají za následek určité jednoduché vztahy mezi otevřenými a šifrovými texty. Bihamovy útoky jsou aplikovatelné na rodinu schémat LOKI a LUCIFERA. Mohly by být aplikovatelné i na DES, kdyby posuny registrů C a D v algoritmu přípravy klíčů Ki byly stejné .... Jak křehká je bezpečnost DES! Ukazuje se, že nové výsledky útoků nepadají z nebe, ale jsou pouze výsledkem nového soustředěného úsilí kryptoanalytiků. Bihamův útok je totiž zlepšením, rozšířením a zobecněním Knudsenova útoku na australský algoritmus LOKI91 z roku 1992, ale vznikl nezávisle na něm. Druhý příspěvek byl ještě zajímavější. Přednesl ho Japonec M. Matsui a byl nazván „Lineární krypto analytická metoda pro šifru DES". Nová metoda krypto-analýzy je útokem „se znalostí otevřeného textu". Její podstata spočívá v objevu lineárních vztahů v kryptosystému DES (s využitelnou pravděpodobností). To se mu podařilo díky slabým nelinearitám S-boxů. Následující výsledky kryptoanalýzy byly získány na pracovní stanici Hewlett-Packard HP 9750 (PA-RISC/66MHz) s programy vytvořenými v jazyku C. 1. Výsledky experimentů při útoku se znalostí otevřeného textu: • osmikroková DES je rozluštitelná s 221 otevřenými texty za 40 sekund, • dvanáctikroková DES je rozluštitelná s 233 otevřenými texty za 50 hodin, • šestnáctikroková DES je rozluštitelná s 247 známými otevřenými texty rychleji, než je vyčepávající hledání 56-bitového klíče. V některých případech (není-li otevřený text náhodný) lze klíč luštit přímo ze šifrového textu. To je novinka, která přímo ohromuje. Přitom Matsuiho metoda luštění je myšlenkovitě přímočará. 2. Zde jsou výsledky experimentů pro luštění pouze ze šifrového textu: • je-li otevřený text tvořen anglickými texty ve znacích ASCII, osmikroková DES je rozluštitelná s 229 šifrovými texty. • jsou-li otevřené texty náhodné znaky ASCII, je potřeba 237 šifrových textů, • jsou-li otevřené texty tvořeny zcela náhodnými znaky, existují situace, kdy je Matsuiho metoda rychlejší než vyzkoušení všech hodnot klíče. 172 Šifrový standard DES a jeho kolegove Z příspěvku je zřejmé, že poslední slovo ve využití této myšlenky ještě nepadlo. Dává zcela konkrétní metodu pro luštění algoritmu DES, ale má zejména význam vědecko-metodologický. Příspěvek obsahuje mnoho nových myšlenek, které budou studovány a použity jak pro kryptoanalýzu, tak pro tvorbu nových kryptosché-mat. Je téměř neuvěřitelné, že celý útok je založen na tom, že „S-box S5 dává s velkou pravděpodobností lineární vztah mezi některými vstupy a některými výstupy". Je to další útok se znalostí otevřeného textu a první útok se znalostí šifrového textu na DES. Původní varování DifReho a Hellmana Vraťme se nyní k původním varováním Dimeho a Hellmana z roku 1976. Jak víme, brali v úvahu 1 milión čipů provádějících asi 800 000 zkoušek klíčů za sekundu. Z konference NBS vyplynul závěr, že takový čip nebude možno vyrobit dříve než v roce 1990. Podívejme se na následující tabulku Rok Forma Počet zkoušek Zdroj Uvedená ohlášení DES klíčů/s informace cena 1984 vyrobeno 21Si (256 k) Proc. CRYPT084 1987 vyvinuto 219 (512 k) Proceedings of 1987 možné vyrobit 22U (1 M) EUROCRYPT 87 40 $ 1991 možné vyrobit 222 (4 M) DES Watch 1992 možné vyrobit 224 (16 M) Proc. CRYPT092 300 $ 1995 možné vyrobit 226 (64 M) odhad 1999 možné vyrobit 228 (256 M) odhad Z tabulky je vidět, že konference vývoj mírně podcenila a požadovaných parametrů bylo dosaženo už v roce 1987! Dnes je možno za 300 $ pořídit čip s rychlostí zkoušek 16 M klíčů/s. Pokud chceme v průměru luštit jeden klíč za den, potřebujeme 255/(86400 • 224) = 24855 čipů. Za ně zaplatíme 24855 • 300 = 7 456 500 $. Uvažujeme-li o stejné ceně za běžnou technologii v daném roce, zaplatíme za totéž v roce 1995 pouze 1 864 125 $ a v roce 1999 jen 466 031 $. Cena za jeden vyluštěný klíč by tak byla v roce 1992 asi 4000 $, v roce 1995 potom jen 1000 $ a v roce 1999 pouze 250 $. To už je báječná investice pro vysoce kvalifikované zloděje!!! Uvědomme si, že za 5 let projdou pod ochranou DES v severoamerických bankách finanční transakce v hodnotě 1826 • 400 • 109 « 700 000 000 000 000 $.. V tomto světle vypadá argumentace lidí od NBS, že „nejutajovanější věci mohou být vyzrazeny za mnohem méně než desítky miliónů dolarů, nutných k rozbití DES ..." jako omezená a účelová. Stejně účelové je i chování některých bank, které prostě uvedenou situaci neberou na vědomí (pokud o ní vůbec vědí). 8.3 Kritika šifrového standardu 173 Klasické argumenty jsou: „V praxi jsou tyto ceny za hardware dostatečně odstrašující, další výdaje jsou nutné na zaplacení expertů - kryptoanalytiků, úroveň znalostí o bankovních systémech je nízká, hlavní hrozba je spíše uvnitř banky než drahý a nejistý matematický útok, snadnější je klíče ukrást atd." Kde budou tyto argumenty banky, až jednoho dne pan prezident banky zjistí, že neznámý poberta odeslal aktiva banky někam na druhý konec světa? Tvářit se, že hrozba neexistuje, je pštrosí politika. A tu nelze dělat v oblastech týkajících se bezpečnosti. Rozbití DES je rok od roku atraktivnější a hrozba se stává hrozivější. Útočníkem nemusí být „obyčejní" zloději, ale třeba některá z tajných služeb či mafií. Dnes by Hellmanův časopaměťový útok mohl být proveden s 1024 DES čipy, 32 GB paměti a pár měsíci předběžných výpočtů. To vše v ceně do 3,6 miliónu $ a s dobou čekání na řešení jeden den. I to je dost nepříjemné. Softwarová hrozba Softwarový útok je snadno a všem dostupný. Softwarová verze DES běží na pracovních stanicích dostatečně rychle, aby hravě rozluštila nekvalitní hesla (zašifrovaná v DES). Ukazuje se, že na novějších počítačích může software nahradit průměrně rychlé čipy DES. Současný experiment využívající nečinnost v síti 40 pracovních stanic dosáhl 234 zkoušek klíčů DES během jednoho dne. Uvažujeme-li, že heslo obsahuje pouze malá písmena, je to 268 možností. V daném experimentu by nám k úspěchu stačilo zkoušet klíč po víkendech necelý měsíc. Představíme-li si síť o 512 nejmodernějších pracovních stanicích, které pracují po dobu jednoho měsíce v mimopracovní době, pak jsou tyto stanice schopny provést 512(poč.) • (22 • 15 + 8 • 24) (hod.) • 3600(sec.) • 32000(klíčů/s) « 245 zkoušek klíčů. Pravý klíč bude tedy za tuto dobu nalezen s pravděpodobností 1:2000, tedy větší, než je pro činitele odpovědné za bezpečnost zdrávo. Závěr Velmi brzy budeme postaveni před kolaps dnešní bezpečnostní technologie postavené na bázi DES. Reálné luštění hrozí ze tří stran: sestrojením speciálního stroje na hledání klíčů, analytickým útokem a softwarovým útokem. Cena za jeden vyluštěný klíč bude v roce 1999 jen 250 $. Analytický útok s využitím diferenciální kryptoanalýzy a lineární kryptoanalytické metody pro DES se bude zdokonalovat. Možnosti softwarové hrozby porostou s rozšiřováním počítačových sítí. To vše si vynutí náhradu DES. Bude to velmi drahý a náročný proces. Do té doby tam, kde je to možné, bude nutné jednoduché šifrování DES nahradit za několikanásobné. Časem se bude muset vyměnit množství různých platebních 174 Šifrový standard DES a jeho kolegove a jiných karet pracujících pod DES. Pravdepodobne se zmení i politika „veřejnosti" šifrových schémat. Budou muset být zahájeny nové mezinárodní standardizační procesy. Vnitřní ochranu některých národních komerčních systémů bude vhodnější zabezpečit po vzoru švýcarských bank národními nebo firemními neveřejnými kryptoschématy. Jedinými možnostmi jak nahradit DES jsou algoritmus RSA a diskrétní mocnění. Rozhodně bychom se z vývoje DES měli poučit. 8.4 Použití NP-těžkých problémů v šifrovacích systémech V současné době neexistuje rychlý (tj. pracující v polynomiální době) algoritmus pro žádný NP-těžký problém, a pokud NP^P, takový algoritmus neexistuje. Je tedy přirozený nápad založit kryptosystém na NP-těžkém problému, aby rozbití šifrovacího systému bylo ekvivalentní nalezení rychlého algoritmu, který by řešil NP-těžký problém. To je mj. základní idea pro DES. Uvažme následující výpočetní problém. Algebraické rovnice nad Z2 Vstup: Polynomy pt,... ,pk v proměnných X\,... ,xn nad Z2. Otázka: Mají polynomy společný nulový bod (x\,... .xn) v Z"? Například následující tři rovnice XiX±Xe + X2XiX5 — 1 =0 xix2 + x2xz + xsx4 - 1 =0 X1X3 + X4X5 + x\Xe — 1 =0 mají společné řešení (1,0,1,1,1,1). Ačkoliv výše uvedený problém je lehký pro malá k a n, se zvětšováním těchto parametrů se obtížnost vyřešení neustále zvyšuje. Lze navíc dokázat, že platí Věta 8.4.1 Problém rozhodnout, zda algebraický systém rovnic modulo 2 má řešení, je NP-těžký. Výše uvedená věta byla použita při tvorbě šifrovacího systému LUCIFER navrženého IBM a popsaného H. Feistelem v roce 1973. Systém pracuje následovně. Bez újmy na obecnosti lze předpokládat, že délka zprávy M je 2n (pokud by byla větší, použijeme rozdělení do bloků délky 2n a na každý blok aplikujeme šifrovací proceduru). Zprávu M rozdělíme na dva stejné bloky délky n, tj. M = (M0, Mi). 8.5 GOST aneb GOsudarstvennyj STandart 175 Klíč K bude vektor k, který určuje podklíče ki,k2,... ,k^-i- Pro 2 < i < d, rekurzivně definujeme Mi = Mi..2 + f(ki_1,Mi-1), (8.13) kde / je nějaká libovolná pevně zvolená nelineární transformace a počítáme modlilo 2. Závěrečný kryptogram C je určen vztahem C = e(M,K) = (Md.1,Md). (8.14) Zprávu M lze získat z kryptogramu C opačným postupem - všechno, co musí příjemce zprávy provést, je obrácení pořadí 8.13. Tedy Mť_2 = Mť + /(ki_1,Mť_1), (8.15) d > i > 2, až dospějeme k původní zprávě M = (M0, Mi). Za předpokladu, že příjemce zná tvar funkce / a hodnoty šifrovacích klíčů, je dešifrování kryptogramu právě tak těžké jako jeho zašifrování. Poznamenejme, že díky 8.15 funkce / nemusí být invertibilní. V typické situaci, Mr. X může znát tvar funkce /, ale nesmí znát klíče. Zda je pak schopen získat klíče pomocí luštění s pomocí volby, závisí na tvaru /. Je-li / lineární transformace, je určení klíče výpočetně snadné. Avšak, v případě, že / je nelineární transformace, např. f(x1,...,xn;y1,...,yn) = (p!,...,pn), kde každé Pí je polynom v proměnných (x\,..., xn; yi,..., yn), pak určení klíče ze znalosti M a C se redukuje na problém vyřešení algebraických rovnic pro klíčové proměnné. Jak jsme viděli, to je NP-těžký problém. Dosáhli jsme tedy našeho cíle: nalezení kryptosystému, který má lehký proces šifrování a dešifrování, ale který zároveň vynucuje po Mr. X, aby při hledání klíče pomocí luštění s pomocí volby řešil NP-těžký problém. Za předpokladu, že NP-těžké problémy jsou nezvládnutelné, je bezpečnost systému zajištěna. Je zde však následující problém. Klasická teorie složitosti se téměř úplně zabývá s nejhorším možným chováním. Ačkoliv tedy určení klíče je těžký problém, nemáme jistotu, že neexistuje velký počet „snadných vstupů". 8.5 GOST aneb GOsudarstvennyj STandart Šifrovací algoritmus GOST • vznikl roku 1989, • je první a zatím poslední sovětská veřejná šifra, 176 Šifrový standard DES a jeho kolegove • vládní standard pro kryptografickou ochranu systémů zpracování dat, • určen pro SW i HW implementaci, • neklade žádné omezení na stupeň utajení chráněných informací. Klíče GOST • GOST je klasická bloková symetrická šifra s tajným klíčem a délkou bloku 64 bitů (na první pohled velmi podobná DES), • má 256 bitový klíč W (DES má pouze 56b), • má 8 substitučních tabulek, každá o 64 bitech (vstup 4b, výstup 4b). Dohromady tvoří tzv. substituční blok K, který je součástí tajného klíče. Tuto část klíče lze považovat za známou, pokud je konstantní ve větší síti (bankovnictví). Na 8 substitučních funkcí j —>■ Ä"[í][j] nejsou ve standardu kladeny žádné požadavky; vhodné jsou permutace čísel 0-15. Singularity: -ŕí[í][j] = const.,K[i]\j] = j. Přestože existují tyto singularity, nelze blok K považovat za odepsaný a klíč zužovat pouze na W. Princip šifrování GOST (v základním režimu ECB) • v podstatě převod jednoho bloku otevřeného textu {OT) na odpovídající blok šifrového textu (ŠT), • klíč W rozdělen do osmi (32 bitových) slov X[0] až X[7] • tato jsou rozvinuta na další, tzv. rundovní klíče takto: - for(i = 8; i < 24; i + +) X[i] = X[i - 8]; - for(i = 24; i < 32; i + +) X[i] = X[31 - i] Tj. posloupnost rundovních klíčů X[0] až X[31] nabývá hodnot - X[0],...,X[7],X[0],...,X[7],X[0],...,X[7],X[7],...,X[0]. • vstupní 64 bitový blok OT = (in[l], in[0]) rozdělen na slova JVi = in[0], N2 = in[l] • Ni a N2 jsou ve 32 rundách promíchána s rundovními klíči Feistelovým principem následovně: - for(i = 0;i < 32;í + +) {tmp = N1;N1 = F(Nt + X[i])"N2; N2 = tmp} 8.5 GOST aneb GOsudarstvennyj STandart 177 • nakonec proběhne záměna slov JVi a JV2, tj. výsledný šifrový text je: - ST = (out[l],out[0]) = (NUN2) • Zbývá dodefinovat funkci F: její 32 bitový vstup je rozdělen na 8 čtyřbi-tových slov a každé z nich projde odpovídající substituční tabulkou K [i]. Výsledek (8x4 bity) spojený do 32 bitového slova se poté cyklicky rotuje doleva o 11 bitů. • Dešifrování: stejný postup, ale rundovní klíče se použijí v opačném pořadí (díky Feistelovu principu). Kvalita šifrování • kvalitu zajišťují o dostatečná délka klíče o dvě nelineární operace — sčítání v modulu 232 a substituční boxy K [i] • funkce substitučních boxů: vliv každého vstupního bitu OT (i rundovního klíče) vmíchávají v každé rundě šifrování do 4 bitů výstupu. Rotace o 11 bitů způsobí, že tyto výstupní bity v každé následující rundě ovlivňují o 4 výstupní bity více. • další (dopředný) vliv má sčítání mezivýsledku (Ni,N2) s X[i\. Teoreticky tedy může díky aritmetickému přenosu od nejnižšího řádu k nejvyššímu dojít k ovlivnění všech 8 boxů najednou během jedné rundy (záleží na počtu a vzájemných polohách jedniček). • Nevýhoda oproti DES: cyklická rotace o 11 bitů místo promyšlené permutace používané v DES. GOST tuto nevýhodu kompenzuje dvojnásobkem počtu rund. Kryptografická betonáž • 32 rund je značně předimenzovaný počet, nicméně je velkou překážkou pro diferenciální a lineární kryptoanalýzu • sloitost šifry roste s každou další rundou exponenciálně, kdežto čas lineárně (32 rund je tedy 216 krát složitější než 16 rund, ale trvá jen dvakrát déle) • počet rund byl navržen s ohledem na omezení složitosti šifry shora součtem bitů OT a klíče 178 Šifrový standard DES a jeho kolegove Další režimy činnosti • Režim zpětné vazby ze šifrového textu (CFB) je definován stejně jako u DES: - St [i] = ot[í]'gost(St[í -1]) • Režim „gammirovanija" se sice překládá jako OFB, ale je odlišný od OFB u DES. Transformuje blokovou šifru na proudovou. Základem je 64b čítač. Nejprve se zvolí inicializační vektor IV a po zašifrování se naplní do čítače: (c[i],c[o]) = gost(/y[i],/y[o]). Poté se vždy k c[0] přičte konstanta 0x01010101 v modulu 232 a k c[l] 0x01010104 v modulu (232 — 1). Zašifrováním takto vzniklé hodnoty čítače vziká heslo. Pak ŠT[í] = OT[í]"heslo[í]. V dalším kroku se k čítači opět přičtou příslušné konstanty a celý postup se opakuje, až je vygenerováno tolik bitů hesla, kolik má OT. • Zabezpečovací kód zprávy (MAC) je rovněž odlišný od DES. Na tvorbu MAC je použit stejný klíč jako na data, ale jiná šifra (prvních 16 rund GOST). Tvorba MACu probíhá v režimu CBC a jeho délku L < 32b si volí uživatel. • Režim řetězení šifrového textu (CBC) není definován. Slabiny standardu GOST • Existují slabé klíče X[i] = X[7 — i], kdy zašifrování je rovno dešifrování, ale jejich hustota v prostoru všech klíčů (1/2128) je oproti DES (1/254) mizivá. Navíc GOST nemá vlastnost komplementárnosti. • Problémy se substitučními boxy: pokud jsou (nesmyslně) zvoleny jako konstanta, GOST vůbec nešifruje. Zvolí-li se jako identity, jako by ve schématu nebyly. Závěrem • GOST používá několik kryptografických novinek (gammirovanije), • nepodporuje jeden z mezinárodně standardizovaných režimů (CBC), • předpokládá se jeho masové nasazení v Rusku. 8.5 GOST aneb GOsudarstvennyj STandart 179 sectionŠifrovací algoritmus Skipjack Skipjack je nový šifrovací algoritmus vyvinutý NSA (National Security Agency) v rámci jejího nového návrhu na podmíněné sdílení klíčů. Tento nový šifrovací standard má nahradit dnes již zastarávající DES. (Zastarávající i v tom směru, že na útok hrubou silou — tj. vyzkoušení všech klíčů — dnes stačí jedna velká firma a 300 000 USD!) Proto NSA přišla s novým nápadem nazvaným Key Escrow System (podmíněné sdílení klíčů) a novým algoritmem Skipjack. Tento algoritmus je tajný, je ukryt v čipu Clipper, který je chráněn speciálním pouzdrem. Při porušení tohoto pouzdra dojde k fyzikálně-chemické destrukci vnitřního zapojení a uložených klíčů. „Popis" algoritmu Skipjack Skipjack pracuje podobně jako DES, který má nahradit. Je to bloková šifra, má stejné režimy činnosti jako DES a stejnou délku bloku (64 bitů). Liší se "podstatně" složitějším vnitřkem (32 rund proti 16 u DES...), délkou klíče (80 bitů proti 56 u DES) a hlavně tím, že ho zná jen NSA. Podle expertů, jimž NSA dovolila nahlédnout do tajné dokumentace, je Skipjack velmi kvalitní šifrovací algoritmus. Nevidí u něj jinou možnost luštění, než vyzkoušení všech klíčů. (Což podle nich v následujících 30 - 40 letech nehrozí.) Algoritmus se tají mimo jiné i proto, aby nemohl být realizován softwarově, protože by tím občané dostali do rukou kvalitní šifru, aniž by ji vláda mohla luštit. Podmíněné sdílení klíčů Tento nápad jako by vypadl z Orwellova románu: Chcete kvalitně šifrovat? Ano, máme pro vás velmi kvalitní algoritmus od NSA. Váš šifrovací klíč si ale s dovolením ponecháme. Bude uložen u vládou pověřené organizace ve dvou částech a dohromady ho lze dát jedině na základě soudního povolení. Zajímavá je i technická realizace této myšlenky: Programování čipů provádí utajované vládní zařízení (ZPČ). Toto zařízení má v sobě uloženy tři tajné vládní klíče — Kl, K2, F K (Family Key). Při výrobě asistují určené organizace ORG1 a ORG2, u nichž budou uloženy ony dvě půlky klíče nového čipu. ORG1 a ORG2 generují náhodné vstupy do ZPČ, které k nim přidává identifikační číslo nového čipu IČČ (tj. identifikační číslo nového uživatele čipu) a z těchto 3 hodnot vygeneruje 80 bitové subklíče KU1 pro ORG1 a KU2 pro ORG2. Pak se spočte klíč uživatele KU = KU1 xor KU2 a zapíše se do čipu, společně s IČČ a FK. Do databáze ORG1 však ZPČ zašle společně s IČČ nikoli KU1, ale KU1 zašifrované klíčem Kl, tj. hodnota E{KU\, Kl) a do ORG2 obdobně E(KU2, K2). Tyto dvě organizace tedy dostávají do úschovy černou skříňku, od níž nemají klíče, neví, co je uvnitř, ale mají ji bedlivě hlídat. 180 Šifrový standard DES a jeho kolegove Postup vlády při dešifrování V "případě potřeby" — tj. na základě soudního povolení — má vláda možnost dešifrovat komunikaci mezi dvěma uživateli A a B. Klíč, který šifruje vlastní data se nazývá relační klíč (RK). Clipper sám o sobě neřeší problém volby RK. Povinností každého výrobce šifrovacího zařízení, které obsahuje Clipper, však je, aby RK byl před vlastní komunikací "sdělen vládě". Šifrátory to provedou automaticky tak, že během vzájemné synchronizace každý zašle svému protějšku pole dat LEAF, které nese požadovaný RK. LEAF (Law Enforcement Access Field) je definován takto: LEAF = E{{25b IČC, 80b hodnota E{RK, UK), 23b autentizátor A),FK). Je-li zachycena podezřelá komunikace, vláda (má k dispozici FK) nejprve odšifruje LEAF a dostane IČČ, E(RK,UK) a A. Po získání soudního povolení k vydání klíčů uživatele s číslem JČČ obdrží od ORG1 E(KU1, Kl) a od ORG2 E(KU2,K2). Po odšifrování (má k dispozici Kl, K2) z nich zjistí KU1, KU2 a určí KU = KUlxorKU2. Pomocí KU odšifruje zbylou část pole LEAF, tj. E(RK,UK), a získá konečně relační klíč RK. S pomocí Skipjacku už může dešifrovat zachycenou komunikaci (ale i tu co byla předtím i tu co bude)... Porovnání algoritmů DES a Skipjack DES Skipjack typ šifry bloková bloková vývoj algoritmu IBM NSA délka bloku dat 64 bitů 64 bitů inicializační vektor 64 bitů 64 bitů délka uživatelského klíče 56 bitů 80 bitů přídavné klíče ne ne popis algoritmu veřejný státem utajovaný možnost použití dif. kryptoanalýzy ano ne výroba čipů desítky firem vládou USA určení výrobci možnost přeprogramování čipů většinou ne ne 8.6 Proudová šifra RC4 Po mnoha letech boje s DESem a dalšími šiframi se zdá že zvítězila šifra společnosti RSA Data Security jménem RC4. Tato šifra je však vzhledem k sídlu firmy "americkým produktem" a jako taková je chráněna předpisy proti vyvážení zbraní. Její kvalita tedy byla v programech vyvážených mimo USA značně omezena, a to vedlo k jejímu rozluštění (pomocí Internetu). Popis RC4 8.6 Proudová šifra RC4 181 RC4 je proudová šifra. Uživatelem zadaný klíč se použije k tvorbě 256bajtové šifrovací tabulky. Potom se v každém kroku šifrování jednak modifikuje obsah tabulky, a jednak se z ní vygeneruje jeden bajt hesla. Heslo se použije jako základ generátoru pseudonáhodných čísel; dvěma z nich se mění sama tabulka (permutuje se) a třetí se posílá na výstup. To se pak "přixoruje" na právě zpracovávaný bajt otevřeného textu. Jako šifra proudová má RC4 mnoho výhod i nevýhod. K výhodě patří především rychlost zpracování, která z ní dělá nástroj přitažlivý pro mnoho komerčních produktů. Proudové šifry kódují jen tolik bajtů, kolik jich má otevřený text, délka dat se tedy neprodlužuje. Je také možno dešifrovat libovolný bajt, který je třeba uprostřed zprávy. A zde začínají nevýhody. Na proudové šifry lze obecně lépe útočit. Stačí změnit např. jediný bajt, pokud známe formát zprávy, neboť: nový bajt = (původní bajt xor heslo) xor diference. Pokud tohle bude dešifrováno operací xor heslo, dostaneme (původní bajt xor diference). Víme-li, kde stojí v textu jednička na pozici desetitisíců, např. v textu "Proveďte převod 10 000 USD z konta x na konto y." můžeme volbou (1 xor 9) snadno získat 80 000 dolarů. Přitom: o neznáme klíč uživatele o neznáme heslo o neznáme konkrétní typ proudové šifry Rozluštění Šifru RC4 vyvinula firma RSA, která zaměstnává schopné kryptology, např. prof. Ronalda Rivesta a má patent na další šifry jako RSA, MD a řadu RC. Kombinací těchto prostředků ovládla RSA trh, neboť asymetrickou RSA šifru použila pro distribuci klíčů, MD pro digitální podpisy a RC4 pro vlastní rychlé šifrování. Klíč šifer byl pochopitelně omezen na 40 bitů, což se jim patrně stalo osudným. Prezident firmy Jim Bidzon se sice dal zaregistrovat jako vývozce zbraní a podařilo se mu dosáhnout podstatného zkrácení času při vládním schvalování šifer, ale zrušit omezení na délku klíče nedokázal. Firma tedy alespoň přísně tajila i zdrojový kód šifry RC (jako by si v některé z prvních lekcí Kryptologie nemohla přečíst, že nemá cenu tajit algoritmus), a tento byl v roce 1994 disassemblován patrně někým z tzv. cypherpunkers v rámci boje na právo se bránit, které tito šifrovací nadšenci interpretují jako právo zjistit kód šifry, které se má svěřit ochrana jejich dat. Výsledný zdrojový kód šifry v jazyce C byl pomocí anonymní pošty oznámen 13. července 1994 na Internetu. V hutném perlovském formátu vypadá takto: 182 Šifrový standard DES a jeho kolegove #!/usr/local/bin/perl -0777— -export-a-crypto-system-sig -RC4-3-lines-PERL @k=unpack('C*',pack('H*',shift));for(@t=@s=0..255){$y=($k[$_%@k]+$s[$x=$_ ]+$y)%256;&S;>$x=$y=0;for(unpack('C*',<>)){$x++;$y=($s[$x%=256]+$y)%256; &S;print pack(C,$_~=$s[($s[$x]+$s[$y])%256]);}sub S{@s[$x,$y]=@s[$y,$x];> Dnes již je možné si stáhnout řadu utilitek pro komfortní používání RC4. Šifropankři se domnívají, že rozlousknutím kódu ztratila firma RSA na algoritmus právo a umožňují s ním volně pracovat, pouze nedoporučují komerční využití (koupě šifry u RSA vyjde levněji, než soudní proces s ní). Šifropankři a jejich zábavy RC4 však pro své klady pronikla nejen do mnoha komerčních produktů (jak je zmíněno výše), ale také na Internet. Pro bezpečný přenos např. finančních dat se na síti používá protokol SSL (Secure Sockets Layer), který pracuje s RC4. Tento protokol používá např. Netscape, a právě prostřednictvím šifrované objednávky zboží Netscapem bylo loni ukázáno, jak je komunikace na Internetu "bezpečná". Vzhledem k tomu, že šifra RC4 je známa a byl použit pouze 40 bitový klíč, zbývalo jediné: vyzkoušet všechny možnosti. To provedly nezávisle na sobě dva týmy, trvalo to zhruba 100 MIPS let (30 Pentií za 8 dní). Tím bylo jasně řečeno, že je to právě délka klíče, která umožňuje každému provést tento nejjednodušší typ útoku. Později Hal (původní zadavatel šifrové úlohy) vyhlásil další kód. Nyní bylo cílem zvládnout prohledání prostoru všech klíčů v co nejkratším čase. Přitom bylo pomocí Internetu zapojeno několik desítek lidí a výsledek se dostavil: informace o tom, že Hall si objednal tričko NetScape za 12 dolarů, byla známa za 31h 47m 36s. Třetí Halová výzva se chystá, do projektů se zapojuje řada. Pokud chcete na něco takového věnovat strojový čas, jste vítáni, je dokonce možnost získat symbolickou finanční odměnu, pokud se zrovna vám podaří získat klíč. Závěr Tato situace v oblasti bezpečnosti komunikace na Internetu je tedy velice neuspokojivá. Svět obecně předpokládá, že Netscape si najme programátory mimo USA (zajímavé je prohlášení firmy z 18. července, tedy tři dny po prolomení jejich systému o tom, že protokol SSL má být otevřenou platformou pro vytvoření bezpečného produktu pro výměnu důvěrných informací). Cypher pankeři předpokládají, že časem zlomí vládní dle nich nesmyslná omezení na délku klíče. A Jelcin v Rusku zavádí nutnost používat klíče o délce 256 bitů. Přílohy aneb hrátky s RC4: • RC4 in 3 lineš of perl: http://dcs.ex.ac.uk/aba/rc4.html, 8.7 Šifrovací algoritmus IDEA 183 • RC4 v céčku: http://des.ex.ac.uk/äba/rc4.c , • Lámači projekt (mimo jiných): http://dcs.ex.ac.uk/ aba/brute-rc4 .html. 8.7 Šifrovací algoritmus IDEA První verze tohoto algoritmu byla poprvé prezentována v roce 1990. Jeho autory jsou Xuejia Lai a James Massey. Autoři dali tomuto algoritmu název PES (Proposed Encryption Standard). V příštím roce, když Biham a Shamir přišli s diferenciální kryptoanalýzou, autoři zesílili svůj algoritmus a nazvali ho IPES (Improved Proposed Encryption Standard), později (1992) byl název změněn na IDEA (International Data Encryption Algorithm). Algoritmus IDEA se zdá být v dnešní době nejlepším a nejbezpečnějším veřejně dostupným blokovým šifrovačem. Ale jeho budoucnost není úplně jasná. Není zde moc velká snaha převzít ho jako náhradu za DES. Zčásti proto, že je patentovaný a také proto, že veřejnost stále čeká na jeho odolnost proti kryp-toanalýze příštích let. Velkým plusem pro IDEA je to, že je součástí šifrovacího systému PGP. 8.7.1 Základní vlastnosti šifrovacího systému IDEA IDEA je blokový šifrovací algoritmus. Pracuje se 64-bitovými bloky vstupního textu. Klíč je přitom dlouhý 128 bitů. Pro dešifrování je použit ten samý algoritmus jako pro šifrování. Myšlenka celého algoritmu je postavena na „míchání" tří algebraických operací. Všechny mohou být snadno implementovány jak hardwarově tak i softwarově. Jsou to: • XOR • sčítání modulo 216 • násobení modulo 216 (na tuto operaci můžeme pohlížet jako na S-box z DESu). Všechny tyto operace pracují na 16-bitových blocích. 8.7.2 Popis systému IDEA Obrázek 1 v příloze je přehled algoritmu IDEA. 64-bitový blok se rozdělí na čtyři 16-bitové podbloky: XI, X2, X3 a X4. Tyto podbloky jsou potom vstupem pro první kolo algoritmu. Algoritmus celkem obsahuje osm kol. V každém kole se tyto podbloky XORují, sčítají a násobí mezi sebou navzájem a s šesti 16-bitovými podklíči. Po každém kole se prohodí druhý a třetí podblok. Nakonec se 184 Šifrový standard DES a jeho kolegove na těchto čtyřech podblocích provede výstupní transformace zkombinováním se čtyřmi podklíči. V každém kole algoritmu probíhají tyto operace: 1. Vynásobení XI a prvního podklíče. 2. Sečtení X2 a druhého podklíče. 3. Sečtení X3 a třetího podklíče. 4. Vynásobení X4 a čtvrtého podklíče. 5. XOR výsledků kroků 1. a 3. 6. XOR výsledků kroků 2. a 4. 7. Vynásobení výsledku kroku 5. s pátým podklíčem. 8. Sečtení výsledků kroků 6. a 7. 9. Vynásobení výsledku kroku 8. a šestého podklíče. 10. Sečtení výsledků kroků 7. a 9. 11. XOR výsledků kroků 1. a 9. 12. XOR výsledků kroků 3. a 9. 13. XOR výsledků kroků 2. a 10. 14. XOR výsledků kroků 4. a 10. Výstupem kola jsou čtyři podbloky, které jsou výsledkem kroků 11., 12., 13. a 14. Prohozením dvou prostředních podbloků dostaneme vstup pro další kolo. Po osmém kole následuje finální výstupní transformace: 1. Vynásobení XI a prvního podklíče 2. Sečtení X2 a druhého podklíče 3. Sečtení X3 a třetího podklíče 4. Vynásobení X4 a čtvrtého podklíče Nakonec spojením těchto čtyř výstupních podbloků dostaneme šifrovaný text. Vytváření podklíčů je také snadné. Algoritmus používá celkem 52 takových podklíčů (šest pro každé kolo a čtyři pro výstupní transformaci). 128-bitový klíč se nejprve rozdělí na 16-bitové podklíče. Toto je prvních osm podklíčů pro algoritmus (šest pro první kolo a dva pro druhé kolo). Potom klíč rotuje o 25 bitů doleva a znovu se rozdělí na osm podklíčů. A tak dále až do konce algoritmu. Dešifrování je v podstatě stejné jako šifrování až na to, že podklíče jsou reverzní a mírně odlišné. Dešifrovací klíče jsou bud aditivní nebo multiplikativní inverze šifrovacích klíčů. (Pro účely algoritmu IDEA bereme, že podblok složený ze samých nul reprezentuje 216 = — 1 pro násobení modulo 216 + 1; tedy multiplikativní inverze nuly je nula.) Tyto výpočty zaberou nějaký čas, ale stačí je vždy spočítta pouze jednou pro každý klíč. Tabulka ukazuje šifrovací podklíče a jim příslušné dešifrovací podklíče: Kolo Šifrovací podklíče Dešifrovací podklíče 1. z^-\ -zW2, -zWs,z(%L, z(g)5, z(8)6 2. z(2)1,z(2)2,z(2)3,z(2)4,z(2)5,z(2)6 z(*)-\ -z(g)3, -z(%, z(%\ z(%, z(7)6 3. z(3)1,z(3)2,z(3)3,z(3)4,z(3)5,z(3)6 z( V, -z(7)3, -z(7)2, z(?)4-\ z(6)5, z(6)6 4. z(4)1,z(4)2,z(4)3,z(4)4,z(4)5,z(4)6 zw-\ -z(6)3, -z(g)2, zi%\ z(V5, z(5)6 5. z(5)1,z(5)2,z(5)3,z(5)4,z(5)5,z(5)6 zw-\ -z(5)3, -z(%, zi%\ z(4)5, z(4)6 6. z(6)1,z(6)2,z(6)3,z(6)4,z(6)5,z(6)6 z(V, -z(4)3, -z(%,z(%\ z(3)5, z(3)6 Rychlost algoritmu IDEA Současné softwarové implementace jsou asi dvakrát rychlejší než DES. IDEA na stroji 386, 33 MHz šifruje data rychlostí 880 Kbit/s a na stroji 486, 66 MHz 8.7 Šifrovací algoritmus IDEA 185 rychlostí 2.4 Mbit/s. Možná se to zdá málo, ale násobení není levná operace. Na vynásobení dvou 32-bitových čísel potřebuje procesor 486 čtyřicet cyklů (pentium 10). Hardwarové implementace pak dosahují rychlostí až 177 Mbit/s. 8.7.3 Kryptoanalýza systému IDEA Délka klíče algoritmu IDEA je 128 bitů, to je více než dvakrát tolik co u DES. Pokud bychom chtěli provést útok hrubou silou, potřebujeme 2128 (1038)-krát šifrovat. Představme si čip, který otestuje miliardu klíčů za sekundu a nechrne miliardu takových čipů luštit klíč. Potom stejně bude rozlomení klíče trvat 1013 let, tedy vice než je stáří vesmíru. Pole 1024 takových čipů by klíč rozlomilo za jeden den, ale ve vesmíru ani není dostatek atomů křemíku k sestrojení takového stroje. Tedy útok hrubou silou není zrovna nejlepší cesta, jak na IDEU zaútočit. Ale na definitivní kryptoanalytické výsledky je algoritmus stále ještě moc nový. Návrháři se snažili, aby algoritmus byl odolný vůči diferenciální kryptoanalýze. Definovali koncept Markovova šifrovače a ukázali, že odolnost vůči diferenciální kryptoanalýze lze modelovat a kvantifikovat. (Na obrázku 2 je pro porovnání uveden původní PES algoritmus. Ten byl později zesílen proti diferenciální kryptoanalýze. Je zajímavé, jak málo někdy stačí.). Lai tvrdí, že IDEA je odolná vůči diferenciám kryptoanalýze už po čtyřech kolech z osmi. Willi Meier zkoumal tři algebraické operace použité v algoritmu. Ačkoli jsou nekompatibilní, existují případy, kdy mohou být zjednodušeny tak, že kryptoanalýza zabere pár procent původního času. Jeho útok je efektivnější než útok hrubou silou pouze pro dvoukolový algoritmus. Pro tři a více kol už je útok hrubou silou efektivnější. Osmi-kolový algoritmus je tedy bezpečný. John Daemen objevil třídu slabých klíčů. Tyto klíče nejsou slabé ve smyslu slabých klíčů pro DES. To, že jsou slabé znamená, že pokud jsou použity, útočník je dokáže rozpoznat pomocí útoku z vybraného textu. Takový slabý klíč je např.: 0000,0000,0z00,0000,0000,000£,£££2;,2;000 (hex) Na pozici, kde se vyskytuje x lze dosadit libovolné číslo. V každém případě šance na náhodné vygenerování nějakého takového klíče je velmi malá. Navíc je snadné modifikovat algoritmus tak, aby neměl žádné slabé klíče - použít operaci XOR na každý podklíč s hodnotou OrcODAE. Pracovní módy a varianty Zapojení dvou šifrovačů za sebe (double-IDEA) bude stejně jako double-DES náchylné na „meet-in the middle" útok. Ale, protože klíč algoritmu IDEA je více než dvakrát delší než klíč DES, je tento útok prakticky neproveditelný. Útočník by potřeboval paměť 1039 bytů. Pokud to stále někomu nestačí, lze použít tripple-IDEA: 186 Šifrový standard DES a jeho kolegove C = EK3(DK2(EKl(P))) Další možností je použít nezávislé podklíče. IDEA potřebuje 52 16-bitových klíčů, tedy celkem 832 bitů. Tato varianta je jistě bezpečnější, ale nikdo neví o kolik. Pokus o variaci algoritmu by mohlo být zdvojnásobení velikosti bloku. Algorimus by pracoval namísto s 16-bitovými podbloky s 32-bitovými podbloky a s 256-bitovým klíčem. Kódování by bylo rychlejší a bezpečnost by vzrostla 232-krát. Ale - bylo by to opravdu tak? Teorie v pozadí algoritmu se opírá o fakt, že 216+1 je prvočíslo. Ale 232+1 prvočíslo není. Algoritmus by se snad dal modifikovat tak, aby fungoval, ale měl by velmi odlišné vlastnosti z hlediska bezpečnosti. Lai tvrdí, že by bylo obtížné přinutit takovýto algoritmus pracovat. I když vypadá IDEA mnohem bezpečnější než DES, není vždy snadné v už existujících aplikacích DES nahradit. Pokud jsou databáze a formuláře navrženy pro 64-bitový klíč, je téměř nemožné předělat je na 128-bitový klíč. Toto je možno obejít zdvojením 64-bitového klíče - ovšem za cenu snížení bezpečnosti systému. Pokud někomu záleží více na rychlosti než na bezpečnosti, je možné snížit počet kol v algoritmu. V současné době je nejlepší útok rychlejší než útok hrubou silou pouze pro méně než 2,5 kolový algoritmus. 4-kolový algoritmus bude tedy dvakrát rychlejší a - podle dnešních znalostí - i stejně bezpečný. Bez záruky IDEA je relativně nový algoritmus a mnoho otázek o něm zůstává neodpově-zených. Je IDEA grupa? (Lai si myslí, že ne.) Existují nějaké dosud neobjevené cesty k rozbití tohoto algoritmu? IDEA má pevné teoretické základy, ale čas od času i bezpečně vypadající algoritmus může podlehnout nějaké nové formě kryp-toanalýzy. Různé akademické a vojenské skupiny se snažily kryptoanalyzovat IDEU. Zatím však bez úspěchu. 8.8 PGP - Pretty Good Privacy Úvod PGP je kryptografický aplikační software autora Philipa R. Zimmermanna. Využívá systém veřejného klíče RSA a algoritmus symetrického blokového šifrování IDEA. Má promyšlený systém správy klíčů a používá se především k autenti-zaci a šifrování zpráv pro elektronickou poštu. Přesto je PGP pouze samostatným prostředkem a není součástí žádného standartního maileru. PGP je v současnosti k dispozici prakticky na všech platformách od MS-DOS, OS/2, LINUX, SCO a mnoha dalších typech operačních systémů. Pro území Spojených států a Kanadu se používá pro komerční účely legální verze PGP pod názvem ViaCrypt PGP verze 2.7.1. Pro území mimo USA a Kanadu je pouze pro nekomerční využití 8.8 PGP - Pretty Good Privacy 187 dostupný balík PGP verze 2.6.2i z května roku 1995, který umožňuje maximální délku veřejného klíče až na 2048 bitů. Tato verze PGP je v současnosti snadno přístupná na mnoha známých ftp serverech v Evropě jako jsou třeba : ftp.funet.fi nebo ftp.sunet.se. Jak pracuje PGP PGP je hybridní šifrovací systém, který využívá princip šifrování RSA s veřejným klíčem. Každý uživatel si generuje jeden nebo více párů tajného a veřejného klíče, přičemž se veřejné klíče zveřejňují. Tyto seznamy veřejných klíčů se dají najít na mnoha serverech na Internetu. V případě,že hodláme poslat někomu zprávu šifrovanou pomocí PGP, postupujeme takto : 1. najdeme si veřejný klíč adresáta na Internetu, 2. PGP vygeneruje náhodný konvenční 128-bitový symetrický šifrovací klíč, 3. pomocí šifry RSA a veřejného klíče adresáta se tento nový 128-bitový klíč zašifruje do tvaru, který je pak zaslán v hlavičce zprávy 4. tělo zprávy je zašifrováno pomocí toho 128-bitového klíče prostřednictvím symetrické blokové šifry IDEA švýcarského typu, která je dosud považována dokonce za silnější prostředek než RSA (šifrování pomocí IDEI používáme proto, že je o hodně rychlejší), 5. nakonec se spojí obě části a zpráva se vyšle. Systém RSA tedy slouží pouze jako zabezpečení přenosu konvenčního klíče. Mimo jiné PGP také zprávu před zašifrováním komprimuje prostřednictvím kompresních podprogramů ZIP. PGP navíc umožňuje opatřit šifrovanou zprávu digitální signaturou, která pak dovolí příjemci ujistit se o integritě a autenticitě této zprávy. Pro digitální signaturu se používá volně dostupná funkce jednosměrného vzorkování zprávy MD5 (Message Digest Function). Ta vyprodukuje z původní zprávy kryptograficky silné 128 bitové číslo, které co nejlépe zaručuje integritu celé původní zprávy. Tento „MD5 kód" je posléze zašifrován tajným klíčem uživatele. Příjemce po dešifrování této signatury pomocí veřejného klíče odesílatele zjistí zda je zpráva originální. Systém správy klíčů Systém správy klíčů je důležitou součástí PGP. Jednotlivý pár tajného a veřejného klíče pro RSA se vytváří na základě dialogu s programem PGP. Programu můžeme říct jakou délku má mít klíč - od 512 bitů až do délky 2048 bitů včetně. Program se také táže na jakousi „frázi" hesla, která může být libovolně dlouhá a má být snadno zapamatovatelná. Tato fráze je velice důležitá, protože jsou 188 Šifrový standard DES a jeho kolegove podle ní tajná hesla šifrována pomocí konvenčního šifrovacího algoritmu IDEA. Při každém použití svého tajného klíče se pak program PGP na tuto frázi ptá. Je to jakási pojistka pro PGP. Program PGP nám tak vytvoří 2 soubory, ve kterých uchovává všechna hesla, která bychom mohli později potřebovat. Soubor 'pubring.pgp' obsahuje všechny veřejné klíče uživatele + veřejné klíče vybraných adresátů a tento soubor neustále roste. Druhý soubor 'secring.pgp' obsahuje tajné klíče uživatele, které jsou zakódovány pomocí fráze. Je třeba velice pečlivě chránit soubor tajných klíčů a také frázi hesla. Závěr Dá se předpokládat, že bezpečnost PGP je pro nejbližší dobu zajištěna velmi dobře. Nabourat PGP lze snad jen tak, že se podaří rozluštit konvenční symetrickou šifru IDEA, nebo faktorizovat šifrovací modul šifry RSA. IDEA používá 128-bitový klíč a zatím nebyly publikovány žádné zásadní slabiny. Jelikož lze zvolit délku klíčů pro RSA až do 2048 bitů, lze předpokládat i zde, že PGP obstojí. Kapitola 9 Náhodné šifrování Se zavedením náhodných nebo pravděpodobnostních kryptografických technik bylo umožněno navržení vhodné definice matematické bezpečnosti kryptografického systému a dokázání toho, že jisté kryptosystémy jsou bezpečné podle těchto definic (za vhodných předpokladů z teorie složitosti). Tyto pravděpodobnostní kryptosystémy používají jednosměrné funkce a funkce s vlastností padacích dveří v daleko komplexnější míře než tomu bylo u deterministických šifrovacích systémů. Ačkoliv použití pravděpodobnostních technik nebylo v kryptografii nic nového, novinkou byla dokazatelná úroveň bezpečnosti. Dokazujeme-li, že kryptografický systém je bezpečný, je důležité opatrně specifikovat, které způsoby útoku může nepřítel Mr. X podniknout. Např. systém může být bezpečný proti slabému útoku (pasivní odposlech), ale není už bezpečný proti silnějšímu útoku (aktivní odposlech a manipulace s komunikační linkou). Nejjednodušší formou útoku je, že pasivní nepřítel pouze sleduje legitimní uživatele kryptografického systému. Může znát pouze kryptogramy nebo nějaké dvojice otevřeného a mu odpovídajícího šifrového textu (a known-plaintext at-tack). V případě použití veřejného klíče pak může generovat polynomiální počet dvojic otevřeného a mu odpovídajícího šifrového textu. Potencionálně nebezpečnější útok, který je považován za realistický v praktickém použití, je útok nepřítele, který je legitimním oprávněným uživatelem systému. Nepřítel pak může podniknout všechny akce dovolené legitimnímu uživateli předtím, než se pokusí dešifrovat šifrový text zaslaný mezi dvojicí uživatelů. Můžeme obecně předpokládat, že nepřítel může manipulovat komunikačním kanálem mezi každou dvojicí legitimních uživatelů a dokonce může používat jejich kryptografické zařízení (ale nemůže získat jejich klíče). Např. pomocí tzv. chosen-ciphertext attack může nepřítel získat otevřený text pro kryptogram dle svého výběru. Nepřítelův „úspěch" by měl být definován co možná nejvelkomyslněji - totiž důkaz bezpečnosti systému by měl zamezit i tu nejslabší formu nepřítelova úspěchu. Skromný cíl nutný pro tvorbu kryptosystému je, že většinu zpráv nemůže 190 Náhodné šifrování nepřítel odvodit jenom z kryptogramu. To je však až příliš skromný cíl, protože neřeší následující problémy: • kryptosystém není bezpečný pro jistá pravděpodobnostní rozložení prostoru zpráv (např. prostor zpráv sestává pouze z polynomiálního počtu zpráv, které nepřítel zná), • parciální informace o zprávách lze snadno spočítat z kryptogramu, • lze snadno určit jednoduché, ale užitečné fakty o transmisi zprávy (např. když je jedna a tatáž zpráva odeslána vícekrát). 9.1 Náhodnost v šifrovacím procesu V tomto odstavci se budeme věnovat použití náhodnosti v šifrovacím procesu. Prvním diskutovaným pojmem je nalezení šifrovacích schémat, která jsou sémanticky bezpečná. To jsou taková schémata, která zajišťují bezpečnost všech částečných informací o přenášených zprávách (uveďme např. Goldwasserův a Mi-caliův kryptosystém). Toto je pak těsně spjato k nevyřešeným problémům nalezení „kryptograficky bezpečných" pseudonáhodných čísel. To jsou posloupnosti, v kterých nemůže nepřítel Mr. X v reálném čase předpovědět s úspěchem větším než je průměrný úspěch, s jakým bude vysláno další číslo. Totéž schéma znáhodnění šifrovacího procesu spočívá na praktickém řešení fundamentálního problému vyřešeného A.D. Wynerem, když v roce 1975 spojil teorii informace, kódování a pseudonáhodná čísla ve své práci o tzv. Wynerově odposlouchávacím kanálu. Homofonická substituce Nejjednodušší náhodné šifrovací schéma je tzv. homofonická substituční šifra. Zpráva M je řetězec z abecedy Ei. M je zašifrována do náhodného šifrového textu C nad abecedou E2, kde |Ei| < |E2|. Má-li abeceda Ei t symbolů, lze E2 rozložit na disjunktní neprázdné podmnožiny Ai, (1 < i < t) tak, že symbol s j je náhodně zašifrován do prvku z podmnožiny Aj. Klíč K systému je uspořádaný rozklad (A\,... ,At). Cesta, pomocí které náhodnost zvýší úroveň bezpečnosti, je jasná. Zvětšení počtu klíčů nám zvýší úroveň dvoj smyslnosti textu. Platba za náhodné šifrování spočívá v tom, že pro každý klíč každá zpráva odpovídá několika šifrovým textům, tj. množina kryptogramu bude větší než množina zpráv. Abychom toto vyrovnali, musíme mít zajištěno jisté rozšíření v komunikačním kanálu, protože je potřeba více informace na určení kryptogramu než na určení otevřeného textu. Mluvíme pak o pásové expanzi. Tento postup se nutně objeví v každém náhodném šifrovacím schématu. 9.2 Sémantická bezpečnost a Goldwasser-Micaliho schéma 191 Tato myšlenka není vůbec nová. Např. Gauss se domníval, že objevil nenapadnutelnou šifru zavedením homofonů. Dalším příkladem homofonní šifry byla Jefferson-Bazierova kolová šifra a její variace používané ve Spojených státech v obou světových válkách. 9.2 Sémantická bezpečnost a Goldwasser-Micaliho schéma Šifrovací schémata, která zajišťují bezpečnost všech částečných informací o zprávách, jsou zřejmě důležité cíle kryptografického zkoumání. Takováto schémata se nazývají sémanticky bezpečná. Problémem sémantické bezpečnosti jsme se v předchozím nezabývali. Např., ta bezpečnost, o které jsme předtím mluvili, nám nezajistila, že některé z bitů zakódovaných RSA-algoritmem nebo DES-algoritmem jsou snadněji určitelné než jiné. Pokusíme se neformálně popsat řešení takovýchto problémů. Příklad. Uvažme systém s veřejným klíčem založený na faktorizaci přirozeného čísla N, které je součinem dvou prvočísel p a q. Obecný problém určení p a q z N je velmi obtížný, ale pokud poslední číslice N je 3, snadno získáme částečnou informaci, že poslední číslice p a q jsou bud 1 a 3 nebo 7 a 9. Zvláštní případ sémantické bezpečnosti je bitová bezpečnost, která zajišťuje, že nejenom celou zprávu nelze dešifrovat, ale že nelze získat i jednotlivé bity. Poprvé se tímto problémem do hloubky zabývali Goldwasser a Micali v roce 1982. Ti pak navrhli nové sémanticky bezpečné schéma založené na náhodném šifrování. Toto schéma je rozšíření myšlenky veřejného klíče, ale zabývá se zakódováním zprávy bit po bitu. Aktuální zašifrování jednoho bitu závisí na zprávě a na výsledku posloupnosti vrhů mincí. Je pak zcela bezpečné vzhledem k pojmům bitové a sémantické bezpečnosti (za předpokladu že číselně-teoretický problém) rozhodnutí, zda číslo je kvadratický zbytek, je „těžký". Popišme nyní aktuální šifrovací proceduru. Uvažme zprávu M jako posloupnost bitů MiM2 ... Mn a zašifrováním každého bitu jako řetězce. Předpokládejme, že A si přeje odeslat zprávu M příjemci B. Nejprve si B vybere svůj veřejný/soukromý klíč pomocí následujícího postupu. 1. Náhodně vybere dvě k-bitová prvočísla p a q a nechť N = p- q. Faktorizace {p, q) čísla N bude soukromý klíč příjemce. 2. Vybere náhodně takové číslo y z čísel nesoudělných s číslem N tak, že y je kvadratický nezbytek vzhledem k N. 3. Zveřejní jako svůj veřejný klíč uspořádanou dvojici (N,y). 192 Náhodné šifrování Odesílatel A zakóduje svoji zprávu M = MXM2... Mn podle následujícího algoritmu. Šifrovací algoritmus Pro každý bit Mj A vybere náhodně číslo x z množiny čísel N* = {z : 1 < z < N, (N, z) = 1}. Mi pak zakóduje jako „im\ - S yx2 modN pokud Mť = l, e{Mi) ~\x2 modN pokud Mi = 0. {* 1 Kryptogram C má pak tvar C = e(M1)e(M2)...e(M„). (9.2) Protože N je 2&-bitové přirozené číslo, je jasné, že kryptogram je mnohonásobně delší než M. Pro okamžik předpokládejme, že šifrovací proces a vytvoření registru veřejných klíčů lze provést v polynomiálním čase (ve skutečnosti v čase 0(nk2)). Věnujme se nyní dešifrovacímu procesu prováděném příjemcem B. Dešifrovací algoritmus Označme přirozená čísla e(Mj) jako e*, 1 < i < n. Pak procedura pro dešifrování je snadná: je-li e* kvadratický zbytek modulo N, je Mj = 0, není-li kvadratický zbytek modulo N, je Mj = 1. Dodatečná (trapdoor) informace příjemce B je, že, protože zná faktorizaci M na prvočísla p a q, je schopen velice rychle rozhodnout z Eulerova kritéria, zda je či není eá kvadratický zbytek modulo p a q. Protože to nastává právě tehdy, když ej je kvadratický zbytek modulo N, jsme hotovi. Příklad. Uvažme Goldwasser-Micaliho systém s s bezpečnostním parametrem k. Pak šifrovací algoritmus e zašle bit Mj = 1 do jednoho z čísel yxl,yxl,...,yxl{N) (modAO, kde X\, x2, ■ ■ ■, ^(jv) (mod N) leží v Af* a (N, y) je příjemcův veřejný klíč. Šifrovací algoritmus e zašle bit M j = 0 do jednoho z čísel xl,xl,...,xl(N) (modAT). Aby bylo šifrování bezpečné, musí být N dostatečně velké, aby bylo prakticky nemožné rozhodnout, zda se jedná o kvadratický zbytek či ne. Protože to závisí na faktorizaci N, musí mít N alespoň 200 číslic. Tedy jedná se o velmi neefektivní algoritmus a míra komunikace drasticky klesá. 9.2 Sémantická bezpečnost a Goldwasser-Micaliho schéma 193 Popišme nyní typ nepřítele, se kterým jsme připraveni se utkat. Předpokládejme, že máme co činit s pasivním odposlouchávačem přenosové linky, který zná prostor zpráv, pravděpodobnostní rozdělení zpráv a šifrovací algoritmus. Nechť zná dále kryptogram a pokouší se z něho získat zprávu. Pokud dovolíme nepříteli neohraničenou dobu a výpočetní kapacity, bude schopen rozluštit zprávu použitím úplného prohledávání. Co ale skutečně chceme, je situace, ve které nepřítel nemůže spoléhat na to, že rozšifruje kryptogram v rozumné době. Pokud budeme uvažovat Goldwasser-Micaliho schéma, poznamenejme následující: (a) Každý bit je zašifrován jako přirozené číslo modulo N a tedy je transformován do 2&-bitového řetězce. (b) Šifrovací funkce e je náhodná v tom smyslu, že tentýž bit může být transformován do různých řetězců v závislosti na výběru náhodné proměnné x. Proto mluvíme o pravděpodobnostním šifrování. Bezpečnost systému závisí na předpokládané nemožnosti rozhodnutí nepřítelem, zda se jedná o kvadratický zbytek modulo N a toto pak závisí na délce N, tj. na 2k. Lze tedy považovat k za bezpečnostní parametr našeho šifrovacího systému. Jakmile budeme považovat k za náš parametr, ptáme se nyní, zda nikdo omezený časem ohraničeným polynomem v k nemůže prolomit šifrovací systém. Gol-dwasser a Micali dokázali, že jejich systém má tuto vlastnost v extrémně silném smyslu. Předpokládejme, že si můžeme představit nepřítel Mr. X jako prodavače zařízení na prolomení kódů. Aby byl schopen demonstrovat svoje zboží, spustí svůj polynomiálně omezený přístroj T na odposlech linky. Pak použije hledač zpráv F s výpočetními zdroji omezenými polynomem v k, aby prohledal prostor zpráv Mi a M2 tak, že zašifrování M\ a M2 jsou rozlišitelná přístrojem T. Řekneme, že systém je polynomiálně bezpečný, jestliže polynomiálně omezený hledač zpráv F nemůže najít dvě zprávy M\ a M2, které jsou rozlišitelné polynomiálně omezeným přístrojem T na odposlech linky. To znamená, že je-li dáno C (kryptogram vzniklý bud z Mx nebo z M2), T by neměl získat žádnou výhodu v porozumění toho, která ze dvou zpráv M\ a M2 byla zašifrována do kryptogramu C. Goldwasserovi a Micalimu se podařilo dokázat o svém šifrovacím schématu, že je sémanticky bezpečné proti každé pohrůžce polynomiálně omezeného útočníka za předpokladu, že problém kvadratického zbytku je obtížný v následujícím smyslu. Pro kladné přirozené číslo k je množina obtížných složených přirozených čísel definována jako Hk = {N : N = p ■ q, kde p a q jsou A;—bitová prvočísla}. 194 Náhodné šifrování Předpoklad, že problém kvadratického zbytku je nezvládnutelný Bud P a Q pevné polynomy. Pro každé přirozené číslo k, bud C k booleovský obvod se dvěma 2k—bitovými vstupy a jedním booleovským výstupem s následujícími vlastnostmi: (a) Je-li dán vstup (n, x), pak Ck správně rozhodne pro alespoň čísel n z Hk, zdaje či není x kvadratický zbytek modulo n pro každé přirozené číslo x menší a nesoudělné s n; (b) Ck má ze všech takovýchto booleovských obvodů splňujících (a) minimální počet vnitřních vrcholů (bran). Pak, pro dostatečně veliké k, je počet vnitřních vrcholů obvodu Ck alespoň Q(k). Na základě výsledků získaných Goldwasserem a Micalim vyvstává přirozená otázka: jak bezpečné jsou bity podstatně praktičtějších šifrovacích schémat jako jsou RSA a Rabínova schémata s veřejným klíčem? Goldwasser, Micali a Tong dokázali, že specifické bity jak RSA tak Rabínova schématu byly bezpečné v tom smyslu, že nalezení nejmenšího signifikantního bitu otevřeného textu je ekvivalentní narušení celého RSA systému. Tento výsledek byl zesílen Ben-Orem, Chorem a Shamirem v roce 1983, kde dokázali, že každá metoda, která určí nejméně podstatný bit musí bud mít pravděpodobnost chyby \ — e nebo musí být schopná prolomit zcela RSA-algoritmus. Alexi, Chor, Goldreich a Schnorr v roce 1984 ukázali, že získání jakékoliv výhody ve zjištění nejméně podstatného bitu je ekvivalentní rozluštění celé zprávy. Goldwasser-Micaliho schéma lze přirozeným způsobem zobecnit. Poznamenejme, že predikátem s vlastností padacích dveří je booleovská funkce B : {0,1}* —>■ {0,1} taková, že je snadné v očekávaném polynomiálním čase za vstup délky k a výstup v vybrat náhodně x tak, že B(x) = v a \x\ < k; a žádný nepřítel pracující v polynomiálním čase nemůže, pro náhodně vybrané x E X tak, že \x\ < k, nemůže spočítat B(x) s pravděpodobností větší než \ + ^, pro všechna c > 0 a pro dostatečně velké k; je-li však známa informace o padacích dveřích, lze snadno spočítat B (x). Bud dále B predikát s vlastností padacích dveří a k bud bezpečnostní parametr systému. Veřejný klíč uživatele A obsahuje popis B a jeho tajný klíč obsahuje informaci o padacích dveřích. Nyní může uživatel B odeslat uživateli A soukromou zprávu M = mim2 ... nik (to je M v binární notaci) následovně: pro i = l,...,k B 1. náhodně vybere binární řetězec x i délky nejvýše k tak, že B(xí) = m^; 2. odešle x i k A. 9.3 Kryptograficky bezpečná pseudonáhodná čísla 195 Pro dešifrování zprávy pak uživatel A, který zná informaci o padacích dveřích, vypočte B(xi) = pro všechna i = 1,..., k. Platí pak následující věta. Věta 9.2.1 Goldwasser-Micali Existuje-li predikát s vlastností padacích dveří, je výše uvedené pravděpodobnostní šifrovací schéma s veřejným klíěem bezpečné v polynomiální době. 9.3 Kryptograficky bezpečná pseudonáhodná čísla Problém nalezení „nepředpověditelných" pseudonáhodných čísel je těsně svázán s náhodným zašifrováním. Je-li dána metoda pro generování takovýchto posloupností, lze ji užít jako zdroj přibližného one-time pad systému, který je bezpečný, zatímco lineární posouvací registry bezpečné nejsou. Bezpečné pravděpodobnostní šifrovací schéma založené na myšlenkách Gol-dwassera a Micaliho, ale podstatně efektivněji implementovatelné, je schéma Bluma a Goldwassera (1985). Základní idea schématu je zašifrování zprávy tím, že ji sečteme modulo 2 s nepředpověditelnou pseudonáhodnou posloupností. Předpokládejme, že A a B si přejí tajně komunikovat a proto sdílí společný generátor náhodných čísel a společnou tajnou informaci s. Aby mohl odeslat A blok otevřeného textu M\M2... k uživateli B, odesílatel A použije s pro vygenerování posloupnosti pseudonáhodných čísel X\,X2,..., a vyvoří kryptogram C = dC2 ..., kde d = Mí + Xí (mod2). (9.3) Nebezpečí pro tento systém spočívá v tom, že nepřítel může mít nějako dodatečnou informaci, která mu umožní najít některé ÁV Na základě těchto znalostí by pak mohl být schopný vygenerovat zbytek posloupnosti a tedy prolomit kryptogram. Příklad 9.3.1 Jedna z nej populárnějších a nej rychlejších metod získání pseudonáhodných posloupností je použití metody lineárních kongruenčních generátorů. Ty sestávají z modulu N, násobku a nesoudělným s N a přírůstku c. Začneme z náhodné tajné informace X\. Posloupnost (Xn : 1 < n < oo) je určena vztahem Xn+l = aXn + c (mod N). (9.4) Jsou tedy všechna Xi přirozená čísla mezi 0 & N—l. Lze dokázat, že vytvořené posloupnosti splňují mnoho různých testů náhodnosti pro vhodný výběr parametrů a, c a N. Proto je tato lineární kongruenční metoda široce používána. Tato metoda není však kryptogragraficky bezpečná. Ze znalosti všech bitů několika po sobě jdoucích Xk lze odvodit parametry a, c a N. Lze dokonce dokázat, 196 Náhodné šifrování že zbytek posloupnosti je téměř všude předpověditelný v polynomiálním čase za předpokladu, že jsou dány alespoň | vedoucích bitů prvních málo čísel. Neformální popis kryptograficky bezpečného generátoru náhodných čísel (RNG) je následující. Začneme s tajnou informací s s n pravdivými náhodnými bity. Generátor pak s musí použít, aby vytvořil v čase polynomiálním v n, posloupnost bitů X\,X2,..., Xnk s vlastností, že pro daný generátor a prvních t bitů Xi, ale bez možnosti tajné informace s, je výpočetně nemožné předpovědět Xt+± s pravděpodobností větší než \. O takovémto generátoru řekneme, že prošel testem následujícího bitu. Blum a Micali vytvořili první metodu pro tvorbu dokazatelně bezpečných generátorů pseudonáhodných bitových posloupností založenou na použití jednocest-ných predikátů. Nechť tedy D značí konečnou množinu, / : D —>■ D je permutace na D a nechť B je funkce z D do {0,1} taková, že • je-li dáno x = f-1 {y), lze snadno vypočíst B(y), • je-li dáno pouze y, lze B(y) obtížně vypočítat. Je-li dána tajná informace xo E D, můžeme vytvořit posloupnost xo, x\,..., xn použitím rekurentního předpisu Xi+\ = f(xi). Abychom vytvořili binární posloupnost bo,..., bn-i délky n, definujme bi = B(xn-i). Uvědomme si obrácené uspořádání vzhledem k posloupnosti xo, X\,..., xn; musíme nejprve vypočíst všechna xo, x\,..., xn a teprve pak spočítat bo z xn, ..., bn-\ z x\. Ukažme, že tento generátor splňuje test následujícího bitu. Předpokládejme opak. Pak získáme spor tím, že ukážeme, jak lze spočítat B(y) z y. Protože / je permutace, existuje x0 tak, že y = v posloupnosti generované z x0. Pro dané y = xn-i-\ můžeme spočítat xn-i,xn-i+\, ..., xn pomocí / a pak vypočteme bo, ■ ■ ■ ,h z y. Můžeme-li pak určit efektivně bi+\ = B(xn-i-i) = B(y), získáme spor s tím, že je obtížné spočítat B(y) pouze z y. V roce 1982, Blum a Micali navrhli generátor splňující test následujícího bitu za předpokladu, že problém vypočtení diskrétního algoritmu je „obtížný" v tom smyslu, že jakmile budou vstupy dostatečně velké, každá efektivní procedura pro výpočet diskrétního logaritmu by nefungovala alespoň pro jistou pevnou část vstupů. Definujme B(x) = BgiP(x) = 1, pokud loggx modp < ^řp a B (x) = Bg,p(x) = 0 jinak, kde p je prvočíslo, g je generátor multiplikativní grupy Z* a x E Z*. Dále klademe f(x) = fg,p{x) = gx modp. Je-li výpočet diskrétního logaritmu skutečně obtížný, budou vytvořené posloupnosti nepředpovídatelné. Ačkoliv je Blum-Micaliho generátor mezník v historii problému, nelze jej snadno používat či popsat a navíc byl předstihnut jinými praktičtějšími a efektivnějšími systémy. L. Blum, M. Blum and Shub (1983) navrhli tzv. x2 modA" generátor, který lze jednodušeji implementovat a lze dokázat, že je bezpečný vzhledem k testu následujícího bitu za předpokladu, že problém kvadratického zbytku je obtížný. 9.3 Kryptograficky bezpečná pseudonáhodná čísla 197 Tento generátor funguje stejně jako obecná Blum-Micaliho metoda s volbou f (x) = x2 modiV a B (x) = 1, pokud je x liché, a B (x) = 0 jinak. Přitom počáteční tajná informace x0 je kvadratický zbytek modulo N, N je obvykle součin dvou prvočísel stejné délky, přičemž každé z těchto prvočísel je kongruentní se 3 modulo 4. Alexi, Chor, Goldreich a Schnorr (1984) dokázali, že předpoklad, že problém kvadratického zbytku těžký lze nahradit předpokladem, že faktorizování je těžké. Zaveďme nyní pojem statistického testu v polynomiálním čase. Bud G generátor pseudonáhodných čísel, který roztáhne A;—bitovou vstupní tajnou informaci do p(k)—bitové posloupnosti, kde p je nějaký pevný polynom. Bud dále Sk množina všech p(k)—bitových posloupností vytvořených generátorem G z A;—bitových vstupních tajných informací. Statistický test v polynomiálním čase je náhodný algoritmus A který se, pro daný vstupní řetězec délky n, zastaví v polynomiálním čase v n a dá na výstup 0 nebo 1. Generátor G projde testem A, jestliže, pro každé přirozené číslo t a všechna dostatečně velká k, máme \PÍ - pk\ < p (9-5) kde Pf! je pravděpodobnost, že algoritmus A dá na výstup 1 pro náhodně vybraný řetězec z Sk a PkR je pravděpodobnost, že algoritmus A dá na výstup 1 pro skutečně náhodně vybraný řetězec téže délky. Řekneme, že generátor G je kryptograficky bezpečný, jestliže projde všemi statistickými testy v polynomiálním čase. Jinak řečeno, generátor pseudonáhodných čísel je kryptograficky bezpečný, jestliže neexistuje žádný efektivní algoritmus, který je schopen v polynomiálním čase oddělit výstup generátoru G od výstupu vytvořeném opravdu náhodnou posloupností. Hlavní výsledek získaný Yaem (1982) je následující. Přeformulujme definici testu následujícího bitu. Rozumíme jím náhodný polynomiální algoritmus T, který se vstupy k a prvními i bity řetězce s náhodně vybraného z Sk nám dá na výstup bit b. Bud psk pravděpodobnost, že bit b je roven (i + 1)—nímu bitu s. Řekneme, že generátor G projde testem následujícího bitu T, jestliže pro každé i > 0 a dostatečně velká k platí Věta 9.3.2 Generátor G projde všemi statistickými testy v polynomiálním čase tehdy a jen tehdy, když projde všemi testy následujícího bitu v polynomiálním čase. Zůstává otázka existence takovýchto kryptograficky bezpečných generátorů. Doposud však závisí na předpokladu obtížnosti nějakého problému z teorie čísel. 198 Náhodné šifrování 9.4 Wynerův kanál Kódování a kryptografie Uvažme následující kryptosystém (K,M,C,T), kde o prostor klíčů K se bude skládat ze všech matic G typu k x n tak, že f 1 0 ... ... 0 0 glik+1 ...... gx,n \ 0 1 ... ... 0 0 g2,k+i ...... 92,n G 0 0... ... 10 gk-i,k+i ...... 9k-i, V 0 0 ■ ■ ■ ■ ■ ■ 01 ...... 9k spolu s kontrolní maticí H typu k x n tak, že G ■ HT = 0 a / h1A ...... hlik 1 0 ......0 0 \ h2,i ...... h2,k 0 1 ......0 0 H hk-i,i ...... hk-ijt 0 0 ... ... 1 0 V hk,i ...... hkj, 0 0 ... ... 0 1 o prostor zpráv M = {so,..., sk} je totožný s množinou syndromů, o prostor C zašifrovaných textů je množina všech n-tic Vn, o zobrazení T : K x M —>■ C je definované následovně: T(G, sa) = c = (ci,..., cn), kde c je libovolný vektor z příslušné třídy rozkladu, tj. množiny {v : v-HT = s}. Adresát obdrží nezkreslenou informaci, protože jejich spojení je bez šumu. Pomocí vektoru c vypočítá syndromový vektor sa = c • HT. Funkce T nabývá svých hodnot náhodně. Proto se v tomto případě mluví o nedeterministickém resp. náhodném šifrovacím systému. Přesněji řečeno, náhodný šifrovací systém Yl je podmnožina kartézského součinu M x K x C tak, že pro každý klíč K E K a každý zašifrovaný text C E C existuje nejvíc jedna zpráva M g M tak, že (M, K, C) E Tí- Zároveň pro každé M g M a každé K E K existuje aspoň jeden kryptogram C E C tak, že (M,K,C) EU- Zejména platí následující tvrzení Tvrzení 9.4.1 V syndromovém krypto systému je přenosový poměr R < 9.4 Wynerův kanál 199 Proof. Předpokládejme kvůli jednoduchosti, že prostor zpráv M obsahuje 2m prvků. To znamená, že nejúspornější rovnoměrný kód bude používat m—tice u = (u\,..., um). Pokud použijeme (n, /)-grupový lineární kód, tj. jeho příslušná matice G je typu l x n a jeho kontrolní matice H je typu (n — ľ) x n, pak syndro-mový vektor s = v • HT bude typu 1 x (n — /) = 1 x m. Proto přenosový poměr bude „ n — l m m m R =-= - =-- <--. n n m +1 m +1 Při rostoucím / bude limR = 0. V případě, že počet zpráv nebude mocninou čísla 2, použije ohraničení 2m < \M\ < 2m+1 a postup důkazu zopakujeme. Podívejme se nyní na naši situaci z pohledu nepřítele. Počet tříd rozkladu s rostoucím l bude menší a výrazně bude narůstat počet možných slov, která můžeme vyslat pro jedno konkrétní zdrojové slovo tj. v každé třídě rozkladu bude 2l vektorů. Navíc vlivem poruch v binárním symetrickém kanále bude vektor z, který zachytí nepřítel různý od kryptogramu, který obdrží povolaný příjemce. Nepřítel tedy bude neustále maten. Za to ale zaplatíme rychlostí přenosu, neboť na přenos m-bitové zprávy budeme muset vyslat n = m + /-bitovou šifru. Připomeňme si v dalším zhruba obsah fundamentální práce A.D. Wynera, ve kterém jsou spojeny problémy kryptografie, kódování a teorie informace do opravdu atraktivního a praktického tvaru. Zdroj S vysílá informaci konstantní rychlostí a tato se přenáší pokud možno bez chyby k příjemci, zatímco nechává odposlouchávače bez povšimnutí. Nejprve předpokládejme speciální situaci, kdy hlavní kanál je binární kanál bez paměti a bez šumu a odposlouchávací kanál je binární symetrický kanál s pravděpodobností chyby p < 1. První řešení tohoto problému je velmi jednoduché: Šifrovací algoritmus Zašifrujte 0 jakožto náhodný binární řetězec délky N obsahující sudý počet jedniček. Zašifrujte 1 jakožto náhodný binární řetězec délky N obsahující lichý počet jedniček. Je jasné, že dešifrovací proces je snadný, příjemce musí pouze zjistit paritu každého bloku délky N. Přitom nejsou žádné požadavky na paměť či CPU jednotku. Případný odposlouchávač bude však více než zmaten. Totiž, připomeňme, že p < 1 je pravděpodobnost toho, že je špatně přenesen přes odposlouchávací kanál. Pak pravděpodobnost Pc správně obdrženého symbolu odposlouchávačem je určena vztahem 200 Náhodné šifrování Pc = Pfnastane právě sudý počet chyb v N symbolech] N)q»-V + --- (9 = 1-P) (9-7) (q - p)N] = I[l + (1 - 2p)N]. Zejména tedy Pc — \ Pro velká N. Evidentně pak při přenosu binární zprávy zachytí odposlouchávač text téměř zcela plný poruch a šumů. Za toto pak ale platíme velkou cenu - totiž přenosový poměr, což je počet bitů původního textu, které přeneseme jedním bitem šifry, se nám redukoval na číslo jj. Předpokládejme místo toho, že jsme rozdělili proudový zdroj do bloků S délky A; a že použijeme kód na opravování chyb, abychom zakódovali každý takovýto blok n-bitovým vektorem X tak, že přenosová rychlost R kódu je |. Je-li Z n-bitová posloupnost zachycená odposlouchávačem, označíme odposlouchávačovu ekvivokaci ií(X|Z) a tedy , g(X|Z) a~ k je odposlouchávačova ekvivokace na 1 bit vysílané zprávy neboli míra dvoj smyslnosti připadající na jeden bit vysílané zprávy. Z teorie informace víme, že iř(X|Z) = H(S\Z) < H(S) < k a tedy d < 1. Speciálně, pokud odposlouchávač pozná klíč, pomocí něhož se vysílá, tj. hodnotami náhodného vektoru Z je jednoznačně určena hodnota náhodného vektoru S, pak je H(S\Z) = 0 a d = 0. Naopak, pokud odposlouchávač nepostřehne žádnou závislost mezi S a Z, tj. zprávy S a Z jsou nezávislé, je pak d = —jjr^ Jsou-li navíc všechny vysílané zprávy stejně pravděpodobné, tj. P(S = (s\,... ,Sk)) = 2~k pro každou zprávu (si,..., Sk), je H(S) = k, d = 1. Cílem je navrhnout takový šifrovací systém, který by měl maximální míru dvoj smyslnosti tj. zajistit věci tak, aby odposlouchávač nezískal žádné množství informací. Evidentně, parametry Rad působí proti sobě tj. pokud R roste, d klesá a obráceně. Wyner dokázal analogie Shannonovy věty o kódování se šumem. Řekneme, že dvojice (R, d) je dosáhnutelná, jestliže, pro všechna e > 0, existuje kódovací a dekódovací algoritmus s parametry n a k tak, že ->R-e, H(X\Z)>^^, Pe 0 a H(S\C) = 0, je H(S\Z) < H (Z\C) =n-h{p). (9.12) Zejména tedy pro příslušnou míru dvoj smyslnosti obdržíme k-d< n-h(p) tj. R-d 0 definujme p(R) jakožto množinu těch rozdělení p pravděpodobnosti na vstupním vektoru X hlavního kanálu tak, že J(X|Y) > R. Bud C m bud kapacita hlavního kanálu a nechť r(Ä)=supp€p(Ä)[J(X|Y)-J(X|Z)]. Pak platí Věta 9.4.4 Množina TV všech dosažitelných dvojic (R, d) je určena vztahem TV = {{R, d) : 0 < R < CM, 0 < d < 1, R ■ d < T(R)}. 9.5 Pravděpodobnostní podpisovací schémata Pravděpodobnostní techniky byly rovněž aplikovány na vytvoření digitálních podpisů. Tento přístup byl započat Goldwasserem, Micalim a A.C. Yaoem (1984), kteří představili podpisovací schéma založené na obtížnosti faktorizace a na obtížnosti invertibility RSA funkce, což jsou dokazatelně obtížné problémy pro útok s použitím známého podpisu a to pro nepřítele, který uspěje s paděláním podpisu jedné zprávy, ale ne dle jeho výběru. Goldwasser, Micali a Rivest zesílili tento výsledek navržením podpisovacího schénatu, které je nenapadnutelné výše uvedeným způsobem. Toto schéma je založeno na obtížnosti faktorizování (daleko obecněji na existenci tzv. permutací s vlastností padacích dveří - tj. takové dvojice permutací /o,/i majících společný definiční obor, pro který je obtížné najít x,y tak, že f0(x) = fi(y)). Popišme jejich schéma. Bud (/o,/i) a (