Sicurezza e Crittografia

annuncio pubblicitario
Sicurezza e Crittografia
Moreno Marzolla
Dipartimento di Informatica—Scienza e Ingegneria (DISI)
Università di Bologna
http://www.moreno.marzolla.name/
Copyright © 2011, 2016, Moreno Marzolla
http://www.moreno.marzolla.name/teaching/FINFA/
This work is licensed under the Creative Commons Attribution-ShareAlike 4.0
International (CC BY-SA 4.0) License. To view a copy of this license, visit
http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to Creative Commons,
543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
Sicurezza e Crittografia
2
Ringraziamenti
●
Prof. Gabriele D'Angelo, Università di Bologna
–
https://www.unibo.it/sitoweb/g.dangelo/
Sicurezza e Crittografia
3
Sicurezza e Crittografia
4
La Sicurezza Informatica
●
●
La sicurezza informatica è la protezione delle risorse
dall'accesso, utilizzo, alterazione o distruzione non
autorizzati
Due tipi di sicurezza
–
–
Fisica: protezione dei dispositivi fisici tramite allarmi,
antifurto, porte ignifughe, casseforti...
Logica: protezione delle informazioni tramite risorse non
fisiche (crittografia, firma elettronica...)
Sicurezza e Crittografia
5
Sicurezza informatica: terminologia
●
●
●
Segretezza
– Impedire la divulgazione
non autorizzata di dati,
garantire l'autenticità della
fonte
Integrità
– Impedire le modifiche non
autorizzate ai dati
Autenticazione
– Verificare l'identità della
controparte (con chi sto
comunicando?)
●
●
Disponibilità
– Impedire ritardi nella
diffusione dei dati, o la
loro rimozione
– Es: Attacchi Denial of
Service (DoS),
Ransomware
Non ripudiabilità
– Impedire che la
controparte possa negare
una sua azione
Sicurezza e Crittografia
6
Crittografia
●
●
Disciplina che studia le tecniche per cifrare un
messaggio in modo tale che solo il legittimo
destinatario sia in grado di leggerlo
Requisiti:
–
–
Ragionevole efficienza nella creazione del messaggio
Difficoltà nell'interpretazione del messaggio cifrato da parte
di chi non è autorizzato
Sicurezza e Crittografia
8
Principio di base
●
●
Una procedura di cifratura trasforma un messaggio “in
chiaro” M in un messaggio cifrato M' usando una
chiave di cifratura Kenc
E' possibile ricavare M da M' mediante una procedura
di decifratura, usando una chiave di decifratura Kdec
Encryption key Kenc
M
E(Kenc, M)
Encrypt
Decryption key Kdec
M' = E(Kenc, M)
Canale di comunicazione
non sicuro
D(Kdec, M')
M
Decrypt
Sicurezza e Crittografia
9
Notazione
●
E(K, M)
–
–
●
Funzione di cifratura
Data una chiave K e un messaggio M, restituisce il
messaggio M' ottenuto cifrando M usando la chiave K
D(K, M')
–
–
Funzione di decifratura
Dato un messaggio (cifrato) M' e una chiave K, restituisce il
messaggio “in chiaro” M ottenuto decifrando M' con la
chiave K
Sicurezza e Crittografia
10
Notazione
●
Si deve avere che:
D(Kdec, E(Kenc, M)) = M
Se cifro un messaggio M usando la chiave Kenc e
decifro cio' che ottengo usando Kdec devo ottenere
nuovamente M
Sicurezza e Crittografia
11
La sicurezza sta nelle chiavi
●
●
La sicurezza di un algoritmo crittografico deve
risiedere SOLO sulle chiavi crittografiche
Chi non conosce la chiave NON deve poter leggere il
messaggio cifrato anche se conosce il modo con cui il
messaggio è stato cifrato
–
“Security by obscurity” = mantenere segreto l'algoritmo
crittografico nella vana speranza di rendere la crittografia
“più sicura”
–
Non fidatevi mai MAI
di soluzioni crittografiche “fatte
in casa”, soprattutto se basate su algoritmi “segreti”
MAI
Sicurezza e Crittografia
12
Sistemi crittografici
●
A chiave segreta (crittografia simmetrica)
–
–
●
Si usa la stessa chiave per cifrare e decifrare
In altre parole, Kenc = Kdec
A chiave pubblica (crittografia asimmetrica)
–
–
Le chiavi di cifratura e decifratura sono diverse
In altre parole, Kenc ≠ Kdec
Sicurezza e Crittografia
13
Sistemi crittografici a chiave
simmetrica
●
Uno dei primi esempi è il “cifrario di Cesare”
–
–
–
La chiave K è un numero intero
Ogni lettera dell'alfabeto viene sostituita da quella che la
segue di K posizioni
Esempio: se K = 3 allora
CIAOATUTTI
●
●
●
●
●
●
A -> D
B -> E
C -> F
...
Z -> C
K=3
FLDRDWXWWL
Il cifrario di Cesare non
è sicuro!
Sicurezza e Crittografia
14
Cifrari a sostituzione
●
https://commons.wikimedia.org/w/index.php?curid=6635141
Sicurezza e Crittografia
15
DES
(Data Encryption Standard)
●
Progettato da IBM e adottato come standard dal
governo USA nel 1977
–
–
●
Esistono 256 ≈ 7,2  1016 chiavi
–
●
Chiave lunga 56 bit
Messaggio diviso in blocchi da 64 bit che vengono cifrati
individualmente
Sembra un numero grande, ma un moderno calcolatore le
puo' esaminare tutte in poche ore!
Una variante (Triplo DES) usa chiavi più lunghe e
fornisce un livello accettabile di sicurezza
Sicurezza e Crittografia
16
AES
(Advanced Encryption Standard)
●
●
Adottato come standard nel 2001, sostituisce DES
Caratteristiche di AES
–
–
–
Il messaggio viene scomposto in blocchi da 128 bit che
vengono cifrati individualmente
Si possono usare chiavi lunghe 128, 192 o 256 bit
Esistono 2128  3,4  1038 chiavi a 128 bit, per cui esaminarle
tutte è al momento impraticabile
Sicurezza e Crittografia
17
Riassunto
Fonte: W. Stallings and L. Brown, Computer Security: Principles and Practice,
Pearson; 2 edition, 2011, ISBN 978-0132775069
Sicurezza e Crittografia
18
Pro e contro della crittografia
simmetrica
●
PRO
–
●
Gli algoritmi (Triplo DES,
AES e altri) possono
essere implementati in
modo efficiente
CONTRO
–
–
Sicurezza e Crittografia
Le parti che comunicano
devono prima scambiarsi
la chiave in modo sicuro
Questo è un punto critico
per il quale non esistono
al momento soluzioni
generali affidabili
20
Crittografia a chiave pubblica
(asimmetrica)
●
●
Introdotta nella seconda metà degli
anni '70 da W. Diffie e M. Hellman
Idea
–
–
–
Ciascun utente ha due chiavi
Se si usa una delle due chiavi per cifrare
un messaggio, l'altra (e solo quella) può
essere usata per decifrarlo
E' impossibile derivare una delle due
chiavi anche se si conosce l'altra (le due
chiavi sono totalmente indipendenti)
Sicurezza e Crittografia
Bailey Whitfield 'Whit' Diffie
(image from Wikipedia)
21
Martin Edward Hellman
(image from Wikipedia)
Esempio
K+
KM' = E(K+, M)
L'Italia è
una
Repubblica
fondata
sul lavoro
L'Italia è
una
Repubblica
fondata
sul lavoro
K-
Cifratura
usando K+
Decifratura
usando K-
Sicurezza e Crittografia
22
...ma anche
K-
K+
A
M' = E(K-, M)
L'Italia è
una
Repubblica
fondata
sul lavoro
K+
Cifratura
usando K-
Sicurezza e Crittografia
L'Italia è
una
Repubblica
fondata
sul lavoro
Decifratura
usando K+
23
Formalmente
●
Se cifro con K+, posso decifrare solo con KD(K-, E(K+, M)) = M
●
Se cifro con K- posso decifrare solo con K+
D(K+, E(K-, M)) = M
Sicurezza e Crittografia
24
Idea di base
●
Ogni utente possiede due chiavi
–
–
Una è pubblica, e viene resa disponibile a chiunque
L'altra è privata, e l'utente deve custodirla gelosamente e
non comunicarla a nessuno
Chiavi pubbliche
A+
B+
Chiavi private
Alice
Bob
A-
BSicurezza e Crittografia
25
Alice e Bob
A+
B+
M' = E(B+, M)
Alice
Bob
B-
A-
B1
Alice cifra il messaggio M con la
chiave pubblica di
Bob B+
2
Sicurezza e Crittografia
Bob decifra il messaggio M' con la
propria chiave privata B26
Però...
●
...come fa Bob ad essere sicuro che un messaggio
proviene proprio da Alice e non da qualcun altro?
–
●
Infatti chiunque può codificare il messaggio con la chiave
pubblica di Bob, dato che tale chiave è disponibile a
chiunque
La crittografia asimmetrica può essere usata per
risolvere anche questo problema
Sicurezza e Crittografia
27
Alice e Bob
A+
B+
M' = E(B+, E(A-, M))
B+
A-
Alice
Bob
M
A-
B1
Alice cifra il messaggio M prima con
la sua chiave privata A-, e poi con
quella pubblica di
Bob B+
2
Bob decifra il messaggio con la propria chiave privata
B-, e poi con quella
pubblica di Alice A+
Sicurezza e Crittografia
28
Pro e contro della crittografia
asimmetrica
●
PRO
–
●
Non occorre scambiarsi
chiavi segrete: le uniche
chiavi che è necessario
comunicare sono quelle
pubbliche (che per
definizione sono
pubbliche!)
CONTRO
–
–
Sicurezza e Crittografia
Gli algoritmi di crittografia
asimmetrica sono più lenti
di quelli per crittografia
simmetrica
Come facciamo ad essere
certi che la chiave
pubblica, ad es., di Alice è
veramente di Alice?
29
Integrità e firma digitale
●
●
La crittografia a chiave pubblica può essere combinata
con le funzioni hash crittografiche per autenticare
l'origine di un messaggio e garantirne l'integrità
Si fa uso delle funzioni hash crittografiche (dette
anche one-way hash o funzioni digest, cioè funzioni
riassunto) che vengono applicate al messaggio e ne
producono un “riassunto” (MD = message digest).
Sicurezza e Crittografia
30
Esempio (SHA-256)
msg1.txt
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
sha256
5f10e43e591ed245374fae017f8c11e429f6bc6ebf42f2d1d75fb4d6e39b8f3b
msg2.txt
All work and no play makes Jack a dull boy
All work and no play makes jack a dull boy
All work and no play makes Jack a dull boy
sha256
369c932a24add019689c3896657b4c625dc7864d4959aaccaffa2b75254e955b
Sicurezza e Crittografia
31
Caratteristiche di funzione hash
crittografica
●
Dato un messaggio M, una funzione hash produce un
“riassunto” (digest) di M, che indichiamo con MD(M),
con la seguente proprietà
–
–
–
–
Il digest MD(M) ha una certa lunghezza fissa (es., 256 bit)
che dipende dalla funzione hash usata
Dato un digest, deve essere difficile costruire un messaggio
M che abbia esattamente quel digest
Se due messaggi M1 ed M2 differiscono “di poco”, i due
digest MD(M1) e MD(M2) dovrebbero essere diversi
Nota: è comunque impossibile garantire che messaggi
diversi abbiano sempre digest diversi!
Sicurezza e Crittografia
32
Funzioni hash usate in pratica
●
MD5
–
–
–
●
Sviluppato da Ronald Rivest nel 1991
Genera un digest lungo 128 bit
Attualmente non ritenuto sicuro
SHA (Secure Hash Algorithm)
–
–
–
–
Ronald R. Rivest
(Fonte: Wikipedia)
SHA-224, SHA-256, SHA-384, SHA-512
Famiglia di funzioni hash crittografiche sviluppate dalla NSA
a partire dal 1993
SHA-x genera un digest lungo x bit (quindi SHA-512 genera
un digest lungo 512 bit)
Si preferisce usare SHA-256 o SHA-512
Sicurezza e Crittografia
33
Uso del digest
●
●
●
Alice vuole mandare un messaggio M (es., un
contratto) da lei “firmato” in forma digitale
Come puo' Bob essere sicuro dell'autenticità della
firma di Alice?
Come puo' Alice essere sicura che nessuno possa
alterare il contenuto del messaggio da lei firmato, o
falsificare la sua firma?
Sicurezza e Crittografia
34
Firma digitale
A+
B+
M
A-
Alice
Bob
MD(M)
A-
B1
Alice calcola il digest
MD(M) del messaggio
M; quindi, cifra il digest con la propria chiave privata. Invia M e il
digest cifrato a Bob
2
Sicurezza e Crittografia
Bob decifra il digest
che accompagna il
messaggio. Puo' quindi
ricalcolare il digest e
confrontarlo con quello
inviato da Alice
35
La crittografia nella vita quotidiana: TLS
TLS viene utilizzato per autenticare l'identità del server
cui si è connessi
●
–
“Sono veramente connesso al server della mia banca?”
Sicurezza e Crittografia
36
Come funziona TLS
(molto approssimativo)
●
●
Il browser dice: “Dimostrami che sei veramente
en.wikipedia.org”
Wikipedia risponde con un certificato digitale
–
–
●
●
●
Contiene, tra l'altro, nome del server e chiave pubblica
Firmato da una Certification Authority (CA)
Il browser decifra il certificato con la chiave pubblica della
CA e lo verifica
Il browser genera un numero casuale, lo cifra con la
chiave pubblica di Wikipedia e lo invia a en.wikipedia.org
Il browser e Wikipedia usano quel numero come chiave di
un algoritmo a chiave privata (es, AES)
Sicurezza e Crittografia
37
Punti chiave
●
●
●
●
●
Crittografia simmetrica: DES, AES
– Efficienti, ma bisogna condividere le chiavi in modo sicuro
Crittografia a chiave pubblica
– Non ci sono chiavi da condividere in modo sicuro
– Consentono la firma digitale
– Poco efficienti, quindi prevalentemente usati per scambiarsi chiavi
condivise
La forza di un algoritmo crittografico sta solo nelle chiavi usate
– “security by obscurity” non funziona, né funzionerà mai
– Se il numero di possibili chiavi è troppo basso, è facile provarle tutte. LA
lunghezza della chiave deve essere adeguata
La crittografia è difficile
– Non inventatevi il vostro algoritmo crittografico “fatto in casa”
– Non fidatevi di algoritmi crittografici “segreti”
L'anello debole sono quasi sempre
persone
Sicurezza le
e Crittografia
38
Due letture interessanti
(e non tecniche)
Sicurezza e Crittografia
39
Scarica