• Non ci sono risultati.

Teoria dei numeri e Crittografia: lezione del 4 maggio 2011Osserviamo che il test di primalità di Fermat ha complessità O(x3)

N/A
N/A
Protected

Academic year: 2021

Condividi "Teoria dei numeri e Crittografia: lezione del 4 maggio 2011Osserviamo che il test di primalità di Fermat ha complessità O(x3)"

Copied!
1
0
0

Testo completo

(1)

Teoria dei numeri e Crittografia: lezione del 4 maggio 2011

Osserviamo che il test di primalità di Fermat ha complessità  O(x

3

) se x=L(n): infatti tratta di calcolare il mcd(a,n) con l’algoritmo Euclideo e la riduzione a

n-1

modn con l’algoritmo dell’esponenziazione modulare (entrambi di complessità  O(x

3

)).

Un numero composto n supera (erroneamente) il test quando nello stesso tempo:

- d=mcd(a,n)=1 (ossia se la base casuale a è un numero coprimo con n) - si ha y=a

n-1

modn=1.

Un input composto n che superi il test di Fermat relativamente alla scelta della base a è detto pseudoprimo nella base a (perché n “finge” di essere primo, superando il test per quella particolare scelta di a): per quanto osservato sopra ciò equivale ad affermare che contemporaneamente:

mcd(a,n)=1, a

n-1

modn=1 (sempre con 1 a  n-1)

In effetti però affinché un n>1 composto sia pseudoprimo nella base a (con 1 a  n-1) basta che sia a

n-1

modn=1: infatti se ciò è vero allora certamente mcd(a,n)=1 (se per assurdo d= mcd(a,n)>1, scelto un divisore primo p di d si avrebbe p a

n-1

, p n da cui la contraddizione p 1, tenendo conto che a

n-1

 1 (mod n)).

Esempio.

Si consideri il numero composto n=341=1131.

Si ha 2

340

mod341=1 (come già calcolato nell’esempio di applicazione dell’esponenziazione modulare). Dunque n=341 é pseudoprimo nella base a=2, e supera (erroneamente) il test di Fermat per tale scelta di a.

Ma con l’esponenziazione modulare si ottiene anche (dopo avere fatto i dovuti calcoli):

3

340

mod341=561,

Dunque n=341 non è pseudoprimo nella base a=3, e in tale base non supera il test, rivelando di essere in effetti composto .

Calcoliamo ora un maggiorante per la probabilità che un numero composto n superi il test di Fermat.

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è il numero delle possibili basi in cui l’input n è pseudoprimo:

Teorema.

Sia n un numero naturale composto >1, e supponiamo che esista almeno un numero naturale b, con 1 b n-1, mcd(b,n)=1, tale che b

n-1

modn1 (notiamo che in tale base n non è pseudoprimo).

Allora il numero delle basi a in cui n è pseudoprimo è  (n)/2.

Di questo Teorema daremo in seguito la dimostrazione: prima osserviamo alcune sue conseguenze.

Se n è un naturale composto, e se soddisfa le ipotesi del Teorema precedente, la probabilità che n superi il test di Fermat (per una scelta casuale della base a) è  1/2. Infatti il numero delle basi a (comprese fra 1 ed n-1) in cui n è pseudoprimo (cioè supera il test) è  (n)/2 (n-1)/2, e la probabilità che a sia scelto casualmente fra questi valori è allora  [(n-1)/2]/(n-1)=1/2.

Ripetendo k volte il test, ogni volta con una scelta casuale indipendente del valore della base a, la probabilità che un numero composto (che verifica le ipotesi del Teorema) superi tutte le k volte il test di Fermat è 1/2

k

, quindi tale probabilità può essere resa piccola a piacere (per k sufficientemente grande).

Per esempio se k=100 tale probabilità è 1/2

100

1/10

30

.

(2)

Dunque se l’input n supera k volte il test di Fermat, con k abbastanza grande, possiamo affermare che n è primo, con una probabilità di errore molto bassa, eccetto che nel caso in cui n sia un numero composto che non soddisfa le ipotesi del Teorema precedente.

