Elementi di Sicurezza e Privatezza

Docente: Prof. Danilo Bruschi

AA 2012/2013

Contenuti

Date previste per gli appelli d'esame nel A.A. 2012-2013

*Per iscriversi all'esame di laboratorio è necessario inviare una mail dal proprio account [at]studenti.unimi.it, a specificando nome, cognome e matricola

Notizie generali sul corso

Il presente corso è erogato nell'ambito del corso di laurea triennale in Informatica nuovo ordinamento e puņ essere seguito da tutti gli stessi delle lauree triennali. Questo corso sostituisce quello di Sicurezza dei Sistemi e delle Reti presente nei corsi di laurea del vecchio ordinamento: Informatica, Comunicazione Digitale e Informatica Musicale. Gli studenti di questi corsi di laurea possono quindi seguire e sostenere l'esame relativo a questo corso che sarà poi verbalizzato con la vecchia dicitura.

Si tratta di un corso di 6 crediti, per il quale è prevista un'attività didattica di circa 50 ore (30 ore di teoria + 20 ore di laboratorio), ed un impegno di studio, per lo studente, in regola con i prerequisiti, di 100 ore circa.

Logistica e Organizzazione

Le lezioni si tengono nell'aula V9 del settore didattico in via Celoria 20, nella giornata di Martedì dalle 14.30 alle 16.30, ed in aula SIGMA di via Comelico 39 nella giornata di Venerdì dalle 14,30 alle 16.30.

Obiettivi formativi

Al termine del corso lo studente che supererà con profitto il relativo esame sarà in grado di:

Prerequisiti

Al fine di poter trarre il massimo profitto dalla frequentazione di questo corso gli studenti dovrebbero aver seguito con profitto gli esami di:

Gli argomenti trattati in questi corsi e di utilità al corso di sicurezza sono dati per acquisiti. Sarà compito dello studente, che ancora non li possedesse, acquisirli autonomamente.

Programma del corso di teoria

Programma di Laboratorio

Materiale didattico

Il libro di testo adottato per quest'anno è
C.P. Pfleeger e S.L. Pfleeger, "Sicurezza in Informatica", II edizione italiana, Pearson ed.
lista dei capitoli del libro visti a lezione: 1, 2, 3, 4, 7, 8, 9, 10

Alcune parti del corso saranno invece svolte facendo riferimento a materiale elettronico presente in rete, per ulteriori riferimenti consultare il calendario del corso.

Altri testi

Altro materiale

Orario e argomenti delle lezioni

Segue l'orario settimanale del corso, con gli argomenti trattati nelle lezioni e il relativo materiale di riferimento per lo studio e l'approfondimento dei temi trattati a lezione. Questo elenco può essere modificato senza preavviso per motivi di ordine didattico.

Data Argomento Materiale didattico Tipo attività Ultimo aggiornamento
5 Marzo Introduzione alla Sicurezza Informatica Cap. 1 del libro di testo
The Cuckoo's Egg
Slide
Didattica frontale 5 Aprile 2013, 23:38
8 Marzo Elementi di Crittografia (prima parte) Cap. 2 del libro di testo
Slide
Didattica frontale 5 Aprile 2013, 23:38
12 Marzo Elementi di Crittografia (prima seconda) Slide Didattica frontale 5 Aprile 2013, 23:38
15 Marzo Meccanismi del SO per la protezione dei sistemi I: autorizzazione e controllo degli accessi Cap. 4 del libro di testo
Slide
Didattica frontale 5 Aprile 2013, 23:38
19 Marzo Meccanismi del SO per la protezione dei sistemi II: identificazione e autenticazione Slide Didattica frontale 5 Aprile 2013, 23:38
22 Marzo Meccanismi del SO per la protezione dei sistemi III: casi di studio Slide Didattica frontale 5 Aprile 2013, 23:38
26 Marzo Meccanismi del SO per la protezione dei sistemi III: casi di studio Slide Didattica frontale 5 Aprile 2013, 23:38
29 Marzo Vacanza
2 Aprile Vacanza  
5 Aprile PGP/GPG: richiamo crittografia, uso di GnuPG Introduzione

