+ All Categories
Home > Documents > CORSO DI CODICI E CRITTOGRAFIA Carlo Toffalorimulazza/toffalori.pdf · In esso Sherlock Holmes...

CORSO DI CODICI E CRITTOGRAFIA Carlo Toffalorimulazza/toffalori.pdf · In esso Sherlock Holmes...

Date post: 18-Feb-2019
Category:
Upload: hathien
View: 213 times
Download: 0 times
Share this document with a friend
74
Universit` a degli Studi di Camerino Corso di Laurea in Matematica Anno Accademico 2002-03 CORSO DI CODICI E CRITTOGRAFIA Carlo Toffalori 1
Transcript

Universita degli Studi di CamerinoCorso di Laurea in Matematica

Anno Accademico 2002-03

CORSO DI CODICI E CRITTOGRAFIA

Carlo Toffalori

1

Capitolo 1 - DALLA CRITTOGRAFIA CLASSICA A QUELLA A CHIAVE PUBBLICA

§ 1. Crittografia classica

Tra i casi che il dottor Watson riferisce nella raccolta di racconti The Return of Sherlock Holmes, c’equello chiamato The Adventure of the Dancing Men. In esso Sherlock Holmes viene in possesso di uno stranofoglio di carta riempito da una specie di geroglifici rappresentanti figurine di pupazzi variamente orientate(i ballerini del titolo), e deve capirne il significato. Non gli e difficile immaginare che i disegni nascondanoun messaggio cifrato; ma questa congettura non lo avvicina molto alla soluzione, perche il vero problema ecomprendere quale e il testo criptato e dunque, preliminarmente, in quale modo e stato criptato. ComunqueSherlock Holmes ragiona cosı: c’e un pupazzo che compare piu frequentemente sul foglio; se assumiamo cheil testo nasconda un messaggio in lingua inglese, si puo azzardare l’ipotesi che questo pupazzo rappresentila lettera piu comune in inglese, cioe la E. Procedendo su questa strada, si puo associare alle figurine deldisegno, ordinate secondo la loro frequenza, la successione delle lettere dell’alfabeto, ordinate secondo illoro uso nella lingua inglese, dunque, dopo la E, la T, la A, la O, e cosı via. Holmes ammette che questacorrispondenza non puo essere cosı sicura e ben fondata da escludere errori, ma affidandosi al suo intuito eall’intelligenza guidata dall’esperienza, riesce finalmente a svelare il messaggio nascosto. Chi e appassionatodi gialli e misteri e, incuriosito da questo intreccio, e interessato a conoscerne tutto lo sviluppo puo leggerequesta avventura, e gli altri godibili casi del nostro eroe, nella raccolta citata. A noi il resoconto del dottorWatson interessa perche introduce bene i due argomenti che vogliamo trattare: l’arte di cifrare i messaggi-la crittografia-, e quella di svelare i messaggi nascosti -la crittoanalisi-.

In realta il racconto di Sherlock Holmes non ha molto di originale. In effetti l’esigenza di nasconderead occhi indiscreti per motivi di guerra, o di spionaggio, o di amore messaggi dal contenuto delicato si puoritenere vecchia come il mondo; e tra i trucchi piu semplici di cifratura (e decifratura) c’e quello di tradurrele lettere dell’alfabeto in uso con altri simboli (i pupazzi ballerini di Sherlock Holmes), oppure di permutarletra di loro secondo una chiave prestabilita. Questi procedimenti erano ben noti sin dall’antichita: li utilizzavaanche Giulio Cesare, che, nel corso delle sue numerose campagne di guerra, dovendo corrispondere con i suoiluogotenenti e volendo evitare che i suoi ordini venissero intercettati e soprattutto capiti dai suoi nemici,talora li criptava traducendoli semplicemente in greco, talora provvedeva a permutarne le lettere secondouno schema fisso prestabilito. Ad esempio, il testo poteva essere cifrato spostando ogni lettera dell’alfabetodi 3 passi in avanti -e le ultime tre nelle prime tre, in ordine- (cosı il saluto AVE diventerebbe, tra le 21lettere dell’alfabeto italiano, DBH); il testo originale veniva poi decifrato col semplice procedimento inversodi tornare indietro 3 lettere; ovviamente la chiave 3 doveva essere concordata in anticipo, e comunque essernota sia a chi cifrava che a chi decifrava (in realta Cesare ed i suoi luogotenenti, che non conoscevano lecifre 1, 2, 3, . . ., usavano una tabella circolare, una sorta di anello con 2 cerchi concentrici, che elencavanella circonferenza esterna tutte le lettere dell’alfabeto latino e le accompagnava internamente con le lorosostituzioni).

Anche la strategia usata da Holmes per recuperare il messaggio nascosto dai suoi pupazzi non eraaffatto originale. Ad esempio, era conosciuta ed usata dagli Arabi, ed in particolare da Ishaq-al-Kindi, sindal nono secolo dopo Cristo; grazie alla tecnica prima descritta nel caso di Holmes, permetteva in genereuna decifrazione relativamente facile dei messaggi criptati attraverso una permutazione delle lettere; veniva(e viene) chiamata analisi di frequenza: un nome che ben ne sintetizza l’idea di base, che congettura che isimboli piu frequenti nel messaggio corrispondano alle lettere piu comuni nella lingua usata.

Del resto, gia assai prima di Holmes, la crittografia e, conseguentemente, la crittoanalisi avevano ottenutorilevanti progressi e raffinamenti. Ad esempio, nel Rinascimento Leon Battista Alberti e, poco dopo, ilfrancese Vigenere avevano proposto l’idea di cifrare le lettere di un messaggio non sempre secondo una datapermutazione, ma secondo permutazioni dipendenti dal posto della lettera da decifrare. Ad esempio si potevaconcordare di traslare la prima lettera di 3 posti, la seconda di 2, la terza di 4, secondo uno schema prestabilitoe noto a mittente e destinatario, e dunque cifrare l’“AVE” di Cesare (rispetto all’alfabeto italiano) comeDAI. Con gli anni, pero, piu sofisticate tecniche di analisi di frequenza permisero di infrangere messagginascosti secondo questi principi. Ma ancora nella seconda guerra mondiale, l’esercito tedesco adoperava una

2

macchina Enigma che, per dirla in termini molto banali, cifrava le informazioni segrete secondo un ripetutouso dell’idea di Alberti e Vigenere, rinnovandone frequentissimamente la chiave. Questo sistema venivausato, ad esempio, per trasmettere ai sottomarini tedeschi dell’Atlantico le coordinate dei convogli alleati inrotta e gli ordini di combattimento, ad esempio il comando di affondare un convoglio. I crittoanalisti inglesiche cercavano di violare questo codice e di carpire il significato dei messaggi si trovavano dunque di fronte alladifficolta non solo di ricavarne la chiave (in effetti, tecniche raffinate di analisi di frequenza gia permettevanoquesto obiettivo prima della guerra), ma anche e soprattutto di farlo in tempi rapidi, prima che la chiavestessa perdesse la sua validita e comunque in tempo per salvare il convoglio in navigazione. I loro sforzi,coordinati da un grande matematico del Novecento (Alan Turing), riuscirono alla fine nell’impresa, ed il lorosuccesso contribuı all’esito del conflitto, almeno alla battaglia navale nell’Atlantico. Recenti libri e pellicolecinematografiche descrivono in modo romanzato questi accadimenti.

Ci si potrebbe ragionevolmente chiedere a questo punto: che cosa c’entra la Matematica in tutto questo?Al di la del contributo di Turing e del suo impegno in tempi di guerra, quale collegamento mai si puo realizzaretra Matematica e Crittografia? E facile vedere che una relazione c’e, ed e assai meno pellegrina di quel chepotrebbe sembrare. In effetti, se le lettere di un alfabeto possono essere cifrate con simboli arbitrari, ed anchecon pupazzi (del resto, anche i geroglifici sono simboli di alfabeto), perche non rappresentarle addiritturacome numeri? A diventerebbe 1, B diventerebbe 2, e cosı via, fino a Z che, se accettiamo l’alfabeto dellalingua scientifica oggi imperante, e cioe l’inglese, corrisponderebbe a 26; se poi vogliamo qualche ulteriorenumero per cifrare i simboli di punteggiatura (punti, virgoli, pause, etc.) possiamo accomodarci, ed usaretutti i numeri che vogliamo, tanto il serbatoio dei numeri naturali e infinito.

01 02 03 04 05 06 07 08 09 10 11 12 13A B C D E F G H I J K L M

14 15 16 17 18 19 20 21 22 23 24 25 26N O P Q R S T U V W X Y Z

In particolare l’AV E di Cesare e rappresentato rispetto all’alfabeto inglese dalla terna 1, 22, 5 e la cifraturache se ne ottiene aggiungendo 3 ad ogni lettera produce 4, 25, 8, cioe DY H (non piu DBH come nell’alfabetoitaliano perche adesso dobbiamo considerare dopo V anche W , X, Y , . . .). Quanto poi all’idea di permutarele lettere per criptare il significato dei messaggi, bene... le permutazioni sono un tipico concetto dellamatematica (spesso indigesto ai non esperti che vi si accostano per studiarlo). Anzi, la Matematica ci dicesubito quante permutazioni si possono costruire sulle 26 lettere dell’alfabeto (se vogliamo limitarci a 26simboli e dimenticare la punteggiatura): sono 26! (il prodotto di tutti i numeri naturali da 1 fino a 26), e sipuo approfonditamente studiare la struttura del loro insieme.

§ 2.Matematica e Crittografia

In effetti la Matematica puo dare significativi contributi alla crittografia. Vediamo come. Per semplicitaformalizziamo la situazione prescindendo da Cesare e da Holmes, e convenendo di assumere un modello incui A (Alice) cerca di scrivere a B (Bernardo) un messaggio riservato e teme che C (Carlo) possa intercettarloe leggerlo. A si preoccupera allora di

CIFRAREil messaggio in qualche maniera, secondo un’opportuna chiave di codifica, e di far conoscere in anticipo a Bcome

DECIFRAREil messaggio criptato trasmettendogli l’opportuna chiave di decodifica. A questo punto a C non bastera piuintercettare il messaggio di A; dovra anche sforzarsi di capire come

VIOLAREil sistema di cifratura ideato da A. Quel che deriva da questa situazione e una coppia di problemi opposti:

? quello della CRITTOGRAFIA, che si preoccupa conA di escogitare sistemi per cifrare messaggi riservati;

3

? quello della CRITTOANALISI, che cerca, insieme a C, di infrangere questi criptosistemi.

Come gia detto nel precedente paragrafo, possiamo convenire che tutti i messaggi, tanto quelli originali inchiaro quanto quelli cifrati, siano scritti con un alfabeto composto dai numeri 1, 2, . . ., 26 (ed eventualmenteoltre 27, 28, 29, . . . se vogliamo anche utilizzare simboli di punteggiatura (lo spazio vuoto, la virgola, il punto,?, . . .). Allora ognuna delle 26! permutazioni su 26 oggetti diviene la base di un possibile criptosistema. Adesempio, nel caso di Cesare descritto nello scorso paragrafo, la codifica e data dalla funzione f che ad ogninumero x tra 1 e 26 associa l’intero

f(x) ≡ x + 3 (mod 26), 1 ≤ f(x) ≤ 26

e dunque ha chiave 3, mentre la decodifica si ottiene tramite la funzione “inversa” f ′ che ad ogni x associa

f ′(x) ≡ x− 3 (mod 26), 1 ≤ f ′(x) ≤ 26

con chiave −3. Il sistema si infrange se riusciamo a conoscere la chiave di codifica 3 o quella di decodifica−3.

Procedendo in modo piu generale ed astratto, supponiamo che N sia il numero dei simboli del nostro alfabeto(con N = 26, 27, . . .), cosı che le permutazioni possibili sono N !. Fissiamo due interi a e b, con a, N primitra loro (assumiamo un minimo di dimestichezza con i punti essenziali della Teoria elementare dei Numeri,che comunque saranno trattati in dettaglio nei capitoli 2 e 3).

1) Cifriamo ogni simbolo x tramite la funzione f che gli associa l’intero

f(x) ≡ ax + b (modN), 1 ≤ f(x) ≤ N ;

si ricordi che la condizione che a e N siano primi tra loro serve ad assicurare che a e invertibile moduloN , e dunque f si puo invertire.

2) Decifriamo proprio tramite la funzione “inversa” f ′ di f , quella che ad ogni simbolo x associa l’interof ′(x) tale che

f ′(x) ≡ a′x + b′ (modN), 1 ≤ f(x) ≤ N

dove a′ e l’inverso di a modulo b e b′ = −a′b.

Cosı la chiave del sistema e data, per quanto riguarda la codifica, dalla coppia (a, b), e per la decodificada (a′, b′). Si noti pero che e rapido computare una della due coppie sapendo l’altro. I criptosistemi che siottengono in questo modo al variare di a e b corrispondono alle funzioni lineari a coefficienti interi (invertibilimodulo N); tra di essi si trova il metodo di Giulio Cesare (quando a = 1 e b = 3) e tutte le possibili traslazionidei simboli dell’alfabeto (quando a = 1 e b varia). La Matematica ci aiuta pero ad escogitare nuovi sistemi,differenti dalle traslazioni, grazie alla moltiplicazione per a (ed altri ancora, basati su permutazioni che noncorrispondono a funzioni lineari).

Tuttavia questi criptosistemi si possono facilmente infrangere con la tecnica dell’analisi di frequenza. Ilseguente esempio illustra come.

Supponiamo N = 26. Immaginiamo che un pirata intercetti un messaggio cifrato abbastanza lungo edosservi che i simboli che vi compaiono piu frequentemente siano, nell’ordine, 9 (cioe I) e 3 (dunque C). Ilpirata puo avventurarsi a congetturare che il criptosistema utilizzato sia uno di quelli appena descritti, peropportuni (e sconosciuti) a e b, e che il messaggio sia stato composto in inglese; sapendo che le lettere piucomuni della lingua inglese sono, nell’ordine, E (di etichetta 5) e T (di etichetta 20), puo dedurne che I cifraE e C cifra T , e dunque, in conclusione, affrontare le due equazioni

5a + b ≡ 9 (mod 26), 20a + b ≡ 3 (mod 26).

Un minimo di dimestichezza con questi sistemi gli rivela (sottraendo la prima equazione dalla seconda)

15a ≡ −6 ≡ 20(mod 26).

4

Cosı gli basta osservare che 15 e primo con 26 e sapere (con un po’ di confidenza con la teoria elementaredei numeri) che l’inverso di 15 modulo 26 e 7 (infatti 15 · 7 = 105 ≡ 1 (mod 26)) per concludere anzitutto che

a ≡ −6 · 7 ≡ −42 ≡ 10 (mod 26)

e finalmente calcolareb ≡ 9− 5 · 10 ≡ −41 ≡ 11 (mod 26).

Non sempre le cose scorrono cosı lisce, ma l’analisi di frequenza, semmai unita ad un minimo di fortuna edi intelligenza, riesce comunque ad infrangere tutte queste situazioni. Ammettiamo infatti per un attimoche l’alfabeto del messaggio utilizzi 27 simboli (in inglese), quindi un minimo di punteggiatura. Nelle stessecondizioni di sopra, il sistema da affrontare diviene

5a + b ≡ 9 (mod 27), 20a + b ≡ 3 (mod 27)

da cui, sottraendo membro a membro, si ricava stavolta

15a ≡ −6 ≡ 21(mod 27).

Il problema e che 15 non e primo con 27, perche il loro massimo comune divisore e 3. Per fortuna ancheil termine noto -6 e multiplo di 3 (del resto, se non lo fosse, l’equazione sarebbe impossibile ed il piratadovrebbe rivedere tutte le sue congetture). Dividendo per 3 otteniamo allora

5a ≡ −2 (mod 9)

da cui, sapendo che l’inverso di 5 modulo 9 e 2 (5 · 2 = 10 ≡ 1 (mod 9)), si deduce a ≡ −4 ≡ 5 (mod 9).Ritornando alla base 27 si ricavano tre possibili valori per a

a ≡ 5, 14, 23(mod 27)

e conseguentemente per b. A questo punto la Matematica non serve piu, ma il pirata puo provare a decifrarele tre possibili corrispondenti versioni del messaggio e vedere quale delle tre ha senso compiuto (o maggiorsenso compiuto in confronto ad altre possibili informazioni).

Discutiamo adesso alcune possibili variazioni sul tema. Anzitutto, non c’e alcune obbligo di cifrare ilmessaggio originale simbolo per simbolo. Possiamo adottare unita di messaggio composte da piu simboli, adesempio digrafi (unita di due lettere): se il messaggio ha un testo di lunghezza dispari, lo si allunga di unsimbolo muto prefissato per consentirgli lunghezza pari adeguata a questo genere di trasmissione. Quindiogni unita di messaggio e una coppia ordinata (x, y) di naturali (da intendersi modulo la cardinalita Ndell’alfabeto). La coppia puo essere comunque codificata come

p = N · x + y (modN2)

(infatti N ·x + y e un intero compreso tra 1 e N2 e permette il recupero degli originari x e y come quozientee resto, rispettivamente, della divisione per N). Cosı facendo, le strategie gia descritte per cifrare e decifraresi possono nuovamente applicare, con l’unica accortezza di lavorare modulo N2.

Esempio. Supponiamo N = 26 e dunque N2 = 676. Cifriamo assumendo a = 159 (primo con 676) eb = 580, dunque ponendo, per ogni naturale p compreso tra 1 e 676,

f(p) ≡ 159p + 580 (mod 676), 1 ≤ f(p) ≤ 676.

In particolare, il digrafo (13, 14) viene codificato tramite

26 · 13 + 14 ≡ 352 (mod 676)

5

e quindi trasformato tramite f in

159 · 352 + 580 ≡ 440 (mod 676).

Siccome 440 si decompone nella divisione per 26 come

26 · 18 + 24,

ne segue che, in conclusione, il digrafo che cripta (13, 14) e (18, 24).

Va comunque rilevato che, anche nel caso dei digrafi o di unita di messaggio ancora piu lunghe, la analisidi frequenza costituisce tecnica vincente per infrangere questi criptosistemi. Anzi, puo essere utile notareche, nel caso dei digrafi, la seconda lettera del digrafo cifrato dipende solo dalla seconda lettera del digrafooriginale (e non, come ci si aspetterebbe, dall’intero digrafo originale). Infatti, se p etichetta il digrafo dipartenza, si ha

f(p) ≡ a · p + b, 1 ≤ f(p) ≤ N2.

Supponiamo chep = N · x + y, f(p) = N · x′ + y′

siano le decomposizioni di p e f(p) rispetto alla divisione per N . Ricaviamo

N · x′ + y′ ≡ f(p) ≡ a · (N · x + y) + b ≡ Nax + ay + b (modN2),

quindiN · x′ + y′ ≡ Nax + ay + b (modN2)

(dunque anche modulo N) e in conclusione

y′ ≡ ay + b (modN)

che sottolinea, appunto, la dipendenza di y′ solo da y.

Un’altra strategia matematica per rappresentare e criptare digrafi (o anche unita di messaggio dilunghezza ≥ 2) richiede l’uso delle matrici. Consideriamo infatti un generico digrafo e la corrispondente

coppia (x, y) di interi tra 1 e N . Possiamo vedere questa etichetta come un vettore colonna(

xy

)

e con-

seguentemente organizzare il seguente criptosistema.

? Cifriamo moltiplicando a sinistra il vettore colonna(

xy

)

per una prefissata matrice 2× 2 a coefficienti

interi

A =(

a bc d

)

invertibile modulo N , e poi sommando per un dato vettore colonna E =(

ef

)

; la codifica avviene

dunque tramite la funzione f tale che, per ogni x e y come sopra, f(

xy

)

=(

x′

y′

)

dove

(

x′

y′

)

≡(

a bc d

)(

xy

)

+(

ef

)

≡(

ax + by + ecx + dy + f

)

(modN), 1 ≤ x′, y′ ≤ N.

Quindi la chiave di codifica e data dalla matrice invertibile A =(

a bc d

)

e dal vettore colonna E =(

ef

)

. A proposito della matrice A sara forse opportuno ricordare che stiamo lavorando sull’anello degli

6

interi Z, ed anzi sul suo anello quoziente Z/NZ che, per i valori di N sopra ricordati (26, 27, 28, . . .) none un campo. Conseguentemente, perche la matrice A sia invertibile non basta che il suo determinantead − bc sia diverso da 0, ma occorre che il determinante stesso sia invertibile modulo N , e dunque chead− bc sia primo con N . In tal caso la matrice inversa si calcola con le usuali regole e vale

(

sd −sb−sc sa

)

dove s e un intero inverso di ad− bc modulo N .

? Di conseguenza decifriamo ponendo per ogni scelta di x e y interi

f ′(

xy

)

≡(

a′ b′

c′ d′

)(

xy

)

+(

e′

f ′

)

(modN)

dove A′ =(

a′ b′

c′ d′

)

e, appunto, la matrice inversa di(

a bc d

)

e

E′ =(

e′

f ′

)

= −(

a′ b′

c′ d′

)(

ef

)

.

La matrice A′ =(

a′ b′

c′ d′

)

e il vettore colonna E′ =(

e′

f ′

)

costituiscono la chiave di decodifica.

Esempio. Sia N = 26, dunque N non e primo e l’anello delle classi di resti modulo N Z/NN non e uncampo. Consideriamo la matrice

A =(

2 37 8

)

che ha determinante 2 ·8−3 ·7 = −5 ≡ 21 (mod 26) invertibile modulo 26; anzi si puo controllare che l’inversodi 21 modulo 26 e 5 (del resto −5 ·5 ≡ −25 ≡ 1 (mod 26)). Dunque A e invertibile modulo 26 e la sua inversaA′ e

(

5 · 8 −5 · 3−5 · 7 5 · 2

)

=(

40 −15−35 10

)

≡(

14 1117 10

)

(mod 26). a

Di nuovo, l’approccio matematico permette una ulteriore generalizzazione dell’idea di partenza per lacostruzione dei nostri criptosistemi. Tuttavia l’analisi di frequenza si rivela ancora una strategia vincente perinfrangere i criptosistemi stessi. Quel che stavolta il pirata deve cercare di recuperare e la chiave di codifica

A =(

a bc d

)

, E =(

ef

)

oppure la chiave di decodifica

A′ =(

a′ b′

c′ d′

)

, E′ =(

e′

f ′

)

.

Si noti che, anche in questo caso, il calcolo di A′ da A e di E′ da A ed E -o viceversa- e computazionalmenterapido, ed e dunque indifferente per il pirata, in linea di principio, ottenere la chiave di codifica o quelladi decodifica. Ebbene, opportuni adattamenti dei procedimenti gia descritti nel caso di unita di messaggiocomposte da un unico simbolo permettono in presenza di opportune informazioni il recupero delle due chiavi.In realta all’inizio degli anni settanta la crittoanalisi di frequenza consentiva sostanzialmente di infrangeretutti i criptosistemi classici conosciuti.

§ 3. La Crittografia a Chiave Pubblica

7

Il legame tra Crittografia e Matematica e diventato piu profondo e diretto negli anni recenti, quando perla Crittografia si sono create nuove esigenze e conseguentemente si sono aperti nuovi orizzonti. Ricordiamoinfatti due ovvie caratteristiche della Crittografia Classica (quella di Giulio Cesare ed Holmes, per intenderci):

1. c’e una chiave di cifratura, che i corrispondenti devono preventivamente scambiarsi (come il numero 3nell’esempio di Cesare);

2. sapere come si cifra (traslando di 3 lettere, nell’esempio) equivale a sapere come si decifra (traslando di3 lettere nel senso opposto).

Ma queste proprieta si rivelano altrettanto ostacoli e difetti rispetto alle nuove esigenze della CrittografiaModerna. Quali sono infatti i nuovi obiettivi cui la nuova Crittografia deve far fronte? Vediamo un esempio.Tra le nuove possibilita che Internet consente, c’e quella di operare acquisti direttamente in rete, pagandocon la semplice trasmissione delle coordinate della propria carta di credito. Naturalmente questo genere ditransazioni richiede una ovvia riservatezza, che nasconda il numero della carta ad occhi indiscreti. Come sipossono cifrare queste informazioni? Certamente non con i codici classici.

1. Utilizzare una sola chiave, e comunque trasmetterla ai tanti utenti interessati, sarebbe enormementepericoloso: un pirata capace di intercettare i messaggi potrebbe anche anticipatamente riuscire a carpirela chiave, e a quel punto non dovrebbe far piu nessuno sforzo di crittoanalisi per infrangere le informazioniriservate.

Una maniera per ovviare a questa difficolta e quella di escogitare sistemi crittografici che escludano qualunquetrasmissione di chiave. Ogni utente A sceglie una coppia di chiavi, una pubblica, che ogni interlocutore puoed anzi deve sapere per cifrare la propria corrispondenza verso A; una privata, che soltanto A deve conoscere(e gelosamente custodire) e che gli serve per decifrare i messaggi che gli arrivano. Ma la chiave pubblica percifrare i messaggi ad A diventerebbe in questo modo nota anche a persone indiscrete e a pirati. Dunqueun tale sistema dovrebbe avere la seguente proprieta, del tutto opposta a quanto avviene nella crittografiaclassica.

2. Decifrare deve essere enormemente piu difficile di cifrare, almeno per chi non conosce la chiave privatadi A: le due operazioni di criptare e decriptare non devono essere computazionalmente equivalenti.

E ragionevole aspettarsi di costruire sistemi crittografici con queste caratteristiche? Il seguente aneddotosuggerisce di sı: e il metodo del doppio lucchetto, che descriviamo brevemente. Supponiamo che B vogliatrasmettere un messaggio ad A senza dovergli preventivamente spedire alcuna chiave: B ripone il messaggioin uno scrigno che chiude con un suo lucchetto, ed invia lo scrigno chiuso ad A. A, non appena ricevutoil pacco, chiude lo scrigno con un suo secondo lucchetto, e lo rinvia a B. B a questo punto apre il propriolucchetto: lo scrigno resta chiuso dal lucchetto di A, e viene rimandato ad A. A, ricevuto nuovamente loscrigno, apre l’ultimo lucchetto rimasto -il suo- e puo finalmente leggere il messaggio. La trasmissione eavvenuta senza alcuno scambio preventivo di chiave, anzi A e B hanno usato le loro privatissime chiavi peraprire e chiudere i propri lucchetti.

Il racconto mostra a livello intuitivo come sia possibile, in linea di principio, escogitare sistemi crit-tografici di cifratura e decifratura che evitino lo scambio preventivo di chiavi, e dunque superino la proprieta1 della crittografia classica. Ma certamente non possiamo immaginare di usare nella nostra vita comune,per la nostra pur delicata corrispondenza, un simile macchinoso procedimento di scrigni e lucchetti. Cichiediamo allora se possiamo realmente costruire sistemi efficienti e sicuri che possano garantire le esigenzesopra sottolineate. Ebbene, la Matematica sa fornire spunti fruttuosi a questo proposito. Ma prima diintrodurli ricordiamo ancora una volta quali sono le necessita della Crittografia moderna, quella che vieneadesso usualmente chiamata Crittografia a chiave pubblica:

1. non deve essere richiesto alcuno scambio di chiave;

2. decifrare deve essere un’operazione enormemente piu difficile che cifrare, a meno che non si disponga diulteriori specifiche informazioni.

Un’idea per soddisfare queste esigenze potrebbe essere quella di usare funzioni a senso unico: funzioni dicifratura che siano facilmente computabili (in modo che chiunque possa velocemente criptare un messaggioper un dato utente A), invertibili (in modo da permettere la decifratura), ma abbiano un’inversa il cuicalcolo e proibitivo in assenza di ulteriori informazioni (che costituiscono la chiave privata di A, quellache solo A deve conoscere e senza la quale nessun pirata potra infrangere in tempi rapidi un messaggio

8

eventualmente intercettato). Una funzione a senso unico potrebbe essere la base ragionevole di un efficientesistema di crittografia a chiave pubblica. A priori, pero, niente assicura che simili funzioni esistano. E,comunque, la nozione stessa di funzione a senso unico non ha niente di matematicamente rigoroso: infattila difficolta di calcolare l’inversa potrebbe essere soltanto transitoria e passeggera, legata allo stato attualedelle conoscenze scientifiche; una funzione che oggi si rivelasse a senso unico domani potrebbe non esserlopiu, perche niente vieta che nel frattempo qualche genio -un novello Sherlock Holmes?- riesca ad ideare unprocedimento effettivo e rapido capace di computarla.

In effetti, ci sono due significativi settori della Matematica e dell’Informatica Teorica che possono fornirenumerosi spunti e fonti di ispirazione per la costruzione di funzioni a senso unico e, conseguentemente, dicriptosistemi a chiave pubblica. Descriviamo qui brevemente le strategie suggerite dall’Informatica.

§ 4. Informatica Teorica e Crittografia

C’e un famoso problema di Informatica Teorica, che viene in genere chiamato P = NP , e che sostanzial-mente chiede quanto segue. Anche uno studente di Matematica alle prime armi, impegnato a risolvereun problema di aritmetica oppure un’equazione, constata che verificare la soluzione, una volta che e statatrovata, puo essere noioso, ma certamente e rapido e sicuro. Invece cercare la soluzione e talora stimolante,ma spesso lento ed incerto. Il problema P = NP? si domanda, piu generalmente, se tutti i problemi cheammettono un procedimento rapido di verifica delle soluzioni hanno anche un algoritmo veloce di soluzione.Parliamo qui di problemi non solo matematici, ma anche eventualmente di Chimica, Biologia, e cosı via,purche riconducibili ad un modello matematico.

Ovviamente una piena comprensione della questione richiede preliminarmente che si definisca con pre-cisione che cosa si intende per

1) algoritmo

e, soprattutto, per

2) algoritmo rapido.

Rispondiamo qui in modo non rigoroso, rimandando a testi specifici di Teoria della Computabilita e dellaComplessita per una trattazione piu dettagliata.

Circa la questione 1), gia negli anni trenta Alan Turing ideo una sorta di calcolatore astratto antelitteram, in realta piu assomigliante ad una vecchia macchina da scrivere che ad un moderno computer: lamacchina di Turing. Egli propose di assumere questi meccanismi teorici come termine di paragone di ognicomputazione: e calcolabile esattamente cio che una macchina di Turing sa calcolare. Sostanzialmente si ha:

Tesi di Turing. Algoritmo corrisponde a Macchina di Turing

nel senso che un problema ha un algoritmo che lo risolve se e solo se c’e una macchina di Turing che lo risolve.Tesi sta qui per proposta. L’idea di Turing e sostenuta dalla sua equivalenza con analoghe ipotesi nate daapprocci alternativi (come quello di funzione ricorsiva, dovuto a Church). Se la accettiamo, disponiamo diuna definizione rigorosa di algoritmo. Dai tempi di Turing, comunque, i modelli pratici di calcolatori, edanche la relativa teoria astratta, si sono grandemente sviluppati. Oggi, al posto delle macchine di Turing, sipossono considerare computer sofisticati ed addirittura prevedere, secondo certi recenti progressi della Fisica,calcolatori quantistici di eccezionale velocita (ne accenneremo nel Capitolo 4). Si puo comunque provareche questi sviluppi non mettono in crisi il modello di Turing: tutto quello che un moderno calcolatore, oun computer quantistico computa anche un’opportuna macchina di Turing riesce a calcolarlo, semmai piulentamente.

Arriviamo cosı al vero nocciolo della questione: caratterizzare la nozione di algoritmo rapido. C’e quiuna proposta di Cook-Karp degli anni settanta che afferma:

Tesi di Cook-Karp. Un algoritmo e efficiente (= rapido) se lavora in tempo polinomiale rispetto allalunghezza dell’input.

9

Dunque, secondo una visione ormai accettata anche nella vita comune, si bolla come lento e inefficientequalunque procedimento che richieda un tempo esponenziale rispetto alla lunghezza dell’input (maggioreo uguale di 2l se l indica, appunto, questa lunghezza) e si accetta come rapido ed effettivo un algoritmoche impieghi un numero di passi polinomiale rispetto a l. Naturalmente, la tesi di Cook-Karp e discutibile:quanto possiamo ritenere efficiente un algoritmo che impiega un tempo lk se l’esponente k e 222...

? Comunquela proposta e, allo stato attuale delle cose, prevalentemente accettata.

La classe dei problemi che hanno un algoritmo di soluzione che lavora in tempo polinomiale vienedenotata P , come gia anticipato. Si chiama invece NP la classe dei problemi che ammettono un algoritmorapido (= polinomiale) di verifica.

Il confronto tra le due classi P e NP e dunque, come gia detto, una comparazione tra i tempi didimostrazione e di verifica della soluzione dei problemi matematici (o riconducibili a modelli matematici).Chiaramente

P ⊆ NP

perche ogni algoritmo (rapido) di soluzione costituisce implicitamente anche una verifica. Ci si chiede allorase vale:

Congettura. P = NP .In altre parole ci si domanda se i tempi di prova siano o no significativamente piu lunghi di quelli di verifica,ovvero ancora se esistano problemi privi di un algoritmo rapido di dimostrazione ma dotati di un algoritmoveloce di verifica. Il problema P = NP e uno tra i piu dibattuti e profondi della Matematica Applicata edell’Informatica Teorica, e sembra ben lungi dal trovare una risposta, anche se ci sono forti argomenti chesembrano avvalorare la congettura (negativa) P 6= NP .

Ci sono poi vari problemi S, spesso di natura combinatoria, e ancor piu spesso di facile presentazione,che si trovano nella seguente condizione:a) S ammette un algoritmo rapido di verifica, e dunque sta in NP ,b) ogni problema in NP si puo ricondurre a S in tempo polinomiale.

Cosı dimostrare che S ∈ P implica che tutto NP e in P , e dunque P = NP ; viceversa, e ovvio che, se S 6∈ P ,allora P 6= NP . Questi problemi S sono allora chiamati NP -completi, a sottolineare la loro caratteristicadi test campione circa la congettura P = NP . Chiaramente, se si prova P = NP , allora la nozione diNP -completezza perde di significato: ogni problema in NP = P e NP -completo. Ma, siccome si congetturaproprio il contrario e cioe P 6= NP , la nozione di NP -completezza assume una sua rilevanza: concludereP 6= NP si riduce, infatti, ad escludere qualunque algoritmo rapido di soluzione per un qualsiasi problemaNP -completo.

La disparita di tempo tra gli algoritmi di verifica e quelli di soluzione di un problema NP -completo puofornire, in linea di principio, ottimi spunti per la costruzione di funzioni f a senso unico: si tratta di legarein modo opportuno la computazione di f (e dunque la codifica del criptosistema) alla procedura (rapida) diverifica, e la computazione dell’inversa di f (quindi la decodifica) alla difficolta di ottenere algoritmi velocidi soluzione. Nel capitolo 5, presenteremo in dettaglio un esempio famoso (e sfortunato) di criptosistema achiave pubblica basato su questi argomenti: si tratta del Criptosistema di Merkle-Hellman, che si fonda suun classico problema NP -completo, noto come Problema dello Zaino.

§ 5. Teoria dei Numeri e Crittografia

C’e pero un’altra copiosa fonte di ispirazione per le funzioni a senso unico; per stupefacente che possasembrare, essa e la Teoria dei Numeri naturali, quegli apparentemente innocui numeri 0, 1, 2, . . . con cuisiamo abituati a contare fin da bambini. E noto infatti che, a dispetto della loro presunta semplicita,i naturali racchiudono alcuni dei misteri piu profondi ed affascinanti della Matematica. Gli ostacoli chene derivano si rilevano comunque una buona base per la crittografia moderna e suggeriscono criptosistemitanto classici quanto ancora pienamente funzionanti (come il famoso RSA). Ma, per procedere in questodiscorso, abbiamo bisogno di ricordare alcuni argomenti sui naturali, ed in particolare sui numeri primi esulla decomposizione in fattori primi. Questo sara l’argomento del prossimo capitolo.

10

Capitolo 2 - PRIMI E COMPOSTI

§ 1. Divisibilita

Come gia anticipato, consideriamo in questo capitolo l’insieme N dei naturali 0, 1, 2, . . . , taloraeventualmente allargato all’insieme Z di tutti gli interi

. . . ,−2, −1, 0, 1, 2, . . . .

Ci interessano in particolare l’operazione di divisione, non sempre possibile ne tra i naturali ne tra gli interi,e la conseguente relazione binaria di divisibilita |: per a, b naturali, si dice che b divide a, o anche che a edivisibile per b (o multiplo di b), e si scrive b | a quando esiste qualche naturale q per cui a = b · q. Analogadefinizione si da per gli interi. Si verifica facilmente che ogni intero e divisibile per 1 e per se stesso e divide 0(esercizio). Viceversa, l’unico naturale divisibile per 0 e lo stesso 0. La relazione di divisibilita e una relazionedi ordine parziale e non totale tra i naturali; tra gli interi, invece, anche la proprieta antisimmetrica va persa(ad esempio 2 | −2 e −2 | 2, ma a 6= −2). Il controllo di queste proprieta e un esercizio relativamentesemplice.

Come detto, anche escludendo il caso eccezionale b = 0, la divisibilita non sempre e assicurata per coppiedi naturali (ad esempio 2 | 4, ma 2 non divide 3), ed il miglior risultato che possiamo citare a questo riguardoe il seguente.

Teorema del quoziente e del resto. Siano a e b naturali, b 6= 0. Allora esistono due naturali q e runici tali che a = b · q + r e r < b.

Con le opportune modifiche il teorema si estende anche agli interi (dove occorre chiedere 0 ≤ r < |b|invece che r < b); q si dice il quoziente, ed r il resto della divisione di a per b. Si ha che b divide a esattamentequando il resto r della loro divisione e 0.

Ricordiamo adesso la definizione di massimo comune divisore e minimo comune multiplo (tra i naturali).

Definizione. Siano a e b due naturali non entrambi nulli. Un naturale d si dice massimo comunedivisore di a e b se:

(i) d divide tanto a quanto b,

(ii) ogni altro divisore comune e di a e b e ≤ d. a

Si noti che esiste almeno un divisore comune di a e b, ed e 1. Inoltre, per a 6= 0, i divisori di a devonoessere tutti ≤ a, ed altrettanto vale per b quando b 6= 0. Ne segue che, se almeno uno dei due elementi a, b ediverso da 0, l’insieme dei loro divisori comuni e, oltre che non vuoto, anche finito, e quindi ha massimo. Inconclusione, il massimo comune divisore di a e b esiste, ed e ovviamente unico. Possiamo allora denotarlo conuno specifico simbolo, ad esempio (a, b). Ci chiediamo adesso come possiamo calcolarlo: la definizione nonpare infatti molto utile e illuminante dal punto di vista pratico. In certi casi, la computazione e comunquefacile e diretta.

Esempio. Se b | a (in particolare se a = 0), il massimo comune divisore di a e b non puo che essere b(che e il massimo tra i suoi divisori, e dunque anche tra quelli comuni con a). Allo stesso modo si procedese a | b.

In tutti gli altri casi, la seguente osservazione puo risultare utile.

Osservazione. Siano a e b due naturali, a, b 6= 0 (se a = 0 o b = 0 gia sappiamo come comportarci).Supponiamo per semplicita a ≥ b e dividiamo a per b ottenendo quoziente q0 e resto r0:

a = b · q0 + r0, r0 < b.

Allora (a, b) = (b, r0).

11

Infatti i divisori comuni di a e b dividono anche r0 = a− bq0 e, viceversa, i divisori comuni di b e r0 dividonoanche a = bq0 + r0. Cosı il massimo tra i primi coincide con il massimo tra i secondi.

L’utilita della precedente osservazione nella ricerca del massimo comune divisore tra a e b e facilmentecomprensibile: siccome r0 < b ≤ a, dovrebbe risultare piu semplice, almeno in linea di principio, computare(b, r0) invece che (a, b).

In effetti un algoritmo rapido di calcolo del massimo comune divisore puo essere organizzato su questofondamento, nel modo che segue. Supponiamo che a e b siano, come detto, due naturali non nulli e chea ≥ b. Dividiamo a per b ottenendo

a = bq0 + r0, r0 ≤ b.

Se r0 = 0, allora b divide a e il massimo comune divisore cercato e, appunto, b. Altrimenti possiamo dividereb per r0 e calcolare i relativi quoziente e resto

b = r0q1 + r1, r1 < r0.

Di nuovo, se r1 = 0, allora possiamo dedurre r0 | b e r0 = (b, r0). Ma (a, b) = (b, r0), dunque (a, b) = r0.Altrimenti proseguiamo dividendo stavolta r0 per r1. Il procedimento ha comunque termine dopo un numerofinito s di passi: infatti il principio del minimo esclude l’esistenza di una successione strettamente decrescenteinfinita di naturali

b > r0 > r1 > r2 > . . . .

Al passo s, si avra dunquers−2 = rs−1qs, rs = 0

e, conseguentemente,(a, b) = (b, r0) = (r0, r1) = . . . = (rs−2, rs−1) = rs−1.

In altre parole, l’ultimo resto non nullo determinato dal procedimento e anche il massimo comune divisoredi a e b.

Il metodo appena descritto si chiama algoritmo delle divisioni successive, o anche algoritmo euclideo.In effetti, era gia noto agli antichi Greci e, in particolare, ad Euclide. Pur tuttavia e usato ancor oggi per lasua semplicita e per la sua ragionevole rapidita (secondo i criteri della tesi di Cook-Karp riferita nel primocapitolo). Naturalmente, per apprezzare pienamente questo suo ultimo merito, dobbiamo prima chiarirein che forma intendiamo scrivere i numeri naturali e conseguentemente valutare la loro lunghezza comepossibili input; dobbiamo poi precisare in che modo concordiamo di misurare i tempi delle computazioni cheli riguardano. Di tutto questo parleremo brevemente nel prossimo paragrafo. Per il momento ci limitiamo adire che l’algoritmo delle divisioni successive lavora in un tempo limitato da un polinomio di grado 2 rispettoalla lunghezza degli input (e quindi e ragionevolmente rapido rispetto ai moderni parametri di efficienza).

Tornando al massimo comune divisore, sara opportuno ricordare:

Teorema (Identita di Bezout). Siano a e b due naturali non entrambi nulli, d il loro massimo comunedivisore. Allora ci sono due interi x e y tali che d = ax + by.

Dimostrazione. Se a = 0, d = b = a · 0 + b · 1. Analogamente per b = 0. Supponiamo allora a, b 6= 0,e procediamo per induzione sul numero s dei passi dell’algoritmo euclideo.

Se s = 0, si ha di nuovo d = b = a · 0 + b · 1.

Sia allora s > 0. Per induzione, esistono due interi x′ e y′ tali che il massimo comune divisore (b, r0) (cherichiede all’algoritmo euclideo s− 1 passi) si esprime come b · x′ + r0 · y′. Ma (b, r0) coincide proprio con d;sfruttando allora r0 = a− bq0, si deduce

d = bx′ + (a− bq0)y′ = ay′ + b(x′ − q0y′),

come richiesto. a

12

Con un minimo di pazienza, si puo dedurre da questa dimostrazione un procedimento esplicito dicomputazione di x e y: il calcolo complessivo di (a, b), x e y a partire da a e b richiede ancora tempo limitatoda una funzione di secondo grado rispetto alla lunghezza di a e b.

Il teorema ha vari interessanti conseguenze. Ad esempio prova che il massimo comune divisore di a e bnon e massimo soltanto rispetto all’usuale relazione di ordine tra i naturali (come stabilito nella definizione),ma anche rispetto alla relazione di divisibilita. Si ha infatti:

Corollario 1. Siano a e b due naturali non entrambi nulli, e un divisore comune di a e b in N. Allorae | (a, b).

Dimostrazione. Sappiamo a = pe, b = qe per due opportuni naturali p e q. Per l’identita di Bezout,esistono anche due interi x e y tali che (a, b) = ax + by. Allora

(a, b) = ax + by = pex + qey = e · (px + qy)

dove, chiaramente, px + qy appartiene ai naturali perche e il quoziente di due naturali. a

Un’altra conseguenza che e utile ricordare e:

Corollario 2. Siano a, b, c naturali non nulli tali che a | bc. Se (a, b) = 1, allora a | c.In effetti non e vero in generale che, se a | bc, allora a | b oppure a | c. Ad esempio, 4 | 2 · 6 = 12, ma 4

non divide ne 2 ne 6.

Dimostrazione. Sia q un naturale tale che aq = bc. Ricordiamo 1 = (a, b) = ax + by per opportuniinteri x e y. Cosı

c = c · 1 = c · (ax + by) = cax + cby = cax + qay = a · (cx + by)

dove cx + by e ovviamente naturale. Segue a | c. a

A proposito, ricordiamo che due naturali non nulli a e b che hanno massimo comune divisore 1 si diconoprimi tra loro.

Definizione. Siano a, b due naturali non nulli. Un naturale m si dice minimo comune multiplo di a eb se m 6= 0 e

(i) m e multiplo tanto di a quanto di b,

(ii) ogni altro multiplo comune n 6= 0 di a e b e ≥ m. a

Il motivo per cui 0 e stavolta brutalmente escluso dalla trattazione e facile da capire: in effetti 0 e,ovviamente, il minimo multiplo di ogni naturale e comunque l’unico multiplo di se stesso. Supponiamodunque a e b diversi da 0: c’e almeno un multiplo comune a · b di a e b e, di conseguenza, per il principiodel minimo, c’e un minimo comune multiplo ( 6= 0) di a e b, ovviamente unico. Possiamo convenire dirappresentarlo [a, b]. Quanto a calcolarlo esplicitamente, il successivo paragrafo ci mostrera che, per ogniscelta di a e b non nulli,

a · b = (a, b) · [a, b],

il che riduce la computazione di [a, b] a quella gia considerata di (a, b).

§ 2. Una parentesi computazionale

Come anticipato poche righe fa, dedichiamo questo breve paragrafo a descrivere:

a) come conveniamo di rappresentare i numeri naturali e dunque misurare la loro lunghezza,

b) come valutiamo i tempi delle computazioni sui numeri naturali.

Il chiarimento e dovuto, perche si possa pienamente apprezzare l’efficienza degli algoritmi sui naturali (comequello, gia trattato, per la ricerca del massimo comune divisore); tale efficienza si misura infatti confrontandoi tempi di computazione con la lunghezza dell’input.

13

Circa a), si conviene in genere di scrivere un naturale N usando la notazione binaria, invece dellatradizionale rappresentazione decimale. Quindi

0 rimane 0,1 rimane 1 (ed ha lunghezza 1 = log21 + 1)2 diventa 10,3 diventa 11

ed entrambi raggiungono lunghezza 2 = log22 + 1,4 si rappresenta 100,5 e 101,6 e 110,7 e 111

e tutti e quattro ottengono lunghezza 3 = log24 + 1, mentre8 diventa 1000 ed ha lunghezza 4 = log28 + 1

e cosı via. In generale, allora, ogni naturale N ammette in rappresentazione binaria lunghezza

l(N) = blog2 Nc + 1

dove b c denota la parte intera.Come passo di una computazione sui naturali intendiamo poi una operazione elementare sulle cifre

(ovviamente nella rappresentazione in base 2). Ad esempio l’addizione1111000 +

11110 =10010110

richiede 7 operazioni elementari sulle cifre degli addendi, e quindi 7 passi.

§ 3. I Numeri Primi e il Teorema Fondamentale dell’Aritmetica

Ricordiamo che un numero naturale N si dice primo se N > 1 e gli unici divisori di N sono 1 e N (quelliche N non puo evitare). Dunque la sequenza dei numeri primi e

2, 3, 5, 7, 11, 13, 17, 19, 23, 29, . . . .

Puo essere utile notare che 2 e l’unico primo pari, anche se l’osservazione non e sorprendente, visto che “pari”significa “divisibile per 2” e ed e ovvio che qualunque multiplo di 2 maggiore di 2 ammette un divisore diversoda 1 e da se stesso (2, appunto) e quindi non puo essere primo; allo stesso modo si potrebbe sottolineare che3 e l’unico primo multiplo di 3, 5 l’unico primo multiplo di 5, e cosı via. Comunque sara bene ricordare chetutti i primi, eccettuato 2, sono dispari e dunque, in certo qual modo, 2 ha una sua specificita tra i primi: percitare un gioco di parole di Zassenhaus, “2 is the oddest prime”, e cioe “2 e il piu dispari dei primi” (anchese riesce difficile cogliere in italiano la sfumatura che si ha in inglese nell’aggettivo odd, che puo significaretanto dispari quanto fuori posto).

Chiamiamo poi un naturale N > 1 composto quando N non e primo, e cioe esistono due naturali a e bminori di N (e quindi maggiori di 1) tali che N = a · b.

Il motivo dell’aggettivo composto e ovvio: del resto qualunque numero naturale > 1 (anche non primo)si decompone in modo sostanzialmente unico nel prodotto di fattori primi. Il risultato e tanto importantequanto famoso, e merita il nome altisonante di:

Teorema Fondamentale dell’Aritmetica. Qualunque naturale N > 1 si decompone in uno e unsolo modo (a meno dell’ordine dei fattori) come prodotto di numeri primi.

Prima di iniziarne la dimostrazione, sara bene premettere una considerazione che si collega a quantoosservato in § 1, quando si e sottolineato che, se un naturale N e divisore di un prodotto a ·b, non e detto che

14

sia divisore di uno dei fattori a e b. Questa conclusione e comunque vera quando N e primo, come adessoproviamo.

Lemma. Siano p un primo, a e b due naturali tali che p | a · b. Allora p | a oppure p | b.

Dimostrazione. Sia d il massimo comune divisore di p e a. Se d > 1, allora d = p perche p e primo, equindi p divide a. Altrimenti d = 1, e possiamo applicare il Corollario gia ricordato per dedurre p | b. a

Passiamo adesso alla dimostrazione del Teorema Fondamentale dell’Aritmetica.

Esistenza della decomposizione. Procediamo per induzione completa su N ≥ 2. Se N e primo,in particolare se N = 2, la tesi e ovvia. Supponiamo allora N composto (in particolare N > 2). AlloraN = a · b per opportuni fattori a e b entrambi minori di N e ≥ 2. Per l’ipotesi di induzione, tanto a quantob si scrivono come prodotto di numeri primi. Ma allora altrettanto vale per N . a

Unicita della decomposizione. E da provare che, se N = p0 · . . . ·pn = q0 · . . . ·qm per m e n naturali,p0, . . ., pn, q0, . . ., qm primi, allora n = m e, salvo permutare gli indici, pi = qi per ogni i ≤ n. Procediamonuovamente per induzione completa su N . Se N e primo, la tesi e immediata: deve essere n = m = 0,p0 = q0 = N . Questo vale in particolare per N = 2. Adesso assumiamo N composto (e dunque N > 2).Notiamo che p0 divide N = q0 · . . . · qm. Per il Lemma, deve esistere un qualche j ≤ m tale che p0 | qj ; salvoriordinare gli indici, possiamo supporre j = 0, cioe p0 | q0. Anzi, siccome q0 e primo e p0 > 1, deve esserep0 = q0. Consideriamo adesso

Np0

= p1 · . . . · pn = q1 · . . . · qm.

Siccome N e composto, Np0

> 1; inoltre Np0

< N . Possiamo allora applicare l’ipotesi di induzione e dedurren = m e, salvo un riordinamento degli indici, p1 = q1, . . ., pn = qn. a

Vale la pena di sottolineare che il Teorema Fondamentale dell’Aritmetica ed in particolare l’unicita delladecomposizione in fattori non ulteriormente riducibili (validi in N e, salvo opportuni aggiustamenti, anche inZ) non si preservano in strutture apparentemente vicine sia ai naturali che agli interi. Questo ribadisce cheil teorema e proprieta sostanziale e non banale dei naturali e degli interi. Eccone infatti due controesempi.

Esempi. 1. (Hilbert) Consideriamo l’insieme 4N + 1 dei naturali della forma 4n + 1 con n ∈ N

1, 5, 9, 13, 17, 21, 25, 29, 33, . . . .

Esso e chiuso rispetto alla moltiplicazione: per n e m naturali,

(4n + 1) · (4m + 1) = 4(4mn + m + n) + 1.

Tuttavia e facile controllare che, nel nostro insieme, 693 = 4 · 173 + 1 ha due possibili decomposizioni infattori irriducibili

693 = 9 · 77 = 21 · 33.

2. Consideriamo adesso i numeri reali della forma a0 + a1√

15 con a0 e a1 interi. E facile controllareche essi formano un sottoanello del campo reale, usualmente denotato Z[

√15]. In questo anello 10 ha due

possibili decomposizioni10 = 2 · 5 = (5 +

√15) · (5−

√15)

in fattori irriducibili 2, 5, 5±√

15. a

Ritorniamo ai naturali. Il Teorema Fondamentale dell’Aritmetica ci dice che ogni naturale N ≥ 2 siscrive in modo unico come

N = pk00 · . . . · pkn

n

con p0 < . . . < pn primi e k0, . . . , kn interi positivi. Notiamo che, per d divisore di N ,d = 1 oppure d ha fattori primi tra p0, . . ., pn con esponente ≤ k0, . . . , kn

e, per m multiplo di N ,

15

m = 0 oppure m ha tra i suoi fattori primi p0, . . ., pn con esponente ≥ k0, . . . , kn.Siano ora a e b due naturali non nulli; scriviamo

a = pk00 · . . . · pkn

n , b = ph00 · . . . · phn

n

con p0 < . . . < pn primi e k0, . . . , kn, h0, . . . , hn naturali (eventualmente nulli, per consentire una notazioneuniforme nella rappresentazione di a e b ed includere anche i casi a = 1 oppure b = 1). Dalle precedentiosservazioni segue che, per d divisore comune di a o b,

d = 1 oppure d ha fattori primi tra p0, . . ., pn con esponente rispettivamente ≤ k0, h0, . . ., ≤ kn, hn

e, per m multiplo comune di a e b,m = 0 oppure m ha tra i suoi fattori primi p0, . . ., pn con esponenti rispettivamente ≥ k0, h0, . . .,≥ kn, hn.

Se ne deduce facilmente la seguente serie di conseguenze.

Corollario 1. Nella notazione precedente,

(a, b) = pmin{k0, h0}0 · . . . · pmin{kn, hn}

n ,

[a, b] = pmax{k0, h0}0 · . . . · pmax{kn, hn}

n .

In particolare (a, b) · [a, b] = a · b (e dunque il minimo comune multiplo [a, b] eguaglia il prodotto a · b se esolo se a e b sono primi tra loro (a, b) = 1).

Corollario 2. Sia m ∈ N un multiplo comune di a e b. Allora [a, b] | m.

In altre parole, [a, b] e minimo tra i multipli comuni (non nulli) di a e b non solo rispetto alla relazionedi ordine ≤ ma anche rispetto a quella di divisibilita |.

§ 4. Il Teorema dei Numeri Primi

Il Teorema Fondamentale dell’Aritmetica ci dice che i numeri primi sono, in un qualche senso, i fon-damenti della struttura moltiplicativa dei naturali. Cerchiamo allora di comprendere meglio come i numeriprimi si distribuiscono all’interno di N. Intanto dobbiamo prendere atto che:

Teorema. Ci sono infiniti numeri primi.

La cosa era gia nota agli antichi Greci e in particolare ad Euclide, che ne dava la seguente dimostrazione.

Dimostrazione di Euclide. Siano 2 = p0 < p1 < . . . < pr numeri primi distinti. Mostriamo comecostruire un nuovo primo p, diverso da p0, . . . , pr. A questo proposito, consideriamo

N = p0 · . . . · pr + 1;

si tratta di un naturale certamente ≥ 2 e, come tale, ammette almeno un divisore primo p. Ma p non puoessere ne p0, . . ., ne pr, altrimenti divide il prodotto p0 · . . . ·pr e dunque anche la differeanza N−p0 · . . . ·pr,cioe 1 (il che e assurdo). a

In realta vi sono molte possibili dimostrazioni dell’infinita dei primi: il libro di P. Ribenboim The littlebook of big primes ne raccoglie una decina, e ne cita anche altre. Noi ci limitiamo a presentare una secondaprova del teorema, dovuta ad Eulero e dunque successiva ad Euclide di molti secoli: gli strumenti tecniciche vi sono coinvolti sono certamente meno semplici di quelli di Euclide, ma ci serviranno ad introdurre imetodi di Analisi nella ricerca sui primi.

Dimostrazione di Eulero. Ricordiamo che ogni primo p e maggiore di 1 e dunque soddisfa 0 < 1p < 1.

Dunque la serie geometrica∑∞

k=01pk converge alla somma 1

1− 1p. Se q e un altro primo, si deduce allo stesso

modo∞∑

h=0

1qh =

11− 1

q

.

16

Notiamo che le due serie appena considerate sono a termini positivi, dunque il loro prodotto secondo Cauchye definito ed ha somma

∞∑

k=0

1pk ·

∞∑

h=0

1qh = (

11− 1

p

) · ( 11− 1

q

).

Si noti poi che il prodotto al primo membro e la somma∑

m1m dove m varia tra i naturali non nulli che

hanno fattori primi tra p e q. Siano ora per assurdo p0 < . . . < pr tutti i primi. Si avra

j≤r

∞∑

k=0

1pk

j=

j≤r

11− 1

pj

dove il prodotto al primo membro eguaglia∑

m1m quando m varia tra i naturali non nulli con fattori primi

tra p0, . . . , pr e dunque, in definitiva, tra tutti i naturali non nulli. Ma la serie∑

m>01m diverge, e dunque

non puo avere somma finita. Si cade cosı in contraddizione per avere assunto che ci sia soltanto un numerofinito di primi. Segue allora che i primi sono una infinita. a

La (infinita) successione dei primi non e comunque regolare e prevedibile. Ad esempio si osserva:

Teorema. Sia k un qualunque intero > 1. Allora ci sono k numeri naturali consecutivi nessuno deiquali e primo.

Dimostrazione. Consideriamo (k + 1)! = 1 · 2 · 3 · . . . · k · (k + 1) e la sequenza di naturali

a1 = (k + 1)! + 2 maggiore di 2 e divisibile per 2a2 = (k + 1)! + 3 maggiore di 3 e divisibile per 3

fino a

ak = (k + 1)! + (k + 1) maggiore di k + 1 e divisibile per k + 1.

Si ottengono in questo modo k numeri consecutivi, nessuno dei quali e primo. a

Quindi possono esistere nella successione dei primi due elementi consecutivi a differenza arbitrariamentegrande. Si noti che la minima differenza di due primi consecutivi e dispari e 2: due primi con questa proprieta,dunque della forma p e p + 2 rispettivamente, si dicono gemelli. Esempi di coppie di primi gemelli sono

3, 5,5, 7,11, 13.

Non e noto quante siano le possibili coppie di primi gemelli. Per quanto oggi se ne sa, potrebbero anche essereinfinite; in tal caso, nella successione dei primi, alle lacune arbitrariamente grandi assicurate dal teoremaprecedente si potrebbero alternare coppie di primi gemelli e dunque vicini il piu possibile. In definitiva,si conferma quanto anticipato sulla irregolarita e imprevedibilita della sequenza dei primi e si ribadisce ilproblema di capire in che modo essi si distribuiscono in N. La questione interseca i metodi di Analisi giapresenti nella dimostrazione di Eulero della infinita dei primi. In effetti, una misura della distribuzione deiprimi puo essere fornita dalla funzione π che ad ogni reale positivo x associa

π(x) = numero dei primi ≤ x.

Dunque π(2) = 1, π(3) = 2, π(6) = 3 e cosı via. Gauss congetturo nel 1792, a soli 15 anni, che π(x) coincideasintoticamente con l’altra funzione x 7→ x

log x per x che tende a +∞, azzardando in questo modo almenouna stima asintotica della distribuzione dei primi.

Ma la Congettura di Gauss non si rivelo semplice da dimostrare. Ad esempio, ci volle qualche tempoprima che Chebyshev riuscisse a provarne una versione piu debole, e precisamente che il grafico di π(x) puoessere racchiuso per x > 1 da quelli di due opportuni multipli di x

log x . In dettaglio, sappiamo oggi che, perogni x > 1,

x6 log x

≤ π(x) ≤ 8xlog x

.

17

Per progressi piu sostanziali bisogno attendere Riemann, e il suo uso dell’analisi complessa in questioni diteoria dei numeri. Riemann introdusse la funzione di variabile complessa

ζ(s) =∞∑

n=1

1ns

definita quando s ∈ C e la parte reale Re(s) di s e > 1; ζ e chiamata, appunto, la zeta di Riemann. Si notiche, per Re(s) > 1,

ζ(s) =∏

p

11− 1

ps

al variare di p tra i primi, il che ricorda la prova di Eulero della infinita dei primi. In effetti, l’idea diRiemann era che informazioni sui primi potessero essere ottenute dallo studio delle proprieta analitiche di ζe di simili funzioni. Ad esempio, non e difficile osservare, avendo un minimo di dimestichezza con l’analisi,che l’argomento di Eulero deriva l’esistenza di infiniti primi dalla proprieta lims→1 ζ(s) = ∞. D’altra parte,l’analisi complessa ci assicura che ζ e una funzione olomorfa su tutto il semipiano Re(s) > 1 e si puo estendereopportunamente ad una funzione analitica sul semipiano Re(s) > 0 e addirittura sull’intero piano complessoC. Riemann, in una sua famosa ricerca, stabilı il legame tra la funzione π e le radici in C del prolungamentoanalitico di ζ. Infatti, si puo provare che ci sono radici di questo prolungamento sui punti −2, −4, . . . dellaretta reale: queste radici sono dette banali. Riemann congetturo:

Ipotesi di Riemann. Gli zeri non banali di ζ si trovano tutti sulla retta Re(s) = 12 e sono infiniti.

L’infinita degli zeri di ζ sulla retta Re(s) = 12 fu provata da Hardy; ma la prima parte dell’ipotesi di

Riemann e ancora un problema aperto. Una sua soluzione positiva implicherebbe, relativamente alla funzioneπ,

π(x) =∫ x

2

dtlog t

+ O(√

xlog x).

Comunque, nel 1896, Hadamard e, indipendentemente, De La Vallee-Poussin provarono la congettura diGauss (piu di un secolo dopo che Gauss l’aveva proposta). Il loro risultato e comunemente conosciuto con ilnome di Teorema dei Numeri Primi.

Teorema dei Numeri Primi. Si ha

limx→+∞π(x)

xlog x

= 1.

La dimostrazione si basa su ulteriori sviluppi dell’analisi complessa, in particolare sulla prova che ζ(s) 6= 0per Re(s) = 1. Il Teorema dei Numeri Primi da una luce parziale sul problema della distribuzione dei primi,ma solo attraverso una stima asintotica. Molti misteri che accompagnano l’effettiva distribuzione dei primirestano ancora aperti, e tra essi, come gia detto, il numero effettivo delle coppie di primi gemelli. Anche quisi hanno soltanto parziali stime asintotiche relative alla funzione π2 che ad ogni reale positivo x associa ilnumero dei primi p ≤ x tali che p + 2 e ancora primo: si noti che il numero delle coppie di primi gemelli efinito se e solo se π2 diviene costante da un certo x in poi. Ma allo stato attuale quanto di meglio si sa e che

π2(x) ≤ 8Dx

log2 x(1 + 0(

log log xlog x

))

dove D denota il prodotto∏

p(1−1

(p−1)2 ), e chiamata la costante dei primi gemelli ed e stimata 0,66016... .

§ 5. Riconoscere i Primi?

Il Teorema Fondamentale dell’Aritmetica solleva anche in modo naturale la seguente coppia di questioni:dato un naturale N > 1,

18

1) (primalita) riconoscere se N e primo o no;

2) (fattorizzazione) decomporre N nei suoi fattori primi.

I due problemi sono certamente collegati, ma non coincidenti: anche da un punto di vista intuitivo, si puoragionevolmente ammettere che “decomporre N in fattori primi” e piu complicato che non “distinguere seN e primo o composto”. Torneremo piu tardi su questo argomento. Ma intanto citiamo l’autorevole parereche Gauss espresse a proposito delle due questioni nelle sue Disquisitiones Arithmeticae del 1801:

“Il problema di riconoscere i primi dai composti e di decomporre i secondi nei loro fattori primi e riconosciutoessere uno dei piu importanti ed utili in Aritmetica... La dignita stessa della scienza sembra richiedere diesplorare ogni possibile mezzo per risolvere problemi cosı eleganti e famosi.”

Comunque, senza voler mancare di rispetto a Gauss, tanta attenzione sembra, almeno a prima vista, sproposi-tata e ingiustificata. In effetti, gia gli antichi Greci conoscevano un algoritmo semplicissimo per risolvereentrambe le questioni. Lo chiameremo, tanto per fissare le idee, algoritmo artigianale.

Algoritmo artigianale. Sia dato un naturale N > 1. Dividiamo successivamente N per 2, 3, 4, 5, . . .,N − 1.

? Se nessuna divisione da resto 0, si dichiara N primo.

? Se qualche divisione da resto 0, si deduce N composto, e si hanno informazioni sulla decomposizione diN (perche se ne conosce un divisore, col relativo quoziente). a

Che cosa c’e che non funziona in questo facile procedimento? In effetti, e la sua efficienza che nonsoddisfa. Infatti, l’algoritmo puo richiedere, almeno nella forma in cui lo abbiamo proposto,

N − 2 divisioni

(tante almeno occorrono se N si rivela primo). Ora, immaginiamo che N sia un numero superiore al miliardo;possiamo aspettare un miliardo di divisioni prima di riconoscerne la primalita? Il tempo di attesa sembraproibitivo, e certamente lo e se ci rifacciamo alla tesi di Cook-Karp e ai dettati della moderna InformaticaTeorica. Infatti N−2 e esponenziale rispetto alla lunghezza dell’input N (che ricordiamo essere, piu o meno,la parte intera di log2 N). E vero che il procedimento ha delle ovvie semplificazioni:

(i) se N = a · b con a e b minori di N (e maggiori di 1), si ha a ≤√

N o b ≤√

N ; in altre parole, se Ne composto, allora N ha un divisore tra 2 e

√N , quindi la verifica dei possibili divisori di N si puo

limitare da 2 a√

N ;

(ii) se N non e multiplo di 2, non puo esserlo neppure di 4, 6, . . .; in altre parole, possiamo limitare laverifica ai numeri primi ≤

√N .

Ma anche con queste abbreviazioni l’algoritmo si mantiene lento e proibitivo per numeri N grandi. C’e poida osservare che una divisione non corrisponde ad un unico passo di computazione, secondo la convenzioneche abbiamo fatto nel paragrafo 2, ma puo a sua volta implicare un gran numero di singoli passi. A questoproposito, va citata una variante del metodo, che funziona in modo piu rapido almeno per la primalita, sibasa sul presupposto che moltiplicare e piu semplice che dividere ed era conosciuta anche agli antichi Greci:viene infatti attribuita ad Eratostene (terzo secolo a. C.).

Crivello di Eratostene. Sia N un naturale > 1. Si determinano tutti i primi ≤ N (e dunque anchela primalita di N) nel modo che segue:

(i) elenchiamo tutti i naturali da 2 a N (ad esempio distribuendoli su righe corrispondenti alle decine, da2 a 10, poi da 11 a 20, e cosı via);

(ii) 2 e primo; allora eliminiamo dalla nostra tabella tutti i multipli > 2 di 2;

(iii) il minimo numero rimasto (nella fattispecie 3) deve essere primo; eliminiamo comunque tutti i multipli> 3 di 3...

Si prosegue il procedimento fino a√

N . I numeri sopravvissuti alla selezione sono i primi ≤ N . In particolare,se N e rimasto nella tabella, N e primo. a

Ma anche questa variante del metodo occupa troppo tempo ed anche troppo spazio per la sua verificadi primalita. Dunque dobbiamo cercare algoritmi piu brillanti e veloci. E questo il senso della citazione diGauss che ha aperto il paragrafo. A questo argomento dedicheremo gran parte dei prossimi due capitoli.

19

§ 6. Generare i Primi

Alla ricerca di metodi adatti a riconoscere i primi si accompagna il problema di generare nuovi primi,sempre piu grandi, nella sequenza infinita che li elenca. Diamo qualche esempio famoso di primi all’internodi opportune successioni di naturali.

Primi di Fermat. La prima sequenza fa riferimento a Pierre de Fermat (1601-1665), giudice francesea Tolosa e matematico “dilettante”. Avremo modo di incontrarlo ancora nelle prossime pagine. Con Fermat,possiamo considerare le potenze di 2

1, 2, 4, 8, 16, . . . , 2m, . . . (m ∈ N)

ed i loro successori2, 3, 5, 9, 17, . . . , 2m + 1, . . . (m ∈ N).

Notiamo che3 = 21 + 1, 5 = 22 + 1, 17 = 24 + 1

sono primi, ed i corrispondenti esponenti 1, 2, 4 sono ancora potenze di 2. Invece

9 = 23 + 1

non e primo, e del resto l’esponente 3 non e potenza di 2. Concentriamoci allora sugli esponenti che sonopotenze di 2 e chiamiamo, per ogni naturale n,

F (n) = 22n+ 1 n-mo numero di Fermat.

Si ha, ad esempio,

F (0) = 220+ 1 = 3,

F (1) = 221+ 1 = 5,

F (2) = 222+ 1 = 17,

F (3) = 223+ 1 = 257,

F (4) = 224+ 1 = 65537;

tutti questi numeri sono primi, come gia Fermat aveva osservato. D’altra parte, se m non e potenza di 2,2m + 1 e composto: infatti, posto m = 2h · d con h naturale e d dispari > 1, si decompone

2m + 1 = (22h)d + 1d = (22h

+ 1) · q

con q maggiore di 1 perche d > 1. Sulla base di queste osservazioni Fermat congetturo:

Congettura di Fermat. Tutti i numeri di Fermat F (n) sono primi.

Fermat tento di provare questa proposizione senza riuscirci, ed anzi esprimendo qualche dubbio sullasua verita. In effetti, un secolo dopo Fermat, Eulero ne dimostro la falsita: addirittura F (5) = 225

+ 1 (ilprimo numero non ancora considerato nella lista) e composto. A scusante di Fermat, va detto che F (5) ha10 cifre in base 10, e certamente non era facile controllarne la primalita ai tempi di Fermat e di Eulero, chenon potevano disporre dei moderni calcolatori. Lo stesso Eulero prima cerco di classificare teoricamente ipossibili divisori di un numero di Fermat F (n), e provo che dovevano avere la forma

k · 2n+2 + 1;

applicando poi questa caratterizzazione, scoprı che il numero 641 (che ha la forma precedente) divide F (5)

F (5) = 641 · 6700417.

Che cosa sappiamo oggi dei numeri di Fermat?

20

1. Gli unici primi di Fermat conosciuti sono gli stessi gia noti a Fermat, e cioe F (n) per n ≤ 4. D’altraparte non e escluso che esistano altri esempi, ed e ancora un problema aperto la possibilita che vi sianoinfiniti primi di Fermat.

2. In effetti, i numeri di Fermat 22n+ 1 diventano enormemente grandi anche per valori relativamente

bassi di n (si pensi a F (5)) e risulta difficile decomporli, oppure verificarne la primalita, anche potendodisporre dell’ausilio dei moderni calcolatori. Cosı allo stato attuale si conosce la fattorizzazione di

F (5), F (6), F (7), F (8), F (9), F (11)

(tutti composti); di F (10) si sa che non e primo, ma non si conosce completamente la fattorizzazione, elo stesso vale per F (14). La situazione per valori maggiori di n e spesso ingestibile.L’interesse per i primi di Fermat e anche collegato ad un famoso teorema di Gauss sui poligoni regolari

costruibili con riga e compasso.

Teorema. Sia n un naturale ≥ 3. Allora si puo costruire con la riga e con il compasso un poligonoregolare di n lati se e solo se n ha la forma 2h · p0 · . . . · pr dove h e un naturale e p0, . . ., pr sono primi diFermat a 2 a 2 distinti.

Dunque si possono costruire con riga e compasso poligoni regolari di 3, 4, 5, 6, 8, 10, 12, 15 ... lati (3,5 sono primi di Fermat) ma non di 7, 9, 11, 13, 14, ... lati (7, 11, 13 non sono primi di Fermat, 3 lo e ma 9contiene il fattore 3 due volte).

Primi di Mersenne. Marin Mersenne (1588-1648) fu religioso francese. I numeri di Mersenne siintroducono come segue. Consideriamo ancora le potenze di 2

1, 2, 4, 8, 16, . . . , 2m, . . . (m ∈ N)

ma stavolta rivolgiamo l’attenzione ai loro predecessori

0, 1, 3, 7, 15, . . . , 2m − 1, . . . (m ∈ N).

Notiamo che3 = 22 − 1, 7 = 23 − 1

sono primi, cosı come i corrispondenti esponenti 2, 3, mentre

15 = 24 − 1

e composto, proprio come l’esponente 4. Per ogni naturale m, chiamiamo m-mo numero di Mersenne edindichiamo M(m) il naturale 2m − 1. Prendiamo atto con Mersenne che, se m e composto, anche M(m) loe. Infatti, posto m = a · b con a e b maggiori di 1, si ha

M(m) = 2m − 1 = 2a·b − 1 = (2a)b − 1b = (2a − 1) · q

con q > 1.Ci si potrebbe chiedere se, viceversa, m primo implica M(m) primo. Ma, a dispetto degli esempi

precedenti, la risposta e negativa (e la cosa era gia nota a Mersenne): possiamo citare il caso del primom = 11 per il quale

M(11) = 211 − 1 = 2047 = 23 · 89.

D’altra parte non e chiaro quanti siano complessivamente i primi di Mersenne: anzi, e problema ancoraaperto se non siano addirittura infiniti. Ma, a differenza dei numeri di Fermat, nuovi primi di Mersenne sonostati progressivamente scoperti nel corso degli anni. Citiamo, in secoli diversi,

? M(13) (risultato di Eulero del 1722),? M(127) (Lucas, 1876),? M(216091) (Slowinski, 1987).

21

In effetti, l’interesse principale per i numeri di Mersenne risiede soprattutto nella possibilita di ottenere nellaloro relativamente semplice sequenza 2m − 1 (m ∈ N) nuovi numeri primi, sempre piu grandi. L’aiuto deicalcolatori e fondamentale in questa ricerca (come l’esempio di Slowinski lascia chiaramente intuire).

Un altro argomento collegato ai numeri di Mersenne e il seguente. Un numero naturale n 6= 0 si diceperfetto se e la somma dei suoi divisori propri. Ad esempio:

? 6 = 1 + 2 + 3 e perfetto (e del resto e il numero dei giorni della creazione, coincidenza osservata ecommentata da S. Agostino nel suo “De Civitate Dei”),

? 28 = 1 + 2 + 4 + 7 + 14 e perfetto,? anche 496 e 8128 sono perfetti (ed esauriscono tutti i possibili casi < 10000.

C’e un teorema che collega i primi di Mersenne ed i numeri perfetti, affermando:

Teorema. Per ogni intero positivo m, M(m) = 2m − 1 e primo se e solo se 2m−1 ·M(m) e perfetto.

L’implicazione da sinistra a destra era gia nota ad Euclide, l’altra fu provata, molti secoli dopo, daEulero. Ad esempio:

? il numero perfetto 6 = 2 · 3 = 22−1 ·M(2) corrisponde al primo di Mersenne 3,? il numero perfetto 28 = 4 · 7 = 23−1 ·M(3) corrisponde al primo di Mersenne 7.

Cosı il problema relativo al numero dei primi di Mersenne si trasmette ai numeri perfetti: in effetti non siconosce quanti essi siano. Di piu tutti gli esempi conosciuti riguardano numeri pari, ed e questione ancoraaperta se esistano numeri perfetti dispari.

Primi di Germain. Sophie Germain (1776-1831) fu matematica francese contemporanea di Gauss.Un numero primo p si dice primo di Germain se 2p + 1 e ancora primo. Ad esempio

2, 3, 5, 11, . . .

sono primi di Germain (perche 5, 7, 11, 23, ... sono ancora primi), 7 non e primo di Germain perche2 · 7 + 1 = 15 e composto. L’importanza dei primi di Fermain e legata all’Ultimo Teorema di Fermat (alquale accenneremo brevemente nel prossimo paragrafo). Infatti Sophie Germain provo che l’equazione diFermat

xp + yp = zp

non ha radici intere a, b, c tali che p non divide ne a ne b (ne c) quando p e, appunto, un primo di Germain.Anche i primi di Germain hanno i loro misteri; ad esempio, non e noto se siano finiti o infiniti. In compensosi sa che ci sono infiniti primi che non sono di Germain; a questo proposito, c’e una congettura di Hardy eLittlewood che afferma che il numero dei primi ≤ x che non sono di Germain e asintoticamente uguale (perx tendente a +∞) a D x

log2 x , dove D = 0, 6601618... e la costante dei primi gemelli.

Sull’importanza di conoscere metodi anche casuali per generare primi e sulle applicazioni possibili diquesti metodi in crittografia avremo modo di tornare nel nostro ultimo capitolo.

§ 7. Numeri e Misteri

La relativa facilita con cui argomenti, esempi e problemi di Aritmetica si possono proporre non deve farpensare che la Teoria dei Numeri (naturali) sia un’area semplice della Matematica. Come affermo Kroneckerun secolo fa, “i numeri naturali sono i soli creati da Dio”. Questa frase (al di la degli intenti polemici concui fu pronunciata, contro Cantor e l’introduzione dei numeri transfiniti) suggerisce per i numeri naturaliuna sorta di genesi divina, che si riflette nei tanti misteri irrisolti che ancora li accompagnano. Del resto,le pagine precedenti hanno fornito una gran dovizia di esempi a sostegno di questa affermazione (i primigemelli, i primi di Fermat, quelli di Mersenne, i numeri perfetti e, per altri versi, l’Ipotesi di Riemann). Perrimanere ai confini tra scienza e religione, possiamo citare quel che Andre Weil diceva a proposito di certiproblemi sui naturali, e cioe che “dimostrano l’esistenza di Dio e anche quella del diavolo” (a sottolineare

22

la difficolta quasi trascendente di risolvere certe questioni apparentemente semplici che li riguardano, ed ildispetto di dover ammettere, appunto, questa incapacita, come se un qualche demonio ci ostacolasse). Inquesto paragrafo illustriamo brevemente i due misteri piu appassionanti che riguardano i numeri naturali,l’uno (la Congettura di Goldbach) ancora aperto, l’altro (l’Ultimo Teorema di Fermat) risolto da pochissimianni.

Congettura di Goldbach. Nel 1742, C. Goldbach propose in una lettera ad Eulero il seguenteproblema:

ogni numero naturale ≥ 6 e la somma di 3 primi.

Eulero rispose senza risolvere il quesito, ma osservando che sarebbe stato equivalente provare:

ogni numero naturale pari ≥ 4 e la somma di 2 primi.

Il lettore potra dimostrare per esercizio l’equivalenza delle due proposizioni. La seconda e quella che co-munemente si chiama la Congettura di Goldbach. Dovizie di esempi la sostengono

4 = 2 + 2, 6 = 3 + 3, 8 = 5 + 3, 10 = 7 + 3, 12 = 7 + 5, . . .

Ma un qualunque numero di esempi positivi non basta a dare una dimostrazione, visto che i numeri pari (equelli primi) sono infiniti. In effetti, il problema e oggi, dopo quasi 3 secoli dalla sua formulazione, ancoraaperto.

Ultimo Teorema di Fermat. Nel 1637 Pierre de Fermat scrisse sul margine di un libro che stavaleggendo di aver trovato una dimostrazione meravigliosa della seguente proposizione:

Non ci sono soluzioni intere a, b, c 6= 0 della equazione xn + yn = zn per n ≥ 3.

Si noti che il caso n = 2 corrisponde al Teorema di Pitagora, per il quale esistono -ed anzi sono completamenteclassificate- soluzioni intere a, b, c 6= 0: si pensi a

a = 3, b = 4, c = 5,

a = 5, b = 12, c = 13

e cosı via. Fermat escludeva la possibilita di soluzioni a, b, c 6= 0 quando l’esponente e > 2. D’altra partela asserita dimostrazione (“troppo lunga per essere contenuta nel margine della pagina”) non fu trovatain nessuna delle carte di Fermat. L’affermazione di Fermat divenne un problema classico di Matematica,cui molti si appassionarono senza riuscire a trovare una risposta: pur non essendo un “teorema di Fermat”nel senso letterale del termine (in effetti la dimostrazione di Fermat, ammesso che fosse corretta, non fumai trovata), fu battezzata Ultimo Teorema di Fermat. Le discussioni sorte nel tentativo di risolverlaportarono a profondi sviluppi della Matematica (come la nascita della Teoria Algebrica dei Numeri e certiprogressi nell’Algebra astratta). Finalmente nel 1994 (quasi 4 secoli dopo Fermat) Andrew Wiles ne diede unadimostrazione, certamente diversa da quella che Fermat aveva nella sua mente, perche strettamente collegataad argomenti profondi e moderni di Geometria Algebrica (come le curve ellittiche e le forme modulari).

23

Capitolo 3 - PRIMI E CONGRUENZE

§ 1. Congruenze

Allarghiamo la nostra analisi all’anello Z degli interi (con le usuali operazioni di somma e prodotto). Iconcetti introdotti nello scorso capitolo sui naturali si estendono con le opportune modifiche a questo ambitoesteso. Per ogni intero positivo m possiamo considerare in Z la relazione di congruenza modulo m.

Definizione. Si dice che due interi a e b sono congrui modulo m, e si scrive a ≡ b (modm), se m dividea− b.

E un facile esercizio verificare che la congruenza modulo m e una relazione di equivalenza in Z. Per ogniintero a, denotiamo con am la sua classe di congruenza modulo m

am = {b ∈ Z : a ≡ b (modm)} = {mq + a : q ∈ Z}.

Zm denota l’insieme di queste classi, cioe l’insieme quoziente di Z rispetto a ≡ (modm). Si osserva facilmentequanto segue.

Osservazioni. 1) Siano a un intero, r il resto della divisione di a per m; allora a = mq + r per qualcheintero q, dunque a ≡ r (modm) e in conclusione am = rm dove 0 ≤ r < m.

2) Quando poi r, s sono due interi e 0 ≤ r, s < m, si ha r ≡ s (modm) se e solo se r = s.

Le classi di congruenza modulo m corrispondono quindi ai resti della divisione per m; ci sono m classi 0m,1m, . . . , (m− 1)m rispettivamente. E poi facile osservare che la relazione di congruenza preserva addizionee moltiplicazione: se a, a′, b, b′ sono interi e a ≡ a′ (mod m), b ≡ b′ (modm), allora

a + b ≡ a′ + b′ (modm), a · b ≡ a′ · b′ (modm).

Di conseguenza, possiamo definire anche in Zm due operazioni di somma e prodotto, ponendo, per a, b interi,

am + bm = (a + b)m, am · bm = (a · b)m.

Sappiamo che, rispetto a + e ·, Zm e un anello commutativo unitario (con unita 1m). Si ha poi:

Proposizione. Per ogni intero a, am e invertibile in Zm se e solo se (a, m) = 1. In particolare, Zm eun campo se e solo se m e primo.

Dimostrazione. am e invertibile in Zm se e solo se esiste un intero x tale che 1m = am · xm = (a · x)m(cioe ax ≡ 1 (modm)), e dunque se e solo se ci sono due interi x e y per cui 1 = ax+ by. Ma questo equivalea dire che (a, m) = 1 ((⇒) e chiaro, (⇐) e l’identita di Bezout). In particolare, Zm e un campo (e dunquetutti i suoi elementi 6= 0m sono invertibili) se e solo se ogni intero a non congruo a 0 modulo m, e cioe nondivisibile per m, e primo con m: ma questo equivale ovviamente a chiedere che m sia primo. a

Si noti che la dimostrazione ci fornisce anche un algoritmo esplicito di calcolo dell’inverso di a modulom (quando a e primo con m). Basta esprimere il massimo comune divisore 1 di a e m nella forma

ax + by

con x e y interi, secondo l’Identita di Bezout: l’inverso di am e proprio xm (e nello scorso capitolo abbiamovisto come computare rapidamente x e y).

Aggiungiamo che, se a e un intero che non e primo con m, allora am e un divisore dello zero in Zm (inparticolare, se a e multiplo di m, allora am = 0m).

24

Gli anelli Zm hanno dunque le loro specificita algebriche che non sempre corrispondono a quanto accadetra gli interi, o in altri ambienti familiari. Ad esempio, se consideriamo l’equazione

x2 − 1

tra gli interi (o i razionali, o i reali, o i complessi), sappiamo che le sue soluzioni (cioe le radici quadratedell’unita) sono ±1. Ma negli Zm le cose possono cambiare. Certamente 1m e (−1)m = (m − 1)m restanoradici, come e facile verificare.Se poi m e primo, non vi sono altre radici possibili. Infatti Zm e un campo, ed un polinomio di secondogrado non puo avere in un campo piu di due radici. Alternativamente, se l’intero a determina una soluzionedi x2− 1m in Zm, allora il primo m divide a2− 1 = (a− 1) · (a+1) e quindi, per le proprieta dei primi sopraosservate, a − 1 oppure a + 1: in altre parole am = 1m oppure am = (−1)m. Dunque, per m primo, non cisono sorprese (semmai c’e da ricordare che, quando m = 2, le due radici 1 e −1 coincidono modulo m).Tuttavia, quando m e composto, le cose possono cambiare radicalmente: ad esempio, per m = 8, scopriamo4 radici quadrate distinte dell’unita in Z8. Infatti, un facile controllo mostra

12 ≡ 32 ≡ 1 (mod 8)

e conseguentemente(−1)2 ≡ (−3)2 ≡ 1 (mod 8),

cioe 72 ≡ 52 ≡ 1 (mod 8).Un altro risultato tecnico sui sistemi di congruenze che e utile ricordare e il

Teorema del resto cinese. Siano m0, . . . , mn interi > 1 a due a due primi tra loro. Allora, per ogniscelta di interi a0, . . . , an, esiste un intero x tale che

x ≡ aj (mod mj) ∀j ≤ n

ed anzi, per ogni x ∈ Z, si ha

x ≡ aj (modmj)∀j ≤ n ⇔ x ≡ x (modM)

dove M denota il prodotto∏

j≤n mj .

Dimostrazione. Per ogni j ≤ n poniamo qj = Mmj

. Allora (qj , mj) = 1, e dunque per la identita diBezout esistono due interi sj , tj per cui

1 = qjsj + mjtj

e conseguentementeaj = qjsjaj + mjtjaj .

Quindi qjsjaj ≡ aj (modmj) per ogni j ≤ n. Sia ora x =∑

i≤n qisiai. Notiamo che, fissato j ≤ n, mj

divide ogni qi per i 6= j. Cosıx ≡ qjsjaj ≡ aj (modmj).

Inoltre, per ogni intero x, x ≡ aj (modmj) per ogni j ≤ n se e solo se x ≡ x (modmj) per ogni j ≤ n edunque, in definitiva, se e solo se x e x sono congruenti modulo il minimo comune multiplo di m0, . . . , mn,che eguaglia il loro prodotto M perche m0, . . . , mn sono a due a due primi tra loro. a

§ 2. Il Piccolo Teorema di Fermat

Il paragrafo e dedicato ad un altro risultato di Fermat, da non confondere con l’Ultimo Teorema diFermat che abbiamo discusso nel precedente capitolo (e che, a stretto rigore di termini, non e un teorema

25

dimostrato con certezza da Fermat). La presente proposizione viene allora chiamata Piccolo Teorema diFermat, e dice:

Teorema (Fermat). Sia p un numero primo. Allora, per ogni intero a, vale ap ≡ a (mod p). Se poi ae p sono primi tra loro (cioe p non divide a), allora ap−1 ≡ 1 (mod p).

Dimostrazione. La seconda tesi e una semplice conseguenza della prima. Supponiamo infatti che pdivida ap − a = a · (ap−1 − 1). Siccome p e primo, p deve dividere uno di questi due fattori; se non divide a,divide ap−1 − 1. Passiamo allora a provare la prima tesi. Ci basta dimostrarla per a ≥ 0. Procediamo perinduzione su a. Per a = 0 e sufficiente prendere atto che, addirittura, 0p = 0. Supponiamo allora il teoremavero per a e dimostriamolo per a + 1. Sappiamo

(a + 1)p =p

k=0

(

pk

)

ak.

Ricordiamo che(

pk

)

e un naturale e

(

pk

)

=p!

k!(p− k)!=

p · (p− 1) · . . . · (p− k + 1)k · (k − 1) · . . . · 1

.

Quando 0 < k < p, i numeri da 1 a k non possono dividere p perche p e primo; segue p |(

pk

)

. Cosı

(a + 1)p ≡p

k=0

(

pk

)

ak ≡ ap + 1 ≡ a + 1 (mod p)

(l’ultima congruenza deriva dalla ipotesi di induzione). a

Due applicazioni del Teorema di Fermat. 1. Sappiamo che gli interi a primi con p sono esattamentequelli invertibili modulo p ed abbiamo visto come calcolare il loro inverso. Il Piccolo Teorema di Fermat cifornisce comunque un secondo metodo, che ha ancora il pregio di essere rapido ed efficiente. Infatti dallauguaglianza ap−1

p = 1p si deducea−1

p = ap−2p = (ap−2)p.

In altre parole, per ottenere l’inverso di a modulo p, basta computarne la potenza (p − 2)-ma modulo p.L’efficienza di questo metodo e dovuta al fatto che esistono algoritmi rapidi di calcolo di potenze (moduloun intero positivo prefissato): ne vedremo un esempio nel prossimo paragrafo § 4.

2. Ma la applicazione del Piccolo Teorema di Fermat che piu ci interessera nel resto di queste noteriguarda il problema della primalita. Infatti il Teorema di Fermat ci fornisce un criterio sufficiente a ri-conoscere che un dato intero N ≥ 2 e composto: ci basta trovare un intero a primo con N , 1 < a < N , percui si verifica

aN−1 6≡ 1 (mod N);

questo garantisce che N e, appunto, composto. Si potrebbe sperare che questo test suggerito dal Teorema diFermat sia anche sufficiente a verificare che N e primo (quando lo e). In dettaglio, ci si puo chiedere quantosegue:

(i) supponiamo che si trovi un a primo con N (eventualmente 1 < a < N) tale che aN−1 ≡ 1 (modN);possiamo dedurne che N e primo? La risposta e negativa: come osservato da Sarrus, N = 341 = 11 · 31non e primo, eppure 2 e primo con 341 e soddisfa 2340 ≡ 1 (mod 341). D’altra parte, se 2 e cattivotestimone della primalita di 341, 3 (che pure e primo con 341) si comporta onestamente, perche 3340 6≡1 (mod 341).

Potremmo allora correggere l’impostazione della domanda e rafforzarne le ipotesi:

26

(ii) supponiamo che, per ogni intero a primo con N , 1 < a < N , si abbia aN−1 ≡ 1 (modN); possiamodedurne che N e primo? Ma la risposta e ancora negativa: ad esempio, N = 561 = 3 · 11 · 17 non eprimo, eppure ogni intero a primo con 561 soddisfa a560 ≡ 1 (mod 561).

Dunque il Piccolo Teorema di Fermat e criterio necessario ma non sufficiente per la primalita. Tuttavia haruolo fondamentale nella ricerca di algoritmi di primalita, come avremo modo di apprezzare compiutamentenel prossimo capitolo. Possiamo comunque gia citare una condizione necessaria e sufficiente per la primalitache deriva direttamente del Teorema di Fermat.

Teorema di Wilson. Sia N un intero ≥ 2. Allora N e primo se e solo se (N − 1)! ≡ −1 (modN).

Il Teorema di Wilson non fornisce tuttavia un criterio efficiente per la verifica della primalita di N .Infatti il calcolo di (N −1)! modulo N richiede in linea di principio N −2 successive moltiplicazioni e, per Ngrande, il tempo che ne deriva per le computazione puo superare addirittura quello dell’algoritmo artigianaleproposto nello scorso capitolo, ne le attuali conoscenze servono a migliorare la situazione in modo decisivo.

Dimostrazione. Supponiamo dapprima N composto, dunque N ammette un divisore proprio 1 <a < N . In particolare a divide (N − 1)!. Se fosse (N − 1)! ≡ −1 (mod N), a (che divide N) sarebbe anchesottomultiplo di −1, e questo e impossibile perche a e maggiore di 1.

Assumiamo ora N primo. Se N = 2, la tesi e ovvia, visto che (2− 1)! ≡ 1 ≡ −1 (mod 2). Supponiamo alloraN > 2. Le N − 1 classi di resti modulo N degli interi 1, 2, . . ., N − 1 hanno inverso modulo N . Le unicheclassi che hanno per inverso se stesse sono quelle degli elementi a per cui a2 ≡ 1 (mod N), e dunque quelledi 1 e di −1 ≡ N − 1 (modN). Osserviamo che 1 6≡ −1 (modN) per N > 2. Le altre N − 3 classi (quelle di2, 3, . . ., N − 2) si suddividono in coppie formate da elementi l’uno inverso dell’altro. Complessivamente

2 · 3 · . . . · (p− 2) ≡ 1 (modN),

e quindi(N − 1)! ≡ 1 · (N − 1) ≡ −1 (modN). a

§ 3. La φ di Eulero ed il Teorema di Eulero

Consideriamo la funzione φ che ad ogni intero positivo N associa

φ(N) = numero degli interi a compresi tra 1 e N e primi con N .

φ e detta la funzione di Eulero.

Osservazioni. 1. φ(1) = 1.

2. Se N e primo, allora φ(N) = N − 1. Infatti ogni intero compreso tra 1 e N − 1 e primo con N .Quindi φ(2) = 1, φ(3) = 2 e cosı via. Viceversa, se φ(N) = N − 1, N deve essere primo. Infatti, se N ecomposto, deve esistere qualche divisore d di N compreso tra 2 e N − 1; d non puo essere primo con N ,dunque φ(N) < N − 1.

3. Se N e una potenza pk di un primo p, allora φ(N) = pk−1 · (p − 1). Infatti, siccome p e primo, inumeri (tra 1 e N = pk) che non sono primi con p sono i multipli di p

p, 2p, 3p, . . . , p2 = p · p, . . . , pk = p · pk−1

e dunque sono pk−1. Gli altri (quelli primi con p) sono allora pk − pk−1 = pk−1 · (p − 1), il che chiude lanostra dimostrazione. Ad esempio, φ(4) = φ(22) = 21 · 1 = 2.

Per il calcolo complessivo di φ su ogni intero positivo N , ci basta allora sapere l’ulteriore:

Teorema. Siano m e n due interi positivi, (m, n) = 1. Allora φ(m · n) = φ(m) · φ(n).

27

Dimostrazione. Dobbiamo contare il numero degli interi positivi a ≤ m·n primi con m·n. Osserviamoche, siccome m e n sono primi tra loro, la condizione (a, m · n) = 1 equivale a (a, m) = 1, (a, n) = 1.Distribuiamo gli interi positivi a ≤ m · n su m righe e n colonne nel modo che segue:

1 m + 1 . . . km + 1 . . . (n− 1) ·m + 12 m + 2 . . . km + 2 . . . (n− 1) ·m + 2

. . . . . . . . . . . . . . . . . .r m + r . . . km + r . . . (n− 1) ·m + r

. . . . . . . . . . . . . . . . . .m 2m . . . (k + 1)m . . . n ·m

Sia 1 ≤ r ≤ m. Per ogni k < n, km + r ha lo stesso massimo comune divisore di r con m. Dunque tuttigli elementi della riga r-ma sono primi con m se lo e r, mentre nessuno lo e se r non lo e. Ci interessaovviamente il primo caso: le righe coinvolte sono φ(m). Ci domandiamo quanti elementi in ognuna di questerighe sono anche primi con n. Osserviamo che per k, k′ naturali < n, km + r ≡ k′m + r (modn) se e solo sen divide la differenza (km + r)− (k′m + r) = (k − k′) ·m; d’altra parte n e primo con m e quindi n divide(k − k′) ·m se e solo se n divide k − k′ e quindi k = k′ (infatti, k e k′ sono ≥ 0 e < n). In altre parole, glielementi della riga r-ma descrivono al variare del naturale k < n tutte le possibili classi di resti modulo n.Ma allora quelli tra loro che sono primi con n sono esattamente φ(n). In conclusione

φ(m) e il numero delle righe su cui ci sono elementi primi con m (e conseguentemente tutti gli elementisono primi con m),φ(n) e il numero degli elementi primi anche con n su ciascuna di queste righe.

Quindi φ(m · n) = φ(m) · φ(n). a

Come gia anticipato, possiamo combinare il teorema appena dimostrato e le osservazioni che lo precedonoper ottenere un algoritmo di calcolo di φ. Infatti, dato un intero N ≥ 2, decomponiamo N nel prodotto dipotenze di fattori primi distinti (e dunque primi tra loro)

N =∏

i≤t

pkii = pk0

0 · . . . · pktt ;

applicando il teorema precedente otteniamo

φ(N) =∏

i≤t

φ(pkii )

e finalmente dall’osservazione 3 concludiamo

φ(N) =∏

i≤t

pki−1i · (pi − 1).

Ad esempio, da 12 = 22 · 3 si deduce φ(12) = φ(22) · φ(3) = 2 · 2 = 4. Allo stesso modo si vede φ(6) = 2.C’e comunque da rilevare che l’algoritmo appena proposto fa esplicito riferimento alla decomposizione infattori primi di N ; dunque non puo garantire una accettabile efficienza in assenza di procedimenti rapidi difattorizzazione.

Un’altra importante proprieta della φ di Eulero e la seguente:

Teorema. Per ogni intero positivo N , N =∑

d|N φ(d) (equivalentemente, N =∑

d|N φ(Nd ), visto che

al variare di d Nd ancora descrive i divisori di N).

Ad esempio, i divisori di 12 sono 1, 2, 3, 4, 6 e 12 ed hanno come immagine in φ 1, 1, 2, 2, 2 e 4rispettivamente. La somma di questi valori e proprio 12.

Dimostrazione. Nell’insieme dei naturali compresi tra 1 e N definiamo la seguente relazione binaria∼: per 1 ≤ a, b ≤ N , a ∼ b se e solo se (a, N) = (b, N). E facile verificare che ∼ e una relazione diequivalenza, e che ogni elemento a e nella stessa classe di equivalenza del suo massimo comune divisore con

28

N : in altre parole, c’e una classe di equivalenza in ∼ per ogni divisore d di N , e tale classe e composta datutti gli elementi a compresi tra 1 e N che hanno massimo comune divisore d con N . Ci chiediamo quantisono questi elementi a (per ogni dato d). Osserviamo allora che, per 1 ≤ a ≤ N , (a, N) = d se e solo se ddivide a e (a

d , Nd ) = 1. Ma quest’ultima condizione determina complessivamente φ(N

d ) valori distinti per a.Ne segue che gli N elementi tra 1 e N sono suddivisi in classi di equivalenza, una per ogni divisore d di N ,e che ogni classe contiene φ(N

d ) elementi. Dunque N =∑

d|N φ(Nd ). a

La funzione φ di Eulero permette la seguente generalizzazione del Piccolo Teorema di Fermat.

Teorema di Eulero. Sia N un intero positivo. Allora, per ogni intero a primo con N , aφ(N) ≡1 (mod N).

Si noti che, se N e primo, allora φ(N) = N −1 e dunque in questo caso particolare il Teorema di Euleroafferma che, per ogni a primo con N , aN−1 ≡ 1 (modN) ribadendo cosı quanto stabilito dal Piccolo Teoremadi Fermat.

Dimostrazione. Siano b1, . . . , bφ(N) i naturali primi con N tra 1 e N . In particolare b1, . . . , bφ(N)sono a 2 a 2 incongrui modulo N . Supponiamo a primo con N . Allora i prodotti ab1, . . . , abφ(N) sonoanch’essi primi con N ed inoltre rimangono a 2 a 2 incongrui modulo N : infatti abi ≡ abj (modN) per1 ≤ i, j ≤ φ(N) implica (quando (a, N) = 1) che bi ≡ bj (modN) e dunque bi = bj e i = j. Quindiab1, . . . , abφ(N) rappresentano tutte le φ(N) classi di resti modulo N di interi primi con N . In particolare,per ogni i = 1, . . . , φ(N), esiste un unico j = 1, . . . , φ(N) per cui bi ≡ abj (modN). Moltiplicando al variaredi i (e quindi di j) otteniamo

φ(N)∏

i=1

bi ≡φ(N)∏

j=1

(abj) ≡ aφ(N)φ(N)∏

j=1

bj (modN).

Ricordando che i bi sono primi con N , si moltiplica per il prodotto dei loro inversi modulo N e si ottiene,come richiesto,

aφ(N) ≡ 1 (modN). a

Si noti che, come gia il Piccolo Teorema di Fermat nel caso di N primo, cosı anche il Teorema di Euleropermette il calcolo dell’inverso modulo un N arbitrario di interi a primi con N e dunque invertibili moduloN . Tale inverso eguaglia infatti la classe modulo N di aφ(N)−1, ed il suo calcolo e possibile se disponiamodi procedimenti adeguati a computare φ e potenze. Abbiamo gia discusso come calcolare φ; alle potenzededichiamo il prossimo paragrafo.

§ 4. Un Metodo Rapido per Calcolare le Potenze (modulo m)

Presentiamo qui un algoritmo veloce per il calcolo di una potenza aN per a e N interi positivi. Il pro-cedimento si applica anche per computazioni modulo m. Per semplicita di notazione, fissiamo un particolarevalore di N , ad esempio N = 100. Vogliamo allora calcolare a100 (eventualmente modulo m).

Passo 1. Anzitutto scriviamo l’esponente N (nel nostro caso, 100) in base 2. Ricordiamo che larappresentazione si ottiene con i resti delle divisioni successive per 2

100 = 2 · 50,

50 = 2 · 25,25 = 2 · 12 + 1,12 = 2 · 6,6 = 2 · 3,3 = 2 · 1 + 11 = 2 · 0 + 1.

29

Dunque 100 = 26 + 25 + 22 si scrive 1100100 in base 2.

Passo 2. Sostituiamo in questa rappresentazione in base 2 le cifre 0, 1 rispettivamente con Q e QX,ottenendo nel nostro caso particolare QXQXQQQXQQ.

Passo 3. Intendiamo le lettere Q e X come istruzioni da eseguire successivamente a partire da 1: Qsignifica quadrare (modulo m), X moltiplicare per a (modulo m). Il risultato dei calcoli corrispondenti e lapotenza cercata, come possiamo controllare nel nostro caso specifico:

1Q−→ 1 X−→ a

Q−→ a2 X−→ a3 Q−→ a6 Q−→ a12 Q−→ a24 X−→ a25 Q−→ a50 Q−→ a100.

Esempi. 1. Calcoliamo 2100 modulo 101 (osserviamo comunque che il Piccolo Teorema di Fermat sipuo applicare a questa situazione, e ci anticipa il risultato, che e 1). Ricordiamo che 100 si scrive 1100100in base 2 e dunque determina la sequenza di istruzioni QXQXQQQXQQ, che per a = 2 producono modulo101

1Q−→ 1 X−→ 2

Q−→ 4 X−→ 8Q−→ 64

Q−→ 4096 ≡ 56Q−→ 3136 ≡ 5 X−→ 10

Q−→ 100 ≡ −1Q−→ 1,

come previsto.2. Mostriamo adesso 2340 ≡ 1 (mod 340): e l’esempio di Sarrus anticipato nello scorso § 2 a proposito

del Piccolo Teorema di Fermat. Anzitutto rappresentiamo 340 in base 2: dalle divisioni340 = 2 · 170,170 = 2 · 85,85 = 2 · 42 + 1,42 = 2 · 21,21 = 2 · 10 + 1,10 = 2 · 55 = 2 · 2 + 1,2 = 2 · 1,1 = 2 · 0 + 1

ricaviamo la rappresentazione 101010100, cioe 340 = 28 + 26 + 24 + 22. Si deduce la sequenza di istruzioniQXQQXQQXQQXQQ, che applicata a 1 modulo 341 produce:

1Q−→ 1 X−→ 2

Q−→ 4Q−→ 16 X−→ 32

Q−→ 1024 ≡ 1QXQQXQ−→ 1

Q−→ 1,

come previsto (si noti che le prime sei istruzioni portano da 1 a 1 e dunque, ripetute una seconda volta su1, confermano lo stesso risultato).

3. Il lettore puo calcolare per esercizio 3340 modulo 341.

Per quanto riguarda poi l’efficienza dell’algoritmo, si puo verificare che il procedimento lavora in unnumero di passi O(l3) rispetto alla lunghezza l degli input.

§ 5. Qualche Richiamo sui Campi Finiti

Prima di proseguire, abbiamo bisogno di richiamare qualche fatto sui campi finiti, quale si puo desumereda un corso elementare di Algebra. Tra i campi finiti ci sono, come abbiamo visto poche pagine fa, i campiZp al variare di p tra i primi. Ma adesso vogliamo chiarire, piu in generale, come si caratterizzano tutti icampi finiti.

Sia allora F un campo finito, e sia q il numero dei suoi elementi; 0F e 1F denotino poi rispettivamentel’elemento nullo e l’elemento unita di F . La prima considerazione da fare riguarda la caratteristica di Fcar F , che non puo essere 0 (altrimenti F ammette come sottocampo il campo razionale ed e dunque infinito),

30

e quindi e un primo p. In altre parole, il sottocampo minimo di F e proprio Zp (a meno di isomorfismi).F e, allora, uno spazio vettoriale su Zp, finito e dunque di dimensione finita m (con m intero positivo). Neconsegue che il numero q degli elementi di F coincide con la potenza pm di p

q = pm.

Il gruppo moltiplicativo F ? degli elementi 6= 0F di F e abeliano ed ha ordine q− 1. In particolare il periodomoltiplicativo di ogni elemento a ∈ F ? divide q − 1. Segue che per a elemento non nullo di F

aq−1 = 1F ,

da cui si deduceaq = a,

uguaglianza che e soddisfatta anche da 0f : quindi aq = a per ogni a ∈ F (tra l’altro, si puo osservare che,nel caso F = Zp, riscopriamo per questa via il Piccolo Teorema di Fermat). Consideriamo allora il polinomioxq − x ∈ Zp[x]: ha grado q ed i q elementi distinti di F sono sue radici. Dunque F e proprio costituito dalleradici di xq − x, e xq − x si decompone in fattori lineari in F [x]

xq − x =∏

a∈F

(x− a);

come si usa dire in termini ufficiali, F e il campo di riducibilita completa di xq − x (il minimo ampliamentodi Zp in cui il polinomio xq − x si decompone in fattori di primo grado).

Viceversa, consideriamo un primo p, un intero positivo m e la potenza q = pm di p; ci domandiamo seesiste un campo F con q elementi. Per cercare di costruirlo, partiamo dal campo Zp con p elementi e dalpolinomio xq−x. E un fatto relativamente elementare di Algebra che, a meno di isomorfismi (identici su Zp),esiste uno ed un solo campo che amplia Zp, decompone xq−x in fattori lineari ed e minimo rispetto a questecondizioni (il campo di riducibilita completa di xq − x su Zp, appunto): indichiamolo con K (e denotiamocon 0K e 1K i suoi elementi nullo e unitario). Notiamo che xq − x ha derivata qxq−1 − 1K = −1K perchestiamo lavorando in caratteristica p (e dunque q vale 0). Conseguentemente xq − x non ha radici multiple(perche le eventuali radici multiple dovrebbero annullare anche la derivata −1K). Ne consegue che le radicidi xq − x in K sono tutte semplici, e dunque sono complessivamente q. Consideriamo a questo punto

F = {a ∈ K : aq = a}.

F e un sottocampo di K perche include OK = 0qK e 1K = 1q

K ed e chiuso per ±, · e inverso: ricordando chelavoriamo in caratteristica p, si ha infatti, per a, b in F ,

(a± b)q = aq ± bq, (a · b)q = aq · bq

e, per a 6= 0K ,(a−1)q = (aq)−1 = a−1.

Inoltre F ha esattamente q elementi (le q radici distinte di xq−x, come gia osservato). Dunque F e il campocercato.

In conclusione, possiamo affermare:

Teorema. Sia q un intero > 1. Se q non e potenza di primo, allora non esiste alcun campo finito con qelementi. Se invece q = pm e potenza di un qualche primo p, allora esiste un campo finito con q elementi, etale campo e unico a meno di isomorfismi, ha caratteristica p (dunque amplia Zp a meno di isomorfismi) esi compone esattamente delle radici del polinomio xq − x.

Denotiamo allora con un simbolo particolare Fq l’unico campo con q elementi quando q e potenza diprimo. Vogliamo adesso mettere in evidenza alcune proprieta di un campo finito F (piu esattamente, delsuo gruppo moltiplicativo F ?).

31

Teorema. Sia F un campo finito (di ordine q = pm con p primo, m intero positivo). Allora il gruppomoltiplicativo F ? e ciclico.

Dimostrazione. Vogliamo provare che i q−1 elementi di F ? si possono ottenere come potenze distintedi uno opportuno di loro. Sappiamo che ogni elemento a ∈ F ? ha un periodo moltiplicativo che dividel’ordine q − 1 dell’intero gruppo. Inoltre,(?) per ogni intero positivo n ci sono al piu n elementi a ∈ F ? che soddisfano an = 1F .Infatti il campo F contiene al piu n radici distinte del polinomio xn − 1F , e tutte queste radici sono 6= 0F .Supponiamo adesso che

q − 1 = qt00 · . . . · qtr

r

sia la decomposizione di q−1 nel prodotto di potenze di fattori primi distinti q0, . . ., qr (con esponenti interipositivi t0, . . ., tr). F ? e un gruppo abeliano finito e, come tale, si decompone come prodotto diretto

F ? = S(0)× . . . × S(r)

di sottogruppi S(j) (j ≤ r), ciascuno di ordine qtjj : in particolare ogni elemento a ∈ F ? si esprime in modo

unico come prodotto(? ?) a = a0 · . . . · ar

con aj ∈ S(j) per ogni j ≤ r. Notiamo per inciso che anche i sottogruppi S(j) soddisfano (?) (come l’interogruppo F ?). Adesso scegliamo per ogni j ≤ r un elemento cj ∈ S(j) di periodo massimo qsj

j (con sj ≤ tj

opportuno). Allora 1F , cj , c2j , . . ., c

qsjj −1

j sono qsjj radici distinte per il polinomio xq

sjj − 1F , e, per (?)

esauriscono tutte le possibili radici di questo polinomio in F ?. Sia ora b ∈ S(j): b ha per periodo una

potenza ≤ qsjj di qj , e dunque soddisfa certamente xq

sjj = 1F . Ma allora b coincide con una potenza di c.

Segue che S(j) e ciclico (generato da cj) e sj = tj .A questo punto, per concludere la dimostrazione, consideriamo in F ? il prodotto di tutti questi generatoric = c0 · . . . · cr. Vogliamo provare che c genera F ?. Sia infatti m il periodo di c, allora m divide q − 1 e

1F = cm = cm0 · . . . · cm

r

e, per l’unicita della decomposizione (? ?), 1F = cmj per ogni j ≤ r; cosı qtj

j | m per ogni j ≤ r e quindi∏

j≤r qtjj = q − 1 divide m. Ma, viceversa, m | q − 1, dunque, in conclusione, m = q − 1. a

Un risultato analogo al precedente, utile nel seguito, e

Teorema. Per ogni primo p, il gruppo moltiplicativo degli elementi invertibili Zp2 e ciclico.

Ne omettiamo la dimostrazione, ma richiamiamo la attenzione sul fatto che l’anello delle classi di restimodulo p2 Zp2 non e un campo, meno che mai coincide con Fp2 .

Vogliamo comunque sottolineare un’ultima proprieta relativa ai campi finiti. Fissiamo un intero r > 1.Come gia osservato, un campo finito F contiene al massimo r radici distinte del polinomio xr − 1F , e cioe almassimo r radici r-me dell’unita. E facile controllare che queste radici formano un sottogruppo moltiplicativodi F ?, e quindi un gruppo ciclico di ordine ≤ r. Notiamo che non e detto che questo gruppo abbia proprioordine r, cioe che ci siano esattamente r radici r-me dell’unita in F . Se questo accade, e se la radice η general’intero gruppo, diciamo che η e radice primitiva r-ma dell’unita in F : questo significa che le radici r-me di1F in F sono 1F 6= η 6= η2 6= . . . 6= ηr−1.

Ci domandiamo allora sotto quali ipotesi su F (o sull’ordine di F ) ci sono esattamente r radici r-me di1F in F . Fissiamo allora F = Fq dove q = pm e una potenza di un primo p. Sia g un generatore del gruppociclico F?

q : g ha periodo q − 1 e gli elementi di F?q sono esattamente le potenze gj di g per 0 ≤ j < q. Ci

chiediamo quali di queste potenze sono radici r-me dell’unita: a questo proposito osserviamo che, per j < q,gj e radice r-ma dell’unita (e cioe gjr = 1F )

se e solo seq − 1 divide jr (in altre parole jr ≡ 0 (mod (q − 1)).

32

D’altra parte, posto d = (r, q − 1),

jr ≡ 0 (mod (q − 1)) ⇐⇒ jrd≡ 0 (mod

q − 1d

).

Siccome rd e q−1

d sono primi tra loro, si deduce che, per 0 ≤ j < q,

gj e radice r-ma dell’unita se e solo se j e multiplo di q−1d .

In conclusione, ci sono d = (r, q − 1) radici r-me dell’unita in F = Fq.

Possiamo dedurne:

Teorema. Siano p, r primi, m un intero positivo tale che pm ≡ 1 (mod r). Allora ci sono r distinteradici r-me dell’unita in F = Fpm .

Si noti che la condizione pm ≡ 1 (mod r) e certamente soddisfatta quando m = r − 1 (si applichi ilPiccolo Teorema di Fermat).

Dimostrazione. Sappiamo che il numero delle radici r-me dell’unita eguaglia il massimo comunedivisore d tra r e pm − 1 = q − 1. Quando pm ≡ 1 (mod r), cioe r divide pm − 1 = q − 1, d coincide con r. a

§ 6. Residui Quadratici

I campi finiti Zp (per p primo) hanno loro peculiarita algebriche che li distinguono da altri campi piufamiliari, come quello razionale, o quello reale, o quello complesso. Ci domandiamo in questo paragrafoquali elementi degli Zp sono quadrati (cioe ammettono una radice quadrata in Zp). Ricordiamo a questoproposito che in C ogni elemento ha una radice quadrata, in R i quadrati sono tutti e soli gli elementi nonnegativi, mentre in Q il problema dell’estrazione delle radici quadrate e assai piu complicato. Ma torniamoai nostri campi Zp per p primo; supponiamo anzi p primo dispari (per p = 2 ci sono soltanto due classi diresti modulo 2, e ciascuno di esse e il quadrato di se stessa). Per impostare la nostra discussione, ci serve laseguente nozione.

Definizione. Un intero a si dice un residuo quadratico modulo p se a e primo con p ed esiste un interob tale che a ≡ b2 (mod p).

La assunzione (a, p) = 1 ci dice che a e invertibile modulo p (e dunque determina un elemento nonnullo in Zp; l’ulteriore condizione su a precisa che questo elemento ammette, appunto, una radice quadratamodulo p. Notiamo anche che la proprieta di essere residuo quadratico modulo p si trasmette da a a tuttigli interi congrui ad a modulo p: dipende quindi dalla classe di congruenza ap e non direttamente da a.

Esempi. 1. Sia p = 3. Si nota 12 ≡ 1 (mod 3), 22 ≡ 1 (mod 3). Segue che 1 e residuo quadratico modulo3, e 2 non lo e. I 2 elementi non nulli di Z3 si dividono a meta: uno ha radice quadrata, uno no.

2. Consideriamo adesso p = 5. Si verifica 12 ≡ 42 ≡ 1 (mod 5) e 22 ≡ 32 ≡ 4 (mod 5). Cosı 1 e 4 sonoresidui quadratici modulo 5, 2 e 3 no. Nuovamente, i 4 elementi non nulli di Z5 si dividono a meta: dueammettono una radice quadrata, due no.

3. Sia p = 11. Si verifica nuovamente che, tra le dieci classi di resti modulo 11 diverse da 0, ce ne sono 5che corrispondono a residui quadratici (1, 4, 9, 16 ≡ 5 (mod 11) e 25 ≡ 3 (mod 11)) e 5 che non corrispondonoa residui quadratici (2, 6, 7, 8, 10). a

C’e un argomento generale che conferma quanto suggerito dai tre esempi precedenti. Consideriamoinfatti il campo F = Zp con p primo. Ricordiamo che il gruppo moltiplicativo F ? e ciclico, e scegliamo unintero positivo g tale che la classe gp genera F ? modulo p: cosı g ha periodo moltiplicativo p− 1 modulo p egli interi 1, g, . . ., gp−2 determinano tutte le classi non nulle di resti modulo p. Notiamo allora che, per ognij < p− 1,

gj e residuo quadratico modulo p se e solo se j e pari.

33

Infatti, supponiamo che gj sia residuo quadratico modulo p, allora esiste un naturale i < p − 1 per cuigj ≡ g2i (mod p). Ricordando che g ha periodo moltiplicativo p−1 modulo p, deduciamo j ≡ 2i (mod (p−1)).Ma 2i e pari, ed anche p− 1 e pari, dunque j deve essere pari. Il contrario e ovvio.

Segue che tra le p− 1 classi di resti modulo p di interi primi con p, p−12 corrispondono a residui quadratici

modulo p e p−12 no (come gia gli esempi preannunciavano).

Per ogni intero a, definiamo adesso il simbolo di Legendre( a

p

)

di a rispetto a p, nel modo che segue:

• se p divide a, poniamo( a

p

)

= 0;

• se a e p sono primi tra loro e a e residuo quadratico modulo p, poniamo( a

p

)

= 1;

• se a e p sono primi tra loro ma a non e residuo quadratico modulo p, poniamo finalmente( a

p

)

= −1.

Osserviamo che, se a e a′ sono due interi congrui modulo p, allora( a

p

)

=( a′

p

)

:( a

p

)

dipende da ap enon direttamente da a.

Per dedurre ulteriori proprieta del simbolo di Legendre e utile notare:

Teorema di Eulero. Sia p un primo dispari. Per ogni intero a,

(

ap

)

≡ ap−12 (mod p).

Dimostrazione. Se p divide a, la tesi e ovvia, infatti( a

p

)

= 0 e ap−12 ≡ 0 (mod p). Supponiamo allora

che a sia primo con p. Per il Piccolo Teorema di Fermat

(ap−12 )2 ≡ ap−1 ≡ 1 (mod p)

e dunque, visto che p e primo, ap−12 ≡ ±1 (mod p). Ma anche

( ap

)

vale ±1 in questo caso, cosı ci bastaprovare che, per a primo con p,

(

ap

)

= 1 ⇔ ap−12 ≡ 1 (mod p).

Fissiamo un intero g che genera Z?p modulo p. Sia j < p−1 tale che a ≡ gj (mod p). Allora si ha che

( ap

)

= 1

se e solo se j e pari, condizione che equivale a dire che p− 1 divide j · p−12 , o anche gj· p−1

2 ≡ 1 (mod p), cioea

p−12 ≡ 1 (mod p), come richiesto. a

Dal Teorema di Eulero deduciamo una possibile strategia per il calcolo del simbolo di Legendre. Notiamoinfatti quanto segue.

Osservazioni. 1. Anzitutto il simbolo di Legendre preserva il prodotto, nel senso che, per ogni sceltadi interi a e b,

(

ap

)

·(

bp

)

=(

a · bp

)

.

Infatti dal Teorema di Eulero deduciamo(

ap

)

·(

bp

)

≡ ap−12 · b

p−12 ≡ (a · b)

p−12 ≡

(

a · bp

)

(mod p).

Ma p > 2 e( a

p

)

,( b

p

)

e( a·b

p

)

assumono i soli valori 0, 1 e −1. Ne segue, appunto,( a

p

)

·( b

p

)

=( a·b

p

)

.

2. Conseguentemente, per il calcolo del simbolo di Legendre( N

p

)

di un qualche intero N ≥ 2, possiamoprocedere decomponendo N come prodotto di potenze di fattori primi distinti

N =∏

j≤t

qtjj

34

e poi applicare la precedente osservazione e dedurre

(

Np

)

=∏

j≤t

(

qj

p

)tj

;

la computazione del simbolo di Legendre si riduce in questo modo al caso in cui N e primo. Se poi N enegativo ≤ −2, possiamo nuovamente applicare l’osservazione 1 per concludere

( Np

)

= −( −N

p

)

.

3. Del resto e facile notare che( 1

p

)

= 1 perche 1 = 12, mentre dal Teorema di Eulero segue che( −1

p

)

= (−1)p−12 ; infatti

( −1p

)

≡ (−1)p−12 (mod p) e tanto

( −1p

)

quanto (−1)p−12 valgono ±1. a

Adesso dobbiamo cercare di calcolare( N

p

)

quando anche N e primo (eventualmente 2). Suddividiamoquesta analisi in due casi:

N e 2 (appunto),N e dispari.

I risultati che otterremo nei due casi ci suggeriranno un criterio di calcolo del simbolo di Legendre cheaddirittura prescinde dalla fattorizzazione di N e lavora in tempo polinomiale rispetto alla lunghezza di N .Ma di questo parleremo piu tardi. Affrontiamo adesso il primo caso.

Teorema. Vale(

2p

)

= (−1)p2−1

8 .

Cosı( 2

p

)

= 1 se e solo se 16 divide p2 − 1 = (p− 1) · (p + 1) e dunque se e solo se 8 divide p− 1 oppurep+1 (non puo succedere infatti che 4 divida tanto p+1 che p−1, altrimenti 4 divide anche la loro differenza,che e 2), cioe p ≡ ±1 (mod 8).

Dimostrazione. Siccome p e dispari, 2 divide tanto p − 1 che p + 1, mentre 4 divide uno almeno diquesti elementi. Segue che 8 | (p − 1) · (p + 1) e cioe p2 ≡ 1 (mod 8). Dall’ultimo teorema del precedente §5 deduciamo che il campo F = Fp2 contiene 8 radici ottave dell’unita. Fissiamo allora una radice primitivaottava η dell’unita in F : dunque η4 e una radice quadrata dell’unita ed e diversa da 1 (confondiamo qui persemplicita di notazione gli interi e le loro classi di resti modulo p, che sono elementi di F ). Ne segue η4 = −1

(da cui η5 = −η, η6 = −η2, η7 = −η3). Poniamo ora, per ogni intero n, f(n) = (−1)n2−1

8 se n e dispari,f(n) = 0 altrimenti. Vogliamo provare f(p) =

( 2p

)

. Poniamo in F

G =∑

0≤j<8

f(j)ηj

(continuiamo ad identificare gli interi f(j) e le loro classi modulo p in F ). Cosı

G = η − η3 − η5 + η7 = 2(η − η3),

G2 = 4(η2 − 2η4 + η6) = 4(η2 + 2− η2) = 8,

Gp = (G2)p−12 ·G = 8

p−12 G =

(

8p

)

G =(

2p

)

G

(la penultima uguaglianza usa il teorema di Eulero modulo p, l’ultima l’ovvia osservazione che( 2

p

)2= 1.

D’altra parte in F (dunque modulo p)Gp =

0≤j<8

f(j)pηjp

che, per p dispari, eguaglia∑

0≤j<8

f(j)ηjp =∑

0≤j<8

f(p)f(jp)ηjp = f(p)∑

0≤j<8

f(jp)ηjp.

35

Ma, al variare di j, anche jp descrive le 8 classi di resti modulo 8, anzi, per j ≡ j′p (mod 8), si ha ηj = ηj′p

perche η8 = 1. Ne segue∑

0≤j<8 f(jp)ηjp = G e quindi

Gp = f(p)G.

Confrontando le due espressioni ricavate per Gp otteniamo f(p)G =( 2

p

)

G, dunque f(p) =( 2

p

)

in F (cioemodulo p). Ma p > 2 e tanto f(p) quanto

( 2p

)

valgono 0 o ±1 in Z. Percio f(p) =( 2

p

)

anche in Z. a

Il caso N dispari e invece legato ad un risultato fondamentale, in genere chiamato Legge di ReciprocitaQuadratica. Questa proprieta, enunciata da Eulero nel 1783 e provata in modo incompleto da Legendre nel1785, fu finalmente dimostrata da Gauss a 19 anni nel 1796. Anzi, Gauss ne diede nel corso della sua vita 8dimostrazioni distinte. Essa afferma:

Teorema (Legge di Reciprocita Quadratica di Gauss). Siano p e q due primi dispari tra lorodistinti. Allora

(

qp

)

= (−1)p−12 · q−1

2

(

pq

)

.

In particolare( q

p

)

=( p

q

)

se e solo se p oppure q e congruo ad 1 modulo 4. Infatti tanto( q

p

)

quanto( p

q

)

valgono ±1, e dunque coincidono se e solo se il loro prodotto( q

p

)

·( p

q

)

vale 1, ovvero l’esponentep−12 · q−1

2 e pari, ovvero ancora uno dei due fattori p−12 , q−1

2 e pari: in altre parole, p ≡ 1 (mod 4) oppureq ≡ 1 (mod 4).

Dimostrazione. p ha periodo finito modulo q, fissiamo dunque un intero positivo m tale che pm ≡1 (mod q). Allora F = Fpm contiene esattamente q radici q-me dell’unita, e possiamo fissare una radiceprimitiva q-ma η di 1 in F (continuiamo a confondere i numeri interi e le loro classi di resti modulo p, chefanno parte di F ). Poniamo in F

G =∑

0≤j<p

(

jq

)

ηj .

Vogliamo provare che in F(?) G2 = (−1)

q−12 q.

Assumiamo provvisoriamente (?) vera, e mostriamo come dedurne la conclusione della dimostrazione. Da(?) otteniamo in F

Gp = (G2)p−12 ·G ≡ ((−1)

q−12 q)

p−12 G = (−1)

q−12 · p−1

2 qp−12 G

che, per il Teorema di Eulero sopra dimostrato, eguaglia

(−1)q−12 · p−1

2

(

qp

)

G.

D’altra parte

Gp = (∑

0≤j<p

(

jq

)

ηj)p =∑

0≤j<p

(

jq

p)

ηjp =∑

0≤j<p

(

jq

)

ηjp =(

pq

)

0≤j<p

(

jpq

)

ηjp

(il lettore puo controllare i dettagli per esercizio). Ora, per 0 ≤ j < q, anche jp descrive tutte le possibiliclassi di resti modulo q perche p e diverso da q e quindi primo con q. Inoltre, per k ≡ k′ (mod q) si ha( k

q

)

=( k′

q

)

e ηk = ηk′ . Allora

Gp =(

pq

)

G.

Confrontando le due espressioni ottenute per Gp, si ha in F(

pq

)

G = (−1)q−12 · p−1

2

(

qp

)

G

36

da cui, dividendo per G 6= 0 (G2 = ±q e q e primo con p), si ricava in F(

pq

)

= (−1)q−12 · p−1

2

(

qp

)

Siccome gli elementi coinvolti valgono ±1 in Z, procedendo come nel teorema precedente possiamo dedurne(

pq

)

= (−1)q−12 · p−1

2

(

qp

)

anche in Z, come volevamo dimostrare.Ci resta comunque da controllare

(?) G2 = (−1)q−12 q.

A tal fine, cominciamo con l’osservare che G =∑

0≤j<p

( jq

)

ηj si puo anche scrivere∑

0<j<p

( jq

)

ηj perche( 0

q

)

= 0. Anzi, visto che al variare di j da 1 a p − 1 anche −j descrive tutte le classi non nulle di restimodulo p, possiamo esprimere G anche nella forma G =

0<k<p

( −kq

)

η−k e dunque scrivere

G2 =∑

0<j, k<p

(

jq

)

ηj(

−kq

)

η−k =(

−1q

)

0<j, k<p

(

jkq

)

ηj−k

che eguaglia (modulo p), per il Teorema di Eulero e grazie al cambio di variabile da k a jk,

(−1)q−12

0<j, k<p

(

j2kq

)

ηj(1−k) = (−1)q−12

0<j, k<p

(

kq

)

ηj(1−k)

(perche(

j2kq

)

=( k

q

)

quando j si trova tra 1 e q − 1 e quindi e primo con q), e dunque anche

(−1)q−12

0<k<p

(

kq

)

0<j<q

ηj(1−k).

Adesso notiamo che, per j = 0, η0(1−k) = 1 e la corrispondente somma∑

0<k<p

( kq

)

eguaglia 0 perche tra1, . . ., q − 1 ci sono tanti residui quadratici modulo q quanti non residui quadratici modulo q. Cosı

G2 = (−1)q−12

0<k<p

(

kq

)

0≤j<q

ηj(1−k).

Per k = 1,∑

0≤j<q ηj(1−k) = q. Per k 6= 1,∑

0≤j<q ηj(1−k) e la somma s delle q potenze distinte di ηj(1−k)

che e radice primitiva q-ma dell’unita in F (esercizio: perche?); ma tale somma e zero, infatti s · ηj(1−k) = s,quindi s = 0 visto che ηj(1−k) 6= 1. Ma allora

G2 = (−1)q−12

(

1q

)

q = (−1)q−12 q

che e quanto volevamo dimostrare. a

Prima di dare qualche esempio esplicito di calcolo del simbolo di Legendre con l’uso del Teorema diReciprocita di Gauss (e dell’altro risultato che riguarda N = 2), allarghiamo il nostro orizzonte introducendouna generalizzazione del simbolo di Legendre stesso: il simbolo di Jacobi. Consideriamo allora non piu unprimo dispari p, ma un arbitrario intero dispari n ≥ 2. Decomponiamo n nel prodotto di potenze di primidistinti

n =∏

i≤r

pkii

37

e definiamo corrispondentemente, per ogni intero N , il simbolo di Jacobi di N rispetto a n nel modo chesegue:

(

Nn

)

=∏

i≤r

(

Npi

)ki

.

Dunque, per n primo, il simbolo di Jacobi coincide con quello di Legendre. Mostriamo un esempio per ncomposto: si ha

(

215

)

=(

23

)

·(

25

)

= (−1) · (−1) = 1;

ricordiamo infatti che 2 non e residuo quadratico ne modulo 3 ne modulo 5. Del resto, 2 non e un quadratoneppure modulo 15 ed e primo con 15, pur tuttavia ( 2

15 ) = 1. Dunque il simbolo di Jacobi, pur estendendoquello di Legendre, non ne preserva alcune proprieta, in particolare non e vero che ( N

n ) vale 1 se e solo seN (e primo con n ed) e residuo quadratico modulo n. Si ha poi, per ogni intero N , ( N

n ) = 0 se e solo se( N

p

)

= 0 per qualche divisore primo p di n e dunque se e solo se N e divisibile per qualche divisore primop di n, quindi, in definitiva, se e solo se N e n non sono primi tra loro.

Altre proprieta del simbolo di Legendre invece si preservano: ad esempio, e facile verificare che, per a eb interi,

(an

)

·(

bn

)

=(

a · bn

)

per ogni intero dispari n ≥ 2. Basandosi su questa proprieta e sui risultati analoghi validi per il simbolo diLegendre non e proibitivo dedurre anche la seguente coppia di risultati.

Teorema. Per ogni intero dispari n ≥ 2, si ha

(

2n

)

= (−1)n2−1

8 .

Teorema. Per ogni scelta di interi dispari n, m ≥ 2 diversi tra loro,

(mn

)

= (−1)n−1

2 ·m−12

( nm

)

.

Possiamo utilizzare questi due teoremi per un calcolo rapido del simbolo di Jacobi (e dunque, in parti-colare, del simbolo di Legendre): illustriamo il relativo algoritmo con il seguente esempio.

Esempio. Ammettiamo di dover calcolare ( 18727411 ). Divisioni successive per 2 (che non richiedono

l’intera fattorizzazione di 1872) ci dicono 1872 = 24 · 117, dunque

(

18727411

)

=(

27411

)4

·(

1177411

)

=(

1177411

)

che, per il secondo teorema sopra menzionato, eguaglia ( 7411117 ) (infatti 117 e congruo a 1 modulo 4); possiamo

sostituire adesso a 7411 il suo resto nella divisione per 117, che e 40, e ottenere ( 40117 ) da cui, con i medesimi

procedimenti, otteniamo

(

2117

)3

·(

5117

)

= −(

5117

)

= −(

1175

)

= −(

25

)

= 1.

Osservazioni. 1. Il metodo descritto nell’esempio non richiede la conoscenza della fattorizzazione diN per calcolare ( N

n ).

2. Anzi, si puo verificare che il metodo lavora in un numero di passi O(log2 N), e dunque in tempopolinomiale (= rapido) rispetto alla lunghezza dell’input N .

38

Quanto al teorema di Eulero, gia dimostrato per il simbolo di Legendre, esso non vale piu per il simbolodi Jacobi. Anzi, sara bene osservare, in vista di possibili sviluppi, quanto segue.

Teorema. Sia n un numero intero composto dispari ≥ 2. Allora per almeno meta di φ(n) interi aprimi con n ed a 2 a 2 incongrui modulo n non vale la congruenza

(?)(a

n

)

≡ an−1

2 (modn).

Dimostrazione. Ci basta provare che esiste almeno un intero a primo con n che non soddisfa (?).Supponiamo infatti che questo sia vero, e prendiamo un intero b primo con n per cui si ha invece

(?)(

bn

)

≡ bn−1

2 (modn).

Consideriamo allora il prodotto ab, che rimane primo con n e torna a rifiutare (?): altrimenti

an−1

2 · bn−1

2 ≡ (ab)n−1

2 ≡(

abn

)

≡(a

n

)

(

bn

)

≡(a

n

)

· bn−1

2 (modn)

e, dividendo per bn−1

2 che e primo con n,

an−1

2 ≡(a

n

)

(modn),

il che e assurdo.In questo modo, se b1, . . ., bs sono s interi primi con n, a 2 a 3 incongrui modulo n, tutti capaci di soddisfare(?), possiamo ottenere altrettanti interi ab1, . . ., abs ancora primi con n ed incongrui modulo n per i qualipero (?) non vale piu. In conclusione, su φ(n) interi primi con n ed a 2 a 2 incongrui modulo n, almeno lameta non soddisfa (?).Possiamo allora concentrarci a trovare un intero a primo con n per cui (?) non vale. Ricordiamo chen e composto dispari ≥ 3 e dunque e il prodotto di almeno due primi (non necessariamente distinti).Distinguiamo allora due casi nella nostra ricerca.

Caso 1. Esiste un primo p tale che p2 | n.Caso 2. n e il prodotto di primi distinti.

Discutiamo anzitutto il Caso 1. Sia pk la massima potenza di p che divide n: dunque k ≥ 2. Siccome( a

n ) = ±1, ci basta trovare un qualche intero a primo con n per cui an−1

2 6≡ ±1 (modn). Se a non esiste,ogni intero a primo con n soddisfa an−1 ≡ 1 (modn), in altre parole tutti gli elementi invertibili di Zn hannoun periodo (moltiplicativo) che divide n − 1. D’altra parte il numero di questi elementi, e dunque l’ordinedel gruppo moltiplicativo da essi formato, e

φ(n) = φ(pk) · φ(nk

) = pk−1 · (p− 1) · φ(nk

)

ed e quindi multiplo di p. Allora, per un risultato di Teoria dei Gruppi (noto come Teorema di Cauchy),il gruppo ammette almeno un elemento di periodo p. Da quanto abbiamo detto in precedenza deduciamop | n− 1. Ma p | n e dunque otteniamo la contraddizione p | 1. In definitiva, a puo essere trovato nel Caso 1.Passiamo allora a considerare il Caso 2. Fissiamo n =

i≤r pi dove p0, . . ., pr sono primi distinti. Persemplicita poniamo poi p = p0. Proviamo anzitutto che esiste un intero a per cui

(? ?)(

ap

)

= −1, a ≡ 1 (modnp

).

Consideriamo infatti gli interi non negativi c < n che soddisfano c ≡ 1 (mod np ), cioe hanno la forma k · n

p +1con 0 ≤ k < p. Notiamo che, per 0 ≤ k, k′ < p

k · np

+ 1 ≡ k′ · np

+ 1 (mod p) ⇔ k · np≡ k′ · n

p(mod p) ⇔ k ≡ k′ (mod p)

39

perche np e primo con p. Cosı i p elementi c = k · n

p + 1 (per 0 ≤ k < p) sono a 2 a 2 incongrui modulop e rappresentano tutte le classi di resti modulo p. Se escludiamo il rappresentante di 0p e i p−1

2 residuiquadratici modulo p, ci resta 0 ≤ k < p tale che a = k · n

p + 1 soddisfa( a

p

)

= −1, e conseguentemente(? ?), come richiesto. Si deduce facilmente da (? ?) che a e primo sia con p che con n

p , dunque anche con n.Ancora,

(an

)

=∏

i≤r

(

api

)

= −1

perche( a

p0

)

= 1 mentre, per 0 < i < r, a ≡ 1 ≡ 12 (mod pi) e quindi( a

pi

)

= 1. A questo punto, se fossea

n−12 ≡ ( a

n ) (mod n), si avrebbe an−1

2 ≡ −1 modulo n e quindi anche modulo np , in contraddizione col fatto

che, np e dispari (come n) ed a ≡ 1 (mod n

p ). a

40

Capitolo 4 - ALGORITMI DI PRIMALITA

§ 1. Breve Storia del Problema della Primalita

Il Problema della Primalita, gia incontrato nel corso del Capitolo 2, chiede di stabilire un algoritmo che,per ogni intero positivo N ≥ 2, sappia decidere se N e primo oppure no. A scanso di equivoci, sottolineiamoche l’algoritmo cercato deve essere deterministico: avere un numero finito di passi, e concludersi con larisposta corretta (dichiarare cioe N primo se e solo se N e davvero primo).

Non c’e perdita di generalita a supporre N dispari: infatti, l’unico primo pari e 2 e, del resto, e facilericonoscere i numeri pari (basta controllare la parita della loro cifra delle unita). Del resto, un semplicealgoritmo di primalita era gia noto agli antichi Greci: quello che consiste nel considerare ogni numeronaturale (anzi primo) a da 2 a

√N e verificare se a divide oppure no N ; se la divisione per un qualche a e

precisa (cioe da resto nullo), allora N e composto (ed a e un suo divisore); altrimenti, se nessuna divisionesi dimostra esatta, N e primo.

Tuttavia molti secoli dopo i Greci Gauss continuava a celebrare il Problema di Primalita come “elegantee famoso, meritevole di ogni possibile attenzione”. Quale e il motivo di questo interesse, se un facile algoritmoera gia disponibile da oltre due millenni?

Il fatto si e che il procedimento descritto non e utile nella pratica: puo richiedere troppe divisioni (unnumero comparabile a

√N) e dunque tempi proibitivi di attuazione prima di dare la risposta. In effetti,

a voler essere pignoli, quel che cerchiamo non e tanto un semplice algoritmo di primalita, quanto piuttostoun procedimento che risolva il nostro problema lavorando in tempo rapido (cioe polinomiale rispetto allalunghezza dell’input N). A proposito, ricordiamo che la lunghezza di N e convenuta essere quella della suarappresentazione in base 2, e quindi, piu o meno, il logaritmo di N in base 2 e che un procedimento si ritieneefficiente se lavora, appunto, in tempo polinomiale rispetto alla lunghezza dell’input.

Ebbene, la ricerca di un algoritmo efficiente di primalita ha richiesto millenni, non e stata facile epare essersi conclusa solo nel 2002, quando Agrawal, Kayal e Saxena sono riusciti a mettere a punto unprocedimento che richiede un numero di passi comparabile con la potenza 12-ma della lunghezza dell’inputN .

Negli anni precedenti, progressi sostanziali ma non decisivi verso la ricerca del nostro algoritmo eranostati compiuti soprattutto sulla base del Piccolo Teorema di Fermat (trattato nel Capitolo 3), quello cheafferma che, se N e primo, allora ogni a primo con N soddisfa la congruenza aN−1 ≡ 1 (modN). Sappiamogia che il contrario di questo teorema non vale: se aN−1 ≡ 1 (modN) vale per qualche a primo con N ,o addirittura per ogni a primo con N , non possiamo dedurne che N e primo. Ci sono infatti esempi dinumeri composti N per cui la precedente congruenza e soddisfatta da ogni possibile elemento a: si chiamanopseudoprimi di Carmichael ed avremo modo di discuterli nel prossimo § 3. Tuttavia il Piccolo Teorema diFermat si presta a procedimenti (abbastanza convincenti) di primalita. In § 2 vedremo allora alcuni criterinecessari e sufficienti di primalita basati sul Teorema di Fermat: essi risalgono all’ottocento e comunque nonmigliorano quanto ad efficienza il procedimento degli antichi Greci; del resto i progressi nella moderna Teoriadei Gruppi li hanno resi quasi banali.

Progressi piu sostanziali si ottengono se rivediamo parzialmente la nostra visione del concetto di algo-ritmo ed ammettiamo procedimenti probabilistici di decisione: algoritmi con qualche possibilita di errore(che comunque puo essere preventivamente valutata e circoscritta ad ambiti molto ristretti). Si perde ladeterminatezza di computazioni e risposte, ma si guadagna circa la velocita dei tempi di lavoro; si conoscecomunque la probabilita che l’output ottenuto sia sbagliato, e si sa che questa probabilita e molto bassa(ricordiamo a questo proposito quel che diceva E. Borel: “un evento la cui probabilita e ≤ 10−50 non accadramai, e comunque non sara mai osservato”).

In linea teorica, ci sono due tipi di algoritmi probabilistici. I primi si chiamano di tipo Montecarloed hanno la seguente caratteristica: su ogni input N danno la loro risposta, magari scorretta, fornendocomunque la probabilita di errore. Un altro tipo di algoritmo probabilistico e quello chiamato Las Vegas: in

41

esso, dato un input N , non sempre si da risposta; se sı, la si da corretta; si fornisce comunque la probabilitadi silenzio.

Nel caso della primalita, l’algoritmo probabilistico piu famoso (ed adoperato) e quello di Miller e Rabin.Si basa (anche se in modo non direttissimo) sul Piccolo Teorema di Fermat. In effetti nel 1976 Miller si riferı alTeorema di Fermat per ottenere un algoritmo deterministico di primalita e ne provo l’efficienza polinomialepurche si assumesse come vera l’Ipotesi di Riemann (piu precisamente, una sua versione generalizzata).Successivamente Rabin adatto l’idea per ottenere un algoritmo probabilistico di tipo Montecarlo, che risolveil problema di primalita in tempo polinomiale e con una relativamente trascurabile possibilita di errore.L’algoritmo di Miller e Rabin sara il tema del § 5. Un altro famoso procedimento Montecarlo di primalita equello di Solovay-Strassen, basato sulla teoria dei residui quadratici ed in particolare sul Teorema di Eulero(a proposito del simbolo di Legendre): ne riferiremo nel § 4. Anche algoritmi probabilistici di tipo Las Vegassono stati proposti per la primalita, ma sembrano meno incisivi di quelli appena citati, e non ne parleremoin queste note.

Nel 1983 Adleman, Pomerance e Rumely ottennero un nuovo sostanziale progresso per il problema di pri-malita, scoprendo un algoritmo deterministico che lavora in (log N)0(log log log N) passi: un tempo non ancorapolinomiale, comunque meno che esponenziale, certamente preferibile a quello di tutti i precedenti procedi-menti deterministici conosciuti, e quasi accettabile secondo i moderni parametri di efficienza. Miglioramentinon sostanziali furono proposti negli anni successivi da Goldwasser e Kilian (1986) e altri.

Un discorso particolare merita il tema degli algoritmi quantistici. Essi si basano su progressi in quellaparte della Fisica che si chiama Meccanica Quantistica e possono essere sostanzialmente piu rapidi degliusuali calcolatori. Da un punto di vista teorico, un fenomeno denominato parallelismo quantistico da infattila chiave per svolgere in parallelo un numero esponenziale di computazioni. Un altro fenomeno, la inter-ferenza quantistica, permette, sempre in linea teorica, di identificare con opportune procedure, tra le variecomputazioni parallele, quella corretta. Per questa via si e giunti a proporre in teoria un modello di calco-latore quantistico che ancora corrisponde alla Tesi di Turing e dunque non modifica la relativa proposta didefinizione del concetto di algoritmo, ma sembra accelerare (in linea teorica) l’efficienza delle computazioni.Ma (c’e sempre un ma), dal punto di vista pratico, un soddisfacente sviluppo dei calcolatori quantistici sem-bra lontano, a causa di un fenomeno chiamato decoerenza quantistica e causato dall’influsso dell’ambienteesterno sul computer. C’e chi esprime pessimismo sul superamento di questo ostacolo e quindi sull’usopratico del modello computazionale quantistico.

Circa i numeri primi c’e da dire che nel 1994 Peter Shor ha proposto un algoritmo quantistico polinomialeper la decomposizione in fattori primi dei naturali ≥ 2, e dunque tanto per la fattorizzazione che per laprimalita. Ma la sua attuazione pratica richiede, ovviamente, il superamento degli ostacoli sopra citati aproposito della costruzione effettiva di macchine quantistiche.

Ritornando al contesto deterministico, si e comunque giunti nel 2002 alla elaborazione di un algoritmopolinomiale (dunque efficiente) di primalita: quello proposto da Agrawal, Kayal e Saxena di cui abbiamo giaparlato all’inizio di questo paragrafo e riferiremo in maggior dettaglio nel successivo § 6.

§ 2. Primalita e Piccolo Teorema di Fermat

Per tutto il resto del capitolo, N denota un intero dispari > 2 e il nostro obiettivo e verificarne laprimalita. Ricordiamo ancora una volta il Piccolo Teorema di Fermat:

se N e primo, allora, per ogni intero a primo con N , aN−1 ≡ 1 (mod N).

Non e comunque vero il contrario (come avremo modo di confermare tra poco): cosı il Piccolo Teorema diFermat fornisce una condizione solo necessaria, ma non sufficiente, per la primalita. Esistono pero vari criterisufficienti che rafforzano il Teorema di Fermat. Ne citiamo alcuni; come vedremo, nessuno di essi garantiscetuttavia una procedura efficiente di verifica di primalita.

Teorema (Lucas, 1876). Supponiamo che esista un intero a tale che aN−1 ≡ 1 (modN) ma, per ognim = 1, . . . , N − 2, am 6≡ 1 (modN). Allora N e primo.

42

Dimostrazione. L’ipotesi ci dice che il gruppo moltiplicativo degli interi invertibili modulo N haalmeno N − 1 elementi distinti (le potenze di N), e quindi esattamente N − 1 elementi (non puo infattiaverne di piu). Dunque ZN e un campo, e N e primo. a

In realta le potenze di a formano un sottogruppo del gruppo di tutti gli interi invertibili modulo N ela Teoria Elementare dei Gruppi Finiti (in particolare il Teorema di Lagrange) assicura che l’ordine di unsottogruppo divide sempre l’ordine del gruppo relativo. Cosı, per concludere che il sottogruppo delle potenzedi a ha tanti elementi quanti l’intero gruppo degli interi invertibili modulo N , dunque che coincide con luie, in conclusione, che N e primo, ci basta sapere quanto segue.

Teorema (Lucas, 1891). Supponiamo che esista un intero a tale che aN−1 ≡ 1 (modN) ma, per ognim < N − 1 divisore di N − 1, am 6≡ 1 (mod N). Allora N e primo.

Ma nessuno dei due teoremi appena proposti garantisce un sostanziale miglioramento di efficienzarispetto all’algoritmo “artigianale” della divisione di N per ogni primo ≥ 2 e ≤

√N . Infatti il primo

teorema richiede, per certi N , la verifica di N − 2 congruenze modulo N , mentre il secondo teorema, chepure diminuisce il numero di queste verifiche, necessita comunque della fattorizzazione di N − 1.

Una variante piu recente dei risultati di Lucas e:

Teorema (Brillhart-Selfridge, 1975). Supponiamo che, per ogni divisore primo q di N , esista unintero aq (dipendente da q) tale che(i) aN−1

q ≡ 1 (modN),

(ii) aN−1

qq 6≡ 1 (modN).

Allora N e primo.

Dimostrazione. Il numero degli interi invertibili modulo N e φ(N), e (i) ci garantisce che φ(N) | N−1.Ci basta allora provare che, viceversa, N−1 divide φ(N). Altrimenti esistono un primo q ed un intero positivor tali che qr divide N − 1 ma non φ(N). Consideriamo il corrispondente aq. Per (i), aq e invertibile moduloN ed il suo periodo moltiplicativo s modulo N divide N − 1; invece, per (ii), s non divide N−1

q . Segue cheqr divide s. Sappiamo poi che s divide φ(N). Cosı qr | φ(N), e questo e assurdo. a

Neppure questo teorema garantisce un miglioramento effettivo dei tempi di verifica della primalita diN , infatti richiede nuovamente una preventiva fattorizzazione di N − 1.

Dunque questi rafforzamenti del Piccolo Teorema di Fermat non soddisfano la richiesta di algoritmi rapididi primalita. Inoltre abbiamo gia ripetuto piu volte che il Piccolo Teorema di Fermat non rappresenta di perse un criterio sufficiente di primalita: se pure troviamo un intero a primo con N tale che aN−1 ≡ 1 (modN),non possiamo dedurne che N e primo. Anzi, un numero intero composto dispari > 2 tale che, per un certodeterminato a, aN−1 ≡ 1 (modN) si dice uno pseudoprimo in base a.

In altre parole, uno pseudoprimo in base a e un numero composto che pretende di essere primo perchetrova un testimone a disposto ad affermare, in omaggio al Piccolo Teorema di Fermat, che, appunto, aN−1 ≡1 (mod N).

Gia abbiamo avuto modo di incontrare numeri pseudoprimi in qualche base assegnata: 341 lo e in base2. Un altro esempio e costituito da 91, che e pseudoprimo in base 3 ma non in base 2. Infatti 91 = 7 · 13 ecomposto (dispari) ed e primo sia con 3 che con 2, ed inoltre

390 ≡ 1 (mod 91), 290 ≡ 64 (mod 91),

come e facile controllare usando l’algoritmo rapido del calcolo di potenze.Semmai si puo provare che, se N e un composto dispari > 2 e c’e almeno una base a rispetto a cui

N non e pseudoprimo, allora N non risulta pseudoprimo rispetto ad almeno meta dei φ(N) possibili interiprimi con N (presi a meno di congruenze modulo N). Ma il guaio e che certi N possono essere pseudoprimirispetto a tutte le possibili basi a prime con N . Di questo parliamo nel prossimo paragrafo.

§ 3. Gli Pseudoprimi di Carmichael

43

Potremmo in effetti sperare che il nostro intero dispari N > 2 sia primo se e solo se, per ogni interoa primo con N , valga aN−1 ≡ 1 (modN). Ma, purtroppo, anche questa congettura ha i suoi controesempi,ovvero numeri composti dispari N > 2 pseudoprimi in ogni possibile base (cioe tali che, appunto, per ogniintero a primo con N , aN−1 ≡ 1 (modN)). Un tale numero N si dice uno pseudoprimo di Carmichael.

Il seguente teorema aiuta ad individuare esempi espliciti di pseudoprimi di Carmichael.

Teorema. Sia N > 2 un intero composto dispari.(1) Se esiste un primo p tale che p2 divide N , allora N non e uno pseudoprimo di Carmichael.(1) Se invece N e libero da quadrati (cioe e prodotto di primi distinti), allora N e uno pseudoprimo di

Carmichael se e solo se, per ogni divisore primo p di N , p− 1 | N − 1.

Esempio. 561 = 3 · 11 · 17 e uno pseudoprimo di Carmichael perche 560 e divisibile per 2, 10 e 16.In realta 561 e il piu piccolo esempio di pseudoprimo di Carmichael. Va poi aggiunto che Alford, Granvillee Pomerance hanno provato nel 1992 che esistono infiniti pseudoprimi di Carmichael: per ogni intero x, ilnumero degli pseudoprimi di Carmichael ≤ x e asintoticamente 0(x

13 ). a

Dimostrazione del Teorema. (1) Sia p un primo tale che p2 divide N . Sia poi g un naturale taleche 1 ≤ g < p2 e g genera modulo p2 il gruppo moltiplicativo (ciclico!) degli elementi invertibili di Zp2 : g haperiodo φ(p2) = p · (p− 1) modulo p2. Sia ora pk (con k ≥ 2) la massima potenza di p che divide N ; allorap non divide N

pk e (p2, Npk ) = 1. Grazie al Teorema del Resto Cinese, possiamo trovare un intero a tale che

a ≡ g (mod p2), a ≡ 1 (modNpk ).

Allora a e N sono primi tra loro perche p non divide a e (a, Npk ) = 1. Inoltre anche a ha periodo φ(p2) =

p · (p − 1) modulo p2. Vogliamo provare che N non e pseudoprimo rispetto alla base a (e dunque non epseudoprimo di Carmichael). Infatti, se aN−1 ≡ 1 (modN), allora deve essere aN−1 ≡ 1 (mod p2) e quindiφ(p2) divide N − 1, in particolare p | N − 1. Ma p divide anche N , e dunque ne deduciamo p | 1 (unacontraddizione).

(2) Sia dapprima p − 1 | N − 1 per ogni divisore primo p di N . Prendiamo un intero a primo con N .Allora, per ogni divisore primo p di N , a e primo p e quindi soddisfa ap−1 ≡ 1 (mod p) ed anzi, visto che p−1divide N − 1, aN−1 ≡ 1 (mod p). Adesso ricordiamoci che N e il prodotto dei suoi fattori primi distinti p, ededuciamone aN−1 ≡ 1 (modN). Siccome questo vale per ogni a, abbiamo provato che N e uno pseudoprimodi Carmichael. Viceversa, supponiamo che ci sia qualche divisore primo p di N per cui p − 1 non divideN − 1 e mostriamo che N non e uno pseudoprimo di Carmichael, e cioe che, per qualche intero a primo conN , aN−1 6≡ 1 (modN). Consideriamo infatti un intero g primo con p che genera il gruppo moltiplicativo diZp modulo p: g ha periodo p−1 modulo p. Come in (1) adoperiamo il Teorema del Resto Cinese per trovareun intero a tale che

a ≡ g (mod p), a ≡ 1 (modNp

).

Allora a e primo con N e aN−1 ≡ gN−1 (mod p). Ma gN−1 6≡ 1 (mod p) perche p−1 non divide N −1. SegueaN−1 6≡ 1 (mod p) e, in conclusione, aN−1 6≡ 1 (modN). a

L’esempio di pseudoprimo di Carmichael sopra proposto 561 = 3 · 11 · 17 e non solo il prodotto di primidistinti, ma coinvolge addirittura tre fattori. Infatti in generale si ha:

Teorema. Ogni pseudoprimo di Carmichael N e il prodotto di almeno tre primi (distinti).

Dimostrazione. Gia sappiamo che N e prodotto di almeno due primi distinti, dobbiamo escludereche N = p · q sia prodotto di esattamente due primi p 6= q. Ammettiamo che, invece, questo sia il caso, efissiamo, come e lecito, p < q. Siccome N e pseudoprimo di Carmichael, q − 1 | N − 1. Ma

N − 1 = pq − 1 = p(q − 1) + p− 1 ≡ p− 1 (mod (q − 1)),

dunque q − 1 divide anche p − 1, e questo e assurdo perche p − 1 < q − 1 ed essendo p dispari (come N)p− 1 > 0. a

44

§ 4. Gli Pseudoprimi di Eulero e l’Algoritmo di Solovay-Strassen

Abbandoniamo momentaneamente il Piccolo Teorema di Fermat e, nella nostra ricerca di algoritmi diprimalita, riferiamoci invece al Teorema di Eulero sui residui quadratici: se N e primo, allora ogni intero aprimo con N soddisfa

(?) aN−1

2 ≡( a

N

)

(modN).

Ricordiamo anche che, se N e composto (dispari), le cose cambiano ed almeno meta dei φ(N) rappresentantia modulo N delle classi di interi primi con N non soddisfa (?). La situazione che ne deriva e, a differenzadi quanto avviene per il Piccolo Teorema di Fermat, la base di un convincente procedimento di primalita(l’algoritmo di Solovay-Strassen): non esistono infatti in questo ambito numeri composti dispari N > 2 chegiocano lo stesso ruolo degli pseudoprimi di Carmichael, nel senso che soddisfano (?) per ogni a primo conN . Esaminiamo allora in maggior dettaglio tutto il contesto.

Definizione. Sia a un intero primo con N . N si dice uno pseudoprimo di Eulero in base a se

(?) aN−1

2 ≡( a

N

)

(modN).

Puo intanto essere utile notare:

Osservazione. Se N e pseudoprimo di Eulero in base a, N e anche pseudoprimo in base a. Infatti daa

N−12 ≡ ( a

N ) (modN) si ottiene aN−1 ≡ 1 (modN) quadrando e ricordando che ( aN ) = ±1 per a primo con

N . a

Non e tuttavia vero il contrario: ad esempio N = 91 = 7 · 13 e pseudoprimo in base 3, ma non epseudoprimo di Eulero in base 3 perche

391−1

2 ≡ 345 ≡ 27 6≡ ±1 (mod 91).

Invece 91 e pseudoprimo di Eulero in base 10 perche

1091−1

2 ≡ 1045 ≡ 103 ≡ −1 (mod 91),(

1091

)

= −1.

Test di primalita di Solovay-Strassen. Sia N > 2 un intero dispari. Prendiamo un intero a con1 ≤ a < N . Calcoliamo (a, N), poi, se necessario, a

N−12 e ( a

N ).• Se (a, N) 6= 1, dichiariamo N COMPOSTO.

• Se (a, N) = 1 ma aN−1

2 6≡ ( aN ) (modN), dichiariamo nuovamente N COMPOSTO.

• Se finalmente (a, N) = 1 e aN−1

2 ≡ ( aN ) (mod N), dichiariamo N PROBABILMENTE PRIMO. a

E evidente che, quando dichiariamo N COMPOSTO, N e davvero composto. Ma, quando diciamoN PROBABILMENTE PRIMO, potrebbe accadere che N sia in realta composto (e cioe pseudoprimo diEulero in base a). La probabilita che questo accada e comunque, per quanto primo osservato, ≤ 1

2 (rispettoalla scelta di a). Naturalmente, dopo che si sono effettuari k controlli relativi ad interi distinti a1, . . .,ak tutti compresi tra 1 e N − 1 e primi con N e che, in ogni caso, si e ottenuta la comune risposta NPROBABILMENTE PRIMO derivandola dalle congruenze

aN−1

2j ≡

(aj

N

)

(mod N), 1 ≤ j ≤ k,

la probabilita di errore discende a ≤ 12k .

Di piu, per k > φ(N)2 , si ha la certezza che N e primo perche, come sopra ricordato, non esistono in

questo ambito le insidie degli pseudoprimi di Carmichael: per N composto, almeno meta di φ(N) interi primi

45

con N a 2 a 2 incongrui modulo N soddisfa aN−1

2 6≡ ( aN ) (modN) e dunque testimonia correttamente N

COMPOSTO. Cosı l’algoritmo di Solovay-Strassen puo anche adattarsi ad un ambito deterministico e nonprobabilistico.

Tuttavia, per un singolo a, i tempi di calcolo di (a, N), aN−1

2 e ( aN ) richiedono, allo stato attuale delle

conoscenze, 0(log3 N) passi, e dunque l’incertezza della risposta nella versione probabilistica e compensatadalla rapidita della computazione. Invece la versione deterministica puo richiedere, almeno per N primo,φ(N)

2 = N−12 controlli, dunque un tempo esponenziale rispetto alla lunghezza dell’input N , ed in conclusione

non e efficiente.

L’algoritmo di Solovay-Strassen e, in definitiva, un ottimo esempio di algoritmo probabilistico di pri-malita di tipo Montecarlo: per ogni input N , si da la risposta, magari non corretta, ma si fornisce la proba-bilita di errore. Anzi, sappiamo che una delle due possibili risposte (quella che dichiara N COMPOSTO) ecomunque certamente corretta.

§ 5. Gli Pseudoprimi Forti e l’Algoritmo di Miller-Rabin

Un altro esempio di procedimento probabilistico di tipo Montecarlo per la primalita e l’algoritmo diMiller-Rabin. Esso si basa su una piu sofisticata analisi del Piccolo Teorema di Fermat, combinata conl’osservazione che, per N primo (dispari), la congruenza x2 ≡ 1 (modN) ha le due uniche soluzioni x ≡±1 (modN) (proprieta non sempre condivisa dagli N composti). Cosı sia N un primo dispari. N − 1 e parie puo essere espresso come N − 1 = 2s · t per opportuni naturali s, t con s positivo e t dispari. Sia ora a unintero primo con N , allora

aN−1 ≡ 1 (modN)

e cioe(a2s−1·t)2 ≡ a2s·t ≡ 1 (modN).

Ma allora, ripercorrendo a ritroso modulo N le potenze di a a2s−1·t, a2s−2·t, . . ., a2t, at,

• incontriamo −1

oppure

• concludiamo at ≡ 1 (modN).

Sulla base delle precedenti considerazioni, possiamo organizzare un nuovo algoritmo probabilistico diprimalita.

Test di primalita di Miller-Rabin. Sia N un intero dispari > 2. Poniamo N − 1 = 2s · t per s,t naturali, s 6= 0 e t dispari. Scegliamo un intero a con 1 < a < N e calcoliamo prima (a, N) e poi, senecessario, le potenze a2r·t modulo N (per r < s naturale).

• Se (a, N) 6= 1, dichiariamo N COMPOSTO.

• Se (a, N) = 1 ma at 6≡ 1 (modN) e, per ogni naturale r < s, a2r·t 6≡ −1 (modn), dichiariamo nuovamenteN COMPOSTO.

• Se invece (a, N) = 1 e at ≡ 1 (modN) oppure, per qualche naturale r < s, a2r·t ≡ −1 (mod n),dichiariamo N PROBABILMENTE PRIMO. a

Come nel caso del test di Solovay-Strassen, quando l’algoritmo dichiara N COMPOSTO, allora N ecertamente composto. Ma non possiamo escludere a priori che l’algoritmo (per una particolare scelta di a)dichiari PROBABILMENTE PRIMO un numero N che invece e composto. Diciamo allora che N e unopseudoprimo forte in base a: questo significa che a e primo con N e at ≡ 1 (modN) oppure, per qualchenaturale r < s, a2r·t ≡ −1 (modN); si noti che, conseguentemente, si ha aN−1 ≡ a2s·t ≡ 1 (modN).

Ci chiediamo allora quale e la probabilita che il test di Miller-Rabin applicato a N dichiari per una sceltasfortunata di a che N e PROBABILMENTE PRIMO, mentre N e in realta composto, e dunque pseudoprimoforte in base a.

46

Come vedremo tra poco, questa probabilita e ≤ 14 . Cosı, dopo k tentativi con valori distinti di a ed una

comune risposta N PROBABILMENTE PRIMO, la probabilita che N sia invece composto diventa ≤ 14k .

Questa stima e da paragonare che quella ≤ 12k del test di Solovay-Strassen, che e quindi peggiore. In effetti,

i due metodi hanno un comune ambito di applicazione perche si puo provare (e tra poco effettivamenteproveremo) che, per ogni intero a, uno pseudoprimo forte in base a e anche pseudoprimo di Eulero in basea (dunque ogni testimone inattendibile per il test di Miller-Rabin e inaffidabile anche per quello di Solovay-Strassen). Inoltre i tempi di lavoro dei due algoritmi sono equiparabili, e comunque polinomiali rispettoalla lunghezza dell’input N . L’affermazione e gia stata illustrata nel caso di Solovay-Strassen, ma richiedequalche chiarimento per il metodo di Miller-Rabin; si puo infatti osservare che l’applicazione di questosecondo test puo richiedere un numero s di controlli successivi per una data base a al fine di valutare seper qualche naturale r < s si ha a2r·t ≡ −1 (mod n). Tuttavia, ricordando N = 2s · t + 1 con t dispari, sideduce facilmente che s ≤ blog2Nc+ 1 e O(log2N). Si prova allora che una singola applicazione del test diMiller-Rabin sull’input N richiede complessivamente O(log5

2 N) passi di computazione. Va anzi detto che c’eun unico numero composto dispari N < 2, 5 · 1010 (per la precisione, N = 3215031751) che e pseudoprimoforte in ognuna delle basi 2, 3, 5 e 7. In altre parole, 4 applicazioni del test di Miller-Rabin (per a = 2, 3, 5, 7appunto) bastano a decidere senza errore la primalita di qualunque input N < 2, 5 ·1010 escluso 3215031751.

Naturalmente l’algoritmo di Miller-Rabin si puo adattare ad un contesto deterministico e non proba-bilistico. Infatti, nei casi dubbi, dopo k = N−1

4 applicazioni del test con interi a primi con N e tali che1 ≤ a ≤ N , at ≡ 1 (modN) oppure, per qualche naturale r < s, a2r·t ≡ −1 (modN), possiamo certamenteconcludere che N e primo. Ma gli N−1

4 controlli necessari rendono il tempo di applicazione dell’algoritmoesponenziale rispetto alla lunghezza dell’input N .

Supponiamo pero di riuscire a determinare una funzione B di N con le seguenti proprieta:

(i) B e limitata polinomialmente rispetto a log2 N ;

(ii) per ogni N composto, esiste un intero positivo a < B(N) primo con N tale che N non e pseudoprimoforte in base a.

Sotto queste condizioni, per controllare in modo deterministico e rapido la primalita di un input arbitrarioN , ci basta applicare la procedura di Miller-Rabin a B(N) basi distinte a prime con N e < N : se il testdichiara N COMPOSTO almeno una volta, allora N e composto, mentre se il test dichiara ogni volta NPROBABILMENTE PRIMO possiamo concludere con sicurezza che N e primo; inoltre il numero dei passirichiesti da queste verifiche e polinomialmente limitato rispetto alla lunghezza di N . In effetti, quanto Millerdimostro nel 1976 e il risultato che segue.

Teorema (Miller). Se vale l’Ipotesi di Riemann (in una forma estesa), allora si puo determinare unafunzione B come sopra (piu precisamente, si ha B(N) ≤ 2log2 N + 1 per ogni N).

Conseguentemente, il test di Miller-Rabin si puo adattare ad un algoritmo deterministico efficiente diprimalita purche una versione allargata dell’Ipotesi di Riemann sia valida.

Per completare la nostra trattazione dell’algoritmo di Miller-Rabin, dobbiamo adesso dimostrare i 2fatti sopra anticipati e cioe che, per N > 2 composto dispari, si ha quanto segue.

Teorema 1. Se N e pseudoprimo forte in una qualche base a prima con N , allora N e anche unopseudoprimo di Eulero in base a.

Teorema 2. N e pseudoprimo forte in base a per al piu 14 degli interi a primi con N compresi tra 1 e

N .

Ecco alcuni cenni sulle relative prove.

Dimostrazione del Teorema 1. Poniamo ancora N − 1 = 2s · t con t e s naturali, s positivo e tdispari. Sia poi a primo con N tale che at ≡ 1 (modN) oppure a2r·t ≡ −1 (modN) per qualche r < s.Dobbiamo provare che a

N−12 ≡ ( a

N ) (modN). Il caso in cui at ≡ 1 (modN) e facile da trattare. Infattil’assunzione implica a

N−12 ≡ 1 (mod N), e dobbiamo quindi controllare ( a

N ) = 1. Ma, nuovamente usandola nostra ipotesi, deduciamo

1 =(

1N

)

=(

at

N

)

=( a

N

)t

47

e, per t dispari, questo implica ( aN )t = 1, come richiesto.

Adesso dobbiamo trattare l’altra possibilita per a, quella in cui a2r·t ≡ −1 (modN) per qualche r < s. Cilimitiamo comunque per semplicita al caso particolare r = s − 1, dunque ad a

N−12 ≡ −1 (modN): il caso

generale si affronta allo stesso modo, con qualche maggiore complicazione tecnica.C’e da verificare ( a

N ) = −1. Consideriamo un divisore primo p di N ; anche p e dispari, e cosı possiamo porrep− 1 = 2s′ · t′ con s′ e t′ naturali, s′ positivo e t′ dispari. Come passo preliminare verso la computazione di( a

N ), calcoliamo( a

p

)

. Si prova:

Lemma. s′ ≥ s e( a

p

)

= −1 se s′ = s,( a

p

)

= 1 se s′ > s.

Dimostrazione del Lemma. Dalla condizione −1 ≡ aN−1

2 ≡ a2s−1·t (modN) deduciamo

(a2s−1·t′)t ≡ (a2s−1·t)t′ ≡ −1 (modN)

perche t′ e dispari. Cosı, se s′ < s, si ha che ap−1 = a2s′ ·t′ non puo essere congruo ad 1 ne modulo N ne, diconseguenza, modulo p, e questo e assurdo per il Piccolo Teorema di Fermat. Allora deve essere s′ ≥ s. Sepoi s′ = s,

(

ap

)

≡ ap−12 ≡ a2s′−1·t′ ≡ a2s−1·t′ (mod p);

dunque( a

p

)

= 1 implica a2s−1·t′ ≡ 1 (mod p) e (a2s−1·t′)t ≡ 1 (mod p), il che contraddice le precedentiosservazioni. Quindi deve essere

( ap

)

= −1. Se invece s′ > s, allora

(

ap

)t

≡ (ap−12 )t ≡ (a2s′−1·t′)t ≡ ((a2s−1·t′)t)2

s′−s≡ (−1)2

s′−s≡ 1 (mod p),

e, siccome tanto t quanto p sono dispari, se ne deduce( a

p

)

= 1. a

Procediamo adesso nella dimostrazione del Teorema 1. Decomponiamo N nel prodotto di potenze pk diprimi distinti p. Allora

( aN

)

=∏

p

(

ap

)k

= (−1)f

dove f e la somma degli esponenti k relativi ai fattori primi p di N per cui s′ = s. Siccome t e dispari,2s · t ≡ 2s (mod 2s+1) e dunque N = 1 + 2s · t ≡ 1 + 2s (mod 2s+1). Quanto ai fattori primi p = 1 + 2s′ · t′ diN , si ha

p ≡ 1 (mod 2s+1) se s′ > s,p ≡ 1 + 2s (mod 2s+1) se s′ = s.

Cosı1 + 2s ≡ N ≡ (1 + 2s)f ≡ 1 + f · 2s (mod 2s+1),

da cui si deduce f dispari e quindi, in conclusione, ( aN ) = (−1)f = −1. a

Dimostrazione del Teorema 2. Come al solito poniamo N − 1 = 2s · t con t e s naturali, s positivoe t dispari. Distinguiamo nuovamente due casi:

1. c’e qualche primo p tale che p2 divide N ,2. N e il prodotto di primi distinti.

Affrontiamo dapprima 1. Mostriamo che in questo caso N non e neppure pseudoprimo in almeno N−14

basi a. Chiediamoci infatti quante sono le possibili scelte di un intero a compreso tra 1 e N , primo con Ne tale che aN−1 ≡ 1 (modN). L’ultima condizione implica in particolare aN−1 ≡ 1 (mod p2). Ricordiamociche il gruppo moltiplicativo degli elementi invertibili di Zp2 ha ordine φ(p) = p · (p − 1) ed e ciclico. Ilnostro problema consiste nel contare quanti elementi di questo gruppo hanno periodo che divide N − 1. Ladiscussione fatta alla fine del § 5 nel Capitolo 3 ci dice che il loro numero eguaglia proprio d = (p·(p−1), N−1).

48

Notiamo che p non divide N −1 e quindi neppure d. Percio d ≤ p−1, e quindi ci sono al piu p−1 possibilitadi scegliere la nostra base a a meno di congruenze modulo p2. Se ne deduce facilmente che la probabilita ditrovare un valore a compreso tra 1 e N − 1 rispetto a cui N e pseudoprimo e al piu

p− 1p2 − 1

=1

p + 1≤ 1

4

(visto che p ≥ 3). Questo conclude la dimostrazione nel caso 1.

Consideriamo adesso 2. Per semplicita ci limitiamo al caso particolare in cui N e il prodotto di dueprimi distinti: quando il numero dei fattori primi di N e maggiore, si procede in modo analogo, con qualchemaggiore complicazione tecnica. Fissiamo allora N = p · q con p e q primi distinti (dispari perche N edispari). Poniamo anzi

p− 1 = 2s′ · t′, q − 1 = 2s′′ · t′′

con s′, s′′, t′ e t′′ naturali, s′ e s′′ positivi, t′ e t′′ dispari. Possiamo anche supporre senza perdita di generalitas′ ≤ s′′. Dobbiamo stimare il numero degli interi a primi con N e compresi tra 1 e N per cui N e pseudoprimoforte in base a e dunque soddisfa

i) at ≡ 1 (modN) (che e come dire at ≡ 1 (mod p) e at ≡ 1 (mod q))

oppure

ii) per qualche naturale r < s, a2r·t ≡ −1 (modN) (equivalentemente, a2r·t e congruo a −1 sia modulo pche modulo q).

Come gia abbiamo avuto modo di vedere trattando il caso 1, il numero delle possibilita di scegliere a taleche at ≡ 1 (mod p) e (t, p− 1) = (t, 2s′ · t′), che eguaglia (t, t′) perche t e dispari. Allo stesso modo, ci sono(t, t′′) possibilita di scegliere a tale che at ≡ 1 (mod q). Siccome (t, t′) ≤ t′ e (t, t′′) ≤ t′′, possiamo dedurreche ci sono al piu t′t′′ possibilita di soddisfare i).

Adesso consideriamo ii). Argomentazioni analoghe alle precedenti (ma di maggiore complessita) assicuranoche, per ogni r < s′ ≤ s′′, il numero delle possibili scelte di a tale che

a2r·t ≡ −1 (mod p), a2r·t ≡ −1 (mod q)

e, rispettivamente,2r · (t, t′), 2r · (t, t′′);

come prima, si deduce che ci sono al massimo 4rt′t′′ modi di trovare un a che soddisfi ii).

Riassumendo, il numero totale delle possibili classi modulo N di interi a primi con N capaci di soddisfare i)o ii) per qualche r < s′ e

t′t′′ +∑

0≤r<s′4rt′t′′

(il primo addendo si riferisce a i), il secondo a ii) al variare di r). Invece il numero complessivo delle classimodulo N di interi primi con N e

φ(N) = φ(p) · φ(q) = (p− 1) · (q − 1) = 2s′+s′′t′t′′.

Segue che la probabilita di trovare a e al massimo

t′t′′ +∑

0≤r<s′ 4rt′t′′

2s′+s′′t′t′′=

1 +∑

0≤r<s 4r

2s′+s′′ = 2−s′−s′′ · (1 +4s′ − 14− 1

) = 2−s′−s′′ · (23

+4s′

3).

Per s′′ > s′, questa probabilita risulta

≤ 2−2s′−1 · (23

+4s′

3) ≤ 2−3 · 2

3+

16

=14,

49

come desiderato. Il caso s′′ = s′ richiede qualche maggiore discussione. Anzitutto notiamo che t′ e t′′ nonpossono dividere contemporaneamente t. Supponiamo infatti il contrario: t e multiplo tanto di t′ quanto dit′′. In particolare t′ divide anche N − 1. Siccome

N − 1 ≡ pq − 1 ≡ (p− 1)q + (q − 1) ≡ q − 1 (mod t′),

se ne deduce che t′ divide q − 1; ma t′ e dispari, e quindi divide addirittura t′′. Invertendo i ruoli di t′ e t′′,si deduce allo stesso modo t′′ | t′ e, in definitiva, t′ = t′′, dunque p = q -assurdo-. Allora almeno uno tra t′

e t′′ non divide t; in altre parole (t, t′) < t′ oppure (t, t′′) < t′′. Supponiamo ad esempio che (t, t′) sia undivisore proprio di t′; siccome t′ e dispari, il relativo quoziente e almeno 3, quindi (t, t′) ≤ 1

3 t′ e

(t, t′) · (t, t′′) ≤ 13t′t′′

(conclusione cui evidentemente si arriva anche nell’altro caso). Cosı, al posto della limitazione (t, t′)·(t, t′′) ≤t′t′′ adoperata precedentemente si puo adoperare

(t, t′) · (t, t′′) ≤ 13t′t′′.

Una paziente revisione delle precedenti computazioni conferma allora che, anche in questo caso, la probabilitadi trovare a si mantiene ≤ 1

4 . a

§ 6. Cenni sull’Algoritmo di Agrawal-Kayal-Saxena

Questo paragrafo e dedicato alla presentazione dell’algoritmo di Agrawal, Kayal e Saxena, che decidein tempo polinomiale se un dato intero (dispari) N > 2 e primo oppure no. L’algoritmo e stato ottenutonel 2002, ed costituisce storicamente il primo procedimento rapido di primalita se escludiamo l’approccioquantistico di Shor. Anzitutto richiamiamo (o introduciamo) 4 premesse fondamentali per la comprensionedell’algoritmo.

1. Varianti sul Piccolo Teorema di Fermat. Anche nell’argomento di Agrawal-Kayal-Saxena facapolino, anche se non direttamente, il Piccolo Teorema di Fermat, quello che dice che, se p e primo, alloraogni intero a primo con p soddisfa la congruenza ap−1 ≡ 1 (mod p). A noi serve un risultato collegato, chefornisce addirittura un criterio necessario e sufficiente di primalita.

Lemma 1. Siano a, p due interi primi tra loro, p ≥ 2. Allora p e primo se e solo se i polinomi (x− a)p

e xp − a sono identicamente uguali modulo p.

Dimostrazione. La direzione da sinistra a destra e implicitamente provata dal Piccolo Teorema diFermat, che mostra come, per p primo, ap ≡ a (mod p) e, per 0 < i < p, il coefficiente di xi in (x− a)p e

(−1)i(

pi

)

ap−i

ed e dunque divisibile per p perche lo e(

pi

)

. Sia adesso p composto, q denoti un fattore primo di p, qk la

massima potenza di q che divide p. Ci basta provare che il coefficiente (−1)q(

pq

)

ap−q di xq in (x−a)p non

e divisibile per p. Certamente (ap−q, p) = 1, cosı ci e sufficiente dimostrare che p non divide(

pq

)

, o anche

che qk non divide(

pq

)

=p · (p− 1) · . . . · (p− q + 1)

q · (q − 1) . . . · 1.

50

Altrimenti qk+1 divide p · (p−1) · . . . · (p− q +1). Ora ricordamo che qk e la massima potenza di q che dividep. Ne segue che, per qualche i tale che 0 < i < q, q divide p − i e conseguentemente anche i: ma questo eassurdo proprio perche 0 < i < q e q e primo. a

Possiamo allora controllare la primalita di p scegliendo un intero a primo con p e verificando se, appunto,i coefficienti di ugual grado dei polinomi (x−a)p e xp−a risultano uguali modulo p. Purtroppo il procedimentoha lo stesso difetto di altri esempi visti in passato: richiede il confronto di p coppie di interi modulo p, equindi non ha il requisito della velocita. Per ovviare a questo difetto, si potrebbe procedere a verificareche (x − a)p e xp − a sono identicamente uguali modulo (p, xr − 1) dove r e un opportuno intero positivo.Fissato r, i tempi di computazione si accorciano grazie ad algoritmi conosciuti che richiedono O(r log2 p)passi. D’altra parte,

• se p e primo, e ovvio che (x − a)p e xp − a risultano identicamente uguali modulo (p, xr − 1) (lo sonogia modulo p),

• ma la congruenza tra (x− a)p e xp − a modulo (p, xr − 1) potrebbe essere soddisfatta (per certi valoridi a ed r) anche quando p e composto.

L’algoritmo di Agrawal-Kayal-Saxena cerca allora di trovare in tempi rapidi valori di a ed r che possanocorrettamente testimoniare la primalita di p tramite la precedente congruenza polinomiale.

2. Varianti sul Teorema dei Numeri Primi. Ricordiamo anche la funzione π che ad ogni interox ≥ 1 associa il numero dei primi ≤ x: la stima asintotica di π quando x tende a +∞ e l’argomento delTeorema dei Numeri Primi. A noi basta ricordare che, per x ≥ 1,

x6 log x

≤ π(x) ≤ 8xlog x

o anche la seguente variante (ottenuta recentemente da Fouvry). Per ogni intero positivo N ≥ 2, sia P (N)il massimo divisore primo di N . Allora esistono un reale c > 0 ed un intero positivo x0 tali che, per ogniintero x ≥ x0, il numero dei primi p ≤ x tali che P (p− 1) > x

23 risulta ≥ c x

log x .

3. Procedimenti rapidi per riconoscere le potenze. Sono disponibili algoritmi rapidi per ri-conoscere se un dato intero dispari N > 2 si esprime come potenza N = bn con b, n naturali ≥ 2 (nel qualcaso N e, ovviamente, composto). Vediamone qualche dettaglio. Notiamo anzitutto che possiamo supporre:

• n primo (infatti ogni potenza n-ma e anche potenza d-ma per ogni divisore positivo d di n),

• n ≤ log2 N .

Dunque il numero dei possibili valori di n e limitato dalla lunghezza stessa di N . Resta da trovare l’eventualeb. La strategia che si usa ne restringe la ricerca ad un ambito “polinomiale” intorno a N

1n , per 2 ≤ b ≤

2blog Nb c + 1. Sono note da tempo, allora, procedure per determinare b (se esiste) in un numero di passi che

e O(log3 N) nei casi peggiori, e O(log2 N) nella media delle applicazioni. Piu recenti algoritmi abbassano itempi di computazione a O((log N)1+O(1)).

4. Campi finiti e polinomi. Finalmente parliamo di polinomi e di campi finiti. Intanto proviamo:

Lemma 2. Siano r un numero primo, h(x) un polinomio che divide xr − 1 in Z[x]. Se m e m′ sono dueinteri positivi congrui modulo r, allora h(x) divide anche xm − xm′

.

Dimostrazione. Sia q intero positivo tale che m′ = m + qr. Osserviamo che h(x) divide xqr − 1 equindi anche

xm′− xm = xm+qr − xm = xm · (xqr − 1). a

Adesso ci serve la seguente notazione, che comunque sara ripresa ed usata anche piu tardi in questoparagrafo: per n ed r interi positivi,

or(n) denota il periodo di n modulo r (cioe tra le classi di resti modulo r).

Vogliamo allora provare:

51

Lemma 3. Siano p ed r due numeri primi. Allora il polinomio

xr − 1x− 1

= xr−1 + xr−2 + . . . + x + 1

si decompone in fattori irriducibili di grado or(p) in Zp[x].

Dimostrazione. Poniamo per semplicita d = or(p), q(x) = xr−1x−1 . Sia h(x) un fattore irriducibile di

q(x) in Zp[x], e sia k il suo grado. L’ampliamento F = Zp(v) di Zp tramite una radice v di h(x) ha ordine pk;il suo gruppo moltiplicativo F ∗ e ciclico ed ha pk−1 elementi, indichiamo con g(v) un suo generatore (g(x) eun polinomio di grado ≤ k − 1 a coefficienti in Zp). Si verifica facilmente g(v)p = g(vp) e conseguentemente

g(v)pd= g(vpd

) = g(v)

(dal lemma 2, visto che pd ≡ 1 (mod r) e dunque in F , modulo h(x), v = vpd). Osserviamo che g(v) 6= 0 e

deduciamo g(v)pd−1 = 1. Ma g(v), come generatore del gruppo ciclico F ∗, ha periodo moltiplicativo pk − 1,dunque pk − 1 | pd − 1 e k | d. D’altra parte h(x) divide xr − 1, quindi vr = 1 in F . Siccome v 6= 1 e r eprimo, v ha proprio periodo r, quindi r | pk − 1, pk ≡ 1 (mod r) e d | k. In conclusione d = k. a

Conclusi i preliminari, presentiamo adesso l’algoritmo di primalita.

Algoritmo di Agrawal-Kayal-Saxena. Sia N un intero dispari > 2.1. Verifichiamo anzitutto se N e una potenza con esponente ≥ 2; se sı, dichiariamo N COMPOSTO.2. Altrimenti, per 2 ≤ r < N , calcoliamo (N, r). Se il valore ottenuto e 6= 1, dichiariamo nuovamente

N COMPOSTO. Altrimenti, per r primo, cerchiamo q = P (r − 1) massimo fattore primo di r − 1 everifichiamo se

q ≥ 4√

r log N, q | or(N).

Se no, passiamo a r + 1; se sı, procediamo come segue.3. Per 1 ≤ a ≤ 2

√r log N confrontiamo i polinomi (x − a)N e xN − a modulo N . Se non risultano

identicamente uguali, dichiariamo N COMPOSTO; altrimenti dichiariamo N PRIMO.

La prima perplessita che si ha leggendo l’algoritmo riguarda il punto 2: come e possibile essere sicuri ditrovare (magari in tempi brevi) un primo r tale che q = P (r − 1) soddisfa

q ≥ 4√

r log N, q | or(N) ?

Il seguente lemma rassicura a proposito di questo dubbio.

Lemma 4. Ci sono due costanti reali positive c1 > c2 tali che, per ogni N abbastanza grande, esisteun primo r tale che q = P (r − 1) verifica

q ≥ 4√

r log N, q | or(N)

ed inoltre c1(log N)6 ≤ r ≤ c2(log N)6.

Dimostrazione. Facciamo riferimento alla costante c introdotta nella Premessa 2. Ammettendo diaver gia definito c1 e c2, si considerano i primi r che soddisfano la condizione

P (r − 1) > (c1(log N)6)23 .

Questi primi sono chiamati speciali. Notiamo che, per r ≤ c2(log N)6, ne segue P (r − 1) > r23 . Per N

abbastanza grande, il numero dei primi speciali compresi tra c1(log N)6 e c2(log N)6 maggiora la differenzatra

? il numero dei primi speciali ≤ c2(log N)6

e

52

? il numero dei primi ≤ c1(log N)6

e quindi e

≥ c · c2(log N)6

6 log log N + log c2− 8c1(log N)6

6 log log N + log c1

≥ c · c2(log N)6

7 log log N− 8c1(log N)6

6 log log N

(per log N ≥ c2, log c1 > 0), ed ancora

≥ c3(log N)6

log log N

se poniamo c3 = c c27 − 4c1

3 . Scegliamo adesso c1 < c2 in modo da garantire c3 > 1. Poniamo anche, persemplicita,

c(N) = c2(log N)6

e definiamo

t(N) = (N − 1) · (n2 − 1) · . . . · (N b(c(N))13 c − 1) =

b(c(N))13 c

i=1

(N i − 1).

Il numero dei fattori primi di t(N) non puo superare

b(c(N))13 c

i=1

log N i = log Nb(c(N))

13 c

i=1

i ≤

≤ log N · c(N)13 · c(N)

13 + 12

≤ log N · c(N)23 .

D’altra parte

log N · c(N)23 = log N · c

232 · (log N)4 = c

232 (log N)5 < c3

(log N)6

log log N

per N abbastanza grande. Allora c’e almeno un primo speciale r che resta compreso tra c1(log N)6 ec2(log N)6 e non divide t(N). Per un tale r, q = P (r − 1) soddisfa

q ≥ r23 = r

12 r

16 ≥ r

12 (c1 (log N)6)

16

che, per c1 ≥ 46, maggiora √r(46 (log N)6)

16 = 4

√r log N ;

inoltreq | or(N)

(infatti il periodo di N modulo r deve dividere r − 1 e superare (c2 (log N)6)16 ≥ r

13 e dunque richiede il

fattore q > r23 ). a

A questo punto, e facile concludere che, quando N e primo, l’algoritmo dichiara effettivamente NPRIMO. Infatti N non puo essere potenza ad esponente > 1, non e primo con nessun r ≤ c2(log N)6 (perN abbastanza grande) e, trovato l’opportuno r, soddisfa l’dentita

(x− a)N ≡ xN − a (modN)

per ogni a con 1 ≤ a ≤ 2√

r log N .

Supponiamo adesso che N sia composto. Dobbiamo controllare che l’algoritmo dichiari correttamenteN COMPOSTO. Supponiamo che invece risulti N PRIMO per un’opportuna scelta di r. Notiamo che or(N)divide il minimo comune multiplo dei periodi or(p) al variare di p tra i fattori primi di N . Dalla scelta di r

53

segue che q = P (r−1) divide or(p) per qualche primo p | N . Fissiamo un tale p. Poniamo poi l = 2√

r log Ne consideriamo i binomi

x− a, 1 ≤ a ≤ l.

Dal lemma 3 ricaviamo che il polinomio xr−1x−1 di Zp[x] ammette un fattore irriducibile h(x) di grado d = or(p).

Per a come sopra, vale l’identita

(x− a)N ≡ xN − a (mod (xr − 1, N)),

la quale implica ovviamente(x− a)N ≡ xN − a (mod (h(x), p))

e dunque (v − a)N = vN − a in F = Zp(v), se v denota una radice di h(x).Consideriamo adesso il sottogruppo G di F ∗ generato dagli elementi v − a per 1 ≤ a ≤ l. G e ciclico

perche F ∗ lo e. Proviamo:

Lemma 5. G coincide con l’insieme dei prodotti∏

1≤a≤l

(v − a)αa

(dove α ≥ 0 per ogni a) e contiene piu di (dl )

l elementi.

Dimostrazione. Chiaramente G contiene tutti i prodotti sopra considerati. Tra di essi, consideriamoquelli che soddisfano

1≤a≤l

αa ≤ d− 1.

Denotiamo con S il loro insieme. Notiamo che gli elementi di S sono a due a due distinti. Infatti r > q >4√

r log N > l. Osserviamo poi che, se alcuni elementi a risultano congrui modulo p, allora p < l < r, dunquep si incontra nell’algoritmo e dichiara N COMPOSTO perche divide N e non e primo con N . Segue che glielementi a devono essere a 2 a 2 incongrui modulo p. Allora i polinomi

1≤a≤l(x− a)αa a coefficienti interiche generano gli elementi di S sono distinti modulo p, e quindi anche modulo (p, h(x)) visto che h(x) hagrado d ed essi hanno grado < d. In altre parole, gli elementi di S sono differenti tra loro. Ma un argomentocombinatorio assicura che S ha

(

l + d− 1l

)

elementi, e(

l + d− 1l

)

=(l + d− 1) · (l + d− 2) · . . . · d

l!≥ (

dl)l. a

Adesso osserviamo che d ≥ q ≥ 4√

r log N ≥ 2l, visto che l = 2√

r log N . Quindi

|G| > 2l = N2√

r.

Denotiamo con g(v) un generatore di G (per g(x) opportuno polinomio a coefficienti in Zp, anzi prodotto dibinomi x−a) e con o(g) > N2

√r il suo periodo. Introduciamo l’insieme I(g(x)) degli interi m che soddisfano

g(x)m ≡ g(xm) (mod (p, xr − 1)).

Computazioni non difficili assicurano che I(g(x)) contiene 1 e p, che e chiuso rispetto alla moltiplicazionedegli interi e che, se due elementi m e m′ di I(g(x)) sono congrui modulo r, allora lo sono anche moduloo(g). Vediamo i dettagli dell’ultimo punto. Poniamo m = m′ + tr per un opportuno intero t. Sappiamog(x)m ≡ g(xm) (mod (p, xr − 1)), dunque g(v)m = g(vm) in F , cioe g(v)m′+tr = g(vm′+tr). Dal Lemma 2 edal fatto che anche m′ appartiene a I(g(x)) deduciamo

g(v)m′· g(v)tr = g(v)m′

= g(vm′).

54

Siccome g(v) 6= 0, se ne deduce g(v)tr = 1, dunque o(g) divide tr e m ≡ m′ (mod o(g)).

Concludiamo adesso la nostra dimostrazione. Siccome l’algoritmo dichiara N PRIMO, deve essere

(x− a)N ≡ xN − a (mod (xr − 1, p))

per ogni a = 1, . . . , l. Siccome g(x) e prodotto di potenze degli l binomi x−a (al variare di a), se ne deduce

g(x)N ≡ g(xN ) (mod (xr − 1, p)),

in altre parole N ∈ I(g(x)). Ricordiamo che anche 1 e p appartengono a I(g(x)). Consideriamo allora glielementi della forma

N ipj

per i e j naturali ≤ b√

rc. Siccome I(g(x)) e chiuso rispetto alla moltiplicazione, ciascuno di loro e in I(g(x)).Il numero di questi elementi e, ovviamente, 1 + b

√rc2 > r. Allora possiamo trovare i 6= i′, j 6= j′ tali che

N ipj ≡ N i′pj′ (mod r),

dunque ancheN ipj ≡ N i′pj′ (mod o(g))

e (assumendo per semplicita i > i′ e j′ > j)

N i−i′ ≡ pj′−j (mod o(g)).

Ma o(g) ≥ N2√

r e N i−i′ , pj′−j < N√

r, quindi

N i−i′ = pj′−j .

Siccome p e fattore primo di N , dobbiamo dedurne che N = pm e potenza di p con esponente m ≥ 2. Maallora l’algoritmo ha gia dichiarato N COMPOSTO al passo 1, e cadiamo in contraddizione. a

A questo punto resta da controllare il tempo di applicazione del procedimento: la verifica passo per passone da una stima O(log12 N t(N)) dove t(N) e un polinomio in log log12 N . Dunque l’algoritmo corrisponde airequisiti di rapidita fissati dall’Informatica Teorica. Anzi, l’esponente 12 si potrebbe migliorare ed abbassarea 6 se la congettura sulla stima asintotica del numero dei primi che non sono di Germain (riferita nel Capitolo1) fosse vera. Infatti il punto chiave del procedimento di Agrawal-Kayal-Saxena e l’esistenza di molti primir per cui P (r− 1) > r

23 . I primi di Germain corrispondono invece alla situazione P (r) = r−1

2 (nel senso che,se r e primo e soddisfa, appunto, P (r) = r−1

2 , allora r−12 e un primo di Germain). La congettura appena

ricordata ci dice che il numero dei primi che non sono di Germain tende asintoticamente a D·xlog2 x dove D

e la costante dei primi gemelli e conseguentemente fornisce una stima anche del numero dei primi r percui P (r) 6> r−1

2 , permettendo in tal modo di migliorare gli argomenti sopra utilizzati per P (r − 1) > r23 e

riducendo, appunto, l’esponente 12 fino a 6.

55

Capitolo 5 - ALGORITMI DI FATTORIZZAZIONE

§ 1. Il Problema della Fattorizzazione

Nel precedente capitolo abbiamo discusso gli algoritmi di primalita. Adesso affrontiamo quelli di fattor-izzazione. Vedremo che, allo stato attuale delle conoscenze, i metodi conosciuti per la fattorizzazione sonosensibilmente piu lenti di quelli di primalita. Questa differenza e il fondamento di alcuni sistemi crittograficidi alta sicurezza, ad esempio il sistema RSA che tratteremo nel prossimo capitolo. E anche da dire che, ovei calcolatori quantistici fossero applicabili nella pratica, l’algoritmo quantistico di Shor annullerebbe questadifferenza tra primalita e fattorizzazione, insieme alle sue conseguenze.

Consideriamo comunque un intero dispari N > 2, come nel capitolo precedente. Gia conosciamo al-goritmi rapidi per verificare se N e composto oppure no. In questi procedimenti, pero, la risposta NCOMPOSTO assicura che c’e un divisore proprio d di N , ma non fornisce esplicitamente un tale d e dunquenon da informazioni dirette sulla fattorizzazione di N . Cerchiamo allora algoritmi per il seguente:

Problema. Per N composto dispari > 2, determinare un divisore d di N tale che 1 < d < N .

Un simile procedimento, applicato, dopo N , a d ed al quoziente Nd e cosı via, fornisce, in conclusione,

la decomposizione in fattori primi di N . Il capitolo sara allora dedicato a presentare due algoritmi per ilprecedente problema (il Metodo ρ di Pollard e la Fattorizzazione alla Fermat) ed a discutere, finalmente,l’efficienza di queste e altre procedure di fattorizzazione.

§ 2. Il Metodo ρ di Pollard

Dobbiamo determinare un divisore di N diverso da 1 e da N . Possiamo cercarlo analizzando sequenzepredefinite di interi, ad esempio quelle generate da

un intero x0,

una funzione f da Z a Z

ponendox1 = f(x0), . . . , xj+1 = f(xj), . . . (j ∈ N).

Piu precisamente, possiamo calcolare per ogni scelta di j < k in N il massimo comune divisore (xj −xk, N),sperando di ottenerne un valore 6= 1, N . In tal caso, (xj − xk, N) e il divisore proprio di N che stiamocercando. Di piu, la ricerca di un singolo massimo comune divisore si fa in tempi rapidi rispetto allalunghezza di N .

Ad esempio supponiamo (tanto per fissare le idee) il numero N = 91, e di sapere gia che 91 e composto.Scegliamo

x0 = 1, f(x) = x2 + 1 ∀x ∈ Z.

Allorax1 = 2, x2 = 5, x3 = 26, . . .

e si verifica (x3 − x2, N) = (26− 5, 91) = (21, 91) = 7. Deduciamo che 7 e divisore di 91, anzi 91 = 7 · 13 ela decomposizione di 91 in fattori primi (ovviamente l’esempio serve solo ad illustrare il metodo, non vale lapena utilizzare questo procedimento per 91, del quale e facile trovare la fattorizzazione per altra via).

Qualche osservazione. 1. Anzitutto possiamo sostituire ciascun xj con il suo resto nella divisione perN , e supporlo tra 0, 1, . . ., N − 1.

2. Dobbiamo comunque valutare con attenzione se la strategia appena esposta ha speranza di rapidosuccesso. In effetti dobbiamo prendere atto che, fissato un naturale k e il corrispondente xk, il procedimento

56

prevede di calcolare (xj − xk, n) per ogni naturale j < k; possiamo dunque aspettarci tempi lunghi dicomputazione.

3. Tuttavia possiamo osservare che, se j0 < k0 permettono di determinare un massimo comune divisored = (xj0 − xk0 , n) 6= 1, N , allora, per ogni scelta di due naturali j e k tali che k − j = k0 − j0 (cioek−k0 = j−j0), si ha d | (xj−xk, N). Infatti, per m = k−k0 = j−j0, xj ≡ fm(xj0) ≡ fm(xk0) ≡ xk (modd).Naturalmente puo capitare che (xj − xk, N) > d; ma si verifica che la probabilita di questo rischio eassai limitata, almeno quando N e grande o, meglio, quando e prodotto di primi molto grandi (i casi chemaggiormente ci possono interessare nella pratica). a

Sulla base di queste osservazioni, possiamo allora organizzare il seguente raffinamento della precedentestrategia.

Metodo ρ (Pollard, 1975). Per ogni k come sopra, cerchiamo il naturale h tale che 2h ≤ k < 2h+1

(in altre parole, k ha lunghezza h + 1 in base 2) e consideriamo j = 2h − 1. Calcoliamo d = (xj − xk, N).Se d 6= 1, N , siamo a posto. Altrimenti passiamo a k + 1. a

Ricordiamo per chiarezza che:

• k = 1 ha lunghezza 1 in base 2, dunque corrisponde ad h = 0, j = 0,

• k = 2, 3 (dunque 2 ≤ k < 4) hanno lunghezza 2 in base 2, dunque corrispondono ad h = 1, j = 1,

• k = 4, 5, 6, 7 (dunque 4 ≤ k < 8) hanno lunghezza 2 in base 2, dunque corrispondono ad h = 2, j = 3

e cosı via.

Il vantaggio del Metodo ρ e evidente: per ogni intero positivo k, si deve calcolare (xj − xk, N) per unsolo naturale j < k.

Lo svantaggio principale consiste invece nel fatto che puo capitare per questa via di saltare proprioqualche coppia j0 < k0 per cui (xj0 − xk0 , N) = d 6= 1, N . Supponiamo comunque che (j0, k0) sia una talecoppia, e che in particolare 2h ≤ k0 < 2h+1. Consideriamo

j = 2h+1 − 1, k = j + (k0 − j0).

Allora2h+1 ≤ k < 2h+2

e j corrisponde a k nel Metodo ρ. Dunque la coppia (j, k) e presa in considerazione dal procedimentodi Pollard e, per la precedente osservazione 3, d divide anche (xj − xk, N) e c’e forte probabilita che(xj − xk, N) 6= N . Inoltre

k < 2h+2 = 4 · 2h ≤ 4k0.

Cosı, se la coppia (j0, k0) e sfuggita, il metodo prende comunque in considerazione una coppia (j, k) chesoddisfa k ≤ 4k0 e, con alta probabilita, testimonia ancora (xj − xk, N) 6= N .

Esempi. 1. Per illustrare il procedimento, ritorniamo a N = 91. Scegliamo ancora x0 = 1, f(x) = x2+1per ogni intero x. Ricordiamo

x0 = 1, x1 = 2, x2 = 5, x3 = 26, x4 ≡ 40 (mod 91), . . . .

Procedendo col metodo ρ si ha(x1 − x0, N) = (1, 91) = 1,

(x2 − x1, N) = (3, 91) = 1,

(x3 − x1, N) = (24, 91) = 1,

(x4 − x3, N) = (14, 91) = 7;

cosı, con breve ritardo su k, si ottiene comunque 7 | 91.

57

2. Sia ora N = 4087. Fissiamo stavolta x0 = 2 e f(x) = x2 + x + 1 per ogni intero x. Otteniamo

x0 = 2, x1 = 7, x2 = 57, x3 = 3307, x4 ≡ 2745 (mod 4087),

x5 ≡ 1343 (mod 4087), x6 ≡ 2626 (mod 4087), x7 ≡ 3734 (mod 4087), . . . .

Procedendo col metodo ρ si ha(x1 − x0, N) = (5, 4087) = 1,

(x2 − x1, N) = (50, 4087) = 1,

(x3 − x1, N) = (3300, 4087) = 1,

(x4 − x3, N) = (2745− 3307, 4087) = 1,

(x5 − x3, N) = (1343− 3307, 4087) = 1,

(x6 − x3, N) = (2626− 3307, 4087) = 1,

(x7 − x3, N) = (3734− 3307, 4087) = 61,

cosı 61 | 4087 ed anzi 4087 = 61 · 67. a

Si puo comunque obiettare che il Metodo ρ si basa parzialmente su argomenti probabilistici, e nongarantisce con sicurezza di fornire il divisore d 6= 1, N richiesto. E dunque ragionevole chiedersi se una sceltaappropriata di x0 e f possa favorire la ricerca di d. A questo proposito, possiamo osservare che, visto che ilprocedimento coinvolge non tanto numeri interi xj , xk, quanto classi di congruenza di interi (rispetto a N),e opportuno che la funzione f preservi la relazione di congruenza (assuma lo stesso valore per interi congruimodulo N): una funzione polinomiale f ha certamente questa proprieta (perche addizione, sottrazione emoltiplicazione rispettano la congruenza). Ma, cio premesso, la scelta di x0 e f puo essere completamentearbitraria e nessun vantaggio e garantito, almeno in linea di principio, da una particolare preferenza su x0 ef : il seguente teorema spiega il motivo. Per comprenderne l’enunciato, riflettiamo ancora brevemente sullasituazione.

Al momento di applicare il metodo (e di affidarci a x0 e f opportuni), sappiamo gia che N e composto,e che un divisore d 6= 1, N di N esiste (anche se non lo conosciamo ed anzi vogliamo trovarlo). Se f epolinomiale e preserva le congruenze, f definisce in particolare una funzione da Zd a Zd (quella che associaalla classe di un intero x rispetto a d la classe di congruenza di f(x) modulo d); anche x0 determina unvalore modulo d, cosı come tutti gli elementi xj = f j(x0) (j naturale) della successiva sequenza (anzi, i lorovalori ci interessano modulo N , e possono essere limitati tra 0 e N − 1).

Stiamo cercando due naturali j < k tali che xj 6≡ xk (modN) (e dunque xj 6= xk se 0 ≤ xj , xk < N),ma lo sconosciuto d divide xj − xk (oltre che N) e cioe xj ≡ xk (modd). Allora quanto possiamo chiederci aquesto punto e se la scelta di x0 e f possa ritardare o anticipare in modo decisivo quanto aspettiamo, e cioeuna ripetizione modulo d nella sequenza degli xj = f j(x0) (j naturale).

In conclusione, abbiamo un insieme Zd con d elementi (per il nostro misterioso d) e scegliamo unelemento s0 di questo insieme (la classe di x0 modulo d) ed una funzione F dall’insieme in se (quella definitada f) e ci chiediamo fino a quando potra tardare una ripetizione nella sequenza delle immagini di s0 tramiteF .

Il teorema gia annunciato affronta questa situazione in un contesto generale ed astratto, e afferma:

Teorema. Siano S un insieme di cardinalita d, l un naturale < d, λ un reale positivo definito dal = 1 + b

√2λdc. Allora la probabilita di scegliere una coppia (s0, F ) dove F e una funzione da S a S, s0 e

un elemento di S e s0 6= F (s0) 6= . . . 6= F l(s0) e ≤ e−λ.

Il significato nel nostro caso particolare e chiaro: a prescindere dalla scelta di x0 e f , la probabilita cheil Metodo ρ non abbia avuto ancora successo dopo l + 1 passi (quando cioe ha calcolato e confrontato x0,f(x0), . . ., f l(x0)), e ≤ e−λ dove l = 1 + b

√2λdc.

58

Dimostrazione. Il numero complessivo delle coppie (s0, F ) composte da un elemento s0 di S e da unafunzione F da S a S e dd+1 perche ci sono d possibilita di scegliere s0 e dd possibilita di scegliere F . Inveceil numero delle coppie (s0, F ) tali che s0 6= F (s0) 6= . . . 6= F l(s0) e

j≤l

(d− j) · dd−l,

infatti ci sono ancora d possibilita di scegliere s0 ma, relativamente a F , d− 1 possibilita di scegliere F (s0),. . ., d− l possibilita di scegliere F l(s0), e poi d possibilita di scegliere l’immagine degli altri d− l elementi diS. Cosı la probabilita cercata e

j≤l(d− j) · dd−l

dd+1 =∏

j≤l

(1− jd).

D’altra parte∏

j≤l

(1− jd) ≤ e−λ

se e solo se∑

j≤l

loge (1− jd) = loge (

j≤l

(1− jd)) ≤ −λ.

Ma, per 0 < j ≤ l < d, si ha loge (1− jd ) < − j

d , e dunque

j≤l

loge (1− jd) < −

j≤l

jd

= − l(l + 1)2d

< − l2

2d< −2λd

2d= −λ

per l = 1 + b√

2λdc. a

Quanto al numero di passi occorrenti per individuare un divisore d 6= 1, N di N nel metodo ρ per unadata scelta di x0 e f , si ha quanto segue.

Teorema. Scegliamo un intero x0 ed una funzione polinomiale f da Z a Z. Allora esiste un numerointero positivo c tale che, per ogni reale positivo λ, la probabilita che il Metodo ρ applicato a (x0, f) nonriveli un divisore 6= 1, N di N in c

√λN

14 log3 N passi e ≤ e−λ.

Dimostrazione. Sappiamo che, se esistono due naturali j0 < k0 < N tali che (xj0 − xk0 , N) = de un divisore 6= 1, N di N , allora il Metodo ρ determina d entro 4k0 successive applicazioni (salvo erroritrascurabili): possiamo poi supporre d ≤

√N (uno tra d e il quoziente N

d soddisfa questa proprieta). Adognuna delle sue applicazioni, il metodo calcola xk e xj impiegando un numero di passi elementari che sipuo stimare ≤ c2 log2 N per un’opportuna costante positiva c2, e poi impiega al piu altri c1log3 N passi(per un’altra opportuna costante positiva c1) per computare (xj − xk, N). Complessivamente il numerodi passi richiesti e al piu 4k0(c1 log3 N + c2 log2 N). Dal Teorema precedente segue che la probabilita chek0 > 1 + b

√2λdc e ≤ e−λ. Se invece k0 ≤ 1 + b

√2λdc, il numero dei passi della computazione e al piu

4(1 + b√

2λdc)(c1 log3 N + c2 log2 N) < 4(1 +√

2√

λN14 )(c1 + c2) log3 N

ed e dunque maggiorato, per N grande, da

5√

2√

λN14 )(c1 + c2) log3 N.

Quindi un qualunque intero c ≥ 5√

2√

λN14 )(c1 + c2) e la costante cercata. a

In conclusione, resta confermato che la scelta di x0 e f non e sostanzialmente influente nel buon esitodel Metodo ρ, almeno a livello teorico. Da un punto di vista pratico, si vede che f(x) = x2 + 1 ∀x ∈ Z euna buona funzione di controllo, mentre le funzioni lineari f(x) = ax+ b ∀x ∈ Z (con a e b interi ed a 6= 0)sono da evitare.

59

§ 3. Fattorizzazione alla Fermat

Un’altra strategia per ottenere un divisore d 6= 1, N del nostro composto dispari N > 2 si basa suun’osservazione gia nota a Fermat, secondo la quale esprimere N come prodotto

N = a · b

di due fattori a ≥ b > 1 equivale a rappresentare N come differenza di quadrati

N = t2 − s2

con t, s naturali e t− s > 1. Vediamo perche.Chiaramente, se N = t2 − s2 e la differenza dei quadrati dei due naturali t, s e t − s > 1, allora N si

puo decomporre nel prodotto N = (t + s) · (t− s) dove t + s ≥ t− s > 1.Viceversa, supponiamo N = a · b con a ≥ b > 1. Notiamo che a e b devono essere dispari perche N e

dispari. Dunque i due naturali a± b sono pari e dividendoli per 2 otteniamo due nuovi naturali a+b2 e a−b

2 .Inoltre

(a + b

2)2 − (

a− b2

)2 =(a + b)2 − (a− b)2

4= a · b = N,

a + b2

>a− b

2,

a + b2

− a− b2

= b > 1.

In conclusione, fattorizzare N = a · b con a ≥ b > 1 equivale a decomporlo nella differenza di quadratiN = t2−s2 con t−s > 1, e le formule che permettono di passare dall’una all’altra di queste rappresentazionisono

a = t + s, b = t− s, t =a + b

2, s =

a− b2

rispettivamente. Sulla base di questa osservazione possiamo azzardare la seguente procedura per decomporreN .

Azzardando dapprima l’ipotesi che a e b siano molto vicini, quindi che s = a−b2 sia molto “piccolo” e

t = a+b2 molto vicino a

√N , possiamo considerare i valori

t = b√

Nc+ 1, b√

Nc+ 2, . . .

per ciascuno di essi calcolare t2 −N e verificare se e il quadrato perfetto di qualche naturale s. In tal casot2 −N = s2 implica N = t2 − s2 = (t + s) · (t− s).

Ovviamente non e detto che a e b debbano essere vicini. Tuttavia, se la precedente strategia non conducea successo in un numero ragionevolmente breve di passi, possiamo seguire una procedura piu elaborata, masimile: per ogni intero k > 1, considerare gli elementi

t = b√

kNc+ 1, b√

kNc+ 2, . . . ,

e per ciascuno di essi calcolare t2 − kN e verificare se e il quadrato perfetto di qualche naturale s. In talcaso t2 − kN = s2 implica kN = t2 − s2 = (t + s) · (t − s) e, per k abbastanza piccolo, si puo ritenere cheN e t + s abbiano qualche fattore primo a comune, in altre parole che (N, t + s) 6= 1, il che determina undivisore 6= 1, N di N .

Illustriamo il procedimento con un paio di esempi.

Esempi. 1. Sia dapprima N = 200819. Anzitutto b√

Nc+ 1 = 449. Si ha poi4492 − 200819 = 782 non e un quadrato perfetto,

ma4502 − 200819 = 1681 e il quadrato di 41.

60

Cosı 200819 = 4502 − 412 = (450 + 41) · (450− 41) = 491 · 409.2. Sia ora N = 141467. Anzitutto b

√Nc + 1 = 377. Tuttavia, quando controlliamo se 3772 − 141467,

3782 − 141467, . . . sono quadrati perfetti, dobbiamo aspettare 38 tentativi prima di avere successo. Invece,per k = 3, b

√3Nc+ 1 = 652 e si verifica che

6552 − 3 · 141467 = 682 e un quadrato perfetto.Cosı 3 · 141467 = 6552 − 682 = (655 + 68) · (655− 68) e, in effetti, (141467, 655 + 68) = 241 e un divisore di141467 diverso da 1 e da 141467. a

Dunque il procedimento descritto cerca due naturali t, s tali che? t2 ≡ s2 (modN) (che traduce in termini di congruenza il fatto che t2 − s2 = kN per qualche naturale

N),? t 6≡ ±s (modN) (cioe N non divide ne t− s ne t + s).

In questo caso a = (t + s, N) e verosimilmente un divisore non banale di N , mentre b = Na divide molto

probabilmente t−s. Dobbiamo pero cercare un qualche algoritmo che ci permetta di ottenere esplicitamente(e, se possibile, rapidamente) t e s. Descriviamo una possibile procedura a questo proposito. Ci servonoalcune definizioni.

Anzitutto chiamiamo minimo resto assoluto di un intero a rispetto ad N l’intero r tale che

r ≡ a (modN), −N2

< r <N2

.

Si dice poi base di fattori un insieme finito B di interi che eguagliano −1 oppure sono primi ≥ 2. Se B e unabase di fattori, chiamiamo B-numero per N un intero b tale che il minimo resto assoluto di b2 modulo N eprodotto di elementi di B.

Esempio. Sia N = 4633. Consideriamo la base di fattori B = {−1, 2, 3}. Ovviamente 67, 68 e 69coincidono con i loro minimi resti assoluti modulo 4633. Inoltre

672 ≡ −144 ≡ (−1) · 24 · 32 (modN),

682 ≡ −9 ≡ (−1) · 32 (modN),

692 ≡ 128 ≡ 27 (mod N).

Dunque 67, 68 e 69 sono B-numeri per N . a

Fissiamo allora una base di fattori B = {p0, . . . , ph}. Sia b un B-numero per N . Quindi il minimo restoassoluto di b2 modulo N ha la forma

j≤h

pαjj

per opportuni naturali αj . Per ogni j ≤ h, indichiamo con ej il resto della divisione di αj per 2. Allorae = (e0, . . . , eh) e un vettore di 0 e 1: nell’esempio precedente, a 67 corrisponde il vettore (1, 0, 0), a 68ancora (1, 0, 0), a 69 (0, 1, 0),

Supponiamo di conoscere b(0), . . . , b(k) B-numeri per N . Per ogni i ≤ k, possiamo esprimere, comesopra, il minimo resto assoluto di b(i)2 modulo N come prodotto di elementi di B

j≤h

pαi, jj (modN)

e denotare con ei, j per ogni j ≤ h il resto della divisione di αi, j per 2 e con e(i) il corrispondente vettore di0 e 1.

Assumiamo che∑

i≤k e(i) sia il vettore nullo (modulo 2).Quindi, per ogni j ≤ k, la componente j-ma di

i≤k e(i) e congrua a 0 modulo 2. Al variare di j ≤ kotteniamo poi

i≤k

b(i)2 ≡∏

i≤k, j≤h

pαi, jj ≡

j≤h

p

i≤kαi, j

j (modN).

61

Notiamo che, per ogni j ≤ h, la componente j-ma di∑

i≤k e(i) (cioe 0 modulo 2) e anche congrua a∑

i≤k αi, j

modulo 2. Allora, per ogni j ≤ h,∑

i≤k αi, j e puo essere scritta

i≤k

αi, j = 2γj

per un opportuno naturale γj . Allora

(∏

i≤k

b(i))2 ≡ (∏

j≤h

pγjj )2 (modN).

Siano t ed s i minimi resti assoluti modulo N di∏

i≤k b(i),∏

j≤h pγjj rispettivamente. Dunque

t2 ≡ s2 (modN)

e, se verifichiamo anche t 6≡ ±s (modN), abbiamo ottenuto quanto cercato.

Osservazioni. 1. Domandiamoci anzitutto quanto e probabile che i due valori t ed s trovati soddisfinot 6≡ ±s (mod N) e non piuttosto l’alternativa t ≡ ±s (mod N). A questo proposito possiamo comunqueprendere atto che, se N ammette r ≥ 2 fattori primi, allora ogni quadrato modulo N ammette 2r ≤ 4 radiciquadrate, e dunque s ha 2

2r ≤ 12 possibilita di non coincidere con 6= ±t modulo N .

2. Il procedimento appena descritto si basa sulla ipotesi che∑

i≤k e(i) sia il vettore nullo (modulo 2) edunque che i vettori e(i) (i ≤ k) siano linearmente dipendenti modulo 2 (cioe sul campo Z2 con 2 elementi).La condizione non e eccessivamente restrittiva; ad esempio e noto che h + 2 vettori che hanno lunghezzah + 1 come i nostri e(i) sono sempre linearmente dipendenti.

3. Circa la scelta di B e dei B-numeri b(i) (i ≤ h), la pratica suggerisce di preferireB composto da pochi numeri primi, possibilmente tutti piccoli (insieme eventualmente a −1),i b(i) vicini a

√rN con r intero positivo piccolo. a

Esempi. 1. Sia dapprima N = 4633. Osserviamo che 67 e 68 sono abbastanza “vicini” a√

4633 e cheentrambi sono B-numeri per N se assumiamo B = {1, 2, 3}. Sappiamo anzi

672 ≡ −144 ≡ (−1) · 24 · 32 (mod 4633),

682 ≡ −9 ≡ (−1) · 32 (mod 4633),

dunque672 · 682 ≡ (−1)2 · 24 · 34 (mod 4633),

da cui deduciamoγ0 = 1, γ1 = 2, γ2 = 2.

Inoltre B associa a 67 e 68 lo stesso vettore e(0) = e(1) = (1, 0, 0) che certamente soddisfa l’ipotesie(0) + e(1) = (0, 0, 0) modulo 2. Corrispondentemente si ha

t = 67 · 68 ≡ −77 (mod 4633), s ≡ (−1)1 · 22 · 32 ≡ −36 (mod 4633)

dove 77 6≡ ±36 (mod 4633). In effetti si ha (4633, 77− 36) = 41.2. Sia ancora N = 4633. Stavolta cerchiamo pero una “minima” basi di fattori B rispetto a cui 68, 69

e 96 siano B-numeri per N ; vogliamo poi usare questa base per individuare un divisore non banale di N .Abbiamo gia visto

682 ≡ (−1) · 32 (mod 4633), 692 ≡ 27 (mod 4633),

e possiamo controllare che962 ≡ −50 ≡ (−1) · 2 · 52 (mod 4633).

62

Ci conviene allora scegliere B = {−1, 2, 3, 5}. Notiamo poi

682 · 692 · 962 ≡ (−1)2 · 28 · 32 · 52 (mod 4633),

dunqueγ0 = 1, γ1 = 4, γ2 = γ3 = 1.

Inoltre B associa a 68, 69 e 96 i vettori e(0) = (1, 0, 0, 0), e(1) = (0, 1, 0, 0), e(2) = (1, 1, 0, 0) che hannosomma (0, 0, 0, 0) modulo 2. Poniamo allora

t = 68 · 69 · 96 ≡ 1031 (mod 4633), s ≡ (−1)1 · 24 · 31 · 51 ≡ −240 (mod 4633)

e notiamo 1031 6≡ ±240 (mod 4633), (4633, 1031 + 240) = 41.

§ 4. Una conclusione

Abbiamo descritto due algoritmi di fattorizzazione non banali, anzi abbastanza sofisticati dal puntodi vista teorico, e pur tuttavia ne sicuri (entrambi si fondano parzialmente su argomenti probabilistici) necompletamente soddisfacenti sotto il punto di vista della rapidita. In effetti, i metodi oggi conosciuti per lafattorizzazione di un composto N richiedono un numero di passi che puo raggiungere

eC√

log N log log N

per un’opportuna costante C. Questa limitazione puo essere abbassata nei casi migliori a

eC(log N)13 (log log N)

23 ,

che e comunque funzione esponenziale della lunghezza dell’input N . In altre parole, non si conosconoalgoritmi efficienti di fattorizzazione, e il tempo di risposta dei procedimenti conosciuti si rivela sensibilmentepiu alto di quelli dei migliori algoritmi di primalita. Su questa situazione si basa la affidabilita di alcuni deimoderni sistemi crittografici.

63

Capitolo 6 - ANCORA CRITTOGRAFIA

§ 1. Crittografia a chiave pubblica

Nel primo capitolo abbiamo gia introdotto la Crittografia a Chiave Pubblica, le sue motivazioni e le suefondamentali esigenze. Sostanzialmente

1. i nuovi criptosistemi devono evitare un preventivo scambio di chiave tra gli utenti, consentire che partedella chiave (essenzialmente quella che riguarda la codifica) sia pubblica ed accessibile ad ognuno, mamantenere rigorosamente privato il resto della chiave (e dunque la procedura di decodifica);

2. conseguentemente, la decodifica deve essere un’operazione enormemente piu difficile della codifica, inassenza di informazioni specifiche note solamente all’utente che riceve il messaggio.

Un’idea per soddisfare queste esigenze potrebbe essere quella di usare funzioni a senso unico: funzioni dicifratura che siano facilmente computabili (in modo che chiunque possa velocemente criptare un messaggioper un dato utente A), invertibili (in modo da permettere la decifratura), ma abbiano un’inversa il cui calcoloe proibitivo in assenza di ulteriori informazioni (quelle che costituiscono la chiave privata di A, che solo Adeve conoscere e senza la quale nessun pirata potra infrangere in tempi rapidi un messaggio eventualmenteintercettato). Una funzione a senso unico potrebbe essere la base ragionevole di un efficiente sistema dicrittografia a chiave pubblica.

Abbiamo pero osservato che niente assicura a priori che simili funzioni esistano. Anzi, la nozione stessadi funzione a senso unico non ha niente di matematicamente rigoroso: infatti la difficolta di calcolare l’inversapotrebbe essere soltanto transitoria e passeggera, legata allo stato attuale delle conoscenze scientifiche; unafunzione che oggi si rivelasse a senso unico domani potrebbe non esserlo piu.

Abbiamo comunque sottolineato che ci sono due significativi settori dell’Informatica Teorica e dellaMatematica che possono fornire importanti spunti di ispirazione per la costruzione di funzioni a senso unicoe, conseguentemente, di criptosistemi a chiave pubblica:(?) la questione P = NP dell’Informatica Teorica, e la conseguente esistenza di problemi NP -completi:

privi, allo stato attuale delle conoscenze, di algoritmi rapidi di soluzione, eppure dotati di algoritmirapidi di verifica delle soluzioni;

(?) i vari problemi aperti che la Teoria Elementare dei Numeri presenta; in particolare, la mancanza, allostato attuale delle conoscenze, di algoritmi rapidi di fattorizzazione.Il presente capitolo e dedicato a presentare alcuni dei principali criptosistemi che si basano su queste

situazioni, a discutere la loro attuazione della pratica e certi aspetti informatici e legislativi che accompagnanoil loro uso nella vita comune.

§ 2. Il Logaritmo Discreto e il Criptosistema di Diffie-Hellman

Il primo criptosistema a chiave pubblica ad essere stato storicamente proposto (nel 1976) e dovuto aDiffie ed Hellman: la sua funzione a senso unico e il logaritmo, non quello delle famigerate tavole (che riguardai numeri reali), ma un’analoga nozione nel contesto degli interi (e delle congruenze tra interi). Infatti tra ireali l’esponenziazione in una fissata base a ∈ R maggiore di 0 e diversa da 1

x 7→ ax, ∀x ∈ R,

eventualmente approssimata a meno di un preassegnato grado di precisione, non e computazionalmente piufacile della operazione inversa, e cioe il calcolo del logaritmo

y 7→ loga y, ∀y ∈ R, y > 0.

64

Consideriamo invece, per N numero primo molto grande, l’insieme G delle potenze distinte 1, a, . . . , aN−1

di un numero a primo con N e diverso da 1 (modulo N). Qui la situazione cambia. Infatti, fissato a,? esistono, come sappiamo, metodi rapidi di calcolo di ax (modulo N) per ogni intero x,? ma, allo stato attuale delle conoscenze, non sono noti metodi altrettanto ragionevoli per recuperare da

una data potenza y di a un esponente naturale x < N per cui y coincide con ax (un tale y si chiama illogaritmo discreto di x in base a modulo N).

Anzi, la questione di trovare algoritmi efficienti per il calcolo del logaritmo discreto e conosciuta come ilProblema del logaritmo discreto, e pare molto complessa e delicata.

Il sistema di Diffie-Hellman si basa proprio su questo difficolta: la sua funzione a senso unico e, appunto,proprio l’esponenziazione in base a modulo un opportuno N , la quale, come richiesto, e invertibile e facileda computare, ma ha una funzione inversa (il logaritmo discreto) proibitiva da calcolare, almeno allo statoattuale delle conoscenze. Vediamo una esposizione (molto elementare) di questo criptosistema.

Generalizzando le precedenti osservazioni, consideriamo un gruppo ciclico finito G (come Z∗N per Nnumero primo, oppure F∗N per N potenza di primo) e fissiamo un generatore g di G: ogni elemento y ∈ G epotenza di g. Definiamo allora logaritmo discreto di y in base g un intero x per cui y = gx. Si noti che x edefinito a meno di congruenze modulo il periodo di g (e cioe modulo l’ordine di G).

Esempi. 1. Siano G = Z∗19, g = 12 (generatore di G modulo 19). Allora il logaritmo discreto di 7 inbase g e 6, infatti 26 ≡ 7 (mod 19).

2. Sia ora G = F∗9; ricordiamo che F9 si ottiene come ampliamento di Z3 tramite una radice v delpolinomio irriducibile t2 − t− 1 ∈ Z3[t]. Si noti che

v2 = v + 1 6= 1, v4 = (v + 1)2 = v2 + 2v + 1 = v + 1 + 2v + 1 = 3v + 2 = 2 6= 1,

dunque v non ha periodo ne 2 ne 4 in F∗9, e conseguentemente deve avere periodo 8, e quindi generareF∗9. Dalle precedenti computazioni deduciamo poi che il logaritmo discreto di −1 in base v e 4, infattiv4 = 2 = −1. a

Adesso ricordiamo quanto abbiamo fatto nel corso del capitolo 1, quando abbiamo considerato sistemidi codifica e decodifica basati sulla trasmissione di unita di messaggio formate da piu simboli. Assumiamo inparticolare che le nostre unita siano coppie di digrafi, ciascuno composto da 2 lettere scelte in un alfabeto di

N elementi, e quindi complessivamente un vettore(

xy

)

con x e y interi compresi tra 1 e N2. Una possibile

codifica (tradizionale) avviene allora tramite la funzione F che a(

xy

)

associa

(

x′

y′

)

=(

a bc d

)

·(

xy

)

+(

ef

)

, 1 ≤ x′, y′ ≤ N2

con a, b, c, d, e, f parametri interi prefissati tra 0 e N2 − 1 e ad − bc primo con N2 (dunque con N). Lascelta di a, b, c, d, e, f puo avvenire come segue.

Anzitutto i 6 elementi a, b, c, d, e, f sono univocamente determinati come coefficienti della decompo-sizione in base N2 di un naturale n ≤ N12 (purche rispettino (ad− bc, N) = 1)

n = aN10 + bN8 + cN6 + dN4 + eN2 + f.

N12 difficilmente e potenza di primo (e sicuramente non e primo), possiamo comunque fissare una potenzaq = ps di un primo p tale che ps ≥ N12, e pensare n come un elemento dell’anello Zq. In altre parole a, b,c, d, e, f risultano univocamente determinati da un opportuno elemento n ∈ Zq. Notiamo che Zq non e uncampo (a meno che q = p e s = 1), in particolare non coincide con Fq (escluso il caso appena menzionato).Se pero fissiamo una base B di Fq su Zp, all’intero n, decomposto in base p secondo le potenze 1, p, . . ., ps−1

di p con coefficienti tra 0 e p − 1, possiamo far corrispondere l’elemento di Fq che ha le stesse coordinatemodulo p rispetto alla base B. Questa corrispondenza e biunivoca ed effettiva. Cosı possiamo determinare

65

a, b, c, d, e, f (ed in definitiva la chiave di codifica del nostro criptosistema) scegliendo un elemento delcampo Fq e tramite esso, grazie alla corrispondenza ora introdotta, il naturale n < q.

Con queste premesse possiamo finalmente introdurre il Sistema crittografico di Diffie-Hellman.

1. Fissiamo anzitutto

• una potenza q di un primo, e il conseguente campo finito Fq,

• un generatore g del gruppo ciclico F∗q .

Essi fanno parte della chiave pubblica del sistema.

2. A questo punto ogni utente A si sceglie un esponente nA (che si puo supporre < q− 1) e calcola gnA :

• gnA e la chiave pubblica di A, diffusa tra tutti gli altri utenti,

• nA la sua chiave privata.

3. Supponiamo adesso che A e B vogliano mettersi in corrispondenza; anche B ha scelto la propria chiaveprivata nB e divulgato la sua chiave pubblica gnB . Tanto A quanto B possono a questo punto calcolare

gnA·nB = (gnA)nB = (gnB)nA :

B dalla sua chiave segreta nB e dalla chiave pubblica gnA di A; A, invece, dalla sua chiave segreta nA e dallachiave pubblica gnB di B. Allora A e B possono usare l’elemento gnA·nB ed il criptosistema classico che glie stato associato nel modo sopra descritto per cifrare e decifrare i loro messaggi.

Il sistema evita, come richiesto, uno scambio preliminare di chiavi segrete, anzi ogni utente custodiscela sua personale chiave segreta. Molti utenti possono essere coinvolti dal sistema, con un’opportuna sceltadelle chiavi pubbliche generali Fq e g.

La sicurezza del sistema rispetto a possibili incursioni di pirati si basa, come detto, sulla difficoltadel problema del logaritmo discreto. Infatti, ammettiamo che un malintenzionato intercetti un messaggiocifrato. Per decriptarlo in tempi rapidi, ha bisogno di conoscere la chiave del criptosistema classico associatoa gnA·nB ; ma le uniche informazioni di cui dispone sono le chiavi pubbliche di A e B, dunque gnA e gnB . Ilproblema e dunque quello di

recuperare gnA·nB da gnA e gnB .

Una semplice strategia per riuscirci e quella di calcolare gli esponenti nA e nB, cioe 2 logaritmi discreti.Naturalmente si possono seguire altre idee e tentare altri procedimenti. Ma si concorda che, allo statoattuale delle conoscenze, la questione e computazionalmente intrattabile, e comunque non piu facile delproblema del logaritmo discreto: questa ipotesi di lavoro e comunemente conosciuta come assunzione diDiffie-Hellman.

Per concludere, aggiungiamo che il sistema di Diffie-Hellman ha maggiori garanzia di sicurezza quandoil valore scelto per q e molto grande.

§ 3. Il Problema dello Zaino

Come gia anticipato nel Capitolo 1, altri criptosistemi a chiave pubblica sono ispirati ai cosı dettiproblemi NP -completi, e cioe a problemi, spesso di natura combinatoria, e ancor piu spesso di facile pre-sentazione, che si trovano nella seguente condizione: ammettono un algoritmo rapido per la verifica dellesoluzioni -dunque stanno in NP -, non si sa se consentono un procedimento rapido per la ricerca dellesoluzioni -cioe se stanno in P -, anzi si sa che, parlando alla buona, se stessero in P , costringerebbero NP eP a coincidere.

Un semplice esempio di problema NP -completo e costituito dal Problema dello Zaino, che si puo for-mulare come segue. Sono dati uno zaino con un volume intero prefissato V , e k oggetti di volume -ancoraintero- v0, . . . , vk−1 rispettivamente; il problema e se e possibile scegliere alcuni dei k oggetti in modo cheessi riempiano esattamente lo zaino, cioe la somma dei loro volumi eguagli V . Ci sono chiari algoritmi per

66

rispondere, ad esempio procedendo per tentativi, considerando cioe ogni possibile sequenza di oggetti e con-trollando se occupa completamente o no lo zaino: ma questo metodo, ancora accessibile se k e piccolo e glioggetti sono pochi, diventa impraticabile quando k diventa enormemente grande. In realta non si conoscenessun algoritmo polinomiale di soluzione del problema. In compenso, esistono metodi rapidissimi di verifica:infatti, se conosciamo la soluzione, e semplice controllarla, basta riempire lo zaino con gli oggetti scelti erealizzare, appunto, che essi lo occupano senza lasciare spazi vuoti e senza farlo scoppiare. Di piu, si sa cheil problema dello zaino e, appunto, NP -completo: se l’algoritmo rapido di soluzione si trovasse, potremmodedurne P = NP .

Si capisce facilmente che una simile situazione si presta a definire funzioni a senso unico. In effetti,vari criptosistemi a chiave pubblica si fondano sul problema dello zaino. Ne descriviamo il primo, propostoda Merkle e Hellman nel 1978. Anzitutto rienunciamo il problema dello zaino in versione piu asciutta ematematica.

Problema dello Zaino. Dati i naturali k, V , v0, . . . , vk−1 6= 0, determinare, se possibile, e0, . . ., ek−1

∈ {0, 1} tali che V =∑

i<k eivi.

Gli oggetti che riempiono lo zaino corrispondono in questa versione del problema agli indici i < k percui ei = 1.

Una piu semplice variante della questione e quella conosciuta come Problema Supercrescente dello Zaino,e richiede sequenze v0, . . . , vk−1 tali che, per ogni i < k, vi >

j<i vj . Ad esempio, 2, 3, 7, 15, 31 e unasequenza supercrescente perche 2 < 3, 2 + 3 < 7, 2 + 3 + 7 < 15 e 2 + 3 + 7 + 15 < 31, mentre 2, 5, 4 non loe perche 2 + 5 6< 4.

E facile trovare algoritmi rapidi di soluzione per il Problema Supercrescente dello Zaino: fissati k e Ve la sequenza supercrescente v0, . . . , vk−1, si percorre v0, . . . , vk−1 a ritroso da vk−1 fino ad incontrare ilprimo indice i per cui vi ≤ V (se i non esiste, non c’e soluzione): i va posto obbligatoriamente nello zaino,perche gli oggetti di indice maggiore sono piu grandi dell’intero V e quelli di indice minore, anche sommatiinsieme, non riescono neppure a raggiungere il volume vi e dunque a riempire da soli lo zaino. Dunque, sec’e soluzione, i vi partecipa; in altre parole, dobbiamo assumere ei = 1 ed ej = 0 per i < j < k. Adessosostituiamo V con V − vi, e ripetiamo il procedimento guardando alla sequenza supercrescente v0, . . . , vi−1.Applicando questo metodo, recuperiamo alla fine una soluzione del problema, se essa esiste. Anzi, si puoosservare che la soluzione, se c’e, e anche unica.

Ad esempio, consideriamo V = 24 e la sequenza supercrescente di sopra 2 < 3 < 7 < 15 < 31. Siccome31 > 24 > 15, si comincia col porre e4 = 0 ed e3 = 1. A questo punto si calcola 24− 15 = 9 e si nota 7 < 9,deducendone e2 = 1. Da 9− 7 = 2 < 3 si ottiene e1 = 0 e e0 = 1, riempiendo finalmente lo zaino.

In conclusione, il Problema Supercrescente dello Zaino ha un algoritmo rapido di soluzione, mentre nonsi conosce nessuna procedura veloce per il Problema generale dello Zaino (ed anzi si paventa che non ci sia).Il Criptosistema di Merkle-Hellman cerca di sfruttare questa situazione nel modo che adesso descriviamo alivello elementare ed intuitivo. L’utente A sceglie una sequenza supercrescente (v0, . . . , vk−1) (la sua chiavesegreta), la nasconde con un procedimento opportuno sotto le spoglie di una sequenza non supercrescente(w0, . . . , wk−1), che viene divulgata come chiave pubblica. L’interlocutore B scrive il suo messaggio tramitesequenze (e0, . . . , ek−1) di lunghezza k di numeri scelti tra 0 e 1. Per ogni sequenza, B calcola W =∑

i<k eiwi, e lo trasmette ad A. Con le informazioni segrete in suo possesso A prima recupera V =∑

i<k eivi,e poi, sfruttando il fatto che v0, . . . , vk−1 e supercrescente, calcola (e0, . . . , ek−1), cioe il testo originale.Invece, un pirata C che intercetta W e vuole recuperare (e0, . . . , ek−1) non puo approfittare degli stessivantaggi perche la sequenza pubblica w0, . . . , wk−1 non e supercrescente.

Cerchiamo adesso di spiegare l’intera procedura in maggiore dettaglio. Anzitutto spieghiamo come epossibile codificare le unita di messaggio tramite sequenze (e0, . . . , ek−1) di 0 e 1. La cosa non e difficile,basta convenire di rappresentare le nostre lettere (numeri interi positivi ≤ N , dove N = 26, 27, . . . e lacardinalita dell’alfabeto prescelto) in notazione binaria, e dunque come sequenze ordinate finite di 0 e 1;possiamo supporre che queste sequenze abbiano comune lunghezza k (eventualmente premettendo qualche0 alle sequenze piu corte). Ad esempio, se N = 26 (o anche 27), possiamo rappresentare ogni simbolodell’alfabeto come una sequenza ordinata di 5 cifre tra 0 e 1, da 1 che si rappresenta 00001 a 26 che e invece11010. Cio premesso, l’utente A sceglie, come gia parzialmente anticipato,

67

? una sequenza supercrescente (v0, . . . , vk−1),

? un intero m >∑

i<k vi,

? un intero positivo a primo con m

ad esempio tramite la seguente procedura. Si prendono k + 1 interi positivi arbitrari z0, . . . , zk−1, zk e sicomputano

v0 = z0, v1 = v0 + z1, vi =∑

j<i

vj + zi ∀i < k

e, finalmente,m =

j<k

vj + zk.

Chiaramente (v0, . . . , vk−1) e supercrescente ed inoltre si ha m >∑

i<k vi, proprio come richiesto; a siottiene poi facilmente conoscendo m. Vediamo adesso come A maschera (v0, . . ., vk−1) mediante una nuovasequenza (w0, . . ., wk−1) non piu supercrescente. A calcola:

? l’inverso b di a modulo m,

? la sequenza (w0, . . . , wk−1) che si ottiene da (v0, . . . , vk−1) ponendo, per ogni i < k, 0 < wi < m ewi ≡ avi (modm) (cioe bwi ≡ vi (modm)).

Ovviamente la nuova sequenza (w0, . . . , wk−1) puo non essere decrescente, ed A avra comunque cura chenon lo sia. A questo punto A divulga, come detto,

• (w0, . . . , wk−1) (la chiave pubblica di codifica)

mentre mantiene segreti

• m, b (dunque a) e (v0, . . . , vk−1) (che costituiscono la chiave privata di decodifica).

L’interlocutore B che vuole trasmettere ad A un qualche simbolo (e0, . . . , ek−1) (un numero intero posi-tivo rappresentato nella forma sopra concordata) computa W =

i<k eiwi e lo invia ad A. A recupera(e0, . . . , ek−1) nel modo gia sopra parzialmente descritto: dapprima calcola il resto V di bW nella divisioneper m, poi osserva

V ≡ be ≡∑

i<k

eibwi ≡∑

i<k

eivi (modm)

e, siccome∑

i<k eivi ≤∑

i<k vi < m, deduce V =∑

i<k eivi; finalmente A decodifica la sequenza (e0, . . . ,ek−1) applicando a V l’algoritmo del Problema Supercrescente dello Zaino. Invece un pirata C che intercettae e conosce soltanto la sequenza (non supercrescente) (w0, . . ., wk−1) si trova di fronte ad una istanza delProblema generale dello Zaino, con tutte le difficolta che ne derivano.

In realta il criptosistema di Merkle ed Hellman non fu una proposta fortunata: gia nel 1982, pochianni dopo la sua divulgazione, Shamir osservo che le sequenze pubbliche (w0, . . . , wk−1), pur non essendosupercrescenti come quelle private, ammettono comunque un loro specifico algoritmo rapido di soluzioneche, senza avere la pretesa di soddisfare il Problema generale dello Zaino, riesce comunque ad infrangere consuccesso l’intero sistema.

Dopo questa osservazione di Shamir, perfezionamenti del criptosistema di Merkle ed Hellman capacidi restaurarne l’affidabilita furono messi a punto, ad esempio da Cher e Rivest nel 1988. Ma si tratta divarianti molto sofisticate e bisognose di profonde basi teoriche, non cosı immediate ed elementari come alcunicriptosistemi che vedremo tra poco.

§ 4. Il Criptosistema RSA

In effetti, il criptosistema a chiave pubblica piu conosciuto ed usato e quello chiamato RSA dalle inizialidei suoi inventori Rivest, Shamir e Adleman. Esso fu proposto nel 1978 e la sua funzione a senso unico e ilprodotto. La cosa puo apparire stupefacente: che cosa c’e di difficile a calcolare moltiplicazioni o operazioni

68

inverse oggi, nel 2003, con l’aiuto dei calcolatori? Eppure, come gia sappiamo, allo stato attuale delleconoscenze,

? moltiplicare due primi distinti p, q ottenendo il prodotto N = p · qe enormemente piu rapido che

? decomporre in fattori primi N = p · q e dunque recuperare p e q da N(almeno quando i primi coinvolti sono titanici, cioe hanno molte cifre decimali). Per dirla con le parole diun esperto del settore (H. W. Lenstra),

supponiamo di avere due primi titanici p 6= q, di perderli in un pagliaio e di restare in possesso solo delloro prodotto N = p · q: e una sconfitta della scienza il dover ammettere che la maniera piu efficace oggidisponibile per ritrovare p e q e quella di cercare nel pagliaio.

In effetti Lenstra non si riferiva nel testo originale ad un pagliaio, ma a qualcosa di meno pulito: abbiamoqui operato una piccola censura. Comunque, pagliai o non pagliai, il metodo piu rapido e sofisticato didecomposizione in fattori primi che oggi e conosciuto richiede un tempo comunque esponenziale rispettoalla lunghezza dell’input N , e dunque proibitivo secondo ogni ragionevole parametro di valutazione dellacomplessita degli algoritmi.

Vediamo allora i dettagli di RSA. Lavoriamo su un alfabeto che ha n = 26 o piu simboli e conveniamopoi di trasmettere messaggi a singole lettere, o anche come gruppi di lettere di lunghezza k opportunamentecodificati da numeri ≤ nk: come sappiamo, possiamo rappresentare la sequenza a0, . . ., ak−1 di numeri < ntramite

a0 + a1 · n + a2 · n2 + . . . + ak−1 · nk−1.

Cio premesso, ogni utente A del sistema fissa due primi titanici p 6= q: come vedremo, esistono metodi capacidi generare casualmente queste coppie di primi. A ne calcola poi il prodotto N = p · q. Conoscendo questadecomposizione di N gli riesce agevole anche computare

φ(N) = (p− 1) · (q − 1).

Possiamo poi facilmente convenire che tutti i naturali a > 0 chiamati a rappresentare le unita di messaggionel modo appena descritto siano molto minori di p e q, e conseguentemente primi tanto con p quanto con q,e dunque anche con il prodotto N . Allora ogni a soddisfa il teorema di Eulero-Fermat

aφ(N) ≡ 1 (modN).

A sceglie allora due naturali dA ed eA, l’uno inverso dell’altro modulo φ(N). Vale dunque

dA · eA ≡ 1 (modφ(N));

In altre parole, dA · eA ha resto 1 nella divisione per φ(N) e dunque si scrive come dA · eA = tφ(N) + 1 perqualche opportuno naturale t. Allora per ogni naturale a con 0 < a < p, q (e quindi per ogni unita a dimessaggio) si ha

(aeA)dA ≡ aeA·dA ≡ aφ(N)·t+1 ≡ (aφ(N))t · a ≡ a (mod N).

A rende noti• N ed eA - la chiave pubblica -

e tiene gelosamente segreto• dA - la chiave privata -.

A questo punto, se un altro utente B vuole trasmettere ad A un messaggio, ne eleva ogni unita a alla eAmodulo N

a 7→ aeA (mod N),

e lo trasmette cosı cifrato ad A, che da parte sua recupera il testo originale elevando ogni unita ricevuta alladA modulo N

aeA 7→ (aeA)dA ≡ a (modN).

69

Questo e il fondamento (invero assai elementare) di RSA. Ma quale e il rischio che un pirata C riesca aviolare un messaggio eventualmente intercettato? C conosce la chiave pubblica N , eA e per decifrare deverecuperare a da aeA , in altre parole estrarre rapidamente le radici eA-me modulo N .

La strada maestra per raggiungere questo obiettivo sembra richiedere la conoscenza di dA, che e l’inversodi eA modulo φ(N). Dunque il punto cruciale per infrangere RSA pare ridursi alla conoscenza di φ(N) =(p− 1) · (q − 1), che a sua volta fa riferimento a p e q e, in conclusione, alla decomposizione di N in fattoriprimi. Siamo quindi nella situazione descritta all’inizio del paragrafo: dunque, siccome non esistono algoritmirapidi per decomporre N , non c’e verso di infrangere RSA, almeno per questa strada.

In realta la sicurezza di RSA si basa sulla difficolta di estrarre radici eA-me modulo N , e sull’assenzadi algoritmi capaci di svolgere rapidamente questi calcoli. Il collegamento tra i due problemi (estrarre radicimodulo N , e decomporre N in fattori primi) e ancora dibattuta. Abbiamo visto che un algoritmo rapido didecomposizione ne genera uno altrettanto veloce di estrazione di radice. Ma ci sono argomenti per ritenereche il secondo problema sia piu semplice nel primo, nel seguente senso, sottolineato da recenti ricerche diBoneh: se esiste un algoritmo rapido di decomposizione che si fonda su una procedura veloce di estrazionedi radice modulo N , allora esiste un algoritmo rapido di decomposizione che prescinde da ogni estrazione diradice modulo N . In altre parole, la rapidita di decomporre in fattori primi non dipende decisivamente dalcalcolo rapido di radici modulo N .

Come detto, RSA e il sistema crittografico maggiormente in uso: capita, svolgendo transazioni concarta di credito in Internet, di leggere talora sullo schermo che le informazioni segrete da trasmettere sonogarantite proprio da RSA. Naturalmente, l’uso di RSA richiede alcune ragionevoli precauzioni.

Ad esempio, fino a qualche anno fa, il numero delle cifre decimali dei fattori p e q di una comune chiaveRSA N = p · q per comuni transazioni commerciali era ragionevolmente collocato intorno a 150 (500 in base2). Poi, nel 1999, si vide che un programma svolto in parallelo da vari calcolatori riusciva a recuperare inalcune settimane i fattori p e q dei numeri N di questa forma. Non e certamente probabile che un pirataimpieghi un tale dispendio di tempo e di energie per intercettare il numero di una carta di credito il cuilimite massimale di spesa puo raggiungere poche migliaia di euro mensili, tanto piu che un comune calcolatorerichiederebbe qualche anno per sviluppare da solo la stessa computazione. Comunque si ritenne, come misuraprudenziale, di dover alzare il numero delle cifre decimali di p e q fino a circa 300 (1000 in base 2).

Ci sono altre precauzioni da prendere per evitare che situazioni contingenti (errori casuali di software ehardware, uso di calcolatori tascabili -le smartcards-, errori indotti dal pirata, virus, frettolosa accelerazionedei tempi di codifica e decodifica) possano rivelare parzialmente o totalmente la chiave privata dA di unutente A. Di questo parleremo in un prossimo paragrafo.

C’e comunque un altro problema che vogliamo trattare prima di concludere il presente paragrafo, ecioe: come si generano i fattori primi p e q? La loro segretezza e, evidentemente, importante, e dunque unmetodo prevedibile per determinarli potrebbe aiutare un pirata a ricavare la chiave privata di qualche utentee diminuire cosı la sicurezza del sistema.

Ricordiamo che p e q sono espressi tramite la loro rappresentazione binaria, e quindi come sequenze di 0e 1 e che la primalita si verifica rapidamente. Occorrerebbe allora un generatore casuale di sequenze di 0 e 1,tale che ogni nuovo bit non dipende in nessun modo da quelli che lo precedono. Ma un simile procedimentonon puo essere gestito da un comune calcolatore proprio a motivo della sua casualita: le computazioni di unamacchina sono deterministiche. La Fisica suggerisce invece procedimenti basati sulla emissione di neutronida parte di sostanze radioattive: questi metodi soddisfano le esigenze sopra riferite, ma sono in genere lentie costosi. Per superare queste difficolta possiamo cercare di conciliare i due procedimenti, generando numeripseudocasuali, e cioe sequenze casuali brevi di 0 e 1 (chiamate semi) e aggiungendo ulteriori bit secondo unprogramma deterministico, in modo tale che la sequenza finale prodotta sembri ad un estraneo assolutamentecasuale, e non sia comunque possibile recuperarne il seme senza conoscerlo a priori.

§ 5. Protocolli a Conoscenza Zero

Il problema dei Protocolli a Conoscenza Zero non riguarda direttamente la crittografia, ma un argo-mento che comunque le e collegato. Infatti, immaginiamo la seguente situazione. A ha risolto un particolare

70

problema (ad esempio, e riuscito a calcolare un difficile logaritmo discreto) e vuole informare un suo cor-rispondente B della scoperta. A, tuttavia,

? preferisce evitare di divulgare la soluzione (vuole riservare a se stesso gli eventuali vantaggi),? deve comunque produrre argomenti sufficienti a convincere B della fondatezza del suo annuncio.

Mostriamo come questo sia possibile, limitandoci ad un semplice esempio che riguarda, appunto, il temadel logaritmo discreto. Fissiamo allora la situazione: sono dati un gruppo ciclico moltiplicativo G di ordineN , un generatore g di G ed un elemento b ∈ G (quindi N , g e b sono pubblici). A e riuscito a calcolare illogaritmo discreto x di b in base g, cioe ha risolto l’equazione gx = b, e vuole provare a B che conosce xsenza comunicargliene il valore. Un algoritmo per ottenere questo scopo, con piena soddisfazione da partetanto di A quanto di B e il seguente.

A sceglie un intero positivo n < N , calcola g′ = gn e spedisce g′ a B. B lancia una moneta (delle vecchielire). Se esce testa, B si fa dire n da A e verifica gn = g′. Se esce croce, B si fa dire da A x + n e controllagx+n = gx · gn = b · g′.

L’intera operazione puo essere ripetuta quante volte si vuole (naturalmente variando n ad ogni nuovaapplicazione). Mostriamo che il procedimento puo convincere B della scoperta di A senza costringere A arivelare x.

(a) In effetti, A non comunica x, ne B ottiene informazioni tali da poterlo recuperare: ogni volta, infatti,B viene a conoscere n o x + n, ma non sa quale dei due ottiene; alla eventuale successiva applicazione, poi,n cambia e B non fa a tempo a ricavare con certezza due valori distinti n e x + n (la cui differenza per lostesso n gli fornirebbe x).

(b) A non puo reggere al gioco e rispondere ad ogni richiesta di B se non conoscendo x: se A ignorax, quando esce croce deve comunicare a B un valore errato di x + n e B lo puo smascherare perche puoverificare gx+n 6= b · g′. Naturalmente, A puo rimediare a questo guaio barando e spedendo a B all’iniziodella comunicazione g′ = gn · b−1 invece di gn; cosı, quando esce croce, A puo dire n invece di x+n (che nonconosce) e B, che e ignaro dell’imbroglio, controlla gn = b · gn · b−1 = b · g′. Ma in questo caso A non riescea reggere il gioco quando esce testa, proprio perche non conosce x e dunque non sa rispondere l’esponenten− x da sostituire ad n per ottenere g′ = gn · b−1 = gn−x.

§ 6. Firme Digitali

Quando B invia ad A un messaggio tradizionale su carta lo firma per qualificarsi come mittente. Allostesso modo, un messaggio cifrato di B ad A (magari trasmesso via Internet) dovrebbe avere un qualchecontrassegno che garantisca ad A che il suo interlocutore e proprio B, e non un pirata che si spaccia perB. Ma concludere il messaggio con una firma esplicita (anche cifrata) puo essere pericoloso, perche puofornire informazioni ad un pirata che lo intercetti. Si pone allora il problema di contrassegnare i messaggicifrati con una firma digitale in modo adeguato a far riconoscere il mittente al destinatario senza dare troppisuggerimenti agli estranei.

Ricordiamo che nei criptosistemi a chiave pubblica, basati sulle funzioni a senso unico, ogni utente A (oB) divulga universalmente la chiave di codifica fA (fB) e mantiene segreta la chiave di decodifica f−1

A (f−1B ,

rispettivamente).Allora B potrebbe apporre una firma digitale sul messaggio cifrato spedito ad A concludendolo con

fAf−1B (B),

(come gli e possibile visto che conosce sia la chiave pubblica fA di A che la propria chiave privata f−1B ). A,

da parte sua, sapendo la propria chiave privata f−1A e la chiave pubblica fB di B, riconosce la firma di B

calcolandofBf−1

A fAf−1B (B).

Ci sono pero due possibili ostacoli a questo procedimento.

71

1. Un pirata C potrebbe preliminarmente rendere pubblica una chiave spacciandola per quella di B e poisostituirsi a B nella corrispondenza con A.

2. Se un pirata C intercetta molti messaggi spediti da B a B, puo identificare la firma digitale fAf−1B (B)

alla fine di ciascuno di essi ed ottenerne informazioni sulla chiave privata f−1B di B, oppure, piu sem-

plicemente, usare questa firma per spacciarsi per B.Vediamo come e possibile ovviare a queste difficolta.

La strategia piu sicura per evitare 1 consiste nel costituire un ente certificatore super partes, presso cuiciascun utente va a depositare la sua chiave pubblica, facendosi identificare con criteri che vanno dal banaledocumento di riconoscimento al piu sofisticato esame dell’iride. Negli Stati Uniti questo ente certificatore (ilNIST , National Institute of Standards and Technology) esiste da anni.

Quanto a 2, un primo rimedio puo essere quello di variare la posizione della firma all’interno del messaggio(all’inizio, oppure all’interno, invece che alla fine). Alternativamente, la si puo fare dipendere anche dalmessaggio oltre che dal mittente (e dunque variare a seconda del contenuto di quanto trasmesso). Questaultima soluzione richiede l’uso di specifiche funzioni, che sono chiamate “impronta” in italiano (“hash” ininglese). Una funzione impronta i trasforma ogni messaggio M in una versione concentrata i(M) che rispettai seguenti criteri:

? i(M) ha lunghezza fissata (in genere ≤ 200 simboli);? e computazionalmente poco plausibile che messaggi diversi M 6= M ′ abbiano impronte uguali i(M) =

i(M ′).Ad esempio la impronta i(M) puo raccogliere informazioni quali il numero dei caratteri del messaggio, ilnumero delle vocali, delle consonanti, dei punti e delle virgole che esso contiene, quale e il suo centesimosimbolo, e cosı via. Si ottengono in questo modo brevi notizie chiave sul messaggio, che verosimilmente lodeterminano senza pericolo di confusione.

Una volta che l’ente certificatore ha stabilito la funzione impronta i da utilizzare e la ha resa pubblica,ogni utente B del sistema puo firmare un messaggio M scrivendo f−1

B (i(M)) al termine. A questo punto,il destinatario A, una volta ricevuto il messaggio fA(M), decifra M = f−1

A (fA(M)) e calcola i(M); poiconsidera la firma f−1

B (i(M)) e le applica la chiave pubblica fB di B ottenendo per altra via i(M); controllafinalmente che i due valori coincidono.

Concludiamo il paragrafo con qualche breve cenno relativo alla normativa italiana sulla firma digitale.La legge le ha dato validita legale, ed ha autorizzato enti certificatori per cerchie di utenti formate da istitutibancari; si puo prevedere un’estensione del sistema ai privati cittadini entro pochi anni.

§ 7. Possibili attacchi a RSA

Esponiamo in questo ultimo paragrafo alcuni possibili attacchi a RSA e le cautele da osservare perevitarli e preservare la sicurezza del sistema. Va detto che questi attacchi non fanno diretto riferimento alcriptosistema stesso, ma si basano piuttosto su sue cattive applicazioni e implementazioni, oppure su errorio imprudenze da parte dei suoi utenti. Cominciamo esponendo i pericoli che derivano da

1. attacchi elementari.1a. Un unico N? Si puo, ad esempio, pensare che un unico modulo N , comune a tutti gli utenti, scelto

e garantito da un Ente Certificatore, possa facilitare l’impiego del sistema. L’idea e pericolosa: un pirataC potrebbe approfittarne e, usando le sue chiavi pubblica e privata eC e dC , approfittarne per ottenere lachiave privata dA di un qualunque altro utente A. Il motivo e che eC e dC possono rivelare in tempo rapidola fattorizzazione N = p · q di N (e dunque, se C sa che lo stesso N riguarda anche A, dalla chiave pubblicadi A e, appunto, dalla fattorizzazione di N puo recuperare prima φ(N) e poi, finalmente, la chiave privatadi A). Vediamo i dettagli.

Ricordiamo anzitutto che eCdC ≡ 1 (modφ(N)) e scriviamo conseguentemente eCdC = k per un oppor-tuno multiplo k di φ(N). Siccome φ(N) e pari, anche k e pari, e puo essere espresso nella forma k = 2r · tcon t e r naturali, t ≥ 1 e r dispari. Per ogni intero g primo con N ,

(gk2 )2 = gk ≡ 1 (modN),

72

quindi gk2 e una radice quadrata di 1 modulo N . Osserviamo che, per ogni intero x, x2 ≡ 1 (mod N) se e solo

se x2 ≡ 1 (mod p) e x2 ≡ 1 (mod q). Dunque gk2 deve essere radice quadrata di 1 sia modulo p che modulo

q. Adesso usiamo il Teorema del Resto Cinese: siccome 1 ha 2 radici quadrate modulo p e 2 radici quadratemodulo q, possiamo dedurre che 1 ha 4 radici quadrate modulo N , che sono ±1 e ±r dove r ≡ 1 (mod p),r ≡ −1 (mod q). Dal capitolo sulla fattorizzazione possiamo ricordare che (r − 1, N) probabilissimamenterivela un divisore non banale di N , e quindi p oppure q. Dunque ci chiediamo come trovare r: per questo,prendiamo g a caso e calcoliamo a ritroso

1 = gk, gk2 , g

k4 , . . . , g

k2t

modulo N . Dalla spiegazione dell’algoritmo di Miller e Rabin possiamo ricordare che c’e una probabilita≥ 1

2 che, per un dato g, la sequenza precedente ci fornisca ±r.

1b. Schermature (blinding). Un altro possibile attacco, in realta un po’ grossolano, potrebbe essereportato nel modo che segue. Il pirata C potrebbe ottenere con qualche scusa la firma di A su vari messaggied approfittarne per ricavare informazioni sulla chiave privata dA di A. La tecnica del blinding (schermatura)permette ad A di assicurare a C la propria adesione senza tuttavia spedirgli nessuna firma. Cosı il proced-imento del blinding si puo applicare anche a contesti diversi da quello della mera protezione da attacchiRSA, e si usa in tutti i casi in cui A deve garantire a C la propria identita senza firmare espressamentealcun messaggio. Un esempio innocente riguarda i pagamenti digitali anonimi: chi versa vuole nasconderela propria identita, ma deve comunque garantire in modo esplicito il proprio assenso. In questo senso, latecnica del blinding richiama anche la problematica dei protocolli a conoscenza zero. Vediamone i dettagli.C fissa un intero positivo primo con N e considera le due funzioni f e g che ad ogni naturale x ≤ N associanonaturali ancora ≤ N definiti come segue:

f(x) ≡ reAx (modN), g(x) ≡ r−1x (modN)

(r−1 denota qui l’inverso di r modulo N). C fissa poi un messaggio casuale M , calcola

f(M) ≡ reAM (modN)

e lo trasmette ad A. A calcola con il proprio esponente privato dA, a partire dal messaggio f(M) ricevuto,

f(M)dA ≡ (reAM)dA ≡ reAdAMdA ≡ rMdA (modN)

e lo invia a C. C computag(rMdA) ≡ r−1rMdA ≡ MdA (modN)

e poi finalmente (MdA)eA , controllando che coincida con M . In caso affermativo, C ha la conferma che ilsuo interlocutore e proprio A. L’anonimato di A e garantito dalla difficolta di recuperare la chiave privatadA da M e MdA : gli ostacoli da superare sono infatti gli stessi del logaritmo discreto.

Passiamo adesso a considerare attacchi piu sofisticati. Ricordiamo che i moduli N attualmente utilizzatiper RSA prevedono almeno 1024 cifre in base 2. Le relative operazioni di codifica e decodifica previste dalcriptosistema (in particolare, gli elevamenti alle potenze eA e dA) ne risultano ovviamente rallentate, anche senon in modo decisivo. Per accelerarle, si potrebbe essere tentati di scegliere un esponente pubblico piccolo eA(per codificare velocemente) oppure un esponente privato piccolo dA (per decodificare velocemente). Questiespedienti sono pero assai rischiosi, e possono causare, appunto,

2. attacchi basati su una chiave privata piccola,3. attacchi basati su una chiave pubblica piccola,Per quanto riguarda 2, c’e un argomento di Wiener, che usa strumenti di matematica assai sofisticati

e mette in evidenza quanto sia pericoloso usare dA ≤ N14 ; Boneh e Durfree hanno ideato possibili attacchi

anche nell’ipotesi piu generale dA ≤ N0,292.... Una possibile strategia per mantenere i vantaggi di unesponente privato piccolo evitando i rischi ora accennati potrebbe basarsi sul seguente uso del Teorema delResto Cinese.

73

A accetta una chiave privata dA grande ma fissa due naturali dp, dq tali che

dp ≡ dA (mod (p− 1)), dq ≡ dA (mod (q − 1))

ed inoltre dp e dq sono “piccoli” (richiedono al piu 128 cifre in base 2): ricordiamo che p − 1 = φ(p) eq − 1 = φ(q). A questo punto A, ricevuto un messaggio cifrato C ≡ MeA (modN), calcola rapidamente

Mp ≡ Cdp (mod p), Mq ≡ Cdq (mod q);

ricava finalmente M come l’unica soluzione modulo N = pq di

M ≡ Mp (mod p), M ≡ Mq (mod q).

Passiamo adesso a 3. L’idea qui e quella di accelerare la codifica M 7→ MeA (modN) usando unesponente pubblico eA piccolo, oppure scegliendo un eA la cui rappresentazione in base 2 contiene pochecifre 1 (ricordiamo che ogni cifra 1 corrisponde, negli algoritmi di elevamento a potenza, ad operazionipiu complesse di quelle previste da 0): eA = 3 potrebbe essere un’ottima opzione nel primo caso, mentreeA = 216 − 1 = 65537 (che e grande, ma contiene solo 2 cifre uguali ad 1 nella rappresentazione in base 2) esoluzione ottimale nel secondo caso. Ci sono pero argomentazioni (di Hastad, Reiter-Franklin, Coppersmith)che mostrano come queste scelte possano essere talora pericolose, perche facilitano il calcolo delle radicieA-me e dunque la violazione del criptosistema. In particolare, per questi valori di eA, una conoscenza ancheparziale di dA (anche limitata a poche cifre) permette di ricostruire l’intera chiave privata dA.

Finalmente descriviamo

4. attacchi rivolti ad implementazioni insicure.

Supponiamo che A usi per decifrare un calcolatore tascabile (ad esempio una smartcard, e cioe un piccolodispositivo hardware, delle dimensioni di una comune carta di credito, che contiene un sistema operativo eduna RAM temporanea per crittografia e registrazione chiave). Il pirata C puo allora sfruttare la disattenzionedi A, richiedergli qualche firma su vari documenti e dedurre alcune informazioni sulla chiave privata di A daitempi che la smartcard impiega per firmare, oppure dalla energia che consuma. Questi attacchi sono statiproposti da Kocher. Altri possibili rischi per RSA possono derivare, ovviamente, da errori casuali (virushardware/software, guasti momentanei dell’hardware, guasti originati dal pirata stesso). Opportuni modellimatematici permettono di formalizzare in astratto la situazione e sviluppare attacchi teorici basati su questecontingenze.

74


Recommended