Vous êtes sur la page 1sur 11

Introduzione alla crittografia a chiave pubblica

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,...}
................
.....

Si noti che 0 = 3 , 1 = 4 , 2 = 5 ,.... ; cio i nuovi insiemi sono soltanto 3:


0 = {0,3, !3, 6, !6,...}
1 = {1, 4, !2, 7, !5,...}
2 = {2,5, !1,8,...}

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,...}

e ogni numero intero appartiene a uno e uno solo di tali insiemi.


E in effetti facile vedere che si ha:

0 = n = 2n = .... , 1 = n + 1 = .... , !1 = n ! 1, ..... .


Per capire questo fatto basta osservare che il numero m e il resto r della sua divisione per n
appartengono allo stesso insieme:
se m = qn+r allora m = r .
Inoltre si osservi che, se il numero m appartiene allinsieme r e anche allinsieme r , con r s
entrambi compresi fra 0 e n ! 1 , allora si ha contemporaneamente:
1

m = qn+r, m = tn+s
e quindi la divisione di m per n ha due resti diversi, il che assurdo.
_ _

_____

Nellinsieme Zn ={ 0,1,...,n "1 } introduciamo le seguenti operazioni:


_

______

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 '

e quindi occorre far vedere che si ha:


a + b = a '+ b '
ab = 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
_

2 " 2 = 4 # 0 mentre 2 ! 2 = 4 = 0 in Z4 (e 2 ! 0 2 " 0 ).

1.1 Inversa di una classe di resto.


!
Abbiamo detto che la classe 1 , moltiplicata per ogni altra, la lascia invariata e si comporta quindi
come il numero 1. Un elemento di Zn pu quindi ammettere o no inverso. Ad esempio in Z5 la
classe 3 invertibile e ammette come inversa 2 , in quanto si ha: 2 ! 3 = 1 . Si provi invece che la
classe 2 in Z4 non ammette inversa.
Se n un numero primo ogni elemento non nullo ammette inverso. In effetti, sia a una classe di
resto non nulla; ci significa che un suo rappresentante a , che possiamo supporre essere un numero
2

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.

Il Piccolo Teorema di Fermat (dovuto al matematico francese Pierre Fermat 1601-1665)

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 .

In altre parole a p !1 ! 1 un multiplo di p.


Esempio: 310 = 1 modulo 11. In effetti si ha (modulo 11):

!
!

310 = 95 = 9 ! 812 = 9 ! 42 = 9 !16 = 9 ! 5 = 45 = 1 .