Problema: cosa avviene di tale probabilità di errore nel caso in cui il numero naturale n composto dato in input non soddisfa le ipotesi del Teorema precedente ? Esistono tali numeri n ?

Per un naturale n composto che non soddisfa le ipotesi del Teorema precedente si ha che per ogni intero a tale che 1 a  n-1, e tale che mcd(a,n)=1, si ha sempre a

n-1

modn=1 (quindi in tutte queste basi n è pseudoprimo). Dunque il numero delle basi a in cui n è pseudoprimo é =(n).

Si deduce che, per un tale n, la probabilità che n superi il test è =(n)/(n-1) , e se usiamo la formula per calcolare (n) conoscendo la fattorizzazione di n in potenze di fattori primi distinti p

1

,p

2

,…,p

r

: (n) = n(1-1/p

1

)(1-1/p

2

)...(1-1/p

r

)

otteniamo che tale probabilità è :

(n)/(n-1)  (n)/n =(1-1/p

1

)(1-1/p

2

)...(1-1/p

r

)

Se i fattori primi p

i

sono molto “grandi”, tale probabilità è molto vicina ad 1, quindi molto alta:

sottoponendo un tale input n al test di Fermat anche un numero molto grande di volte, è molto probabile che superi sempre il test.

Definizione. Un numero naturale composto n che soddisfa la condizione:

per ogni intero a tale che 1 a n-1, e tale che mcd(a,n)=1, si ha sempre a

n-1

modn=1 è detto numero di Carmichael.

Esempio: Un numero di Carmichael molto grande è n=225.593.397.919 (si dimostra che è di Carmichael con il Teorema di Korselt che vedremo in seguito): la sua decomposizione in fattori primi è 2207661915443 . Per tale input n la probabilità che n superi il test di Fermat è circa:

(1-1/2207)(1-1/6619)(1-1/15443)  0,99933 (molto vicina al 100%).

Diamo ora la dimostrazione del Teorema enunciato sopra:

Dimostrazione: Sia S = {aN / 1 a  n-1, a

n-1

modn=1} l’insieme delle basi in cui n è pseudoprimo, e sia b come nell’enunciato. Ricordiamo, come osservato prima, che se aS si ha certamente mcd(a,n)=1 , quindi [a],[b]Z

n

*, ed anche [a][b]=[ab]Z

n

*.

Al variare di aS, consideriamo l’insieme T delle riduzioni modulo n dei prodotti ab:

T = { (ab)modn / aS }.

Tali elementi in T, al variare di aS, sono distinti: infatti se per assurdo (ab)modn=(cb)modn con a,cS distinti, si avrebbe nel gruppo moltiplicativo Z

n

* [a][b]=[c][b], e per la legge di cancellazione [a]=[c], contraddizione perché a,c sono distinti e compresi fra 1 ed (n-1), quindi le classi di congruenza [a],[c] sono distinte. Dunque S,T hanno stessa cardinalità.

Gli elementi di T sono coprimi con n : se t=(ab)modnT, si ha [t]= [ab]Z

n

* (come osservato sopra).

Inoltre gli elementi di T sono nell’intervallo [1,n-1] (perché riduzioni modulo n di numeri coprimi con n quindi non multipli di n).

Infine per ogni t=(ab)modnT, si ha t

n-1

a

n-1

b

n-1

b

n-1

(mod n) quindi t

n-1

modn=b

n-1

modn1, ossia tS.

Dunque S,T sono insiemi disgiunti della stessa cardinalità, entrambi contenuti nell’insieme dei

numeri naturali dell’intervallo [1,n-1] coprimi con n: si conclude che la cardinalità di S è  della

metà del numero di questi naturali cioè è  (n)/2, come si voleva dimostrare.

(3)

Il matematico Korselt ha caratterizzato i numeri di Carmichael:

Teorema di Korselt.

Un numero naturale composto n è un numero di Carmichael  n è prodotto di primi distinti, e per ogni fattore primo p di n si ha (p-1)(n-1) .

Dimostrazione.

() Per ipotesi n=p

1

p

2

….p

r

, con p

i

