Teoria dei numeri e Crittografia: lezione del 23 novembre 2011 Lemma.
Dato un intero n>1:
l’anello commutativo con unità Z
nè campo Û n è primo Dimostrazione:
Ricordiamo che in Z
nuna classe [a]¹[0] ha inverso se e solo se a,n sono coprimi.
(Þ) Se per assurdo n non fosse primo, esisterebbe un divisore non banale d di n con 1<d<n, e la classe [d]¹[0] non avrebbe inverso (essendo mcd(d,n)=d>1) contro l’ipotesi che Z
nè campo
(Ü) Le classi ¹[0] in Z
nsono [1],[2],..,[n-1] ed essendo n coprimo con tutti i numeri 1,2,…,n-1 (perché essi non sono multipli di n ed n è primo) tutte queste classi hanno inverso, quindi Z
nè campo.
Come conseguenza dei risultati precedenti:
Teorema di Gauss (il caso n primo).
Se n è primo, il gruppo moltiplicativo Z
n* è ciclico (quindi esiste qualche radice primitiva modulo n).
Dimostrazione:
Segue immediatamente dall’ultimo Teorema della lezione precedente e dal Lemma.
Nota: La dimostrazione dell’esistenza di un generatore per il gruppo moltiplicativo A* di un campo finito A non è costruttiva, dunque in particolare non fornisce un algoritmo per calcolare una radice primitiva modulo n, quando n è primo: a tutt’oggi non è noto nessun algoritmo di complessità non più che polinomiale che risolva il problema.
In ogni caso, se n è primo, sappiamo da risultati precedenti che se a è una radice primitiva modulo n, allora tutte e sole le radici primitive modulo n sono le riduzioni a
imodn con 1 i (n)-1=n-2, tali che i, (n) sono coprimi, e il numero di tali radici primitive modulo n è ()=(n-1).
Esempio. Per esempio se n=11, una radice primitiva modulo 11 è a=2 (il periodo di [2] in Z
11* è un divisore di (11)=10, ma non è 5 perché [2
5]=[32]=[10]¹[1], dunque tale periodo è 10=(11)). Il numero di radici primitive modulo 11 è ((11))=(10)=4: esse sono le riduzioni 2
imod11, dove 1 i (11)-1=9, con i,10 coprimi, ossia i=1,3,7,9 (sono esattamente 2, 8, 7, 5).
Teorema di Gauss (il caso del quadrato di un numero primo).
Se n=p
2con p primo, il gruppo moltiplicativo Z
n* è ciclico (quindi esiste qualche radice primitiva modulo n).
Dimostrazione.
Poiché tratteremo di classi di congruenza con diversi moduli, conveniamo di indicare, per un generico modulo m>1, la classe di congruenza rappresentata dall’intero a modulo m con [a]
m. Sia a una radice primitiva modulo p (che esiste per il risultato precedente): (p)=(p-1) è il periodo di [a]
pnel gruppo moltiplicativo Z
p* quindi (p-1) è il minimo esponente positivo tale [a]
p p-1=[1]
pcioè tale che a
p-11 (mod p) . Vi sono 2 casi possibili:
1) a
p-1non è congruo 1 modulo n 2) a
p-1è congruo 1 modulo n
Supponiamo che si verifichi il caso 1): sia d il periodo di [a]
nnel gruppo moltiplicativo Z
n*: per
una proprietà del periodo si ha d(n) cioè dp(p-1), dunque p(p-1)=hd con h numero naturale.
Essendo a
d1 (mod n=p
2), a maggior ragione si ha a
d1 (mod p), dunque [a]
pd=[1]
pe per una proprietà del periodo di [a]
pin Z
p* si deduce che (p-1)d, dunque d=(p-1)s con s numero naturale.
Da p(p-1)=hd=h(p-1)s segue p=hs, quindi s=1 oppure s=p. Ma non può essere s=1, altrimenti sarebbe d=(p-1), a
p-11 (mod n), in contraddizione con l’ipotesi del caso 1).
Dunque s=p, d=p(p-1): il periodo di [a]
nnel gruppo moltiplicativo Z
n* è allora d=(n)=p(p-1), e l’intero a è una radice primitiva modulo n.
Supponiamo che si verifichi invece il caso 2): consideriamo l’intero b=a+p. Sviluppando la potenza con esponente p-1 con la regola di Newton si ha:
b
p-1= (a+p)
p-1=
1 1
0
1
p p j j
j
p a p
j
= ap-1+(p-1)pa
p-2+p
2m (con m intero) Tenendo conto che a
p-11 (mod n) , si hanno le seguenti congruenze modulo n=p
2 : b
p-1 a
p-1+(p-1)pa
p-2 = a
p-1+p
2a
p-2- pa
p-2 1- pa
p-2 (mod n)
Si conclude che b
p-1non è congruo 1 modulo n (se così fosse sarebbe p
2pa
n-2, quindi pa
n-2ossia pa contro l’ipotesi che [a]
p Z
p*). Ma [a]
p=[a+p]
p=[b]
pdunque anche b é una radice primitiva modulo p.
Sostituendo a con b si ricade allora nel caso 1), e si ha che b=a+p è una radice primitiva modulo n . Nota: dalla dimostrazione precedente si ricava che, se a è una radice primitiva modulo p allora vi sono solo 2 casi possibili: a è anche radice primitiva modulo p
2(se a
p-1non è congruo 1 modulo p
2), oppure (a+p) è radice primitiva modulo p
2(se a
p-1è congruo 1 modulo p
2).
Quindi conoscendo una radice primitiva modulo p si può calcolare una radice primitiva modulo p
2. Si noti che esistono algoritmi per calcolare una radice primitiva modulo p (per esempio un noto algoritmo dovuto a Gauss).
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 2
sdi base 2 ed esponente s>0 tale che 2
ssia divisore del numero pari n-1, e dunque si rappresenta (n-1) nella forma: n-1=2
st, con t>0 numero naturale dispari 3) si sceglie random 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
1t, 2
2t, ….. , 2
s-1t:
a
2itmodn i=0,1,…..,s-1 5) se è verificata almeno una delle seguenti condizioni:
a
tmodn =1 oppure a
2itmodn = 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:
a
t1 (mod n), a
2it-1 (mod n) i=0,1,…..,s-1.
Notiamo anche che nel passo 4) si possono 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 .
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 numero naturale tale che x
21 (mod n) , allora x1 (mod n) (infatti da x
21 (mod n) segue n(x
2-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 (perché a<n), per il Piccolo Teorema di Fermat si ha:
a
n-1= a
2st= ( a
2s-1t)
21 (mod n)
e per quanto premesso sopra si ha a
2s-1t1 (mod n), ma allora (non essendo per assurdo verificata nessuna delle condizioni del passo 5)) si deduce a
2s-1t= ( a
2s-2t)
21, a
2s-2t1, da cui (con lo stesso ragionamento) a
2s-2t1, e così via procedendo a ritroso, fino ad arrivare ad a
2 t1= ( ) a
t 21, a
t1, contraddizione perchè a
t1, a
t -1 sono fra le condizioni del passo 5) che per assurdo abbiamo supposto non verificate.
Esaminiamo poi la complessità dell’algoritmo.
Sia x=L(n) la lunghezza binaria dell’input n.
Notiamo prima di tutto che da 2
s 2
st=n-1<n<2
xsegue s<x.
Nel passo 2), il calcolo della differenza (n-1) ha complessità lineare O(x) e possiamo trascurare la complessità della rappresentazione di n-1 nella forma n-1=2
st, con t>0 numero naturale dispari:
l’esponente s si ottiene dal numero degli ultimi bits 0 consecutivi nella rappresentazione binaria del numero n-1, e il numero t si ottiene elidendo questi s bits.
Nel passo 4) si tratta di calcolare le s riduzioni modulo n (per confrontarle con i valori 1, n-1):
a
2itmodn dove i=0,1,….,s-1
ognuna con esponente 2
it<2
st<n-1<n e con base a<n, e si può utilizzare l’algoritmo della esponenziazione modulare, che ha complessità di ordine O(x
3): poiché il numero s di riduzioni da calcolare é <x la complessità totale del Test di Rabin-Miller é di ordine O(x
4).
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 a è la base scelta random 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-11 (mod n).
Dimostriamo ora che se n composto (dispari) è fortemente pseudoprimo nella base a, allora n è anche pseudoprimo nella stessa base a: infatti, essendo verificata una delle condizioni del passo 5), vi sono 2 casi possibili:
a
t1 (mod n): in tale caso si ha a
n-1= a
2st= ( ) a
t 2s1 (mod n);
2it