You are on page 1of 12

2

Tecniche crittografiche per la protezione dei dati

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

il meccanismo a chiave pubblica


l'algoritmo RSA
la crittografia ibrida

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

Crittografia asimmetrica (o a chiave pubblica)

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

Tecniche crittografiche per la protezione dei dati

Questo meccanismo implementato negli algoritmi di crittografa simmetrica, come ad esem


nell'algoritmo RSA (dal nome dei suoi creatori Rivest, Shamir e Adleman) descritto i n seguito.
Per ogni mittente necessaria una chiave pubblica e una chiave privata, quindi in totale per i
utenti sono necessarie
chiavi contro le [n(n-1)]/2 necessarie per i sistemi a chiave privata.
Numero di utenti
10
100
1.000
10.000
100.000
1.000.000

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

modalit autenticazione: garantisce l'integrit e i l non


ripudio ma non viene garantita la riservatezza ( i l mittente ha posto la sua firma
elettronica sul messaggio).

Chiave privata

File
crittato

Chiave privata

File
originale

Crypto

File
crittato

Decrypto

File
origina e

Crittografia asimmetrica (o a chiave pubblica)

Lezione 5

possibile autenticare oltre al mittente anche il contenuto del messaggio, generando un


"hashing" dello stesso e aggiungendolo in fondo al messaggio: nel caso in cui ci fosse un'alterazione durante la trasmissione, alla decodifica l'hash sarebbe diverso e quindi il destinatario pu accorgersi della anomalia.

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

Crittografia asimmetrica (o a chiave pubblica)

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

ar decrittare un messaggio cifrato con


necessario decomporre la chiave n nei due nuI meri primi p e q: questo computazionalmente impegnativo da ottenere, basti pensare che
I nel 2005 un gruppo di ricerca riusc a scomporre un numero di 640 bit in due numeri primi da
223 bit impiegando per cinque mesi un cluster Opteron con 80 processori da 2,2 GHz.

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

Tecniche crittografiche per la protezione dei dati

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

Crittografia asimmetrica (o a chiave pubblica)

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

A partire da n = p q e dalla relazione ottenuta dall'algoritmo di Euclide l'algoritmo RSA procede


calcolando u n numero d (chiamato esponente privato) tale che:
d e = 1 mod (p - l ) ( q - 1)
Da questa espressione si ottiene:
I la chiave pubblica composta dalla coppia (e, n);
i la chiave privata composta dalla coppia (d, n).
NUMERI RSA
I numeri p e q tali che n = p q e che generano le coppie (e, n) e (d, n) sono conosciuti
come numeri RSA.

: 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).

Tecniche crittografiche per la protezione dei dati

* 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

Decifrazione del messaggio da parte del destinatario


messaggio m che giunge al destinatario viene decodificato calcolando c mod 11
d

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

come chiave privata (33, 7), otteniamo:


3

15 = 3365 = 9(mod33)

barino impiegato pochi secondi a cifrare e decifrare, ma chiunque avesse intercettato


i comunicazioni impiegherebbe milioni di anni per scoprire i due fattori primi con cui
~ essaggio.
nghezza chiave

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

Tecniche crittografiche per la protezione dei dati

I metodi crittografici a chiave pubblica/privata


come RSA possono inoltre essere impiegati
per firmare digitalmente un messaggio garantendo con validit legale:
l'autenticit della firma;
> la N O N falsificabilit della firma;
I la N O N riutilizzabilit della firma;
t la N O N alterabilit del messaggio firmato;
t la N O N ripudiabilit della firma.

In realt questo sistema non cos semplice


come ora descritto i n quanto per trasnic
re grandi q u a n t i t di dati occorre tanto tempo: verr quindi utilizzato i n un altro modo,
ad esempio A e B si scambieranno con i
sto sistema una chiave segreta (che non occupa molto spazio), che poi useranno per
comunicare tra loro usando un sistema a
crittografa simmetrica, pi semplice, sicuro e veloce (crittografia ibrida).

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

Pro: molto veloce

Pro: non serve un canale sicuro per


lo scambio delle chiavi

Contro: problema dello scambio


delle chiavi

Pro: molto lenta, a causa dei calcoli


complessi da effettuare

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.

Crittografia asimmetrica (o a chiave pubblica)

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

A e B possono comunicare utilizzando la chiave di sessione per cifrare e decrittare i messaggi


in un sistema simmetrico.

I - a v e di sessione

Chiave di sessione

59

You might also like