GnuPG
Laboratorio 5 Aprile 2013, 13:35

21 Aprile 2013, 18:20
9 Aprile Buffer Overflow Cap. 3 del libro di testo
Slide

Blended Attacks Exploits
Didattica frontale 10 Giugno 2013, 12:20
12 Aprile Meccanismi di sicurezza nei sistemi UNIX (1) Permessi UNIX (1) Laboratorio 13 Aprile 2013, 13:30
16 Aprile Memory error: contromisure Slide
Didattica frontale 10 Giugno 2013, 12:20
19 Aprile Meccanismi di sicurezza nei sistemi UNIX (2) Permessi UNIX (2) Laboratorio 19 Aprile 2013, 15:59
23 Aprile Malware Malware Didattica frontale 24 Aprile 2013, 9:21
26 Aprile Vacanza Laboratorio  
30 Aprile Vulnerabilità di Rete Slide Didattica frontale 10 Giugno 2013, 12:20
3 Maggio Buffer overflow Buffer overflow Laboratorio 4 Maggio 2013, 13:55
7 Maggio Sicurezza di rete (1): IPSEC e TLS Cap. 7 del libro di testo Didattica frontale 10 Giugno 2013, 12:20
10 Maggio Sicurezza delle reti Sicurezza delle reti

creazione rete locale con VM e macchina OpenBSD
Laboratorio 18 Maggio 2013, 20:35
14 Maggio Sicurezza di rete (2): Firewall, IPS/IDS Internet Firewall

Intrusion Detection System

Slide
Didattica frontale 10 Giugno 2013, 12:20
17 Maggio Sicurezza delle applicazioni web (1) Sicurezza delle applicazioni web: protocollo HTTP Laboratorio 18 Maggio 2013, 15:12
21 Maggio Aspetti gestionali della Sicurezza ICT (prima parte) Cap. 8 del libro di testo
Slide
Didattica frontale 29 Maggio 2013, 17:30
24 Maggio Meccanismi di sicurezza nei sistemi windows Laboratorio  
28 Maggio Aspetti gestionali della Sicurezza ICT (seconda parte) Cap. 9 del libro di testo
Slide
Didattica frontale 29 Maggio 2013, 17:30
31 Maggio Sicurezza delle applicazioni web (2) Sicurezza delle applicazioni web: attacchi web

file con gli esempi di attacchi web visti a lezione
Laboratorio 1 Giugno 2013, 18:28
4 Giugno Elementi di Computer Privacy Cap. 10 del libro di testo
Slide
Didattica frontale 12 Giugno 2013, 15:50
7 Giugno Proteggere la rete: firewall Proteggere la rete: firewall

immagine macchina macchina virtuale ''openpita'' per VirtualBox
Laboratorio 8 Giugno 2013, 1:40

Modalità d'esame

L'esame per il corso di sicurezza prevede lo svolgimento di due prove:

La prova scritta

Lo scritto di Sicurezza è composto da 7 domande di teoria che coprono l'intero programma del corso e possono quindi anche contenere argomenti non esplicitamente trattati durante il corso per ragioni di tempo o somiglianza ad altri argomenti trattati. Per preparare accuratamente l'esame è quindi necessario studiare sul libro di testo e sul resto del materiale didattico l'intero programma del corso, riportato nel calendario delle lezioni.
Per ogni risposta corretta lo studente ha a disposizione da 0 a 3 punti, in funzione della completezza della risposta. Per essere tale una risposta deve contenere tutti i seguenti elementi:

Le risposte errate non sono penalizzate, ed alle stesse viene assegnato il punteggio zero.

Esempi

Riportiamo alcune domande di esempio ed alcune modalità di risposta corrispondenti a diverse valutazioni, alcune delle risposte riportate sono state riprese da temi d'esame precedentemente sostenuti.

Domanda

Descrivete i potenziali attacchi ad una connessione Telnet.

Risposta 1 (3 punti)

