[CySec]
Cybersecurity
ex Sicurezza dei Sistemi
Informatici e delle Reti
Anno Accademico
2024-2025
Laurea magistrale in ingegneria informatica (DM. 270), 2º anno, 6
cfu
Docente: Maurizio
Pizzonia - Dip. Ingegneria (sezione Inf e Autom., ex DIA) stanza
225.
Collaboratore: Lorenzo Airemma
Orario di ricevimento studenti: su appuntamento, contattare il docente via MS-Teams o email.
Prerequisiti: Reti di Calcolatori e Sistemi
Operativi (importanti); Infrastrutture delle Reti di
Calcolatori
(consigliato).
Periodo: dal 23 settembre 2024 al 23 dicembre 2024.
Giorni della settimana, orario e aule : vedi
calendario delle lezioni della laurea magistrale pubblicato dal
collegio
didattico
di ingegneria
informatica.
Obiettivi del corso
- motivare verso lo studio e l’applicazione della cybersecurity,
- comprendere, anche in pratica, alcune delle principali vulnerabilità del software,
- fornire
strumenti per la progettazione e la gestione di sistemi informatici e
reti con certe garanzie di sicurezza, con particolare riferimento ad
ambiti produttivi,
- mettere in grado di comprendere le emergenti tecnologie legate alle blockchain e le loro caratteristiche,
- fornire le basi per poter affrontare l’approfondimento di tematiche specifiche in autonomia.
Modalità di erogazione
Il corso è erogato in presenza. Ulteriori servizi on-line per la didattica con accesso riservato agli studenti iscritti all'Università Roma Tre:
Gli studenti si devono iscrivere al corso in moodle, automaticamente lo studente verrà anche iscritto al team del corso in MS-Teams.
Materiale didattico
Materiale di studio.
- Slides proiettate a lezione e scaricabili da questo sito.
- David A. Wheeler,"Secure
Programming
for Linux and Unix HOWTO". On-line, part of the Linux
Documentation
Project.
- Oskar Andreasson,"Iptables
Tutorial". On-line.
- C. Ellison, B.
Schneier, "Ten Risks of PKI: What You're Not Being Told About Public
Key Infrastructure", Computer Security Journal, v 16, n 1, 2000, pp.
1-7.
- A. Antonopoulos, G, Wood, Mastering ethereum: building
smart contracts and dapps. O'Reilly Media, 2018
Testi di riferimento il cui acquisto non è strettamente necessario.
- M. Bishop, "Computer Security: Art and Science", Addison-Weslesy.
- C. Kaufman, R. Perlman, M. Speciner, "Network Security: Private
Comunication in a Public World (second edition)", Prentice Hall.
- C. Pfleeger, S. Pfleeger, "Sicurezza in informatica", Pearson -
Prentice Hall.
- A. Antonopoulos, Mastering Bitcoin, 2nd Edition, O'Reilly, ,2017
Programma delle Lezioni
Il programma viene aggiornato con le slide e con eventuali
variazioni degli argomenti.
Gli argomenti con link non attivi devono essere considerati provvisori.
- Introduzione al
corso
-
Introduzione
alla sicurezza informatica e terminologia
- Vulnerabilità e minacce
- Vulnerabilità del software:
- correttezza dei programmi,
vlunerabilità, programmazione difensiva e by contract, definizione di input fidato e non fidato,
cybercrime, cert, statistiche sulle vulnerabilità
- Web security in pratica:
Prerequisiti
HTTP, PHP, sessioni, HTTP
requests in python
Command and code
injection
SQL injection
File
disclosure, server side request forgery
Cross site scripting (XSS), Cross Site
Request Forgery (CSRF)
-
Attacchi
di tipo buffer overflow . Rilevanza e impatto, principi di funzionamento (memory layout del processo
e dello stack),
simulazione dell'exploit, rassegna delle difficoltà nella creazione di un exploit per buffer overflow,
NOP, input troncato,
metodi per scrivere l'exploit, esempio exploit, test, contromisure, canaries, ASLR, NX. Varianti: string
size, heap based, length overflow.
Return Oriented Programming. Rassegna di tools.
- Vulnerabilità
delle
reti : sniffing, mac flood, ARP poisoning, vulnerabilità
del
DNS, attacco di Kaminsky. TCP session hijecking, attacchi MitM, DOS
e
Distributed DoS, Amplification, Route
hijacking, BGP biggest security hole.
- Pianificazione della sicurezza: contenuti
del piano di sicurezza,
analisi dei rischi, mitigazione.
Frameworks.
- Contromisure
- Principi
di
progettazione
di politiche e meccanismi
- Modelli:
Modelli architetturali:AAA,
reference monitor, delega. Modelli per l'espressione di policy: DAC, MAC, access control matrix
- Sicurezza dei sistemi:
- Sicurezza delle reti:
-
Hardening.
- Considerazioni
sui
sistemi per la rilevazione automatica di problemi/anomalie
- Tecniche crittografiche:
-
richiami di
crittografia (hash, message authentication codes, crittografia simmetrica, stream/block ciphers,
operation modes, crittografia asimmetrica, firma
digitale),
attacchi birthday, rainbow, qualità delle chiavi,
generazione di numeri
pesudo-casuali.
-
Protocolli
di autenticazione e di scambio di chiavi. Attacchi replay e
reflection.
Nonces. Perfect Forward Secrecy. Diffie-Helman.
-
Certificati,
certification authority, public key infrastructure e loro
vulnerabilità.
- Applicazioni:
- Distributed
Ledger
Technologies (blockchains): classificazione, elementi architetturali, strutture dati autenticate, algoritmi di consenso, attacchi al consenso, Proof of Work, Bizantine-Fault Tolerant, Proof of Stake, il trilemma della scalabilità
- Smart
contracts, garanzie di sicurezza, il modello di Ethereum, Solidity, aspetti sullo sviluppo.
- Materiale utile ma fuori programma.
Per sostenere l'esame non necessario la consultazione di questo
materiale, che non è stato mostrato a lezione.
- Malaware e
scocial
engineering : virus, worm, trojan, rootkit, spyware, adware,
botnet, market, cyberwar, phishing.
-
confinamento
in sistemi dac (jailing e virtualizzazione), selinux, apparmor
- Sicurezza di sistema
- Windows
- Esercizi su
access control e sicurezza di sistema
- Esercizi sulla
sicurezza delle reti
-
Esercizi
su protocolli di autenticazione e scambio di chiavi
- Sicurezza nei
sistemi di controllo industriali, panoramica su malware e adavanced
persistent threates, strutture dati autenticate e Merkle hash
trees, integrità per USB memory sticks nell'ambito dei sistemi critici
(Host Integrity System), protezione da attacchi al firmware tipo BadUSB
(USBCheckIn)
- Authenticated data structures
- DLT e Bitcoin
- Cybersecurity nella grandi organizzazioni
- Hardware security: attacchi Rowhammer e Meltdown, impatto e contromisure.
Esami, esoneri e vecchi appelli
La prova di esame sarà sia pratica (in laboratorio) che scritta. Quest'anno sono previste degli esoneri (o
valutazioni in itinere).
Per l'esame e' obbligatorio prenotarsi mediante il sito
GOMP.
Le procedure per le prenotazioni per gli esoneri verranno comunicate in prossimità degli esoneri.
Regolamento esami ed esoneri
- L’esame consiste di una prova pratica di laboratorio che pesa 2 CFU e una prova teorica scritta che pesa 4 CFU.
- Alternativamente ci si può avvalere della valutazione in itinere, consistente in 2 esoneri (comprendente sia pratica che teoria). Gli esoneri copriranno l’intero programma e si terranno secondo il seguente calendario (provvisorio)
- Lunedì 4 novembre 2024 ore 14:00 in laboratorio Campus
- Lunedì 16 dicembre 2024 ore 14:00 in laboratorio Campus
- Il risultato della valutazione in itinere potrà essere accettato prima del primo appello d’esame di gennaio/febbraio. Chi non accetta rinuncia al voto della valutazione in itinere (non potrà accettarlo nei successivi appelli) e dovrà sostenere l’esame regolare.
- Il voto della valutazione in itinere si otterrà facendo la media aritmetica dei voti dei due esoneri. L’eventuale assenza ad uno degli esoneri verrà contata con voto pari a zero per quell’esonero.
- L’accesso all’esame e a ciascun esonero è subordinato ad aver svolto alcuni esercizi a casa (homework) usando il sistema SecureFlag, i quali però non saranno oggetto di valutazione. Ulteriori dettagli verranno forniti a lezione.
- Durante le prove di laboratorio, per la parte pratica, gli studenti potranno accedere a Internet, ma sarà chiaramente vietata ogni forma di comunicazione con chiunque e con qualsiasi forma di AI e chatbot.
Vecchi compiti di esame
Notare che l'esame ha subito nel tempo dei cambiamenti. In alcuni anni (fino al 2023) e stata persente una tesina da
(2cfu).
Nel 2024 è prevista una prova pratica (2cfu)
ma non sono previste le tesine.
Collegio didattico di
Ingegneria Informatica
Questa pagina è mantenuta da Maurizio Pizzonia.