Obsah 13. a 14. přednáška z kryptografe 1 Protokoly Dffeho-Hellmanův a ElGamalův Dffeho-Hellmanův a ElGamalův protokol Bezpečnost obou protokolů 2 Výpočet dskrétního logartmu Baby step-gant step algortmus Pohlngův-Hellmanův algortmus 3 Defnce Nechť G = a je cyklcká grupa řádu n s generátorem a. Každý prvek b G lze zapsat jako b = a x pro jedné x Z n. Toto x se nazývá dskrétní logartmus o základu a z prvku b v grupě G. Značí se dlog a (b). Z 9 = 2, Z 9 = 6ḃ Z 9 1 2 4 5 7 8 dlog 2 (b) 0 1 2 5 4 3 Tvrzení Nechť G = a je cyklcká grupa řádu n. Exponencální zobrazení exp a : (Z n, +) (G, ) : x a x je grupový somorfsmus. dlog a : (G, ) (Z n, +) : g = a x x je k němu nverzní zobrazení, tudíž také grupový somorfsmus. Pro b, c G, k Z platí vzorce: dlog a (b c) = dlog a (b) + dlog a (c) dlog a (1) = 0 dlog a (b k ) = k dlog a (b), dlog a (b 1 ) = dlog a (b)
Poznámka Někdy se mluví o dskétním logartmu obecněj: Nechť G je Abelova grupa, a, b G lbovolné prvky. Jestlže b a, pak je dlog a (b) defnován jako lbovolné x Z, pro něž je a x = b. Takové x je určeno jednoznačně modulo řád prvku a. Jestlže b a, pak dlog a (b) defnován není. Pokud je grupa G cyklcká, r(a) = r (a nemusí být generátor), pak b a, právě když b řeší rovnc x r = 1. Aneb dlog a (b) je defnován, právě když b r(a) = 1 v grupě G. Problém dskrétního logartmu Předpokládá se, že pro většnu grup je výpočet dskrétního logartmu exponencální nebo subexponencální problém - např. pro grupy Z p a jejch podgrupy nebo pro grupy elptckých křvek. (V šfrovacích protokolech s pod grupou G představujte tyto grupy.) V grupě (Z n, +) není těžké spočítat dskrétní logartmus. V adtvní grupě je dlog a (b) = x Z n takové, že b = x a v Z n. To je lneární rovnce a umíme j řešt rozšířeným Eukledovým algortmem v čase O(len(n) 2 ). v kryptograf Dffeho-Hellmanova domluva klíče Dffeho-Hellmanův protokol je veřejná domluva na společném tajném klíč pro symetrcké šfrování. Jeho bezpečnost se opírá o problém dskrétního logartmu. Autoř: Whtfeld Dffe a Martn Hellman, USA, 1976. ElGamalovo šfrování je nesymetrcké šfrování s veřejným klíčem, které se opírá o stejnou myšlenku jako Dffeho-Hellmanova výměna klíčů. Autor: Taher ElGamal, USA (Egypt), 1985. Protokol Alce zvolí cyklckou grupu G řádu n a její generátor a. Dále zvolí x Z n a spočte prvek b = a x v grupě G. Alce pošle Bobov prvek b a nformace o grupě (G, n, a). Bob zvolí y Z n a spočte prvek c = a y v grupě G. Bob pošle Alc prvek c. Alce spočte s A = c x a Bob spočte s B = b y v grupě G. Tím oba získají stejný tajný klíč s = s A = s B = a xy.
Dffeho-Hellmanova domluva klíče ElGamalovo šfrování Protokol Popřípadě třetí strana zvolí cyklckou grupu G řádu n a její generátor a. Zveřejní (G, n, a) v telefonním seznamu, do nějž Alce vloží pod své jméno veřejnou část klíče b = a x a Bob vloží pod své jméno veřejnou část klíče c = a y. Zatímco tajnou část klíče x, resp. y nkomu neprozradí. Šfrování Domluvený tajný klíč s může Alce s Bobem použít k jakémukol symetrckému šfrování. Tato možnost veřejné domluvy na tajném klíč vyřešla problém dstrbuce klíčů, který symetrcké šfrování zatěžoval. Vytvoření klíčů Alce zvolí cyklckou grupu G řádu n a její generátor a. Dále zvolí x Z n a spočte prvek b = a x v grupě G. Alce zveřejní prvek b a nformace o grupě (G, n, a) v telefonním seznamu. Prvek b je Alcn veřejný klíč, x je Alcn tajný klíč. ElGamalovo šfrování ElGamalovo šfrování Šfrování Bob zvolí y Z n - tzv. jepčí klíč. Spočte prvky c = a y, s = b y (tedy opět s = a xy ) v grupě G. Bob zašfruje zprávu m G: m = m s v grupě G. Bob pošle Alc dvojc prvků (c, m). Dešfrování Alce s spočte s = c x, resp. s 1 = c n x v grupě G. Alce dešfruje zprávu m: m = m s 1 v grupě G. Alcn veřejný klíč je b = 7 pro Z 37 = 2, řád grupy n = 36. Alcn soukromý klíč je x = 32. Bob chce zašfrovat zprávu m = 10, použje jepčí klíč y = 8. Spočte c = 2 8 = 34, s = 7 8 = 16, m = 10 16 = 12 v Z 37. Pošle (c, m) = (34, 12). Alce chce zprávu m dešfrovat. Spočte s 1 = 34 36 32 = 7, m = 12 7 = 10 v Z 37.
ElGamalovo šfrování ElGamalovo šfrování Pro šfrování dešfrování u ElGamala potřebujeme: Umocňovat v grupě G, což metodou opakovaných čtverců vyžaduje O(len(n)) násobení v grupě G, kde n = G. Pro každou zprávu zvolt jný jepčí klíč (pomocí generátoru náhodných čísel ze Z n ). To je nutné kvůl bezpečnost: Pokud by Eva dešfrovala jednu zprávu m, dopočetla by s klíč s = mm 1 a dešfrovala by pak všechny zprávy. Nevýhoda protokolu - zašfrovaná zpráva bude dvojnásobně dlouhá. Z tohoto důvodu se ElGamalovo šfrování používá mnohem méně než RSA šfrování. Pro vytvoření obou protokolů potřebujeme cyklckou grupu a její generátor. V prax se volí (vz Shoup, 2005): G podgrupa v Z p, kde p je prvočíslo o 1024 btech - dostatečné vzhledem k subexponencálním algortmům na dskrétní logartmus, G = q je prvočíslo o 160 btech - dostatečné vzhledem k exponencálním algortmům na dskrétní logartmus. Zprávy lze volt m Z p (a bude to fungovat) a umocňování (na jepčí klíče) půjde rychlej, neboť exponent je menší než q. G je grupa bodů na elptcké křvce řádu G o 160 btech. (V těchto grupách není znám subexponencální algortmus na dskrétní logartmus.) Zprávy je nutno konvertovat do grupy G. Bezpečnost obou protokolů Bezpečnost obou protokolů Problém dskrétního logartmu Nechť grupa G = a je řádu n. Chceme pro daný prvek b G najít x Z n tak, že b = a x v G. Bezpečnost Dffe-Helmanova a ElGamalova protokolu se opírá o složtost problému dskrétního logartmu v dané grupě. Pro podgrupy v Z p č v grupy elptckých křvek doposud známe: exponencální algortmy vyžadující O( n) = O(2 1 2 len(n) ) násobení v G, tyto algortmy fungují v každé cyklcké grupě; je-l G podgrupa v Z p, pak také subexponencální pravděpodobnostní algortmus pracující v čase O(e (2 2+o(1)) ln(p) ln(ln(p)) ). Exponencální zobrazení je v těchto grupách jednosměrná funkce. Dffeho-Hellmanův problém Ze znalost b = a x a c = a y spočítat s = a xy v grupě G = a. Přtom exponenty x, y neznáme. Zatím se umí Dffeho-Hellmanův problém vyřešt pouze přes dskrétní logartmus, tedy přes vypočítání x a y. Věří se, že Dffe-Hellmanův problém je exponencálně složtý. Dffeho-Hellmanův rozpoznávací problém Poznat, zda trojce (b, c, d) je tvaru (a x, a y, a xy ) v grupě G = a. Zatím se míní, že Dffeho-Hellmanovy trojce (a x, a y, a xy ) nejsou odlštelné od náhodných trojc (a x, a y, a z ) an pravděpodobnostním metodam a že tento problém je exponencálně složtý.
Bezpečnost obou protokolů - výpočet Poznámky Pokud je G = n děltelné malým prvočísly, pak se dskrétní logartmus dá spočítat řádově rychlej (exponencální čas s menším exponentem - vz. Pohlngův-Hellmanův algortmus). Pokud je G = n je děltelné malým prvočísly, pak exstuje pravděpodobnostní algortmus, který rozpozná Dffeho-Hellmanovu trojc v polynomálním čase (q + len(p)) O(1) s pravděpodobností 1 q, kde q je nejmenší prvočíslo, které dělí n. Složtost algortmu je pro G podgrupu v Z p. Proto se volí G = q prvočíslo. Nechť nadále G = a je cyklcká grupa řádu n s generátorem a. Pro b G počítáme dlog a (b), tj. x Z n takové, že b = a x v G. Následující algortmy fungují v každé cyklcké grupě. Pro časovou složtost budeme určovat jen počet násobení, rychlost násobení je v každé grupě jná. Brute force algortmus Výpočet hrubou slou: Počítáme a pro 0 < n tak, že postupně násobíme prvkem a, dokud nevyjde prvek b. Časová složtost - provádíme nejvýše n násobení v grupě G, tedy potřebný čas je O(n) = O(2 len(n) ) násobení v G. - výpočet - výpočet Baby step-gant step algortmus Zvolme aproxmac m. = n, pak také m = [ n m ]. = n. Zapíšeme x = dlog a (b) = vm + u, pak 0 u < m, 0 v m, protože 0 x < n. Hledáme příslušná u, v. b = a x = a vm+u, odtud b (a m ) v = a u. Baby steps (dětské krůčky): Spočteme a pro všechna 0 < m a uložíme je do pamět. Vhodná mplementace - vyhledávací (vyvážený bnární) strom T, kde T (g) =, pokud a = g, a T (g) = pro ostatní prvky g G. Pak bude třeba O( n) prostoru a vyhledávání bude v čase O(len(n)). Baby step-gant step algortmus Gant steps (obří kroky): Počítáme b(a n m ) j pro 0 j < m, dokud nezískáme výsledek stejný jako některý z výsledků v část baby steps. Tam, kde vznkly stejné výsledky, je = u a j = v, tudíž získáme dlog a (b) = x = vm + u. Časová složtost - provádíme max. 2 n násobení v grupě G a n vyhledávání ve stromě T. (Přtom čas O(len(n)) na vyhledávání je menší než čas na násobení ve většně grup.) Potřebný čas je O( n) = O(2 1 2 len(n) ) násobení v G, tedy exponencální s polovčním exponentem než u hrubé síly. Prostorová složtost je O( n) = O(2 1 2 len(n) ), tedy také exponencální, což je větší problém.
- výpočet - výpočet Grupa Z 37 je cyklcká řádu n = 36 s generátorem a = 2. Spočteme dlog 2 (7) v grupě Z 37. Položíme m = 36 = 6, pak m = 36 6 = 6. Tedy x = dlog 2 (7) = 6v + u, kde 0 u, v 5. 7 = 2 x = 2 6v+u, odtud 2 u = 7(2 6 ) v = 7(2 30 ) v = 7 11 v Baby steps: 2 0 = 1, 2 1 = 2, 2 2 = 4, 2 3 = 8, 2 4 = 16, 2 5 = 32 Gant steps: 7 11 0 = 7, 7 11 1 = 3, 7 11 2 = 33, 7 11 3 = 30, 7 11 4 = 34, 7 11 5 = 4 (postupně násobíme 11-t) Rovnost nastala pro 2 2 = 4 = 7 11 5, tedy u = 2, v = 5, dlog 2 (7) = 6 5 + 2 = 32. Poznámky Pollardova ρ-metoda na výpočet dskrétního logartmu je pravděpodobnostní algortmus pracující v očekávaném čase O( n) = O(2 1 2 len(n) ) násobení v G. Jeho výhodou je polynomální paměťová náročnost. Publkoval John Pollard v roce 1978. Index calculus je subexponencální algortmus na dskrétní logartmus fungující pro podgrupy G prvočíselného řádu q v grupě Z p. Pracuje v čase O(e (2 2+o(1)) ln(p) ln(ln(p)) ). Představíme jej v samostatné přednášce pod názvem SEDL. - výpočet - výpočet Pohlngův-Hellmanův algortmus Nechť G je cyklcká grupa řádu n s generátorem a, nechť b G. Známe-l faktorzac čísla n, lze urychlt výpočet dlog a (b). G = n = k = qe, pak lze počítat dskrétní logartmy v podgrupách řádů q e a použít Čínskou větu o zbytcích. Je-l a x = b v grupě G, pak (a n ) x = b n, kde n = n/q e. Spočteme x = dlog a n (b n ) v podgrupě H = a n řádu q e pro každé 1 k a získáme tak zbytkovou soustavu k rovnc x x (mod q e ), jejímž řešením je x = dlog a (b). Pohlngův-Hellmanův algortmus G = q e mocnna prvočísla, tak výpočet dskrétního logartmu lze převést rekursvně na výpočet e dskrétních logartmů v podgrupě řádu q. Potřebný čas je O(eq 1 2 + e len(q)) násobení v G. Je-l a x = b v grupě G, pak x = x e 1 q e 1 + + x 1 q + x 0 < q e. Číslce 0 x < q budeme počítat postupně od x 0 jako dskrétní logartmy v podgrupě H = a (qe 1) řádu q. Umocníme rovnc a x = b na q e 1, protože r(a) = q e, dostaneme (a (qe 1) ) x0 = b (qe 1) a spočteme x 0. Pak umocníme rovnc na q e 2 a dopočteme x 1. Pokračujeme až po x e 1 a máme q-ární rozvoj pro x. G = q prvočíslo, tak použjeme klascký Baby step - gant step algortmus. Potřebný čas je O(q 1 2 ) násobení v G.
- výpočet - výpočet Pohlngův-Hellmanův algortmus Buď q je největší prvočíslo ve faktorzac n = G, čas potřebný na výpočet dskrétního logartmu v grupě G je dán časem jeho výpočtu v podgrupě řádu q. Časová složtost je tedy zhruba O(q 1 2 ) násobení v G. Algortmus publkoval Stephen Pohlng a Martn Hellman v roce 1978 jako Pohlngův-Hellmanův útok na Dffeho- Hellmanovu domluvu klíče. Je-l (velké) n = G součnem malých prvočísel, pak není protokol bezpečný. Grupa G = Z 37 je cyklcká řádu n = 36 s generátorem a = 2. Spočteme x = dlog 2 (7) v grupě Z 37. n = 36 = 2 2 3 3 = 4 9. Nechť x Z 36 má zbytky θ(x) = (x, x ) Z 4 Z 9. Rovnost 7 = 2 x v grupě G mplkuje rovnost: 7 9 = (2 9 ) x = (2 9 ) x v podgrupě H řádu 4 s generátorem 2 9, 2 9 = 31, 7 9 = 1, tedy x = dlog 31 (1) = 0 7 4 = (2 4 ) x = (2 4 ) x v podgrupě H řádu 9 s generátorem 2 4, 2 4 = 16, 7 4 = 33, tedy x = dlog 16 (33) = 5 (použjeme Baby step - gant step algortmus pro grupu H ). Z Čínské věty o zbytcích dopočteme x = θ 1 (0, 5) = 32. - výpočet x = dlog 16 (33) = 5 v podgrupě H řádu 9 = 3 2 s generátorem 16 můžeme spočítat rekurzvně: Označme x = 3x 1 + x 0, kde 0 x 0, x 1 < 3. Rovnc 33 = 16 x = 16 3x 1+x 0 umocníme nejdříve na třetí, 33 3 = 16 9x 1+3x 0 = 16 3x 0, v exponentu se počítá modulo 9. 16 3 = 26, 33 3 = 10, tedy x 0 = dlog 26 (10) = 2. Dosadíme do původní rovnce: 33 = 16 3x 1+2 a upravíme: 16 3x 1 = 33 16 2 = 26, tedy x 1 = dlog 26 (26) = 1. Našl jsme x = 3 2 + 1 = 5. Víme, že prvek a je generátor cyklcké grupy G řádu n právě, když a d 1 pro každého vlastního děltele d čísla n. Přtom stačí testovat jen maxmální děltele čísla n. Aneb, abychom mohl ověřt, zda je prvek generátorem, musíme znát faktorzac čísla n (řádu grupy). V následující část se omezíme na cyklcké grupy Z p, algortmy by analogcky fungovaly pro každou cyklckou grupu. Časová složtost je počítána vzhledem k násobení v Z p, kde vynásobení dvou čísel odhadujeme časem O(len(p) 2 ).
Algortmus číslo 1 Nechť p je prvočíslo a p 1 = k =1 qe je faktorzace pro Z p. Veškeré výpočty jsou prováděny v Z p. repeat vyber náhodně a Z p GEN true, 1 [prvek a může být generátorem] repeat f a p 1 q = 1 then GEN false endf + 1 untl not GEN or > k untl GEN output a Korektnost algortmu č.1 Algortmus zastaví, protože Z p je cyklcká grupa. Prvek a na výstupu bude generátorem grupy Z p díky následujícímu tvrzení. Tvrzení Prvek a je generátor cyklcké grupy G řádu n právě, když a n p 1 pro každé prvočíslo p, kde p n. Časová náročnost algortmu č.1 Cyklcká grupa řádu n má celkem ϕ(n) možností, jak zvolt generátor. Spočteme pravděpodobnost, že náhodně zvolený prvek ze Z p je generátor: P[a generátor] = ϕ(p 1) p 1 = k =1 q 1 q k+1 =2 1 = 1 k + 1 Průměrný počet náhodných výběrů tedy bude nejvýše k + 1. (Časem toto odvodíme preczněj, zavedeme náhodnou velčnu L =počet vnějších repeat-untl cyklů a střední hodnota této náhodné velčny bude E(L) k + 1.) Časová náročnost algortmu č.1 V každém cyklu počítáme nejvýše k mocnn s exponentem menším než p metodou opakovaných čtverců, tedy budeme potřebovat čas O(k len(p) 3 ). Celkový očekávaný čas je O(k 2 len(p) 3 ), kde k je počet různých prvočísel ve faktorzac p 1. Očekávaný čas je také O(len(p) 5 ), neboť k < len(p).
Algortmus číslo 2 Nechť p je prvočíslo a p 1 = k Veškeré výpočty jsou prováděny v Z p. for 1 to k do repeat vyber náhodně b Z p b b p 1 q untl b 1 p 1 (q e ) a b a k =1 a output a =1 qe je faktorzace pro Z p. Korektnost algortmu č.2 Algortmus zastaví, protože Z p je cyklcká grupa, tudíž obsahuje prvky všech řádů, které dělí řád grupy. Prvek a má řád q e (vz následující tvrzení) a díky nesoudělnost řádů pro různá a bude výstupní prvek a mít řád k =1 qe = p 1 a bude generátorem grupy Z p. Tvrzení Buď q prvočíslo a e 1 přrozené číslo. Nechť prvek c Abelovy grupy splňuje c (qe) = 1 a c (qe 1) 1, pak řád prvku c je q e. Hledání prvku řádu q v Z p Časová náročnost algortmu č.2 Prvek b = b p 1 q 1 má řád q. Pravděpodobnost, že pro náhodně zvolený prvek b Z p je jeho p 1 q tá mocnna různá od 1, je P[b 1] = q 1 q 1 2. Každý z k repeat-untl cyklů se opakuje průměrně dvakrát, počítá se vždy jedna mocnna metodou opakovaných čtverců. Celkový očekávaný čas je O(2k len(p) 3 ), kde k je počet různých prvočísel ve faktorzac p 1. Očekávaný čas je také O(len(p) 4 ), neboť k < len(p). Algortmus Nechť p je prvočíslo a q je prvočíslo takové, že q p 1. Veškeré výpočty jsou prováděny v Z p. repeat vyber náhodně b Z p c b p 1 q untl c 1 output c Korektnost a časová složtost Algortmus je korektní, očekávaný čas běhu je O(len(p) 3 ). Přtom každý prvek řádu q může být nalezen se stejnou pravděpodobností.
Hledání prvku řádu q v Z p Pro p = 317 je p 1 = 2 2 79. Hledáme prvek řádu 79 v Z 317. Zvolíme např. b = 2. Protože 2 4 = 16 1, tak c = 16 má řád 79. Máme podgrupu G = 16 řádu 79 v grupě Z 317 a můžeme j použít pro ElGamal šfrování. Informace o grupě v telefonním seznamu : (p, n, a) = (317, 79, 16) násobí se modulo p = 317, zprávy 0 < m < 317 v exponentu se počítá modulo n = 79, jepčí klíče 0 < y < 79 generátorem grupy je prvek a = 16 Lteratura Shoup: A Computatonal Introducton to Number Theory and Algebra. Kaptola 11. http://shoup.net/ntb/