RSA – poznámky k algoritmu
Jak vybrat prvočísla p, q Prvočísel je nekonečně mnoho Počet prvočísel menších než n: π(n)≈n/ln(n) Počet 100místných prvočísel: π(10100)- π(1099) ≈4,3*1097 ln(10100) ≈ 230, každé 230 číslo je prvočíslo
Algoritmus pro hledání prvočísla Zvol náhodné číslo n Otestuj, jestli je prvočíslo Pokud ne, polož n:=n+1
Test prvočíselnosti Vyzkoušet všechny dělitele – nereálné Malá Fermatova věta, pro c<p, p prvočíslo platí: cp-1 mod p = 1 Obrácené tvrzení neplatí Čísla, která splňují cp-1 mod p = 1 pro každé c a nejsou prvočísla, Carmichaelova čísla, nejmenší 561=3*11*17
Faktorizace modulu p*q Zkoušet všechny dělitele. Důsledek M.F.věty: Pokud N=p*q, p-1 dělí b, p nedělí a, pak p dělí NSD(ab-1,N) a volím jako malé prvočíslo, b volím NSN(1,..,k), tedy 2,6,12,60,420,840,… Je vhodné volit prvočísla, kdy p-1 má velkého dělitele, silná prvočísla.
Příklad faktorizace 341=11*31 b 2 6 12 60 C=2b-1 mod 341 3 63 NSD(C,341) 1 341 Pro a=2 Pro a=3 Pro a=5 b 2 6 12 60 C=3b-1 mod 341 8 46 162 NSD(C,341) 1 341 b 2 6 C=5b-1 mod 341 24 279 NSD(C,341) 1 31
Výpočet t na základě s Eukleidův algoritmus Příklad N=31*41=1271, φ(N)=30*40=1200 s=29 t=271
Odesílání oběžníků Najdu K≥s zpráv se stejným exponentem s. Příklad s=3, K=3 Odchytím y1 =xs mod N1, y2 =xs mod N2 , y3 =xs mod N3 Spočítám xs * (N2 N3 + N1 N3 +N1 N2) = y1 N2 N3 + y2 N1 N3 + y3 N1 N2 mod N1 N2 N3 Nyní lze vypočítat x
Příklad s=3, N1=391=17*23, N2=319=11*29, N3=1763=41*43 Odesláno bylo x=11 y1=113 mod 391 = 158, y2= 113 mod 319 = 55, y3= 113 mod 1763 = 1331
Příklad s=3, N1=391= N2=319, N3=1763 Odesláno bylo x Zachyceno bylo y1=158, y2=55 y3=1331 Rovnice:1376459 x3 = 292786340 mod 219897227 16247 * ?? = 1 mod 385385 ?? = 31898908 x3 = 1331 x = 11