CRITTOGRAFIA Obiettivi della crittografia Si applica nello scambio di messaggi ! Serve a garantire ! ! ! ! ! Segretezza Autenticità Integrità Il testo del messaggio viene modificato attraverso una funzione di codifica ! Chi intercetta il messaggio non deve essere in grado di comprenderne il contenuto Giorgio Giacinto 2013 Crittografia 1 Crittografia di un messaggio Giorgio Giacinto 2013 Crittografia 2 Strumenti della crittografia ! Algoritmo di crittografia ! ! Una funzione E che produce il messaggio crittato C a partire dal messaggio originale M e da una chiave K C = E(K,M) La chiave consente la lettura del messaggio solo all’autore e ai destinatari legittimi Giorgio Giacinto 2013 Crittografia 3 Crittografia simmetrica e asimmetrica ! Simmetrica ! ! Stessa chiave per crittare e decrittare la chiave deve restare segreta e nota solo a mittente e destinatario Asimettrica ! Due chiavi, una pubblica e una privata Giorgio Giacinto 2013 Crittografia 4 Crittografia e Chiavi Rivest-Shamir-Adelman Giorgio Giacinto 2013 Crittografia 5 Crittoanalisi ! Obiettivo: violazione dello schema di crittazione ! ! ! ! ! ! Violazione di un singolo messaggio Individuazione di un algoritmo per la decrittazione Deduzione di alcuni contenuti del messaggio Individuazione della chiave Scoprire le vulnerabilità dell’implementazione o nell’utilizzo della crittografia Scoprire le vulnerabilità di un algoritmo di crittografia Giorgio Giacinto 2013 Crittografia 6 Tecniche principali di crittografia ! Sostituzione ! ! ! I singoli caratteri del messaggio vengono sostituiti con altri caratteri in base a una qualche regola Obiettivo di questa tecnica è la confusione del contenuto delle informazioni nel testo crittato Permutazione ! ! Parti del messaggio vengono spostate di posizione Obiettivo di questa tecnica è la diffusione del contenuto informativo del messaggio in modo casuale nel testo crittato Giorgio Giacinto 2013 Crittografia 7 Crittazione a flussi e a blocchi Crittazione a flussi Alta velocità Resistenza a errori Bassa diffusione Può essere alterato Giorgio Giacinto 2013 Crittazione a blocchi Bassa velocità Propagazione degli errori Alta diffusione Resistenza ad alterazioni Crittografia Crittazione per sostituzione 8 Cifrario di Cesare ! Ciascun carattere del messaggio è sostituito dal carattere 3 posizioni più avanti ci = E(pi) = pi + 3 ad esempio treaty impossible diventa wuhdwb lpsrvvleoh Giorgio Giacinto 2013 Crittografia 10 Altre sostituzioni ! Stabilisco una chiave (es., chiave) che sostituisco alle prime lettere dell’alfabeto. ABCDEFGHIJKLMNOPQRSTUVWXYZ CHIAVEBDFGJKLMNOPQRSTUWXYZ più complicato, con una permutazione che considera una lettera ogni 3, modulo 26 ABCDEFGHIJKLMNOPQRSTUVWXYZ ADGJMPSVYBEHKNQTWZCFILORUX Giorgio Giacinto 2013 Crittografia 11 Altre tecniche di crittazione per sostituzione ! OTP (One Time Pad) ! ! Libro delle chiavi “usa&getta” Il messaggio viene allineato con tante chiavi quante ne servono a coprire l’intero messaggio ad es., se le chiavi hanno lunghezza 20 caratteri, per crittare un messaggio di 300 caratteri occorrono 15 chiavi ! Il messaggio crittato si costruisce consultando la tavola di Vigenère ! “somma” dei caratteri del messaggio e della chiave, dove alla lettera A corrisponde la cifra 0 Giorgio Giacinto 2013 Crittografia Permutazioni 12 Trasposizioni per colonna ! Se usiamo 5 colonne, il testo THIS IS A SAMPLE MESSAGE si dispone T H I S I S A S A M P L E M E S S A G E e il risultante messaggio crittato diventa TSPS HALS ISEA SAMG IMEE Giorgio Giacinto 2013 Crittografia 14 Combinazioni di più approcci ! Sostituzioni e trasposizioni sono la base per la costruzione di algoritmi di crittazione sicuri ! Non è detto che applicando consecutivamente due crittazioni diverse a un messaggio, si ottenga una crittazione più robusta Giorgio Giacinto 2013 Crittografia 15 Algoritmi di crittografia “sicuri” Cosa si intende per “sicuro”? ! Shannon (1949) ! ! ! ! ! La quantità di lavoro necessaria per crittazione e decrittazione deve essere rapportata al livello di segretezza L’insieme di chiavi e algoritmi di crittazione devono essere privi di complessità L’implementazione del processo deve essere semplice Gli errori della crittazione non devono propagarsi La dimensione del testo crittato non deve essere superiore a quella del testo originale Giorgio Giacinto 2013 Crittografia 17 Crittoanalisi ! Per effettuare la crittoanalisi occorre essere in possesso di una o più informazioni ! ! ! ! Il testo crittato Il testo in chiaro completo Un testo in chiaro parziale L’algoritmo Giorgio Giacinto 2013 Crittografia 18 Cinque approcci alla crittoanalisi ! Ciphertext-only ! ! Known-plaintext or probable-plaintext ! ! L’attaccante riesce a ottenere la crittazione di un testo a sua scelta Chosen-plaintext e algoritmo ! ! Si ha a disposizione tutto o parte del testo originale oltre al testo crittato Chosen-plaintext ! ! Si ha a disposizione solo il testo crittato L’analista può fare tante prove di crittazione per individuare la chiave Coppie di testo crittato e testo in chiaro Giorgio Giacinto 2013 Crittografia 19 Sistemi di crittografia commerciali ! Soddisfano i seguenti requisiti ! ! ! Solide basi matematiche Analizzato da esperti competenti indipendenti Hanno superato la “prova del tempo” Giorgio Giacinto 2013 Crittografia Sistemi di crittografia simmetrica 20 Algoritmi di crittografia simmetrica ! A blocchi ! ! ! ! ! DES (Data Encryption Standard) 3DES (Triple DES) AES (Advanced Encryption Standard) Blowfish (1993, Bruce Schneier) A flussi ! RC4 (1987, Ron Rivest) Giorgio Giacinto 2013 Crittografia 22 DES ! Nato negli anni ‘70 per volontà del governo USA per finalità pubbliche ! Nel 1974 rispose al bando l’IBM che sviluppo l’algoritmo denominato DES ! Adottato come standard nel 1976 e successivamente adottato dall’ISO Giorgio Giacinto 2013 Crittografia 23 L’algoritmo DES Operazioni logiche e aritmetiche sui blocchi Esempio di funzionamento dell’algoritmo http://people.eku.edu/styere/Encrypt/JS-DES.html Crittazione a blocchi di 64 bit, chiave a 64 bit (efficaci solo i primi 56 bit) Giorgio Giacinto 2013 Crittografia 24 Doppio e Triplo DES ! Doppio DES ! Si critta il messaggio 2 volte con due chiavi diverse ! ! Tempo di decrittazione doppio rispetto a singolo DES Triplo DES ! Si critta il messaggio con una chiave, si decritta con una seconda chiave e si critta nuovamente con una terza chiave C = E(k3, D(k2, E(k1, m))) robustezza equivalente all’uso di una chiave di 112 bit Giorgio Giacinto 2013 Crittografia 25 Sicurezza di DES ! L’incremento della potenza computazionale dei calcolatori ha minato la sicurezza offerta da DES ! ! Nel 1998 è stata costruita una macchina del valore di circa 100.000 USD che in 4 giorni è in grado di individuare una chiave DES Per questo motivo il NIST nel 1995 ha avviato la ricerca di un nuovo algoritmo: AES Giorgio Giacinto 2013 Crittografia 26 AES ! Gara del NIST nel 1997 per un algoritmo ! ! ! ! ! ! ! ! Non segreto Divulgato pubblicamente Disponibile per l’utilizzo mondiale senza diritti di sfruttamento Simmetrico con crittazione a blocchi (128 bit) Utilizzabile con chiavi di dimensione 128, 192 e 256 bit Nell’agosto del 1998, 15 algoritmi in gara Nel 1999, 5 finalisti. Nel 2001 l’algoritmo vincitore è adottato ufficialmente negli USA Giorgio Giacinto 2013 Crittografia 27 L’algoritmo AES Nome dell’algoritmo: Rijndael dal nome degli autori Rijmen e Daemen Basato su sostituzioni, trasposizioni e operazioni di scorrimento, XOR e addizioni Esempio di codice sorgente http://www.hoozi.com/post/829n1/advanced-encryptionstandard-aes-implementation-in-c-c-with-commentspart-1-encryption Giorgio Giacinto 2013 Crittografia 28 openssl ! openssl (http://www.openssl.org) è uno strumento che realizza i principali algoritmi di crittografia per la comunicazione Internet ! sono disponibili gli algoritmi di crittografia simmetrica e asimmetrica ! ! possono essere utilizzati anche per la cifratura di file sono disponibili le funzioni per la comunicazione client – server sicura Giorgio Giacinto 2013 Crittografia 29 Crittografia simmetrica con openssl ! Crittare un messaggio con triplo des openssl des3 -salt -in file.txt -out file.des3 ! Decrittare un messaggio crittato con triplo des openssl des3 -d -salt -in file.des3 -out file.txt Giorgio Giacinto 2013 Crittografia L’algoritmo RSA per la crittografia asimmetrica 30 Problema della distribuzione delle chiavi ! Nel caso di crittografia simmetrica, il destinatario deve conoscere l’algoritmo e la chiave segreta per decrittare il messaggio ! Nel 1976 Diffie e Hellman proposero un nuovo sistema di crittografia ! ! Ogni utente ha due chiavi, di cui una privata e una pubblica, da distribuire La coppia di chiavi pubblica e privata è generata da un algoritmo di generazione delle chiavi Giorgio Giacinto 2013 Crittografia 32 Funzionamento sistemi a chiave pubblica kpub kpriv E(k,M) D(k,M) P Chiave pubblica Chiave privata Funzione di crittazione Funzione di decrittazione messaggio in chiaro P = D(kpriv,E(kpub,P)) per alcuni algoritmi inoltre vale anche P = E(kpub,D(kpriv,P)) Giorgio Giacinto 2013 Crittografia 33 L’algoritmo RSA ! RSA (Rivest-Shamir-Adelman) algoritmo a chiave pubblica introdotto nel 1978 e ancora ritenuto sicuro basato sulla teoria dei numeri (scomposizioni in fattori primi) Vale la proprietà P = D(E(P)) = E(D(P)) Il progetto openssl contiene la realizzazione di RSA Giorgio Giacinto 2013 Crittografia 34 Generazione della coppia di chiavi privata e pubblica ! Generazione di una chiave privata RSA openssl genrsa –out key.pem ! Generazione della corrispondente chiave pubblica openssl rsa -in key.pem -pubout -out pubkey.pem Giorgio Giacinto 2013 Crittografia 35 Crittografia asimmetrica con openssl ! Per crittare e decrittare con l’algoritmo RSA si usa il comando openssl rsautl seguito da parametri ! -in filename nome del file contenente il messaggio in ingresso ! -out filename nome del file contenente il messaggio in uscita ! -inkey file nome del file che contiene la chiave, di default la chiave privata ! -pubin specifica che la chiave in ingresso è quella pubblica Giorgio Giacinto 2013 Crittografia 36 Crittografia asimmetrica con openssl -encrypt esegue la crittazione del file in ingresso usando la chiave pubblica ! -decrypt esegue la decrittazione del file in ingresso usando la chiave privata ! Giorgio Giacinto 2013 Crittografia 37 Esempio di uso della crittografia asimmetrica ! Per crittare con la chiave pubblica openssl rsautl –encrypt -inkey pubkey.pem -pubin –in <infile> -out <file_enc> ! Per decrittare con la chiave privata openssl rsautl –decrypt –inkey key.pem –in <file_enc> -out <file_dec> Giorgio Giacinto 2013 Crittografia Uso delle funzioni crittografiche nelle comunicazioni via Internet 38 Funzioni di hash crittografiche ! Utilizzate per provare l’integrità di un file ! ! ! ! ! Denominata checksum Basata su funzioni hash che calcolano un “riassunto” (digest) del file in un numero prefissato di bit (es., 128) La modifica di un solo bit nel documento originario si ripercuote in modo non banale nel valore del digest Collisioni possibili Algoritmi popolari (presenti in molti sistemi operativi) ! MD5 (Message-Digest algorithm 5) ! SHA/SHS (Secure Hash Algorithm / Secure Hash Standard) Giorgio Giacinto 2013 Crittografia 40 Scambio delle chiavi Consente di verificare l’autenticità del mittente e di garantire la riservatezza del contenuto Il mittente M critta il messaggio P C = D(kpub-D,E(kpriv-M,P)) Il destinatario D verifica l’autenticità di M usando la chiave pubblica di M e legge il messaggio riservato usando la propria chiave privata P = D(kpub-M,E(kpriv-D,C)) Giorgio Giacinto 2013 Crittografia 41 Firma digitale ! Non deve consentire la contraffazione ! ! Se la persona P invia un messaggio M con la firma S(P,M), nessun altro deve essere in grado di produrre la coppia [M, S(P,M)] Deve garantire l’autenticità ! Il destinatario deve poter verificare che la firma provenga da P e che questa è legata al documento M Documento e firma non devono poter essere alterati da nessuno (compresi mitt e dest) ! La firma non deve essere riutilizzabile ! Giorgio Giacinto 2013 Crittografia 42 Firma digitale - protocollo a chiave pubblica ! Se voglio firmare il doc M ma non riservarne il contenuto, posso ! ! ! ! Usare la mia chiave privata kpriv Creare la firma come D(kpriv,M) Inviare il doc M insieme con la firma Il destinatario può verificare l’autenticità della firma e la sua relazione al doc M utilizzando la mia chiave pubblica ! M = E(kpub, D(kpriv,M)) Giorgio Giacinto 2013 Crittografia 43 Firma digitale - schema Firma Giorgio Giacinto 2013 Verifica Crittografia 44 Esempio di firma digitale con openssl ! Firmare un file con la propria chiave privata openssl rsautl -sign -in file -inkey key.pem -out sig ! Verificare l’autenticità di un file firmato digitalmente usando la chiave pubblica openssl rsautl -verify -in sig -inkey pubkey.pem pubin Giorgio Giacinto 2013 Crittografia 45 Firma digitale - segretezza Giorgio Giacinto 2013 Crittografia 46 Scambio di messaggi riservati ! La crittazione di un messaggio si realizza in modo efficiente attraverso gli algoritmi simmetrici ! ! efficienti in termini di costo computazionale e di sicurezza Lo scambio della chiave simmetrica avviene con meccanismi basati su algoritmi di crittazione asimmetrici Giorgio Giacinto 2013 Crittografia 47 Buste digitali Giorgio Giacinto 2013 Crittografia 48 Certificati ! Nella vita reale identità e autenticità di persone e comunicazioni dipendono spesso da autorità fidate riconosciute reciprocamente, la cui autorità è stabilita in modo gerarchico ! ! ! ! ! ! ! Carte d’identità Passaporti Notai Uffici anagrafici Timbri Carta intestata ecc… Giorgio Giacinto 2013 Crittografia 49 Certificati digitali ! Nelle transazioni informatiche esistono autorità di certificazione analoghe ! ! ! ! Distribuiscono certificati Garantiscono l’autenticità Catene di autorità di certificazione Certificati basati su ! ! Firme digitali Funzioni di hash Giorgio Giacinto 2013 Crittografia 50 Struttura di un certificato digitale PKI - Public Key Infrastructure ! Contiene l’identità dell’utente e la sua chiave pubblica ! Il certificato è firmato da una autorità di certificazione (CA - Certification Authority) ! ! VeriSign, SecureNet… E’ possibile creare certificati self-signed ! http://www.akadia.com/services/ssh_test_certificate.html non vi è una autorità che certifica l’autenticità, ma la comunicazione è comunque crittata Giorgio Giacinto 2013 Crittografia 51 Esempio di creazione di un certificato con openssl ! Creazione di un certificato openssl req -new -key server.key -out server.csr ! ! server.key è la chiave privata del server Generazione di un certificato auto-firmato openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt Giorgio Giacinto 2013 Crittografia Applicazioni alle comunicazioni Internet 52 Link encryption ! Il messaggio viene crittato appena prima che il sistema lo invii attraverso il collegamento fisico ! è esposto nei livelli superiori a quello fisico Giorgio Giacinto 2013 Crittografia 54 Messaggio inviato attraverso link encryption Giorgio Giacinto 2013 Crittografia 55 Crittazione end-to-end ! La crittazione viene applicata ai livelli più alti della pila OSI ! livello 7, applicazione, o livello 6, presentazione Giorgio Giacinto 2013 Crittografia 56 Messaggio crittato end-to-end Giorgio Giacinto 2013 Crittografia 57 Confronto fra le due modalità di crittazione ! Nel caso end-to-end le applicazioni utente che devono comunicare condividono algoritmo di crittazione e chiavi ! ! Gli host intermedi non devono crittare/decrittare Link encryption richiede la condivisione dell’algoritmo di crittazione e chiavi a livello di coppie di host ! Crittazione eseguita di solito in hardware Giorgio Giacinto 2013 Crittografia 58 VPN - Virtual Private Network ! Utilizza link encryption ! ! ! ! Il collegamento fra sedi remote di una stessa organizzazione avviene su un canale crittato Il canale crittato si comporta come un tunnel attraverso il quale fluisce il traffico Le sedi remote possono operare come se fossero all’interno di una stessa rete fisica VPN spesso implementata da firewall Giorgio Giacinto 2013 Crittografia 59 Schema di funzionamento di una VPN Giorgio Giacinto 2013 Crittografia 60 Public Key Infrastructure (PKI) ! Una PKI fornisce agli utenti i servizi di ! ! ! ! ! ! Creazione di certificati che associno identità degli utenti a chiave crittografica Assegna certificati dalla propria base dati Firma i certificati Conferma/Nega validità a certificati Invalida i certificati per gli utenti non più autorizzati Necessità di una Autorità di certificazione Giorgio Giacinto 2013 Crittografia 61 Crittografia SSH SSH (secure shell) è una coppia di protocolli definita originariamente per UNIX ! Sostituisce le utility non crittate telnet, rsh, rlogin per l’accesso remoto ! Negoziazione fra siti remoti e locali per ! ! ! l’algoritmo di crittazione (DES, DEA, ecc.) autenticazione (chiave pubblica e Kerberos) Giorgio Giacinto 2013 Crittografia 62 Crittografia SSL ! SSL (Secure Socket Layer) progettato originariamente da Netscape per proteggere comunicazione fra browser e server ! ! Noto anche come TLS (Transport Layer Security) Si interfaccia fra applicazioni e protocollo TCP per fornire ! ! autenticazione del server canale crittato fra browser e server Giorgio Giacinto 2013 Crittografia 63 Protocollo SSL Alla richiesta del browser, il server risponde con il proprio certificato a chiave pubblica ! Il client invia al server parte di una chiave simmetrica crittata con la chiave pubblica del server ! Client e server calcolano la parte rimanente della chiave di sessione ! La comunicazione avviene crittando i messaggi in modo simmetrico ! Giorgio Giacinto 2013 Crittografia 64 Posta elettronica crittografata Si può usare SSL per invio credenziali posta ! Protocolli per garantire la riservatezza del messaggio ! ! ! mittente, destinatario, corpo del messaggio Problema: scambio delle chiavi Due soluzioni principali ! ! PGP (Pretty Good Privacy) S/MIME Giorgio Giacinto 2013 Crittografia 65 Schema di massima Posta elettronica crittata Giorgio Giacinto 2013 Crittografia 66 IPSec Parte della suite IPv6 sviluppata da IETF ! IPSec è una suite di protocolli di IP Security ! ! ! Implementato nello strato IP Simile a SSL (a) Pacchetto convenzionale - (b) pacchetto IPSec Giorgio Giacinto 2013 Crittografia 67