Crittografia: Seconda parte

Transcript

Crittografia: Seconda parte
Distribuzione delle
chiavi pubbliche
Gestione delle chiavi
• Distribuzione delle chiavi pubbliche
• Uso dei protocolli a chiave pubblica
per distribuire chiavi segrete
•
•
•
•
Annuncio pubblico
Elenco pubblico
Autorità di distribuzione
Certificati
Annuncio pubblico
• L’utente rende di pubblico dominio la
propria chiave pubblica
Kp
Utente A
ub
A
K pub A
Kp
ub
A
• Pubblicazione chiavi:
– Tutti possono pubblicare la propria chiave
Kp
• Accesso:
– Tutti possono accedere alle chiavi degli
altri
Utente B
ub
B
K pub B
Kp
ub
B
Ad esempio:
la chiave pubblica viene
messa in allegato ai
messaggi di posta
elettronica
Elenco pubblico
(directory)
Annuncio pubblico
• Directory mantenuta da un’entità fidata
(authority)
• Vantaggi
– Semplice, veloce, non necessita di intermediari
• Svantaggi
– Nessuna garanzia: l’annuncio può essere facilmente
alterato. L’intruso può pubblicare la propria chiave
pubblica a nome di un altro utente !
• Pubblicazione chiavi:
– Ogni partecipante registra la propria chiave presso
l’authority (di persona o in modo sicuro)
– Può aggiornarla nello stesso modo in qualsiasi
momento
Elenco pubblico
Elenco
chiavi
pubbliche
u
Kp
Utente A
bA
• Accesso:
Kp
ub
B
Utente B
– Pubblicazione periodica della directory (ad
esempio su un periodico ad ampia
diffusione)
– Accesso diretto alla directory tramite
comunicazione elettronica (occorre una
comunicazione autenticata e sicura)
Elenco pubblico
Autorità di distribuzione
• Vantaggi
– Garantisce l’identità dei partecipanti che devono
autenticarsi con l’authorithy per poter pubblicare
una chiave.
• Svantaggi
– Necessita di un’entità fidata super-partes:
authority
– Necessita di protocolli di comunicazione sicuri per
la pubblicazione e l’accesso alle chiavi
– La Directory può essere violata
• Directory mantenuta da una Authority che ne
ha l’accesso esclusivo.
• Controllo più rigido sulla distribuzione delle
chiavi rispetto alla tecnica dell’elenco pubblico.
• Pubblicazione chiavi:
– Le chiavi vengono registrate presso l’Authority in
maniera sicura (es: di persona)
KAut(KpubA,req,t2)
Autorità di
distribuzione
2
Autorità di distribuzione
5
req,t2
• Vantaggi
– Garantisce l’identità dei partecipanti e
l’attualità delle chiavi
KAut(KpubB,req,t1)
req,t1
• Svantaggi
KPubB(IDA,N1)
1
4
3
6
A
KPubA(N1,N2)
7
KPubB(N2)
B
– Necessita di un’entità fidata super-partes
che va interpellata per ogni nuovo
partecipante
– La Directory può essere violata
KpubB
Autorità di
certificazione
Certificati
CA=KAut(t2,IDB, KpubB)
• L’autenticità delle chiavi è certificata da
una Autorità
CA=KAut(t1,IDA, KpubA)
KPubA
• Pubblicazione chiavi:
– L’interessato riceve la certificazione della
propria chiave pubblica tramite una
comunicazione autenticata con l’Authority
CA
A
1
2
B
CB
Certificati
• Vantaggi
– Garantisce l’identità dei partecipanti e l’attualità
delle chiavi (mitiga il problema del furto della
chiave privata)
– Elimina il collo di bottiglia determinato dall’autorità
di distribuzione.
• Svantaggi
– Necessita di un’entità fidata super-partes che
possa certificare in maniera sicura
Distribuzione delle
chiavi segrete
• Crittografia a chiave pubblica
relativamente lenta
• Una volta distribuite le chiavi
pubbliche le uso per distribuire
le chiavi segrete
Un primo protocollo
Un primo protocollo
•
1.
•
•
•
•
A genera (KpubA, KprivA)
A B:
KpubA ,IDA
B genera Ks
B A:
KpubA(Ks)
Si scartano (KpubA, KprivA)
Un secondo protocollo:
chiavi pubbliche già distribuite.
•
•
•
Garantisce riservatezza ma
non autenticazione
Es.: Man in the middle attack
1.
2.
3.
4.
A E:
E B:
B E:
E A:
KpubA,IDA
KpubE ,IDA
KpubE(Ks)
KpubA(Ks)
Un secondo protocollo:
chiavi pubbliche già distribuite.
Le chiavi pubbliche sono già state
distribuite
• A genera Ks e la spedisce a B:
Per autenticazione:
• Vantaggi
1. A B:
2. B A:
3. A B:
KpubB(IDA,N1)
KpubA(N1,N2)
KpubB(N2)
A B: KpubB(KprivA(Ks))
– Garantisce riservatezza ed autenticazione
• Svantaggi
– Computazionalmente pesante
Uno schema ibrido
Uno schema ibrido
• C’è un Key Distribution Center che
distribuisce le chiavi di sessione usando
una Ks principale
• La chiave principale viene aggiornata
usando un sistema a chiave pubblica
• Usato da alcuni mainframe IBM
• Vantaggi
– Garantisce riservatezza ed autenticazione
– Mantiene buone prestazioni anche con
forte ricambio delle chiavi per molti utenti
• Svantaggi
– Richiede la presenza di un KDC sicuro
Lunghezza delle chiavi
• Pesantezza dei protocolli dipende dalla
lunghezza della chiave
• Chiave serve lunga per contrastare
brute force attack
• Attenzione a non spedire con Kpub
messaggi troppo corti!
SSL
Secure Socket Layer
SSL: applicazioni telematiche
•
•
•
•
E-commerce
Trading on-line
Internet banking
......
SSL
• Protocollo proposto dalla Netscape
Communications Corporation
• Garantisce confidenzialità e affidabilità
delle comunicazioni su Internet
• Protegge da intrusioni, modifiche o
falsificazioni.
SSL
• Confidenzialità + Autenticazione.
• Sistema ibrido.
• Ibrido: Cifrari Simmetici + Cifrari
Asimmetrici + Cerificati + MAC
Utente U: Client
Sistema S: Server
HTTP
HTTP
HTTPS
SSL
SSL
TCP/IP
TCP/IP
SSL Handshake crea un canale sicuro,
affidabile e autenticato tra U e S
entro il quale ...
SSL Handshake
SSL
SSL Record
... SSL record fa viaggiare i messaggi
incapsulandoli in blocchi cifrati
e autenticati.
Client U
SSL Handshake e
SSL Record
• Handshake: definisce il canale ovvero
una suite crittografica che contiene i
meccanismi di cifratura e autenticazione
e le relative chiavi.
• Record implementa il canale utilizzando
la suite per cifrare e autenticare i
blocchi prima di darli in pasto a TCP.
Server S
Client hello
- Client hello
- Pre-master secret
- Cert. del Client
- Finished
- Finished
Handshake
- Server hello
- Cert. del Server
- Rich. Cert. Client
- Server hello done
• U manda a S un msg richiedendo una connessione
SSL.
• U specifica le “prestazioni” di sicurezza desiderate.
– Versione del protocollo SSL supportato.
– Lista di algoritmi di compressione supportati.
– Cipher Suite: SSL_RSA_WITH_3DES_EDE_CBC_SHA
RSA: scambio chiavi di sessione
- Scambio sicuro dati
Record
- Scambio sicuro dati
3DES_EDE_CBC: cifratura simmetrica
SHA: funzione hash one-way per MAC
• U allega una sequenza di byte casuali.
Server hello
• S riceve il msg (client hello) da U
• S selezione un algoritmo di compressione tra
quelli elencati da U.
• S seleziona dalla cipher suite inviata da U
una cipher suite comune (tra U e S).
• S invia a U un msg (server hello) contenente
gli elementi selezionati e una nuova
sequenza di byte casuali.
• Se U non riceve il msg server hello
interrompe la comunicazione.
Server hello done
• S invia il msg server hello done a U.
• server hello done sancisce la fine della
fase in cui ci si accorda sulla cipher
suite e sui parametri crittografici.
Scambio di Certificati
• S si autentica con U inviandogli il
proprio certificato digitale (sequenza di
certificati emessi da diverse CA).
• Se i servizi offerti da S devono essere
protetti negli accessi, S può richiedere a
U di inviargli il suo certificato
(autenticazione di U con S).
Autenticazione di S con U
• U controlla la validità della data del
certificato ricevuto da S.
• U controlla che la CA che ha firmato il
certificato sia tra quelle di cui si fida e
che la firma sia autentica.
• Se S spedisce una lista di certificati si
controlla l’intera lista.
Invio del pre-master secret
Costruzione del master secret
• U costruisce un pre-master secret P (nuova
sequenza di byte casuali codificati con il cifrario a
chiave pubblica concordato con S. Nell’esempio U
usa RSA e la chiave pubblica di S contenuta nel
certificato)
• U spedisce P a S dopo averlo cifrato con la chiave
pubblica di S contenuta nel certificato e l’algoritmo
concordato.
• U combina P con alcune stringhe note + byte casuali
contenuti in client hello e server hello e codifica il
tutto con SHA e MD5 ottenendo il master secret M.
Invio del certificato di U
(opzionale)
• Quando richiesto da S, U gli invia il suo
certificato.
• Se non lo possiede si interrompe il protocollo.
• Insieme al certificato U allega, e firma con la
sua chiave privata, la SSL-history.
• S controlla il certificato e in caso di anomalie
interrompe il protocollo.
Ricezione di P e
costruzione di M
• S decifra il msg di U e ottiene P.
• S calcola M nello stesso modo con cui
U aveva calcolato M a partire da P.
• Nota: S può farlo perché dispone delle
stesse informazioni di cui dispone U.
U: Finished
• U invia a S il msg finished protetto
utilizzando M.
• Costruzione di finished:
FU = M + tutti msg di handshake
scambiati finora + identità di U
• U codificando FU con SHA e MD5 e lo
invia a S.
S: Finished
• S verifica il msg finished di U ricalcolando il
tutto.
• S invia a U il suo msg finished protetto
utilizzando M.
• Costruzione di finished:
FS = M + tutti msg di handshake scambiati
finora (incluso il msg finished di U) +identità di
S.
• S codifica FS con SHA e MD5 e lo invia a U.
• U verifica il msg finished ricevuo da S.
SSL record
• I dati vengono frammentati in parti di lunghezza
opportuna.
• Ogni blocco viene numerato, compresso, autenticato
con MAC, cifrato con chiave segreta e trasmesso
usando il protocollo di trasporto sottostante (esempio:
TCP).
• Il destinatario opera in modo inverso al mittente e
restituisce il messaggio all’applicazione sovrastante
(esempio: HTTP).
A cosa serve M ?
• S e U utilizzano M per generare le
chiavi (sia per il cifrario simmetrico sia
per le funzioni MAC) e per altri scopi...
• Nota: Le chiavi utilizzate da S e U sono
diverse ma note ad entrambi. Ciò rende
il protocollo ancora più sicuro.
Client Hello e Server Hello
• In questa fase U e S si scambiano byte
casuali (diversi ogni volta).
• M è funzione di queste sequenze di
byte casuali.
• L’intruso non può riutilizzare i msg di
handshake di sessioni precedenti per
impersonare S in una successiva
sessione con U (attacco di reply).
MAC in SSL record
• Ogni blocco viene numerato e autenticato con MAC.
• MAC= H(blocco, numero, K, stringhe note)
• numero = 64 bit. No ripetizioni all’interno della stessa
sessione !!!
• Si previene così facendo l’uso fraudolento e iterato
dello stesso blocco nella stessa sessione
• Se un blocco viene perduto i blocchi successivi
vanno ricreati e rispediti.
• MAC sono cifrati insieme al messaggio con chiave
simmetrica.
Possibile autenticazione di U
• Se richiesto U può autenticarsi
mediante invio del suo certificato.
• In pratica: Il sistema dispone di
certificati mentre gli utenti di solito no.
• Quando richiesto per autenticare U si
procede con login e password.
Autenticazione di S
• S si autentica con uso di certificato.
No men in-the-middle attack.
• Il pre-master secret viaggia da U a S in
modo sicuro in quanto U usa la chiave
pubblica di S contenuta nel certificato.
Messaggi Finished
• Questi messaggi vengono costruiti in base al master
secret e contengono tutte le informazioni che i due
partner si sono scambiati durante la fase di
handshake.
• Permettono a U e S di effettuare un controllo ulteriore
sulle comunicazioni avvenute e di accertarsi di
possedere lo stesso master secret.
• Permettono a U e S di accertarsi che non ci sia stato
un attacco di tipo man in-the -middle.
Generazioni Sequenze Casuali
• Sono contenute il client hello, server hello e premaster secret.
• Da loro dipendono fortemente il master secret e
quindi le chiavi segrete di sessione.
• La sequenza contenuta nel pre-master secret è
inviata da U a S in modo cifrato e la sua
impredicibilità è cruciale per la sicurezza del canale
SSL.
• Se il generatore di sequenze pseudo-casuali non è di
qualità l’intero protocollo si indebolisce.
Conclusioni
• SSL è sicuro quanto la più debole cipher suite
da esso supportata.
• Sarebbe meglio disabilitare nel proprio
browser tutti i protocolli con chiavi troppo
corte (esempio: cifrari simmetrici con chiavi a
40 bit e asimmetrici con chiavi fino a 512 bit)
• Non effettuare connessioni con sistemi
anonimi perché si rischia che la propria
password venga estorta !!!