• Non ci sono risultati.

Nella lezione precedente abbiamo descritto il Test probabilistico di primalità di Rabin-Miller:

N/A
N/A
Protected

Academic year: 2021

Condividi "Nella lezione precedente abbiamo descritto il Test probabilistico di primalità di Rabin-Miller:"

Copied!
1
0
0

Testo completo

(1)

Teoria dei numeri e Crittografia: lezione del 10 maggio 2011

Nella lezione precedente abbiamo descritto il Test probabilistico di primalità di Rabin-Miller:

1) in input il naturale n>1 dispari

2) si calcola la massima potenza 2

s

di base 2 ed esponente s>0 tale che 2

s

sia divisore del numero pari n-1, e dunque si rappresenta (n-1) nella forma: n-1=2

s

t, con t>0 numero naturale dispari 3) si sceglie casualmente un intero a con 1an-1 (detto base)

4) si costruiscono le riduzioni modulo n delle s potenze di base a ed esponente t, 2

1

t, 2

2

t, ….. , 2

s-1

t:

a

2it

modn i=0,1,…..,s-1 5) se è verificata almeno una delle seguenti condizioni:

at

modn =1 oppure a

2it

modn =n-1 per qualche i=0,1,….,s-1

(equivalenti alle congruenze: a

t

1 (mod n), a

2it

-1 (mod n) i=0,1,…..,s-1) si esce con output ”n è primo”, altrimenti si esce con output “n è composto”.

Abbiamo anche verificato che il test ha complessità  O(x

4

) (dove x è la lunghezza binaria dell’input) e che un un input primo supera il test.

Abbiamo definito un input n (composto) fortemente pseudoprimo nella base a (con 1 a n-1), se n supera il test di Rabin-Miller per tale scelta di a, e abbiamo dimostrato che certamente un tale n è anche pseudoprimo nella stessa base a.

Nota: osserviamo che nel passo 4) si possono anche semplificare i calcoli osservando che ognuna delle s potenze a

2it

è il quadrato della precedente, quindi dal calcolo della riduzione modulo n di a

t

(che é la prima) si possono ricavare facilmente le riduzioni delle successive, quadrando ripetutamente le precedenti riduzioni ed ogni volta riducendo il risultato modulo n .

Esempio.

Consideriamo il minimo numero di Carmichael n=561=31117.

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=2

s

t dove s=4, t=35, le potenze da studiare sono 2

35

,2

235

=2

70

, 2

435

=2

140

, 2

835

=2

280

, con le seguenti riduzioni modulo 561:

2

35

mod561=263

2

70

mod561=(263)

2

mod561=166 2

140

mod561=(166)

2

mod561=67 2

280

mod561=(67)

2

mod561=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é in tale base 561 é soltanto pseudoprimo nella base, ma non é fortemente pseudoprimo): in pratica 561 “si rivela” composto utilizzando la base a=2 nel test di Rabin-Miller (mentre “fingeva” di essere primo nel test di Fermat).

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.

Nella dimostrazione originale di Rabin (1980) si dimostra 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/4

k

.

(2)

Poiché la dimostrazione del Teorema di Rabin è molto complicata, ci limiteremo ad una forma semplificata in cui però la maggiorazione ottenuta per la probabilità è 1/2 (come nel test di Fermat), ma sempre senza le eccezioni costituite 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 1 a n-1) in cui n è fortemente pseudoprimo è  (n)/2 (quindi la probabilità che un numero composto superi il test di Rabin-Miller è  ((n)/2)/(n-1)  ((n-1)/2)/(n-1)=1/2).

Dimostrazione:

Se n non è un numero di Carmichael, sappiamo che il numero delle basi a in cui n è pseudoprimo è

 (n)/2, e poiché abbiamo già notato sopra che se n è fortemente pseudoprimo nella base a, allora n è pseudoprimo nella stessa base, si ha la tesi.

