Insegnamento SICUREZZA INFORMATICA

Nome del corso di laurea Ingegneria informatica e robotica
Codice insegnamento 70A00040
Curriculum Data science
Docente responsabile Luca Grilli
Docenti
  • Luca Grilli
Ore
  • 48 Ore - Luca Grilli
CFU 6
Regolamento Coorte 2016
Erogato Erogato nel 2017/18
Erogato altro regolamento
Attività Caratterizzante
Ambito Ingegneria informatica
Settore ING-INF/05
Periodo Secondo Semestre
Tipo insegnamento Opzionale (Optional)
Tipo attività Attività formativa monodisciplinare
Lingua insegnamento ITALIANO
Contenuti Concetti fondamentali: confidenzialità, integrità e disponibilità. Modelli per il controllo degli accessi. Principali primitive crittografiche a chiave segreta e a chiave pubblica. Autenticazione di sistemi e di persone. Sicurezza dei sistemi operativi. Sicurezza dei programmi. Protezione dei dati sensibili. Principali attacchi alle reti e alle applicazioni Web e relative contromisure.
Testi di riferimento Dispense a cura del docente.

Testi consigliati.
Michael Goodrich, Roberto Tamassia. Introduction to Computer Security, Addison-Wesley, 2011.
Charlie Kaufman, Radia Perlman, Mike Speciner. Network Security: Private Communication in a Public World, Prentice Hall, 2003.
Obiettivi formativi L'insegnamento ha un duplice obiettivo: fornire agli studenti le conoscenze teoriche alla base dei principali algoritmi/protocolli crittografici impiegati in sicurezza informatica e rendere gli studenti in grado di applicare tali conoscenze per sviluppare sistemi software che offrano un determinato livello di sicurezza.

Di seguito sono elencate le principali conoscenze che gli studenti acquisiranno:
• principali primitive crittografiche a chiave segreta e a chiave pubblica;
• protocolli di autenticazione a chiave segreta e a chiave pubblica;
• modelli per il controllo degli accessi;
• gestione della sicurezza nei sistemi operativi;
• vulnerabilità del software, virus e codice malevolo;
• attacchi inferenziali e strategie per la protezione dei dati sensibili;
• cenni alla gestione della sicurezza nelle reti e al rilevamento di intrusioni;
• cenni alla gestione della sicurezza nelle applicazioni Web.

Di seguito sono elencate le principali abilità che gli studenti acquisiranno:
• capacità di riconoscere e classificare vulnerabilità e attacchi ai sistemi software;
• capacità di programmare in modo sicuro;
• capacità di progettare architetture di sistemi software e relativi protocolli di comunicazione in grado di garantire determinati livelli di sicurezza;
• capacità di configurare sistemi operativi e, in generale, sistemi informativi, in modo da rispettare prestabiliti requisiti di sicurezza.
Prerequisiti Per la comprensione delle tematiche trattate è indispensabile la conoscenza della programmazione orientata agli oggetti, con particolare riferimento al linguaggio Java. È inoltre importante avere familiarità con algoritmi e strutture dati fondamentali, con i sistemi operativi, le basi di dati, la programmazione client-server e i concetti di base delle reti e di Internet in particolare.
Metodi didattici Il corso si articola in due principali tipologie di lezioni:

• Lezioni frontali (80% del tempo totale): vengono svolte lezioni frontali in aula. Ogni lezione consiste nell'illustrazione da parte del docente di nuovi concetti teorici, attraverso la proiezione di appositi lucidi.

• Esercitazioni guidate in laboratorio (20% del tempo totale): si svolgono nel laboratorio di ingegneria del software, e prevedono la progettazione e l'implementazione di programmi sotto la guida del docente.
Altre informazioni Oltre al ricevimento settimanale, il docente è disponibile a svolgere consultazioni individuali o di gruppo, in date e orari da concordare con gli studenti.
Modalità di verifica dell'apprendimento Obiettivo. Accertare la conoscenza dei concetti teorici impartiti nell'insegnamento, verificare la capacità di analizzare la sicurezza di un sistema software e di progettare protocolli e sistemi relativamente "sicuri" e in grado di soddisfare determinati vincoli progettuali.

L'esame consiste in una prova scritta e una prova orale facoltativa strutturate come specificato di seguito.

Prova scritta
• Durata: 120 minuti.
• Punteggio: 30/30.
• Composizione: 4 quesiti principali, uno per ciascuna delle seguenti macro-tematiche: utilizzo e conoscenza delle principali primitive crittografiche, protocolli di autenticazione, sicurezza dei sistemi operativi e del software, sicurezza in Internet e/o delle applicazioni Web.
Un quesito consiste in un esercizio e/o in una o più domande a stimolo aperto con risposta aperta.

La correzione della prova scritta viene presentata allo studente tramite un breve colloquio orale; lo studente può commentare e discutere il risultato e confrontarsi con il docente per capire se procedere o meno alla prova orale facoltativa.

Prova orale facoltativa
• Durata: 15 minuti.
• Punteggio: ± 3 punti.
• Composizione: 3 domande a stimolo aperto con risposta aperta.

Per informazioni sui servizi di supporto agli studenti con disabilità e/o DSA visita la pagina http://www.unipg.it/disabilita-e-dsa
Programma esteso Unità didattica: Modulo 1 - Introduzione, crittografia e autenticazione
Concetti fondamentali: confidenzialità, integrità, disponibilità, minacce e attacchi.
Modelli per il controllo degli accessi: matrice di controllo, liste di controllo, liste di capacità.
Controllo degli accessi basato sui ruoli.
Principi generali sulla crittografia a chiave segreta.
Concetti di base sui cifrari a blocchi.
Cenni ai cifrari DES e AES.
Cifrari a flusso: algoritmo RC4.
Modalità operative dei cifrari a blocchi: ECB, CBC e OFB.
Funzioni crittografiche di hash.
Tecniche crittografiche per il controllo di integrità sicuro: residuo CBC e HMAC.
Crittografia a chiave pubblica: algoritmi RSA e Diffie-Hellman.
Firma digitale.
Autenticazione di sistemi e di persone.
Protocolli di autenticazione a sfida e risposta.
Protocolli di autenticazione a conoscenza zero.

Unità didattica: Modulo 2 - Sicurezza del software, delle reti e del Web
Sicurezza dei sistemi operativi.
Sicurezza e monitoraggio dei processi.
Sicurezza del file system e della memoria.
Attacchi di tipo buffer overflow.
Sicurezza dei programmi.
Vulnerabilità ed errori di programma non malevoli.
Virus e altro codice malevolo.
Attacchi inferenziali ai dati sensibili.
Principali vulnerabilità delle reti.
Firewall e Tunneling.
Rilevamento di intrusioni.
Sicurezza delle applicazioni Web e dei browser.
Attacchi di tipo XSS Cross Site Scripting e SQL injection.
Condividi su