Elementi di Sicurezza e Privatezza Lezione 4 - Crittografia Chiara Braghin chiara.braghin@unimi.it
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 chiave di decodifica Alice (mittente) plaintext testo in chiaro 1. 2. Codifica 3. ciphertext testo cifrato 4. Decodifica plaintext 5. 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: D k (E k (m)) = m E k (m) è semplice da calcolare, dati m e k D k (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 = E k (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 plaintext 1. 2. Codifica 3. ciphertext 4. Decodifica plaintext 5. 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 (17-34 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 3DES k1,k2 (m) = E k1 (D k2 (E k1 (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 A 1,, A n 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 A 1 A 5 A 2 A 4 A 3 16
Gestione delle chiavi (2) -KDC A 1 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? K 1 A 5 K 5 KDC K 2 A 4 K 4 K 3 A 3 A 2 Se A i vuole parlare a A j : A i KDC: collegami a A j KDC genera una nuova chiave K ij KDC A i : E ki (K ij ) KDC A j : E kj (K ij, A i 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 Alice plaintext 1. chiave pubblica di Bob K B chiave privata di Bob K B 2. Codifica 3. ciphertext 4. Decodifica plaintext La segretezza del messaggio è garantita 5. 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 m 1,, m n Aggiunge dei bit finali all ultimo blocco Usa E k per produrre x 1,, x n Usa D k per produrre m 1,, m n 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 sicuro che sia di Alice? [autenticazione] 25
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 2 32 tentativi Di solito la dimensione dei codici hash è di 160 bit (SHA-1) Tempo di collisione: 2 80 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) h k : {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) Alice k Send m, h k (m) Trudy m, h k (m) MAC Bob k Receive m, h k (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 h pwd (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 Testo in chiaro hash digest 2. Codificare il digest con la chiave privata del mittente (= firma digitale) digest chiave privata mittente Firma digitale 3. Creare coppia testo+firma e spedirla 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 testo chiave pubblica mittente hash Firma digitale? Digest 1 = Digest 2 Digest 1 Digest 2 40
Firma digitale - Esempio Alice vuole firmare m e spedirlo a Bob Alice s = Sign k -1 A (h(m)) Send m,s K -1 A Dati pubblici Alice k A Bob k B m,s Ver ka (s,m) = Ok if s = Sig k (m) No otherwise Bob Receive m,s K -1 B Execute Verify ka (s, h(m)) 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 A 1 1. Alice spedisce k a CA Certification Authority 2. CA verifica che Alice conosca k -1 A 5 k C k CA A 2 Challenge-Response exchange 3. CA genera C k e lo spedisce a Alice A 4 A 3 Alice spedisce C k quando usa k A allega sempre C k (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 K CA per la verifica della firma Certificate K CA Authority 1. K S 2. Certificate Sign(K CA-, K S ) Client 3. Sign(K CA-, K S ), Sign(K S, msg) Server Il certificato del server può venire verificato dai clienti che conoscono la chiave K CA della CA La certificate authority è off line 51
Formato certificati C k = (A,k,t exp,priv,,sig CA ) t exp = 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...... CA 1 CA 2 CA 3 CAn............ X.509 X.509 X.509 X.509 X.509 X.509 X.509 X.509 X.509 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 CA 1 CA 2 CA 5 Catene di certificati Contiene i certificati di tutti i nodi fino alla radice Durante la verifica, i certificati vengono scambiati solo per i nodi fino al primo antenato comune 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 CA 11 CA 17 CA 51 A B 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