Obiettivi della crittografia -...
Transcript of Obiettivi della crittografia -...
CRITTOGRAFIA
Giorgio Giacinto 2013 Crittografia 1
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 2
Crittografia di un messaggio
Giorgio Giacinto 2013 Crittografia 3
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 4
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 5
Crittografia e Chiavi
Rivest-Shamir-Adelman
Giorgio Giacinto 2013 Crittografia 6
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 7
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 8
Crittazione a flussi e a blocchi
Crittazione a flussi Alta velocità Resistenza a errori Bassa diffusione Può essere alterato
Crittazione a blocchi Bassa velocità Propagazione degli errori Alta diffusione Resistenza ad alterazioni
Crittazione per sostituzione
Giorgio Giacinto 2013 Crittografia 10
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 11
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 12
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
Permutazioni
Giorgio Giacinto 2013 Crittografia 14
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 15
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
Algoritmi di crittografia “sicuri”
Giorgio Giacinto 2013 Crittografia 17
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 18
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 19
Cinque approcci alla crittoanalisi ! Ciphertext-only
! Si ha a disposizione solo il testo crittato ! Known-plaintext or probable-plaintext
! Si ha a disposizione tutto o parte del testo originale oltre al testo crittato
! Chosen-plaintext ! L’attaccante riesce a ottenere la crittazione di un testo a
sua scelta ! Chosen-plaintext e algoritmo
! L’analista può fare tante prove di crittazione per individuare la chiave
! Coppie di testo crittato e testo in chiaro
Giorgio Giacinto 2013 Crittografia 20
Sistemi di crittografia commerciali
! Soddisfano i seguenti requisiti ! Solide basi matematiche ! Analizzato da esperti competenti indipendenti ! Hanno superato la “prova del tempo”
Sistemi di crittografia simmetrica
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
Giorgio Giacinto 2013 Crittografia 23
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 24
L’algoritmo DES
Crittazione a blocchi di 64 bit, chiave a 64 bit (efficaci solo i primi 56 bit)
Operazioni logiche e aritmetiche sui blocchi
Esempio di funzionamento dell’algoritmo http://people.eku.edu/styere/Encrypt/JS-DES.html
Giorgio Giacinto 2013 Crittografia 25
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 26
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 27
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 28
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-encryption-standard-aes-implementation-in-c-c-with-comments-part-1-encryption
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 30
L’algoritmo RSA per la crittografia asimmetrica
Giorgio Giacinto 2013 Crittografia 32
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 33
Funzionamento sistemi a chiave pubblica
kpub Chiave pubblica kpriv Chiave privata E(k,M) Funzione di crittazione D(k,M) Funzione di decrittazione P 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 34
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
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 38
Uso delle funzioni crittografiche nelle comunicazioni via Internet
Giorgio Giacinto 2013 Crittografia 40
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 41
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 42
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 43
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 44
Firma digitale - schema Firma Verifica
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
Giorgio Giacinto 2013 Crittografia 46
Firma digitale - segretezza
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
Giorgio Giacinto 2013 Crittografia 48
Buste digitali
Giorgio Giacinto 2013 Crittografia 49
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 50
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 51
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
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 52
Applicazioni alle comunicazioni Internet
Giorgio Giacinto 2013 Crittografia 54
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 55
Messaggio inviato attraverso link encryption
Giorgio Giacinto 2013 Crittografia 56
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 57
Messaggio crittato end-to-end
Giorgio Giacinto 2013 Crittografia 58
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 59
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 60
Schema di funzionamento di una VPN
Giorgio Giacinto 2013 Crittografia 61
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 62
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 63
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 64
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 65
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 66
Schema di massima Posta elettronica crittata
Giorgio Giacinto 2013 Crittografia 67
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