Telnet è un servizio di rete attraverso il quale è possibile collegarsi da un host ad un host remoto per svolgere sullo stesso diverse sessioni di lavoro. Per poter operare attraverso Telnet sull'host B un utente remoto deve possedere un account su B, ed in particolare all'atto della connessione su B gli verrà richiesto di espletare la normale procedura di identificazione/autenticazione tipica dei sistemi UNIX. Telnet per operare usa il protocollo TCP facendo solitamente riferimento alla porta 23.
I principali problemi di sicurezza derivanti dall'uso del telnet sono: intercettazione e modifica del traffico di rete, DOS. Intercettazione: poichè Telent adotta il protocollo TCP tutto il traffico generato durante le sue sessioni sarà in chiaro e quindi potrà essere facilmente intercettato da una terza parte in ascolto sul canale. Nel caso del Telnet, questo attacco è particolarmente pericoloso poiché nell'ambito del traffico generato da Telnet vi sono anche i dati usati dall'utente remoto per accedere all'host e quindi login, password, dati molto sensibili. Un ulteriore possibile attacco è la modifica del traffico generato, è infatti possibile per una terza parte, sfruttando il fatto che il protocollo opera con traffico in chiaro e senza controllo di integrità, modificare i pacchetti rilasciati da una delle due entità prima che questi possano raggiungere l'altra. Queste forme di attacco possono essere effettuate adottando una qualunque tecnica man in the middle, che consente ad una terza parte di intromettersi nella comunicazione tra due entità. In particolare, nel primo caso il man in the middle è passivo mentre è attivo nel secondo caso.
Il DOS o Denial of service è una forma di attacco il cui scopo è rendere inutilizzabile un servizio o una risorsa, obiettivi dell'attacco. In questo caso è possibile sottoporre il demone Telnet ad un quantità molto elevata di richieste fasulle, oppure operare un syn flood, affinché lo stesso non sia più in grado di rispondere alle richieste di connessione che arrivano da altri utenti.

Risposta 2 (1 punto)

In una connessione telnet il traffico tra i due host viaggia in chiaro, cioè non è cifrato. Un hacker può quindi sniffare il traffico vedendo così password e altri dati sensibili. Le informazioni sniffate possono poi essere usate per penetrare nell'host remoto. Inoltre con un attacco man in the middle può intercettare il traffico da e per un certo host e operare modifiche prima che giungano al destinatario.

Risposta 3 (0 punti)

I potenziali attacchi di una connessione di rete sono: Computer fingerprinting, Uso non autorizzato dei sistemi, Violazione di integrità riservatezza e disponibilità


Domanda

Descrivete una tecnica basata su crittografia asimmetrica per garantire l'integrità dei file.

Risposta 1 ( 3 punti)

La crittografia asimmetrica è una forma di crittografia basata sul presupposto che ciascuna entità del sistema possegga almeno due chiavi, una chiave privata ed una chiave segreta. I sistemi di crittografia asimmetrica (ad esempio RSA) sono tali per cui tutto quanto viene cifrato con la chiave segreta può essere cifrato con la corrispondente chiave pubblica e viceversa. Affinché un sistema di crittografia a chiave pubblica sia efficace, è necessario che ciascun utente conservi segretamente la propria chiave privata mentre diffonda la propria chiave pubblica. Garantire l'integrità dei un file significa adottare delle misure che consentano di verificare se il contenuto dello stesso è stato ulteriormente modificato dopo le ultime modifiche autorizzate. Per ottenere questa è sufficiente che il proprietario di un file, dopo l'ultima modifica, firmi digitalmente il file, o più precisamente calcoli un hash del file usando le funzioni SHA1 o MD5, e cifri il risultato di questa operazione con la propria chiave privata. Alla riapertura del file ricalcolerà l'hash del file, e confronterà questo valore con quello dell'hash precedentemente calcolato che si sarà premurato di decifrare usando la corrispondente chiave pubblica.

Risposta 2 (1,5 punti)

Un esempio di applicazione della crittografia asimmetrica per garantire l'integrità dei file è la firma digitale. L'informazione della quale vogliamo garantire l'integrità, o un hashing di questa, viene cifrato con la chiave privata del mittente. Una volta giunto al ricevente verrà decodificato con la corrispondente chiave pubblica e verrà confrontato con digest ricalcolato dal ricevente. Se gli hashing corrisponderanno si potrà avere garanzia di integrità dei dati nonché di autenticità.

