Elementi di Sicurezza e Privatezza Lezione 4

Transcript

Elementi di Sicurezza e Privatezza Lezione 4
Elementi di
Sicurezza e Privatezza
Lezione 4 - Crittografia
Chiara Braghin
[email protected]
Comunicazione sicura?
canale insicuro
messaggi
Alice
Bob
• E’ possibile che Alice e Bob comunichino
in modo sicuro attraverso un canale
insicuro?
• E’ possibile implementare un canale
sicuro virtuale su di un mezzo insicuro?
1
CIA over Internet communication
canale insicuro
messaggi
Alice
Bob
Confidenzialità: solo Alice e Bob devono “capire” il
contenuto dei messaggi
Integrità: i messaggi non devono venire modificati
Autenticazione: Alice e Bob vogliono essere sicuri
che il loro interlocutore sia effettivamente chi loro
si aspettano
Non-repudiation: Alice non può negare di aver
spedito un messaggio a Bob (e viceversa)
2
Perché tanto interesse?
• Chi possono essere Alice e Bob?
 browser/server Web per transazioni elettroniche
(e.g., acquisti on-line)
 on-line banking client e server
 router che si scambiano gli aggiornamenti delle
tabelle di routing
… beh, Bob e Alice in carne e ossa, che si
scambiano messaggi privati!
altri esempi?
• In tutti i casi:
 L’informazione deve venire protetta dalla divulgazione e
modifica lungo la rete
 L’autenticazione dell’utente è necessaria: quando uno fa
login ci deve essere un modo per verificarne l’identità.
3
Come risolvere il problema?
• Utilizzando primitive crittografiche
 crittare un messaggio (va bene per la
segretezza, ma è sufficiente per garantire
autenticazione e integrità?)
• Utilizzando protocolli crittografici
 WEP, SSL/TLS, SSH, S-HTTP, PGP
4
Crittografia
Crittografia (1)
• Dal greco kryptós (=nascosto), e gráphein
(=scrivere), tratta dei metodi per rendere
un messaggio "offuscato” (crittogramma)
in modo da non essere comprensibile a
persone non autorizzate a leggerlo.
 non mira a nascondere il messaggio, ma il suo
significato
 codificare (testo in chiaro → testo codificato) e
decodificare (testo codificato → testo in chiaro)
informazione
6
Crittografia (2) - Storia
• Più di 2000 anni fa: comunicazione segreta basata
su steganografia (occultamento del messaggio)
 23/9/480 a.C. battaglia di Salamina - Serse vs Atene:
tavoletta da scrittura con doppio strato di cera
 Stessi anni: Istieo manda un messaggio a Aristagora di
Mileto scritto sulla cute
• ~2000 anni fa: Cifrari per sostituzione
 Sostituire una lettera con un’altra
 Cifratura di Cesare (a->D, b->E, c->F, …)
7
Crittografia (3) - Storia
• Alcuni secoli dopo: Cifrari per permutazione
• Cifrari del rinascimento: utilizzano il
messaggio e le lettere di una chiave per
cifrare il messaggio
 la base della crittografia moderna
• 1976: Crittografia a chiave pubblica
8
Crittografia (4) - Storia
• Maria Stuarda, 8/12/1542 – 24/7/1567
regina di Scozia, cugina di Elisabetta I
d’Inghilterra
• Ernesto “Che” Guevara,
14/6/1928 – 9/10/1967
9
Crittografia - Schema generale
chiave di codifica
2.
plaintext
testo in chiaro
Alice
(mittente)
1.
chiave di decodifica
3.
Codifica
ciphertext
testo cifrato
4.
Decodifica
5.
plaintext
Bob
(destinatario)
10
Proprietà di un buon algoritmo di cifratura (1)
• Sia E la funzione codifica, D la funzione di
decodifica, m un messaggio, k una
chiave:
 Dk(Ek(m)) = m
• Ek(m) è semplice da calcolare, dati m e k
• Dk(x) è semplice da calcolare, dati x e k
 polinomiale sul massimo tra la lunghezza della
chiave l e quella del messaggio n - spesso lineare
• Se x = Ek(m), è difficile trovare m senza k
 esponenziale in min{n,l}
11
Proprietà di un buon algoritmo di cifratura (2)
Open design:
Kerchoff’s Principle (1883)
The security of a cryptosystem must not
depend on keeping the algorithm secret.
No security by obscurity:
 la segretezza è data dalla segretezza della
chiave e dalla robustezza dell’algoritmo
12
Crittografia simmetrica (1)
• Detta anche Crittografia a chiave privata (o
segreta)
 Stessa chiave per codifica e decodifica
 La chiave deve rimanere segreta
