Identificazione, Autenticazione e Firma Digitale • In origine crittografia = confidenzialità • Diffusione delle reti: nuove funzionalità. • Identificazione • Autenticazione • Firma digitale • Identificazione: un sistema di elaborazione deve essere in grado di accertare l’identità di un utente che vuole accedere ai suoi servizi • Autenticazione: il destinatario di un messaggio deve essere in grado di accertare l’identità del mittente e l’integrità del messaggio • Firma digitale: funzionalità complessa richiesta quando mittente e destinatario di un messaggio non si fidano l’uno dell’altro (reciprocamente). Proprietà simili alla firma cartacea. Firma digitale... • il mittente non può negare di aver inviato il messaggio • il destinatario può accertare l’identità del mittente e l’integrità del messaggio (autenticazione) • il desinatario non può sostenere di aver ricevuto un messaggio diverso da quello che realmente ha ricevuto • il tutto verificabile da una terza parte (giudice) 1 Funzioni Hash Identificazione Autenticazione Contrastano possibili attacchi attivi Firma digitale Proprietà di funzioni Hash Funzioni Hash in crittografia: Hash one-way Elementi molto simili in X appartengano a sottoinsiemi distinti 2 Hash one-way • Prima proprietà dovrebbe valere anche per funzioni Hash classiche • Seconda proprietà: one-way • Terza proprietà: claw-free (opzionale) • Esempi: MD5, SHA Attacco sferrato dall’amministratore del sistema. L’amministratore accede al file delle chiavi. Contromisura: memorizziamo la password in forma cifrata utilizzando le funzioni hash one-way. COME ??? Identificazione: Un caso pratico ed un protocollo Caso pratico: accesso di un utente alla propria casella di posta elettronica o ai file personali memorizzati su un calcolatore ad accesso riservato. L’utente usa una login e password. Supponiamo: password ben scelta e canale sicuro Cifratura della pwd con funzioni hash one-way:UNIX Quando l’utente U fornisce per la prima volta la password P il sistema associa a P due sequenze S e Q. S e Q vengono memorizzate al posto di P S è detto seme. E’ un numero generato a caso dal sistema. Q = f(PS). 3 Cifratura della pwd con funzioni hash one-way:UNIX Quando l’utente si collega il sistema: - recupera S dal file delle chiavi, - concatena S con P e applica f ottenendo Q’. - confronta Q’ con Q. - se Q’=Q allora OK altrimenti FAIL Alcune osservazioni: • E’ difficile risalire da S,Q a P. • La presenza del seme casuale diverso per ogni utente impedisce di scoprire se due utenti hanno la stessa password e rende impossibile un attacco simultaneo a tutte le chiavi. Se qualcuno accede al file delle chiavi ottiene S e Q. Dai quali non riesce a inferire nulla su P. Abbiamo assunto che il canale attraverso il quale la chiave viene comunicata al sistema sia sicuro. In realtà di solito non lo è !!! Protocollo di trasmissione della chiave cifrata usando RSA . - U richiede accesso al sistema S - S genera un numero casuale r < n e lo invia a U - U calcola f=rd mod n (decifra r con la sua chiave privata) e - spedisce f a S (U firma r). - S cifra f calcolando r*=fe mod n - Se r*=r allora OK altrimenti FAIL Alcune osservazioni: • Il sistema non deve memorizzare le informazioni circa la chiave P. Semmai deve solo memorizzare la chiave pubblica di U • E’ possibile invertire cifratura e decifratura perché RSA e’ commutativo • SSL è un meccanismo di identificazione più sofisticato. 4 Autenticazione • Identificazione: stabilire l’identità di un utente. • Autenticazione: qualcosa in più di identificazione. • Mittente spedisce un messaggio a Destinatario. Destinatario autentica il messaggio se: MAC • Immagine breve del messaggio che può essere generata solo da un mittente conosciuto dal destinatario. • Aspetti in comune con le funzioni Hash crittografiche • A volte generato usando funzioni Hash crittografiche • Entra in gioco una chiave segreta k Esempio di MAC Il MAC ha una lunghezza fissata indipendente da n MAC(m,k) MAC Messaggio m di lunghezza n qualsiasi - identifica Mittente + - verifica l’integrità del messaggio MAC Message Authentication Code Otteniamo un MAC applicando una funzione hash alla concatenazione di m e della chiave k NOTA: il MAC non è invertibile. Può solo essere calcolato di nuovo ma non invertito !!! 5 Esempio di Autenticazione usando MAC - Mitt spedisce (m,h(mk)) a Dest. - Dest riceve (m*,h(mk)*). - Dest conosce k quindi può calcolare h(m*k). - Dest confronta h(m*k) con h(mk)*. - Se h(m*k)=h(mk)* Dest conclude che m*=m (integro) e che il mittente di m è effettivamente Mitt. Autenticazione + confidenzialità - Mitt spedisce (Ck(m),h(mk)) a Dest. - Dest riceve (Ck(m)*,h(mk)*). - Dest conosce k quindi decodifica Ck(m)* e risale a m* - Dest conosce k quindi può calcolare h(m*k). - Dest confronta h(m*k) con h(mk)*. - Se h(m*k)=h(mk)* Dest conclude che m*=m (integro) e che il mittente di m è effettivamente Mitt. Perché ? • L’intruso X non può spedire un messaggio a Dest fingendosi Mitt. Perché ? Perché non conosce k. IDENTIFICAZIONE • L’intruso X intercettando (m,h(mk)) non può modificare m. Perché ? Perché non conosce k. INTEGRITA’ • Cosa succederebbe spedendo (m,h(m)) ??? Firma Manuale e Firma Digitale • La firma digitale deve soddisfare le proprietà di quella manuale. • La firma digitale è una stringa di bit e quindi è facilmente duplicabile/copiabile. La firma manuale no !! • Firma manuale e firma digitale sono fisicamente oggetti di natura completamente diversa ! 6 Firma Digitale: Implementazione Ingenua Firma Manuale: Proprietà • La può generare solo una persona e non è falsificabile. • Non è riutilizzabile (legata al documento su cui è apposta). • Il documento su cui è apposta non è modificabile. • Non può essere ripudiata da chi l’ha generata. Diffie e Hellman: Cifrari Asimmetrici U Firma: f=D(m,kU[priv]) send <U,m,f> Pr ot oc ol lo V Verifica: m*=C(f,kU[pub]) if m*=m then si else no Firma digitale: digitalizzazione della firma manuale, ad esempio usando uno scanner. Attacco: Copia e Incolla !!! Osservazioni 1 • Occorre un cifrario commutativo, cioè D(C(m)) = C(D(m)) = m. RSA è commutativo. • Il documento firmato non è indirizzato ad uno specifico destinatario. Tutti possono fare la verifica. 7 Proprietà del protocollo Difetti del protocollo • La può generare solo una persona: colui che conosce kU[priv] cioè U. • Non è riutilizzabile/copiabile/falsificabile: in quanto è funzione del documento su cui è apposta. • Il documento su cui è apposta non è modificabile: in quanto anche la firma andrebbe nuovamente generata. • Non può essere ripudiata da chi l’ha generata: in quanto solo conoscendo kU[priv] è possibile generarla. • La lunghezza del messaggio scambiato è il doppio della lunghezza del messaggio originario. • Il messaggio non può essere mascherato in quanto dall’operazione di verifica è possibile risalire al messaggio spedito Protocollo 2: RSA Soluzione U Firma e cifra: f=D(m,kU[priv]) c=C(f,kV[pub]) send <U,c> U Firma e cifra: Pr ot oc ol lo V Verifica: f*=D(c*,kV[priv]) m*=C(f*,kU[pub]) if m* ”ha senso” then si else no send <U,c> 2 V Verifica: if m* ”ha senso” then si else no 8 Protocollo 2: RSA Problemi con la lunghezza delle chiavi ! Perché ??? U Firma: send <U,c> Cosa succede se V vuole a sua volta firmare e cifrare messaggi da mandare a U ? Soluzione Assumere che U e V debbano avere chiavi della stessa lunghezza per potersi mandare documenti firmati e cifrati non ci va bene!!! • H = 21024 parametro che distingue la lunghezza delle chiavi per firmare e delle chiavi per cifrare. • U genera: <e1U,n1U> e <d1U,n1U> con n1U>H per la cifratura e decifratura <e2U,n2U> e <d2U,n2U> con n2U<H per la firma e la verifica. 9 In Pratica... U Firma: f=D(h(m),kU[priv]) c=C(m,kV[pub]) send <U,c,f> Men in-the-middle Attack Pr ot oc ol lo V Verifica: m*=D(c*,kV[priv]) if h(m*)=C(f*,kU[pub]) then si else no Men in-the-middle Attack • U richiede a V la sua chiave pubblica kV[pub] (per e-mail ad esempio) • X intercetta kV[pub] e la sostituisce con kX[pub] • X intercetta i crittogrammi da U a V li decodifica con kX[priv] li ri-codifica con kV[pub] e li ri-spedisce a V 3 • • • • • Attacco attivo X si mette nel mezzo tra U e V X si comporta come U per V X si comporta come V per U X devia la comunicazione tra U e V facendola passare per se stesso... CA: Certification Authority • Enti preposti alla certificazione di validità delle chiavi pubbliche. • Certificato: – Chiave pubblica di U – Lista di Informazioni su U – Date di inizio e fine validità del certificato – Lista di Algoritmi di codifica usati – Firma di CA 10