primi distinti tali che (p

i

-1)(n-1) per ogni i . La tesi è che per ogni a intero tale che 1 a n-1, mcd(a,n)=1, si ha a

n-1

modn=1 ossia:

a

n-1

1 (mod n).

Essendo a,n coprimi, nessun p

i

è divisore di a, quindi, per il Piccolo Teorema di Fermat:

i 1

a

p

1 (mod p

i

)

Se n-1=k(p

i

-1) si ha a

n-1

=

ak(pi1)

1

k

=1 (mod p

i

), per ogni i=1,….,r .

Ogni p

i

è divisore di a

n-1

-1, e poiché i p

i

(primi distinti) sono a 2 a 2 coprimi, il loro prodotto n è divisore di a

n-1

-1 e si ha la tesi.

() (omettiamo questa parte della dimostrazione, che si basa sulla teoria delle “radici primitive modulo n”).

Possiamo notare che un numero di Carmichael n è prodotto di almeno 3 fattori primi distinti: se per assurdo fosse n=pq, con p,q primi distinti, per esempio con p<q, per il Teorema di Konselt si avrebbe (q-1)(n-1), da cui n-1=pq-1=(q-1)t, con t naturale, (p-1)=(q-1)(t-p), p-1q-1, pq, contraddizione.

Il più piccolo numero di Carmichael è n=561 la cui decomposizione in fattori primi è 31117 (e infatti 2, 20, 16 sono divisori di n-1=560).

Un esempio di numero di Carmichael molto grande (già citato) è n=225.593.397.919 la cui decomposizione in fattori primi è 2207661915443 (si verifica che 2207, 6619, 15443 sono primi e che 2207-1, 6619-1, 15443-1 sono divisori di n-1).

Empiricamente si è verificato che i numeri di Carmichael sono abbastanza “rari”: quelli < 2510

9

sono “soltanto” in numero di 2.163: questo è un fatto positivo, perché la probabilità che l’input n del test di Fermat sia un numero di Carmichael è relativamente bassa.

D’altra parte è stato dimostrato (1992) che i numeri di Carmichael sono infiniti, e questo è un fatto negativo, perché per quanto grande sia l’input n del test di Fermat, esiste sempre la possibilità che sia un numero di Carmichael.

La possibilità di imbattersi in un numero di Carmichael rende il test di Fermat non molto affidabile, ma si è osservato che nessun naturale composto x3,410

14

è pseudoprimo contemporaneamente in tutte le seguenti basi: 2,3,5,7,11,13,17 (i primi 7 numeri primi); dunque si può trasformare il test di Fermat in un test di primalità deterministico “efficiente” (valido però solo per un input 3,410

14

) eliminando la scelta casuale della base a, e ripetendo invece il test esattamente 7 volte, una per ognuna delle basi elencate (la complessità resta ovviamente  O(x

3

) se x=L(n)).

Radici primitive modulo n

Torniamo al caso di un gruppo commutativo finito G di cardinalità n, e di un elemento aG di periodo k=ord(a) (dunque k è il minimo esponente intero positivo tale che a

k

=1

G

). Sappiamo allora che l’insieme delle potenze di base a ad esponente intero  0 è formato dalle k potenze distinte con esponente i=0,1,2,….,k-1:

a

0

=1

G

, a

1

=a

,

a

2

,……, a

k-1

Inoltre per ogni esponente intero h0 si ha: a

h

=1

G

 k=ord(a) è divisore di h.

Infine per ogni coppia di esponenti interi h,s0 si ha: a

h

=a

s

 hs (mod k).

Ricordiamo anche che il periodo k=ord(a) è sempre divisore della cardinalità n di G.

(4)

Se le potenze distinte di base a esauriscono tutti gli elementi del gruppo G, si dice che G è gruppo ciclico generato da a e l’elemento a è detto generatore di G: in questo caso ogni elemento di G sarà una potenza di base a ad esponente intero  0 e  k-1 (dove k=ord(a)), e la cardinalità di G coinciderà con il periodo k del generatore a.

