200 likes | 352 Views
Teorie čísel. Prvočíslo Generování prvočísel: Erathosenovo síto Kolik je prvočísel?. Eulerova funkce. Eulerova funkce φ (n), počet přirozených čísel menších než n a nesoudělných s n. Dodefinujeme φ (1) = 1 První hodnoty funkce φ : 1,1,2,2,4,2,6,3,6,4
E N D
Teorie čísel • Prvočíslo • Generování prvočísel: Erathosenovo síto • Kolik je prvočísel?
Eulerova funkce • Eulerova funkce φ(n), počet přirozených čísel menších než n a nesoudělných s n. • Dodefinujeme φ(1) = 1 • První hodnoty funkce φ: 1,1,2,2,4,2,6,3,6,4 • Pro a, b nesoudělná φ(ab)= φ(a). φ(b) • Snadno spočítáme třeba φ(91)=φ(7.13)=72 • p prvočíslo: φ(p)=p-1 • a je součin dvou prvočísel a=p.q, pak φ(a)=φ(p).φ(q)=(p-1).(q-1)
Vlastnosti prvočísel • Binomický koeficient (p nad i) mod p = 0, pro i=1..p-1 • (a+b)p mod p=ap+bp • Pro c menší než p je cpmod p = c,
Malá Fermatova věta • Pro c menší než p platí cp-1mod p = 1 • Pierre de Fermat (1601-1665)
Velká Fermatova věta • Neexistuje čtveřice přirozených a,b,c,n, n>2, pro která platí an+bn=cn • Údajně dokázal P.Fermat v 17. století • V roce 1900 formulováno jako 7. Hilbertův problém • Hilbertovy problémy (23), dnes vyřešeny všechny až na 2. • Velká Fermatova věta dokázána v roce 1994 (sir Andrew John Wiles), důkaz má 109 (velmi hutných) stran
Čínská věta o zbytcích • Sun Tse (snad 3.-5. století) • N je součin dvou prvočísel p,q. φ(N)=(p-1)(q-1), c φ(N) mod N = 1
Další NP problémy • Problém faktorizace součinu dvou prvočísel • A=p.q, známe A, třeba určit p a q • Pro přesnou formulaci je třeba si uvědomit, co je zde velikost vstupních dat. • Problém modulárních rovnic • f(t) = pt mod q = α • Známe-li p,q a t, snadno určíme α • Známe-li p, q a α, nelze jednoduše určit t
Distribuce klíčů D-H *1976 Whitfield Diffie *1944 Martin Hellban *1945 Massachusetts Institute of Technology (Boston) Protokol SSL
Metoda Diffie Hellman • Použiji jednosměrnou funkci f(x)=px mod q p,q jsou velká prvočísla. • Uživatel A zvolí tajný klíč t, uživatel B tajný klíč s. • Uživatel A spočítá f(t) = pt mod q = α a pošle • Uživatel B spočítá f(s) = ps mod q = β a pošle
Metoda Diffie Hellman • A spočítá βt mod q = pst mod q = K. • B spočítá αs mod q = pts mod q = K. • K se použije jako klíč pro jednorázovou šifru (např. DES)
RSA šifra *1977 • Ronald Rivest *1947 Leonard Adelman *1945 Adi Shamir *1952 University of Southern California, Los Angeles Protokol PGP
RSA šifra • Dvě prvočísla p,q • Šifrovací modul N=p.q • Dešifrovací exponent t nesoudělný s N • Φ(N)=(p-1).(q-1) • s je řešení kongurence s.t mod Φ(N)=1 • Veřejný klíč: N,s • Tajný klíč: p,q, Φ(N), t
RSA šifra • Šifrovací zobrazení y=xs mod N • Dešifrovací zobrazení x=yt mod N • xst mod N = xkΦ(N)+1 mod N = 1k.x mod N = x
Příklad • p=7, q=13 • N=91, Φ(N)=6.12=72 • t=7 • s.7 mod 72 = 1, s=31 • Veřejný klíč s=31, N=91, y=x31mod 91 • Tajný klíč t=7, p=7, q=13, Φ(N)=72, x=y7 mod 91
Příklad • x=24 • y= x31mod 91= 2431mod 91 = (2416mod 91). (248mod 91). (244mod 91). (242mod 91). (241mod 91) = 24.30.81.9.81mod 91= 42515280 mod 91 = 80 • x = 807 mod 91= (801 mod 91). (802 mod 91). (804 mod 91) = 80.30.81 mod 91 = 24
Elektronický podpis • X=yt mod N, y =xs mod A • y=yst mod N = y
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