Luciano Margara [email protected] http://www.cs.unibo.it/~margara Ufficio: Via Malaguti 1/b Tel: 051 209 4886 Una Panoramica del corso. Obiettivo: Comunicazioni private in ambienti pubblici Strumento: Cifrari Esiste un cifrario perfetto ? • Perfetto ~ inattaccabile. La risposta è né SI né NO !! • Esistono cifrari perfetti ma inefficienti • Esistono cifrari pratici non perfetti ma efficienti • Robustezza • Conquistata sul campo • Relazione con problemi matematici difficili • Difficoltà di risoluzione – impossibilità: NO – improponibilità: SI Alcune Definizioni • Crittologia: Crittografia + Crittoanalisi • Crittografia: progetto di cifrari sicuri ed efficienti. • Crittoanalisi: metodi, strumenti e tecniche per attaccare i cifrari (valutare la loro bontà). Lo Scenario Mitt c c … Dest Q ui ck Ti m e ™ an d a T I FF ( U nc om p r es se d) de co m pr e ss or ar e n ee de d t o se e t hi s pi ct u re . X Mitt = mittente del messaggio m in chiaro Dest = destinatario del crittogramma c X = impostore che ascolta (crittoanalista) C e D funzioni di cifratura e decifrazione L’intruso X • Motivo: curiosità, spionaggio, malvagità,… • Ruolo – Passivo: si limita ad ascoltare – Attivo: può inserirsi nella comunicazione o modificarla • Informazioni in suo possesso: – Cipher-text attack: serie di crittogrammi c1,…., cn – Known plain-text attack: collezione di coppie (mi, ci) – Chosen plain-text attack: collezione di coppie scelte Definizioni e Notazione • Funzione di cifratura • C(m) = c è il crittogramma • Funzione di decifrazione • D(c) = m è il messaggio in chiaro originale • Matematicamente D è l’inversa di C: • D(C(m)) = m • Se D(C(m)) = C(D(m)) = m, allora commutativa Come realizzare C e D ? • Due grandi famiglie: • Cifrari per uso ristretto: • La sicurezza si basa sul fatto che C e D sono tenute nascoste. • quindi non è previsto l’uso di una chiave segreta. • Cifrari per uso generale: • C e D sono note a tutti. • La sicurezza si basa sull’utilizzo di una chiave segreta nota solamente al mittente e al destinatario. Chiave Segreta: una metafora fisica. Uguali Utente A Utente B è necessario incontrarsi per scambiarsi le chiavi !!! • Quanto costa scambiare la chiave ? • Incontro face-to-face ma una tantum • Posso ammortizzare il costo dello scambio • Posso usare canali costosi e disponibili poco frequentemente • Lo spazio delle chiavi deve essere grande: • No brute-force attacks (visita esaustiva dello spazio) • Prerequisito cruciale ma non sufficiente • Passo in avanti sostanziale: • Dal punto di vista teorico • Dal punto di vista economico • Esempi: DES, RC5, IDEA, … (hanno superato la prova del fuoco) Cifrari Simmetrici o a chiave segreta • Ruolo di Ck e Dk completamente interscambiabile • Mittente ~ Destinatario: – – – – – Conoscono la stessa chiave k Entrambi possono cifrare e decifrare Incontro segreto per accordarsi sulla chiave Segretezza della chiave dipende da entrambi Cifratura e decifrazione sono molto efficienti in pratica • Quali sono i difetti di questi cifrari ? – Occorre scambiarsi la chiave – Dati n utenti, abbiamo bisogno di [n (n-1) / 2] chiavi – Troppe per essere memorizzate e scambiate segretamente Chiave Pubblica: una metafora fisica. Mittente Destinatario Fase Fase1 2 Cifrari Asimmetrici o a Chiave Pubblica • Anno 1976: punto di svolta! (Diffie-Hellman e Merkle) • Obiettivo: rompere il legame tra Ck e Dk – Chiunque sappia come cifrare non deve sapere come decifrare – Chiave k scomposta in due parti < k[priv], k[pub] > : • La chiave k viene creata da Dest • k[priv] tenuta segreta da Dest e usata per costruire Dk[priv] • k[pub] resa pubblica da Dest e usata da tutti per definire Ck[pub] • Difficile andare da k[pub] a k[priv] !! • Concetto funzione one-way trap-door: – Ck[pub] facile, ma Dk[priv] difficile senza k[priv] ! Funzioni One-way con trapdoor • Funzioni facili da calcolare, • difficili da invertire, • a meno che... non si conosca qualche informazione aggiuntiva... Funzioni One-way con trapdoor Lucchetto: - è facile da chiudere - è difficile da aprire - se non si possiede la chiave Funzioni One-way con trapdoor Cassetta delle lettere: - è facile imbucare una lettera - è difficile estrarre una lettera - se non si possiede la chiave Funzioni One-way con trapdoor p,q numeri primi: - è facile calcolare n=pq - è difficile dato n trovare p e q - se conosciamo p diventa facile (q=n/q) Il Nuovo Scenario U1 c1 Un cn Numero chiavi per n utenti ---> soltanto n Lasciano penetrare qualche informazione... Esempi: RSA, El Gamal, … (sono considerati oggi robusti) Dest Panacea delle comunicazioni segrete? • Cifrari asimmetrici sono inefficienti ! • Sistemi Ibridi = asimmetrici + simmetrici !! – Mitt e Dest scelgono “pubblicamente” una chiave “segreta” K* utilizzando un cifrario asimmetico – Mitt e Dest comunicano con un cifrario simmetrico basato su K* – K* viene sostituita più volte nel corso di una comunicazione – (session-key) Lentezza degli asimmetrici incontrata solo nello scambio sporadico delle session-key. Incontro face-to-face per scambio chiavi segrete (nei simmetrici) aggirato attraverso l’uso dei cifrari asimmetrici per raggiungere l’accordo. N2 chiavi segrete (nei simmetrici) nascoste dall’uso delle session-key (usa e getta). Conclusioni • Confidenzialità è il solo requisito dei sistemi crittografici moderni ? • Oggigiorno se ne richiedono altri 4: • User Identification: Dest può accertare che è proprio Mitt che sta parlando o vuole parlare con lui. • Integrità: Deve essere possibile per Dest stabilire che il messaggio ricevuto non ha subito modifiche parziali o totali (sostituzione). • Autenticazione: Deve essere possibile per Dest accertare che il messaggio ricevuto proviene proprio da Mitt. • Firma Elettronica: Mitt non può sottrarsi dall’ammettere che è stato lui a spedire il messaggio, e Dest può convincere una terza persona (giudice) che questo è il caso. Parte I: Fondamenti e Tecniche di Base Cifrari Storici Prologo • Motivazioni: – Scopi educativi: concetti, tecniche di base,… – Divertimento: settimana enigmistica… • Crittografia manuale • Sono note tecniche statistiche per forzarli! • Nota: – Messaggi e crittogrammi composti di lettere – Chiave segreta: esiste oppure no (degenere) Cifrario di Cesare a b c d e f g h i l mn o p q r s t u v z C D d e f g h i l mn o p q r s t u v z a b c o g g i è u n a b e l l a g i o r l l n h a q d e h o od l n r È un cifrario degenere Introdurre chiave k = shift ciclico C(mi) = lettera in posizione (pos(mi) + k) mod 21 D(ci) = lettera in posizione (pos(ci) – k) mod 21 Cifrario Completo • Ammettiamo tutte le possibili permutazioni dell’alfabeto – sono (21! – 1), un numero spropositatamente grande ! • Chiave k = <BFRULMZQWEA....> = una permutazione • Questo cifrario è sicuro ? No, attacco statistico. – Istogrammi di frequenza delle lettere nelle frasi in italiano – Istogrammi di frequenza delle lettere nel crittogramma – Molti crittogrammi a disposizione ! A B C D A B C D Cifrario a Trasposizione 1 2 3 4 5 6 7 8 9 10 11 12 13 14 m=ci vediamo t a r d i c =ci dvaiemo r t i d a = <1,2,5,3,7,6,4> • Permutazione delle lettere • Periodo = 7 • No attacco statistico ! • Attacco sulla lunghezza del periodo Cifrario Polialfabetico Ogni occorrenza di una lettera nel messaggio in chiaro può essere sostituita con diverse lettere nel crittogramma, a seconda della sua posizione o del suo contesto. ABCDEFGHIJKLMNO.. A B C D ... Y Z ABCDEFGHIJKLMNO.. BCDEFGHIJKLMNO.. CDEFGHIJKLMNO... DEFGHIJKLMNO... ... YZABCDEFGHIJK... ZABCDEFGHIJ.... m k F E D E L E ... B A C C A B ... c G E F G L F ... - Monoalfabetico ogni |k| caratteri - Attacco statistico possibile, ma difficile Cifrari Perfetti: one-time pad One-time pad: esempio Messaggio: Chiave: Crittogramma: Chiave: Messaggio: 1 1 0 1 0 0 0 1 1 0 0 0 1 1 1 0 0 1 0 1 1 1 1 1 1 0 0 0 1 1 1 0 1 1 0 1 0 0 0 1 Pregi e Difetti • Se ogni bit della chiave è generato casualmente allora conoscere un bit del crittogramma non fornisce nessuna informazione aggiuntiva sul corrispondente bit del messaggio: cifrario perfetto. • La chiave (pad): – è lunga (quanto il messaggio) – si consuma (one-time) – occorre scambiarsela DES Data Encryption Standard Un po’ di storia… • Nel 1972, l’NBS (National Bureau of Standards. Oggi NIST: National Institute of Standards and Technology) iniziò un programma per proteggere le comunicazioni non classificate. • Lo scenario era interessante: – NSA (National Security Agency) disponeva di molte conoscenze in materia di cifrari e metodi di decrittazione. – Esistevano molti prodotti pressocchè oscuri, non certificati e non compatibili. • Nel 1973, l’NBS pubblicò un call for proposals: – Sistema a chiave segreta (certificazione e chiarezza) – Realizzabile in hardware (compatibilità) • Bando andò pressocchè deserto. …. ancora un po’. • In un bando successivo IBM propose un sistema simile al suo prodotto Lucifer (operazioni logiche su gruppi di bit) • Poco dopo NSA certificò Lucifer con il nome di DES: fece commenti e propose variazioni. – Chiave ridotta da 128 bit a 64 bit. – Modifiche significative alla funzione S-box. • Diverse agenzie replicarono in modo allarmato !! • Dopo alcune indagini il DES fu certificato e reso pubblico nel 1977. • Primo esempio di cifrario robusto (con certificazione NSA) che i ricercatori potevano studiare. • È stato certificato pressocchè ogni 5 anni, dal 1998 non è più considerato sicuro. Ad esso si preferisce il Triplo-DES. • AES: il cifrario simmetrico del prossimo millennio ! Caratteristiche principali di DES • • • • Codifica Simmetrica Codifica a blocchi Blocco = 64 bit Chiave = 64 Bit (solo 56 usati) Operazioni di Base • • • • • Permutazione Sostituzione Espansione Contrazione Shift Circolare (destro e sinistro) Permutazione 1 5 2 1 3 6 4 3 5 2 6 4 P=(5,1,6,3,2,4) Un bit in ingresso determina un bit in uscita Sostituzione Ingresso: A B C Uscita: A+B+C 000 001 010 011 100 101 110 111 010 011 100 111 110 000 001 101 Ogni ingresso può determinare ogni uscita Una permutazione è anche una sostituzione Ci sono sostituzioni che non sono permutazioni Espansione Numero delle uscite maggiore del numero degli ingressi Esempio: 3 3 3 3 Contrazione Numero delle uscite minore del numero degli ingressi Esempio (scelta): 1 2 1 3 6 4 3 5 2 6 Alcuni ingressi non influenzano le uscite, vengono scartati Scelta Permutata 1 Permutazione 2 1 6 3 2 4 4 4 2 5 6 1 6 Scelta (contrazione) 64 bit testo in chiaro 64 bit chiave Permutazione Iniziale : PI Scelta Permutata: T Fase 1 Fase 2 Fase 16 k1 k2 k16 Scelta Permutata 2 Shift circolare a Sinistra Scelta Permutata 2 Shift circolare a Sinistra Scelta Permutata 2 Shift circolare a Sinistra Scambio a 32 bit Permutazione Iniziale Inversa: PF 64 bit testo cifrato PI, PF, e T Mancano ingressi: 8,16,24,32,40,48,56,64. Servono come controllo di parità. 32 L i-1 32 28 R i-1 Espansione/Permutazione 28 R i-1 D i-1 Shift a sinistra Shift a sinistra 48 XOR 48 Ki Permutazione/Contrazione 48 Sostituzione/Scelta 32 Permutazione 32 XOR Li 32 Ri Ci Di 32 28 28 E + 48 bit s1 s2 s3 s4 K (48 bit) s5 P 32 bit s6 s7 s8 32 E 48 S-Box RSA Rivest, Shamir, Adelman E’ necessaria la chiave segreta ? • A manda a B lo scrigno chiuso con il suo lucchetto. • B chiude lo scrigno con un secondo lucchetto e lo rimanda ad A • A toglie il suo lucchetto e rimanda lo scrigno a B • B apre lo scrigno !!! Un secondo protocollo • B manda ad A il suo lucchetto aperto • A chiude lo scrigno con il lucchetto ricevuto da B e glielo spedisce • B riceve lo scrigno e lo apre !!! Funzioni One-way con Trapdoor • Un lucchetto è una funzione one-way con trapdoor ! • Infatti tutti possono chiudere un lucchetto pur senza possedere la chiave. • Nessuno può aprire un lucchetto senza avere la chiave. • La cassetta delle lettere è un’altra funzione one-way con trapdoor. Perchè ? Chiave Pubblica • Per ottenere un protocollo a chiave pubblica occorre trovare una funzione matematica one-way con trapdoor ! • Cioè una funzione facile da calcolare e difficile da invertire a meno di possedere qualche informazione aggiuntiva (chiave). • La Teoria dei numeri ci viene in aiuto… RSA • Generazione delle chiavi • Codifica. Encryption. C(m) • Decodifica. Decryption. D(c) RSA: Generazione delle chiavi. Scelgo due numeri primi grandi p e q Calcolo n=pq Scelgo e tale per cui GCD(e,(n)) = 1 Calcolo d tale per cui de mod (n) = 1 Chiave Pubblica = (e,n) Chiave Privata = (d,n) RSA: Encryption c= e m mod n RSA: Decryption m= d c mod n RSA: esempio. • Scegliamo p=5 e q=11. • Dunque n=55 e (n)= (5-1)(11-1)=40. • Prendiamo e=7. Calcoliamo d=23. d * e = 161 = 4 * 40 + 1 = 1 mod 40. • Quindi il nostro sistema ha le seguenti chiavi: K[priv]=(23,55) e K[pub]=(7,55) • Sia m=5. Codifica: c=57 mod 55 = 25 Decodifica: m=c23 mod 55 = 5 Domande • • • • Chi ci assicura che D(C(m)) = m ? Chi dice che RSA sia sicuro ? RSA è efficiente ? Come eseguo le varie operazioni ? Correttezza di RSA Sicurezza di RSA • Nessun Teorema !!! • Nessuno è ancora riuscito a violare RSA • Un modo per risalire alla chiave privata conoscendo quella pubblica è il seguente: Fattorizzo n e ottengo p e q. Calcolo (n) e quindi d. • Si congettura sia vero anche il viceversa. Massimo Comun Divisore Definizione: produttoria dei fattori comuni con il minimo esponente Esempio: GCD(233472,2271132) = 2271 Algoritmo ottenuto dalla definizione: FATTORIZZAZIONE !!! Tempo esponenziale Serve un’idea !!! Algoritmo di Euclide GCD(x,y) = GCD(x-y,y) GCD(x,y) = GCD(x-ky,y) GCD(x,0) = x GCD(408,595) x n -2 -1 0 1 2 3 4 qn 0 1 2 5 2 y rn 408 595 408 187 34 17 0 un 1 0 1 -1 3 -16 35 qn = rn-2 div int rn-1 un = un-2 - qnun-1 vn = vn-2 - qnvn-1 rn = unx + vn y vn 0 1 0 408 = 2187 + 34 3 = 1 - 2-1 1 -2 11 -24 Se x e y sono primi tra loro alla fine abbiamo Quindi u è l’inverso moltiplicativo di x modulo y ovvero Vogliamo d: ed 1 mod (n) sapendo già che GCD(e, (n)) = 1 Usiamo l’algoritmo di Euclide. Calcoliamo GCD(e,(n)) ottenendo u e v tali per cui ue + v(n) = 1 u è ciò che cerchiamo !!! Algoritmo di Euclide. Function E(a,b) if b=0 then Return a else Return E(b, a mod b) Algoritmo di Euclide Esteso. Function EE(a,b) if b=0 then Return <a,1,0> else <d’,x’,y’> = EE(b,a mod b) <d,x,y> = <d’,x’,y’-a/by’> Return <d,x,y> ALGORITMO STUPIDO: Moltiplico 158 per 158 per 158.... 58 volte e poi divido per 678 e prendo il resto. Tempo di esecuzione dell’ALGORITMO STUPIDO per calcolare qualche decimo di secondo... per calcolare con a e b di 150 cifre = usando tutti i calcolatori del mondo, la vita dell’universo !!!! Trucchi computazionali per calcolare Eseguire l’operazione di modulo dopo gni operazione (non basta!) ...ma... Cosa succede se devo calcolare ??? Operazioni Base: Usiamo le operazioni base per calcolare efficientemente il risultato finale. Concludendo... • Le operazioni di modulo le distribuisco ad ogni passo ( per ridurre le dimensioni dei numeri ottenuti via via..) • EFFICIENZA ? OK! Il numero di moltiplicazioni è lineare nell’esponente. Generazione di primi “grandi” Ci sono tavole di numeri primi ma non così grandi... Quanti numeri primi ci sono ? Ovvero, come sono distribuiti ? Qual è la probabilità di prendere un numero a caso e questo sia primo ? n di 10 cifre n di 100 cifre IDEA: Genero n a caso poi verifico se è primo. Se è primo ho finito. Altrimenti Inizio da capo. Test di Primalità Fino a qualche tempo fa non si conosceva nessun algoritmo per testare se un numero è primo oppure no. Adesso esiste un algoritmo che svolge questo compito in n4 passi. Polinomiale ma poco efficiente. Come si procede in pratica ??? Teorema di Fermat (caso particolare del teorema di Eulero) Pomerance 1981 a numero casuale tra 1 e n-1 n numero casuale di circa 100 cifre Test probabilistico di primalità 1234- Genero n Genero a Calcolo If x = 1 then else a caso tra 1 e n a caso Stop: n primo Stop: n composto Analisi dell’algoritmo: Se n è primo: risposta esatta sempre. Se n è composto: risposta errata con probabilità = Può non essere sufficiente per alcune applicazioni !! Come procediamo ??? Test probabilistico di primalità ESTESO. 1- Genero n a caso 2- Genero a tra 1 e n a caso 3- Calcolo 4- If x = 1 then Stop: n primo k volte else Stop: n composto Come generare d, e ? • e deve essere primo con • d deve soddisfare 1- Scelgo e a caso. 2- Verifico se e è primo con (n). 2.a- Se si Fine 2.b- Se no goto 1. Con l’algoritmo di Euclide Esteso trovo l’inverso moltiplicativo di e mod (n) 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) Identificazione Autenticazione Firma digitale Contrastano possibili attacchi attivi Funzioni Hash Proprietà di funzioni Hash Elementi molto simili in X appartengano a sottoinsiemi distinti Funzioni Hash in crittografia: Hash one-way Hash one-way • Prima proprietà dovrebbe valere anche per funzioni Hash classiche • Seconda proprietà: one-way • Terza proprietà: claw-free (opzionale) • Esempi: MD5, SHA 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 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 ??? 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 = h(PS). 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 Se qualcuno accede al file delle chiavi ottiene S e Q. Dai quali non riesce a inferire nulla su P. 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. 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. 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: - identifica Mittente + - verifica l’integrità del messaggio MAC Message Authentication Code • 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 Il MAC ha una lunghezza fissata indipendente da n MAC(m,k) MAC Messaggio m di lunghezza n qualsiasi MAC Esempio di MAC 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 !!! 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. 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)) ??? 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. 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 ! 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. Firma Digitale: Implementazione Ingenua Firma digitale: digitalizzazione della firma manuale, ad esempio usando uno scanner. Attacco: Copia e Incolla !!! Diffie e Hellman: Cifrari Asimmetrici U: Firma. f=D(m,kU[priv]) send <U,m,f> V: Verifica. m*=C(f,kU[pub]) if m*=m then si else no Osservazioni • 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. Proprietà 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. Difetti del protocollo • 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 Soluzione U: Firma e cifra f=D(m,kU[priv]) c=C(f,kV[pub]) send <U,c> V: Verifica. f*=D(c*,kV[priv]) m*=C(f*,kU[pub]) if m* ”ha senso” then si else no In Pratica... U: Firma. f=D(h(m),kU[priv]) c=C(m,kV[pub]) send <U,c,f> V: Verifica. m*=D(c*,kV[priv]) if h(m*)=C(f*,kU[pub]) then si else no Men in-the-middle Attack • • • • • 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... kV[pub] V: Destinatario di un messaggio cifrato. U: Mittente di un messaggio cifrato. kV[pub] kX[pub] Intruso X kV[pub] kX[pub] 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 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 Certificato di U in formato X.509 • Numero di versione dello standard X.509 utilizzato. • Chiave pubblica di U. Caratteristiche della chiave (lunghezza, algoritmo con cui è stata creata, data di creazione, durata della chiave…) • Numero del certificato. Serve ad esempio per la revoca (CRL) • Distinguished name (DN): identificativo di U su tutta la rete. • Periodo di validità del certificato (inizio e fine validità). • Il nome di chi ha firmato il certificato (di solito una CA), la sua firma digitale e l’algoritmo usato per apporre la firma.