Professional Documents
Culture Documents
LEZIONE 5
CRITTOGRAFIA ASIMMETRICA
(O A CHIAVE PUBBLICA)
IN Q U E S T A U N I T I M P A R E R E M O . . .
Generalit
La crittografia simmetrica a chiave privata non i l metodo crittografico ideale per le comunicazioni
e le transazioni su Internet: il limite fondamentale rappresentato dalla necessit di un canale sicuro e di un accordo preventivo per lo scambio delle chiavi e questo non funzionale nei casi i n cui
necessario stabilire connessioni sicure estemporanee.
"La crittografia a chiave pubblica nacque nel maggio del 1975, come conseguenza di due problemi... il problema della distribuzione delle chiavi e quello delle firme elettroniche... La scoperta
non consisteva in una soluzione, ma nel capire che i due problemi, ognuno dei quali sembrane
irrisolvibile per definizione, poteva essere risolto e che la soluzione di entrambi scaturiva da un
solo metodo".
Whitfield Diffie, New directions in Criptograjy, 1976
(L'articolo completo scaricabile dalla cartella materiali all'indirizzo www.hoepliscuola.it nella sezione dedicata a questo volume).
L'idea alla base delle crittografia asimmetrica quello di avere due chiavi diverse, una pubblica per
la criptazione e una privata per la decriptazione, che deve essere mantenuta segreta.
In questo caso non necessario lo scambio delle chiavi, che per la maggior parte saranno pubbliche
ESEMPIO
Vediamo i l funzionamento mediante u n esempio che pone sul messaggio "fisicamente" una chiave
mediante un lucchetto:
D Anna manda a l>runo i l messaggio i n una scatola chiusa con un suo lucchetto A: n Bruno n gli
intrusi possono aprirlo;
48
Lezione 5
rimo lo rispedisce ad Anna aggiungendo un suo lucchetto B: nessuno ora i n grado di aprirlo;
H Anna toglie i l suo lucchetto e rimanda i l pacco a lruno, che ora ha solo i l suo lucchetto e che
alla sua ricezione p u aprirlo e leggere i l messaggio.
in questo caso p e r i l messaggio deve essere trasmesso tre volte con enorme dispendio di risorse:
mi' idea migliore quella descritta di seguito, dove viene inviato i l "lucchetto" e non i l messaggio:
D
runo manda ad Anna i l proprio lucchetto aperto e questa lo conserva fino a che ha necessit di
spedire qualcosa a runo;
:
aldo Anna deve spedire un messaggio a lruno, lo chiude con i l suo lucchetto e glielo invia:
za i l triplo invio del messaggio ci siamo riportati nella situazione descritta i n precedenza.
j>ura del lucchetto viene effettuata con una specifica chiave pubblica che ciascun utente mette
fisposizione di tutti gli altri utenti che necessitano di tramettergli messaggi: la chiave privata i n ^greta. i n possesso a ogni utente, che la utilizza per "aprire" i l lucchetto e leggere i l messaggio.
! Formalmente necessario trovare una funzione ("il lucchetto") la cui trasmissione su canali
| insicuri non comprometta l'algoritmo, che sia facile da applicare (parte pubblica che chiude \
erto) ma difficile da invertire (parte
che
1 lucchetto).
1
49
Numero di chiavi in un
sistema a chiave pubblica
20
200
2.000
20.000
200.000
2.000.000
Numero di chiavi in un
sistema a chiave privata
45
4.950
499.500
49.995.000
4.999.950.000
499.999.500.000
Naturalmente le due chiavi devono essere tra loro indipendenti, in modo che dalla prima non
possa i n nessun modo ricavare la seconda.
Con la crittografia asimmetrica:
> si risolve i l problema della riservatezza: criptando i l messaggio con la chiave pubblica solo i l possessore della chiave privata i n grado di decriptarlo;
I si risolve i l problema della autenticit del mittente: criptando i l messaggio con la chiave priva:solo con la corrispettiva chiave pubblica questo p u essere decriptato e la chiave pubblica conservata in registri consultabili ma gestiti in modo sicuro dove a ogni chiave pubblica associata
l'identit certa del proprietario.
Abbiamo quindi due modalit di funzionamento:
modalit confidenziale: sono garantite la riservatezza
e l'integrit del messaggio;
Chiave pubblica
File
originale
Chiave privata
File
crittato
Chiave privata
File
originale
Crypto
File
crittato
Decrypto
File
origina e
Lezione 5
ESEMPIO
tnismo di funzionamento i l seguente:
[indichiamo gli utenti con le loro iniziali A, B, C,... e ogni utente ha una copia di chiavi:
chiave pubblica per la cifratura (Encrypt), cio EA la chiave pubblica di A, ecc.;
i : chiave privata per la decifratura (Decrypt), cio DA la chiave privata di A, ecc.
quindi presenti due insiemi di chiavi: per la funzione di codifica EA, EB, EC,...che sono rese
pubbliche e DA, DB, DC, ... con funzione segreta di decodifica, una per ogni utente.
^ p o n i a m o che l'utente A voglia inviare un testo in chiaro T all'utente B: questo viene diviso i n
tocchi e ogni blocco viene trasformato i n un numero M che lo rappresenta esattamente; quindi i l
- ma si riduce a dover cifrare i numeri M e successivamente a inviarli a B.
io cifrato per l'utente B: (EB(M))
ma ricezione l'utente B applica la sua chiave privata ed effettua la decodifica del messaggio cifrato:
0 decifrato dall"utente B: DB(EB(M)) = M
Chiave di decifratura
Testo in chiaro
Chiave di cifratura
DB (EB(M) ) = M
tre parole la funzione di decodifica D l'inverso della funzione di codifica E che per
non deve essere deducibile da essa: la ricerca di una funzione con tali caratteristiche stata
ande sfida per i crittografi degli anni 7 0 e un passo notevole fu fatto dai matematici
tellman, che nel 1976 progettarono un algoritmo basato sulla aritmetica modulare
r-nicolare sul logaritmo discreto) in grado di permettere lo scambio delle chiavi su un casicuro, di notevole importanza per pi per la crittografia simmetrica che per quella
-. : rica. Fu comunque da stimolo per la ricerca in campo crittografico.
esibile ottenere contemporaneamente sia la riservatezza della comunicazione che Faune combinando assieme le due modalit di funzionamento. Per fare questo necessario
contemporaneamente entrambe le coppie di chiavi:
cifra i l messaggio con la chiave pubblica
uindi solo Bruno lo p u leggere;
j
"
q
P
rancamente firma il messaggio con la
|
elettronica sul messaggio",
chiave privata: alla sua ricezione Bruno,
d o che i l mittente del messaggio Anna, prova a decriptarlo con la chiave pubblica di Anna
11 riesce, p u autenticare Anna come mittente, dato che solo chi in possesso della chiave
m i ha p< ituto cifrare il messaggio.
S i
d i c e
n a
u i n d i
o s t o
l a
s u a
f i r m a
51
Inoltre i l messaggio anche cifrato con la chiave pubblica di Bruno e quindi la trasmissione risulti
inviolabile da chi non i n possesso delle chiave privata che solo Bruno detiene: quindi garantita
anche la riservatezza.
Se i l messaggio prima di essere cifrato viene anche elaborato generando u n hash che viene trasmesso con esso, alla sua ricezione la verifica dell'hash ci permette di scoprire se integro oppure se
stato modificato.
Il principale svantaggio degli algoritmi a crittografia asimmetrica sta nella complessit dei calcoli
che rendono poco efficiente la loro implementazione soprattutto con l'aumentare della lunghezza
della chiave: gli algoritmi simmetrici e quelli asimmetrici necessitano di chiavi di lunghezze differenti per raggiungere i l medesimo grado di sicurezza teorica con lunghezze "sfavorevoli" per gli
algoritmi asimmetrici, come si p u vedere dalla seguente tabella:
Simmetrica
56
64
80
112
128
Asimmetrica
384
512
768
1792
2304
Nel corso degli anni le raccomandazioni sulla lunghezza della chiave sono mutate, dato che la
maggior potenza di calcolo riesce pi facilmente a violare i codici criptati: la seguente tabella
ne riporta le indicazioni a seconda degli utilizzatori:
Anno
1995
2000
2005
2010
2015
Privato
768
1024
1280
1280
1536
Azienda
1280
1280
1536
1536
2048
Governo
1536
1536
2048
2048
2048
L'idea che sembra essere la migliore quella di prendere i n blocco il messaggio e di crittografarlo i n
una sola volta: questa strada per non sempre percorribile i n quanto con chiavi lunghe i l sistema
diventerebbe troppo lento, anche con file di dimensioni modeste (qualche Kbyte).
52
La soluzione quella di cercare di ottenere dal messaggio originale una sequenza di numeri (chiamata impronta o fingerprint o digest) pi corta del messaggio stesso che sia unica, cio che non
consenta la generazione di altre sequenze identiche che possano essere interpretate come un messaggio diverso da quello che si vuole spedire.
A tale scopo vengono i n aiuto le funzioni di hash, utilizzate nei sistemi MD4 e MD5 descritti i n
seguito.
RSA
L'algoritmo RSA stato descritto nel 1977 da Ronald Rivest, Adi Shamir e Lonard Adleman al MIT
e fa brevettato nel 1983 negli Stati Uniti dal MIT (brevetto 4.405.829 scaduto nel settembre 2000).
Abbiamo detto che i l cuore della crittografia asimmetrica una funzione facile da computare ma
faincile da invertire, a meno di non conoscere un particolare dato (la chiave): l'algoritmo RSA "lavora" sfruttando i numeri primi e come chiave utilizza un numero n ottenuto proprio dal prodotto
t due numeri p r i m i p e q, cio n = p q.
z
C e attuale utilizzo quello di sfruttare RSA per codificare u n unico messaggio contenente una chia_reta, tale chiave verr poi utilizzata per scambiarsi messaggi tramite un algoritmo a chiave
r e t a (ad esempio AES).
Oggi RSA uno degli algoritmi pi usati per la cifratura di firme digitali, come descritto nella
prossima lezione.
010010101000100
010101010101010
010010101110101
101000010111100
100101010101101
101010101010101
101010101010101
010010101000001
Crittografia RSA
con chiave A
xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx
Decrittografia RSA
con chiave A
101010010101000100
101010101010101010
101010010101110101
010101000010111100
010100101010101101
010101010101010101
010101010101010101
001010010101000001
Descrizione dell'algoritmo
Il funzionamento dell'algoritmo RSA i l seguente:
D A deve spedire un messaggio segreto a B;
B sceglie due numeri primi molto grandi e l i moltiplica tra loro (generazione delle chiavi);
0 B invia ad A " i n chiaro" i l numero che ha ottenuto;
A usa questo numero per crittografare i l messaggio;
H A manda i l messaggio a B, che chiunque p u vedere ma non leggere;
B riceve i l messaggio e utilizzando i due fattori p r i m i , che solo lui conosce, decifra il messaggio.
Possiamo scomporlo i n due componenti
principali:
> la generazione delle chiavi;
1 l'algoritmo crittografico vero e proprio.
Generazione delle chiavi
Il primo passo dell'algoritmo di generazione delle chiavi quello di scegliere due numeri primi p e
q e di calcolare i l loro prodotto n = p q.
Quindi viene scelto un numero e, coprimo e pi piccolo di (p - l ) ( q - 1) (chiamato esponente
pubblico).
NUMERO COPRIMO
Un numero a coprimo di b se il massimo comune divisore tra a e b 1.
A d esempio 5 e 13 sono coprimi, mentre 6 e 14 no, dato che hanno in comune il divisore 2.
Se un numero a primo, allora coprimo di qualsiasi numero che non sia diviso da
Ad esempio 11 coprimo di tutti i numeri che non sono multipli di 11.
L'algoritmo di Euclide per i l calcolo del MCD letto "al contrario" consente di esprimere i l numero
MCD(a,b) come combinazione lineare di a e b: permette di trovare due numeri interi r e s tali che
ra + sb = MCD (a,b)
Questa relazione, con semplici passaggi, ci permette di ottenere la seguente espressione che alla
base dell'algoritmo RSA:
d e = 1 mod m
e lo verifichiamo mediante i l seguente esempio numerico.
ESEMPIO
Calcoliamo MCD(1789,1234) utilizzando l'algoritmo di Euclide (risulta MCD(1789, 1234) = 1) evidenziando i diversi quozienti ottenuti durante i vari passaggi.
X
1
li
1789
1234
555
124
59
A partire dal MCD possiamo esprimere ciascun x. come combinazione lineare di x. e x. ( i n grassetto i coefficienti della combinazione lineare):
2
1 = 6 - ( l 5)
5 = 59 - ( 9 6)
6 = 124 - (2 59)
59 = 555 - (4 124)
124 = 1234 - (2 555)
555 = 1789 - (1 1234)
54
Ora, sostituendo nella prima uguaglianza il risultato della seconda, della terza, e cos via, otteniamo:
1 = 6 - ( 1 5)
= 6 - 1 (59 - 9 6) = - ( 1 59) + (10 6)
= - 1 59 + 10 (124 - 2 59) = (10 124) - ( 2 1 59)
= 10 (124 - 2 1 (555 - 4 124) = ( - 2 1 555) + (94 124)
= - 2 1 555 + 94 (1234 - 2 555) = (94 1234) - (209 555)
= 94 1234 - 209 (1789 - 1 1234) = ( - 2 0 9 1789) + (303 1234)
Dunque:
- 2 0 9 1789 + 303 1234 = 1
cio:
303 1234 = 1 - 209 1789
e nella sua forma pi generale: 303 1234 = 1 + k(1789)
che p u essere scritta utilizzando l'operatore m o d nella seguente espressione:
303 1234 = 1 m o d 1789
: EMPIO
d i a m o ad esempio come numeri RSA p = 3, q = 11.
Isoliamo
n = p q = 33 e (p - l ) ( q - 1) = 2 10 = 20
numero coprimo minore di 20 scegliamo e = 7 e da questo individuiamo d tale che:
d e = 1 mod (p - l ) ( q - 1)
botare d si p u utilizzare quello che chiamato metodo di Euclide esteso oppure andare per
ri sostituendo u n numero intero k nella seguente relazione, ottenuta dalla formula precedencendo da 1 e facendolo crescere fino a che si ottiene un numero intero:
caso viene subito soddisfatta per k = 1:
_(fe-20) +l _ ( l - 2 0 ) + l _ 2 1 _
7
pubblica (7,33);
:- r : - , =: (3.33).
* Prova adesso!
Individua chiave pubblica e privata partendo sempre dai numeri RSA p = 3, q = 11 ma scegliendo come numero coprimo minore di 20 e = 5.
Quindi individua chiave pubblica e privata partendo dai numeri RSA p = 5, q = 11 e scegliendo lo stesso numero coprimo e = 3 dell'esempio precedente.
Non possibile risalire facilmente dalla chiave pubblica a quella privata (e viceversa), in quanto servirebbe conoscere il numero (p - 1)(q - 1), e questo implica fattorizzare n nei suoi fattori
I p e q che un problema computabilmente difficile.
Zoom su...
F U N Z I O N E DI E U L E R O E P I C C O L O T E O R E M A DI F E R M A T
Chi volesse approfondire la teoria matematica che alla base di questo metodo si guard
funzione di Eulero e il piccolo teorema di Fermat.
'
. mi. 1 1 li m il ...lui!
ii i i M i
in
Algoritmo crittografico
Cifratura del messaggio da parte del mittente
Il messaggio m che deve essere trasmesso viene innanzi tutto espresso in forma di numero e de\
essere minore di n: questo p u anche essere ottenuto suddividendolo i n blocchi.
Il crittogramma c viene codificato calcolando come e = m mod n (c risulta minore di n).
Dati
in chiaro
Utente A
I-
Utente B
: EMPIO
ndo trasmettere i l messaggio m = 9 con le chiavi precedenti, pubblica (7,33) e privata (3, 33),
idei
eniamo:
c =m
= 9 = 4.782.969 = 15(mod33)
7
cilrato
Dati
in chiaro
Dati
in chiaro
M=C
u , e n t e
mod n utente B
~Chiavj
SbblicT
utente_
Chiave privata
^utente A
Ch ave privata
Chiave pubblica
utente B "utente B
Chiave pubblica
e
^utente B
utente B "utente B
Utente B
Utente A
15 = 3365 = 9(mod33)
Tempo richiesto
Tempo richiesto
(bit)
a 1 decr/ms
a 10 decr/ms
55
128
127
ms ~ IO - anni
168
1 6 7
ms ~ 1 0 anni
56
ms = 1142 anni
2
10 ore
~ 10 anni
l8
36
~ 1 0 anni
30
o a debolezza) dell'algoritmo sta proprio qui, dato che si basa sull'assunzione mai
ta (nota come assunzione 'SA, o RSA assumption) che il problema di calcolare un nu-Dosto di cui non si conoscono i fattori sia computazionalmente non trattabile.
57
Crittografa ibrida
L'introduzione dei metodi a chiave pubblica come RSA ha risolto brillantemente i l grande proble
dello scambio della chiave: rimane comunque aperto i l problema di dover gestire le chiavi pubbliche
e quindi necessario un sistema di PKI (Public Key Infrastructure) che si occupi della gestione I
dello scambio delle chiavi.
PKI
Una Public Key Infrastructure (infrastruttura a chiave pubblica) un'infrastruttura informatica costituita da applicazioni che utilizzano tecniche crittografiche a chiavi asimmetriche (pubblica e privata) e che consentono a terze parti fidate di verificare e/o farsi garanti dell'identit di un utente, oltre che di associare una chiave pubblica a un utente.
Una infrastruttura di questo tipo include servizi di generazione e distribuzione di chiavi, di emissione e pubblicazione di certificati, di gestione dei registri dei certificati emessi e delle liste di
sospensione e revoca, oltre ad altri servizi come la marcatura temporale.
Quindi le chiavi e i rispettivi proprietari sono associati i n registri gestiti da un PKI, che p u essere
considerato come un "elenco telefonico" delle chiavi pubbliche.
Ma anche se la crittografia asimmetrica stata una brillante intuizione le funzioni matematiche che
generano i l codice cifrato e quelle inverse per decifrarlo sono troppo lente per essere utilizzate nella
cifratura di interi documenti, anche non di modeste dimensioni.
Sono nati sistemi di crittografia misti (o ibridi) che uniscono le due tecniche allo scopo di unirne i
vantaggi.
Crittografia simmetrica
Crittografia asimmetrica
In un sistema ibrido utilizziamo la chiave pubblica soltanto per comunicare la chiave segreta (che
in questi casi viene chiamata chiave di sessione) che poi verr usata per una normale comunicazione basata su cifrati a chiave segreta.
Lezione 5
Zos facendo non ci sono problemi di sicurezza in quanto la chiave che viene trasferita di
~ : d e s t e dimensioni, inoltre trasmessa una sola volta e, quando stata ricevuta, pu innescare un sistema di cifratura simmetrico tra i due interlocutori.
tarno nel dettaglio i l funzionamento dove A e B devono comunicare i n modo sicuro e veloce:
r redispone una chiave che verr successivamente utilizzata per la cifratura simmetrica ( chiare di sessione);
B A utilizza la chiave pubblica di B per cifrare la chiave di sessione;
U
iccit'ra la chiave di sessione con la propria chiave segreta.
%4*
Decifra la chiave
di sessione
Chiave privata
di Bruno
I - a v e di sessione
Chiave di sessione
59