100 likes | 212 Views
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: π (10 100 )- π (10 99 ) ≈4,3*10 97 ln(10 100 ) ≈ 230, každé 230 číslo je prvočíslo. Algoritmus pro hledání prvočísla.
E N D
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 • Pro a=2 • Pro a=3 • Pro a=5
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