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