Teoria dei numeri Lezione del giorno 6 maggio 2008 Test di primalità di Rabin-Miller E’ un test di primalità probabilistico, che si applica ad un input n>1 naturale dispari (non è una restrizione sostanziale perché un naturale pari è sempre composto, tranne nel caso n=2). Rispetto al test di Fermat non presenta “eccezioni” (come i numeri di Carmichael) ed inoltre la probabilità che un numero composto superi il test è 1/4 (contro il 1/2 del test di Fermat per i numeri non di Carmichael). I passi dell’algoritmo del test di Rabin-Miller sono: 1) in input il naturale n>1 dispari 2) si calcola la massima potenza 2s di base 2 ed esponente s>0 tale che 2s sia divisore del numero pari n-1, e si scrive: n-1=2st, con t>0 naturale dispari 3) si sceglie casualmente un intero a con 1an-1 (detto base) 4) si costruiscono le riduzioni modulo n delle s potenze di base a ed esponente t, 21t, 22t, ….. , 2s-1t: i a 2 t modn i=0,1,…..,s-1 5) se è verificata almeno una delle seguenti condizioni: i a t modn =1 oppure a 2 t modn =n-1 per qualche i=0,1,….,s-1 si esce con output ”n è primo”, altrimenti si esce con output “n è composto”. Notiamo che le condizioni del passo 5) equivalgono alle congruenze: i at1 (mod n), a 2 t -1 (mod n). Verifichiamo prima di tutto che un input n primo (dispari) supera sempre il test. Utilizzeremo la proprietà seguente: se n è primo e se x è un naturale tale che x21 (mod n) , allora x1 (mod n) (infatti da x21 (mod n) segue n(x2-1), n(x-1)(x+1), n(x-1) oppure n(x+1)). Supponiamo dunque l’input n primo (dispari) e per assurdo supponiamo non verificata nessuna delle condizioni del passo 5); essendo a non multiplo di n, per il Piccolo Teorema di Fermat si ha: s an-1= a 2 t = (a 2 s -1 ) 1 (mod n) t 2 e per quanto detto sopra si ha a 2 condizioni del passo 5)) a 2 s-1 t s-1 t = (a 2 1 (mod n), ma allora (non essendo verificata nessuna delle s-2 ) 1, a 2 t 2 s -2 t 1, a 2 s -2 t 1, e così via procedendo a ritroso, 1 fino ad arrivare ad a 2 t = (a t ) 2 1, a t 1, contraddizione perchè a t 1, a t -1 sono fra le condizioni del passo 5). Esaminiamo poi la complessità dell’algoritmo. Nel passo 2), per rappresentare n-1 nella forma n-1=2st, con t>0 naturale dispari, si tratta di effettuare s successive divisioni per 2 (fermandosi quando il quoziente è dispari): queste divisioni consistono semplicemente nell’elidere le cifre =0 a destra nella rappresentazione binaria di n-1. Nel passo 4) si tratta di calcolare (come già notato) le riduzioni modulo n delle s potenze: i a 2 t modn dove i=0,1,….,s-1 ognuna con esponente e base <n, e si può utilizzare l’esponenziazione modulare, che ha complessità polinomiale di ordine O(k3) se k=L(n) è la lunghezza binaria di n (notare anche che si possono semplificare i calcoli osservando che ognuna di tali s potenze è il quadrato della precedente, quindi dal calcolo della riduzione modulo n della prima at si possono ricavare facilmente le riduzioni delle successive, quadrando ripetutamente). Poiché 2sn-1<n<2k, si ha s<k, dunque l’algoritmo ha in totale complessità di calcolo polinomiale di ordine O(k4). Anche per il test di Rabin-Miller, come per il test di Fermat, può avvenire che un input n composto (dispari) superi il test, “fingendo” di essere primo. Diremo che un naturale n composto dispari è fortemente pseudoprimo nella base a (dove 1an-1 è la base scelta casualmente nel passo 3)), se n supera il test di Rabin-Miller per tale scelta di a. Ricordiamo che n composto é detto pseudoprimo nella base a, se n supera il test di Fermat per tale scelta di a, cioè se a,n sono coprimi e se an-11 (mod n). Ma allora se n composto (dispari) è fortemente pseudoprimo nella base a, certamente n è anche pseudoprimo nella stessa base a: infatti, essendo verificata una delle condizioni del passo 5), s s -1 quadrando successivamente si ottiene (essendo (-1)2=1) an-1= a 2 t = (a 2 t ) 2 1 (mod n) (la proprietà che a,n sono coprimi è ovvia, perché in Zn si ha che [a] è invertibile con inverso [an-2]). Esempio. Consideriamo il minimo numero di Carmichael n=561=31117. Sappiamo che esso è pseudoprimo in tutte le basi a tali che a,561 sono coprimi, quindi in tutte queste basi (che sono la maggioranza) “finge” di essere primo superando il test di Fermat. Una di tali basi è per esempio a=2; se utilizziamo con tale base il test di Rabin-Miller, si ha: n-1=560=2st dove s=4, t=35, le potenze da studiare sono 235,2235=270, 2435=2140, 2835=2280, con le seguenti riduzioni modulo 561 235mod561=263 270mod561=(263)2mod561=166 2140mod561=(166)2mod561=67 2280mod561=(67)2mod561=1 quindi non é verificata nessuna delle condizioni del passo 4), e il numero n=561 non supera il test di Rabin-Miller nella base a=2 (cioé 561é soltanto pseudoprimo nella base a=2, ma non é fortemente pseudoprimo nella stessa base): 561 “si rivela” composto utilizzando la base a=2 nel test di RabinMiller. Per concludere in modo definitivo che il test di Rabin-Miller sia un test di primalità probabilistico, dobbiamo calcolare un maggiorante per la probabilità che un input n composto (dispari) superi il test per una scelta casuale della base a. In effetti storicamente Miller (1977) implementò per primo il test, ma avendo come scopo la costruzione di un test di primalità deterministico di complessità polinomiale: aveva infatti congetturato che se n è un input composto (dispari) di lunghezza binaria k, allora esiste una base a con 1a2k2 in cui n non è fortemente pseudoprimo (cioè in cui n non supera il test rivelando di essere composto); se tale congettura fosse vera (ma nessuno ha trovato una dimostrazione di ciò) il test diventerebbe deterministico, perché non si dovrebbe scegliere casualmente la base a, ma farle assumere tutti i valori nell’intervallo [1, 2k2] e se il test è sempre superato concludere con certezza che n è primo (la complessità del test è polinomiale di ordine O(k6)). Solo in seguito Rabin (1980) ebbe l’idea di utilizzare lo stesso test ma come test di primalità probabilistico, e dimostrò che la probabilità che un numero composto superi il test è 1/4: quindi eseguendo il test k volte, con k scelte indipendenti della base casuale a, la probabilità che un numero composto superi tutte le volte il test è 1/4k. Poiché la dimostrazione del Teorema di Rabin è molto macchinosa, ci limiteremo ad una forma semplificata in cui però la maggiorazione ottenuta per la probabilità è 1/2 (come nel test di Fermat), ma senza le eccezioni presentate nel test di Fermat dai numeri di Carmichael: Teorema di Rabin (forma semplificata). Sia n>1 un numero naturale composto dispari. Il numero di basi a (con 1an-1) in cui n è fortemente pseudoprimo è (n)/2. Dimostrazione: Se n non è un numero di Carmichael, sappiamo che il numero delle basi a in cui n è pseudoprimo è (n)/2, e poiché se n è fortemente pseudoprimo nella base a, n è pseudoprimo nella stessa base a, si ha la tesi. Quindi supponiamo che n sia un numero di Carmichael. Sia n-1=2st, con s>0, t naturale dispari. Esiste qualche esponente k fra t, 2t, 22t,…,2s-1t per il quale la congruenza xk-1 (mod n) abbia qualche soluzione x con 1xn-1 (per esempio k=t, x=n-1, perché (n-1)t(-1)t-1 (mod n)). Dunque possiamo considerare il massimo esponente k fra t, 2t, 22t,…,2s-1t per il quale la congruenza xk-1 (mod n) abbia qualche soluzione x con 1xn-1, e sia x=a una tale soluzione. Notiamo che a,n sono coprimi: infatti si ha a2k1 (mod n), e [a] è invertibile in Zn con inverso [a2k-1]. Essendo n numero di Carmichael, per il criterio di Korselt n è prodotto di primi distinti: n = p1p2…..pr (r>1, pi primi distinti dispari) Consideriamo i numeri coprimi v=p1, z=p2…..pr ; per il Teorema Cinese del Resto esiste una soluzione del sistema di 2 congruenze: x a (mod v) x 1 (mod z) Se si considera una soluzione canonica x si ha 0xvz-1=n-1, anzi 1x n-1 (perché 0 non è soluzione della seconda congruenza). Inoltre ak-1 (mod n), quindi (essendo vn) a maggior ragione ak-1 (mod v), xkak-1 (mod v), xk1k=1 (mod z). Ma allora non si ha xk1 (mod n) (se fosse xk+1 (mod n), sarebbe 1-1 (mod v), impossibile perché v è dispari; se invece fosse xk-1 (mod n), sarebbe -11 (mod z), impossibile perché z è dispari). Infine x,n sono coprimi: se per assurdo non lo fossero, x sarebbe multiplo di qualche pi con i=1,2,…,r; ma x non è multiplo di v=p1 (dalla prima congruenza del sistema seguirebbe p1a mentre a,n sono coprimi) ed x non è multiplo di pi con i>1 (dalla seconda congruenza del sistema seguirebbe pi1 contraddizione perché pi è primo) Consideriamo allora gli insiemi: A={y interi / 1yn-1, n fortemente pseudoprimo nella base y} S={y interi / 1yn-1, yk1 (mod n)} T={y interi / 1yn-1, y,n coprimi} Si ha AS : se n é fortemente pseudoprimo nella base y, allora o si ha yt1 (mod n) (nel qual caso i j essendo k=2it si ha yk= (y t ) 2 1 (mod n)) oppure si ha y 2 t -1 (mod n) per qualche j=0,1,…,s-1 j i- j i- j (nel qual caso se k=2it si ha per costruzione ji, da cui se j<i yk= (y 2 t ) 2 (1) 2 =1 (mod n), j mentre se j=i yk= y 2 t -1 (mod n)). Si ha poi ST: se yk1 (mod n), y2k1 (mod n), [y] è invertibile in Zn (con inverso [y2k-1]), y,n sono coprimi. Se consideriamo il numero x costruito nella prima parte (1x n-1, tale che non é xk1 (mod n), x,n coprimi) si ha xT-S. Sia g=S, e siano a1,a2,…,ag gli elementi distinti di A. Consideriamo le riduzioni bi=(aix)modn con i=1,2,…,g: sono g elementi distinti ( se fosse (aix)modn=(ajx)modn con ij, nel gruppo Zn* sarebbe [ai][x]= [aj][x], [ai]=[aj], contraddizione perché le classi [1],[2],…,[n-1] sono distinte). Inoltre i bi sono coprimi con n (perché [bi]= [ai][x]Zn*), e sono in T-S (perché se fosse bik=aikxk1 (mod n), sarebbe xk1 (mod n), contraddizione). Dunque T-S contiene un sottoinsieme di cardinalità g=S, e si conclude che: AST/2 =(n)/2 Come conseguenza di tale versione del Teorema di Rabin, si ha che la probabilità che un numero composto superi il test di Rabin-Miller è 1/2 (in effetti 1/4 nella versione originale del Teorema): infatti le basi casuali a sono in numero totale di n-1, e se h è il numero di quelle in cui n (composto) è fortemente pseudoprimo, la probabilità che n (composto) superi il test è (essendo (n)n-1): h/(n-1)h/(n)[(n)/2]/(n)=1/2 Test di primalità per numeri di forma particolare Studieremo ora dei test deterministici di primalità che sono di complessità polinomiale, ma che sono validi solo se l’input è un numero naturale di forma particolare. In particolare ci occuperemo di numeri naturali della forma 2k1: quelli della forma 2k+1 sono i cosiddetti numeri di Fermat, quelli della forma 2k-1 sono i cosiddetti numeri di Mersenne. Dimostreremo un risultato di Pocklington, che, sotto particolari ipotesi, dimostra una notevole proprietà dei fattori primi di un numero naturale. Teorema di Pocklington. Sia n>1 un numero naturale, q un fattore primo di n-1, qm la massima potenza di q che divide n-1. Se esiste un naturale a con 1an-1 tale che: 1) an-11 (mod n) 2) mcd(a(n-1)/q-1,n)=1 allora per ogni fattore primo p di n, si ha p1 (mod qm), quindi p è della forma 1+tqm, con t intero. Dimostrazione: Essendo pn dalla 1) segue an-11 (mod p), quindi [a]n-1=[1] in Zp, ossia [a] è invertibile in Zp (con inverso [an-2]) e nel gruppo moltiplicativo Zp* il periodo r di [a] è divisore di n-1; inoltre il periodo r di [a] è anche divisore della cardinalità p-1 di Zp* . Affermiamo che: r non è divisore di (n-1)/q (*) Infatti se per assurdo fosse (n-1)/q=rk (con k intero), seguirebbe [a](n-1)/q=([a]r)k=[1], p(a(n-1)/q-1), in contraddizione con la 2). Ma allora è anche vero che: q non è divisore di (n-1)/r (notare che (n-1)/r è intero perché r(n-1) ) Infatti se per assurdo fosse (n-1)/r=qh (con h intero), sarebbe (n-1)/q=rh, in contraddizione con (*). Essendo qm la massima potenza di q che divide n-1, si ha n-1=qmz, con z intero non divisibile per q. Da r(n-1) segue n-1=rw=qmz (con w intero), e poiché q non è divisore di (n-1)/r=w, per la fattorizzazione unica si ha che qmr, ma r(p-1), quindi qm(p-1), e si ha la tesi. Da questo teorema, aggiungendo un’ulteriore ipotesi, si ottiene un test deterministico di primalità: Teorema di Proth-Pocklington. Sia n>1 un naturale dispari, e sia 2m la massima potenza di 2 che divide il numero pari n-1, in modo che sia n-1=2mh con h naturale dispari. Se 2m>h si ha: n è primo esiste un naturale a, con 1an-1, tale che a(n-1)/2-1 (mod n) Dimostrazione: (): Supponiamo n primo. Per il teorema di Gauss il gruppo moltiplicativo Zn* è ciclico, e se [a] è un suo generatore, il periodo di [a] è la cardinalità n-1 di Zn* . Poiché [a]n-1=[1], si ha (a(n-1)/2)2=an-11 (mod n), e per una proprietà già osservata nel test di RabinMiller, ciò implica a(n-1)/21 (mod n), ma a(n-1)/21 (mod n) è da escludere (perché, essendo n il periodo di [a], si ha [a](n-1)/2[1]), dunque a(n-1)/2-1 (mod n). (): Supponiamo l’esistenza del naturale a, con 1an-1, tale che a(n-1)/2-1 (mod n), e per assurdo sia n non primo. Allora esisterebbe un divisore d (non banale) di n con d n , e a maggior ragione esisterebbe un divisore primo p di n con p n (basta scegliere un fattore primo p di d). Verifichiamo le ipotesi 1) e 2) del Teorema di Pocklington (con q=2). La 1) è verificata in quanto basta elevare al quadrato l’ipotesi a(n-1)/2-1 (mod n). Per quanto riguarda la 2), posto t= mcd(a(n-1)/2-1,n)=1, si ha, essendo a(n-1)/2-1 (mod n), a(n-1)/2+1=kn (con k intero), 2=kn-(a(n-1)/2-1), ossia t2 (perché tn, t(a(n-1)/2-1)); ma tn con n dispari, dunque necessariamente t=1, e la 2) è verificata. Dal Teorema di Pocklington segue allora che p1 (mod 2m), p-1=2mw (con w naturale), 2mp-1<p. Ma per ipotesi n-1=2mh con h naturale dispari e con 2m>h, da cui n=1+2mh<1+2m2m=1+22m, n22m. Essendo n dispari la disuguaglianza è stretta cioè n<22m, da cui p n <2m, contraddizione. Possiamo notare che il teorema fornisce un test di primalità deterministico per input n dispari, tale che n-1=2mh con h naturale dispari e con 2m>h: tuttavia il test non ha complessità polinomiale, perché, benché testare la congruenza a(n-1)/2-1 (mod n) equivalga alla condizione a(n-1)/2modnn-1 (verificabile con complessità polinomiale con l’esponenziazione modulare), la ricerca dell’esistenza di un valore a che soddisfi tale congruenza ha complessità esponenziale (il numero dei valori possibili di a è <n<2k se k=L(n) ). Esaminiamo però il caso particolare in cui il numero n>1 dispari sia tale che n-1=2mh con h=1 (cioè il caso n=2m+1): si ha sempre 2m>h=1, quindi si può applicare il Teorema di Proth-Pocklington, e vedremo in seguito che in tal caso basta verificare la condizione del teorema solo per a=3 per concludere con certezza che n è primo. Otterremo quindi un test di primalità deterministico di complessità polinomiale (detto criterio di Pepin) valido solo per i numeri della forma n=2m+1 (i numeri di Fermat). Studiamo dunque i numeri naturali dispari n>1 della forma n=2m+1, con m>0. Fermat dimostrò che: Teorema. Se n=2m+1 (con m>0), e se n è primo, allora necessariamente l’esponente m è una potenza di 2 della forma m=2r, con r0. Dimostrazione: Per ogni naturale s>1 vale la seguente identità algebrica: (xs-ys)=(x-y)(xs-1+xs-2y+….+xys-2+ys-1) Per assurdo supponiamo n=2m+1 primo, e l’esponente m non potenza di 2. Se 2r (con r0) è la massima potenza di 2 che divide r (al limite r=0), si ha m=2rs, con s>1, s dispari. r r r Dall’identità algebrica precedente, con x= 2(2 ) , y=-1, si ha n= 2(2 )s +1 multiplo di x-y= 2(2 ) +1: r tale divisore di n è >1 (perché 2(2 ) >0) ed è <n (perché 2rs>2r, essendo s>1), in contraddizione con l’ipotesi che n è primo. r Visto il risultato precedente, studieremo i cosiddetti numeri di Fermat della forma Fr = 2(2 ) +1 (al variare dell’intero r0), cercando quali fra essi sono numeri primi. Notizie sullo stato attuale delle ricerche si possono trovare all’indirizzo: www.prothsearch.net/fermat.html r Fermat congetturò che per ogni intero r0 il numero Fr = 2(2 ) +1 fosse primo. In effetti per r<5 i valori F0=3, F1=5, F2=17, F3=257, F4=65.537 sono numeri primi. Ma per r=5 il numero F5=4.294.967.297 non è primo, essendo divisibile per il numero primo 641. Quindi Fermat si sbagliava: inoltre a tutt’oggi per nessun r5 si è trovato un Fr che sia primo, e si congettura che un tale Fr non esista (F33 è il numero di Fermat con r minimo del quale non si conosce la primalità o la non primalità).