Sicurezza e Crittografia · .php?curid=39712823 Sicurezza e Crittografia 12 Sistemi crittografici A...
Transcript of Sicurezza e Crittografia · .php?curid=39712823 Sicurezza e Crittografia 12 Sistemi crittografici A...
Sicurezza e CrittografiaSicurezza e Crittografia
Moreno MarzollaDipartimento di Informatica—Scienza e Ingegneria (DISI)
Università di Bolognahttp://www.moreno.marzolla.name/
(Capitolo 5 dispensa)
Sicurezza e Crittografia 2
Copyright © 2011, 2016–2018 Moreno Marzollahttp://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 3
Ringraziamenti
● Prof. Gabriele D'Angelo, Università di Bologna– https://www.unibo.it/sitoweb/g.dangelo/
Sicurezza e Crittografia 4
Sicurezza e Crittografia 5
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 blindate, casseforti...– Logica: protezione delle informazioni tramite risorse non
fisiche (crittografia, firma elettronica...)
Sicurezza e Crittografia 6
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 7
Crittografia
● Disciplina che studia le tecniche per cifrare un messaggio in modo tale che solo il legittimo destinatario sia in grado di leggerlo
● Requisiti: – Cifrare/decifrare messaggi deve essere ragionevolmente
efficiente– Deve essere “difficile” interpretare un 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 K
enc
● È possibile ricavare M da M' mediante una procedura di decifratura, usando una chiave di decifratura K
dec
E(Kenc
, M) D(Kdec
, M')MM' = E(K
enc, M)
Encryption key Kenc
Decryption key Kdec
M
Canale di comunicazione non sicuroEncrypt Decrypt
Sicurezza e Crittografia 9
Notazione
● E(Kenc
, M)
– Funzione di cifratura
– Data una chiave di cifratura Kenc
e un messaggio M,
restituisce il messaggio M' ottenuto cifrando M usando la chiave K
enc
● D(Kdec
, M')
– Funzione di decifratura– Dato un messaggio (cifrato) M' e una chiave di decifratura
Kdec
, restituisce il messaggio “in chiaro” M ottenuto
decifrando M' con la chiave Kdec
Sicurezza e Crittografia 10
Notazione
● Si deve sempre avere che:
D(Kdec
, E(Kenc
, M)) = M
Se cifro un messaggio M usando la chiave Kenc
e
decifro il risultato usando Kdec
, devo ottenere
nuovamente M
Sicurezza e Crittografia 11
Principio di Kerckhoffs
“Un sistema crittografico deve essere sicuro anche se ogni suo aspetto, tranne le chiavi, è noto pubblicamente”
– Il contrario di “Security by obscurity”– “System security should not depend on
the secrecy of the implementation or its components”NIST special publication 800-123, Guide to General Server Security, http://dx.doi.org/10.6028/NIST.SP.800-123
– Non fidatevi mai MAI MAI di soluzioni crittografiche “fatte in casa”, soprattutto se basate su algoritmi “segreti”
Auguste Kerckhoffs (1835 – 1903), Source: https://commons.wikimedia.org/w/index.php?curid=39712823
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
● A → D● B → E● C → F● ...● Z → C
● Il cifrario di Cesare nonè sicuro!
CIAOATUTTI
FLDRDWXWWL
K = 3
Sicurezza e Crittografia 14
Cifrari a sostituzione
● A. C. Doyle, Il ritorno di Sherlock Holmes—L'avventura degli omini danzanti
By Sidney Paget (1860-1908) - de.WP, Public Domain, https://commons.wikimedia.org/w/index.php?curid=6635141
https://en.wikipedia.org/wiki/Letter_frequency#Relative_frequencies_of_letters_in_other_languages
Sicurezza e Crittografia 15
DES(Data Encryption Standard)
● Progettato da IBM e adottato come standard dal governo USA nel 1977– Chiave lunga 56 bit– Messaggio diviso in blocchi da 64 bit che vengono cifrati
individualmente● Esistono 256 ≈ 7,2 1016 chiavi
– Sembra un numero grande, ma un moderno calcolatore può esaminarle 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
Esercizio
● Cinque rotori, su ciascuno sono incise 23 lettere dell'alfabeto
● La combinazione è una determinata sequenza di 5 lettere
● Supponendo di provare una combinazione al secondo, quanto tempo serve per esaminarle tutte?
235 = 6 436 343 tentativi= circa 74 giorni
.
Sicurezza e Crittografia 19
Esercizio
● Codice di lancio in Wargames– tre lettere maiuscole + 4
cifre + tre lettere maiuscole
● Quante possibili combinazioni ci sono?
263 × 104 × 263 = 351 520 000
.
Sicurezza e Crittografia 22
Pro e contro della crittografia simmetrica
● PRO– Gli algoritmi (Triplo DES,
AES e altri) possono essere implementati in modo efficiente
● CONTRO– 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
Sicurezza e Crittografia 23
Crittografia a chiave pubblica(asimmetrica)
● Introdotta nella seconda metà degli anni '70 da W. Diffie e M. Hellman
● Requisiti– 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
– È impossibile derivare una delle due chiavi anche se si conosce l'altra (le due chiavi sono totalmente indipendenti)
Martin Edward Hellman(image from Wikipedia)
Bailey Whitfield 'Whit' Diffie(image from Wikipedia)
Sicurezza e Crittografia 24
Esempio
K+ K-
L'Italia è una
Repubblica fondata
sul lavoro
K-L'Italia è
una Repubblica
fondata sul lavoro
Cifraturausando K+
Decifraturausando K-
M' = E(K+, M)
Sicurezza e Crittografia 25
...ma anche
AK-
L'Italia è una
Repubblica fondata
sul lavoro
K+L'Italia è
una Repubblica
fondata sul lavoro
K+
Cifraturausando K-
Decifraturausando K+
M' = E(K-, M)
Sicurezza e Crittografia 26
Formalmente
● Se cifro con K+, posso decifrare solo con K-
D(K-, E(K+, M)) = M
● Se cifro con K- posso decifrare solo con K+
D(K+, E(K-, M)) = M
Sicurezza e Crittografia 27
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
Alice Bob
A+ B+
A- B-
Chiavi pubbliche
Chiavi private
Sicurezza e Crittografia 28
Alice e Bob
Alice Bob
A+ B+
A- B-
B-
Alice cifra il mes-saggio M con la chiave pubblica di Bob B+
Bob decifra il mes-saggio M' con la propria chiave pri-vata B-
1 2
M' = E(B+, M)
Sicurezza e Crittografia 29
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 30
Alice e Bob
Alice Bob
A+ B+
A- B-
Alice cifra il mes-saggio M prima con la sua chiave priva-ta A-, e poi con quella pubblica di Bob B+
Bob decifra il mes-saggio con la pro-pria chiave privata B-, e poi con quella pubblica di Alice A+
1 2
B+
A-
M
M' = E(B+, E(A-, M))
Sicurezza e Crittografia 31
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– 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?
Sicurezza e Crittografia 32
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 33
Esempio (SHA-256)
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
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
msg1.txt
msg2.txt
msg1.txtmsg1.txt
369c932a24add019689c3896657b4c625dc7864d4959aaccaffa2b75254e955b
5f10e43e591ed245374fae017f8c11e429f6bc6ebf42f2d1d75fb4d6e39b8f3b
sha256
sha256
Sicurezza e Crittografia 34
Caratteristiche di funzione hash crittografica
● Dato un messaggio M, una funzione hash produce un digest di M, MD(M), con le seguenti proprietà– Il digest MD(M) ha una 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 M
2 differiscono “di poco”, i due
digest MD(M1) e MD(M
2) dovrebbero essere diversi
– Nota: è comunque impossibile garantire che messaggi diversi abbiano sempre digest diversi!
Sicurezza e Crittografia 35
Funzioni hash usate in pratica
● MD5– Sviluppato da Ronald Rivest nel 1991– Genera un digest lungo 128 bit– Oggi non è ritenuto abbastanza sicuro
● SHA (Secure Hash Algorithm)– 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
Ronald R. Rivest (Fonte: Wikipedia)
Sicurezza e Crittografia 36
Uso del digest
● Alice vuole mandare un messaggio M (es., un contratto) da lei “firmato” in forma digitale– Il testo del messaggio può essere lasciato in chiaro in modo
che chiunque lo possa vedere● Come può Bob essere sicuro dell'autenticità della
firma di Alice?● Come può Alice essere sicura che nessuno possa
alterare il contenuto del messaggio da lei firmato, o falsificare la sua firma?
Sicurezza e Crittografia 37
Firma digitale
Alice Bob
A+ B+
A- B-
Alice calcola il digest MD(M) del messaggio M; quindi, cifra il dige-st con la propria chia-ve privata. Invia M e il digest cifrato a Bob
Bob decifra il digest che accompagna il messaggio. Può quindi ricalcolare il digest e confrontarlo con quello inviato da Alice
1 2
A-
MD(M)
M
Sicurezza e Crittografia 38
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 39
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 (en.wikipedia.org) e chiave
pubblica del server– Firmato da una Certification Authority (CA)
● Il browser verifica la firma della CA● Il browser genera un numero casuale, lo cifra con la
chiave pubblica del server 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 40
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 le persone