Risposta 3 (0 punti)

La crittografia asimmetrica prevede l'uso di una coppia di chiavi per ogni utente, una pubblica ed una privata. Per garantire l'integrità del file, ovvero che il file non abbia subito modifiche, si può calcolare l'hash del file (SHA1 o MD5) e poi cifrarlo con la chiave pubblica del destinatario a cui devo inviare il file. Così chi riceve decifrerà l'hash con la sua chiave privata, ricalcolerà l'hash del file e lo confronterà con quello decifrato.


Domanda

Definite con precisione le seguenti funzionalità: identificazione, autenticazione e autorizzazione, e per ciascuna descrivete una modalità realizzativa.

Risposta 1 (3 punti)

Per identificazione si intende il processo attraverso il quale un utente dichiara ad un sistema la propria identità. Solitamente l'identità di un utente su un sistema è definita attraverso una stringa di caratteri alfanumerici nota anche come user name. Nell'ambito di un sistema di posta elettronica l'identità di un utente è fornita da una stringa del tipo userid@server.
L'autenticazione è invece il processo attraverso il quale un host verifica che durante la fase di identificazione un utente non abbia dichiarato il falso. Per svolgere questa attività si ricorre solitamente all'uso di attributi che contraddistinguono univocamente l'utente e che sono ovviamente noti anche all'host. Questi attributi sono basati sui paradigmi ciò che sai, ciò che hai, ciò che sei. Ad esempio la password intesa come un segreto condiviso tra un utente e un host fa riferimento al paradigma ciò che sai. Quindi in fase di autenticazione dell'utente il sistema si preoccupa di verificare che un utente che si è identificato come ad esempio user1 conosca esattamente la password associata a user1, in caso affermativo l'autenticazione avrà successo.
Autorizzazione: è il processo attraverso il quale il sistema, sulla base dell'identità di un soggetto decide quali sono le risorse a cui lo stesso può accedere. Il meccanismo più generale per la realizzazione del processo di autorizzazione è rappresentato dalla matrice di controllo degli accessi. Una matrice che riporta sulle righe i soggetti di un sistema, intesi come le entità attive di un sistema cioè quelle che possono svolgere azioni (tipicamente processi e sistemi) e sulle colonne gli oggetti intesi come le entità passive di un sistema. Nella cella di incrocio tra un soggetto ed un oggetto sono inseriti di diritti di accesso, o le operazioni, che il soggetto può svolgere sull'oggetto in questione.

Risposta 2 (1 punto)

Identificazione: meccanismo che identifica univocamente attraverso una coppia userid,password un utente di un sistema. Autenticazione: meccanismo con il quale si può verificare l'autenticità di un messaggio trasmesso, associandolo in modo univoco ad una persona. In genere viene realizzato con la firma digitale. Autorizzazione: meccanismo con il quale un soggetto ha dei diritti autorizzativi su un oggetto. Esistono diverse tecniche di implementazione: matrice degli accessi, access control list e capability.

Risposta 3 (0 punti)

L'identificazione assicura che il mittente in una comunicazione sia davvero chi afferma di essere. Una modalità è la firma digitale. L'autenticazione si occupa che un messaggio arrivi a una destinazione senza che vi siano apportate modifiche durante la trasmissione. Si può realizzare ciò attraverso il message digest. La funzionalità di autorizzazione assicura che solo le persone autorizzate possano avere accesso a determinati dati o messaggi. Una modalità è la crittografia che si occupa di proteggere i dati da terze parti non autorizzate.

La prova di laboratorio

Con la prova di laboratorio lo studente dovrà dimostrare di avere acquisito le nozioni di base per individuare le principali lacune dal punto di vista pratico di un sistema e di saper verificare concretamente il livello di sicurezza dello stesso. La prova di laboratorio avrà un peso di 10 punti sulla valutazione complessiva dell'esame.

Docenti

Teaching assistant