Gestione delle chiavi
• Distribuzione delle chiavi pubbliche
• Uso dei protocolli a chiave pubblica
per distribuire chiavi segrete
Distribuzione delle
chiavi pubbliche
•
•
•
•
Annuncio pubblico
Elenco pubblico
Autorità di distribuzione
Certificati
Annuncio pubblico
• L’utente rende di pubblico dominio la
propria chiave pubblica
• Pubblicazione chiavi:
– Tutti possono pubblicare la propria chiave
• Accesso:
– Tutti possono accedere alle chiavi degli
altri
Utente A
K pub A
Utente B
K pub B
Ad esempio:
la chiave pubblica viene
messa in allegato ai
messaggi di posta
elettronica
Annuncio pubblico
• 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 !
Elenco pubblico
(directory)
• Directory mantenuta da un’entità fidata
(authority)
• 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
chiavi
pubbliche
Utente A
Utente B
Elenco pubblico
• Accesso:
– 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
• 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
Autorità di distribuzione
• 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
5
req,t2
KAut(KpubB,req,t1)
req,t1
KPubB(IDA,N1)
1
4
3
6
A
KPubA(N1,N2)
7
KPubB(N2)
B
Autorità di distribuzione
• Vantaggi
– Garantisce l’identità dei partecipanti e
l’attualità delle chiavi
• Svantaggi
– Necessita di un’entità fidata super-partes
che va interpellata per ogni nuovo
partecipante
– La Directory può essere violata
Certificati
• L’autenticità delle chiavi è certificata da
una Autorità
• Pubblicazione chiavi:
– L’interessato riceve la certificazione della
propria chiave pubblica tramite una
comunicazione autenticata con l’Authority
KpubB
Autorità di
certificazione
CA=KAut(t2,IDB, KpubB)
CA=KAut(t1,IDA, KpubA)
KPubA
CA
A
1
2
CB
B
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
1.
•
•
•
•
A genera (KpubA, KprivA)
A  B:
KpubA ,IDA
B genera Ks
B  A:
KpubA(Ks)
Si scartano (KpubA, KprivA)
Un primo protocollo
•
•
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
•
Per autenticazione:
1. A  B:
2. B  A:
3. A  B:
KpubB(IDA,N1)
KpubA(N1,N2)
KpubB(N2)
Un secondo protocollo:
chiavi pubbliche già distribuite.
• A genera Ks e la spedisce a B:
A  B: KpubB(KprivA(Ks))
• Vantaggi
– Garantisce riservatezza ed autenticazione
• Svantaggi
– Computazionalmente pesante
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
Uno schema ibrido
• 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.
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.
Client U
Server S
- Client hello
- Pre-master secret
- Cert. del Client
- Finished
- Finished
- Scambio sicuro dati
Record
- Scambio sicuro dati
Handshake
- Server hello
- Cert. del Server
- Rich. Cert. Client
- Server hello done
Client hello
• 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
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.
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).
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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
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 in 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 !!!
PGP
Pretty Good Privacy
PGP
www.pgpi.org
www.amagri.it/nai_pgp.htm
www.vcnet.com/~rossde/pgp.html
PGP
• È un programma freeware (nella sua
versione base)
• È basato su tecniche crittografiche sia di tipo
simmetrico che asimmetrico (ibrido)
•Viene utilizzato principalmente per proteggere
da occhi indiscreti le informazioni digitali (sia
messaggi di posta elettronica che file residenti
sul proprio PC)
• Permette la firma digitale.
Un po’ di storia
• Nel 1991 al Senato americano approda un disegno di
legge anticrimine che prevede l’obbligo per i produttori
di strumenti crittografici di inserire “trap doors” nei
loro prodotti.
• Prima che la legge venga approvata, Philip R.
Zimmermann scrive e distribuisce PGP.
Un po’ di storia
• Zimmermann viene accusato di aver violato le leggi
sui brevetti in quanto in PGP viene utilizzato RSA .
• Inoltre il governo americano lo accusa di violare
l’ITAR (International Traffic in Arms Regulations) che
prevede il divieto di esportazione per le tecnologie
crittografiche e quindi anche dei programmi software
che le implementano
• Viene istituito un fondo per far fronte alle spese legali
• Le accuse vengono ritirate
PGP
• Creazione delle chiavi.
• Cifratura/decifratura e firma/verifica di
documenti digitali (es. e-mail).
• Gestione delle chiavi
• Creazioni di self-decrypting archives (SDAs)
• Cancellazione permanente di file, directory e
spazio su disco
• Creazione di VPN (Virtual Private Network)
Chiavi
• PGP utilizza sia protocolli a chiave segreta
che protocolli a chiave pubblica.
• Approssimativamente:
– chiavi segrete 80 bit equivalenti chiavi pubbliche 1024 bit
– chiavi segrete 128 bit equivalenti chiavi pubbliche 3000 bit
• Chiavi segrete a 56 bit non sicure
• Chiavi segrete a 128 bit sicure, ma non con
calcolatori quantistici...che non esistono (e
probabilmente non esisteranno mai)
• Chiavi segrete a 256 bit sicure comunque !!!
• Anche se..........
Passphrase
Memorizzata
in modo sicuro.
Chiave pubblica
“7ecngnkwgmiml5g\h7kk7kikfkhlghk”
Chiave privata
“certyunemcpo3456n3g6kg3636g6ng6”
PGP
Utente
Passphrase
“L’erba del vicino è sempre più verde”
Passphrase: serve all’utente quando si rende
Necessario l’uso della chiave privata. Più facile
Da ricordare. Da non dimenticare !!!
Algoritmi usati in PGP
• Chiave privata (simmetrici):
–
–
–
–
CAST
Triple-DES
IDEA
Two Fish (AES)
• Chiave pubblica (asimmetrici):
– DSS (digital Signature Standard)
– RSA
• Hash:
– SHA1 (Secure Hash Algorithm)
Codifica
Mittente:
1. comprime il documento da spedire.
2. genera una chiave Ks segreta che viene detta
chiave di sessione.
3. codifica il documento compresso utilizzando Ks.
4. si procura la chiave pubblica del destinatario Kp
5. codifica Ks usando Kp
6. spedisce documento codificato con Ks e la chiave segreta
codificata con Kp
Decodifica
Destinatario:
1. usando la propria chiave privata accede alla
chiave segreta di sessione.
2. usando la chiave segreta di sessione
decodifica il messaggio.
3. decomprime il messaggio.
Compressione e decompressione rafforzano
il Protocollo !!!
Ciao, sono un
file non
compresso e
sto per
essere
codificato
codifica
Compressione e perdita
di struttura!
74c4cch
Kc98xac
S785Jc
44DBN
codifica
Vantaggi:
-No attacchi statistici
-Minori dimensioni
Firma
Mittente:
1. crea impronta del msg (digest) usando
una funzione hash.
2. usa la propria chiave segreta Ks per firmare
il digest.
3. spedisce il msg + digest firmato
Verifica
Destinatario:
1. usando la propria chiave pubblica Kp
decodifica il digest.
2. verifica la firma ricalcolando la funzione hash
sul msg e confrontando il risultato con il digest
appena decodificato.
Certificati digitali
Problema:
la chiave pubblica con la quale stiamo
cifrando deve appartenere realmente al
destinatario del messaggio.
Si pone il problema dello scambio delle chiavi
(man-in-the-middle attack).
I certificati digitali vengono usati per evitare
che qualcuno tenti di “spacciarsi” per un’altra
persona sostituendone la chiave pubblica.
Certificati digitali
Componenti principali di un certificato digitale.
1. La chiave pubblica di U
2. Informazioni inerenti all’identità di U (nome,
cognome, data e luogo di nascita, …)
3. firma digitale di chi rilascia il certificato.
Scopo del certificato: mettere in relazione U
con la sua chiave pubblica.
Certificati Cartacei
Fotografia
+
Dati personali
QuickTime™ and a
TIFF (Uncompressed) decompressor
are needed to see this picture.
Timbri
=
Fidati ! La foto
Corrisponde ai dati
personali
Distribuzione dei certificati
1. Manuale o di persona. Quasi mai
realizzabile in pratica ! (passaporto:
distribuzione manuale)
2. Generati, Custoditi e distribuiti da entità
fidate.
– Certificate servers
– Public Key Infrastructures (PKI)
Certificate servers
Database disponibili su rete.
Permettono agli utenti di
• richiedere l’inserimento del proprio
certificato nel database.
• richiedere il certificato di qualcuno.
PGP ha un certificate server chiamato: PGP
keyserver
PKIs
Svolgono le funzioni dei certificate servers
+
emettono certificati;
revocano certificati;
gestiscono la fiducia sui certificati (trust)
PKI = Registration Authority (RA) +
Certification Authority (CA)
PKIs
• RA: esegue i controlli prima di emettere
il certificato (entità fisiche, persone, …)
• CA: emette/genera il certificato
(software)
Formato dei certificati
• PGP riconosce due formati di certificato:
– Certificati in formato PGP
– Certificati in formato X.509 (standard
internazionale: tutte le applicazioni in linea
teorica dovrebbero riconoscerlo e
supportarlo anche se in pratica esistono
molte varianti dello standard X.509 che lo
rendono … non standard)
Certificato di U
in formato X.509
• Numero di versione dello standard X.509 utilizzato.
• Chiave pubblica di U. Caratteristiche della chiave
(lunghezza, algoritmo con cui è stata creata, data di
creazione, durata della chiave…)
• Numero del certificato. Serve ad esempio per la
revoca (CRL)
• Distinguished name (DN): identificativo di U su tutta
la rete.
• Periodo di validità del certificato (inizio e fine validità).
• Il nome di chi ha firmato il certificato (di solito una
CA), la sua firma digitale e l’algoritmo usato per
apporre la firma.
Gestione dei Certificati:
Netscape
Gestione dei Certificati:
Netscape
Gestione dei Certificati:
Netscape
Certificato di U
in formato PGP
• Numero di versione PGP.
• Chiave pubblica di U. Caratteristiche della chiave
(lunghezza, algoritmo con cui è stata creata, data di
creazione, durata della chiave…)
• Informazioni sull’identità di U: nome, cognome, luogo
e data di nascita, foto, …
• Self-signature: chiave pubblica di U firmata con la
chiave privata di U.
• Indicazione dell’algoritmo simmetrico di codifica
preferito (Es: CAST, IDEA, Triple-DES).
• Altre firme…..
PGP Vs X.509
PGP
X.509
U crea il proprio
certificato
U richiede alla CA di
creare il suo
certificato
Identità di U multipla
Identità di U singola
Firme multiple per
attestare la validità
del certificato
Firma singola per
attestare la validità
del certificato
Struttura di un certificato PGP
Luciano
Margara
L. Margara
Luciano
L.M.
Come distinguere tra chiavi
autentiche e chiavi false
Certificati X.509:
Per determinare se il certificato è autentico e
quindi usabile occorre fidarsi della CA.
La CA deve essere una entità fidata.
Dobbiamo fidarci della validazione della
chiave effettuata dalla CA
Problema: CA = collo di bottiglia.
Come distinguere tra chiavi
buone e chiavi false
Certificati PGP:
Per determinare se il certificato è autentico e
quindi usabile occorre fidarsi di altri utenti che
hanno validato la chiave.
Ogni utente può essere visto come una CA.
Dobbiamo fidarci della validazione della
chiave effettuata da altri utenti.
Problema: di quali utenti ci fidiamo ?
PGP: Validity and Trust
Obiettivo: validare un certificato (una chiave
pubblica) ovvero assegnare a un certificato
un valore che misuri quanto io reputi vero
quel certificato.
Metodo:
- controllo di persona in qualche modo.
- mi fido di controlli fatti da altri
soggetti (trusted).
PGP: Validity and Trust
1.
2.
Mi fido di me stesso (sono un soggetto Trusted)! Assegno
alle chiavi che ho potuto controllare direttamente di
persona il giudizio Valid.
Assegno un valore di fiducia (trust) agli utenti:
–
–
–
3.
Trust
Marginal trust
No trust
PGP assegna ad una chiave un valore di validità:
–
–
–
Valid
Marginally valid
Invalid
in base ai giudizi espressi da altri utenti su quella chiave e
al valore di trust che io ho assegnato a quegli utenti.
Non transitivo!!!
Marco
Trust
Francesco
Certificato di Francesco
Chiave Pubblica
di Francesco
Altre Informazioni
INVALID
VALID
Francesco
Martina
Marginal trust
Alice
Marginal trust
Certificato di Francesco
Chiave Pubblica
di Francesco
Altre Informazioni
INVALID
VALID
Scarica

critto2