Obiettivi della crittografia -...

Post on 11-Jul-2020

3 views 0 download

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