Teoria dei numeri Number Theory Concetti preliminari per RSA ¾ ¾ ¾ ¾ ¾ Barbara Masucci Dipartimento di Informatica ed Applicazioni Università di Salerno [email protected] Aritmetica modulare Algoritmo di Euclide per il calcolo del gcd Calcolo dell’inversa moltiplicativa mod n Elevazione a potenza modulare Generazione di numeri primi e test di primalità http://www.dia.unisa.it/professori/masucci 1 Barbara Masucci - DIA – Università di Salerno Congruenze mod n Teorema della divisione ¾ Dati a є Z, n є N esiste un’unica coppia (q,r) con ¾ a e b sono congruenti mod n (a ≡b mod n) se a mod n = b mod n 0 ≤r≤ n-1 tale che ¾ 73 ≡ 4 mod 23 a=q·n+r quoziente ¾ 73 mod 23 = 4 mod 23 ¾ 21 ≡-9 mod 10 resto ¾ 21 mod 10 = -9 mod 10 ¾ r è indicato con a mod n ¾ Se a ≡ b mod n allora n|(b-a) ¾a=11, n=7, 11=1·7+4 Æ r=11 mod 7=4 ¾ Se a ≡ b mod n allora b ≡ a mod n ¾a=-11, n=7,-11=(-2) ·7+3 Æ r=-11 mod 7=3 Barbara Masucci - DIA – Università di Salerno 2 Barbara Masucci - DIA – Università di Salerno 3 Aritmetica Modulare L’insieme Zn ¾ [a]n={a+kn, k є Z} ¾Addizione modulo n ¾ Insieme dei numeri che divisi per n danno lo stesso resto a mod n ¾ (a mod n) + (b mod n) = (a+b) mod n ¾ Rappresentata dal più piccolo intero positivo che è in essa ¾ b є [a]n b=a+kn ¾ Zn={[a]n, 0 ≤a≤ n-1} b-a=kn per semplicità n | (b-a) b≡ a mod n ¾Proprietà ¾ ¾ ¾ ¾ ¾ Zn={0,…, n-1} ¾ Esempio: Z4={[0]4, [1]4, [2]4, [3]4} ¾ [0]4={…, -12, -8, -4, 0, 4, 8, 12, …} ¾ [1]4={…, -11, -7, -3, 1, 5, 9, 13, …} ¾ [2]4={…, -10, -6, -2, 2, 6, 10, 14, …} 4 Massimo Comune Divisore (gcd) Barbara Masucci - DIA – Università di Salerno 5 L’insieme Zn* Zn* = { [a]n, 0<a≤ n-1 e gcd(a,n)=1} ¾ d è il massimo comune divisore di a e n se ¾ Esempio: Z4*={ [1]4, [3]4} ¾ d è un divisore di a e n ¾ ogni divisore di a e n è un divisore di d ¾ [1]4={…, -11, -7, -3, 1, 5, 9, 13, …} d=a·x+n·y ¾ [3]4={…, -9, -5, -1, 3, 7, 11, 15, …} ¾ Esempio: Z8*={ [1]8, [3]8, [5]8, [7]8} ¾ Proprietà ¾ [1]8={…, -23, -15, -7, 1, 9, 17, 25, …} ¾ gcd(a, n)=gcd(a, -n)=gcd(-a, -n)=gcd(|a|, |n|) ¾ gcd(a, 0)=|a| ¾ se gcd(a, n)=1, a e n sono relativamente primi Barbara Masucci - DIA – Università di Salerno ¾ (l’inversa additiva di x è y tale che x+y≡ 0 mod n) (Zn, +) gruppo additivo mod n ¾ [3]4={…, -9, -5, -1, 3, 7, 11, 15, …} Barbara Masucci - DIA – Università di Salerno Commutativa Associativa Distributiva Identità Esistenza inversa additiva ¾ [3]8={…, -21, -13, -5, 3, 11, 19, 30, …} 6 Barbara Masucci - DIA – Università di Salerno 7 Aritmetica Modulare Aritmetica mod 8 ¾Moltiplicazione modulo n ¾ (a mod n) · (b mod n) = (a · b) mod n ¾Proprietà ¾ ¾ ¾ ¾ ¾ Commutativa Associativa Distributiva Identità Esistenza inversa moltiplicativa ¾ L’inversa moltiplicativa di x è y tale che x·y≡ 1 mod n) 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 0 0 0 0 0 0 0 0 1 1 2 3 4 5 6 7 0 1 0 1 2 3 4 5 6 7 2 2 3 4 5 6 7 0 1 2 0 2 4 6 0 2 4 6 3 3 4 5 6 7 0 1 2 3 0 3 6 1 4 7 2 5 4 4 5 6 7 0 1 2 3 4 0 4 0 4 0 4 0 4 5 5 6 7 0 1 2 3 4 5 0 5 2 7 4 1 6 3 6 6 7 0 1 2 3 4 5 6 0 6 4 2 0 6 4 2 7 7 0 1 2 3 4 5 6 7 0 7 6 5 4 3 2 1 Addizione (Zn *, ·) gruppo moltiplicativo mod n Moltiplicazione Non tutti gli interi in Z8 hanno inversa moltiplicativa, ma quelli in Z8*={ [1]8, [3]8, [5]8, [7]8} ce l’hanno 8 Barbara Masucci - DIA – Università di Salerno Barbara Masucci - DIA – Università di Salerno 9 Algoritmo di Euclide: Esempi Algoritmo di Euclide Descritto negli Elementi di Euclide (circa 300 A. C.) Euclide Euclide (a,n) (a,n) if n = 0 if n = 0 then then return return aa else else return return Euclide Euclide (n, (n, aa mod mod n) n) Euclide (30, 21) = Euclide (21, 9) = Euclide (9, 3) = Euclide (3, 0) = 3 Euclide (4864, 3458) = Euclide (3458, 1406) = Euclide (1406, 646) = Euclide (646, 114) = Euclide (114, 76) = Euclide (76, 38) = Euclide (38, 0) = 38 Teorema Teorema della della ricorsione ricorsione del del gcd gcd Per Per tutti tutti gli gli interi interi aa ≥≥ 00 ee nn >> 00 gcd(a, gcd(a, n) n) == gcd(n, gcd(n, aa mod mod n) n) Barbara Masucci - DIA – Università di Salerno 0 0 10 Barbara Masucci - DIA – Università di Salerno 11 Algoritmo di Euclide: complessità Algoritmo di Euclide Esteso ¾ Assumiamo a > n ≥ 0 Euclide-esteso Euclide-esteso (a,n) (a,n) if if nn == 00 then then return return (a, (a, 1,1, 0) 0) (d´, (d´, x´, x´, y´) y´) ← ← Euclide-esteso Euclide-esteso (n, (n, aa mod mod n) n) (d, (d, x, x, y) y) ← ← (d´, (d´, y´, y´, x´x´- ⎣a/n⎦ ⎣a/n⎦ y´) y´) return (d, x, y) return (d, x, y) ¾ Se a<n, Euclide (a,n) chiama Euclide (n,a) e procede ¾ Se a=n, Euclide (a,n) termina subito perché a mod n=0 ¾ Al massimo log n chiamate ¾ Analisi complessa basata sui numeri di Fibonacci ¾ Per ogni chiamata O( (log a)2 ) operazioni su bit ¾ Totale: al massimo O( (log a)3 ) operazioni su bit ¾ Euclide (a,n) richiede al massimo O( (log a)2 ) operazioni su bit Polinomiale nella lunghezza dell’input 12 Barbara Masucci - DIA – Università di Salerno Algoritmo di Euclide Esteso Euclide-esteso Euclide-esteso (a,n) (a,n) if if nn == 00 then then return return (a, (a, 1,1, 0) 0) (d´, (d´, x´, x´, y´) y´) ← ← Euclide-esteso Euclide-esteso (n, (n, aa mod mod n) n) (d, (d, x, x, y) y) ← ← (d´, (d´, y´, y´, x´x´- ⎣a/n⎦ ⎣a/n⎦ y´) y´) return (d, x, y) return (d, x, y) a n d x 99 78 21 15 6 3 78 21 15 6 3 0 Barbara Masucci - DIA – Università di Salerno 3 3 3 3 3 3 -11 3 -2 1 0 1 ¾ Oltre a computare d=gcd(a,n) computa anche due interi x, y tali che d = gcd(a,n) = a·x+n·y ¾ Stesso running time asintotico di Euclide (a,n) Soluzione di ax≡b (mod n) Dati a, b, n calcolare x 0 1 3x≡7 (mod 8) soluzione 5 2 3 2x≡4 (mod 8) soluzione 2,6 4 4x≡2 (mod 8) nessuna soluzione 5 6 7 Esempi: y 14 -11 3 -2 1 0 14 13 Barbara Masucci - DIA – Università di Salerno Barbara Masucci - DIA – Università di Salerno 0 0 0 0 0 0 0 0 0 1 0 1 2 3 4 5 6 7 2 0 2 4 6 0 2 4 6 3 0 3 6 1 4 7 2 5 4 0 4 0 4 0 4 0 4 5 0 5 2 7 4 1 6 3 6 0 6 4 2 0 6 4 2 7 0 7 6 5 4 3 2 1 15 Soluzione di ax≡b (mod n) Soluzione di ax≡1 (mod n) (a,n) ¾ Ha soluzioni se e solo se g|b gg == gcd gcd(a,n) ¾ Ha soluzioni se e solo se gcd(a,n) =1 ¾ Se g|b ci sono esattamente g distinte ¾ Se gcd(a,n) =1 l’unica soluzione mod n è: x´ soluzioni mod n: b n x' + i g g dove dove per i = 0,1,…, g-1 ¾ Tale soluzione viene denotata con a-1 mod n (inversa moltiplicativa di a, mod n) g = a·x′+n·y (da Euclide-esteso (a,n) ) 16 Barbara Masucci - DIA – Università di Salerno Soluzione di ax≡1 (mod 8) 1 = 1-1 mod 8 3= mod 8 5 = 5-1 mod 8 7 = 7-1 mod 8 0 1 2 3 4 5 6 7 0 0 0 0 0 0 0 0 0 Barbara Masucci - DIA – Università di Salerno 1 0 1 2 3 4 5 6 7 2 0 2 4 6 0 2 4 6 3 0 3 6 1 4 7 2 5 4 0 4 0 4 0 4 0 4 17 Barbara Masucci - DIA – Università di Salerno Soluzione di ax≡1 (mod 7) Ha soluzioni se e solo se gcd(a,7) =1 Ha soluzioni se e solo se gcd(a,8) =1 3-1 1 = a·x′+n·y (da Euclide-esteso (a,n) ) 5 0 5 2 7 4 1 6 3 6 0 6 4 2 0 6 4 2 1 = 1-1 mod 7 7 0 7 6 5 4 3 2 1 4 = 2-1 mod 7 5 = 3-1 mod 7 2 = 4-1 mod 7 3 = 5-1 mod 7 6 = 6-1 mod 7 18 0 1 2 3 4 5 6 0 0 0 0 0 0 0 0 Barbara Masucci - DIA – Università di Salerno 1 0 1 2 3 4 5 6 2 0 2 4 6 1 3 5 3 0 3 6 2 5 1 4 4 0 4 1 5 2 6 3 5 0 5 3 1 6 4 2 6 0 6 5 4 3 2 1 19 Esempio: calcolo di 5-1 mod 7 Euclide-esteso Euclide-esteso (a,n) (a,n) if n = 0 then return if n = 0 then return (a, (a, 1,1, 0) 0) (d´, (d´, x´, x´, y´) y´) ← ← Euclide-esteso Euclide-esteso (n, (n, aa mod mod n) n) (d, (d, x, x, y) y) ← ← (d´, (d´, y´, y´, x´x´- ⎣a/n⎦ ⎣a/n⎦ y´) y´) return (d, x, y) a n return (d, x, y) d = x·a + y·n 1 = -2·7 + 3·5 3= 5-1 mod 7 Esempio: calcolo di 5-1 mod 11 7 5 d 1 x y -2 3 5 2 1 1 -2 2 1 1 0 1 1 0 1 1 0 20 Barbara Masucci - DIA – Università di Salerno Euclide-esteso Euclide-esteso (a,n) (a,n) if n = 0 then return if n = 0 then return (a, (a, 1,1, 0) 0) (d´, (d´, x´, x´, y´) y´) ← ← Euclide-esteso Euclide-esteso (n, (n, aa mod mod n) n) (d, (d, x, x, y) y) ← ← (d´, (d´, y´, y´, x´x´- ⎣a/n⎦ ⎣a/n⎦ y´) y´) return (d, x, y) a n return (d, x, y) d = x·a + y·n 1 = 1·11 + (-2)·5 -2 = 5-1 mod 11 -2 = 9 mod 11 Barbara Masucci - DIA – Università di Salerno 11 5 d 1 x y 1 -2 5 1 1 0 1 1 0 1 1 0 9 = 5-1 mod 11 21 Teorema cinese del resto Teorema cinese del resto Esempio Dati x≡2 mod 5 ¾ m1, m2,…,mt interi positivi tali che gcd(mi,mj)=1, i≠j x≡3 mod 13 ¾ M= m1·m2 …·mt ¾ a1, a2,…,at interi a1=2, m1=5, M1=13, y1=13-1 mod 5=2 Esiste una sola soluzione modulo M al sistema di congruenze x≡a1 mod m1 x≡a2 mod m2 … x≡at mod mt a2=3, m2=13, M2=5, y2=5-1 mod 13= 8 M=65 t X = ∑ ai ⋅ Mi ⋅ yi mod M Soluzione del sistema: i=1 Mi = M/mi Barbara Masucci - DIA – Università di Salerno 2 X = ∑ ai ⋅ Mi ⋅ yi mod 65 = 2 ⋅ 26 + 3 ⋅ 40 mod65 = 42 mod 65 yi = Mi-1 mod mi i=1 22 Barbara Masucci - DIA – Università di Salerno 23 Elevazione a potenza modulare Metodo naive Elevazione a potenza modulare Calcolo di xy mod z Calcolo di xy mod z ¾Metodo naive Potenza_Modulare_naive Potenza_Modulare_naive (x, (x, y, y, z) z) ¾Metodo left-to-right aa ← ← 11 for for ii == 11 to to yy do do aa ← ← (a (a··x) x) mod mod zz return return aa ¾Metodo right-to-left Barbara Masucci - DIA – Università di Salerno 24 Elevazione a potenza modulare Metodo naive Calcolo di xy Barbara Masucci - DIA – Università di Salerno 25 Elevazione a potenza modulare Metodo left-to-right Calcolo di xy mod z mod z Idea: y = y020+ y121 +… +yt2t y = y0+2(y1+ 2(y2+… +2(yt-1+2yt))))) Potenza_Modulare_naive (x, y, y, z) z) Potenza_Modulare_naive (x, aa ← ← 11 for for ii == 11 to to yy do do aa ← (a ← (a··x) x) mod mod zz return return aa 512 Se y è di 512 bit, occorrono ≈ 2 Esempio: 40 = 0·20 + 0·21 + 0·22 +1·23 + 0·24 +1·25 40 = 0 + (2 (0 + 2 (0 + (2 (1 + 2 (0 + 2·1)))))) operazioni Esponenziale nella lunghezza dell’esponente Barbara Masucci - DIA – Università di Salerno 26 Barbara Masucci - DIA – Università di Salerno 27 Elevazione a potenza modulare Metodo left-to-right Elevazione a potenza modulare Metodo left-to-right Calcolo di xy mod z Idea: y = y020+ y121 +… +yt2t y = y0+2(y1+ 2(y2+… +2(yt-1+2yt))))) xy y0+2(y1+2(y2+…+2(yt-1+2yt))))) =x y 2(y +2(y +…+2(yt-1+2yt))))) = x 0x 1 2 y = x 0 (x y1+2(y2+…+2(yt-1+2yt))))) 2 y1 = x (x ( … (x yt-1 Idea: 28 y = y020+ y121 +… +yt2t y y xy = x 0 (… (x t-1(x t)2)2… )2 Potenza_Modulare Potenza_Modulare (x, (x, y, y, z) z) aa ← ← 11 for for ii == tt downto downto 00 do do aa ← ← (a (a··a) a) mod mod zz if then aa ← ← (a (a·· x) x) mod mod zz if yyi i == 11 then return a return a Se y è di 512 bit, occorrono ≈ 512 operazioni Polinomiale nella lunghezza dell’esponente Barbara Masucci - DIA – Università di Salerno y y (x0 (x1 2 2 2 2 2 (x0 (x1) ) ) ) ) Barbara Masucci - DIA – Università di Salerno 29 Elevazione a potenza modulare Metodo left-to-right y = y0+2(y1+… +2(yt-1+2yt))))) y y xy = x 0 (… (x t-1(x t)2)2… )2 x40 = x0 ( x0 Elevazione a potenza modulare Metodo left-to-right Calcolo di xy mod z y = y0+2(y1+… +2(yt-1+2yt))))) 40 = 0 + (2 (0 + 2 (0 + (2 (1 + 2 (0 + 2·1)))))) y (x t)2)2… )2 Barbara Masucci - DIA – Università di Salerno Idea: y = y020+ y121 +… +yt2t Esempio: x40 40 = 0·20 + 0·21 + 0·22 + 1·23 + 0·24 + 1·25 ) y y y +…+2(yt-1+2yt))))) 2 2 = x 0 ( x 1( x 2 )) y0 Calcolo di xy mod z Potenza_Modulare Potenza_Modulare (x, (x, y, y, z) z) aa ← ← 11 for for ii == tt downto downto 00 do do aa ← ← (a (a··a) a) mod mod zz if then aa ← ← (a (a·· x) x) mod mod zz if yyi i == 11 then return a return a 334040mod mod 73=8 73=8 yy55=1, =1, yy44=0, =0, yy33=1, =1, yy22=0, =0, yy11=0, =0, yy00=0 =0 30 Barbara Masucci - DIA – Università di Salerno 31 Elevazione a potenza modulare Metodo right-to-left Calcolo di xy mod z y = y020+ y121 +… +yt2t 0 Idea: Elevazione a potenza modulare Metodo right-to-left 1 t Calcolo di xy mod z 0 y Idea: xy = x2 y0+2 y1…+2 yt 0 1 t = x2 y0 · x2 y1 · … · x2 yt 0 y 1 y t y = (x2 ) 0 · (x2 ) 1 · … · (x2 ) t y = y020+ y121 +… +yt2t 1 y t yt xy = (x2 ) 0 · (x2 ) 1 · … · (x2 ) Esempio: x40 40 = 0·20+ 0·21 +0·22 + 1·23 + 0·24 + 1·25 0 0 0 1 0 x40 = (x1) · (x2) · (x4) · (x8) · (x16) · (x32) 32 Barbara Masucci - DIA – Università di Salerno Elevazione a potenza modulare Metodo right-to-left Calcolo di xy mod z 1 y 33 Barbara Masucci - DIA – Università di Salerno Elevazione a potenza modulare Metodo right-to-left y = y020+ y121 +… +yt2t 0 y Idea: 1 t yt Calcolo di xy mod z 0 y Idea: xy = (x2 ) 0 · (x2 ) 1 · … · (x2 ) y = y020+ y121 +… +yt2t 1 y t yt xy = (x2 ) 0 · (x2 ) 1 · … · (x2 ) Esempio: x40 Esempio: x40 40 = 0·20+ 0·21 +0·22 + 1·23 + 0·24 + 1·25 40 = 0·20+ 0·21 +0·22 + 1·23 + 0·24 + 1·25 0 0 0 =1 1 x =1 x2 =1 x4 1 0 x40 = (x1) · (x2) · (x4) · (x8) · (x16) · (x32) Barbara Masucci - DIA – Università di Salerno 1 =1 x8 x16 x32 34 0 0 0 =1 =1 =1 1 0 x40 = (x1) · (x2) · (x4) · (x8) · (x16) · (x32) x40 = Barbara Masucci - DIA – Università di Salerno 1 =1 x8 · x32 35 Elevazione a potenza modulare Metodo right-to-left Potenza_Modulare Potenza_Modulare (x, (x, y, y, z) z) if if yy == 00 then then return return 11 X X← ← x; x; PP ← ← 11 if then PP ← ← xx if yy00 == 11 then for for ii == 11 to to tt do do X ← X ·X X ← X ·X mod mod zz if then P ← P ·X mod z if yyi=1 i=1 then P ← P ·X mod z return return PP i 0 1 2 3 4 5 yi 0 X 5 P 1 0 25 1 1 625 625 0 681 625 Numeri primi Polinomiale nella lunghezza dell’esponente 596mod 5596 5 mod 1234 1234 6 7 8 1 0 1 0 0 1 1011 369 421 779 947 925 67 67 1059 1059 1059 1013 36 pi primo, ei intero positivo Barbara Masucci - DIA – Università di Salerno 37 ¾Per ogni a ∈ Zn*, aφ(n) = 1 mod n φ(n) = cardinalità di Zn* (funzione di Eulero) ¾Esempi: se p primo ¾a=3, n=10, φ(10)=4 Æ 34=81=1 mod 10 ¾a=2, n=11, φ(11)=10 Æ 210=1024=1 mod 11 se p,q primi Barbara Masucci - DIA – Università di Salerno n = p1e1 p2e2... pkek Teorema di Eulero Zn* = { [a]n, 0<a≤ n-1 e gcd(a,n)=1} ⎛ 1⎞ ⎛ 1 ⎞ ⎛ 1 ⎞ ¾ φ(n) = n ⋅ ⎜⎜ 1 − ⎟⎟ ⋅ ⎜⎜ 1 − ⎟⎟ L ⎜⎜ 1 − ⎟⎟ ⎝ p1 ⎠ ⎝ p2 ⎠ ⎝ pk ⎠ ¾ Ogni intero composto n > 1 può essere scritto in modo unico come prodotto di potenze di primi 9 Funzione di Eulero ¾ φ(pq) = (p-1)(q-1) ¾ Esempi: 2, 3, 5, 7, 11, 13, 17, 19,... ¾ Teorema fondamentale dell’aritmetica Barbara Masucci - DIA – Università di Salerno ¾ φ(p) = p-1 ¾ Un intero p > 1 è un numero primo se e solo se i suoi unici divisori sono 1 e sé stesso se n = p1e1 p2e2... pkek, pi primo, ei ≥ 0 38 Barbara Masucci - DIA – Università di Salerno 39 Generazione di un primo ‘grande’ Teorema di Fermat ¾Se p è primo, per ogni a ∈ Zp*, ap-1 = 1 mod p 1. 1. Genera Genera aa caso caso un un dispari dispari pp di di grandezza grandezza appropriata appropriata 2. Testa se p è primo 2. Testa se p è primo 3. 3. Se Se pp èè composto, composto, go go to to 1. 1. ¾Se p è primo, per ogni a ∈ Z ap = a mod p Esempi: ¾a=7, p=19 Æ 718 = 1 mod 19 ¾a=10, p=5 Æ 105 = 10 mod 5 = 0 mod 5 Barbara Masucci - DIA – Università di Salerno 40 41 Barbara Masucci - DIA – Università di Salerno Distribuzione dei numeri primi Generazione di un primo ‘grande’ 1. 1. Genera Genera aa caso caso un un dispari dispari pp di di grandezza grandezza appropriata appropriata 2. Testa se p è primo 2. Testa se p è primo 3. 3. Se Se pp èè composto, composto, go go to to 1. 1. ¾ π(x) = numero di primi in [2,x] ¾ Teorema dei numeri primi: lim x →∞ π (x) x/ln x =1 π(x) è circa x/ln x Come testare se un numero p è primo? Che probabilità abbiamo che p sia primo? Barbara Masucci - DIA – Università di Salerno ¾ Esempio: π(1010) = 455.052.511 1010/ln 1010 ≈ 434.294.481,9 (4% in meno) 42 Barbara Masucci - DIA – Università di Salerno 43 Scelta di un primo di 512 bit Scelta di un primo di 1024 bit ¾ Scelto un intero in [2,2512] la probabilità che sia primo è circa 1 su ln 2512 (ln 2512 ≈ 354,89) ¾ Scelto un intero in [2,21024] la probabilità che sia primo è circa 1 su ln 21024 (ln 21024 ≈ 709,78) ¾ Numero medio di tentativi ≈ 354,89 ¾ Numero medio di tentativi ≈ 709,78 ¾ Se si scelgono solo dispari, numero medio di tentativi ≈ 177,44 ¾ Se si scelgono solo dispari, numero medio di tentativi ≈ 354,89 ¾ Se si scelgono dispari in [2511,2512] la probabilità è ¾ Se si scelgono dispari in [21023,21024] probabilità ≈ 1 … ( … 512 511 2 2 − 512 ln 2 ln 2511 ) … 1 1 2 511 2 ≈ 1 177,79 ≈ 1 … 510 bit scelti a caso Barbara Masucci - DIA – Università di Salerno 44 Test di Primalità ( … 21024 21023 − ln 21024 ln 21023 ) … 1 1 1023 2 2 ≈ 1 355,23 1022 bit scelti a caso 45 Barbara Masucci - DIA – Università di Salerno Test di primalità probabilistici Due tipi di test: p ¾ Probabilistici ¾ Deterministici primo Test Test Primalità Primalità Probabilmente! Probabilmente! composto Certamente! Certamente! ¾ Il test può sbagliare ¾ numero composto viene dichiarato primo ¾ probabilità di errore ≤ 1/2 ¾ Ripetendo il test indipendentemente t volte, probabilità di errore ≤ (1/2)t Barbara Masucci - DIA – Università di Salerno 46 Barbara Masucci - DIA – Università di Salerno 47 Test di primalità probabilistici Test di primalità probabilistici Test di Solovay-Strassen Insieme di witness W(p) ¾ dato a∈[1, p-1] è facile verificare se a∈W(p) ¾ se p è primo allora W(p) è vuoto ¾ se p è composto allora |W(p)| ≥ p/2 ¾Pubblicato nel 1977 ¾Probabilità di errore ≤ (1/2)t Test di Miller-Rabin ¾Il più usato in pratica Scelgo Scelgo aa Barbara Masucci - DIA – Università di Salerno 48 Test di Miller-Rabin ¾Probabilità di errore ≤ (1/4)t 49 Barbara Masucci - DIA – Università di Salerno Test di Miller-Rabin k ¾Data la sequenza aq, a2q, …,a2 q, se p è primo una delle due condizioni è vera: ¾Sia p il numero da testare ¾p-1=2kq, con q dispari e k>0 k ¾Scegli a∈[1, p-1] e calcola aq, a2q, …,a2 q (quadrati ripetuti) ¾Se p è primo, a2 q = 1 mod p (teorema di Fermat) j ¾Sia j il più piccolo indice per cui a2 q = 1 mod p k ¾ Se j=0, allora aq = 1 mod p j-1 j-1 ¾ Se j>0, allora (a2 q -1)(a2 q +1) mod p =0 ¾ p divide uno dei due fattori ¾ p non può dividere il primo, altrimenti j non è il più j piccolo valore per cui a2 q = 1 mod p j-1 ¾ p divide il secondo fattore, da cui a2 q = -1 mod p Barbara Masucci - DIA – Università di Salerno ¾Il più veloce 50 ¾aq =1 mod p j-1 = -1 mod p per qualche j ∈[1, k] ¾Altrimenti p è composto ¾a2 q Barbara Masucci - DIA – Università di Salerno 51 Test di Miller-Rabin Test di Miller-Rabin Insieme di witness di Miller-Rabin Test MR(p) ¾calcola k>0 e q dispari: p-1=2kq ¾scegli a caso a∈[1, p-1] ¾if aq=1 mod p, then return “primo” WMR(p) = {a : a ≠ 1 mod p and j a2 q ≠ -1 mod p per ogni j∈[0,k-1]} ¾ Se p è un primo dispari WMR(p) è vuoto ¾for j=0 to k-1 do j ¾if a2 q = -1 mod p, then return “primo” ¾return “composto” ¾ Se p è un numero composto dispari | WMR(p) | ≥ (3/4) ·φ(p) Polinomiale nella lunghezza dell’input 52 Barbara Masucci - DIA – Università di Salerno Test di Miller-Rabin p=29 Witness di Miller-Rabin 2 29-1 29-1 == 222 ··77 ¾ 107 mod 29=17 (continua) ¾ (107)2 mod 29=28=-1 mod 29 (stop: “primo”) 2 221-1 221-1 == 222 ··55 55 WMR(221) = {a : a ≠ 1 mod 221 and j a2 ·55 ≠ -1 mod 221 per ogni j∈[0,1]} ¾ a=5 55 ¾ (555)2 mod 221=168 (valori terminati, stop: “composto”) ¾ a=21 ¾ 27 mod 29=12 (continua) ¾ Witness di Miller-Rabin ¾ 555 mod 221=112 (continua) ¾ a=2 (27)2 53 Barbara Masucci - DIA – Università di Salerno Test di Miller-Rabin p=221 WMR(29) = {a : a ≠ 1 mod 29 and j a2 ·7 ≠ -1 mod 29 per ogni j∈[0,1]} ¾ a=10 7 k p-1 p-1==22kqq con conqqdispari dispari q ¾ 2155 mod 221=220= -1 mod 221 (stop: “primo”) mod 29=28= -1 mod 29 (stop: “primo”) ¾ Per ogni a ∈ {1,…,220}/ WMR(221), output: “primo” ¾ Prova per tutti gli a ∈[1,28]: sempre output “primo” Barbara Masucci - DIA – Università di Salerno ¾ a=1, 21, 47, 174, 200, 220 54 Barbara Masucci - DIA – Università di Salerno 55 Test di primalità deterministici Bibliografia ¾ Fino al 2002, non erano noti test deterministici efficienti ¾cap. 4 (Finite Fields) ¾cap. 8 (Introduction to Number Theory) ¾ Nel 2002, primo test deterministico polinomiale proposto da Agrawal, Kayal e ¾Introduction to Algorithms by Cormen, Leiserson, Rivest (I ed) Saxena ¾cap 31 (Number Theory) ¾ Miller-Rabin ancora usato perché più efficiente Barbara Masucci - DIA – Università di Salerno ¾Cryptography and Network Security by W. Stallings (2005) 56 Barbara Masucci - DIA – Università di Salerno 57