Vysoké učení technické v Brně Fakulta informačních technologií Kryptologie a informační bezpečnost Lecture notes (preliminary draft) Brno 2005 Dan Cvrček
Kryptologie a informační bezpečnost Dan Cvrček 2005 Základ následujícího textu byl vytvořen jako studijní materiál pro kurs Kryptografie a informační zabezpečenost. Původní text byl rozšířen, protože v českém jazyce neexistuje vhodný text, který by pokrýval všechny aktuální oblasti informační bezpečnosti. c Dan Cvrček, 2005 Text je chráněn autorským zákonem a bez svolení autora jej nelze kopírovat,... Sic vám ruka upadne. i
Kryptologie a informační bezpečnost Dan Cvrček Abstrakt tak ten doplním, až budu mít po kupě celý text... iii
Acknowledgements Poslední velký text, který jsem napsal jsem částečně věnoval Stopařovi průvodci skvělé trilogii v pěti dílech od Douglese Adamse. Tentokrát bych ho chtěl věnovat i... v
vi OBSAH Obsah 1 Úvod 1 1.1 Počátky kryptografie........................... 2 1.2 William Friedman............................ 2 1.2.1 Riverbank publication No. 22 Kappa and Chi tests (1920). 2 1.3 Druhá světová válka........................... 3 1.4 Lucifer/DES............................... 5 1.5 Kryptologie v Informační bezpečnost.................. 5 1.5.1 Kryptologie............................ 5 1.5.2 Informační bezpečnost...................... 5 1.6 Protokoly................................. 6 1.7 Digitální podpis.............................. 6 1.8 Soukromí................................. 6 1.9 Další literatura.............................. 7 I Kryptologie 9 2 Základy kryptologie 11 2.1 O čem vlastně je kryptografie...................... 11 2.2 Bezpečnostní vlastnosti cíle...................... 11 2.3 Symetrická kryptografie......................... 11 2.4 Kryptografie s veřejným klíčem..................... 12 2.5 Symetrická v asymetrická kryptografie................. 12 2.5.1 key distribution.......................... 12 2.5.2 computational complexity.................... 12 2.5.3 key revocation.......................... 12
OBSAH 2.6 Kryptografie v protokolech....................... 12 2.7 Teorie pravděpodobnosti......................... 12 2.8 Teorie informace entropie....................... 13 2.9 Složitost.................................. 13 2.9.1 Asymptotická složitost...................... 13 2.9.2 Třídy složitosti.......................... 14 2.10 Faktorizace celých čísel.......................... 14 2.11 Klasická kryptografie........................... 15 2.12 Moderní kryptografie........................... 15 2.12.1 One-time pad........................... 15 2.12.2 Generátory náhodných čísel RNG.............. 15 2.13 Kryptografické útoky........................... 16 3 Stavební bloky kryptografie 17 3.1 Základní bloky.............................. 17 3.1.1 Jednosměrné funkce....................... 17 3.1.2 Hard-core predikáty....................... 17 3.2 Hašovací funkce.............................. 18 3.2.1 SHA-1............................... 18 3.3 Autentizační kódy zpráv MAC.................... 19 3.3.1 PMAC/OMAC.......................... 19 3.3.2 HMAC.............................. 20 3.4 Generátory pseudonáhodných čísel PRNG.............. 20 3.4.1 ANSI X9.17 PRNG....................... 21 3.4.2 DSA PRNG NIST....................... 22 3.4.3 RSAREF PRNG......................... 22 3.4.4 Cryptlib PRNG.......................... 23 3.5 Blokové šifry............................... 23 3.5.1 Módy blokových šifer....................... 23 3.6 Proudové šifry.............................. 26 4 Kryptoanalýza 27 4.1 Virtuální (ne)privátní sít........................ 27 4.1.1 Autentizace MS-CHAP..................... 28 vii
viii OBSAH 4.1.2 Kryptoanalýza MS-CHAP.................... 29 4.1.3 MPPE point-to-point encryption................ 31 4.1.4 Síla a útoky na MPPE protokol................. 31 4.2 Zarovnání zpráv pro CBC mod CBC Padding............ 32 4.2.1 Složitost útoku.......................... 33 4.2.2 Příklad útoku RFC2040.................... 33 4.3 Enigma zpátky do historie....................... 35 4.3.1 Jak se Enigma používá..................... 36 II Bezpečnost 39 5 Ověřování identity 41 5.1 Autentizace zpráv............................ 41 5.1.1 Digitální podpis......................... 43 5.1.2 Autentizace dat.......................... 43 5.2 Autentizační protokoly.......................... 44 5.2.1 Heslo............................... 45 5.2.2 Výzva-odpověd.......................... 46 5.2.3 Příklady algoritmů........................ 46 5.2.4 Kerberos............................. 48 5.2.5 Diffie-Hellman.......................... 48 5.3 Správa klíčů................................ 48 6 Autentizace uživatelů 49 6.1 Používání hesel.............................. 49 6.1.1 Zvýšení složitosti hesel...................... 50 6.1.2 Osobní identifikační čísla PIN................. 51 6.1.3 Několik závěrů k heslům a PINům............... 51 6.2 Autentizační tokeny........................... 52 6.2.1 Karty............................... 53 6.2.2 Autentizační kalkulátory..................... 53 6.3 Tří faktorová autentizace........................ 55 6.4 Biometrická autentizace......................... 55 6.4.1 Komerční vs. forenzní biometrie................ 58
OBSAH 6.4.2 Biometrie a kryptografie..................... 58 7 Bezpečnost WiFi 59 7.1 Bezpečnostní mechanismy WLAN................... 59 7.2 Jak funguje WEP............................. 60 7.3 Útoky na WEP.............................. 61 7.4 Autentizace 802.1x............................ 61 7.5 Plánování útoku............................. 62 7.6 Zvýšení bezpečnosti........................... 63 III Praktický podpis 65 8 Digitální podpis 67 8.1 Elektronický a digitální podpis..................... 68 8.2 Infrastruktury veřejných klíčů PKI.................. 69 8.2.1 Standardy............................. 69 8.2.2 Vývoj systému.......................... 70 8.2.3 Struktura PKI.......................... 71 8.2.4 Platnost certifikátů........................ 75 8.2.5 Problémy X.509......................... 75 8.2.6 Případové studie......................... 77 8.2.7 Soukromý klíč.......................... 78 8.2.8 Where to go............................ 79 9 Zákon o elektronickém podpisu 81 9.1 Zákon o elektronickém podpisu..................... 82 9.2 Bezpečný podpis............................. 85 9.3 Novela ZEPu............................... 86 9.4 Vyhláška k ZEPu............................. 87 IV Soukromí 89 10 Soukromí a reputace 91 11 Anonymitní systémy 92 ix
x OBSAH 11.1 Anonymitní systémy........................... 93 11.1.1 Útočník.............................. 94 11.2 Mix základní blok........................... 95 11.3 Datagram vs Spojení........................... 96 11.4 Útoky na anonymizační systémy.................... 97 11.4.1 Útok na datagramový systém.................. 97 11.4.2 Útok na toky dat......................... 99 V Implementace Kryptografie 101 12 Správa klíčů 103 13 Bezpečná zařízení 104 13.1 Metody hackování bezpečného hardwaru................ 107 13.1.1 Lokální neinvazivní útoky.................... 107 13.1.2 Lokální semiinvazivní útoky................... 107 13.1.3 Lokální invazivní útoky..................... 108 13.1.4 Vzdálené útoky bezpečnostní API.............. 108 13.2 Útoky na HSM.............................. 109 13.2.1 Útoky s nulovým klíčem (XOR to Null Key)......... 109 13.2.2 Útok na import klíčové části.................. 109 13.3 Generování a verifikace PINů...................... 111 13.3.1 Funkce pro verifikaci PINu................... 111 13.3.2 Útoky s decimalizační tabulkou................. 112 13.3.3 Útoky na formáty otevřených PIN bloků CPB....... 114 14 Útoky postranními kanály 117
Kapitola 1 Úvod je 7. prosince 1941 1:28AM je zachycena 9 minutová rádiová zpráva na trace Tokyo-Washington. 1:37AM zaměstnanec ve službě na odposlouchávací stanici začíná přepisovat zprávu na dálnopisném přístroji k odeslání do Washingtonu. místnost 1649, ministerstvo námořnictva, Washington, oddělení OP-20-GY bílá, žlutá a růžová kopie jsou přijaty dálnopisem a rozděleny podle používaného klíče. použitá šifra je rozpoznána jako PURPLE, jedná se o nejkvalitnější japonskou šifru, která byla ale oddělením OP-20-G zlomena a byly vytvořeny kopie šifrovacích rotorových strojů. Francis M. Brotherhood nastavil přepínače na dešifrovacím stroji podle klíče pro den 7. prosinec. Během několika minut obdrží otevřený text. Zpráva je přirozeně v japonštině, takže je přenesena do oddělení OP-20-O, kde právě slouží noční směnu překladatel je 5 AM. Text přeložené zprávy zní Velvyslanec laskavě předloží...naši odpověd...v 1:00 PM. Ta zmiňovaná odpověd byla z Japonska zaslána již dříve...japonská vláda je nucena s lítostí tímto oznámit americké vládě, že vzhledem k postoji americké vlády nemůže jinak, než považovat za nemožné dosáhnout dohody dalším vyjednáváním. Je 7AM a je neděle, za čtyři hodiny je zpráva doručena velícím důstojníkům. Toho dne je přepaden Pearl-Harbor. Tento příběh dokumentuje jednu z nejvíce citovaných epizod druhé světové války. Důvodů pro to je hned několik spojené státy byly naprosto překvapeny útokem za strany Japonska a hledali proto příčiny. V 1
2 Kapitola 1. Úvod rámci tohoto snažení byla mimo jiné objevena i skutečnost, že informace o ukončení mírových jednání ze strany Japonska byla odpovědným osobám známa ještě před oficiálním doručením depeše. Tento příběh také ukazuje na jeden z největších úspěchů US zlomení šifry PUR- PLE a vytvoření kopie stroje, která umožňovala rychlé dešifrování zpráv. Podobně jako v případě Anglie, která zlomila šifry ENIGMA a později Lorenz neměl nepřítel tušení o faktu, že šifra už nezaručuje bezpečnost přenášených dat. I když se bavíme o tom, že spojencí byli úspěšní proti státům Osy, tak podobná situace byla i v opačném směru... 1.1 Počátky kryptografie krypto a steganografie Historie - Egypt, Indie, Rome Moderní kryptografie spojena se dvěma jmény: Herbert Osborn Yardley and William F. Friedman a dvacátými lety minulého století. Další významnou postavou je Claude Shannon a hlavně jeho článek o přenosu dat přes kanál se šumem. Otevřený výzkum byl otevřen nezamýšleným publikováním standardu DES. 1.2 William Friedman Na počátku dvacátých let pracoval v Geneva poblíž Chicago. Plukovník George Fabyan zde měl laboratoře pro výzkum v oblasti biologie, chemie a akustiky. Mimo jiné také věřil, že Shakespeare byl pseudonym pro Bacona. Proto financoval kryptoanalytický výzkum, nebo přesněji srovnávací analýzu textů obou autorů Friedman původně studoval genetiku (pochází z Kishinev, Ukrajina). Později se oženil s Elizabeth Smith, se kterou během několika málo let posunul cryptology o desítky let kupředu. V roce 1921 se rozešel s Fabyanem a vstoupil do Signal Corps, kde se stal v roce 1929 šéfem MI8. Byl hlavní postavou za úspěchy US kryptologie během druhé světové války. 1.2.1 Riverbank publication No. 22 Kappa and Chi tests (1920) Relativní frekvence nalezení stejného písmene na stejné pozici ve dvou nezávislých textech (the character coincidence) index shody (coincidence index) IC.
Kappa(T,T ) = 1.3. Druhá světová válka 3 M δ(t µ,t µ) µ=1 M δ(x,y) = 1 if x = y a δ(x,y) = 0 jinak Chi značí skalární součin (cross-product sum Solomon Kullback, 1935). V následující rovnici je m i absolutní frekvence výskytu znaku i v textu M. Chi(T,T ) = ( i=1 m im i ) M 2 Kappa-Chi teorem pak zní: M 1 1 Kappa(T (ρ),t ) = Chi(T,T ) M ρ=0 Příklad výpočtu: Indeedthereexistsaparticularinvariantofatextundermono Astonishinglygivenamonoalphabeticallyencryptedcryptot + + alphabeticencryptionwhichisdiscussedinthefollowingand extitiseasiertosaywhetheritisinenglishfrenchorgermant + + ++ arelatedinvariantofapairoftextswhichiseveninvariantun hantodecryptitthisisalsotrueforplaintextthereisarelia + + derapolyalphabeticencryptionofbothtexts blemethodtotestasufficientlylongtextfor + M=206, delta=9 kappa=4.4 1.3 Druhá světová válka Druhá světová válka byla obrovským utrpením pro celou zemi. Díky tomu, že nepřátelské strany bojovali o své přežití, tak byly schopné investovat všechny své prostředky do rozvoje těch oblastí, které slibovali přinést výhodu ve válečném střetnutí. Díky tomu došlo k mohutnému rozvoji technických oborů a kryptologie nebyla
4 Kapitola 1. Úvod výjimkou. Zvláštní význam měla tato doba pro kryptoanalýzu vždy je jednodušší upřít síly k něčemu co přinese konrétní výsledek (zlomení šifry), než k něčemu, co je neviditelné (udržení tajemství). Díky tomu přinesla druhá světová válka velké množství příkladů úspěšné kryptoanalýzy a je dodnes zdrojem poučení. Ne, že bychom dnes byli schopni dělat opravdu skvělou kryptoanalýzu, ale díky následkům, které v té době zlomení šifry mělo. Množina šifer se stupňovanou složitostí kryptoanalýzu začneme od nejjednošší a koncepční vlastnosti návrhu použijeme při kryptoanalýze stále složitějších variant. Kódové knihy díky neexistenci počítačů bylo třeba kódová slova řadit podle abecedy. Vedlejšími efekty bylo, že slova, která byla blízko sebe v abecedě měla podobné kódy a podle odhadu celkové velikosti a určitého kódového čísla můžeme odhadnou první písmena daného slova. Polní šifry vyžadovaly určitou netriviální zručnost. Pokud tyto požadavky byly příliš vysoké, tak vedli k ignorování šifer vůbec velitelé je vůbec nepoužívali, nebo při jejich používání dělali chyby. Chyby pak vytvářejí nepravidelnosti, které mohou mít dva efekty. Bud zvyšují nároky na kryptoanalýzu, nebo (a to platí pro většinu případů) je možné je použít k získání informací, ke kterým by se útočník jinak nedostal. Používání šifer, jejichž bezpečnost byla založena na utajení jejich mechanismu nemají šanci na dlouhodobý úspěch při větším nasazení. Dříve nebo později dojde k prozrazení mechanismu a to vede ke kolapsu celého systému. Proto dnes kryptologie stojí na Kerckhoffově principu, kdy je šifra bezpečná tak dlouho, dokud je v bezpečí klíč. Státní organizace mohou používat princip utajení, ale je to jen další vrstva ochrany přidaná ke kvalitní šifře. Pro bezpečnost kryptografického schématu je zásadní způsob jeho používání. ENIGMA byla velmi silnou šifrou. Měla svoje slabá místa, ale bez chyb v jejím používání by nebylo možné získat dostatek informací pro úspěšnou kryptoanalýzu nejsilnějších verzí. ENIGMA byl systém vyvíjený od konce dvacátých let a byl postupně zesilován. V této době se podařilo vytvořit kopie šifrovacích strojů a systém šifrování byl korektně pochopen. Anglická kryptoanalýza byla později postavena na vlastnosti, kdy určité písmeno nemohlo být nikdy zašifrováno samo na sebe. Bylo používáno hledání částí vět cribs které určitě byly součástí zprávy a po nalezení správné pozice (žádné písmeno se nesmělo shodovat s příslušným písmenem v šifrovém textu) se hledal klíč. Podrobnosti je možné najít na www.bletchleypark.gov.uk.
1.4 Lucifer/DES 1.4. Lucifer/DES 5 IBM vytvořila návrh šifry, kterou poté NSA upravila. Standardem se výsledná šifra stala v roce 1976. Jaka standard fungova DES až do roku 2001. Šifra se stala absolutním průlomem v kryptologii. Díky špatné dohodě mezi NSA a NIST nebyla šifra použita jen pro hardwarovou implementaci (schovaná v bezpečném pouzdru), ale publikována s úplným popisem jako otevřený standard. Společně s asymetrickou kryptografií to byl hlavní impuls pro rozvoj kryptologie v otevřeném prostředí a literatuře.... 1.5 Kryptologie v Informační bezpečnost 1.5.1 Kryptologie language theory number theory algebra theory of groups combinatorial logic complexity theory ergodic theory group statistical properties theory of information... 1.5.2 Informační bezpečnost communication protocols software engineering programming languages data formats operating systems random numbers
6 Kapitola 1. Úvod distributed systems computer architectures... See things differently from designers 1.6 Protokoly Hlavními dvěma cíli jsou authentication secure data exchange Na protokoly existuje velké množství různých útoků přehrání (replay), odraz (reflection), muž uprostřed (man-in-the-middle), vkládání chyb (fault-injection). Ukázka Needham-Schroeder protokol s veřejným klíčem A B: A, B, (N A, A)PK B B A: B, A, (N A, N B )PK A A B: A, B, (N B )PK B Autentizační protokoly jsou založeny na třech implicitních sdílených tajemstvtích. Podle toho, co musí splnit uživatele rozdělujeme tajemství na: what you know what you have what you are 1.7 Digitální podpis problem areas cryptographic protocols engineering procedural/administrative archiving Does asymmetric cryptography really helps? 1.8 Soukromí big brother v citizens
1.9 Další literatura 1.9. Další literatura 7 Bohužel, v českém jazyce neexistuje kvalitní učební text. Pro ty, kteří mají o bezpečnost a kryptografii zájem tak doporučuji následující knihy, které jsou zhruba seřazeny od praktičtějších k nejteoretičtějším. R. Anderson. Security Engineering: A Guide to Building Dependable Distributed Systems. Wiley Computer Publishing, 2001. B. Schneier. Beyond Fear: Thinking Sensibly About Security in an Uncertain World. Springer-Verlag New York Inc., 2003. B. Schneier. Secrets and Lies: Digital Security in a Networked World. Hungry Minds Inc, 2004. H. X. Mel. Cryptography Decrypted. Addison Wesley, 2001. B. Schneier. Applied Cryptography: Protocols, Algorithms and Source Code in C. John Wiley & Sons, 1995. A. J. Menezes, P. van Oorschot, S. A. Vanston. Handbook of Applied Cryptography. CRC Press, 1996. Nebo http://www.cacr.math.uwaterloo.ca/hac/ D. Kahn. The Codebreakers: The Comprehensive History of Secret Communication from Ancient Times to the Internet. Simon & Schuster, 1996. F. L. Bauer. Decrypted Secrets: Methods and Maxims of Cryptology. Springer- Verlag Berlin and Heidelberg, 2002. O. Goldreich. Foundations of Cryptography: Basic Tools Vol 1. Cambridge University Press, 2001. O. Goldreich. Foundations of Cryptography: Basic Applications Vol 2. Cambridge University Press, 2004.
Část I Kryptologie 9
Kapitola 2 Základy kryptologie 2.1 O čem vlastně je kryptografie we will have parties A (Alice), and B (Bob) cryptography enables two parties to securely communicate protocol distributed algorithm goals v threats, we need to think about Eve security as strong as the weakest link 2.2 Bezpečnostní vlastnosti cíle confidentiality Eve shouldn t find out the content integrity Eve shouldn t be able to change the content authentication Eve shouldn t be able to masquerade as Alice non-repudiation one can prove all Alice/Bob has done Q: what is the difference between authentication and non-repudiation 2.3 Symetrická kryptografie Alice and Bob share a key Eve doesn t know key a random string of k bits how many bits is enough? number of people 5 10 9 mass of the earth 5.98 10 27 grams visible space 1.7 10 77 hydrogen atoms 11
12 Kapitola 2. Základy kryptologie currently, 128 bits of randomness is assumed secure 2.4 Kryptografie s veřejným klíčem Alice and Bob each generate public and secret key only public keys are exchanged Eve may know them key size 1024-2048 bits problem is to link keys to users one still has to ensure integrity how much easier is it compared to confidentiality? 2.5 Symetrická v asymetrická kryptografie 2.5.1 key distribution 2.5.2 computational complexity 2.5.3 key revocation 2.6 Kryptografie v protokolech A B B A A B : A, B, (N A,A)PK B : B, A, (N A,N B )PK A : A, B, (N B )PK B attack goes as follows: A I: A, I, (N A,A)PK I I(A) B: A, B, (N A,A)PK B B I(A): B, A, (N A,N B )PK A I A: I, A, (N A,N B )PK A A I: A, I, (N B )PK I I(A) B: A, B, (N B )PK B 2.7 Teorie pravděpodobnosti... Jedním z nejčastěji používaných faktů je řešení tzv. narozeninového problému. Čistá definice je následující. Mějme urnu s m kuličkami, které jsou očíslované 1 až m. Nyní budeme postupně tahat celkem n kuliček s návratem (taženou kuličku vracíme zpátky do urny. Jaká je
2.8. Teorie informace entropie 13 pravděpodobnost alespoň jedné shody kulička se stejným číslem je tažena alespoň dvakrát? Nejdříve definujeme funkci P(m,n): P(m,n) = 1 m! n! mn. Nyní, jestliže n = m, pak pro m platí, že P(m,n) 1 exp( n2 2m ) také platí, že P(m,n) = 1 exp( m 2m ) = ((πm)/2) = 1.25 m 2.8 Teorie informace entropie Řekněme, že X = x 1,x 2,...,x n je náhodná proměnná, pro kterou dále platí, že P(X = x i ) = p i a Σ i p i = 1. Entropy je definována jako H(X) = Σp i lg p i = Σp i lg(1/p i ). Používaná konvence pro hraniční hodnoty je, že p i lg(1/p i ) = 0 právě když platí, že p i = 0. Některé základní vlastnosti: H(X) 0,lg n H(X) = 0 právě když existuje p i : p i = 1 H(X) = lg n právě když i : p i = 1/n 2.9 Složitost Algoritmus je dobře definovaná výpočetní procedura (postup). Algoritmus má vstupní proměnné a vždy se v konečném čase zastaví a vrátí výstupní hodnoty. Velikost dat, tj. vstupu a výstupu algoritmu je minimální počet bitů potřebný pro reprezentaci hodnot příslušných dat. Z hlediska složitosti nás zajímá složitost časová a prostorová. V obou případech je možné spočítat: nejhorší případ a průměrnou hodnotu. Aby bylo možné abstraktně uvažovat o složitosti definujeme asymptotické ohraničení. Tj. hranice pro nekonečné množství hodnot, nebo nekonečnou velikost dat. 2.9.1 Asymptotická složitost asymptotic upper bound f(n) = O(g(n)) if there exists a positive constant c and integer n 0 such that 0 f(n) cg(n), for all n n 0
14 Kapitola 2. Základy kryptologie asymptotic lower bound f(n) = Ω(g(n))...0 cg(n) f(n), for all n n 0 asymptotic tight bound f(n) = Θ(g(n)) constants c 1,c 2,...c 1 g(n) f(n) c 2 g(n), for all n n 0 o-notation f(n) = o(g(n)) if for any positive constant c...0 f(n) < cg(n), for all n n 0 2.9.2 Třídy složitosti Druhou oblastí, kde nás zajímá definice složitosti je definice složitosti problémů, což je abstraktnější pojem, než u algoritmů. V tomto případě nás zajímá jen několik základních množin složitosti. Hranicí je pro nás algoritmus s polynomiálním časem O(n k ), kde k je konstanta nezávislá na n, což je velikost vstupních dat. Algoritmus, který není možné ohraničit pomocí funkce O(n k ) nazýváme algoritmem s exponenciálním časem. Pozn: říkali jsme, že hranice pro odhad složitosti jsou asymptotické, která z následujících složitostí (O(n ln nln n ) a O(n 100 )) je lepší pro rozumně malé hodnoty vstupních dat? Základní třídy složitosti jsou: complexity class P - polynomial time complexity complexity class NP - polynomial time complexity, given a certificate complete NP problems - e.g. subset sum problem Zcela samostatnou kapitolou, která už je mimo rámec tohoto dokumentu jsou randomizované problémy. 2.10 Faktorizace celých čísel Libovolné celé číslo n je možné rozepsat na součin prvočísel n = p e 1 1 pe 2 2...pe k k, kde p i jsou prvočísla. V současné době je hledání součinu prvočísel povážováno ze složitý problém, tedy problém třídy N P. Specifickou podtřídou problému je RSA problém. RSA problém je definován jako hledání rozkladu pro n = p.q, kde p a q jsou prvočísla. Šifra postavená na obtížnosti tohoto problému je následující. Mějme n = p.q, dále pak e takové, že gcd(e,(p 1)(q 1)) = 1. Zlomení šifry znamená, že pro celé číslo c najdeme m takové, že m e c(modn).
2.11 Klasická kryptografie 2.11. Klasická kryptografie 15 crypto-world.info CryptoWorld 9-12/04, nebo ročník 2000 substituce šifry, které zaměňují znaky za jiné podle definovaných abeced. Bud máme jen jednu abecedu (monoalfabetické), nebo více abeced, které střídáme (polyalfabetické). Příklad monoalfabetické šifry je Caesarova šifra, pro polyalfabetické jsou to Vigenere a Beaufort. permutace prohazování znaků, jejich pozic. Šifrový text obsahuje stejné znaky jako otevřený text, ale jsou promíchané. 2.12 Moderní kryptografie používání počítačů obrovský nárust počtu operací, které jsme schopni provádět při šifrování. šifry stále používají dva původní principy. Substituce je realizována pomocí S- boxů, permutace jsou pak pevně definované v návrhu šifry. Kerckhoffův princip kryptosystém by měl být bezoečný i v případě, kdy všechno ohledně konstrukce a fungování systémů je veřejně známé kromě klíče. security through obscurity... 2.12.1 One-time pad Šifra s bezpečnostní dokázanou na úrovni teorie informace. Alice a Bob se předem dohodnou na dlouhé náhodné sekvenci a. Šifrování probíhá tak, že každá zpráva je xorována s ještě nikdy nepoužitou částí sekvencea. Důkaz o bezpečnosti šifry je založen na následujících předpokladech: a a ani žádná její část není nikdy použita dvakrát a je opravdu náhodná toto bylo porušeno během WWII, kdy náhodné sekvence generovaly sekretářky na psacích strojích. Ty přirozeně používaly některá písmena častěji a současně vytvářely sekvence, které se často opakovaly. Porušení prvního principu umožňuje získat částečnou znalost o otevřených textech M 1 a M 2, a to M 1 M 2. Vzhledem k tomu, že přirozený jazyk obsahuje velkou redundanci, tak tato částečná znalost umožňuje rekonstruovat oba původní texty. 2.12.2 Generátory náhodných čísel RNG Vždy potřebujeme nějaké náhodné bity, čísla, nebo sekvence.
16 Kapitola 2. Základy kryptologie Generování náhodných čísel je možné dělat hardwarově za použití fyzikálních zdrojů náhodnosti, nebo programově pomocí nějakého deterministického algoritmu. Generátory pseudonáhodných čísel (pseudorandom number generators PRNG). Základní pravidlo pro rozeznání náhodné sekvence je: Libovolná konečná sekvence je náhodná, jestliže neexistuje žádná kratší sekvence, která by ji plně popisovala v nějakém jednoznačném matematickém zápisu. I pro RNG je možné provádět analýzu bezpečnosti jejich návrhu, kdy hodnotíme vlastnosti PRNG návrhu a jeho principy fungování. Druhou možností testování kvality generátorů, tentokrát TRNG je statistické testování výsledných náhodných sekvencí. Jestliže máme k dispozici kvalitní RNG, který je pouze vychýlen tak, že generuje větší množství nul, než jedniček, tak můžeme použít jednu z několika metod. Von Neumann metoda xor 2.13 Kryptografické útoky Kryptografické útoky a kryptoanalýzu budeme podrobněji probírat později. V této chvíli si pouze definujeme třídy možných útoků. pasivní např. pro schémata veřejné kryptografie, kdy útočník zná veřejný klíč key-oblivious (nezávislé na klíči) - výběr čistého textu pro útok je nezávislý na známém veřejném klíči key-dependent (závislé na klíči) aktivní útočník se v tomto případě stává aktivním účastníkem protokolu/schématu volený otevřený text (chosen plaintext) volený šifrový text (chosen ciphertext) je třeba dalšího přístupu k věštírně
Kapitola 3 Stavební bloky kryptografie Všechny postupy v kryptografii, všechny algoritmy je možné vytvořit z několika málo základních funkcí. Tyto funkce velmi pěkně definoval Oded Goldreich ve své knize Foundations of Cryptography. Dva základní stavební bloky jsou jednosměrné funkce a hard-core predikáty. Tyto dva základní bloky umožňují vytvořit všechny další typy funkcí, které běžně používáme - blokové šifry, proudové šifry, algoritmy s veřejným klíčem,.... 3.1 Základní bloky Pokusme si nejdřív říci něco o dvou již zmíněných primitivách na kterých stojí celá moderní kryptografie. 3.1.1 Jednosměrné funkce Základem současné kryptografie je rozdíl výpočetní obtížností mezi efektivními algoritmy, které může používat vlastník určitého tajemství a náročností stejných algoritmů pro útočníka, který potřebné tajemství nezná. Např. u šifrovacích funkcí je třeba, aby oprávněný příjemce mohl zprávu rychle odšifrovat, ale útočník toto nesmí být schopen efektivně udělat bez znalosti klíče. Jednosměrná funkce je zvláštně konstruovaná funkce kterou je, velmi volně řečeno, snadné vypočítat, ale velmi obtížné invertovat. Obtížným invertování máme na mysli situaci, kdy je třeba zkoušet všechny možné vstupy, abychom nalezli ten, který dává konkrétní výstupní hodnotu. 3.1.2 Hard-core predikáty Je možné vytvořit z jednosměrných funkcí... 17
18 Kapitola 3. Stavební bloky kryptografie 3.2 Hašovací funkce Přehled základních množin funkcí, které používáme pro kryptografii začneme hašovacími funkcemi. Hašovací funkce jsou již funkce, které jsou přímo používány v aplikacích, které obsahují nějaké kryptografické funkce. V principu se jedná o jednosměrné funkce, které ovšem musí splňovat přesně definované podmínky. Základní hašovací funkce mapují řetězce o libovolné délce na řetězce o konstantní délce. Příkladem mohou být kontrolní součty, např. CRC. Kryptografické hašovací funkce (označme je na následujících řádcích f(.)) musejí navíc splňovat následující čtyři podmínky: 1. je to jednosměrná funkce 2. je obtížné najít dva vstupy, které se mapují na stejnou výstupní hodnotu 3. jestliže máme danou výstupní hodnotu y, tak je obtížné najít vzor x, pro který platí, že y = f(x) 4. jestliže máme určitý vzor x 1, je obtížné najít jiný vzor x 2, pro který by platilo, že f(x 1 ) = f(x 2 ). V současné době existuje řada kryptografických hašovacích funkcí, ale je pravdou, že ty nejčastěji používané procházejí krizí zapříčiněnou vynikajícími kryptografickými výsledky v posledních dvou letech. Z nejběžněji používaných funkcí je tou nejstarší MD5, která má výstup dlouhý 128 bitů. Díky narozeninovému paradoxu je tedy efektivní bezpečnost hašovací funkce 64 bitů, což je pro běžné aplikace stále dostačující. Druhou funkcí je SHA-1, která má výstup dlouhý 160 bitů. Tato funkce má ovšem další varianty SHA-256, SHA-384 a SHA-512, kde číslo označuje délku výstupu. Jako další můžeme jmenovat RIPEMD, což je hašovací funkce pocházející z Evropy. 3.2.1 SHA-1 Funkce SHA-1 je je definována standardem!!!!!!! na základě původní definice SHA, ve které byly nalezeny bezpečnostní problémy. Následující obrázek znázorňuje vnitřní strukturu funkce SHA-1, abychom demonstrovali jak taková funkce může vnitřně vypadat. Jak jsem se už zmínili, tak výstup SHA=1 tvoří 160 bitová čísla. Jakýkoliv vstupní blok se tedy rozdělí na částí po 20 bajtech. Pro vnitřní zpracování je těchto 20 bajtů rozděleno na pět 32 bitových slov, které se zpracovávají samostatně. Když se důkladně podíváme na obrázek, tak se slovem se provádí bud jednoduchá rotace, nebo se xoruje s dalšími bloky a konstantami, nebo se aplikuje jednoduchá nelineární funkce D, která se neustále mění. Ačkoliv je operace XOR rozklreslena ve štyřech
3.3. Autentizační kódy zpráv MAC 19 blocích, tak je možné ji nakreslit jako jeden XOR se čtyřmi vstupy. Velmi podstatnou částí každého kola je posun mezi slovy. Slovo A se po skončení stane slovem B, B se stane slovem C, atd.!!!!!!!!sha 1!!!!!!!!!!!!! Zpracování každých 160 bitů vstupu se skládá z celkem osmdesáti opakování bloku z obr.!!!!. Pro závěrečnou ilustraci se podívejme, jak bude vypadat výstup SHA-1 pro dvě věty, které se liší jen v jednom písmenku: SHA1( The quick brown fox jumps over the lazy dog ) = 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12 SHA1( The quick brown fox jumps over the lazy cog ) = de9f2c7fd25e1b3afad3e85a0bd17d9b100db4b3 3.3 Autentizační kódy zpráv MAC MAX (message authentication code) je velmi krátká zpráva (o velikosti výstupu hašovací funkce, který umožňuje autentizovat obsah určité zprávy. Obvykle je základem výpočtu hašovací funkce, která se aplikuje několikrát a vstupem je kromě samotné zprávy ještě určité tajemství. Toto tajemství zaručuje, ze MAC nemůže spočítat nikdo jiný, než ten kdo zná toto tajemství tajemství/ heslo je obvykle nějak spojeno se zprávou. Alternativně může být MAC založen na blokové šifře, V tomto případě máme dvě možnosti jak použít hsslo bud bude použito jako klíč, kterým se zpráva šifruje, nebo je opět nějakým způsobem zkombinováno se zprávou a hodnota klíče je neměnná a je součástí specifikace daného algoritmu pro výpočet MAC. MAC je pro zprávy schopen zajistit dvě funkce. Jednak ho je možné použít k ověření autentičnosti zprávy a jednak umožňuje ověřit integritu přijaté zprávy tj. jestli nebyla od okamžiku vytvoření MAC nějak změněna. 3.3.1 PMAC/OMAC OMAC jsou funkce založené na blokové šifře, např. DES, nebo AES. Šifra je použita v módu CBC. Tento mód znemožňuje paralelní zpracování, takže jeden procesor musí zpracovat celou zprávu, abychom získali MAC hodnotu. Na rozdíl od tohoto, PMAC je paralelizovatelný MAC a schéma výpočtu je takové, že klíč generuje náhodnou sekvenci, která je xorována se zprávou. Jelikož xor je komutativní funkce, můžeme v tomto případě výpočet paralelizovat.
20 Kapitola 3. Stavební bloky kryptografie 3.3.2 HMAC Jedna z obvyklejších funkcí, která je definována v RFC 2104. Základní vzorec výpočtu je následující. HMAC K (m) = (K opad h((k ipad] m)) Na zpracování jednoho bloku je možné aplikovat několik iterací hašovací funkce. K diskusi, jestli je lepší používat blokové šifry, nebo hašovací funkce je vhodné uvést, že jsou znažně rychlejší oproti blokovým šifrám. U hašofacích funkcí se uvádí rychlost menší než 1 Pro blokové šifry se uvádí rdhlost 4 bity za sekundu. u hašovacích funkcí pak pouze 1 bit. 3.4 Generátory pseudonáhodných čísel PRNG Jakmile se rozhodneme začít používat kryptografii, tak nutně začneme potřebovat náhodná data a ne jakákoliv náhodná data, ale opravdu nepředvídatelná. V počítačích jsou obvykle implementovány velice jednoduché generátory náhodných dat tzv. generátory pseudonáhodných dat (PRNG). Přídavné jméno pseudonáhodný se používá proto, že tato data jsou generována pomocí nějaké funkce a nejsou tedy úplně náhodná. PRNG naprosto postačují pro běžné počítačové aplikace, i pro účely různých simulačních programů. V kryptografii bychom ovšem s těmito jednoduchými generátory příliš dlouho nevystačili, takže bylo postupně definováno několik kryptograficky bezpečných PRNG, z nichž některé si nyní popíšeme. Základní struktura PRNG je na obr.!!!!. Na vstupu je nepředvídatelný binární řetězec a po zpracování v PRNG, který kromě nějaké funkce (tato obsahuje alespoň jednu kryptografickou funkci) obsahuje i vnitřní stav, je vytvořena pseudonáhodná binární sekvence. Jak vidíte, tak bezpečnost PRNG je založena na třech předpokladech: nepředvídatelnost vstupu bezpečnosti (jednosměrnosti) vnitřní funkce PRNG důvěrnosti vnitřního stavu PRNG Kvalita PRNG je podle definice odvozena od obtížnosti odlišit výstup PRNG od náhodné sekvence útočník tedy ve chvíli útoku dostane k dispozici dva binární řetězce, z nichž jeden je výstupem PRNG a druhý je náhodná sekvence. Vzhledem k tomu, že bezpečnost PRNG je založena na výše uvedených třech bodech, tak útočník může zvolit jeden z následujících tří přístupů:
3.4. Generátory pseudonáhodných čísel PRNG 21 1. Přímy kryptoanalytický útok útočník analyzuje vnitřní funkci a přímým útokem na kryptografickou bezpečnost této funkce bude schopen rozlišit výstup PRNG od náhodné sekvence. 2. Útok založený na vstupu útočník bude kontrolovat vstup do PRNG a vhodnou manipulací dosáhne stavu, kdy je opět schopen rozlišit PRNG od náhodné sekvence. 3. Rozšíření kompromitace stavu v tomto případě se útočník bude snažit využít znalosti vnitřního stavu pro identifikaci výstupu PRNG. Výsledek útoku může být v několika podobách. Útočník může být schopen postupovat zpátky v čase a rozšiřovat znalost vnitřního stavu od určitého okamžiku zpátky. Může být schopen docílit trvalé kompromitace vnitřního stavu, kdy PRNG není schopen obnovit důvěrnost vnitřního stavu a útočník bude znát vnitřní stav neomezeně. Jestliže se podaří zjistit vnitřní stav ve dvou časových bodech, tak může postupovat od těchto bodů dovnitř intervalu a odhalit vnitřní stav po celou dobu mezi těmito dvěma okamžiky. Poslední možností je, že se útočník bude pokoušet o iterativní hádání a postupně zpřesňovat svoji znalost až do úplné kompromitace vnitřního stavu. 3.4.1 ANSI X9.17 PRNG Vnitřní funkce tohoto generátoru (jak je zobrazena na obr.!!!!) je založena na použití algoritmu 3DES (algoritmus DES, kdy jsou použity 3 klíče, prvním se blok dat zašifruje, druhým klíčem se odšifruje a třetím se opět zašifruje). Nepředvídatelný vstup se používá jako semínko (seed i ) a krom tohoto vstupu je dalším zdrojem náhodnosti aktuální časové razítko. Poslední výstup je xorován s T i zašifrovanou hodnotou časového razítka, toto je opět zašifrováno a výsledek je uložen jako aktuální semínko. Tj. semínko je bud vloženo zvenčí jako náhodná data, nebo je počítano z posledního výstupu a aktuálního času. Semínko je pak xorováno s hodnotou T i a výsledek je zašifrován. Tento PRNG tedy poskytuje 64 bitové bloky pseudonáhodných dat. Pokud je třeba získat větší množství dat, tak je třeba popsaný výpočet opakovat. Jak fungují na tento PRNG jednotlivé typy útoků? Útok rozšířením vnitřního stavu Jestliže se útočníkovi podaří zjistit hodnotu K klíče, který je používán ve funkci 3DES, tak se bezpečnost PRNG nikdy neobnoví. Backtracking Backtracking funguje, podobně jako posun dopředu za předpokladu znalosti klíče.
22 Kapitola 3. Stavební bloky kryptografie Meet-in-the-middle Předpokládejme, že známe seed i a seed i+8. Jestliže se pokusíme uhodnout čtveřice T i+1,..., T i+4 a T i+5,..., T i+8 a na jejich základě spočítat hodnoty vnitřního stavu seed i+4 vytvořením dvou množin potenciálních hodnot, tak pokud se nám to podaří, tak správná hodnota bude v obou množinách. Celkově tedy snižujeme entropii na polovinu. 3.4.2 DSA PRNG NIST Tento PRNG je značně rychlejší na výpočet oproti předchozímu X9.17. Ve struktuře funkce je pouze jeden výskyt hašovací funkce, která může být implementována bud pomocí SHA-1, nebo 3DESu. Zbytek funkce jsou v podstatě jen dva součty, které mají za úkol aktualizovat vnitřní stav X i a kombinovat vnitřní stav se náhodným vstupem W i, pokud existuje. Vzhledem k velmi jednoduché aritmetice uvnitř funkce je možné vhodně volit náhodný vstup a tím docílit opakování výstupu: W i = W i 1 output i1 1 Také je možné ze známých hodnot výstupu a vnitřních stavů dopočítávat předchozí výstupy: output i = X i+2 X i 2 output i Jestliže shrneme předchozí útoky, tak tento PRNG nelze určitě doporučit jako univerzální kryptografický generátor pseudonáhodných dat. 3.4.3 RSAREF PRNG RSAREF je (ale hlavně byla) velmi populární kryptografická knihovna. Jako první implementovala RSA a byla vytvořena firmou RSA. Knihovna jako taková byla relativně jednoduchá na používání, napsána v jazyce C a dodnes se celkem hodně používá. V rámci této knihovny byl implementován i generátor pseudonáhodných čísel. PRNG má vlastní vnitřní stav C i, který je upravován jednak po vstupu dalšího náhodného řetězce X i a také inkrementován s každým novým spuštěním generátoru. PRNG je postaven na funkci MD5, takže výstupem je vždy 128 bitů. Na tento PRNG je možné aplikovat útok se zvoleným vstupem, který umožňuje zkrátit cyklus, po kterém se výstup začne opakovat. Je možné relativně úspěšně
3.5. Blokové šifry 23 použít i útok s iterativním hádáním a backtracking. Podstatným pozorováním je, že vnitřní stav je ovlivňován způsobem, který zajišt uje komutivitu vstupu nezáleží, v jakém pořadí je vstup vkládán, výsledek bude vždy stejný. 3.4.4 Cryptlib PRNG TBD 3.5 Blokové šifry Blokové šifry, jak napovídá jejich název, šifrují text po menších blocích. Velikost těchto bloků se různí, ale typicky je 64, 80, 128 bitů. Šifrování probíhá tak, že se vezme příslušná část čistého textu, zašifruje se a výsledek se uloží do výstupního souboru. Jestliže bychom ale zpracovávali bloky samostatně, tak by útočník mohl zašifrované bloky vyměňovat, mazat, nebo nahrazovat jinými. Jestliže bychom např. zašifrovali příkaz k bankovnímu převodu, tak útočníky by mohl blok obsahující částku nahradit jiným blokem s jinou částkou. Je možné se proti tomuto bránit? Možné to je tím, že jednotlivé bloky k sobě logicky svážeme. K tomu slouží různé módy používání blokových šifer. 3.5.1 Módy blokových šifer Jestliže budou bloky textu zpracovávány nezávisle, tak útočník může volně manipulovat s bloky textu, jako se skládankou. Mód, který toto umožňuje se nazývá ECB (electronic code book). Tento mód je vhodné používat při šifrování krátkých zpráv, nebo jestliže bychom chtěli vytvořit obdobu kódové knihy. Asi nejznámějším módem, který už propojuje jednotlivé bloky je CBC (cipher block chaining) a další dva základní módy jsou OFB (output feedback) a CFB (cipher feedback). Každý mód má specifické vlastnosti, jiné slabiny, jiné přednosti a pro každou aplikaci je třeba uvážit, který mód by měl být použit. Pro popis šifrovacích módů budeme používat následující konvenci zápisu: c 0, c 1,..., c j,...značí bloky šifrového textu. x 1, x 2,..., x j,...označují bloky čistého textu. IV je inicializační vektor, I j je blok vstupující do šifry a O j je výstup šifry. E K je označení šifry s klíčem K a je operace xor. CBC Cipher block chaining Název tohoto módu je možné přeložit jako vázání šifrového bloku a nejkratší popis je pomocí následujících rovnic: c 0 = IV ; c j = E K (c j 1 x j )
24 Kapitola 3. Stavební bloky kryptografie První (nultý) blok šifrového textu je roven inicializačnímu vektoru. V reálných schématech se IV definuje jako konstanta už ve standardu, což umožňuje vynechat jeho přenos při komunikaci, ale také snižuje bezpečnost šifrovacího schématu. Každý další blok je zašifrován tak, že se nejdříve provede bitový xor předcházejícího šifrového bloku a bloku čistého textu. Výsledek této operace je pak zašifrován a výsledek je novým šifrovým blokem. Celá šifrová zpráva se změní, jestliže se změní inicializační vektor, nebo první blok čistého textu. Jestliže tedy standardem zafixujeme inicializační vektor, tak můžeme velmi snadno zjistit, jak moc se shodují začátky dvou otevřených textů pouze se znalostí jejich zašifrování. Pro správné dešifrování určitého bloku je třeba mít správný předcházející zašifrovaný blok. Chyba v jiných blocích nemá na správnost dešifrování vliv. Navíc, velikost chyby můžeme snadno odhadnout. Jestliže dojde při přenosu zprávy k jednobitové chybě v bloku c j, tak chyba při dešifrování bude následující: změní se polovina bitů v bloku x j (toto vyplývá z kryptoanalýzy, aby šifra byla kvalitní, je třeba aby změna jednoho bitu na vstupu způsobila změnu poloviny bitů na výstupu), dojde k jednobitové změně v bloku x j+1 a to přesně toho bitu, který byl změněn v c j. Podobné výsledky jsou i u ostatních módů. Zajímavé je, že tyto vlastnosti je možné použít k útoku. Obzvláště dobře při šifrování sít ových protokolů, kde je velké množství dat, jejichž změna ničemu nevadí. Můžeme tak např. cíleně změnit IP adresy, nebo různé příznaky, které ovlivňují způsob zpracování dat po jejich dešifrování. OFB Output feedback Tento mód může mít dvě verze. V první verzi, která je definována v normě ISO10116, je velikost výstupního bloku rovna velikosti bloku šifry. Druhá verze, jež byla specifikována ve FIPS81 umožňuje vytvářet z každého bloku právě r bitů, kde r je menší, nebo rovno velikosti bloku šifry. Následující rovnice jsou pro jednoduchost pro jen případ s maximální délkou výstupu. I 1 = IV, O j = E K (I j ), c j = x j O j, I i+1 = O i Když se podíváme na rovnice, tak zjistíme, že vstup pro šifrování vůbec nezáleží na čistém textu, ale pouze na inicializačním vektoru a klíči. Jinými slovy, šifra funguje jako generátor pseudonáhodného řetězce, který se xoruje s otevřeným textem.
3.5. Blokové šifry 25 A jak v tomto případě ovlivní chyba při přenosu šifrového textu otevřený text po dešifrování? Díky tomu, že generovaný proud se xoruje při dešifrování se šifrovaným textem, tak jednobitová chyba/změna šifrového textu zapříčiní změnu právě jednoho bitu v dešifrovaném textu. Jestliže dojde ke ztrátě bitů, nebo celých bloků, tak už není možné provést resynchronizaci a eliminovat tak chybu. CFB Cipher feedback Posledním ze čtyř základních módů je CFB zpětná vazba přes šifrový text. V tomto případě je vstupem šifry až výsledek operace xor na předchozí výstupní blok šifry s otevřeným textem (šifrový text) jak můžete vidět v následujících rovnicích. I 1 = IV, O j = E K (I j ), c j = x j O j, I j+1 = c j Tento mód je samosynchronizující podobně jako CBC. A jaký je vliv chyby v šifrovém textu na otevřený text po dešifrování? Změna jednoho bitu v bloku c j způsobí. změnu toho samého bitu v x j a změmu poloviny bitů v x j+1. V tomto, stejně jako v předchozím módu (OFB) se používá pouze šifrování, dešifrování není potřeba. Toto může být výhodné v případě, kdy máme omezené prostředky pro implementaci šifry. A ještě další módy... Celkový počet módů pro šifrování je ovšem mnohem větší. Mezi další nejznámější jsou např. módy založené na čítači, nebo zpětnou vazbou přes klíč. Např. pro šifru AES bylo navrženo přes dvacet různých módů. CTR (counter mode) mód, čítačový, spočívá v tom, že místo vazby s předchozím blokem je použita vazba s hodnotou inkrementálního čítače. Takže např. druhý blok je vázán s číslem 2, třetí blok s číslem 3, atd. Je to vlastně zjednodušený OFB mód, který umožňuje paralelní zpracování dat, nebo zpracování (šifrování/dešifrování) bloků mimo pořadí. Mód KFB (key feedback) váže bloky k sobě tak, že výstup šifrování bloku x j je použit jako klíč pro šifrování bloku x j+1.
26 Kapitola 3. Stavební bloky kryptografie ABC mód (accumulated block chaining) je náročnější na výpočet, protože pro šifrování bloku x j je třeba použít bloky x j 1, x j a c j. Posledním příkladem, který si krátce zmíníme je IGE (infinite garble extension), který je počítán podle následujících rovnic: y 0 = f(r 0 ), x 0 = r 0,y i = E(x i y i 1 ) x i 1 3.6 Proudové šifry
Kapitola 4 Kryptoanalýza Jestliže se dnes vyučuje kryptoanalýza, tak se obvykle začíná obdobím druhé světové války. Do jisté míry je to pochopitelné, protože v té době dosáhli kryptologové obrovských úspěchů. Navíc je toto období už dostatečně v minulosti, takže většina informací už je dostupná a kryptoanalytické úspěchy se tak dají velice dobře vykládat. Na druhou stranu, i v nedávné minulosti se podařilo dosáhnout obrovských pokroků v kryptoanalýze, které měli i praktický dopad na mnohé obecně používané aplikace. Možná jim ale stále chybí určité tajemno a tušení obrovských dopadů, které jsou spojeny s válkou a tak se obvykle na první stránky novin nedostanou. V této kapitole se tedy budeme věnovat několika příkladům kryptoanalýzy z nedávné minulosti a na závěr se přeci jen lehce zmíníme i o Enigmě a příčinách jejího totálního selhání. Naším cíle bude ukázat, že kryptoanalýza není jen věcí tajných a tajemných oddělení utajených někde v hlubinách armádních, či jiných státních agentur, ale že se jedná o oblast skutečně aktuální, která ovlivňuje bezpečnost vaší elektronické pošty, internetového spojení s obchodním partnerem, nebo kdo vlastně poslouchá vaše telefonní hovory. 4.1 Virtuální (ne)privátní sít Firma Microsoft, jakožto dodavatel všeobecně používaných operačních systémů má velký zájem o rozšiřování jejich možností a jednou z mnoha oblastí, které se dostali na stůl těm správným manažerům byly virtuální privátní sítě. Výsledkem byla implementace konkrétního protokolu, který je dostupný přímo z operačního systému. Virtuální privátní sít řeší jeden z velkých problémů Internetu, kterým je veřejnost dat, které jsou přes něj posílána. Data jsou transportována od odesilatele k příjemci v otevřené podobě, takže kdokoliv šikovný, kdo si připojí počítač na místo, přes které data procházejí, tak si je může prohlédnout. Tato jednoduchost je trochu zhoršena tím, že nikdo dopředu na sto procent neví, kudy se budou data posílat, ale na druhou 27
28 Kapitola 4. Kryptoanalýza stranu může být toto nepříjemné i pro odesilatele a příjemce. Jedním z používaných řešení je vytvoření tzv. virtuální privátní sítě (virtual private network VPN). Virtuální privátní sítě je tvořena jakýmisi tunely, které se podle potřeby vytvářejí mezi uživateli dané virtuální privátní sítě. Slovo tunel se pro spojení používá proto, že data je možné číst, nebo nepozorovaně měnit jen na koncových bodech tohoto spojení. Všechny tyto vlastnosti jsou samozřejmě zajištěny kryptografickými protokoly. Firma Microsoft pro tento účel navrhla a implementovala protokol PPTP (pointto-point tunelling protocol), což je doslovně tunelovací protokoly pro dva body. Protokol používá port 1723, nedefinuje žádné specifické kryptografické algoritmy a jeho první verze byla implementována v operačních systémech Window 98, Me a Windows NT. Celý protokol má dvě části autentizaci a vytvoření šifrovaného spojení (tunelu). V následujících řádcích nás bude zajímat hlavně část autentizační. 4.1.1 Autentizace MS-CHAP Protokol PPTP umožňuje tři způsoby autentizace. Prvním je poslání hesla v čisté podobě. To mimo jiné znamená, že kdo poslouchá vaše spojení, tak získá okamžitě heslo a bezpečnost všech protokolů, které jsou na hesle postaveny je tím pádem zanedbatelná. Druhou možností je poslání heše zprávy. Z pohledu útočníka je toto téměř totožné s první možností, s jediným rozdílem při útoku musí použít speciální program, který nahradí původní zpracování zadaného hesla už připravenou hodnotou heše. Třetí možností je použít protokol MS-CHAP (Microsoft Challenge Authentication Protocol), což je protokol typu výzva odpověd. Pro rozumné zajištění bezpečnosti vytvářené VPN je MS-CHAP jedinou rozumnou volbou, takže se jí budeme podrobněji zabývat. Jak už napovídá název protokolu, tak klient nemůže zaslat autentizační zprávu sám, ale musí nejdříve požádat server o zaslání výzvy. Ukázka celého protokolu je na následujícím obrázku XXXX Úvodní zpráva klienta: c0 21 01 00 00 13 03 05 c2 23 80 2B určení protokolu (LCP packet), 1B typ zprávy v protokolu (konfigurační žádost), 1B identifikace???, 1B délka dat (0), 1B typ konfigurace (autentizace), 1B volitelná délka pro CHAP (05), 2B identifikace protokolu pro další zprávy (CHAP), 1B verze protokolu (MS-CHAP) Výzva serveru: c2 23 01 00 00 0d 08 cf 4f 0e 72 89 04 3b (2) chap packet, (1) challenge, (1) ID, (2) length, (1) challenge length, (8) challenge Odpověd klienta: c2 23 02 00 00 53 31 41... 31 19... 0f 01 A d m i n i s t r a t o r
4.1. Virtuální (ne)privátní sít 29 (2) chap packet, (1) response, (1) ID, (2) length, (24) LANMAN, (24) NT response, (1) NT compatib. flag, (13) account name Jak je vidět, tak poslední zpráva odpověd klienta obsahuje dva řetězce dlouhé 24 bajtů. Než se dostaneme k tomu, jak se spočítají, musíme se nejdříve zmínit o dvou algoritmech/hodnotách. Těmi jsou Lan Manager hash (LM hash) a Windows NT hash. Tyto hodnoty jsou základem pro dva zmíněné dlouhé řetězce. I při autentizaci pomocí MS-CHAP protokolu je třeba zadat heslo, které se dále zpracovává (síla hesla tedy stále určuje sílu celé autentizace). Pro výpočet hodnoty LM hash se toto heslo upraví na délku 14 bajtů a to bud oříznutím přebytečných písmen, nebo přidáním nul na konec zadaného hesla. Dále se převedou všechna malá písmena hesla na velká. Řetězec, který má ted přesně čtrnáct znaků je rozdělen na dvě poloviny a ty jsou použity jako klíč pro zašifrování konstanty (ta je součástí definice algoritmu) algoritmem DES. Oba výsledky šifrování spojíme opět do jednoho řetězce a dostaneme tak LM hash, který má šestnáct bajtů. LM hash, nebo lépe řečeno postup jeho výpočtu ovšem silně snižuje bezpečnost původního hesla. Hlavním problémem je zde možnost použití tzv. slovníkového útoku, kdy se postupně zkouší všechna slova z předem připraveného slovníku. Vzhledem k tomu, že původní heslo je rozděleno na dvě části, tak nám stačí hádat pouze dvakrát sedmiznaková hesla, místo jednoho čtrnáctiznakového. Navíc, pokud je heslo kratší než osm znaků, tak to okamžitě zjistíme, protože druhá polovina LM hash bude mít předem známou hodnotu. Takto můžeme pomocí velice jednoduchých výpočtů odhadnout náročnost přímého slovníkového útoku jestliže je heslo kratší než osm znaků, je šance mnohem vyšší, než u delších hesel. NT hash se snaží vyvarovat chyb, které byly učiněny v návrhu výpočtu LM hash. Hesla jsou už opravdu až o čtrnácti znacích a jsou tak také zpracovávána (Microsoft tvrdí, že délka hesla může být až 255 znaků, ale díky omezením grafického rozhraní není možné heslo delší než čtrnáct znaků zadat). Heslo je přímým vstupem pro algoritmus MD4, z něhož opět získáme šestnáct bajtů. Obecně můžeme říci, že NT hash je mnohem silnější v porovnání s LM hash. Problém, který stále zůstává je, že není použita žádná sůl, takže stejná hesla vedou ke stejným hodnotám hashe. Navíc, pro zachování kompatibility se staršími verzemi jsou hodnoty obou hashů posílány v rámci protokolu společně a klient je ten, který vybírá, která z hodnot se má při autentizaci použít. 4.1.2 Kryptoanalýza MS-CHAP Výše zmíněné útoky jsou velmi jednoduchou aplikací obecných principů. MS-CHAP je ovšem možné podrobit mnohem důkladnější a nebezpečnější kryptoanalýze. Nej-