Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1. Classi di resto
Per ogni intero n > 1, introduciamo un nuovo insieme di numeri interi, denotato Zn cos costituito.
Sia r un intero e si denoti con r linsieme di tutti i numeri m che differiscono da r per un multiplo
di n. Diremo che m congruo a r modulo n, e scriveremo:
m = r modulo n.
Ci significa soltanto che esiste un intero h tale che si abbia: m ! r = hn .
Se ad esempio n = 3, saranno definiti gli insiemi:
0 = {0,3, !3, 6, !6,...}
1 = {1, 4, !2, 7, !5,...}
2 = {2,5, !1,8,...}
3 = {3, 6, 0, !3, !6,...}
4 = {4, 7,1, !2,...}
................
.....
Inoltre i tre insiemi sono a due a due disgiunti, cio privi di elementi comuni e ogni numero intero
appartiene a uno (e quindi uno solo) dei tre insiemi.
Questi fatti sono veri in generale quando n sia un intero qualsiasi, cio gli unici insiemi, n in totale,
che abbiamo in realt introdotti sono i seguenti:
0 = {0, n, !n, 2n, !2n,...}
1 = {1,1 + n,1 ! n,...}
2 = {2, 2 + n, 2, !n,...}
......
_______
n ! 1 = {n ! 1, n ! 1 + n, n ! 1 ! n,...}
m = qn+r, m = tn+s
e quindi la divisione di m per n ha due resti diversi, il che assurdo.
_ _
_____
______
a+ b = a + b
_ _
____
ab =!
ab
Ci significa ad esempio, se n = 4:
2!3 = 6 = 2
3!3 = 9 = 1
2+3 = 5 =1
3+3 = 6 = 2
Le operazioni sono ben definite, cio ad ogni coppia di elementi associato un solo elemento dello
stesso insieme, loro somma ovvero loro prodotto. In effetti, se a = a ' , b = b ' , si ha:
_
______
a+ b = a + b
_ _
____
a b = ab
ma anche
a ' + b ' = a '+ b '
a 'b ' = a 'b '
Queste propriet si dimostrano facilmente se si osserva che i resti della divisione di a e di a ' per n
coincidono, e lo stesso vale per b e b ' .
Le due operazioni soddisfano alle principali propriet delle operazioni fra numeri. Le propriet
associativa, commutativa, distributiva sono molto semplici da verificare, linsieme 0 sommato con
ogni altro lo lascia invariato (e quindi si comporta come il numero 0), linsieme 1 moltiplicato per
ogni altro lo lascia invariato (e quindi si comporta come il numero 1), lopposto di m !m (ad
esempio lopposto di 3 in Z5 !3 = 2 .
Occorre per osservare che in generale non vale la legge di annullamento del prodotto. Ad esempio
_
compreso fra 1 e n ! 1 , non multiplo del numero primo n. Se con il procedimento delle divisioni
successive cerchiamo il massimo comun divisore fra n ed a, otteniamo:
n = h1a + r1
a = h2 r1 + r2
r2 = h3 r2 + r3
...............
fino a trovare un resto che il massimo comun divisore 1. Si ha cio per un certo indice i:
ri !1 = hi ri + 1 . Supponiamo per semplicit che si abbia i = 3. Allora si ottiene:
r2 = h3 r3 + 1
r2 ! h3 r3 = 1
a ! h2 r1 ! h3 (r1 ! h2 r2 ) = 1
a ! (h3 + h2 )(n ! h1a ) = 1
(1 + h1 (h3 + h2 ))a + (h3 + h2 )n = 1
sa + tn = 1
con s e t numeri interi opportuni. E facile vedere che lo stesso risultato si ottiene anche se il
numero di divisioni successive qualsiasi. Ma leguaglianza sa+tn = 1 equivale
alleguaglianza s ! a = 1 , cio al fatto che a sia invertibile.
Se invece n non un numero primo ci sono classi non nulle che non hanno inversa. Ad esempio, se
n = 15 = 3 x 5, si pu vedere direttamente che le classi di 3 e di 5 non hanno inversa. Si pu
dimostrare, con lo stesso procedimento seguito per n primo, che la classe del numero a invertibile
modulo n qualsiasi se e soltanto se a ed n non hanno fattori primi comuni (salvo 1).
2.
Siano p un numero primo e a un qualsiasi numero intero non multiplo di p. Il Piccolo Teorema di
Fermat afferma quanto segue:
a p !1 = 1 modulo p .
!
!
classi di equivalenza dei numeri 1, 2,..... p ! 1 , scritte eventualmente in un ordine diverso da quello
naturale. Moltiplicando i numeri fra loro si ottiene quindi la seguente eguaglianza:
1" 2 " ..."( p #1) = (a "1) "(a " 2) "..." a "( p #1) modulo p.
Cio si ha:
1" 2 " ..."( p #1) = 1" 2 "..."( p #1)a p#1 modulo p
!
!
p !1
3. Il teorema di Eulero.
Il Piccolo Teorema di Fermat si pu estendere a una situazione pi generale. Invece di considerare
un numero primo p consideriamo un numero n = p " q , prodotto di due primi distinti fra loro p e
q > p . Allora, se lintero a non ha fattori comuni n con p n con q, si ha:
a ( p !1)( q !1) = 1 modulo n = p " q
!
!
!
a(p-1)(q-1) = 1 modulo n = p " q .
Questo teorema, che si potrebbe enunciare in forma ancora pi generale, dovuto al matematico
svizzero Euler (in Italia noto come Eulero, 1707-1783).
Per dimostrarlo
! occorre qualche considerazione preliminare.
Se p un numero primo, i p ! 1 numeri interi compresi fra 1 e p ! 1 sono tutti primi con p, cio
privi di fattori comuni con p, a parte 1 stesso. Se invece n = p " q il prodotto di due primi p e
q > p , ci sono esattamente ( p ! 1)(q ! 1) numeri interi compresi fra 1 e p " q che sono primi con
p " q , cio hanno in comune con esso solo il numero stesso e 1. Come si possono contare? Se un
numero m tale che 1 ! m < p " q primo con p " q , !
allora non contiene n il fattore p, n il fattore q,
che sono gli unici due fattori primi possibili di p " q . Vanno quindi
! scartati tutti i numeri minori di
p " q che contengono o il fattore p o il fattore q (non entrambi perch si tratta di numeri minori di
p " q ). Fra questi ci sono i numeri !
p "1, p " 2,..., p " (q #1) e q "1,q " 2,...,q "( p #1) e ovviamente non ce
ne sono altri. Si tratta inoltre di numeri tutti distinti, in quanto p "i , con i < q di certo diverso da
!
un multiplo q " j di q, in quanto p e q non hanno fattori comuni e i non pu avere fattori comuni con
p " q #1 di numeri
q. Quindi dal numero totale
!
! minori di p " q dobbiamo togliere q ! 1 + p ! 1
numeri, ottenendo: p " q # p # q +1 = ( p #1)(q #1) , che! il numero di interi minori di p " q primi con
p "!q .
Il numero di interi minori
di un numero n e privi di
!
! fattori diversi da 1 comuni con n si chiama
indicatore!di Eulero di n e si indica con il simbolo ! (n) . Abbiamo quindi!provato che si ha:
!( p) = p " 1
! ( p # q ) = ( p " 1)(q " 1)
Naturalmente non sarebbe difficile trovare una formula generale per lindicatore di Eulero di un
qualsiasi numero intero n. Lasciamo questo calcolo al lettore.
Usando la nostra nuova notazione, possiamo affermare che si ha (Teorema di Eulero):
4
La dimostrazione a questo punto simile a quella del teorema di Fermat precedente. Consideriamo
in effetti i ! ( p " q ) = ( p # 1)(q # 1) numeri che sono invertibili modulo p " q , e chiamiamoli
m1 , m2 ,....,
!m! . Moltiplichiamoli quindi successivamente per a:
E facile vedere, usando il fatto che a non ha fattori comuni con p " q!
, che sono distinti e che a due a
due non sono congrui modulo p " q . Quindi le loro classi di equivalenza modulo p " q coincidono
con le classi di equivalenza invertibili modulo p " q . Otteniamo pertanto leguaglianza
m1 """ m# = a " m1 " "" a " m# = a # " m1 """ m# modulo p " q !
ovvero
!
Siccome m1 """ m# non ha fattori comuni con p " q , occorre che si abbia a ! " 1 = 0 modulo p # q .
Si pu notare che il teorema di Fermat e quello di Eulero si possono presentare in una forma
leggermente diversa: se a un numero qualsiasi, allora a k"( p#q)+1 = a modulo p " q (ovvero
kp
che esiste un modo per ottenere il numero a come opportuna
!a = a modulo p ). Ci significa !
potenza di a, purch si ragioni modulo p " q o modulo p. Se poi si sceglie a < n, mediante tale
potenza, calcolata modulo p, o modulo p " q , si pu !
riottenere esattamente !a, che lunico intero
congruo ad a modulo p, o modulo p " q , e minore di n.
!
Esempio.
!
2
211 modulo 11 = 2 ! (25 )!
modulo 11 =2 ! 322 modulo 11=2 !100 modulo 11=2 modulo 11 .
Attenzione
a
scegliere
un
numero
minore
5
7 modulo 5=32 modulo 5=2 modulo 5 , ma 7 ! 2 .
di
n.
Ad
esempio
si
ha:
La propriet a k"( p#q)+1 = a modulo p " q (ovvero a kp = a modulo p) vale anche quando a e p " q
(ovvero a e p) non sono privi di fattori comuni. Nel caso del Piccolo Teorema di Fermat la cosa
ovvia: se a e p non sono privi di fattori comuni, a deve essere o 1 o un multiplo di p, e si ha :
1p =!1
!
!
(hp ) p = 0 p = 0
(tutto ovviamente modulo p).
Nel caso di n = p " q , la propriet di dimostrazione meno banale.
Sia a un numero che ha fattori comuni con p " q , quindi a = 1, oppure a = hp, a = sq o infine
a = l " p " q . Se a = 1, oppure a = l " p " q , il ragionamento precedente funziona.
Sia ora!ad esempio a = hp e si consideri quindi (hp ) k ! ( p"q ) +1 = (hp ) k ( p #1)( q #1) +1 = 0 modulo p.
!
Quindi:
kk ( q !1) p !1 !
p !1
(hp )((hp )
) = (hp )(1) = hp modulo q , per il Piccolo Teorema di Fermat applicato al primo
q. Ma allora (hp ) k ! ( p"q ) +1 = hp modulo p e anche modulo q, cio la differenza (hp ) k ! ( p"q ) +1 # hp un
multiplo sia di p sia di q, e quindi anche del loro prodotto. In conclusione
(hp ) k ! ( p"q ) +1 = hp modulo p " q .
!
5
5. Chiave pubblica RSA (dalle iniziali dei tre inventori Rivest, Shamir, Adleman)
Vediamo ora lelenco delle operazioni necessarie a inviare un messaggio in codice secondo il
metodo a chiave pubblica detto RSA.
Passo 1. Tutti coloro che sono interessati a scambiarsi messaggi in codice e che chiameremo
brevemente X, Y, Z, ... scelgono la propria chiave pubblica. Per lutente che chiameremo X, la
chiave pubblica KX una coppia di numeri (nX,eX), dove nX = pX ! qX il prodotto di due primi
distinti, mentre eX un qualsiasi intero compreso fra 0 e ! (nX ) , primo con ! (nX ) stesso. Occorre
scegliere nX > 255, per ragioni che saranno chiare ai passi 3, 4 e 6.
La chiave pubblica KX viene inserita in un pubblico elenco, accessibile a chiunque.
Passo 2. Lutente X sceglie la propria chiave privata LX, costituita anchessa da due numeri interi; il
primo lo stesso nX, il secondo dX = intero compreso fra 0 e ! (nX ) inverso di eX modulo ! (nX ) .
Quindi si dovr avere: eX ! d X = 1 mod ulo " (nX ) . La chiave privata LX = (nX,dX) rimane segreta, a
conoscenza del solo X.
Passo 3. Sia ora Y un utente che vuole inviare un messaggio mY a X, e che dispone quindi della
chiave pubblica KX e anche delle sue chiavi pubblica e privata KY e LY. Il messaggio mY sar
formata da lettere, segni di interpunzione, spazi,...; ognuno di tali simboli ha come corrispondente
un numero compreso fra 0 e 255 nel codice ASCII (si veda il cap. 7). Quindi il messaggio viene
trasformato in una successione SY di numeri interi compresi fra 0 e 255.
Passo 4. Y deve cifrare il messaggio; a questo scopo sostituisce ogni numero r della successione SY
con il numero r eX mod ulo nX e trasmette a X la nuova successione di numeri.
Passo 5. Y deve firmare il messaggio, cio deve aggiungere al suo messaggio un secondo
messaggio che serva a garantire a X che il messaggio proviene proprio da Y. A questo scopo
traduce le lettere del proprio nome in codice ASCII, ottenendo una nuova successione FY di numeri
compresi fra 0 e 255. Se nY < nX Y trasforma ogni numero r della successione nel numero
s = r dY modulo nY e quindi trasforma s, che un intero minore di nY < nX, nel numero
s eX modulo nX . Se invece nY > nX , le trasformazioni successive sono: r --> s = s = r eX modulo nX ,
s --> s dY modulo nY .
In ogni caso Y invia a X la successione di numeri cos trasformati.
Passo 6. X trasforma ogni numero r eX modulo nX del messaggio (esclusa la firma) mediante la sua
chiave privata, ottenendo il numero (r eX ) dX modulo nX = r1+ h! ( nX ) modulo nX = r modulo nX
grazie al teorema di Eulero.
La nuova successione di numeri, interpretati come codici ASCII, d il messaggio originale in
chiaro. Si noti che necessario avere 255 < nX. Se questa condizione non verificata, si passa dal
numero r < 255 al numero (r eX ) dX modulo nX = r1+ h! ( nX ) modulo nX , che potrebbe essere diverso da
r modulo 255. Ad esempio, con nX = 15, si ha: (163)3 modulo 15 = 1 modulo 15 16.
Passo 7. X legge la firma di Y. Se ad esempio nY < nX ,, X riceve come firma la successione di
numeri (r dY )eX . Allora elever il risultato a dX (a lui noto perch la sua chiave privata) e poi a eY
7
(noto perch la chiave pubblica di Y). Per il solito teorema di Eulero ritrova r e quindi la firma di
Y, applicando i soliti codici ASCII.
6. Istruzioni per luso del programma CCP (Crittografia a Chiave Pubblica-RSA)
6.1 Premessa
Il programma fornito sotto forma di alcune macro di EXCEL.
Per usarlo si deve anzitutto aprire il file EXCEL di nome CCP.XLS. A questo scopo occorre
preliminarmente impostare, se non lo gi, il livello di protezione di EXCEL a medio.
Per questo si deve scegliere, nel menu di EXCEL:
Strumenti->Opzioni->Protezione->Medio (anche Basso consente di aprire le
macro, ma pericoloso)
Aprendo il file si riceve la richiesta di abilitare o no le macro, e bisogna attivarle.
A questo punto compare il normale foglio EXCEL, che contiene gi dei dati dimostrativi.
6.2 Scelta delle chiavi
Questa la prima azione richiesta ad ogni utente del sistema nella sua qualit di ricevente; essa pu
essere fatta una tantum, o ripetuta quando si vogliono cambiare le chiavi.
I comandi sono:
Strumenti->Macro->Macro, che fa comparire la lista delle macro presenti, in ordine
alfabetico (ma non operativo):
o codifica
o decodifica
o genera_chiavi
doppio clic su genera_chiavi; verr richiesto un numero positivo, che lutente deve
scegliere e confermare con OK; poi viene richiesto di inserire il proprio nome (una stringa
qualsiasi di caratteri, usata per la firma); il programma risponder mettendo la chiave
pubblica dellutente nelle caselle B6,C6 , la chiave privata nelle caselle B7,C7 , e il nome
nella casella B4
se si ricevono segnalazioni di numeri troppo grandi o troppo piccoli, occorre ripartire
assegnando un numero rispettivamente pi piccolo o pi grande.
La chiave privata rimane segreta, a conoscenza solo dellutente che lha generata; la chiave
pubblica e il nome vengono comunicati a chiunque desideri conoscerli.
Ovviamente se si rigenerano le chiavi, occorre ricomunicare la nuova chiave pubblica.
6.3 Codifica di una frase
Questa lazione che compie chi intende inviare un messaggio, decifrabile solo dal ricevente.
Per codificare un messaggio destinato ad un dato utente di cui si conosce la chiave pubblica occorre
anzitutto inserire la chiave pubblica del ricevente nelle caselle B14,C14, e la frase da
codificare nella casella B15, poi dare i comandi:
Strumenti->Macro->Macro, che fa comparire la lista delle macro presenti, in ordine
alfabetico (ma non operativo):
o codifica
o decodifica
o genera_chiavi
Doppio clic su codifica; il programma chiede conferma dellavvenuto inserimento della
chiave pubblica del ricevente nelle caselle B14,C14; se stato fatto si continua con OK,
altrimenti occorre fermare il programma, farlo e ricominciare lesecuzione della macro
codifica; di seguito il programma chiede conferma dellavvenuto inserimento del
8
messaggio da codificare nella casella B15; se stato fatto si continua con OK, altrimenti
occorre fermare il programma, farlo e ricominciare lesecuzione della macro codifica.
Il programma produce:
La successione dei valori cifrati corrispondenti ai caratteri inseriti, nelle caselle
A18,B18,C18,..chiusa convenzionalmente dal simbolo $; si continua fino alla
massima lunghezza di una riga EXCEL
La successione dei valori cifrati corrispondenti alla firma dellinviante, nelle caselle
A21,B21,C21,..chiusa convenzionalmente dal simbolo $; si continua fino alla
massima lunghezza di una riga EXCEL
Chi invia il messaggio deve spedire al ricevente la successione dei valori cifrati, presa dalle caselle
A18,B18,C18,.., e la successione della firma cifrata, presa dalle caselle A21,B21,C21,..
6.4 Decodifica
Questa lazione che compie chi riceve un messaggio, codificato con la sua chiave pubblica, e
completo di firma dellinviante
Occorre anzitutto inserire
La chiave pubblica dellinviante nelle caselle B27,C27
la successione dei valori cifrati ricevuti nelle caselle A29,B29,C29, chiudendo
convenzionalmente con il simbolo $
la successione dei valori cifrati corrispondenti alla firma nelle caselle A32,B32,C32,
chiudendo convenzionalmente con il simbolo $
Fatto questo, si danno il comando Strumenti->Macro->Macro, che fa comparire la lista delle
macro presenti, in ordine alfabetico (ma non operativo):
o codifica
o decodifica
o genera_chiavi
Si fa doppio clic su decodifica; il programma chiede conferma dellinserimento di tutti i dati
richiesti; se stato fatto si continua con OK, altrimenti occorre farlo e ricominciare lesecuzione
della macro decodifica.
Il programma scrive la frase decifrata nella casella B34, e la firma decifrata nella casella B35.
Linsegnante dedica due o tre ore in classe alla teoria delle classi di resto, al Piccolo Teorema di
Fermat e al teorema di Eulero, per arrivare quindi alla crittografia a chiave pubblica RSA. Quindi
potrebbe portare la classe nellaula informatica attrezzata con computer e internet, invitando gli
studenti a scambiarsi messaggi in codice.
Lelenco delle chiavi pubbliche di ciascuno potrebbe essere appeso sulla porta dellaula.
11