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-1modn 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-1modn=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-1modn=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-1modn=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=1131.
Si ha 2
340mod341=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
340mod341=561,
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-1modn1 (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
1001/10
30.
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-1modn=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
isono 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-1modn=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 è 2207661915443 . 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 = {aN / 1 a n-1, a
n-1modn=1} l’insieme delle basi in cui n è pseudoprimo, e sia b come nell’enunciato. Ricordiamo, come osservato prima, che se aS si ha certamente mcd(a,n)=1 , quindi [a],[b]Z
n*, ed anche [a][b]=[ab]Z
n*.
Al variare di aS, consideriamo l’insieme T delle riduzioni modulo n dei prodotti ab:
T = { (ab)modn / aS }.
Tali elementi in T, al variare di aS, sono distinti: infatti se per assurdo (ab)modn=(cb)modn con a,cS 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)modnT, 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)modnT, si ha t
n-1a
n-1b
n-1b
n-1(mod n) quindi t
n-1modn=b
n-1modn1, ossia tS.
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.
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
1p
2….p
r, con p
iprimi 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-1modn=1 ossia:
a
n-11 (mod n).
Essendo a,n coprimi, nessun p
iè divisore di a, quindi, per il Piccolo Teorema di Fermat:
i 1