Výpočetní aspekty teorie čísel Kryptografie s veřejným klíčem ooooooo oooooooo Diskrétní matematika - 5. týden Aplikace teorie čísel - Počítání s velkými čísly, kryptografie Jan Slovák (výběr z podkladů M. Bulanta) Masarykova univerzita Fakulta informatiky jaro 2017 Výpočetní aspekty teorie čísel ooooooo ryptografie s veřejným klíčem oooooooo Obsah přednášky 0 Výpočetní aspekty teorie čísel 0 Kryptografie s veřejným klíčem □ i3" Výpočetní aspekty teorie čísel ooooooo Doporučené zdroje Kryptografie s veřejným klíčem oooooooo • Jan Slovák, Martin Panák, Michal Bulant Matematika drsně a svižně, e-text na www.math.muni.cz/Matematika_drsne_svizne. Výpočetní aspekty teorie čísel Kryptografie s veřejným klíčem ooooooo oooooooo Doporučené zdroje • Jan Slovák, Martin Panák, Michal Bulant Matematika drsně a svižně, e-text na www.math.muni.cz/Matematika_drsne_svizne. • Michal Bulant, výukový text k přednášce Elementární teorie čísel, http: //is .muni . cz/el/1431/podzim2012/M6520/ um/main-print.pdf • Jiří Herman, Radan Kučera, Jaromír Šimša, Metody řešení matematických úloh. MU Brno, 2001. o William Stein, Elementary Number Theory: Primes, Congruences, and Secrets, Springer, 2008. Dostupné na http://wstein.org/ent/ent.pdf o Radan Kučera, výukový text k přednášce Algoritmy teorie čísel, http://www.math.muni.cz/~kucera/texty/ATC10.pdf Výpočetní aspekty teorie čísel Kryptografie s veřejným klíčem ooooooo oooooooo Plán prednášky Q Výpočetní aspekty teorie čísel Výpočetní aspekty teorie čísel Kryptografie s veřejným klíčem •oooooo oooooooo Základní úlohy výpočetní teorie čísel V mnoha praktických úlohách využívajících výsledky teorie čísel je zapotřebí umět rychle provést jeden či více z následujících výpočtů: O běžné aritmetické operace (součet, součin, dělení se zbytkem) na celých číslech, Výpočetní aspekty teorie čísel Kryptografie s veřejným klíčem •oooooo oooooooo Základní úlohy výpočetní teorie čísel V mnoha praktických úlohách využívajících výsledky teorie čísel je zapotřebí umět rychle provést jeden či více z následujících výpočtů: O běžné aritmetické operace (součet, součin, dělení se zbytkem) na celých číslech, O zbytek mocniny celého čísla a na přirozené číslo n po dělení daným m. Výpočetní aspekty teorie čísel Kryptografie s veřejným klíčem •oooooo oooooooo Základní úlohy výpočetní teorie čísel V mnoha praktických úlohách využívajících výsledky teorie čísel je zapotřebí umět rychle provést jeden či více z následujících výpočtů: O běžné aritmetické operace (součet, součin, dělení se zbytkem) na celých číslech, O zbytek mocniny celého čísla a na přirozené číslo n po dělení daným m. O inverzi celého čísla a modulo m £ N, Výpočetní aspekty teorie čísel Kryptografie s veřejným klíčem •oooooo oooooooo Základní úlohy výpočetní teorie čísel V mnoha praktických úlohách využívajících výsledky teorie čísel je zapotřebí umět rychle provést jeden či více z následujících výpočtů: O běžné aritmetické operace (součet, součin, dělení se zbytkem) na celých číslech, O zbytek mocniny celého čísla a na přirozené číslo n po dělení daným m. Q inverzi celého čísla a modulo m £ N, O největší společný dělitel dvou celých čísel (a případně koeficienty do Bezoutovy rovnosti), Výpočetní aspekty teorie čísel Kryptografie s veřejným klíčem •oooooo oooooooo Základní úlohy výpočetní teorie čísel V mnoha praktických úlohách využívajících výsledky teorie čísel je zapotřebí umět rychle provést jeden či více z následujících výpočtů: O běžné aritmetické operace (součet, součin, dělení se zbytkem) na celých číslech, O zbytek mocniny celého čísla a na přirozené číslo n po dělení daným m. Q inverzi celého čísla a modulo m £ N, O největší společný dělitel dvou celých čísel (a případně koeficienty do Bezoutovy rovnosti), O rozhodnout o daném čísle, je-li prvočíslo nebo složené, Výpočetní aspekty teorie čísel Kryptografie s veřejným klíčem •oooooo oooooooo Základní úlohy výpočetní teorie čísel V mnoha praktických úlohách využívajících výsledky teorie čísel je zapotřebí umět rychle provést jeden či více z následujících výpočtů: O běžné aritmetické operace (součet, součin, dělení se zbytkem) na celých číslech, O zbytek mocniny celého čísla a na přirozené číslo n po dělení daným m. Q inverzi celého čísla a modulo m £ N, O největší společný dělitel dvou celých čísel (a případně koeficienty do Bezoutovy rovnosti), O rozhodnout o daném čísle, je-li prvočíslo nebo složené, O v případě složenosti rozložit dané číslo na součin prvočísel. Výpočetní aspekty teorie čísel O0OOOOO Základní aritmetické operace Kryptografie s veřejným klíčem oooooooo Základní aritmetické operace se i na velkých číslech obvykle provádějí obdobně jako jsme se to učili na základní a střední škol kdy umíme sčítat v lineárním, násobit a dělit se zbytkem v kvadratickém čase. Výpočetní aspekty teorie čísel O0OOOOO Základní aritmetické operace Kryptografie s veřejným klíčem oooooooo Základní aritmetické operace se i na velkých číslech obvykle provádějí obdobně jako jsme se to učili na základní a střední škol kdy umíme sčítat v lineárním, násobit a dělit se zbytkem v kvadratickém čase. Pro násobení, které je základem mnoha dalších operací, existují asymptoticky rychlejší algoritmy (typu rozděl a panuj) - např. první takový Karatsubův (1960) časové náročnosti Q(n}o^3) Výpočetní aspekty teorie čísel O0OOOOO Základní aritmetické operace Kryptografie s veřejným klíčem oooooooo Základní aritmetické operace se i na velkých číslech obvykle provádějí obdobně jako jsme se to učili na základní a střední škole, kdy umíme sčítat v lineárním, násobit a dělit se zbytkem v kvadratickém čase. Pro násobení, které je základem mnoha dalších operací, existují asymptoticky rychlejší algoritmy (typu rozděl a panuj) - např. první takový Karatsubův (1960) časové náročnosti 0(r?log23) nebo algoritmus Schónhage-Strassenův (1971) časové náročnosti 0(r? log n log log n), který využívá tzv. Fast Fourier Transform. Ten je ale přes svou asymptotickou převahu výhodný až pro násobení čísel majících alespoň desítky tisíc cifer (a používá se tak např. v GIMPS). Výpočetní aspekty teorie čísel O0OOOOO Základní aritmetické operace Kryptografie s veřejným klíčem oooooooo Základní aritmetické operace se i na velkých číslech obvykle provádějí obdobně jako jsme se to učili na základní a střední škole, kdy umíme sčítat v lineárním, násobit a dělit se zbytkem v kvadratickém čase. Pro násobení, které je základem mnoha dalších operací, existují asymptoticky rychlejší algoritmy (typu rozděl a panuj) - např. první takový Karatsubův (1960) časové náročnosti 0(r?log23) nebo algoritmus Schónhage-Strassenův (1971) časové náročnosti 0(r? log n log log n), který využívá tzv. Fast Fourier Transform. Ten je ale přes svou asymptotickou převahu výhodný až pro násobení čísel majících alespoň desítky tisíc cifer (a používá se tak např. v GIMPS). Pěkný přehled je např. na http://en.wikipedia.org/wiki/ Computational_complexity_of_mathematical_operations Výpočetní aspekty teorie čísel OO0OOOO GCD a modulární inverze Kryptografie s veřejným klíčem oooooooo Jak už jsme ukazovali dříve, výpočet řešení kongruence a • x = 1 (mod m) s neznámou x lze snadno (díky Bezoutově větě) převést na výpočet největšího společného dělitele čísel a a m a na hledání koeficientů /c, / do Bezoutovy rovnosti k • a + / • m = 1 (nalezené k je pak onou hledanou inverzí a modulo m). Výpočetní aspekty teorie čísel OO0OOOO GCD a modulární inverze Kryptografie s veřejným klíčem oooooooo Jak už jsme ukazovali dříve, výpočet řešení kongruence a • x = 1 (mod m) s neznámou x lze snadno (díky Bezoutově větě) převést na výpočet největšího společného dělitele čísel a a m a na hledání koeficientů /c, / do Bezoutovy rovnosti k • a + / • m = 1 (nalezené k je pak onou hledanou inverzí a modulo m). function exte n ded _gcd(a, m) if m — 0 return (1 ■ 0) else (q, r) := divide (a, m) (k, 1) := extended_gcd(m, r) return (1 , k - q * 1 ) Podrobná analýza (viz např. [Knuth] nebo [Wiki]) ukazuje, že tento algoritmus je kvadratické časové složitosti. Výpočetní aspekty teorie čísel OOO0OOO Modulární umocňování Kryptografie s veřejným klíčem oooooooo Modulární umocňování je, jak jsme již viděli dříve, velmi využívaná operace mj. při ověřování, zda je dané číslo prvočíslo nebo číslo složené. Jedním z efektivních algoritmů je tzv. modulární umocňování zprava doleva: Výpočetní aspekty teorie čísel OOO0OOO Modulární umocňování Kryptografie s veřejným klíčem OOOOOOOO Modulární umocňování je, jak jsme již viděli dříve, velmi využívaná operace mj. při ověřování, zda je dané číslo prvočíslo nebo číslo složené. Jedním z efektivních algoritmů je tzv. modulární umocňování zprava doleva: function mod u la r_pow ( base , exponent , modu lus) result := 1 while exponent > 0 if (exponent mod 2 1): result := (result * base) mod mod u 1 us exponent := exponent » 1 base = (base * base) mod modulus return result Výpočetní aspekty teorie čísel Kryptografie s veřejným klíčem OOOO0OO oooooooo Algoritmus modulárního umocňování je založen na myšlence, že např. při počítání 264 (mod 1000) 9 není třeba nejprve počítat 264 a poté jej vydělit se zbytkem číslem 1000, ale lépe je postupně násobit „dvojky" a kdykoliv je výsledek větší než 1000, provést redukci modulo 1000, Výpočetní aspekty teorie čísel Kryptografie s veřejným klíčem OOOOOOO oooooooo Algoritmus modulárního umocňování je založen na myšlence, že např. při počítání 264 (mod 1000) 9 není třeba nejprve počítat 264 a poté jej vydělit se zbytkem číslem 1000, ale lépe je postupně násobit „dvojky" a kdykoliv je výsledek větší než 1000, provést redukci modulo 1000, • ale zejména, že není třeba provádět takové množství násobení (v tomto případě 63 naivních násobení je možné nahradit pouze šesti umocněními na druhou, neboť 264 = (((((22)2)2)2)2)2, Výpočetní aspekty teorie čísel ooooo«o Kryptografie s veřejným klíčem oooooooo Příklad (Ukázka průběhu algoritmu) Vypočtěme 2560 (mod 561). Výpočetní aspekty teorie čísel ooooo«o Kryptografie s veřejným klíčem oooooooo Příklad (Ukázka průběhu algoritmu) Vypočtěme 2560 (mod 561). Protože 560 = (1000110000)2, dostaneme uvedeným algoritmem exponent base result exp's last digit 560 2 1 0 280 4 1 0 140 16 1 0 70 256 1 0 35 460 1 1 17 103 460 1 8 511 256 0 4 256 256 0 2 460 256 0 1 103 256 1 0 511 1 0 Výpočetní aspekty teorie čísel ooooo«o Kryptografie s veřejným klíčem oooooooo Příklad (Ukázka průběhu algoritmu) Vypočtěme 2560 (mod 561). Protože 560 = (1000110000)2, dostaneme uvedeným algoritmem exponent base result exp's last digit 560 2 1 0 280 4 1 0 140 16 1 0 70 256 1 0 35 460 1 1 17 103 460 1 8 511 256 0 4 256 256 0 2 460 256 0 1 103 256 1 0 511 1 0 A tedy 2560 = 1 (mod 561). Výpočetní aspekty teorie čísel Kryptografie s veřejným klíčem oooooo* oooooooo Efektivita modulárního umocňování V průběhu algoritmu se pro každou binární číslici exponentu provede umocnění základu na druhou modulo n (což je operace proveditelná v nejhůře kvadratickém čase), a pro každou „jedničku" v binárním zápisu navíc provede jedno násobení. Celkově jsme tedy schopni provést modulární umocňování nejhůře v kubickém čase. Výpočetní aspekty teorie čísel ooooooo Plán přednášky Kryptografie s veřejným klíčem oooooooo 0 Kryptografie s veřejným klíčem □ ifp1 Výpočetní aspekty teorie čísel Kryptografie s veřejným klíčem OOOOOOO «0000000 Kryptografie s verejným klíčem (PKC) Dva hlavní úkoly pro PKC jsou zajistit 9 šifrování, kdy zprávu zašifrovanou veřejným klíčem příjemce není schopen rozšifrovat nikdo kromě něj (resp. držitele jeho soukromého klíče) • podepisování, kdy integrita zprávy podepsané soukromým klíčem odesílatele může být ověřena kýmkoliv s přístupem k veřejnému klíči odesílatele Výpočetní aspekty teorie čísel ooooooo Kryptografie s verejným klíčem (PKC) Dva hlavní úkoly pro PKC jsou zajistit 9 šifrování, kdy zprávu zašifrovanou veřejným klíčem příjemce není schopen rozšifrovat nikdo kromě něj (resp. držitele jeho soukromého klíče) • podepisování, kdy integrita zprávy podepsané soukromým klíčem odesílatele může být ověřena kýmkoliv s přístupem k veřejnému klíči odesílatele Nejčastěji používané systémy PKC: • RSA (šifrování) a odvozený systém pro podepisování zpráv Kryptografie s veřejným klíčem •OOOOOOO Výpočetní aspekty teorie čísel ooooooo Kryptografie s verejným klíčem (PKC) Dva hlavní úkoly pro PKC jsou zajistit 9 šifrování, kdy zprávu zašifrovanou veřejným klíčem příjemce není schopen rozšifrovat nikdo kromě něj (resp. držitele jeho soukromého klíče) • podepisování, kdy integrita zprávy podepsané soukromým klíčem odesílatele může být ověřena kýmkoliv s přístupem k veřejnému klíči odesílatele Nejčastěji používané systémy PKC: • RSA (šifrování) a odvozený systém pro podepisování zpráv • Digital signature algorithm (DSA) a varianta založená na eliptických křivkách (ECDSA) Kryptografie s veřejným klíčem •OOOOOOO Výpočetní aspekty teorie čísel OOOOOOO Kryptografie s verejným klíčem (PKC) Dva hlavní úkoly pro PKC jsou zajistit 9 šifrování, kdy zprávu zašifrovanou veřejným klíčem příjemce není schopen rozšifrovat nikdo kromě něj (resp. držitele jeho soukromého klíče) • podepisování, kdy integrita zprávy podepsané soukromým klíčem odesílatele může být ověřena kýmkoliv s přístupem k veřejnému klíči odesílatele Nejčastěji používané systémy PKC: • RSA (šifrování) a odvozený systém pro podepisování zpráv • Digital signature algorithm (DSA) a varianta založená na eliptických křivkách (ECDSA) • Rabínův kryptosystém (a podepisování) Kryptografie s veřejným klíčem •OOOOOOO Výpočetní aspekty teorie čísel ooooooo Kryptografie s verejným klíčem (PKC) Dva hlavní úkoly pro PKC jsou zajistit 9 šifrování, kdy zprávu zašifrovanou veřejným klíčem příjemce není schopen rozšifrovat nikdo kromě něj (resp. držitele jeho soukromého klíče) • podepisování, kdy integrita zprávy podepsané soukromým klíčem odesílatele může být ověřena kýmkoliv s přístupem k veřejnému klíči odesílatele Nejčastěji používané systémy PKC: • RSA (šifrování) a odvozený systém pro podepisování zpráv • Digital signature algorithm (DSA) a varianta založená na eliptických křivkách (ECDSA) • Rabínův kryptosystém (a podepisování) o EIGamal kryptosystém (a podepisování) Kryptografie s veřejným klíčem •OOOOOOO Výpočetní aspekty teorie čísel ooooooo Kryptografie s verejným klíčem (PKC) Dva hlavní úkoly pro PKC jsou zajistit 9 šifrování, kdy zprávu zašifrovanou veřejným klíčem příjemce není schopen rozšifrovat nikdo kromě něj (resp. držitele jeho soukromého klíče) • podepisování, kdy integrita zprávy podepsané soukromým klíčem odesílatele může být ověřena kýmkoliv s přístupem k veřejnému klíči odesílatele Nejčastěji používané systémy PKC: • RSA (šifrování) a odvozený systém pro podepisování zpráv • Digital signature algorithm (DSA) a varianta založená na eliptických křivkách (ECDSA) • Rabínův kryptosystém (a podepisování) o EIGamal kryptosystém (a podepisování) • Kryptografie eliptických křivek (ECC) Kryptografie s veřejným klíčem •OOOOOOO Dva hlavní úkoly pro PKC jsou zajistit 9 šifrování, kdy zprávu zašifrovanou veřejným klíčem příjemce není schopen rozšifrovat nikdo kromě něj (resp. držitele jeho soukromého klíče) • podepisování, kdy integrita zprávy podepsané soukromým klíčem odesílatele může být ověřena kýmkoliv s přístupem k veřejnému klíči odesílatele Nejčastěji používané systémy PKC: • RSA (šifrování) a odvozený systém pro podepisování zpráv • Digital signature algorithm (DSA) a varianta založená na eliptických křivkách (ECDSA) • Rabínův kryptosystém (a podepisování) o EIGamal kryptosystém (a podepisování) • Kryptografie eliptických křivek (ECC) • Diffie-Hellmanův protokol < = Výpočetní aspekty teorie čísel ooooooo Princip digitálního podpisu Kryptografie s veřejným klíčem o«oooooo Podepisování O Vygeneruje se otisk (hash) Hm zprávy pevně stanovené délky (např. 160 nebo 256 bitů). O Podpis zprávy Sa(Hm) je vytvořen (pomocí dešifrování) z tohoto hashe s nutností znalosti soukromého klíče podepisujícího. Q Zpráva M (případně zašifrovaná veřejným klíčem příjemce) je spolu s podpisem odeslána. Výpočetní aspekty teorie čísel ooooooo Princip digitálního podpisu Kryptografie s veřejným klíčem o«oooooo Podepisování O Vygeneruje se otisk (hash) Hm zprávy pevně stanovené délky (např. 160 nebo 256 bitů). O Podpis zprávy Sa(Hm) je vytvořen (pomocí dešifrování) z tohoto hashe s nutností znalosti soukromého klíče podepisujícího. Q Zpráva M (případně zašifrovaná veřejným klíčem příjemce) je spolu s podpisem odeslána. Ověření podpisu O K přijaté zprávě M se (po jejím případném dešifrování) vygeneruje otisk H'M O S pomocí veřejného klíče (deklarovaného) odesílatele zprávy se rekonstruuje původní otisk zprávy Va(Sa(Hm)) = Hm- O Oba otisky se porovnají Hm = H'M1. Ron Rivest, Adi Shamir, Leonard Adleman (1977; C. Cocks,GCHQ - 1973) • každý účastník A potřebuje dvojici klíčů - veřejný Va a soukromý S/\ □ s 1 ► 1 O Q.O Výpočetní aspekty teorie čísel ooooooo RSA Kryptografie s veřejným klíčem OO0OOOOO Ron Rivest, Adi Shamir, Leonard Adleman (1977; C. Cocks,GCHQ - 1973) o každý účastník A potřebuje dvojici klíčů - veřejný Va a soukromý S a 9 generování klíčů: zvolí dvě velká prvočísla p, q, vypočte n = pq, (p(n) = (p — l)(q — 1) [n je veřejné, ale (p(n) nelze snadno spočítat ] Výpočetní aspekty teorie čísel ooooooo RSA Kryptografie s veřejným klíčem OO0OOOOO Ron Rivest, Adi Shamir, Leonard Adleman (1977; C. Cocks,GCHQ - 1973) o každý účastník A potřebuje dvojici klíčů - veřejný Va a soukromý S a 9 generování klíčů: zvolí dvě velká prvočísla p, q, vypočte n = pq, (p(n) = (p — l)(q — 1) [n je veřejné, ale (p(n) nelze snadno spočítat ] • zvolí veřejný klíč e a ověří, že (e, (p(n)) = 1 Výpočetní aspekty teorie čísel ooooooo RSA Kryptografie s veřejným klíčem OO0OOOOO Ron Rivest, Adi Shamir, Leonard Adleman (1977; C. Cocks,GCHQ - 1973) o každý účastník A potřebuje dvojici klíčů - veřejný Va a soukromý S a 9 generování klíčů: zvolí dvě velká prvočísla p, q, vypočte n = pq, (p(n) = (p — l)(q — 1) [n je veřejné, ale (p(n) nelze snadno spočítat ] • zvolí veřejný klíč e a ověří, že (e, (p(n)) = 1 o např. pomocí Euklidova algoritmu spočítá tajný klíč d tak, aby e • d = 1 (mod (p(n)) Výpočetní aspekty teorie čísel ooooooo RSA Kryptografie s veřejným klíčem OO0OOOOO Ron Rivest, Adi Shamir, Leonard Adleman (1977; C. Cocks,GCHQ - 1973) o každý účastník A potřebuje dvojici klíčů - veřejný Va a soukromý S a 9 generování klíčů: zvolí dvě velká prvočísla p, q, vypočte n = pq, (p(n) = (p — l)(q — 1) [n je veřejné, ale (p(n) nelze snadno spočítat ] • zvolí veřejný klíč e a ověří, že (e, (p(n)) = 1 o např. pomocí Euklidova algoritmu spočítá tajný klíč d tak, aby e • d = 1 (mod (p(n)) • zašifrování numerického kódu zprávy M\ C — Ce(M) = Me (mod n) Výpočetní aspekty teorie čísel ooooooo RSA Kryptografie s veřejným klíčem OO0OOOOO Ron Rivest, Adi Shamir, Leonard Adleman (1977; C. Cocks,GCHQ - 1973) o každý účastník A potřebuje dvojici klíčů - veřejný VA a soukromý SA 9 generování klíčů: zvolí dvě velká prvočísla p, q, vypočte n = pq, (p(n) = (p — l)(q — 1) [n je veřejné, ale (p(n) nelze snadno spočítat ] • zvolí veřejný klíč e a ověří, že (e, (p(n)) = 1 o např. pomocí Euklidova algoritmu spočítá tajný klíč d tak, aby e • d = 1 (mod (p(n)) • zašifrování numerického kódu zprávy M\ C — Ce(M) = Me (mod n) • dešifrování šifry C: 07" = Dcy(C) = (mod n) Výpočetní aspekty teorie čísel ooooooo Rabínův kryptosystém Kryptografie s veřejným klíčem OOO0OOOO Prvním veřejným kryptosystémem, k jehož prolomení je prokazatelně potřeba faktorizovat modul, je Rabínův kryptosystém, který si uvedeme ve zjednodušené verzi: a každý účastník A potřebuje dvojici klíčů - veřejný Va a soukromý S a Výpočetní aspekty teorie čísel ooooooo Rabínův kryptosystém Kryptografie s veřejným klíčem OOO0OOOO Prvním veřejným kryptosystémem, k jehož prolomení je prokazatelně potřeba faktorizovat modul, je Rabínův kryptosystém, který si uvedeme ve zjednodušené verzi: a každý účastník A potřebuje dvojici klíčů - veřejný Va a soukromý S a • generování klíčů: A zvolí dvě podobně velká prvočísla p. q = 3 (mod 4), vypočte n = pq. Výpočetní aspekty teorie čísel ooooooo Rabínův kryptosystém Kryptografie s veřejným klíčem OOO0OOOO Prvním veřejným kryptosystémem, k jehož prolomení je prokazatelně potřeba faktorizovat modul, je Rabínův kryptosystém, který si uvedeme ve zjednodušené verzi: a každý účastník A potřebuje dvojici klíčů - veřejný Va a soukromý S a • generování klíčů: A zvolí dvě podobně velká prvočísla p. q = 3 (mod 4), vypočte n = pq. • VA = n, SA = (p, q) Výpočetní aspekty teorie čísel ooooooo Rabínův kryptosystém Kryptografie s veřejným klíčem OOO0OOOO Prvním veřejným kryptosystémem, k jehož prolomení je prokazatelně potřeba faktorizovat modul, je Rabínův kryptosystém, který si uvedeme ve zjednodušené verzi: a každý účastník A potřebuje dvojici klíčů - veřejný Va a soukromý S a • generování klíčů: A zvolí dvě podobně velká prvočísla p. q = 3 (mod 4), vypočte n = pq. • VA = n, SA = (p, q) 9 zašifrování numerického kódu zprávy M\ C = Ce(M) = M2 (mod n) Výpočetní aspekty teorie čísel ooooooo Rabínův kryptosystém Kryptografie s veřejným klíčem OOO0OOOO Prvním veřejným kryptosystémem, k jehož prolomení je prokazatelně potřeba faktorizovat modul, je Rabínův kryptosystém, který si uvedeme ve zjednodušené verzi: a každý účastník A potřebuje dvojici klíčů - veřejný V a a soukromý S a • generování klíčů: A zvolí dvě podobně velká prvočísla p. q = 3 (mod 4), vypočte n = pq. • VA = n, SA = (p, q) 9 zašifrování numerického kódu zprávy M\ C = Ce(M) = M2 (mod n) 9 dešifrování šifry C: vypočtou se (čtyři) odmocniny z C modulo n a snadno se otestuje, která z nich byla původní zprávou. -írnJ^ < >• e O Q, O Výpočet druhé odmocniny z C modulo n = pq, kde p = q = 3 (mod 4) klíčem • vypočti r = C(p+1)/4 (mod p) a s = C^1)/4 (mod q) aUvědomte si, že jde vlastně o aplikaci Čínské zbytkové věty! Výpočetní aspekty teorie čísel ooooooo Kryptografie s veřejným klíčem oooo«ooo Výpočet druhé odmocniny z C modulo n = pq, kde p = q = 3 (mod 4) • vypočti r = C(p+1)/4 (mod p) a s = C^+1)/4 (mod q) 9 vypočti a, b tak, že ap + bq = 1 aUvědomte si, že jde vlastně o aplikaci Čínské zbytkové věty! Výpočetní aspekty teorie čísel OOOOOOO Kryptografie s veřejným klíčem oooo«ooo Výpočet druhé odmocniny z C modulo n = pq, kde p = q = 3 (mod 4) • vypočti r = C^+1)/4 (mod p) a s = C^+1)/4 (mod q) • vypočti a, b tak, že ap + = 1 • položa x = (aps + bqr) (mod r?), y = (aps — bqr) (mod n) aUvědomte si, že jde vlastně o aplikaci Čínské zbytkové věty! Výpočetní aspekty teorie čísel ooooooo Kryptografie s veřejným klíčem oooo«ooo Výpočet druhé odmocniny z C modulo n = pq, kde p = q = 3 (mod 4) • vypočti r = C(p+1)/4 (mod p) a s = C^+1)/4 (mod q) • vypočti a, b tak, že ap + = 1 • položa x = (aps + bqr) (mod r?), y = (aps — bqr) (mod n) • druhými odmocninami z C modulo r? jsou ±x, ±y. aUvědomte si, že jde vlastně o aplikaci Čínské zbytkové věty! Výpočetní aspekty teorie čísel ooooooo Kryptografie s veřejným klíčem ooooo«oo Příklad V Rabínově kryptosystém u Alice zvolila za svůj soukromý klíč p = 23, q = 31, veřejným klíčem je pak n — pq — 713. Zašifrujte zprávu m — 327 pro Alici a ukažte, jak bude Alice tuto zprávu dešifrovat. Výpočetní aspekty teorie čísel ooooooo Kryptografie s veřejným klíčem ooooo«oo Příklad V Rabínově kryptosystém u Alice zvolila za svůj soukromý klíč p = 23, q = 31, veřejným klíčem je pak n — pq — 713. Zašifrujte zprávu m — 327 pro Alici a ukažte, jak bude Alice tuto zprávu dešifrovat. Řešení c = 692, kandidáti původní zprávy jsou ±4 • 23 • 14 ± 3 • 31 • 18 (mod 713). Výpočetní aspekty teorie čísel ooooooo Diffie-Hellman key exchange Kryptografie s veřejným klíčem OOOOOO0O Whitfield Diffie, Martin Hellman (1976; M. Williamson, GCHQ 1974) Výměna klíčů pro symetrickou kryptografii bez předchozího kontaktu (tj. náhrada jednorázových klíčů, kurýrů s kufříky, ... Výpočetní aspekty teorie čísel ooooooo Diffie-Hellman key exchange Kryptografie s veřejným klíčem OOOOOO0O Whitfield Diffie, Martin Hellman (1976; M. Williamson, GCHQ -1974) Výměna klíčů pro symetrickou kryptografii bez předchozího kontaktu (tj. náhrada jednorázových klíčů, kurýrů s kufříky, ...). • Dohoda stran na prvočísle p a primitivním kořenu g modulo p (veřejné) Výpočetní aspekty teorie čísel OOOOOOO Diffie-Hellman key exchange Kryptografie s veřejným klíčem OOOOOO0O Whitfield Diffie, Martin Hellman (1976; M. Williamson, GCHQ -1974) Výměna klíčů pro symetrickou kryptografii bez předchozího kontaktu (tj. náhrada jednorázových klíčů, kurýrů s kufříky, ...). • Dohoda stran na prvočísle p a primitivním kořenu g modulo p (veřejné) o Alice vybere náhodné a a pošle ga (mod p) Výpočetní aspekty teorie čísel ooooooo Diffie-Hellman key exchange Kryptografie s veřejným klíčem OOOOOO0O Whitfield Diffie, Martin Hellman (1976; M. Williamson, GCHQ -1974) Výměna klíčů pro symetrickou kryptografii bez předchozího kontaktu (tj. náhrada jednorázových klíčů, kurýrů s kufříky, ...). • Dohoda stran na prvočísle p a primitivním kořenu g modulo p (veřejné) o Alice vybere náhodné a a pošle ga (mod p) • Bob vybere náhodné b a pošle gb (mod p) Výpočetní aspekty teorie čísel ooooooo Diffie-Hellman key exchange Kryptografie s veřejným klíčem OOOOOO0O Whitfield Diffie, Martin Hellman (1976; M. Williamson, GCHQ -1974) Výměna klíčů pro symetrickou kryptografii bez předchozího kontaktu (tj. náhrada jednorázových klíčů, kurýrů s kufříky, ...). • Dohoda stran na prvočísle p a primitivním kořenu g modulo p (veřejné) o Alice vybere náhodné a a pošle ga (mod p) • Bob vybere náhodné b a pošle gb (mod p) • Společným klíčem pro komunikaci je gab (mod p). Výpočetní aspekty teorie čísel ooooooo Diffie-Hell man key exchange Kryptografie s veřejným klíčem OOOOOO0O Whitfield Diffie, Martin Hellman (1976; M. Williamson, GCHQ -1974) Výměna klíčů pro symetrickou kryptografii bez předchozího kontaktu (tj. náhrada jednorázových klíčů, kurýrů s kufříky, ...). • Dohoda stran na prvočísle p a primitivním kořenu g modulo p (veřejné) o Alice vybere náhodné a a pošle ga (mod p) • Bob vybere náhodné b a pošle gb (mod p) • Společným klíčem pro komunikaci je gab (mod p). Výpočetní aspekty teorie čísel ooooooo Diffie-Hellman key exchange Kryptografie s veřejným klíčem OOOOOO0O Whitfield Diffie, Martin Hellman (1976; M. Williamson, GCHQ -1974) Výměna klíčů pro symetrickou kryptografii bez předchozího kontaktu (tj. náhrada jednorázových klíčů, kurýrů s kufříky, ...). • Dohoda stran na prvočísle p a primitivním kořenu g modulo p (veřejné) o Alice vybere náhodné a a pošle ga (mod p) • Bob vybere náhodné b a pošle gb (mod p) • Společným klíčem pro komunikaci je gab (mod p). Poznámka o Problém diskrétního logaritmu (DLP) o Nezbytná autentizace (man in the middle attack) Výpočetní aspekty teorie čísel ooooooo Kryptosystém EIGamal Kryptografie s veřejným klíčem OOOOOOO* Z protokolu DH na výměnu klíčů odvozen šifrovací algoritmus EIGamal: • Alice zvolí prvočíslo p spolu s primitivním kořenem g o Alice zvolí tajný klíč x, spočítá h — gx (mod p) a zveřejní veřejný klíč (p,g, h) • šifrování zprávy M\ Bob zvolí náhodné y a vypočte C\ — gy (mod p) a C2 = M • hy (mod p) a pošle (Ci, C2) 9 dešifrování zprávy: OT — C2/C* Výpočetní aspekty teorie čísel ooooooo Kryptosystém EIGamal Kryptografie s veřejným klíčem OOOOOOO* Z protokolu DH na výměnu klíčů odvozen šifrovací algoritmus EIGamal: • Alice zvolí prvočíslo p spolu s primitivním kořenem g o Alice zvolí tajný klíč x, spočítá h — gx (mod p) a zveřejní veřejný klíč (p,g, h) • šifrování zprávy M\ Bob zvolí náhodné y a vypočte C\ — gy (mod p) a C2 = M • hy (mod p) a pošle (Ci, C2) 9 dešifrování zprávy: OT — C2/C* Poznámka Analogicky jako v případě RSA lze odvodit podepisování.