Lezione 3: Cenni di sicurezza informatica
• Password e password managers
• Crittografia e protezione dei dati
• Crittografia in chiave pubblica
Referenze:
1. Ross J. Anderson, Security Engineering (2nd edition), Wiley 2. PGP 7.0 User Guide, An Introduction to Cryptography
ftp://ftp.pgpi.org/pub/pgp/7.0/docs/english/IntroToCrypto.pdf 3. Slides il futuro dell’hashing (dal sito di uno dei maggiori password cracker)
http://www.openwall.com/presentations/Passwords12-The-Future-Of-Hashing/
I problemi
– Accesso a delle risorse
• solo chi ha diritto a farlo deve poter accedere a delle risorse:
siano esse strumenti (CPU, stampanti...) o dati
– Identità
• essere in grado di identificarsi con certezza
• essere sicuri che l’entità che ci sta di fronte è proprio chi dice di essere.
– Per voi:
• la legislazione sta diventando sempre più restrittiva nel responsabilizzare il proprietario/utente per l’utilizzo illecito del suo PC/account
– Per gli altri:
• una volta avuto accesso al sistema in qualche modo, l’hacker può implementare attacchi più in profondità
• anche se voi non avete informazioni sensibili in un sistema, potreste compromettere qualcun altro
La password
• La password è il metodo di identificazione più diffuso:
– economicità e comodità
(Ref. 3)
Una delle mie prime lezioni di informatica
Quando ho iniziato a frequentare un laboratorio di astrofisica presso l’osservatorio di Brera, il docente aveva esordito con:
Il sistemista è l’essere più vicino a Dio che conoscete.
Può quasi tutto.
Non può proprio tutto.
Ad esempio non può conoscere la vostra password.
• La password non è solo la chiave di accesso alle risorse di un un sistema:
è la chiave alla vostra identità
• Come mai “non è possibile” conoscere una password?
(a quei tempi le password erano immagazzinate in un file leggibile a “others”)
Hash functions
• Funzioni che:
– fornito un dato in ingresso (file, password...)
– resituiscono un sommario di lunghezza fissa
• Sono funzioni non invertibili:
– intrinsecamente molti→uno – la conoscenza dell’hash non
permette di risalire all’input – Applicazione: integrità dei dati
• dal carattere di controllo del codice fiscale al fingerprint di un file – devono essere instabili rispetto al dato in ingresso
– deve essere improbabile che due ingressi diversi diano lo stesso hash
• MD5 (Message Digest): 4 iterazioni, 128 bit
• SHA-1 (Secure Hash Algorithm): 5 iterazioni, 160 bit
• SHA-2: versioni da 224, 256, 384 e 512 bit
Diffusione dell’informazione Funzioni invertibile: codifica dei dati Funzioni non invertibili: hash
(Ref. 1)
Hash functions
• L’autenticazione avviene verificando che la password fornita dall’utente produca l’hash immagazzinato
Esercizio:
• usare i comandi md5sum, sha1sum, sha*sum (quanti ce ne sono) per calcolare degli hash.
• verificare che cambiamenti minimi producono hash molto diversi
(Ref. 3)
Cracking
• Il crack di una password consiste nel provare fino a quando non se ne trova una che va bene
• Difesa: rallentare il processo.
– non permettere autenticazioni troppo frequenti:
rende praticabili solo attacchi offline da parte di chi si è impossessato del file di hashes
– come conseguenza: protezione del file di hashes – aggiunta del “sale”
(aumenta il costo di precalcolare gli hash di password probabili)
– aumento del peso computazionale degli algoritmi – aumento della dimensione degli hash
• Birthday theorem:
– probabilità che in un gruppo ci siano due persone con lo stesso compleanno
– se un hash ha N possibili valori, si può trovare una collisione dopo ~√N tentativi.
Come scegliere una buona password?
(Ref. 4)
– Il numero di account (e password) sta proliferando.
• Non sempre mantenute in maniera sicura...
– NON utilizzare la stessa password più volte – NON utilizzare password troppo semplici
• Problema di usability
– VOI, siete un punto critico:
• NON date mai la vostra password, per nessuno motivo
– specialmente se ve la chiede un “amministratore” del sistema
– in generale non date mai informazioni senza verificare chi ve le sta chiedendo
• Phishing: la pesca delle password
– è l’attacco più frequente – campagna di spam
– simulazione di siti (anche senza campagna di spam) – virus, troiani, key-logger...
NON usare account con privilegi di amministratore Point-Think-(Don’t)Click
– intercettazione delle comunicazioni
Neanche a un foglio di carta!
Courtesy Patrick Lynch/Yale University
Do not open unexpected or suspicious e-mails or attachments.
Delete them if they do not concern you or if they appear weird. If in doubt, contact Computer.Security@cern.ch.
Stop-think-click.
Do not click on suspicious links, but only click if you trust their origin.
Protect your passwords.
Do not type them on untrusted computers or Web sites.
Do not install untrusted software or plug-ins.
Indeed, software from untrusted sources may infect or compromise your computer… or violate copyrights.
Let us help you:
visit http://cern.ch/Computer.Security or contact Computer.Security@cern.ch
Cybercriminals are trying to trick you!
Be careful with e-mail & Web
Un cattivo esempio...
• Nessun sito dovrebbe “sapere” la vostra password
• Per questo trovate dappertutto link per resettare la password
• Lezione 1: controllate sempre:
questo sarebbe un caso di password compromessa
• Lezione 2: proteggete il vostro account e-mail
Password managers
• Tentativo di affrontare il problema di usability
– una password per ricordarle tutte
• Ed aggiungere alcune delle protezioni in più
– key-logger – falsi siti
• Disponibili praticamente in ogni browser
– Immagazzinate localmente
– protezione tramite master password di solito disabilitata – Disponibili anche su cloud (se il fornitore è affidabile)
• Two factor authentication
– direzione che stanno prendendo la maggior parte dei sistemi
– aumenta la sicurezza, ma riduce la semplicità di utilizzo
Firefox Password Manager
http://support.mozilla.org/en-US/kb/password-manager-remember-delete-change-passwords
Firefox Password Manager
Disabilitata di default!
Password Managers
L’ultimo warning
(Ref. 4)
Crittografia
• Un quantitativo enorme di dati rilevanti circolano nella rete sia virtuale che fisica
e sono facilmente intercettabili.
• Trasferimento dati cifrati:
– Protezione dell’informazione – Integrità dei dati stessi
– Autenticazione – Firma digitale
Non andremo in dettaglio sugli algoritmi (vedi Ref. 1)
ma solo capire le idee chiave
Crittografia convenzionale
• Algoritmo che trasforma un testo in una sequenza pseudo-casuale di bit
– spesso pubblico
– DES, AES (128 o 256 bit)
• Chiave, condivisa tra i partecipanti alla comunicazione.
• Distribuzione della chiave
• Es.: reti wifi WEP, WPA
(Ref. 2)
Crittografia a chiave pubblica
• Due chiavi abbinate:
– privata: personale di un individuo – pubblica: distribuita libearamente
Invio di messaggi riservati: Firma digitale:
(Ref. 2)
In termini pseudo-matematici
• Una cifratura in chiave pubblica consiste in una funzione che, dato un input casuale R, restituisce due chiavi KR (pubblica) e KR
-1(privata) tali che:
1. data KR non è computazionalmente fattibile calcolare KR-1 (ed R)
2. una funzione di codifica {...} che dato un messaggio M crei un testo cifrato C={M}KR 3. una funzione di decodifica che, applicata a C ricrei il testo originario M={C}KR-1
• Una firma digitale consiste in una funzione che, dato un input casuale R,
restituisce una chiave di firma SR (privata) ed una di verifica VR (pubblica) tali che:
1. data VR non è computazionalmente fattibile calcolare SR
2. una funzione di firma Sig che dato un messaggio M e la chiave SR produca una firma SigSRM
3. una funzione di verifica che, data la firma SigSRM, e la chiave VR restituisca VERO se SigSRM è stata creata con SR a partire da M, FALSO altrimenti.
Esempio
• Alice vuole parlare con Bob:
– cifra il suo messaggio con la chiave pubblica di Bob
– crea un hash del messaggio e lo firma con la sua chiave privata – manda il tutto a Bob
• Bob riceve il messaggio:
– solo lui è in grado di decodificarlo (riservatezza)
– verifica che l’hash è stato firmato da Alice (autenticità) – confronta l’hash con quello del messaggio (integrità)
• Le chiavi pubbliche sono davvero quelle di Alice e Bob?
• Entra in gioco Charlie, o Certification Authority...
– Firma (e quindi garantisce) le chiavi pubbliche
– Certificato X.509: chiave pubblica + firma digitale + altri dati
Come funziona
• La crittografia con chiave pubblica si basa sul fatto che è computazionalmente costoso risalire dalla chiave pubblica alla chiave privata.
• L’algoritmo RSA (dagli autori Ron Rivest, Adi Shamir and Leonard Adleman) si basa sulla difficoltà di scomporre numeri in fattori primi:
– Gli algoritmi noti sono tutti non-polinomiali
tempo di esecuzione per un numero di b bits cresce più velocemente di bn per qualunque n.
– L’algorimo più noto ha un tempo di esecuzione
– Chiave privata: due numeri primi grandi p e q
– Chiave pubblica: il prodotto N(=pq), ed un intero e, primo rispetto a p-1 e q-1
• Record:
– Nel 2009 è riuscita la fattorizzatione di un numero a 768 bit (232 cifre) – 2000 anni di calcolo su CPU a 2.2 GHz
– Al momento quasi tutte le chiavi pubbliche sono a 2048 bit (4096 per casi particolari)
O exp 64 9 b
!
"
# $
%&
1/3
(
ln b)
2/3!
"
## $
%&&
' ( ))
* + ,,
Come funziona: aritmetica modulare
• Due numeri interi a e b sono congruenti modulo un intero m, a≡b (mod m) se hanno lo stesso resto della divisione per m.
– Esempio: 1≡16≡51≡36 (mod 5)
• La congruenza rispetta l’addizione e la moltiplicazione:
se a≡c e b≡d, allora: a+b≡c+d e ab≡cd
– Esempio: 3≡8 (mod 5), 4≡19 (mod 5)
somma: 7 ≡ 27 ≡ 2 (mod 5) prodotto: 12 ≡ 152 ≡ 2 (mod 5)
• Piccolo teorema di Fermat:
se p è primo e non divide a, allora ap-1≡1 (mod p)
– Esempio: 4 (mod 5), 42=16≡1 (mod 5), 43=64≡4 (mod 5), 44=256≡1 (mod 5) 3 (mod 5), 32=9≡4 (mod 5), 33=27≡2 (mod 5), 34=81≡1 (mod 5)
• Estrazione di radici:
la definizione di radice n-esima di a è un numero b tale che bn=a Non è scontata in aritmetica modulare:
– Esempio: mod 5, 1 ha due radici quadrate, 1 e 4
mod 5, 3 non ha radici quadrate: 12≡1, 22≡4, 32≡4, 42≡1 la radice terza di 3 è 2, e la radice terza di 2 è 3
Come funziona: crittografia
• Possiamo sempre pensare un messaggio M come un valore numerico (sequenza di bit di un file).
• Avendo a disposizione una chiave pubblica (N,e) si può calcolare un messaggio crittografato:
C = Me (mod N)
(se M ha più bit di N), possiamo dividerlo in blocchi di lunghezza minore.
• Per decodificarlo bisogna calcolare la M = e√C (mod N)
• È facile se conosco p e q:
– cerco un intero d tale per cui ed≡1 (mod (p-1)(q-1))
– allora e√C = Cd
C
d= M ( )e d = M
ed = M
1+k ( p−1)(q−1)
= M
1M
k ( p−1)(q−1)= M mod N ( )
piccolo Teorema di Fermat
Come funziona: firma digitale
• Adesso il gioco è facile!
• Una volta preparato il messaggio M , si può calcolare la firma:
sig{M} = Md (mod N)
• Il ricevente può verificare la firma calcolando sig{M}e (mod N)
e controllare che il risultato sia il messaggio ricevuto M
• In realtà è più frequente applicare la firma ad un hash di M.
• Una protezione che viene generalmente applicata, per evitare che si possa indurre la chiave da una serie di messaggi simili ripetuti più volte è utilizzare un XOR logico, ⊕, con una hash function h ed un numero casuale R
• ed inviare come messaggio C1 e C2.
C1 = M ⊕ h(R) C2 = R ⊕ h(C1)
Applicazioni
• Certificati dei siti web:
– fornendo una chiave pubblica permetto al browser di codificare i dati prima di inviarli
– permette di controllare che la risposta provenga effettivamente dal server contattato
• Autenticazione con ssh,
– Client e server si scambiano le public key
• Normalmente quella del server viene memorizzata nell’account utente.
– senza trasferimento di password:
• public key delle persona autorizzate ad accedere all’account
• il server invia una challenge codificata con la public key
• il client risponde dimostrando di aver decodificato la challenge (ovvero è in possesso della private key)
Esercizio:
• certificati con Firefox
Un cattivo esempio...
Se siamo sicuri di accettare comunque il certificato
Un cattivo esempio (2)
1
2
Un cattivo esempio (2)
3
Un esempio normale
Il certificato è in regola ma da parte di una
Certification Autority non riconosciuta dal browser
La Certification Autority è l’INFN, di cui ci fidiamo. NON aggiungiamo
un’eccezione di sicurezza, ma facciamo la cosa giusta...
Un sito sensibile dell’INFN
Un esempio normale (2)
Andiamo sul sito della INFN Certification Autority
(si trova facilmente con un motore di ricerca)
Installiamo il suo ROOT Certificate
(Nella finestra di dialogo, selezionare le operazioni per cui ci vogliamo fidare (probabilmente tutte)
Un esempio normale (3)
1. Dopo aver accettato le opzioni e caricato il certificato, riapriamo le opzioni del
browser e guardiamo i certificati.
2. Vediamo che ora il certificato dell’INFN compare tra le authorities, insieme a quelle predefinite (builtin) del browser.
3. Se ora torniamo sul sito iniziale, vedremo che non ci sono più avvisi di sicurezza, dato che il browser ora sa che ci fidiamo dell’INFN CA.