Per verificare se un gruppo G commutativo finito di cardinalità n è ciclico basta dunque verificare l’esistenza di almeno un elemento aG di periodo uguale ad n: infatti, se un tale a esiste, l’insieme delle potenze distinte di base a ha cardinalità n, dunque necessariamente coincide con G.

Esempio:

Nel gruppo moltiplicativo Z

5

*= {[1], [2], [3], [4]} degli elementi invertibili di Z

5

, cioè delle classi di congruenza modulo 5 con rappresentante coprimo con 5, il periodo dell’elemento a=[2] è 4 (in quanto [2]

2

=[4], [2]

3

=[8]=[3], [2]

4

=[16]=[1]=elemento neutro), dunque coincide con la cardinalità di Z

5

*. Si conclude che Z

5

* è gruppo ciclico con generatore [2].

Nel gruppo moltiplicativo Z

8

*= {[1], [3], [5], [7]} degli elementi invertibili di Z

8

, cioè delle classi di congruenza modulo 8 con rappresentante coprimo con 8, si verifica che nessun elemento ha periodo uguale alla cardinalità 4 di Z

8

* (il quadrato di ogni elemento al quadrato coincide con l’elemento neutro), dunque Z

8

* non è gruppo ciclico.

Vedremo in seguito (Teorema di Gauss) per quali valori di n il gruppo moltiplicativo Z

n

* è ciclico.

Se il gruppo moltiplicativo Z

n

* (degli elementi invertibili di Z

n

) è ciclico per un certo valore di n, chiameremo radice primitiva modulo n ogni intero a tale che 1 a n-1, a,n sono coprimi e tale che [a]Z

n

* sia un generatore del gruppo ciclico Z

n

* (quindi le radici primitive modulo n sono in numero uguale a quello dei generatori di Z

n

*). Per esempio, come visto sopra, 2 è una radice primitiva modulo 5, ma non esistono radici primitive modulo 8.

Se a è una radice primitiva modulo n, in Z

n

* l’elemento [a] ha periodo uguale a (n) (funzione di Eulero di n) perché (n) è la cardinalità di Z

n

*, e le potenze di [a] con esponenti 0,1,….., (n)-1 esauriscono tutti gli elementi di Z

n

*: dunque le riduzioni modulo n delle potenze di a con esponenti 0,1,….., (n)-1 esauriscono tutti i numeri naturali x<n che sono coprimi con n.

Gauss trovò tutti e soli i valori n>1 per i quali il gruppo moltiplicativo Z

n

* è ciclico (e per i quali dunque esiste qualche radice primitiva modulo n):

Teorema di Gauss.

Dato un naturale n>1:

il gruppo moltiplicativo Z

n

* è ciclico  n é uno dei seguenti valori: 2, 4, p

k

(con p primo >2 , k>0), 2p

k

(con p primo >2 , k>0).

(poiché la dimostrazione generale di tale risultato è molto complessa, dimostreremo in seguito solo i

casi di p e p

2

, con p primo).

(5)

Riferimenti

Documenti correlati

Ad ogni appello, gli studenti verranno prima sottoposti al test preliminare.. Una volta effettuato il test, comincerà l'esame

(A) alla somma delle cifre della sua rappresentazione in base 6 (B) alla cifra pi` u a destra della sua rappresentazione in base 7 (C) alla somma delle cifre della sua

Un numero razionale `e rappresentato in base 2 dall’espressione

Si assuma che ogni pezzo, indipendentemente dagli altri, abbia probabilit`a p ∈ (0, 1) di essere difettoso.. Se un processore `e funzionante supera sicuramente il test di controllo,

Ricordiamo che un test di primalità probabilistico è un algoritmo tale che, dato in input un numero naturale n&gt;1, dopo una serie di calcoli che coinvolgono anche alcuni

Infatti basta per esempio scegliere m=minimo naturale ³j che sia multiplo di k-j : per tale scelta di m si ha allora b m =b 2m (perché m,2m³j, e perché 2mm (mod k-j),

[r]

Il test di primalità sopra esposto può essere reso più efficiente limitandosi per esempio ad input a dispari (un numero pari a non è primo tranne nel caso banale a=2) ed