chiave K
chiave K
2.
plaintext
1.
3.
Codifica
ciphertext
4.
Decodifica
5.
plaintext
• La segretezza, autenticazione, integrità del
messaggio sono garantite dalla segretezza della
chiave
13
Crittografia simmetrica (2)
• Vantaggi:
 Di solito usano chiavi di 64-128 bit (1734 cifre decimali) e sono molto veloci
• Svantaggi:
 E’ necessario distribuire la chiave segreta
a tutte le coppie di utenti che vogliono
comunicare
14
Crittografia simmetrica (3)
• Algoritmi basati su cifratura simmetrica:
 DES - Data Encryption Standard (standard federale nel
1976)
 Triple DES o 3DES
 3DESk1,k2(m) = Ek1(Dk2(Ek1(m)))
 DES-X
 aumenta la lunghezza della chiave effettuando un'operazione di
XOR con dei bit extra prima e dopo l'applicazione del DES
 AES - Advanced Encryption Standard
 conosciuto anche come Rijndael
 vincitore di una competizione internazionale, ideato da due belgi
nel 1998
15
Gestione delle chiavi (1) - Naïve
Utenti A1, …, An che vogliono parlare tra loro
• Ciascuna coppia ha bisogno di una chiave
 n(n-1)/2 chiavi
• Le chiavi devono venire concordate
 Scambio fisico
 Canale sicuro
…
A1
A5
A2
A4
A3
16
Gestione delle chiavi (2) -KDC
A1
Centro di distribuzione
centralizzato (KDC):
• n coppie di chiavi
• Problemi:
KDC deve essere fidato
KDC collo di bottiglia e
unico punto di fallimento
come distribuire le chiavi
condivise con il KDC?
A5
K5
K1
KDC
K4
A4
K2
K3
A2
A3
Se Ai vuole parlare a Aj :
• Ai → KDC: “collegami a Aj”
• KDC genera una nuova chiave
Kij
• KDC → Ai: Eki(Kij)
• KDC → Aj: Ekj(Kij, “Ai vuole
parlare”)
Ancora naïve
 Nessuna forma di
autenticazione
17
Crittografia asimmetrica (1)
• Detta anche Crittografia a chiave
pubblica
Una chiave per codifica, un’altra per decodifica
Ogni utente ha una coppia di chiavi:
 chiave privata: segreto da custodire
 chiave pubblica: informazione da diffondere
chiave pubblica di Bob KB
2.
Alice
plaintext
1.
3.
Codifica
chiave privata di Bob K’B
ciphertext
4.
Decodifica
5.
plaintext
• La segretezza del messaggio è garantita
Bob
18
Crittografia asimmetrica (2)
• Vantaggi:
 Possibile imporre anche integrità e autenticazione
 Alice usa la sua chiave privata per crittare
 Problemi?
• Svantaggi:
 Di solito usano chiavi di 1024-2048 bit (circa 160-320
cifre decimali) e sono lenti
 In genere usati per stabilire una chiave di sessione
• Algoritmi basati su cifratura asimmetrica
 RSA (1976)
 ElGamal (1985)
 Crittosistema di Rabin (1979)
19
Crittografia a chiave segreta vs pubblica
Crittografia a chiave privata
• Richiede che il mittente e
il destinatario conoscano
la chiave condivisa.
• Q: come concordare la
chiave (specialmente se
mai “incontrati”)?
• Problema: n persone, per
avere una chiave
condivisa tra tutti sono
necessarie n(n-1)/2
chiavi.
Crittografia a chiave pubblica
•
•
•
•
•
Ogni persona ha 2 chiavi:
una chiave pubblica e una
privata.
Mittente e destinatario non
condividono chiavi
La chiave pubblica di
codifica conosciuta da tutti
La chiave privata di
decodifica conosciuta solo
dal destinatario
Q: chi garantisce la chiave
pubblica?
20
Algoritmi di cifratura/decifratura
• Come gestire messaggi molto lunghi?
 Spesso gli algoritmi operano su dimensioni
prefissate
 E.g. 64 bits per DES
• Block ciphers
 Divide il messaggio m in m1, …, mn
 Aggiunge dei bit finali all’ultimo blocco
 Usa Ek per produrre x1, …, xn
 Usa Dk per produrre m1, …, mn
• Stream ciphers
 Si basa su di una sequenza pseudo-casuale
