Teste de primalitate Algoritmi de factorizarecriptografie/note_curs... · Teste deterministice: dac...
Transcript of Teste de primalitate Algoritmi de factorizarecriptografie/note_curs... · Teste deterministice: dac...
Teste de primalitate Algoritmi de factorizare
Teste de primalitateAlgoritmi de factorizare
Anul II
Februarie 2019
Teste de primalitate Algoritmi de factorizare
Teste de primalitate
Un test de primalitate este un criteriu pe care trebuie sa-l satisfacaun numar natural n pentru a fi un numar prim.In general, daca numarul n trece un test de primalitate, el ar puteafi prim. Daca n nu trece un test de primalitate, atunci cu sigurantael nu este prim.Testele de primalitate pot fi:
Teste deterministice: daca n trece testul, atunci cu sigurantaeste un numar prim.
Teste probabilistice: daca n trece testul, atuci probabil n esteun numar prim, cu o probabilitate p; probabilitatea ca n sa fieprim devine cu atat mai mare cu cat el trece testul de maimulte ori.
Teste de primalitate Algoritmi de factorizare
Teste de primalitate
Teste conditionate: adevarul afirmatiei “un numar n caretrece testul este prim” depinde de demonstrarea unui enuntmatematic despre care se presupune ca e adevarat, dar nu estedemonstrat.
Teste neconditionate: adevarul afirmatiei se bazeaza peenunturi si teorii matematice demonstrate.
Teste care functioneaza ın timp polinomial.
Teste care functioneaza ın timp subexponential.
Teste care functioneaza ın timp exponential.
Teste de primalitate Algoritmi de factorizare
1. Impartirea succesiva
Teorema
Orice numar natural compus n are cel putin un divizor prim maimic decat
√n.
Se imparte succesiv numarul n la toate numerele prime (sau latoate numerele impare) mai mici sau egale cu
√n.
Daca la fiecare impartire restul este diferit de 0, atunci numarul neste prim.
Exemplu
n = 17117⇒ [√n] = 130
Π([√n]) = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59,
61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127}
Niciunul din elementele lui Π([√n]) nu divide n, deci n este prim.
Teste de primalitate Algoritmi de factorizare
1. Impartirea succesiva
Este un test deterministic, neconditionat, care functioneaza ın timpexponential, deci ineficient.
Definitie
Pentru n ∈ N, n > 0, π(n) este numarul numerelor prime mai micidecat n.
π(n) = #Π(n)
Teorema
(i) Daca n ≥ 17, π(n) > n/ ln n.(ii) Daca n > 1, π(n) < 1, 25506(n/ ln n).
Pentru a decide daca n este prim, numarul ımpartirilor este deordinul lui n/ ln n. Pentru RSA, avem nevoie de numere prime decel putin 75 de cifre, deci numarul ımpartirilor necesare ıntr-unasemenea test este de aproximativ 36 · 1034!!!
Teste de primalitate Algoritmi de factorizare
2. Testul Fermat
Este un test probabilistic, neconditionat, ın timp polinomial, carese bazeaza pe Teorema lui Fermat:
Teorema
Presupunem ca n este un numar prim. Atunci oricare ar fi numarulnatural b ∈ {1, 2, . . . , n − 1},
bn−1 ≡ 1 (mod n) (∗)
Teste de primalitate Algoritmi de factorizare
2. Testul Fermat
Exemplu
Incercam sa aflam daca n = 91 este numar prim. Alegem b = 3 sicalculam
390 ≡ 1 (mod 91).
Deci este posibil ca 91 sa fie numar prim.Facem testul si pentru b = 2 si obtinem
290 ≡ 64 (mod 91)
deci 91 sigur nu este numar prim.
Daca n satisface (∗) pentru un anumit numar b, atunci n senumeste pseudoprim ın raport cu b. Este posibil ca n sa nu fieprim, dar congruenta (∗) sa fie totusi adevarata.
Teste de primalitate Algoritmi de factorizare
2. Testul Fermat
Teorema
(i) Daca n este pseudoprim ın raport cu numerele b1 si b2, atuncieste pseudoprim si ın raport cu b1b2.(ii) Daca n nu trece testul (∗) pentru un b ∈ {1, 2, . . . , n − 1},atunci n nu trece testul (∗) pentru cel putin jumatate din valorileposibile ale lui b.
Deci, sau n trece testul pentru toate numereleb ∈ {1, 2, . . . , n − 1}, sau avem cel putin 50% sanse sa nimerimpeste o valoare a lui b pentru care n nu trece testul.Problema: exista numere n care nu sunt prime, dar trec testul (∗)pentru toate valorile b ∈ {1, 2, . . . , n − 1}: numerele Carmichael.
Exemplu
561 = 3 · 11 · 17
Teste de primalitate Algoritmi de factorizare
3. Testul Solovay-Strassen
Este un test probabilistic, neconditionat, ın timp polinomial. Fieb ∈ N, p un numar prim, n = pa11 . . . parr . Notam:(
b
p
)=
0 daca p|b1 daca (b mod p) este patrat perfect−1 ın rest(
b
n
)=
(b
p1
)a1
. . .
(b
pr
)ar
Teorema (Criteriul lui Euler)
Daca n este un numar prim, atunci, oricare ar fi b ∈ Zn,
bn−12 ≡
(b
n
)(mod n) (∗∗)
Daca n satisface testul (∗∗), atunci n se numeste pseudoprim Eulerın raport cu b.
Teste de primalitate Algoritmi de factorizare
3. Testul Solovay-Strassen
Propozitie
Daca n este pseudoprim Euler ın raport cu b, atunci n estepseudoprim ın raport cu b.
Exemplu
n = 91 este pseudoprim ın raport cu b = 3, dar nu este pseudoprimEuler (345 = 27 (mod 91)).
Teorema
Daca n este compus, atunci congruenta (∗∗) nu este adevaratapentru cel putin jumatate din valorile b ∈ {1, 2, . . . , n − 1}.
Teste de primalitate Algoritmi de factorizare
3. Testul Solovay-Strassen
1 Se alege numarul natural k > 0 sib1, . . . , bk ∈ {1, 2, . . . , n − 1}.
2 i := 1
3 Se calculeaza cei doi membri ai congruentei (∗∗) pentru n sibi (timp de calcul: O(log3 n)).
4 Daca congruenta (∗∗) nu este verificata, atunci n estecompus.
5 Daca congruenta (∗∗) este verificata, atunci i := i + 1.
daca i ≤ k , atunci mergi la pasul 3.daca i > k , atunci n este numar prim, cu o probabilitate de cel
putin 1− 12k
= 2k−12k
(∼ probabilitatea ca n sa fie compus este de cel mult 12k
).
Teste de primalitate Algoritmi de factorizare
4. Testul Miller-Rabin
Este un test probabilistic, neconditionat, ın timp polinomial (1980).Fie n un numar impar si fie
s = max{α ∈ N | 2α|(n − 1)}.
Decin − 1 = 2st
cu t impar.Fie b ∈ {1, 2, . . . , n − 1}.Daca n este numar prim, atunci (Teorema lui Fermat)
bn−1 ≡ 1 (mod n).
Notandb2
s−1t ≡ a (mod n)
obtinema2 ≡ 1 (mod n).
Teste de primalitate Algoritmi de factorizare
4. Testul Miller-Rabin
Daca n este prim, atunci a = ±1 (deoarece in acest caz ecuatiaa2 ≡ 1 (mod n) are doar solutiile ±1).
Teorema
Daca n este numar prim si b ∈ Zn, b 6= 0, atunci una dinurmatoarele afirmatii este adevarata:(i) sau bt ≡ 1 (mod n),(ii) sau exista r ∈ {0, . . . , s − 1} astfel ıncat
b2r t ≡ −1 (mod n).
Teste de primalitate Algoritmi de factorizare
4. Testul Miller-Rabin
In practica, se calculeaza succesiv
bt , b2t , b4t , . . .
pana se obtine valoarea 1. Daca n este prim, atunci ultima valoarediferita de 1 trebuie sa fie −1.
Exemplu
Fie n = 561, b = 2. Atunci
n − 1 = 2435
Obtinem succesiv:235 ≡ 263 (mod 561)22·35 ≡ 2632 ≡ 166 (mod 561)22
2·35 ≡ 1662 ≡ 67 (mod 561)22
3·35 ≡ 672 ≡ 1 (mod 561).Cum ultima valoare obtinuta ınainte de a obtine 1 este 67 6= −1,561 nu este prim.
Teste de primalitate Algoritmi de factorizare
4. Testul Miller-Rabin
Daca bt ≡ 1 (mod n) sau exista r ∈ {1, 2, . . . , s − 1} astfel incatb2
r t ≡ −1 (mod n), atunci n se numeste pseudoprim tare in raportcu b.
Propozitie
Daca n este pseudoprim tare in raport cu b, atunci estepseudoprim Euler in raport cu b.
Teorema
Daca n este compus, probabilitatea ca n sa fie pseudoprim tare inraport cu un numar b ales aleatoriu este de cel mult 25%.
Deci, daca n trece testul Miller-Rabin pentru k valori ale lui b,probabilitatea ca n sa fie prim este cel putin 4k−1
4k(∼ probabilitatea
ca n sa fie compus este cel mult 14k
).
Teste de primalitate Algoritmi de factorizare
Alegerea aleatorie a numerelor prime
In numeroase criptosisteme cu cheie publica, avem nevoie saalegem aleatoriu numere prime cu un numar fix de biti, k .(1) Alegem un numar impar n care are k biti: se da primului siultimului bit valoarea 1, iar ceilalti biti sunt alesi la ıntamplare.(2) Se aplica o combinatie a ımpartirii succesive cu testulMiller-Rabin:- se ımparte n la toate numerele prime impare mai mici decat ovaloare prestabilita B (de obicei B = 106); daca la un moment datse obtine restul 0, n este compus, se alege o alta valoare pentru nsi se reıncepe algoritmul;- daca de fiecare data restul este diferit de 0, se aplica testulMiller-Rabin de l ori.Daca l = 3 si k > 1000, aceasta combinatie asigura ca un numar ncare trece testul este prim, cu o probabilitate de eroare de celmult 1
280.
Teste de primalitate Algoritmi de factorizare
Alte teste de primalitate
5. Testul Miller (1975)Test deterministic, in timp polinomial, conditionat: presupuneca Ipoteza Riemann Generalizata este adevarata.
6. Testul Adleman-Pommerance-Rumely (1983)Test deterministic, neconditionat, in timp subexponential:Tim O((log n)log log log n).
7. Testele Goldwasser-Kilian (1986), Atkin (1986)Adleman-Huang (1992)Teste probabilistice, neconditionate, in timp polinomial. Au labaza teoria curbelor eliptice.
Teste de primalitate Algoritmi de factorizare
8. Testul Agrawal-Kayal-Saxena (2002)
Este un test deterministic, neconditionat, in timp polinomial:O((log n)7,5).
Teorema
Fie n ∈ N, n ≥ 2, a ∈ N, (a, n) = 1. Atunci n este prim daca sinumai daca
(X + a)n ≡ X n + a (mod n) (∗ ∗ ∗)
Problema: timp exponential pentru a testa toti coeficientii. Sereduce numarul coeficientilor evaluand cei doi membri aicongruentei (∗ ∗ ∗) modulo un polinom de forma X r − 1, pentru rconvenabil si suficient de mic.Valoarea lui r si numarul valorilor lui a necesare sunt marginite deun polinom in log n.
Teste de primalitate Algoritmi de factorizare
8. Testul Agrawal-Kayal-Saxena (2002)
Input: n ∈ N, n > 1.
1 If (n = ab for some a ∈ N and b > 1) then Output:COMPOSITE
2 Find the smallest r ∈ N such that or (n) > 4 log2 n (or (n) =ordinul lui n modulo r; daca n este compus, exista un astfel der mai mic decat 16 log5 n)
3 If 1 < (a, n) < n for some a ≤ r , Output: COMPOSITE
4 If n ≤ r , Output:PRIME
5 For a = 1 to⌊
2√φ(r) log n
⌋do
if (X + a)n 6= X n + a (mod X r − 1, n),Output: COMPOSITE
6 Output:PRIME
Teste de primalitate Algoritmi de factorizare
Algoritmi de factorizare
1. Algoritmul lui Lehman (metoda Fermat)Exista o corespondenta bijectiva intre factorizarile n = a · b siscrierile n = t2 − s2
Daca a si b au valori apropiate, atunci s = a−b2 este mic, iar t
este putin mai mare decat√n. Se poate cauta t incepand cu
[√n + 1].
Exemplu
n = 200819; [√n] = 448, [
√n + 1] = 449
Pentru t = 449, 4492 − 200819 = 782 nu este patrat perfect.Pentru t = 450, 4502 − 200819 = 1681 = 412, deci
200819 = 4502 − 412 , n = 491 · 409
Timp: O(ec√ln n·ln ln n)
Teste de primalitate Algoritmi de factorizare
Algoritmi de factorizare
2. Algoritmul QS (Quadratic Sieve, Ciurul patratic)O generalizare a Metodei Fermat.
Idee: caut x 6= ±y astfel ıncat
x2 ≡ y2 (mod n).
Fie m = [√n] si
F (X ) = (X + m)2 − n
Pentru X ∈ [−α, α] ∩ Z, calculam si descompunem in factori primiF (X ).Alegem apoi X1, . . . ,Xk astfel incat
F (X1) . . .F (Xk) = pa11 . . . parr
cu toti exponentii ai pari. Atunci
((X1 + m) . . . (Xk + m))2 ≡ (pa1/21 . . . p
ar/2r )2 (mod n).
Teste de primalitate Algoritmi de factorizare
Algoritmi de factorizare
Exemplu
Fie n = 7429. Atunci m = 86 si
F (X ) = (X + 86)2 − 7429.
AvemF (−3) = 832 − 7429 = −540 = −1 · 22 · 32 · 5F (1) = 872 − 7429 = 140 = 22 · 5 · 7F (2) = 882 − 7429 = 315 = 32 · 5 · 7.Atunci
(87 · 88)2 ≡ (2 · 3 · 5 · 7)2 (mod 7429)
deci, pentru x = 87 · 88 (mod 7429) = 227 siy = 2 · 3 · 5 · 7 (mod 7429) = 210, x2 − y2 = 7429, decix − y = 17 este un divizor al lui 7429.