crittografia

Transcript

crittografia
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