Crittografia - unimi, Crema

annuncio pubblicitario
23/10/12
Elementi di Sicurezza e Privatezza
Lezione 5 - 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
1
23/10/12
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?
w browser/server Web per transazioni elettroniche
(e.g., acquisti on-line)
w on-line banking client e server
w router che si scambiano gli aggiornamenti delle
tabelle di routing w … beh, Bob e Alice in carne e ossa, che si
scambiano messaggi privati!
w altri esempi?
•  In tutti i casi:
w L’informazione deve venire protetta dalla divulgazione e
modifica lungo la rete w L’autenticazione dell’utente è necessaria: quando uno fa
login ci deve essere un modo per verificarne l’identità.
3
2
23/10/12
Come risolvere il problema?
•  Utilizzando primitive crittografiche
w crittare un messaggio (va bene per la
segretezza, ma è sufficiente per garantire
autenticazione e integrità?)
•  Utilizzando protocolli crittografici
w WEP, SSL/TLS, SSH, S-HTTP, PGP
4
Crittografia
3
23/10/12
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. w  non mira a nascondere il messaggio, ma il suo
significato
w  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)
w  23/9/480 a.C. battaglia di Salamina - Serse vs Atene:
tavoletta da scrittura con doppio strato di cera
w  Stessi anni: Istieo manda un messaggio a Aristagora di
Mileto scritto sulla cute
•  ~2000 anni fa: Cifrari per sostituzione
w  Sostituire una lettera con un’altra
w  Cifratura di Cesare (a->D, b->E, c->F, …)
7
4
23/10/12
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
w  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
5
23/10/12
Crittografia - Schema generale
chiave di codifica
2.
plaintext
testo in chiaro
Alice
chiave di decodifica
3.
Codifica
ciphertext
testo cifrato
1.
(mittente)
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:
w  Dk(Ek(m)) = m
•  Ek(m) è semplice da calcolare, dati m e k
•  Dk(x) è semplice da calcolare, dati x e k
w  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
w  esponenziale in min{n,l}
11
6
23/10/12
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:
w  la segretezza è data dalla segretezza della
chiave e dalla robustezza dell’algoritmo
12
Crittografia simmetrica (1)
•  Detta anche Crittografia a chiave privata (o
segreta)
w  Stessa chiave per codifica e decodifica
w  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
7
23/10/12
Crittografia simmetrica (2)
•  Vantaggi:
w Di solito usano chiavi di 64-128 bit
(17-34 cifre decimali) e sono molto veloci
•  Svantaggi: w E’ necessario distribuire la chiave segreta
a tutte le coppie di utenti che vogliono
comunicare
14
Crittografia simmetrica (3)
•  Algoritmi basati su cifratura simmetrica:
w  DES - Data Encryption Standard (standard federale nel
1976)
w  Triple DES o 3DES
§  3DESk1,k2(m) = Ek1(Dk2(Ek1(m)))
w  DES-X §  aumenta la lunghezza della chiave effettuando un'operazione di
XOR con dei bit extra prima e dopo l'applicazione del DES
w  AES - Advanced Encryption Standard
§  conosciuto anche come Rijndael
§  vincitore di una competizione internazionale, ideato da due belgi
nel 1998
15
8
23/10/12
Gestione delle chiavi (1) - Naïve
Utenti A1, …, An che vogliono parlare tra loro
•  Ciascuna coppia ha bisogno di una chiave
w  n(n-1)/2 chiavi
•  Le chiavi devono venire concordate
w  Scambio fisico
w  Canale sicuro
w  …
A1
A5
A2
A4
A3
16
Gestione delle chiavi (2) -KDC
A1
Centro di distribuzione
centralizzato (KDC):
• n coppie di chiavi
• Problemi:
w KDC deve essere fidato
w KDC collo di bottiglia e
unico punto di fallimento
w 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
9
23/10/12
Crittografia asimmetrica (1)
• Detta anche Crittografia a chiave
pubblica
w Una chiave per codifica, un’altra per decodifica
w 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.
chiave privata di Bob K’B
4.
3.
Codifica
ciphertext
Decodifica
5.
plaintext
Bob
•  La segretezza del messaggio è garantita
18
Crittografia asimmetrica (2)
•  Vantaggi:
w  Possibile imporre anche integrità e autenticazione
§  Alice usa la sua chiave privata per crittare
§  Problemi?
•  Svantaggi:
w  Di solito usano chiavi di 1024-2048 bit (circa 160-320
cifre decimali) e sono lenti
w  In genere usati per stabilire una chiave di sessione
•  Algoritmi basati su cifratura asimmetrica
w  RSA (1976)
w  ElGamal (1985)
w  Crittosistema di Rabin (1979)
19
10
23/10/12
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?
w Spesso gli algoritmi operano su dimensioni
prefissate
§  E.g. 64 bits per DES
•  Block ciphers
w  Divide il messaggio m in m1, …, mn
§  Aggiunge dei bit finali all’ultimo blocco
w  Usa Ek per produrre x1, …, xn
w  Usa Dk per produrre m1, …, mn
•  Stream ciphers
w  Si basa su di una sequenza pseudo-casuale
21
11
23/10/12
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: w  nessun tipo di crittoanalisi possibile
w  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
12
23/10/12
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!
w Se Alice manda a Bob un messaggio che
Trudy intercetta e riutilizza? [integrità]
w Quando Bob riceve un messaggio può essere
25
sicuro che sia di Alice? [autenticazione]
13
23/10/12
Crittografia e Integrità
•  La crittografia garantisce anche l’integrità? •  Non sempre…
w  Un attaccante potrebbe intercettare un
messaggio contenente §  “… ti autorizzo a prelevare 1$ dal mio conto” w  e cambiarlo con §  “… ti autorizzo a prelevare 1000$ dal mio conto” w  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:
w  Trasforma i dati in input di lunghezza arbitraria
in un output di lunghezza costante
Possibili
input m
h
Possibili
output h(m)
27
14
23/10/12
One-way function (2) - Proprietà
•  One way (= irreversibile)
w  Dato x, è facile calcolare h(x)
w  Dato y, è difficile trovare x t.c. y=h(x)
[preimage resistance]
w  Dato m, è difficile trovare m’ t.c. h(m) = h(m’)
[second preimage resistance]
•  Collision-resistant w  Difficile trovare m, m’ distinti t.c. h(m)=h(m’)
•  Effetto valanga
w  Una piccola modifica di m deve alterare tutto
h(m)
28
Paradosso del compleanno (1)
•  In crittografia usato per:
w dimensionamento del blocco da cifrare
w provare la proprietà di "resistenza alle
collisioni"
•  Per codici hash di 64 bit w Collisione tra m e m’ con circa 232 tentativi
•  Di solito la dimensione dei codici hash è
di 160 bit (SHA-1)
w Tempo di collisione: 280 tentativi
29
15
23/10/12
Paradosso del compleanno (2)
•  Che probabilità c’è che due persone
in una stessa stanza compiano gli
anni lo stesso giorno?
w in un gruppo di 23 persone 51%; w con 30 persone supera il 70%, w 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
16
23/10/12
Crittografia e Autenticazione
•  Problemi:
w Le funzioni hash non garantiscono
autenticazione w Come costruire l’equivalente della firma
“su carta” (= auth + non repudiation) ?
w 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)
w  h : {0,1}* → {0,1}n (e.g. n = 160)
w  h(m) è il message digest di m
w  Usato per integrity, firme digitali, …
w  Esempi:
§  MD4, MD5 (Message Digest) - 128-bit digest
§  SHA/SHS (Secure Hash Algorithm or Standard) 160-bit digest
•  Keyed (con chiave)
w  hk : {0,1}* → {0,1}n (e.g. n = 96)
w  Usato per message integrity e authentication
33
17
23/10/12
MAC (Message Authentication Code) •  Si tratta di una one-way keyed function
w Richiede una chiave segreta condivisa
•  Utilizzo:
w Il mittente spedisce il messaggio m e M1=MAC(m) w Il destinatario riceve entrambe le parti w 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:
w Trudy non riesce a calcolare il MAC per m’ ≠ m
w Nota: il MAC viene utilizzato per l’integrità,
non per la segretezza
35
18
23/10/12
MAC - Esempio di uso (2)
•  Nel File system:
MAC
file
hpwd(file)
w  il MAC viene verificato quando si vuole
accedere al file
w  la password pwd è necessaria per modificare il
file
36
Firma digitale •  La firma “su carta” garantisce non-repudiation per:
w  Identità
w  Firma di un contratto
•  Schema di firma digitale (basata su crittografia
asimmetrica):
w  Alice pubblica una chiave per la verifica della sua firma
(chiave pubblica)
w  Chiunque può verificare un messaggio firmato da Alice
w  Solo Alice può spedire messaggi firmati
•  Ottiene solo autenticazione e integrità
37
19
23/10/12
Proprietà della firma
•  Funzioni per firmare e verificare
w  Sign(Key-1, m)
w  Verify(Key, x, m) =
OK se x = Sign(Key-1, m)
NO altrimenti
•  Resistente alla contraffazione
w  Non si riesce a calcolare Sign(Key-1, m) da m e Key
w  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
20
23/10/12
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
Digest 2
hash
Digest 1
?
=
Digest 1
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 9 kA
…
Bob 9 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
21
23/10/12
Hashing vs. MAC vs. Firme digitali
•  Hashing: checksum “privata”
w  Produce il footprint di un messaggio
w  Deve venire memorizzata separatamente dal messaggio
•  MAC: checksum “cifrata”
w  Il footprint viene protetto da una chiave condivisa e segreta
w  Può venire trasmesso lungo un canale pubblico
•  Firma digitale: non-repudiaton
w  Il footprint viene protetto da una chiave privata
w  Non ci sono dati segreti condivisi con chi verifica la firma
42
22
Scarica