21
Crittografia perfetta
Def. Nessun testo codificato rilascia informazione alcuna
né sulla chiave usata per la codifica, né sul testo in
chiaro, il quale può essere recuperato se e solo se
la chiave è disponibile
• Ideale, in teoria:
 nessun tipo di crittoanalisi possibile
 probabilità nulla di ricavare informazioni
supplementari da un testo codificato
• Crittografia in pratica quasi mai perfetta
22
Allora abbiamo finito?
• Crittografia = sicurezza?
• E’ possibile che Alice e Bob comunichino in
modo sicuro attraverso un canale insicuro
usando la crittografia?
23
Alice
?
Bob
24
Allora abbiamo finito?
• Crittografia = sicurezza?
• E’ possibile che Alice e Bob comunichino
in modo sicuro attraverso un canale
insicuro usando la crittografia?
• Purtroppo NO!
Se Alice manda a Bob un messaggio che
Trudy intercetta e riutilizza? [integrità]
Quando Bob riceve un messaggio può essere
25
sicuro che sia di Alice? [autenticazione]
Crittografia e Integrità
• La crittografia garantisce anche l’integrità?
• Non sempre…
 Un attaccante potrebbe intercettare un
messaggio contenente
 “… ti autorizzo a prelevare 1$ dal mio conto”
 e cambiarlo con
 “… ti autorizzo a prelevare 1000$ dal mio conto”
 senza violare la crittografia!
• Problema:
 i contenuti di un file sono poco “legati” tra loro
 uso di block ciphers
26
One-way function (1)
• Detta anche hash function, checksum o
message digest
• h: {0,1}* → {0,1}n:
 Trasforma i dati in input di lunghezza arbitraria
in un output di lunghezza costante
Possibili
input m
h
Possibili
output h(m)
27
One-way function (2) - Proprietà
• One way (= irreversibile)
 Dato x, è facile calcolare h(x)
 Dato y, è difficile trovare x t.c. y=h(x)
[preimage resistance]
 Dato m, è difficile trovare m’ t.c. h(m) = h(m’)
[second preimage resistance]
• Collision-resistant
 Difficile trovare m, m’ distinti t.c. h(m)=h(m’)
• Effetto valanga
 Una piccola modifica di m deve alterare tutto
h(m)
28
Paradosso del compleanno (1)
• In crittografia usato per:
 dimensionamento del blocco da cifrare
 provare la proprietà di "resistenza alle
collisioni"
• Per codici hash di 64 bit
 Collisione tra m e m’ con circa 232 tentativi
• Di solito la dimensione dei codici hash è
di 160 bit (SHA-1)
 Tempo di collisione: 280 tentativi
29
Paradosso del compleanno (2)
• Che probabilità c’è che due persone in
una stessa stanza compiano gli anni
lo stesso giorno?
 in un gruppo di 23 persone 51%;
 con 30 persone supera il 70%,
 con 50 persone il 97%.
• Il termine paradosso non è da intendersi nel senso di
una contraddizione logica, ma viene chiamato in
questo modo poiché la verità matematica contraddice
l'intuizione naturale
30
Paradosso del compleanno (3)
31
Crittografia e Autenticazione
• Problemi:
 Le funzioni hash non garantiscono
autenticazione
 Come costruire l’equivalente della firma
“su carta” (= auth + non repudiation) ?
 Chi mi garantisce che la chiave pubblica
di Alice sia veramente sua e non di
Trudy?
32
One-way function (3)
2 famiglie:
• Non-keyed (senza chiave)




h : {0,1}* → {0,1}n
(e.g. n = 160)
h(m) è il message digest di m
Usato per integrity, firme digitali, …
Esempi:
 MD4, MD5 (Message Digest) - 128-bit digest
 SHA/SHS (Secure Hash Algorithm or Standard) 160-bit digest
• Keyed (con chiave)
 hk : {0,1}* → {0,1}n (e.g. n = 96)
 Usato per message integrity e authentication
33
MAC (Message Authentication Code)
• Si tratta di una one-way keyed function
 Richiede una chiave segreta condivisa
• Utilizzo:
 Il mittente spedisce il messaggio m e M1=MAC(m)
 Il destinatario riceve entrambe le parti
 Il destinatario calcola M2=MAC(m)
 Se M2 == M1, il messaggio è valido
 Se M2 != M1, il messaggio è corrotto
34
MAC - Esempio di uso (1)
Trudy
Alice
k
• Send m, hk(m)
m, hk(m)
MAC
Bob
k
• Receive m, hk(m)
• Nella Rete:
 Trudy non riesce a calcolare il MAC per m’ ≠ m
 Nota: il MAC viene utilizzato per l’integrità, non