Quindi supponiamo che n sia un numero di Carmichael.

Sia n-1=2

s

t, con s>0, t numero naturale dispari.

Osserviamo che esiste qualche esponente k = t, 2t, 2

2

t,…,2

s-1

t e qualche intero a con 1 a n-1 tale che si abbia:

a

k

 -1 (mod n) (*)

(per esempio basta prendere k=t, x=n-1, perché (n-1)

t

(-1)

t

-1 (mod n) essendo t dispari).

Dunque possiamo considerare il massimo esponente k = t, 2t, 2

2

t,…,2

s-1

t per il quale esiste qualche intero a con 1 a n-1 che soddisfi (*).

Notiamo che a,n sono coprimi: infatti si ha a

2k

(-1)

2

=1 (mod n), e [a] è invertibile in Z

n

con inverso [a

2k-1

].

Essendo n numero di Carmichael, per il Teorema di Korselt n è prodotto di primi distinti:

n = p

1

p

2

…..p

r

(con r>1; p

i

primi distinti dispari)

Consideriamo i numeri naturali (ovviamente coprimi) v=p

1

, z=p

2

…..p

r

; per il Teorema Cinese del Resto esiste una soluzione del sistema di 2 congruenze:

(mod ) 1 (mod )

x a v

x z

 

  

Se si considera una soluzione canonica del sistema si ha 0 x vz-1=n-1, anzi 1 x n-1 (perché 0 non è ovviamente soluzione del sistema). Inoltre da (*) (essendo vn) a maggior ragione si ottiene a

k

 -1 (mod v), x

k

 a

k

 -1 (mod v), x

k

1

k

=1 (mod z).

Ma allora certamente non si ha x

k

1 (mod n) (se fosse x

k

+1 (mod n), sarebbe 1-1 (mod v), contraddizione perché v è dispari; se invece fosse x

k

-1 (mod n), sarebbe -11 (mod z), contraddizione perché z è dispari).

Infine x,n sono coprimi: se per assurdo non lo fossero, x sarebbe multiplo di qualche fattore primo p

i

con i=1,2,…,r ; ma x non è multiplo di v=p

1

(dalla prima congruenza del sistema seguirebbe p

1

a mentre a,n sono coprimi) ed x non è neanche multiplo di p

i

con i>1 (dalla seconda congruenza del sistema seguirebbe p

i

1 contraddizione perché p

i

è primo).

Consideriamo allora gli insiemi:

A={yN / 1 y n-1, n fortemente pseudoprimo nella base y}

S={ yN / 1 y n-1, y

k

1 (mod n)}

T={ yN / 1 y n-1, y,n coprimi}

Notiamo che si ha AS : se n é fortemente pseudoprimo nella base y, allora o si ha y

t

1 (mod n) (nel qual caso essendo k=2

i

t si ha y

k

= ( ) y

t 2i

1 (mod n)) oppure si ha y

2jt

 -1 (mod n) per qualche j=0,1,…,s-1 (nel qual caso se k=2

i

t si ha j i, per la massimalità della scelta di k, da cui se j<i y

k

=

2 2-

( y

jt

)

i j

(1)2i-j

=1 (mod n), mentre se j=i allora y

k

= y

2jt

 -1 (mod n)).

Si ha poi ST: se y

k

1 (mod n), y

2k

1 (mod n), quindi [y] è invertibile in Z

n

con inverso [y

2k-1

], da

cui y,n sono coprimi.

(3)

Se consideriamo il numero x costruito nella prima parte come soluzione canonica di un sistema di congruenze (1 x n-1, tale che non é x

k

1 (mod n), x,n coprimi) si ha xT-S. Sia g=S, e siano a

1

,a

2

,…,a

g

gli elementi distinti di S. Consideriamo le riduzioni b

i

