Sei sulla pagina 1di 34

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 Crittazione a blocchi


Alta velocità Bassa velocità
Resistenza a errori Propagazione degli errori
Bassa diffusione Alta diffusione
Può essere alterato Resistenza ad alterazioni

Giorgio Giacinto 2013 Crittografia 8

Crittazione per sostituzione


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 12

Permutazioni
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
!  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 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 20

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

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-encryption-
standard-aes-implementation-in-c-c-with-comments-
part-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 30

L’algoritmo RSA per la


crittografia asimmetrica
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 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 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 38

Uso delle funzioni crittografiche


nelle comunicazioni via Internet
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 Verifica

Giorgio Giacinto 2013 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 52

Applicazioni alle comunicazioni


Internet
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

Potrebbero piacerti anche