per la segretezza
35
MAC - Esempio di uso (2)
• Nel File system:
MAC
file
hpwd(file)
 il MAC viene verificato quando si vuole
accedere al file
 la password pwd è necessaria per modificare il
file
36
Firma digitale
• La firma “su carta” garantisce non-repudiation per:
 Identità
 Firma di un contratto
• Schema di firma digitale (basata su crittografia
asimmetrica):
 Alice pubblica una chiave per la verifica della sua firma
(chiave pubblica)
 Chiunque può verificare un messaggio firmato da Alice
 Solo Alice può spedire messaggi firmati
• Ottiene solo autenticazione e integrità
37
Proprietà della firma
• Funzioni per firmare e verificare
 Sign(Key-1, m)
 Verify(Key, x, m) =
OK se x = Sign(Key-1, m)
NO altrimenti
• Resistente alla contraffazione
 Non si riesce a calcolare Sign(Key-1, m) da m e Key
 Resiste all’attacco di forza bruta:
data Key, non si riesce a produrre Sign(Key-1, m)
per nessun m
38
Creazione della firma
1. Calcolare il message
digest del testo
2. Codificare il digest
con la chiave privata
del mittente (= firma
digitale)
3. Creare coppia
testo+firma e spedirla
Testo
in chiaro
digest
hash
Firma
digitale
digest
chiave privata
mittente
Testo
in chiaro
+
Firma
digitale
messaggio inviato
39
Verifica della firma
1. Separare il testo dalla
firma
2. Decodificare la firma
con la chiave pubblica
del mittente
3. Calcolare il digest del
testo
4. Verificare che i due
digest coincidano
1. sì: accetto (testo OK)
2. no: rifiuto (testo
alterato)
Firma
digitale
testo
Firma
digitale
testo
chiave pubblica
mittente
hash
Digest 1
?
=
Digest 1
Digest 2
Digest 2
40
Firma digitale - Esempio
Alice vuole firmare
m e spedirlo a Bob
Alice
K-1A
• s = Signk-1A(h(m))
• Send m,s
VerkA(s,m) =
Dati pubblici
Alice  kA
…
Bob  kB
…
m,s
Ok if s = Sigk(m)
Bob
K-1B
• Receive m,s
• Execute
VerifykA(s, h(m))
No otherwise
• h rende la firma corta
41
Hashing vs. MAC vs. Firme digitali
• Hashing: checksum “privata”
 Produce il footprint di un messaggio
 Deve venire memorizzata separatamente dal messaggio
• MAC: checksum “cifrata”
 Il footprint viene protetto da una chiave condivisa e segreta
 Può venire trasmesso lungo un canale pubblico
• Firma digitale: non-repudiaton
 Il footprint viene protetto da una chiave privata
 Non ci sono dati segreti condivisi con chi verifica la firma
42
Certificato Digitale
Autorità di certificazione
• Chi garantisce che la chiave pubblica di
Bob, che otteniamo da un registro
pubblico, sia stata rilasciata proprio a
Bob?
• Una terza parte fidata: l’autorità di
certificazione (CA), che certifica il
legame utente/chiave pubblica
mediante apposito certificato digitale
44
Certificato reale
• Cartaceo
 Carta d’identità, passaporto, etc.
• Emesso da un’autorità riconosciuta
• Associa l’identità di una persona
(nome, cognome, data di nascita, …)
al suo aspetto fisico (foto)
45
Certificato digitale
• Elettronico
• Associa l’identità di una persona ad una chiave
pubblica
• Emesso da una CA riconosciuta
• Firmato con la chiave privata della CA
• Formato tipico: X.509
 Raccomandato dall’ITU (International Telecommunication
Union)
46
I 10 compiti di una CA (1)
1. Identificare con certezza la persona che fa
richiesta della certificazione della chiave
pubblica
2. Rilasciare e rendere pubblico il certificato
3. Garantire l'accesso telematico al registro
delle chiavi pubbliche
4. Informare i richiedenti sulla procedura di
certificazione e sulle tecniche per accedervi
5. Dichiarare la propria politica di sicurezza
47
I 10 compiti di una CA (2)
6. Attenersi alle norme sul trattamento di dati
personali
7. Non rendersi depositario delle chiavi private
8. Procedere alla revoca o alla sospensione dei
certificati in caso di richiesta dell'interessato
o venendo a conoscenza di abusi o
falsificazioni, ecc.
9. Rendere pubblica la revoca o la sospensione
delle chiavi
10.Assicurare la corretta manutenzione del
sistema di certificazione
48
Ottenere un certificato digitale (1)
Alice genera una coppia di chiavi
pubblica/privata (k,k-1) e vuole
rendere k pubblica
1 . Alice spedisce k a CA
 Certification Authority