La dimostrazione si basa sul seguente ragionamento.
Consideriamo i numeri interi
a "1,a " 2,...,a "( p #1).
Non difficile vedere che si tratta di p numeri interi non solo diversi fra loro, ma anche non congrui
modulo p a due a due. Supponiamo infatti per assurdo che esistano tre numeri interi i, j, h tali che
axi " axj = hp . Possiamo supporre che si abbia j < i e riscrivere leguaglianza nella forma
a(i " j) = hp . Siccome il numero intero a non un multiplo di p e p primo, i ! j deve essere
multiplo di p. Ma i ! j un intero differenza di due interi compresi fra 1 e p ! 1 , quindi
anchesso un intero compreso fra 1 e p ! 1 , dunque non pu essere un multiplo di p. Ma se
a(i " j) = hp , uno dei due fattori, a ovvero i ! j , deve essere multiplo di p. Quindi siamo arrivati ad
un assurdo, i numeri i,j,h non possono esistere.
Poich i numeri a "1,a " 2,...,a "( p #1) non sono a due a due congrui modulo p, le loro classi modulo
p sono tutte distinte; trattandosi di p numeri tutti non multipli di p, le loro classi sono esattamente le
!

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

ovvero 1 " 2......( p ! 1) = 1 " 2......( p ! 1) " a


Ma 1 ! 2......( p " 1) invertibile, perch la classe di un
numero intero non multiplo di p; quindi si ottiene, semplificando (cio moltiplicando per linversa
della classe): 1 = a p !1 modulo p .
Applicazione. Si calcoli 475 modulo 5 . Si osservi che il calcolo si pu eseguire senza il teorema di
Fermat come segue: 475 = 1637 ! 4 modulo 5=137 ! 4 modulo 5=4 . Con il teorema di Fermat si pu
osservare che 75 = 4 !18 + 3 e quindi
475 modulo 5=(44 )18 ! 43 modulo 5=118 ! 42 ! 4 modulo 5=16 ! 4 modulo 5=1! 4=4 .

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

a "( p#q) = 1 modulo p " q .

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:

a " m1 ,...,a " m# .

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

(a ! " 1)(m1 ### mq ) = multiplo di p # q . !


!

!
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

4. Crittografia a chiave pubblica


Supponiamo di avere un messaggio scritto in lettere. Siccome oltre alle lettere minuscole che si
usano nella lingua italiana ci sono anche lettere come ad esempio x,y,w e tutte le maiuscole ed
inoltre occorrono gli spazi fra le parole, la punteggiatura, ecc., occorreranno ben pi delle nostre 21
lettere. Si tratta di un numero non meglio precisato N di simboli, ma si pu ragionevolmente
pensare che N = 256 copra abbondantemente tutte le esigenze.
Allora possiamo far corrispondere a ogni lettera, spaziatura, segno di punteggiatura, ecc. un intero
compreso fra 0 e N ! 1 = 255 . La corrispondenza, usata da tutti i computer, si chiama codice
ASCII, ed riportata nel successivo cap. 7. Ad esempio si vede che alla lettera a corrisponde il
numero 97, alla lettera b il numero 98, ecc.
Quindi un messaggio in lettere pu essere tradotto facilmente in una successione di numeri interi
compresi fra 0 e N ! 1 = 255 . Se viceversa abbiamo una successione di numeri interi, e conosciamo
la corrispondenza lettere-numeri, possiamo tornare alle lettere facilmente. Ha quindi perfettamente
senso occuparci di messaggi che sono successioni di numeri compresi fra 0 e N ! 1 = 255 .
Ci sono molti modi di mascherare un messaggio. Ad esempio un modo basato sulluso delle
matrici, ma questo modo, valido prima dellavvento dei computer, oggi obsoleto, perch con luso
di un computer possibile decodificarlo molto facilmente e in fretta.
Ma, oltre al requisito di essere difficilmente decifrabile da terzi, ne esiste anche un secondo che,
almeno per certi scambi di messaggi, utile sia posseduto da un sistema di codifica. Talvolta le
persone, o gli enti, che si scambiano messaggi, sono moltissimi e non possono comunicare
direttamente per scambiarsi le chiavi di codifica e decodifica. E allora possibile rendere pubbliche,
magari in una specie di guida telefonica, le chiavi di codifica di coloro che partecipano allo
scambio di messaggi? Naturalmente ci deve avvenire in modo che una terza persona non riesca lo
stesso a decodificare. Un sistema di questo tipo si chiama a chiave pubblica.
Un primo tentativo di rendere pi difficile la decodificazione basato sul Piccolo Teorema di
Fermat. Precisamente, se A deve ricevere messaggi, fissa un numero primo p, che rende pubblico.
A fissa poi un secondo numero e compreso fra 1 e p ! 1 ; la chiave pubblica per codificare sar per
A la copia ( p, e) . Chi deve inviare un messaggio ad A trasforma ogni numero m del suo messaggio
mediante la seguente formula: m ---> me modulo N. Chi riceve il messaggio pu ritrovare m
facilmente: basta che si procuri il numero d tale che ed = 1 modulo p ! 1 . In effetti si avr:
(me ) d = med = m modulo p per il Piccolo Teorema di Fermat. Bisogna naturalmente fare attenzione
a un particolare: occorre che si abbia m < N p. In questo caso un numero m < N potr in effetti
essere pensato come una classe di resto modulo p.
Tuttavia il problema della crittografia resta quello di poter comunicare in segreto senza che una
terza persona possa leggere i messaggi in chiaro. Se una terza persona sa che la chiave di A ( p, e) ,
basta che riesca a trovare il numero d tale ed = 1 modulo p ! 1 e che conosca il Piccolo Teorema di
Fermat. Si tratta di due informazioni facili da reperire; la seconda in particolare si ottiene in
pochissimo tempo anche se p molto grande, basta usare un computer.
Il punto che, fissati p ed e, basta percorrere tutti i prodotti ed fino a trovarne uno che sia congruo a
1 modulo p ! 1 .
La cosa diventa molto pi complicata, anche per un computer, se si usa il Teorema di Eulero. Se in
effetti A sceglie un numero n = p " q , prodotto di due primi distinti, e un numero e invertibile
modulo ( p ! 1)(q ! 1) , la ricerca di d tale che ed = 1 modulo ( p ! 1)(q ! 1) diventa estremamente
difficile se non si conoscono i due numeri p e q. La chiave pubblica di A sar quindi ( p " q , e) e chi
gli manda il messaggio m!(< p " q ) lo trasforma in me. Solo A sar in grado di ritrovare m come med,
semprech linformatica non migliori sensibilmente e non si costruiscano computer capaci di
trovare i due fattori di p " q , anche in presenza di numeri con molte decine di cifre.
!
!

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.

7. Tabella dei codici ASCII


La tabella che segue riporta i codici numerici (da 0 a 255) e i caratteri ad essi assegnati. Si vedono
le normali lettere dellalfabeto, maiuscole e minuscole, e vari simboli speciali.

8. Proposta per i docenti.


Questa proposta rivolta a docenti e studenti di scuole secondarie superiori. Gli autori suggeriscono
di procedere nel modo seguente.
10

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