Sicurezza
Michael Aratari
15 luglio 2016
Sommario
Dispensa creata con gli appunti del corso ”Sicurezza” sostenuto dal Prof Parisi-Presicce
Francesco. Laurea Triennale in Informatica - La Sapienza (RM). Integrazioni basate su libri
consigliati dal Professore.
Indice
1 Introduzione alla Sicurezza 4
2 Cosa significa ”Sicurezza”? 5
2.1 Politica, Meccanismo e Certezza . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Fiducia ed ipotesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3 Obiettivi e strategie di sicurezza . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.4 Aspetti operativi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.5 Security by Obscurity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.6 Security by Legislation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.7 Progettazione di un sistema sicuro . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3 Crittografia 14
3.1 Tipi di Cifrari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.1.1 Cifrario a flusso (Stream Cipher) . . . . . . . . . . . . . . . . . . . . . . . 15
3.1.2 Cifrario a blocchi (Block Cipher) . . . . . . . . . . . . . . . . . . . . . . . 15
3.2 Cifratura simmetrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3 Crittoanalisi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.4 Tecniche di base per la cifratura . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.4.1 Sostituzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.4.2 Permutazione/Trasposizione . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.5 DES: Data Encryption Standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.5.1 Algoritmo di crittazione DES . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.5.2 Algoritmo di decrittazione DES . . . . . . . . . . . . . . . . . . . . . . . . 29
3.5.3 Problematiche del DES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.5.4 Doppio DES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.5.5 TDES o Triple-DES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.6 AES: Advanced Encryption System . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.6.1 Sruttura dettagliata dell’AES . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.7 Modalità di funzionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.7.1 Electronic Code Book (ECB) . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.7.2 Cipher Block Chaining (CBC) . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.7.3 Cipher FeedBack (CFB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
1
3.7.4 Output FeedBack (OFB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.7.5 Counter (CTR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.7.6 Considerazioni finali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.8 RC4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.9 Cifratura Asimmetrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.9.1 Scambio di chiavi Diffie-Hellman . . . . . . . . . . . . . . . . . . . . . . . 53
3.10 RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.10.1 Descrizione dell’algoritmo RSA . . . . . . . . . . . . . . . . . . . . . . . . 55
3.11 ElGamal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.12 Autenticazione dei messaggi e funzioni HASH . . . . . . . . . . . . . . . . . . . . 62
3.12.1 Crittografia dei messaggi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.12.2 Message Authentication Code (MAC) . . . . . . . . . . . . . . . . . . . . . 63
3.12.3 Funzioni Hash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.13 Firma digitale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.13.1 Firma digitale con RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
3.13.2 Firma digitale con ElGamal . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4 Gestione delle chiavi e certificati digitali 71
4.1 Scambio di chiavi classico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.1.1 Protocollo Needham-Schroeder . . . . . . . . . . . . . . . . . . . . . . . . 72
4.2 Scambio di chiavi a chiave pubblica . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.3 Soluzione per la distribuzione delle chiavi . . . . . . . . . . . . . . . . . . . . . . . 75
4.4 Salvataggio delle chiavi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
4.5 Revocazione della chiave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
4.6 Certificati digitali ed autorità di certificazione . . . . . . . . . . . . . . . . . . . . 77
4.7 Standard X.509 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
4.7.1 Revocazione del certificato . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
4.7.2 Procedure di Autenticazione . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5 Identificazione ed autenticazione 84
5.1 Password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.1.1 Challenge-Response . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
5.2 Attaccare un sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
5.2.1 Attacco a dizionario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5.2.2 Formula di Anderson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5.3 Salt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.4 One-Time Password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
5.5 Aspetti Biometrici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
6 Access Control Matrix 93
6.1 Operazioni primitive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.1.1 Create Subject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.1.2 Create Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
6.1.3 Add Right . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
6.1.4 Delete Right . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
6.1.5 Destroy Subject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
6.1.6 Destroy Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
6.2 Comandi sulla ACM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
6.3 Implementazione della ACM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
6.3.1 Access Control Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
6.3.2 Capability List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
2
6.3.3 Locks and Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
6.4 Il problema della Safety . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
6.4.1 Modello Take-Grant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
6.4.2 Modello Access Control Matrix Tipizzata . . . . . . . . . . . . . . . . . . . 116
7 Politica e Meccanismi 118
7.1 Politica di confidenzialità . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
7.1.1 Modello Bell-LaPadula . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
7.2 Politica di Integrità . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
7.2.1 Modello Biba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
7.2.2 Modello Clark-Wilson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
7.3 Politiche Ibride . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3.1 Modello Chinese Wall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3.2 Modello Role-Based Access Control . . . . . . . . . . . . . . . . . . . . . . 135
8 Principi di Secure Design 141
8.1 Least Privilege (Minimo Privilegio) . . . . . . . . . . . . . . . . . . . . . . . . . . 141
8.2 Fail-Safe Default . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
8.3 Economy of Mechanism (Economia del Meccanismo) . . . . . . . . . . . . . . . . 141
8.4 Complete Mediation (Completa Meditazione) . . . . . . . . . . . . . . . . . . . . 141
8.5 Open Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
8.6 Separation of Privilege (Separazione dei Privilegi) . . . . . . . . . . . . . . . . . . 141
8.7 Least Common Mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
8.8 Psychological Acceptability (Accettabilità Psicologica) . . . . . . . . . . . . . . . 141
9 Protocollo Kerberos 142
9.1 Idee alla base del protocollo Kerberos . . . . . . . . . . . . . . . . . . . . . . . . . 142
9.2 Funzionamento del protocollo Kerberos . . . . . . . . . . . . . . . . . . . . . . . . 144
9.3 Kerberos Versione 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
9.4 Funzionamento della versione 5 di Kerberos . . . . . . . . . . . . . . . . . . . . . 148
10 Protocollo di sicurezza per le reti TCP/IP 151
10.1 Protocollo SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
10.1.1 Record Layer Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
10.1.2 Change Cipher Spec Protocol . . . . . . . . . . . . . . . . . . . . . . . . . 157
10.1.3 Alert Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
10.1.4 Handshake Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
10.2 Protocollo IPSec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
10.2.1 Security Association (SA) . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
10.2.2 Authentication Header (AH) . . . . . . . . . . . . . . . . . . . . . . . . . . 166
10.2.3 Encapsulating Security Payload (ESP) . . . . . . . . . . . . . . . . . . . . 168
3
1 Introduzione alla Sicurezza
Nella nostra trattazione, parleremo dei servizi relativi alla sicurezza di base che proteggono dalle
minacce il nostro sistema. Verranno mostrate le politiche di sicurezza che identificano le minacce
e definiscono i requisiti per garantire che un sistema sia effettivamente sicuro, ed inoltre i mec-
canismi di sicurezza per rilevare e prevenire gli attacchi. Quindi per analizzare la sicurezza di
un sistema bisogna comprendere i meccanismi che fanno rispettare le politiche di sicurezza. Gli
esseri umani sono l’anello più debole nei meccanismi di sicurezza di qualsiasi sistema, pertanto,
le politiche e le procedure devono prendere in considerazione anche la persona. Concludiamo la
nostra breve introduzione dicendo che la sicurezza è dinamica: cambiano le tecnlogie, cambiano i
problemi e cambiano le soluzioni che bisogna adottare!
C’è sempre un compromesso tra utilità e sicurezza: più volete fare con il vostro sistema e più
aumentano i problemi di sicurezza Arrivo ad un certo punto in cui voglio un sistema sicuro, ma
i meccanismi di sicurezza che dobbiamo aggiungere sono talmente tanti o talmente pesanti, dal
punto di vista della macchina, di tempo o dell’utente, che non vale la pena implementarli. Ad
esempio un mio prodotto potrebbe avere un problema, ma ripararlo farebbe si che l’utente non lo
voglia più acquistare. Questo perchè nel volerlo rendere più sicuro, dovrei aggiungere meccanismi
di sicurezza che aumenterebbero l’interazione che il cliente dovrebbe avere con la nostra applica-
zione e quindi, dal suo punto di vista, non ne varrebbe più la pena.
Ma viceversa, la mancata implementazione di sufficienti meccanismi di sicurezza al mio siste-
ma, potrebbe far si che l’attaccante abbia vita facile nel violarlo. Dobbiamo aggiungere quindi
sufficienti meccanismi di sicurezza da rendere l’attacco non più conveniente: se io rendo diffici-
le l’attacco a sufficienza da creare problemi all’attaccante portandolo ad abbandonare l’attacco,
allora ho praticamente risolto il problema. 4
2 Cosa significa ”Sicurezza”?
Il termine sicurezza non ha un suo significato preciso. Forse potremmo dire che la sicurezza è
un processo (senza fine) per migliorare la probabilità che il sistema rispetti i vincoli di una certa
politica. Per decidere se un sistema informatico è ”sicuro”, è necessario, innanzitutto, capire cosa
significhi per noi la parola ”sicurezza” e quindi quali minacce sono una preoccupazione:
1. Per un banchiere il problema è l’integrità dei dati.
Nssuno deve poter accedere al sistema e modificare i dati che riguardano le transazioni o il
saldo dell’utente.
2. Per una persona che gestisce una lotteria online, il problema è la confidenzialità.
Egli vuole che nessuno sappia quali sono i numeri che saranno estratti o il meccanismo
utilizzato per l’estrazione, finché numerosi clienti non abbiano partecipato a questa lotteria.
3. Per una persona che gestisce un sito di scommesse, il problema è la disponibilità.
Egli vuole che il sito rimanga sempre online.
La sicurezza informatica si basa sulla confidenzialità, l’integrità e la disponibilità. Le inter-
pretazioni di questi tre aspetti variano a seconda dei contesti in cui sorgono.
• →
Confidenzialità La confidenzialità (o riservatezza) è l’occultamento di informazioni
o risorse. La necessità di mantenere segrete queste informazioni, sorge visto l’utilizzo di
computer in settori sensibili come il governo e l’industria. Ad esempio, le istituzioni militari
e quelle civili nel governo, spesso impediscono che arrivino informazioni a persone che non
sono autorizzate a riceverle.
• →
Integrità L’integrità si riferisce all’attendibilità dei dati o delle risorse. Inoltre man-
tenere l’integrità significa impedire che i dati vengano modificati da persone che non sono
autorizzate a farlo.
• →
Disponibilità La disponibilità si riferisce alla capacità di poter utilizzare in ogni momen-
to le informazioni o le risorse desiderate. La diisponibilità è un aspetto molto importante
per la progettazione del sistema informatico, poiché un sistema disponibile è più efficiente di
un altro sistema. Gli attacchi chiamati Denial of Service (DoS), possono destabilizzare un
sistema e renderlo non più disponibile, pertanto c’è bisogno di un servizio di disponibilità
che risolva questi problemi.
Oltre questi tre aspetti, potremmo aggiungerne un quarto, che molto spesso viene considerato
secondario. Stiamo parlando di:
• →
Autenticità/Imputabilità Avere la certezza che una data informazione appartenga
a chi dice di averla generata. Io per poter stabilire e per assicurarmi che la politica sia
rispettata devo sapere chi sono le persone o l’entità che vogliono accedere questi dati.
Deve essere sempre possibile risalire all’entità che ha eseguito una specifica azione (Non-
Repudiation). Il sistema deve provvedere alla registrazione degli eventi significativi e
proteggere le registrazioni dalle manomissioni.
5
2.1 Politica, Meccanismo e Certezza
Tre sono gli aspetti coinvolti per arrivare ad un punto accettabile di sicurezza.
È fondamentale distinguere questi tre aspetti:
1. Politica
La sicurezza dei sistemi informatici si occupa solitamente di garantire i permessi di accesso
ai dati e alle risorse di un sistema, attuando dei meccanismi di controllo che definiscono ciò
che è permesso o non è permesso fare. Ad esempio, in una base di dati, il manager deve
poter leggere i dati mentre il dipendente non deve poterlo fare. La sicurezza informatica
deve essere studiata quindi in modo tale da non impedire agli utenti di sviluppare gli usi
che sono loro necessari, e di fare in modo che essi possano utilizzare il sistema in piena
fiducia. Questa è la ragione per cui è necessario definire in un primo tempo una politica di
sicurezza.
Per descrivere una politica di sicurezza possono essere utilizzati differenti linguaggi:
• →
Linguaggio naturale Genera diversi problemi. Difficilmente il linguaggio naturale è
in grado di descrivere perfettamente una politica senza creare ambiguità. Inoltre può
essere difficile verificare che tutto quello che si voleva descrivere è stato effettivamente
descritto.
• →
Linguaggio formale Si può usare anche un linguaggio più formale che presenta però
vantaggi e svantaggi: è più facile verificare che nella descrizione vi siano incongruenze o
contraddizioni, ma è più difficile da leggere poichè serve qualcuno che ha competenze.
• →
Linguaggio ad-hoc È un particolare linguaggio utilizzato ad esempio per far si che
un pacchetto riesca ad attraversare un firewall.
2. Meccanismo
Un meccanismo di sicurezza è un metodo, uno strumento o una procedura per far rispet-
tare una politica di sicurezza. Il loro compito è di impedire al sistema di passare da uno
ad uno stato non accettabile della politica. Ad esempio, si supponga che il
stato accettabile
laboratorio di informatica di un’università ha una politica di sicurezza che vieta a qualsiasi
studente di copiare i file dei compiti per casa di un altro studente. Il sistema informatico
prevede meccanismi per impedire ad altri di leggere i file di un utente. Anna non riesce
a utilizzare questi meccanismi per proteggere i suoi file, pertanto Bill riesce a copiarli. Si
verifica quindi una violazione, perché Bill ha violato la politica di sicurezza prestabilita. In
questo esempio, Anna avrebbe potuto facilmente proteggere i suoi file, ma in altri ambienti,
tale protezione può non essere facile. Internet, ad esempio, fornisce solo i meccanismi di sicu-
rezza più elementari, non sempre adeguati a proteggere le informazioni inviate al suo interno.
I meccanismi possono suddividersi in due classi:
• →
Meccanismi procedurali Ad esempio un meccanismo procedurale potrebbe essere
applicato in un azienda. Un utente che vuole accedere ad una determinata macchina
deve superare d
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.