A1
k Ck
A5
A2
CA
2 . CA verifica che Alice conosca k-1
 Challenge-Response exchange
3 . CA genera Ck e lo spedisce a Alice
A4
A3
• Alice spedisce Ck quando usa k
 A allega sempre Ck (push)
 .. oppure lo spedisce a richiesta (pull)
 CA non deve essere sempre on-line
49
Ottenere un certificato digitale (2)
• L’utente genera sul proprio PC una coppia di
chiavi
 I browser comuni offrono il servizio (Netscape, Explorer)
 La chiave privata è memorizzata localmente in un file nascosto (o
floppy disk)
 Maggiore sicurezza: generare la coppia di chiavi tramite SmartCard
collegata al PC - la chiave privata non esce mai dalla SmartCard
(protetta da PIN)
• L’utente invia alla CA una richiesta di
certificato, insieme alla chiave pubblica
generata (a meno che non sia la CA a generare
la coppia di chiavi per l’utente)
50
Ottenere un certificato digitale (3) - PKI
chiave pubblica KCA per la verifica della
firma
Certificate
KCA
Authority
2.
1.
Certificate
Sign(KCA-, KS)
KS
3.
Client
Sign(KCA-, KS), Sign(KS, msg)
Server
Il certificato del server può venire verificato dai clienti che
conoscono la chiave KCA della CA
La certificate authority è “off line”
51
Formato certificati
Ck = (A,k,texp,priv,…,sigCA)
 texp = expiration date
 priv = privileges
 … = altre informazioni
• Tutti conoscono la chiave di verifica (chiave
pubblica) di CA
• Problemi:
 Singolo punto di fallimento
 Vulnerabilità all’aumentare del numero di
partecipanti
52
Certificato
X.509 struttura
53
Public-Key Infrastructure (PKI) - 1
• A struttura gerarchica
CA
......
CA1
....
X.509
X.509
X.509
X.509
......
CA2
CA3
....
....
X.509
X.509
X.509
X.509
X.509
CAn
....
X.509
X.509
X.509
54
Public-Key Infrastructure (PKI) - 2
• Trusted root authority (VeriSign, IBM, United
Nations)
 Tutti devono conoscere la chiave di verifica della root
authority
• La root authority può firmare i certificati
• I certificati identificano altri utenti, incluse altre
autorità (= non più un singolo punto di
fallimento)
• La gerarchia tra autorità genera certificate
chains
55
PKI a struttura gerarchica (2)
root
CA1
• Catene di certificati
CA11
CA2
…
… CA17
 Contiene i certificati di
… A …
…
tutti i nodi fino alla radice
 Durante la verifica, i certificati vengono scambiati
solo per i nodi fino al primo antenato comune
CA5
…
CA51
B
…
• La root signature è fidata e riconoscibile
 La ridondanza riduce la vulnerabilità
• Utilizzata in SET
 Sviluppato da Visa/Mastercard
 La root key viene distribuita tra 4 siti
56
Revoca del certificato
• Varie ragioni
 Cambio dei dati personali (email, recapito, etc)
 Licenziamento, dimissioni
 Compromissione della chiave privata
…
• Richiesta di revoca (cessazione di validità)
Dall’utente
Dall’emettitore
• Revoca mediante CRL (Certificate
Revocation List)
57
Certificate Revocation List
• Lista di certificati revocati prima della
loro naturale scadenza temporale
• Firmata digitalmente dalla stessa CA
che ha emesso il certificato ora
revocato
58
KDC vs PKI
Chiave segreta
• il KDC deve essere online in quanto usato ad
ogni sessione
• il KDC conosce la chiave
segreta
• se il KDC viene
compromesso, vengono
esposti i messaggi
passati e futuri
• veloce
Chiave pubblica
• la CA può essere off-line
tranne in fase di
generazione delle chiavi
• la CA conosce solo le
chiavi pubbliche
• se la CA viene
compromessa, vengono
esposti solo i messaggi
futuri
• lento
59
Dalla crittografia alla sicurezza
• La crittografia viene usata per risolvere
alcuni problemi di sicurezza
ottenere le relative proprietà di sicurezza
• Si crea un protocollo di sicurezza, un
preciso schema di eventi che possibilmente
fanno uso di crittografia
 Combinazioni di segretezza, autenticazione,
integrità, …
60