Úvod do klasických a moderních metod šifrování Jaro 2009, 8. přednáška
Počátky asymetrické kryptografie Whitfield Diffie, Martin Hellman, New directions in cryptography, IEEE Transactions on Information Theory, vol. IT-22, pp. 644-654, 1976. Popisují, jak lze v kryptografii použít jednosměrné funkce a permutace s padacími vrátky (trapdoor permutations). Šifrovací systém s veřejným klíčem není nic jiného než permutace s padacími vrátky (každý může šifrovat, ale nemůže dešifrovat), která umožňuje dešifrování pouze oprávněnému uživateli. Článek ale neobsahuje žádnou konkrétní permutaci s padacími vrátky. Dalšími zakladateli byli R. Merkle a L. Lamport.
Šifrovací systém s veřejným klíčem Oskar (Eva) - protivník y x Šifrovací algoritmus Dešifrovací algoritmus x Alice Bob Ks Kp Kp Kanál s autentizací Zdroj klíčů x – otevřený text, y – šifrový text, Kp – veřejný klíč Ks – tajný (soukromý) klíč
Požadavky Vlastnosti asymetrického šifrování Pro dvojici klíčů (Kp,Ks) platí, že dKs(eKp(x)) = x pro každou zprávu x. Kanál pro přenos veřejného klíče Kp nemusí být bezpečný (tj. zajišťující důvěrnost přenášených zpráv), musí ale zajišťovat autentizaci, tj. Alice si musí být jistá, že veřejný klíč dostala skutečně od Boba. Generátor klíčů je obvykle na straně příjemce zprávy, tj. u Boba. Šifrovací a dešifrovací algoritmy musí být rychlé, zatímco dešifrování bez znalosti soukromého klíče musí být výpočetně nezvládnutelné. Vlastnosti asymetrického šifrování soukromý klíč je tajemstvím pouze příjemce, nikoliv obou partnerů, veřejný klíč umožňuje každému zašifrovat zprávu pro příjemce, cenou za toto větší pohodlí je větší složitost systémů s veřejným klíčem jak po matematické stránce tak z hlediska počtu operací, které je třeba provádět. Systémy s veřejným klíčem jsou proto mnohem pomalejší oproti symetrickým šifrovacím systémům, jejich bezpečnost se posuzuje mnohem obtížněji.
Protokol Diffieho-Hellmana Zajišťuje ustanovení tajného klíče pro symetrickou kryptografii pomocí nezabezpečeného kanálu, který ale musí zajišťovat autentizaci a integritu. Oskar (Eva) - protivník Šifrovací algoritmus Dešifrovací algoritmus Alice Bob K K V U Výměna A Výměna B Kanál s autentizací K – klíč, U,V – zprávy, kroky protokolu
Dohoda na (symetrickém) klíči Alice a Bob se nejdříve dohodnou na nějakém velkém prvočísle p a kladném g menším než p takovém, že gx mod p je různé od 1 pro každé kladné x < p-1. Obě čísla p a g mohou být veřejná. Alice zvolí nějaké tajné x, které má stejně bitů jako p. Spočítá U = gx mod p a odešle U Bobovi. Bob podobně zvolí tajné y, které má stejně bitů, jako p. Spočítá V = gy mod p a odešle V Alici. Alice si spočítá K = Vx mod p = gyx mod p . Bob si spočítá K = Uy mod p = gxy mod p . Číslo K je tajný klíč sdílený Alicí a Bobem. Aby byl klíč K skutečně tajný, musí být výpočetně nemožné ze znalosti čísel U a V získat číslo K . Problému nalezení čísla x ze znalosti gx mod p se říká problém diskrétního logaritmu. Tento problém je stále považován za velmi obtížný.
Význam autentizace Protokol Diffieho-Hellmana vyžaduje, aby kanál, kterým si Alice a Bob vyměňují p, g, U a V, zajišťoval autentizaci. Bez autentizace by šmíráci Eva s Oskarem mohli postupovat následovně. Posadí se doprostřed kanálu mezi Alici a Boba. Uskuteční protokoly s Alicí a Bobem, s každým zvlášť. Získají tak symetrický klíč K pro komunikaci s Alicí a jiný symetrický klíč L pro komunikaci s Bobem. Pošle-li Alice šifrovanou zprávu Bobovi, Eva s Oskarem ji dešifrují za pomoci příslušného klíče K, poté ji zašifrují pomocí klíče L a pošlou ji dále Bobovi. Tomuto typu aktivního útoku se anglicky říká man-in-the-middle attack.
Šifrovací systém RSA Malá Fermatova věta Jeho autory jsou Ronald Rivest, Adi Shamir a Leonard Adleman. Zveřejnili jej v článku A method for obtaining digital signatures and public-key cryptosystem, Communications of ACM, vol. 21, pp. 120-126, 1978. Jde o první šifrovací systém s veřejným klíčem. Je založený na obtížnosti rozložení velkého přirozeného čísla na součin prvočísel. Malá Fermatova věta Pro přirozené číslo N označíme φ(N) počet přirozených čísel menších než N, které jsou nesoudělné s N. Například jsou-li p,q různá prvočísla, pak φ(p) = p-1, φ(pq) =(p-1)(q-1) . Malá Fermatova věta říká, že pro každé přirozené číslo N větší než 1 a každé přirozené číslo x menší než N platí xφ(N) = 1 mod N .
Generátor klíčů a šifrování Jako první je nutné zvolit veřejný parametr s, který říká, kolik bitů bude mít modul N . Standardní volbou je v současnosti s = 1024. Poté je třeba najít dvě nezávislá náhodná prvočísla p,q velikosti s/2 bitů. Víme, že pro N=pq platí φ(N) = (p-1)(q-1) . Dále se zvolí nějaké číslo e nesoudělné s φ(N) = (p-1)(q-1) . Pomocí rozšířeného Euklidova algoritmu se najde číslo d takové, že ed = 1 mod φ(N). Veřejným klíčem Kp je dvojice (N,e) . Soukromým klíčem Ks je dvojice (N,d) . Zpráva se zakóduje jako nějaké číslo x z množiny {1,2,. . . . N-1}. Zprávu x zašifrujeme jako y = xe mod N . Šifrovou zprávu y pak dešifrujeme jako yd mod N . Z malé Fermatovy věty vyplývá, že po dešifrování dostaneme původní otevřený text x .
Co je třeba umět Musíme umět hledat velká prvočísla. K tomu se používá Millerův-Rabinův test. S pravděpodobností 1 pozná, že dané číslo je prvočíslo a s pravděpodobností 1-4-k pozná, že je to složené číslo, kde k je volitelný parametr. Millerův-Rabinův test vyžaduje O (s4) operací. Vynásobit dvě čísla o s/2 bitech běžným školním algoritmem vyžaduje O (s2) operací. Lze to ale udělat i rychleji pomocí Karacubova algoritmu. Vyzkoušet, je-li nějaké číslo e nesoudělné s φ(N), vyžaduje použít jednou Euklidův algoritmus, což je dalších O (s2) operací. K výpočtu d je třeba jednou použít rozšířený Euklidův algoritmus, což je dalších O (s2) operací. Šifrování vyžaduje dalších O (s3) operací. Vhodnou volbou e, například e = 17 nebo e = 216+1 to lze zrychlit na O (s2) operací. Dešifrování stojí dalších O (s3) operací.
ElGamalův šifrovací systém Autorem je Taher ElGamal, popsal jej ve své PhD disertaci Cryptography and logarithms over finite fields, Stanford University 1984. Dva veřejné parametry jsou velké prvočíslo p a kladné číslo g menší než p takové, že gx mod p je různé od 1 pro každé kladné x < p-1. Generátor klíče nyní vygeneruje náhodné kladné x a spočítá číslo y = gx mod p. Veřejný klíč je Kp = y. Tajný klíč je Ks = x. Zpráva je zakódována jako nenulové číslo m menší než p. Šifrování probíhá tak, že odesílatel zvolí náhodné nenulové číslo r menší než p, spočítá u = gr mod p a v = myr mod p. Šifrová zpráva je (u,v). Dešifrování probíhá tak, že se spočte číslo vu-x mod p. Proběhnou-li výpočty správně, pak m = vu-x mod p. Výhody a nevýhody oproti RSA.
Oskar (Eva) - protivník Digitální podpis x x,σ x,σ Bob Alice Oskar (Eva) - protivník Podpisovací algoritmus Ověřovací algoritmus x,+/- Ks Kp Kp Kanál s autentizací Zdroj klíčů x – podpisovaný text, σ – digitální podpis, Kp – veřejný klíč Ks – tajný (soukromý) klíč
Digitální podpis Schéma s veřejným klíčem pro digitální podpis tvoří: generátor pseudonáhodných čísel, podpisovací algoritmus, který ze zprávy x a tajného klíče Ks vypočítá digitální podpis σ, ověřovací algoritmus, který pro každou zprávu x, podpis σ a veřejný klíč Kp ověří správnost podpisu. Digitální podpis musí zajistit několik bezpečnostních cílů. Nezfalšovatelnost podpisu. Pro útočníka musí být nemožné bez znalosti tajného klíče Ks vytvořit ke zprávě x platný podpis σ. To musí platit i v situaci, kdy útočník má k dispozici několik platných podpisů (xi,σi), dokonce i když si může volit zprávy xi. Nepopiratelnost podpisu. Ten, kdo zprávu podepsal, nesmí mít později možnost svůj podpis popřít. To znamená, že autor podpisu nemůže dokázat, že podpis lze zfalšovat.
Nezfalšovatelnost podpisu Podvržení podpisu může mít několik podob. Úplné prolomení systému spočívá v tom, že útočník dokáže ze znalosti veřejného klíče Kp získat tajný klíč Ks. Univerzální podvržení. Na základě veřejného klíče Kp útočník dokáže vytvořit algoritmus, který vytváří platné podpisy k libovolné zprávě x. Selektivní podvržení. Na základě veřejného klíče Kp útočník dokáže vytvořit zprávu, ke které pak umí připojit platný podpis. Existenční podvržení. Na základě veřejného klíče Kp je útočník schopen vytvářet dvojice (x,σ), kde σ je platný podpis zprávy x. Nemá ale žádnou kontrolu nad tím, jak zpráva x vypadá.
Od šifrovacího k podpisovému systému Šifrovací systém s veřejným klíčem můžeme snadno přeměnit v podpisový systém s veřejným klíčem tak, že použijeme dešifrovací algoritmus jako podpisovací algoritmus a šifrovací algoritmus jako ověřovací. Dešifrovací algoritmus totiž závisí na tajném klíči, který je známý pouze tomu, kdo podepisuje. Šifrovací algoritmus závisí na veřejném klíči, který je dostupný každému, podpis tedy může ověřit kdokoliv. V takto jednoduché podobě jde o podpis s obnovou zprávy. Podepisovanou zprávu x není nutné posílat spolu s podpisem σ, protože ji získáme z podpisu σ jako výsledek ověřovacího algoritmu. V případě dlouhých zpráv trvá vytvoření podpisu a jeho ověření příliš dlouho. Asymetrické šifrovací systémy jsou příliš pomalé.
Jednoduchý RSA podpis Použijeme-li jako výchozí šifrovací systém RSA, dostaneme jednoduchý RSA podpis. Ten trpí několika problémy, které jsou způsobené tvarem šifrovacího a dešifrovacího algoritmu u RSA. Tak například není odolný vůči existenčnímu podvržení. Každý si snadno může k libovolnému náhodně zvolenému podpisu σ vytvořit zprávu m = σe mod N, jejímž podpisem je právě σ. Vytvoří tak zprávu m s platným podpisem σ, nemá ale žádnou kontrolu nad podobou zprávy m. Stejně tak je snadné ze dvou platných podpisů (m,σ) a (m’,σ’) vytvořit nový platný podpis (m’’,σ’’) tak, že položíme m’’ = mm’ mod N a σ’’ = σσ’ mod N . Tyto bezpečnostní problémy lze odstranit použitím hašovací funkce.
Systém bez obnovy zprávy V praxi se proto používají podpisové systémy bez obnovy zprávy. Nepodepisuje se zpráva x, ale hodnota H(x), kde H je nějaká hašovací funkce. Podepisují se tak pouze zprávy délky rovné délce hašovací funkce H. Podpisem je tak dvojice ( H(x),σ ), kde σ je podpis textu H(x). Podepisovaná zpráva x se posílá spolu s podpisem, není ji proto nutné obnovovat. Použitá hašovací funkce musí být odolná vůči nalezení kolizí. V opačném případě by bylo možné mít stejný podpis ke dvěma různým zprávám. Jednu by si útočník nechal podepsat a pak by podpis připojil ke druhé zprávě. Tím by podvrhnul podpis druhé zprávy.
ElGamalův podpis Je založený na ElGamalově šifrovacím systému. Dva veřejné parametry jsou velké prvočíslo p a kladné číslo g menší než p takové, že gx mod p je různé od 1 pro každé kladné x < p-1. Generátor klíče nyní vygeneruje náhodné kladné x a spočítá číslo y = gx mod p. Veřejný klíč je Kp = y. Tajný klíč je Ks = x. Pak se spočítá otisk h = H(m) podepisované zprávy m pomocí nějaké hašovací funkce H. Podpis se vygeneruje tak, že se zvolí náhodné kladné číslo k menší než p-1 a spočítá r = gk mod p a s = (h - xr)k-1 mod (p-1). Podpis zprávy h je potom dvojice σ = (r,s) . Ověřovací algoritmus spočívá v ověření rovnosti yrrs = gh mod p . Pokud byl totiž podpis σ = (r,s) správně spočítán, tak platí yrrs = gxr+ks = gh mod p .