=(a

i

x)modn con i=1,2,…,g: sono g elementi distinti (se fosse (a

i

x)modn=(a

j

x)modn con ij, nel gruppo Z

n

* sarebbe [a

i

][x]= [a

j

][x], da cui [a

i

]=[a

j

], contraddizione perché le classi [1],[2],…,[n-1] sono distinte). Inoltre i b

i

sono coprimi con n (perché [b

i

]= [a

i

][x]Z

n

*), e sono elementi di T-S (se fosse b

ik

=a

ik

x

k

1 (mod n), sarebbe x

k

1 (mod n), contraddizione).

Dunque T-S contiene un sottoinsieme di cardinalità g =S, e si conclude che:

ST/2 =(n)/2

Poiché infine AS, si conclude che A (n)/2 e si ha la tesi.

Nota. Miller (1977) implementò per primo il test di primalità sopra esposto, e formulò la seguente congettura (ancora non dimostrata né vera né falsa) :

se n è un input composto (dispari) di lunghezza x=L(n), allora esiste una base a con 1 a 2x

2

in cui n non è fortemente pseudoprimo (cioè in cui n non supera il test, rivelando di essere composto).

Se tale congettura fosse dimostrata vera, il test diventerebbe deterministico di complessità non superiore al polinomiale, perché non si dovrebbe scegliere casualmente la base a, ma farle assumere tutti i valori nell’intervallo [1, 2x

2

] e se il test è sempre superato concludere con certezza che n è primo (la complessità del test sarebbe di ordine  O(x

6

)).

Fu in seguito Rabin (1980) che trasformò questo “tentativo” di costruzione di test deterministico nel test probabilistico, ora conosciuto appunto come test di Rabin-Miller.

Test di primalità per numeri di forma particolare

Studieremo ora dei test deterministici di primalità che sono di complessità non superiore alla polinomiale, ma che sono validi solo se l’input è un numero naturale di forma particolare.

In particolare ci occuperemo di numeri naturali della forma 2

k

1: quelli della forma 2

k

+1 sono i cosiddetti numeri di Fermat, quelli della forma 2

k

-1 sono i cosiddetti numeri di Mersenne.

Dimostreremo un risultato di Pocklington, che, sotto particolari ipotesi, dimostra una notevole proprietà relativa alla struttura dei fattori primi di un numero naturale.

Teorema di Pocklington.

Sia n>1 un numero naturale, q un fattore primo di n-1, q

m

la massima potenza di q che divide n-1.

Se esiste un naturale a con 1an-1 tale che:

1) a

n-1

1 (mod n) 2) mcd(a

(n-1)/q

-1,n)=1

allora per ogni fattore primo p di n, si ha p1 (mod q

m

), quindi p è della forma 1+tq

m

, con t intero.

Dimostrazione:

Essendo pn dalla 1) segue a

n-1

1 (mod p), quindi [a]

n-1

=[1] in Z

p

, ossia [a] è invertibile in Z

p

(con inverso [a

n-2

]) e nel gruppo moltiplicativo Z

p

* il periodo r =ord([a]) è divisore di n-1; inoltre il periodo r =ord([a]) è anche divisore della cardinalità p-1 di Z

p

* .

Affermiamo che:

r non è divisore di (n-1)/q (*)

Infatti se per assurdo fosse (n-1)/q=rk (con k intero), seguirebbe (in Z

p

):

[a]

(n-1)/q

=([a]

r

)

k

=[1], p(a

(n-1)/q

-1) in contraddizione con l’ipotesi 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 (*).

(4)

Essendo q

m

la massima potenza di q che divide n-1, si ha n-1=q

m

z, con z intero non divisibile per q.

Da r(n-1) segue n-1=rw=q

m

z (con w intero), e poiché q non è divisore di (n-1)/r=w, ma q

m

(n-1), per la fattorizzazione unica si ha che q

m

r, ma r(p-1), quindi q

m

