RETI DI CALCOLATORI
Crittografia
La crittografia
La crittografia è la scienza che studia la
scrittura e la lettura di messaggi in
codice ed è il fondamento su cui si
basano i meccanismi di autenticazione,
integrità e segretezza.
2
La crittografia
L’autenticazione stabilisce al tempo
stesso l’identità del mittente e del
destinatario delle informazioni.
L’integrità garantisce che i dati non
siano stati alterati e la segretezza che
nessuno, al di fuori di mittente e
destinatario, sia in grado di
interpretarli.
3
La crittografia
Solitamente, i meccanismi crittografici
utilizzano sia un algoritmo sia un
valore segreto, detto chiave. In
genere, la struttura degli algoritmi è
pubblica; le chiavi, invece, vengono
mantenute segrete per ottenere la
sicurezza richiesta.
4
La crittografia
Il numero di bit necessari per garantire
la sicurezza crittografica non è facile
da determinare. Più è lungo lo spazio
di chiave (l’intervallo di possibili
valori), più diventa difficile forzare la
chiave con un attacco di forza bruta.
5
La crittografia
Un attacco di forza bruta è un tentativo
di arrivare alla chiave nel quale si
applicano all’algoritmo tutte le possibili
combinazioni di valori, finché non si
riesce a decifrare il messaggio.
6
La crittografia
Possibili combinazioni per gli attacchi di forza bruta
Lunghezza chiave (in bit)
Numero combinazioni possibili
40
240 = 1.099.511.627.776
56
256 = 7,205759403793 x 1016
64
264 = 1,844674407371 x 1019
112
2112 = 5,192296858535 x 1033
128
2128 = 3,402823669209 x 1038
7
La crittografia
In generale, si tendono a utilizzare chiavi
più lunghe possibile, per ridurre le
probabilità di forzatura. È comunque
necessario tener presente che più lunga
è la chiave, maggiori sono i costi in
termini di potenza di calcolo dei
processi di crittografia e decifrazione.
L’obiettivo è che la forzatura sia “più
costosa” del valore intrinseco delle
informazioni protette.
8
La crittografia
Le funzioni crittografiche per
l’autenticazione, l’integrità e la
segretezza dei dati sono tre:
• chiavi simmetriche;
• chiavi asimmetriche;
• funzioni hash non invertibili.
9
Crittografia a chiave
simmetrica
La crittografia simmetrica, altrimenti detta
crittografia a chiave segreta, utilizza
una chiave comune e il medesimo
algoritmo crittografico per la codifica e
la decodifica dei messaggi. In sostanza,
due utenti che desiderano comunicare
devono accordarsi su di un algoritmo e
su di una chiave comuni.
10
Crittografia a chiave
simmetrica
A
B
Chiave
Segreta
Codifica
Msg
Chiave
Segreta
Internet
Decodifica
Msg
11
Crittografia a chiave
simmetrica
Uno degli algoritmi più semplici è il
cifrario di Cesare, che sostituisce
ognuna delle lettere del messaggio
originale con la lettera dell’alfabeto
che si trova n posti più avanti
nell’alfabeto stesso.
Es. n=3
SCANO  VFDQR
12
Crittografia a chiave
simmetrica
Gli algoritmi di uso comune più difficili
da decifrare utilizzano uno sei seguenti
sistemi:
• DES (Data Encryption Standard);
• 3DES (Triple DES);
• RC-4 (Rivest Cipher 4);
• IDEA (International Data Encryption
Algorithm).
13
DES
Il DES è uno schema crittografico
operante su blocchi di 64 bit e utilizza
una serie di fasi per trasformare 64 bit
di input in 64 bit di output. Nella sua
forma standard, l’algoritmo utilizza
chiavi a 64 bit, 56 dei quali scelti a
caso. Gli altri 8 bit sono bit di parità.
14
3DES
3DES è una versione alternativa di DES.
Tale sistema, che può utilizzare una,
due o tre chiavi diverse, prende un
blocco di 64 bit e vi applica operazioni
di codifica, decodifica e ricodifica.
15
RC-4
RC-4 è un algoritmo privato, inventato
da Ron Rivest e commercializzato da
RSA Data Security. Viene solitamente
utilizzato con una chiave a 128 bit, ma
le dimensioni della chiave sono
variabili.
16
IDEA
Il sistema IDEA, realizzato come
alternativa a DES, opera sempre su
blocchi di 64 bit, ma utilizza una
chiave di 128 bit. Si tratta di un
algoritmo brevettato ed è utilizzabile
per usi commerciali solo su licenza.
17
Crittografia a chiave
simmetrica
La crittografia a chiave segreta viene
sostanzialmente utilizzata per
garantire la segretezza dei dati, in
quanto gran parte degli algoritmi
simmetrici sono stati progettati per
essere applicati all’hardware e sono
stati ottimizzati per la codifica di
grandi masse di dati.
18
Crittografia a chiave
simmetrica
I punti critici dei sistemi a chiave segreta
sono i seguenti:
• necessità di cambiare frequentemente le
chiavi segrete per evitare il rischio che
vengano scoperte;
• sicurezza nella generazione delle chiavi
segrete;
• sicurezza nella distribuzione delle chiavi
segrete.
19
Crittografia asimmetrica
La crittografia asimmetrica viene spesso
definita come crittografia a chiave
pubblica e può utilizzare lo stesso
algoritmo, oppure algoritmi diversi ma
complementari, per codificare e
decodificare i dati. Sono necessari due
valori diversi, ma correlati, per la chiave:
una chiave pubblica e una privata.
20
Crittografia asimmetrica
Per comunicare utilizzando la crittografia a
chiave pubblica, A e B necessitano di
una coppia chiave pubblica – chiave
privata. Ognuno dei due deve creare la
propria coppia di chiavi. Nelle
comunicazioni fra loro, A e B utilizzano
chiavi diverse per codificare e
decodificare i dati.
21
Crittografia asimmetrica
Pub
Pub
Pri
Pri
1
1
Pub
A
B
2
Pub
1
Crea una coppia chiave privata - chiave pubblica
2
Scambia solo chiavi pubbliche
22
Crittografia asimmetrica
Alcuni degli utilizzi più comuni per gli
algoritmi a chiave pubblica
comprendono:
• l’integrità dei dati;
• la segretezza dei dati;
• l’accettazione del mittente;
• l’autenticazione del mittente.
23
Crittografia asimmetrica
Perché avvenga uno scambio di dati
segreto, debbono verificarsi le
seguenti condizioni:
1. A e B creano le proprie coppie di chiavi
pubbliche e private;
2. A e B si scambiano le chiavi pubbliche;
3. A scrive a B e codifica il messaggio
utilizzando la chiave pubblica di B
prima di trasmetterlo via Internet;
24
Crittografia asimmetrica
4.
5.
6.
B utilizza la propria chiave privata
per decifrare il messaggio;
B risponde, codifica il messaggio
utilizzando la chiave pubblica di A e
lo trasmette via Internet;
A utilizza la propria chiave privata
per decifrare il messaggio.
25
Crittografia asimmetrica
Come garantire l’integrità e la segretezza dei dati con la crittografia a chiave pubblica
1
Pub
Coppia chiave pub. – chiave priv.
Coppia chiave pub. – chiave priv.
Pri
Pub
Pri
2
A
1
Chiave pub. di B
Chiave pub. di A
B
Internet
3
4
Codifica
Decodifica
Chiave pub. di B
Chiave priv. di B
Messaggio
originale
6
Risposta di
Alessandro
Messaggio
originale
Messaggio
codificato
5
Decodifica
Codifica
Chiave priv. di A
Chiave pub. di A
Messaggio
codificato
26
Risposta di
Alessandro
Crittografia asimmetrica
La segretezza è garantita nel momento
che A trasmette il messaggio originale,
in quanto solo B può decodificarlo con
la propria chiave privata. Allo stesso
tempo, viene assicurata anche
l’integrità dei dati, perché il messaggio
non può essere modificato se non con
la chiave privata di B. Lo stesso vale
per la risposta, in quanto solo A ha
accesso alla propria chiave privata.
27
Crittografia asimmetrica
Il punto debole di questo meccanismo sta
nel fatto che chiunque può far finta di
essere A e trasmettere a B un
messaggio in codice, utilizzando la
chiave pubblica di B, la quale, in
effetti, è pubblicamente disponibile.
28
Crittografia asimmetrica
Perché lo scambio sia autenticato,
debbono verificarsi le seguenti
condizioni:
1. A e B creano le proprie coppie chiave
pubblica – chiave privata;
2. A e B si scambiano le chiavi pubbliche;
3. A scrive a B, codificando il messaggio
con la propria chiave privata, e
trasmette i dati in codice via Internet;
29
Crittografia asimmetrica
4.
5.
6.
B utilizza la chiave pubblica di A per
decifrare il messaggio;
B risponde, codifica il messaggio con
la propria chiave privata e trasmette i
dati in codice ad A via Internet;
A decifra il messaggio con la chiave
pubblica di B.
30
Crittografia asimmetrica
Per garantire, con il sistema della chiave
pubblica, l’autenticità degli scambi, oltre
all’integrità e alla segretezza dei dati, è
necessario introdurre la doppia crittografia.
Per prima cosa, A codifica il messaggio a B
con la chiave pubblica di B; quindi ricodifica
il messaggio con la propria chiave privata. Il
messaggio potrebbe essere decodificato da
chiunque, ma solo B può decodificare il
secondo con la propria chiave privata.
31
Crittografia asimmetrica
Per i loro limiti di prestazioni, gli algoritmi
crittografici a chiave pubblica non sono
solitamente utilizzati per garantire la
segretezza, ma si rivelano particolarmente
utili per le applicazioni che richiedono una
forma di autenticazione attraverso firme
digitali e gestione delle chiavi. Tra i più
comuni, si segnalano gli algoritmi di Ron
Rivest, di Adi Shamir e di Leonard Adleman
(RSA) e quello di El Gamal.
32
Funzioni hash
Una funzione hash trasforma un
messaggio di lunghezza arbitraria in
output di lunghezza fissa (chiamato
hash o digest del messaggio
originale).
33
Funzioni hash
Per soddisfare le condizioni di sicurezza
stabilite per le funzioni hash, gli
algoritmi devono avere le seguenti
proprietà:
•
devono essere coerenti (a input uguali
corrispondono output uguali);
•
devono essere casuali, o apparire tali,
per impedire l’interpretazione
accidentale del messaggio originale;
34
Funzioni hash
•
•
devono essere univoci (la probabilità
che due messaggi generino il
medesimo hash deve essere
virtualmente nulla);
devono essere non invertibili (risalire
al messaggio originale dall’output deve
essere impossibile).
35
Funzioni hash
Le funzioni hash non invertibili vengono
normalmente utilizzate per assegnare
un’impronta digitale a un messaggio o
a un file. Come le impronte dei
polpastrelli, un’impronta hash è
univoca e costituisce una prova
dell’integrità e dell’autenticità del
messaggio.
36
Funzioni hash
Esemplificando, se A e B vogliono
accertarsi che nessuno sia intervenuto
sul contenuto del messaggio in fase di
transizione utilizzano proprio una
funzione hash non invertibile.
37
Funzioni hash
Per garantire l’integrità dei dati trasferiti
fra A e B, devono verificarsi le
seguenti condizioni:
1. A scrive un messaggio e ne utilizza il
testo come input di una funzione hash
non invertibile;
2. il risultato della funzione hash viene
accodato al messaggio e ne costituisce
l’impronta digitale;
38
Funzioni hash
3.
4.
B separa il messaggio dall’impronta e
utilizza il testo del messaggio come
input della medesima funzione hash
utilizzata da A;
se i due hash corrispondono, B è certo
che nessun altro sia intervenuto sul
messaggio.
39
Funzioni hash
A
Msg
B
1
3
Impronta
Impronta
Impronta
2
4
Impronta
40
Funzioni hash
Il problema, in questo caso, è che non c’è
modo di proteggere l’impronta da
eventuali intrusi. È possibile infatti che
qualcuno interferisca, impersonando il
mittente o il destinatario delle
comunicazioni sicure. Pertanto, per
essere utilizzate in maniera sicura, le
funzioni hash vanno combinate con
sistemi a chiave pubblica per
l’assegnazione di firme digitali.
41
Funzioni hash
Tra le funzioni hash più comuni, si
segnalano:
•
l’algoritmo MD4 (Message Digest 4);
•
l’algoritmo MD5 (Message Digest 5);
•
l’algoritmo SHA (Secure Hash
Algorithm).
42
Funzioni hash
Gli algoritmi MD4 e MD5 sono stati
elaborati da Ron Rivest per il MIT
(Massachusetts Institute of
Technology), mentre l’algoritmo SHA è
stato sviluppato dal NIST (National
Institute of Standards and
Technology).
43
Funzioni hash
Gli attuali prodotti per la sicurezza
utilizzano principalmente algoritmi
MD5 e SHA, entrambi basati sul
sistema MD4. MD5 elabora l’input a
blocchi di 512 bit e produce un digest
di 128 bit. SHA elabora blocchi di 512
bit e produce un digest di 160 bit. SHA
richiede un maggiore lavoro da parte
del processore ed è leggermente più
lento di MD5.
44
Firme digitali
Una firma digitale è un digest in codice
che viene utilizzato per comprovare
l’identità del mittente e l’integrità del
documento. Le firme digitali si basano
su di una combinazione di tecniche
crittografiche a chiave pubblica e
funzioni hash non invertibili.
45
Firme digitali
Perché B possa creare una firma digitale,
si devono verificare le seguenti
condizioni:
1. B crea una coppia chiave privata –
chiave pubblica;
2. B dà ad A la propria chiave pubblica;
46
Firme digitali
Creazione di una firma digitale 1
Pub
Pri
1
Pub
B
A
2
1
Il mittente crea una coppia chiave privata - chiave pubblica
2
Il mittente invia la chiave pubblica al ricevente
47
Firme digitali
B scrive un messaggio, che utilizza
come input per una funzione hash non
invertibile;
4. B codifica l’output dell’algoritmo hash, il
digest del messaggio, con la propria
chiave privata, ottenendo così la firma
digitale.
Il messaggio che B trasmette ad A è
l’insieme del documento e della firma
digitale.
3.
48
Firme digitali
Creazione di una firma digitale 2
Msg
Il messaggio originale è l’input di
una funzione hash non invertibile
006FBBC95
Codifica
FIRMA
L’output è l’hash del messaggio
L’hash viene codificato con la chiave
privata del mittente
La firma digitale
è l’hash crittografato
49
Firme digitali
Per il destinatario, le operazioni da
svolgere per verificare il messaggio e
la firma digitale sono le seguenti:
1. A separa il messaggio ricevuto in
documento originale e firma digitale;
2. A utilizza la chiave pubblica di B per
decifrare la firma digitale e ottenere il
sunto del messaggio originale;
50
Firme digitali
A utilizza il documento originale come
input della medesima funzione hash
utilizzata da B per ottenere il digest
del messaggio;
4. A controlla che i digest del messaggio
siano uguali.
Se tutto quadra, sono comprovate sia
l’integrità del documento, sia
l’autenticità del mittente.
3.
51
Firme digitali
Msg
FIRMA
Decodifica
006FBBC95
Msg
FIRMA
Il ricevente separa
messaggio e firma
Decodifica firma con
chiave pubblica mittente
Il risultato è
l’hash crittografato
Il risultato è l’hash
del messaggio
Il messaggio
originale è l’input
di una funzione
hash non
invertibile
006FBBC95
52
Firme digitali
Lo scambio iniziale di chiavi deve avvenire
in modo tale da garantire la sicurezza.
È questa la ragione fondamentale
dell’esistenza di certificati digitali.
53
Firme digitali
Un certificato digitale è un messaggio con
firma digitale che contiene la chiave
privata di un terzo di fiducia, il quale
dichiara che una determinata chiave
pubblica appartiene a una certa persona
o entità e ne garantisce nome e
caratteristiche. Se lo scambio iniziale
non avviene nell’ambito di una relazione
di fiducia, chiunque può simulare di
essere una determinata entità.
54