(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 2

m

la massima potenza di 2 che divide il numero pari n-1, in modo che sia n-1=2

m

h con h naturale dispari. Se 2

m

>h si ha:

n è primo  esiste un naturale a, con 1an-1, tale che a

(n-1)/2

-1 (mod n) Dimostrazione:

(): Supponiamo n primo. Per il teorema di Gauss il gruppo moltiplicativo Z

n

* è ciclico, e se [a] è un suo generatore, il periodo di [a] è la cardinalità n-1 di Z

n

* .

Poiché [a]

n-1

=[1], si ha (a

(n-1)/2

)

2

=a

n-1

1 (mod n), e per una proprietà già osservata nel test di Rabin- Miller, ciò implica a

(n-1)/2

1 (mod n), ma a

(n-1)/2

1 (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 1an-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), 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 t2 (perché tn, t(a

(n-1)/2

-1)); ma tn con n dispari, dunque necessariamente t=1, e la 2) è verificata.

Dal Teorema di Pocklington segue allora che p1 (mod 2

m

), p-1=2

m

w (con w naturale), 2

m

 p-1<p.

Ma per ipotesi n-1=2

m

h con h naturale dispari e con 2

m

>h, da cui n=1+2

m

h<1+2

m

2

m

=1+2

2m

, ossia n2

2m

.

Essendo n dispari la disuguaglianza è stretta cioè n<2

2m

, da cui p n <2

m

, contraddizione.

Possiamo notare che il teorema fornisce un test di primalità deterministico (ma solo per un input n dispari tale che n-1=2

m

h con h naturale dispari e con 2

m

>h): tuttavia il test non ha complessità polinomiale, perché, benché testare la congruenza a

(n-1)/2

-1 (mod n) sia equivalente a testare che a

(n-

1)/2

modnn-1 (test che si può effettuare con complessità non superiore alla polinomiale servendosi dell’algoritmo dell’esponenziazione modulare), la ricerca dell’esistenza di un valore a che soddisfi tale congruenza ha complessità esponenziale (il numero dei valori possibili di a è di ordine O(n) quindi di ordine esponenziale O(2

x

), se x=L(n) con 2

x-1

 n < 2

x

).

Esamineremo però in seguito il caso particolare in cui il numero n>1 dispari sia tale che n-1=2

m

h ma con h=1 (cioè il caso n=2

m

+1), ossia il caso in cui il numero n sia un numero di Fermat: in questo caso è ovvio che 2

m

>h=1, quindi si può applicare il Teorema di Proth-Pocklington.

In questo caso particolare Pepin ha dimostrato che la condizione necessaria e sufficiente del Teorema diventa (almeno nel caso m>1):

n è primo  3

(n-1)/2

 -1 (mod n) (criterio di Pepin)

Otteniamo in tal modo un test di primalità deterministico valido solo per i numeri della forma

n=2

m

+1 (appunto i numeri di Fermat), e di complessità uguale a quello dell’algoritmo di

esponenziazione modulare.

Riferimenti

Documenti correlati

Il Signor Carlo scende dal tram all'incrocio di via Pietro Micca con via Antonio Giuseppe Bertola (nella mappa che vedi sotto il punto è contrassegnato da un

[r]

[r]

„ The Rabin-Karp string searching algorithm calculates a hash value for the pattern, and for each M-character subsequence of text to be compared.. „ If the hash values are

Dal grafico precedente vediamo che la previsione futura, ed il trend nella parte finale, sono migliorati, mentre all’inizio la previsione è completamente errata. La causa

Nota: realisticamente, andrebbero considerati solo i residui più recenti (che sono più piccoli), che darebbero bande un po’ più strette. APPROFONDIMENTI SULL’INCERTEZZA

Il numero dei valori possibili per la scelta dell’elemento casuale a nel test è (n-1); vediamo come possiamo valutare il numero dei valori a per i quali il test è superato, cioè

- sceglie random un numero naturale p di n cifre decimali, e lo testi con il test di primalità di Rabin-Miller (il test deve essere ripetuto un numero k di volte, con k