Corso di laurea

cybersecurity

Università degli Studi di Roma - La Sapienza · 29 materie · 4 file condivisi

Il corso di studio in Cybersecurity si caratterizza per un’offerta didattica interdisciplinare che raccoglie contributi dell’informatica, dell’ingegneria, della statistica, delle scienze giuridico‐economiche e organizzative, insieme a conoscenze specifiche dei principali domini applicativi di protezione contro i cyber-attacchi. In particolare, la laurea magistrale in Cybersecurity offre le conoscenze professionali adeguate, sia dal punto di vista tecnologico che normativo, per supervisionare e coordinare le politiche di sicurezza nell’ambito di complessi sistemi informatici, organizzare la protezione da cyber-attacchi, e gestire il recupero in caso di attacco avvenuto con successo.

Ecco tutti i dettagli sul corso di laurea selezionato. Sul UniDocs troverai gli appunti condivisi dagli altri studenti del tuo corso di laurea, ordinati per materia. Ricordati che per poter visualizzare il materiale devi essere registrato al sito e possedere un numero di crediti sufficiente.

Al momento abbiamo 4 files caricati sul nostro portale suddivisi nelle 29 materie appartenenti al tuo corso di laurea.

Sfoglia il materiale didattico

Con UniDocs hai l'opportunità di studiare insieme a tutto il tuo corso di laurea. Guadagna subito dei crediti, carica il materiale del tuo ultimo esame!
Più condividi, più tempo avrai per studiare con tutta la community!

Materie del corso

ADVANCED CRYPTOGRAPHY 1° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi Generali Gli strumenti tradizionali di crittografia sono insufficienti per la protezione dei dati negli scenari attuali. Gli obiettivi di questo corso consistono nel presentare vari recenti strumenti e tecniche…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi Generali Gli strumenti tradizionali di crittografia sono insufficienti per la protezione dei dati negli scenari attuali. Gli obiettivi di questo corso consistono nel presentare vari recenti strumenti e tecniche di crittografia avanzata insieme con le loro applicazioni per ottenere sicurezza e privacy già al momento della progettazione, aderendo al principio della sicurezza e privacy by design nel Cyberspace. Il corso fornisce contenuti sia teorici che pratici.
Obiettivi Specifici Il corso utilizzerà la potenza degli schemi di firma avanzati, delle nozioni avanzate di cifratura, delle verifiable random functions, di sistemi di prova interattivi e privacy-preserving, dei puzzle crittografici. Particolare attenzione sarà data alle applicazioni reali quali il voto elettronico, le aste, il contact tracing che preserva la privacy, i pagamenti elettronici, le crittovalute, i portafogli per la gestione delle identità, la cifratura end-to-end negli scambi di messaggi, la disinformazione, la minimizzazione ed il diritto all'oblio del GDPR, le librerie e gli strumenti pratici di crittografia avanzata.
Conoscenza e comprensione Conoscenza delle proprietà di sicurezza degli strumenti avanzati di crittografia. Conoscenza delle principali assunzioni di complessità utilizzate dagli strumenti avanzati di crittografia. Conoscenza dei protocolli e degli schemi crittografici usati quotidianamente. Comprensione delle proprietà teoriche e delle prestazioni concrete degli strumenti avanzati di crittografia.
Applicazione della conoscenza e della comprensione Come selezionare e combinare insieme gli strumenti avanzati di crittografia corretti per una certa applicazione. Come analizzare la sicurezza ed efficienza di un sistema che fa uso di strumenti avanzati di crittografia.
Autonomia di giudizio Gli studenti saranno in grado di valutare e giudicare l'effettiva sicurezza di un sistema di elaborazione delle informazioni secondo un realistico modello di minaccia.
Abilità comunicative Gli studenti impareranno ad argomentare ed illustrare la resilienza di un sistema di elaborazione delle informazioni ad attacchi concreti.
Capacità di apprendimento Gli studenti otterranno le nozioni necessarie ad un più approfondito studio dei temi del corso.

Programma

Introduction on Modern Cryptography, Zero-Knowledge Proofs and Multi-Party Computation

Advanced Cryptography for Blockchains

Advanced Signatures

Post-Quantum Cryptography

Cryptographic Protocols

Cryptographic Hardware

Privacy and Surveillance

Library and Tools for Advanced Cryptography

  • Introduzione a Crittografia Moderna, ZK proofs e secure multi-party computation (16h)
  • Advanced Cryptography for Blockchains (6h)
  • Advanced Signatures (8h)
  • Post-Quantum Cryptography (8h)
  • Cryptographic Protocols (10h)
  • Cryptographic Hardware (3h)
  • Privacy and Surveillance (7h)

Modalità d'esame

L'esame consiste in colloquio orale con domande specifiche che coprono la gran parte del programma del corso. La valutazione finale terrà conto della qualità delle risposte singolarmente, e della visione d'insieme che si evince dalle stesse. Il voto massimo richiede un'ottima comprensione di tutti gli argomenti del corso, mentre il voto di ammissione minimo, richiede una conoscenza mediamente sufficiente degli argomenti del corso.

Testi di riferimento

Boaz Barak: An Intensive Introduction to Cryptography (online)

Dan Boneh and Victor Shoup: A Graduate Course in Applied Cryptography (online)

Introduction to Modern Cryptography | Revised Third Edition, by Jonathan Katz and Yehuda Lindell, Chapman and Hall/CRC

Slides e altre risorse messe a disposizione dal docente agli studenti tempestivamente.

Codice insegnamento 10628969

BIOMETRIC SYSTEMS 1° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi formativi: Essere in grado di progettare e valutare un sistema biometrico o multibiometrico Conoscere le caratteristiche e le tecniche fondamentali relative alle biometrie fisiche come volto, impronte, iride,…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi: Essere in grado di progettare e valutare un sistema biometrico o multibiometrico Conoscere le caratteristiche e le tecniche fondamentali relative alle biometrie fisiche come volto, impronte, iride, ecc., e comportamentali come camminata, firma (caratteristiche dinamiche), stile di battitura, ecc. Conoscere le caratteristiche dell’architettura di un sistema biometrico: sistemi unimodali e multimodali. Essere in grado di valutare le prestazioni di un sistema biometrico in base alla modalità adottata: verifica, identificazione. Essere in grado di valutare/garantire la robustezza di un sistema biometrico rispetto ad attacchi di spoofing (furto di identità).
Conoscenza e capacità di comprensione: Fondamenti teorici della progettazione di un sistema biometrico e delle tecniche di estrazione/confronto delle caratteristiche specifiche per i principali tratti biometrici.
Capacità di applicare conoscenza e comprensione: Essere in grado di progettare ed implementare una applicazione di riconoscimento biometrico per almeno uno tratto biometrico.
Autonomia di giudizio: Essere in grado di valutare le prestazioni e la robustezza agli attacchi di un sistema biometrico. Essere in grado di trasferire tecniche e protocolli in contesti diversi.
Abilità comunicative: Essere in grado di comunicare/condividere i requisiti di un sistema biometrico, le modalità operative più adatte ad una certa applicazione, e le misure di performance del sistema
Capacità di apprendimento: Essere in grado di approfondire autonomamente gli argomenti presentati nel corso, relativamente a tecniche e metodi specifici/complessi o a tratti biometrici non presenti tra gli argomenti.

Programma

Introduzione ai sistemi biometrici (5 ore)

Valutazione di un sistema biometrico (10 ore)

Valutazione delle prestazioni

Affidabilità dei risultati del riconoscimento

Principali biometrie (30 ore)

Rilevazione del volto

Riconoscimento del volto 2D e 3D

Riconoscimento dell'orecchio

Riconoscimento dell'iride

Nozioni fondamentali di riconoscimento delle impronte digitali

Altre biometrie

Sistemi multibiometrici (15 ore)

Pagina web del corso: https://sites.google.com/a/di.uniroma1.it/biometric-systems/

  • Introduzione alle biometrie (5 ore)
  • Testi di riferimento: Slide Lezione 1
  • Valutazione dei sistemi Biometrici (12 ore)
  • Testi di riferimento: Slide Lezione 2 e Lezione 2bis
  • Rilevazione e riconoscimento del volto (15 ore)
  • Testi di riferimento: Slide Lezioni 4-7
  • Antispoofing del volto (5 ore)
  • Testi di riferimento: Slide Lesson 8
  • Riconoscimento dell'orecchio (3 ore)
  • Testi di riferimento: Slide Lesson 9
  • Riconoscimento dell'iride (8 ore)
  • Testi di riferimento: Slide Lesson 10
  • Riconoscimento delle impronte digitali (5 ore)
  • Testi di riferimento: Slide Lesson 11
  • Sistemi multibiometrici (3 ore)
  • Testi di riferimento: Slide Lesson 12
  • Esempi di sistemi realizzati con biometrie comportamentali (4 ore)
  • Testi di riferimento: Presentazioni di progetti

Modalità d'esame

-----------------------------------------------

MODALITA' DI ESAME

Occorre conseguire una valutazione sufficiente sia sul progetto che sulle domande orali che verteranno sull'intero programma del corso.

Progetto: progettazione ed implementazione di un modulo biometrico utilizzando MATLAB oppure OpenCV, in gruppo (fortemente consigliato) oppure individualmente.

E' richiesta una relazione dettagliata sul progetto, che menzioni chiaramente le eventuali fornti esterne utilizzate, e i punti in cui è stato sviluppato del codice originale per costruire l'applicazione finale. Occorre sottolineare tutte le scelte di progetto che sono state necessarie per ottenere una applicazione funzionante, e un chiaro schema architetturale per evidenziare le parti di codice prese dalle librerie e quelle sviluppate. Infine occorre eseguire una estesa valutazione delle prestazioni, eventualmente in modalità di verifica, e i risultati devono essere riportati nella relazione. Infine, l'esame orale include domande sull'intero corso, e non solo sul progetto.

Presentazione in aula, relazione scritta e demo del progetto

Domande su tutti gli argomenti del corso

Lingua: italiano o inglese

Le date che saranno pubblicate su INFOSTUD si riferiscono alle scadenze per la presentazione della relazione sul progetto. Le date dell'esame orale verranno concordate in seguito.

Testi di riferimento

Slide del corso e letture consigliate

Per approfondimenti:

A.K. Jain, P. Flynn, A.A. Ross, Handbook of Biometrics, Springer, 2008.

H. Wechsler, Reliable Face Recognition Methods: System Design, Implementation and Evaluation, Springer, 2007.

A.Ross, K. Nandakumar; A.K. Jain. Handbook of Multibiometrics. Springer, 2006

Letture suggerite alla fine di ogni lezione

Codice insegnamento P049786023

CRYPTOGRAPHY 1° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi Generali: Lo scopo del corso è quello di tramandare i fondamenti della crittografia, che è la componente principale per la sicurezza nelle applicazioni digitali odierne. Obiettivi Specifici: Gli studenti…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi Generali: Lo scopo del corso è quello di tramandare i fondamenti della crittografia, che è la componente principale per la sicurezza nelle applicazioni digitali odierne.
Obiettivi Specifici: Gli studenti impareranno la metodologia della sicurezza dimostrabile, che permette di dimostrare la sicurezza dei moderni crittosistemi in senso matematico.
Conoscenza e Comprensione: -) Conoscenza dei fondamenti matematici della crittografia moderna. -) Conoscenza delle principali assunzioni crittografiche, su cui si basa la sicurezza dei moderni crittosistemi. -) Conoscenza degli schemi crittografici usati nella vita reale. Comprensione delle loro proprietà (teoriche e pratiche).
Applicare Conoscenza e Comprensione: -) Come selezionare la giusta primitiva crittografica per una data applicazione. -) Come analizzare la sicurezza di un dato crittosistema.
Capacità critiche e di giudizio: Gli studenti saranno in grado di giudicare se una data primitiva crittografica è sicura oppure no.
Capacità Comunicative: Come descrivere la sicurezza di una costruzione crittografica nel linguaggio della sicurezza dimostrabile.
Capacità di Apprendimento Successivo: Gli studenti interessati alla ricerca verranno a conoscenza di alcuni problemi aperti nell'area, ed otterranno le basi necessarie per studi più approfonditi in materia.

Programma

Il corso coprirà i seguenti argomenti.

1) Crittografia incondizionata: Sicurezza perfetta, one-time pad, teorema di Shannon. Autenticazione perfetta, universal hashing, estrattori, lemma "leftover-hash".

2) Sicurezza computazionale: Funzioni unidirezionali (OWFs) e teoria della complessità. Basi di teoria dei numeri e OWFs candidate. Indistinguibilità computazionale, e assunzioni decisionali.

3) Crittografia simmetrica: Generatori pseudocasuali (PRGs), bit hard-core, costruzioni di PRGs. Funzioni pseudocasuali (PRFs), costruzioni di PRFs, reti di Feistel. Cifratura simmetrica: Definizioni, costruzioni, e modi operativi. Autenticazione di messaggio: Definizioni, costruzioni, e cifratura autenticata.

4) Funzioni hash: Modello dell'oracolo casuale, resistenza alla pre-immagine primaria/secondaria, resistenza alle collisioni, costruzione di Merkle-Damgaard. Alberi di Merkle.

5) Crittografia a chiave pubblica: Cifrari a chiave pubblica: Definizioni, e crittosistemi di RSA ed ElGamal. Sistemi hash-proof e cifratura di Cramer-Shoup. Firme digitali: Definizioni, hash a dominio pieno, firme di Waters. Schemi di identificazione: Definizioni, costruzioni, e applicazioni alle firme digitali.

  • Sicurezza incondizionata (10 ore)
  • Testi di riferimento: Jonathan Katz and Yehuda Lindell, Introduction to Modern Cryptography, CRC Press, Second Edition, 2014
  • Crittografia simmetrica (25 hours)
  • Testi di riferimento: Jonathan Katz and Yehuda Lindell, Introduction to Modern Cryptography, CRC Press, Second Edition, 2014
  • Crittografia asimmetrica (25 hours)
  • Testi di riferimento: Jonathan Katz and Yehuda Lindell, Introduction to Modern Cryptography, CRC Press, Second Edition, 2014

Modalità d'esame

La modalità di esame consiste in un esame scritto che richiede la risoluzione di 3 esercizi (simili a quelli svolti a lezione) e l'esposizione di 3 argomenti di teoria tra quelli trattati durante il corso. Non è ammesso consultare libri o note, e dispositivi digitali. Per superare l'esame occorre conseguire un voto non inferiore a 18/30 alla prova scritta.

Testi di riferimento

Jonathan Katz and Yehuda Lindell, Introduction to Modern Cryptography, CRC Press, Second Edition, 2014. Il materiale didattico ed altre informazioni sono disponibili anche da: https://dventuri83.github.io.

Daniele Venturi, Crittografia nel Paese delle Meraviglie, Springer, Collana di Informatica, 2012.

Oded Goldreich, Foundations of Cryptography - Volume 1 Basic Techniques, Cambridge University Press, 2001.

Jonathan Katz, Digital Signatures, Springer, 2010.

Salil P. Vadhan, Pseudorandomness, Foundations and Trends in Theoretical Computer Science, Vol. 7, Issue 1-3, 2012.

Codice insegnamento P958612031

CYBER AND COMPUTER LAW 1° anno · 2° semestre · 6 CFU · GIUR-17/A · 1 file

Obiettivi L’obiettivo del corso è quello di approfondire i principali temi di regolazione giuridica delle attività informatiche, nelle imprese e nella pubblica amministrazione, con riferimento ai temi della sicurezza…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi
L’obiettivo del corso è quello di approfondire i principali temi di regolazione giuridica delle attività informatiche, nelle imprese e nella pubblica amministrazione, con riferimento ai temi della sicurezza informatica e del Cybercrime, della regolamentazione europea sulla elaborazione e sul trattamento dei dati personali, sul commercio elettronico e sulla proprietà intellettuale in materia informatica. Saranno inoltre presentati gli strumenti giuridici, i protocolli e gli standard della cooperazione europea nel contrasto al cybercrime. Il corso è strutturato in moduli di approfondimento tematico, anche attraverso l’analisi e la discussione di casi pratici.
Conoscenza e comprensione
Al termine del corso lo studente è in grado di identificare e sviluppare le principali conoscenze giuridiche in materia di elaborazione dei dati e di operare efficacemente nell’ambito delle amministrazioni pubbliche, nei rapporti con uffici giudiziari o di polizia. Inoltre, è in grado di partecipare efficacemente a gruppi di lavoro o squadre investigative comuni, avendo acquisito le indispensabili nozioni relative ai profili di responsabilità giuridica. Il corso consente di raccordare competenze tecnologiche informatiche con competenze organizzative, economiche e giuridiche riguardanti l’utilizzo dell’informatica e degli strumenti informatici in ambito aziendale e pubblico.
Capacità di applicare conoscenza e comprensione
Per la realizzazione degli obiettivi formativi, le attività didattiche si articolano in moduli di approfondimento tematico finalizzati alla definizione e alla gestione di specifici contesti operativi o di particolari situazioni di rischio ed emergenza. Al fine di comprendere le esigenze degli operatori, saranno previste inoltre iniziative comuni con altri corsi di studio sui temi della sicurezza, della resilienza e delle metodologie di acquisizione di tracce e prove relative ai reati informatici, anche in ambito internazionale.
Autonomia di giudizio
Il corso intende sviluppare la capacità delle studentesse e degli studenti di formulare valutazioni autonome sugli elementi normativi connessi all’intelligenza artificiale e, più in generale, al rapporto tra diritto e innovazione tecnologica. Attraverso l’analisi di casi concreti e il confronto critico durante le attività didattiche, gli studenti sono guidati a individuare le implicazioni giuridiche, etiche e organizzative derivanti dall’utilizzo delle nuove tecnologie, elaborando opinioni autonome e consapevoli, prive di condizionamenti pregiudizievoli. Particolare attenzione sarà dedicata allo sviluppo del pensiero critico e alla capacità di argomentazione, attraverso domande, problematiche, discussioni e sollecitazioni proposte durante il corso.
Abilità comunicative
Il corso si propone di sviluppare la capacità di comunicare in modo chiaro ed efficace contenuti giuridici e tecnici complessi, favorendo l’acquisizione di abilità comunicative basate sull’ascolto, sull’empatia, sul confronto interdisciplinare, sul public speaking e sulla capacità di redigere testi e documenti adeguati ai diversi contesti professionali.
Capacità di apprendimento
Il corso mira a fornire metodi e strumenti finalizzati a sviluppare, organizzare e consolidare le capacità di apprendimento autonomo delle conoscenze acquisite durante le lezioni. In particolare, le attività didattiche sono orientate alla partecipazione attiva, alla verifica immediata delle eventuali criticità, all’elaborazione di strategie di miglioramento e alla rielaborazione dei contenuti, al fine di favorirne la piena assimilazione. Le studentesse e gli studenti sono coinvolti in attività di discussione e confronto volte al raggiungimento degli obiettivi formativi e a una valutazione consapevole delle competenze acquisite.

Programma

Il programma dell'insegnamento è così articolato:

I parte: concetti generali e di contesto

  • differenza tra diritto e legge
  • idea del giusto, diritto e libertà

II parte: approfondimento degli argomenti del corso

  • il principio di uguaglianza, algoritmi e diritto
  • giustizia legalità, equità, responsabilità dei robot
  • algoritmo e diritto
  • crisi dei diritti umani e intelligenza artificiale

III parte: analisi critica

  • la "macchina della giustizia"
  • giuridicità e potere degli algoritmi

Integrazioni e variazioni del programma verranno comunicati agli studenti mediante avvisi sulla bacheca dell'Istituto di filosofia del diritto e on line sulla piattaforma e-learning.

Alla fine del corso gli studenti consegnano un elaborato che sarà pubblicato sulla piattaforma di e-learning e nella Collana di Studi di Filosofia del diritto.

Risultati di apprendimento attesi dall’insegnamento:

Conoscenza e capacità di comprensione dei testi con possibilità di elaborare idee originali in un contesto di discussione e di ricerca.

Capacità di correlare teoria e prassi, integrare le conoscenze acquisite e gestire la complessità, nonché formulare giudizi sulla base di informazioni limitate o incomplete, includendo la riflessione sulle responsabilità giuridiche collegate all’applicazione delle loro conoscenze e giudizi. Capacità di comunicare le conclusioni in modo chiaro, motivando la ratio ad esse sottesa. Acquisizione di elementi che consentano di studiare in modo autonomo.

Modalità d'esame

L’esame è strutturato secondo una valutazione progressiva che si acquisisce durante l’intero semestre, attraverso colloqui interattivi, calendarizzati e pubblicati sulla piattaforma e-learning e nella bacheche della facoltà, che integrano le lezioni di didattica frontale.

Vengono costituiti gruppi chiamati a relazionare sulle questioni affrontate durante il corso, ogni partecipante può intervenire più volte su questioni scelte liberamente. I gruppi, se vogliono, possono redigere un elaborato scritto su uno dei temi affrontati durante il corso. La valutazione progressiva si conclude con l’esame finale.

Le comunicazioni avvengono tramite la piattaforma e-learning, dove vengono pubblicati gli elaborati redatti dagli studenti e l'intero materiale didattico utile per la preparazione dell’esame e dei colloqui.

Testi di riferimento

B. Romano, Civiltà dei dati. Libertà giuridica e violenza, Torino, 2021

Le dispense del libro, insieme ad altri materiali didattici, verranno progressivamente messe a disposizione in inglese anche sulla piattaforma e-learning del corso di Cyber and Computer Law

Studying both of the following books is required for taking the exam and also work as analisys tools during the semester of the course.

Codice insegnamento P609235884

Computer systems and programming 1° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi Generali Obiettivo del corso è fornire gli strumenti fondamentali della programmazione di sistema. Obiettivi Specifici Gli studenti saranno in grado di sviluppare autonomamente del codice in grado di interagire…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi Generali
Obiettivo del corso è fornire gli strumenti fondamentali della programmazione di sistema.
Obiettivi Specifici
Gli studenti saranno in grado di sviluppare autonomamente del codice in grado di interagire con il sistema operativo e sfruttarne i servizi.
Conoscenza e Comprensione
Conoscenza del linguaggio C e dei strumenti normalmente impiegati nell'ambiente di sviluppo (compilatore, preprocessore, debugger, make, etc.)
Conoscenza delle funzioni fondamentali del sistema operativo e dei suoi moduli principali (Scheduler, Virtual Memory Manager, Filesystem .. ).
Conoscenza delle principali primitive di sistema per la creazione la sincronizzazione di processi e thread, lo scambio di messaggi ed informazioni.
Conoscenza delle primitive per la programmazione di rete (socket).
Applicazione di Conoscenza e Comprensione
Come utilizzare le primitive fornite dal sistema operativo ed integrarle, in modo corretto, nel codice.
Come scegliere il componente di SO e le funzioni più adatte, in base alle esigenze delle applicazioni ed alla loro modalità di esecuzione.
Autonomia di Giudizio
Gli studenti saranno in grado di determinare la complessità e la modalità di implementazione di un'applicazione di sistema.
Abilità Comunicative
Descrivere l'interazione di una applicazione con il sistema operativo e spiegare le motivazioni alla base delle scelte.
Capacità di Apprendimento Successivo
Gli studenti interessati potranno proseguire l'apprendimento esaminando, nei suoi dettagli, l'architettura e l'interfaccia di programmazione del sistema operativo.

Programma

1. Tipi di dati primitivi e operazioni – Tipi di dati base in C, operatori aritmetici, logici e di confronto.

2. Controllo sequenziale – Esecuzione sequenziale delle istruzioni e gestione del flusso di esecuzione.

3. Clausole di controllo selettivo: if-else e switch – Controllo condizionale con strutture if-else e switch.

4. Clausole di controllo dei cicli: while, do-while e for – Strutture iterative per il controllo dei cicli.

5. Funzioni: dichiarazione, definizione e chiamata – Definizione, dichiarazione e chiamata di funzioni, passaggio di parametri.

6. Comandi/macros di precompilazione: #ifdef – Direttive del precompilatore e macro per configurazioni condizionali.

7. Array: dichiarazione, definizione e utilizzo – Dichiarazione, inizializzazione e accesso agli array.

8. Strutture: struct e union – Definizione e utilizzo di strutture e unioni per dati complessi.

9. Puntatori – Puntatori, aritmetica dei puntatori e utilizzo con funzioni e strutture dati.

10. Operazioni su file: read e write – Operazioni di I/O su file con le funzioni standard di C.

11. Introduzione all’uso di Linux – Introduzione all’ambiente Linux, shell, comandi e gestione dei file.

12. Chiamate di sistema – Concetto di chiamata di sistema e interfacciamento con il kernel.

13. Chiamate di sistema per I/O su file – Operazioni avanzate di input/output su file tramite system call.

14. I/O avanzato – Tecniche di I/O avanzate e gestione efficiente dei flussi di dati.

15. Chiamate di sistema per la memoria – Allocazione e gestione della memoria tramite chiamate di sistema.

16. Chiamate di sistema per il controllo dei processi: Fork, Wait, Exec – Creazione e gestione di processi concorrenti.

17. Gestione dei segnali – Gestione dei segnali e interruzioni in ambiente Unix/Linux.

18. La famiglia di chiamate Exec – Utilizzo delle famiglie di chiamate exec per eseguire nuovi programmi.

19. Pipe e FIFO – Comunicazione tra processi tramite pipe anonime e FIFO nominate.

20. IPC System V: Semafori e memoria condivisa – Sincronizzazione dei processi e gestione della memoria condivisa.

21. Socket – Programmazione di rete con stream socket (TCP/IP) e datagram socket (UDP), connessioni client-server.

  • Tipi di dati primitivi e operazioni (Settimana 1)
  • Testi di riferimento: Brian Kernighan, Dennis Ritchie: The C Programming Language (2nd Ed.). (Capitoli 1 - 1.2 e Capitolo 2)
  • Controllo sequenziale (Settimana 1)
  • Testi di riferimento: Brian Kernighan, Dennis Ritchie: The C Programming Language (2nd Ed.). (Capitoli 3 - 3.1)
  • Clausole di controllo selettivo: if-else e switch (Settimana 2)
  • Testi di riferimento: Brian Kernighan, Dennis Ritchie: The C Programming Language (2nd Ed.). (Capitoli 3.2 - 3.4)
  • Clausole di controllo dei cicli: while, do-while e for (Settimana 2)
  • Testi di riferimento: Brian Kernighan, Dennis Ritchie: The C Programming Language (2nd Ed.). (Capitoli 3.5 - 3.7)
  • Funzioni: dichiarazione, definizione e chiamata (Settimana 3)
  • Testi di riferimento: Brian Kernighan, Dennis Ritchie: The C Programming Language (2nd Ed.). (Capitoli 4 - 4.5)
  • Comandi/macros di precompilazione: #ifdef (Settimana 3)
  • Testi di riferimento: Brian Kernighan, Dennis Ritchie: The C Programming Language (2nd Ed.). (Capitolo 4.11)
  • Array: dichiarazione, definizione e utilizzo (Settimana 4)
  • Testi di riferimento: Brian Kernighan, Dennis Ritchie: The C Programming Language (2nd Ed.). (Capitolo 1.6 e Capitoli 5 - 5.3)
  • Strutture: struct e union (Settimana 4)
  • Testi di riferimento: Brian Kernighan, Dennis Ritchie: The C Programming Language (2nd Ed.). (Capitolo 6)
  • Puntatori (Settimana 5)
  • Testi di riferimento: Brian Kernighan, Dennis Ritchie: The C Programming Language (2nd Ed.). (Capitolo 5)
  • Operazioni su file: read e write (Settimana 5)
  • Testi di riferimento: Brian Kernighan, Dennis Ritchie: The C Programming Language (2nd Ed.). (Capitolo 7)
  • Introduzione all’uso di Linux (Settimana 6)
  • Testi di riferimento: Richard Stevens, Stephen A. Rago: Advanced Programming in the UNIX Environment (3rd Ed.).(Capitolo 1).
  • Chiamate di sistema (Settimana 6)
  • Testi di riferimento: Richard Stevens, Stephen A. Rago: Advanced Programming in the UNIX Environment (3rd Ed.).(Capitolo 1)
  • Chiamate di sistema per I/O su file (Settimana 7)
  • Testi di riferimento: Richard Stevens, Stephen A. Rago: Advanced Programming in the UNIX Environment (3rd Ed.).(Capitolo 3 e Capitolo 4).
  • I/O avanzato (Settimana 7)
  • Testi di riferimento: Richard Stevens, Stephen A. Rago: Advanced Programming in the UNIX Environment (3rd Ed.).(Capitolo 14).
  • Chiamate di sistema per la memoria (Settimana 8)
  • Testi di riferimento: Richard Stevens, Stephen A. Rago: Advanced Programming in the UNIX Environment (3rd Ed.). (Capitoli 7.1 - 7.8).
  • Chiamate di sistema per il controllo dei processi: Fork, Wait, Exec (Settimana 8)
  • Testi di riferimento: Richard Stevens, Stephen A. Rago: Advanced Programming in the UNIX Environment (3rd Ed.).(Capitoli 8.1 - 8.9).
  • Gestione dei segnali (Settimana 9)
  • Testi di riferimento: Richard Stevens, Stephen A. Rago: Advanced Programming in the UNIX Environment (3rd Ed.).(Capitolo 10).
  • La famiglia di chiamate Exec (Settimana 9)
  • Testi di riferimento: Richard Stevens, Stephen A. Rago: Advanced Programming in the UNIX Environment (3rd Ed.).(Capitoli 8.10).
  • Pipe e FIFO (Settimana 10)
  • Testi di riferimento: Richard Stevens, Stephen A. Rago: Advanced Programming in the UNIX Environment (3rd Ed.).(Capitoli 15.1 - 15.5).
  • IPC System V: Semafori e memoria condivisa (Settimana 10)
  • Testi di riferimento: Richard Stevens, Stephen A. Rago: Advanced Programming in the UNIX Environment (3rd Ed.).(Capitoli 15.6 - 15.12)
  • Socket (Settimana 11)
  • Testi di riferimento: Richard Stevens, Stephen A. Rago: Advanced Programming in the UNIX Environment (3rd Ed.).(Capitolo 16).

Modalità d'esame

La verifica dell’apprendimento si basa su un progetto individuale in linguaggio C e su una discussione orale.

Progetto

  • Tipologia: elaborato tecnico-pratico individuale e/o coppie.
  • Obiettivi: verificare la capacità dello studente di applicare le primitive di sistema e di progettare e sviluppare un programma funzionante in ambiente Linux, integrando aspetti di modularità, correttezza e gestione degli errori.
  • Modalità di somministrazione: il progetto deve essere inviato al docente circa una settimana prima dell’appello, in modo da consentirne la valutazione preliminare. Il programma deve compilare ed eseguire correttamente nell’ambiente Linux indicato dal docente.
  • Criteri di valutazione: correttezza del codice (condizione necessaria per la sufficienza), gestione degli errori, modularità e leggibilità del codice, qualità della documentazione (README, manuale d’uso, relazione tecnica).

Discussione orale

  • Tipologia: colloquio individuale.
  • Obiettivi: accertare la comprensione dei concetti teorici e pratici trattati a lezione, la capacità di giustificare le scelte progettuali effettuate e l’abilità di comunicare in maniera chiara e rigorosa i contenuti tecnici.
  • Durata: circa 20 minuti.
  • Criteri di valutazione: chiarezza espositiva, correttezza delle risposte, capacità di collegare il progetto ai contenuti del corso e di valutare criticamente le soluzioni adottate.

La valutazione finale è espressa in trentesimi e tiene conto in modo integrato della qualità del progetto (codice e documentazione) e della padronanza dimostrata durante la discussione orale.

Per superare l’esame è necessario conseguire un voto non inferiore a 18/30. Lo studente deve dimostrare di aver acquisito una conoscenza sufficiente dei concetti fondamentali della programmazione di sistema e di essere in grado di sviluppare un programma funzionante che utilizzi correttamente le principali primitive di sistema. Durante la discussione orale lo studente deve inoltre dimostrare di comprendere il codice sviluppato, illustrarne il funzionamento e motivare le scelte progettuali adottate.

Per conseguire un punteggio pari a 30/30 e lode, lo studente deve dimostrare una conoscenza eccellente degli argomenti trattati durante il corso, la capacità di progettare e sviluppare soluzioni software corrette, efficienti e ben documentate, e di discuterle con chiarezza e rigore tecnico, collegandole ai principi teorici della programmazione di sistema.

Testi di riferimento

Testi principali.

  • Brian Kernighan, Dennis Ritchie: The C Programming Language (2nd Ed.) - riferimento completo per la sintassi e le caratteristiche del linguaggio C.
  • Richard Stevens, Stephen A. Rago: Advanced Programming in the UNIX Environment (3rd Ed.) - per le funzioni di sistema, la gestione dei processi e la programmazione di rete.

Inoltre, verranno messe a disposizione degli studenti le slide e gli esempi di codice discussi in classe, che costituiscono materiale fondamentale per il corso.

Testi complementari e consigliati.

  • Daniel P. Bovet, Marco Cesati: Understanding the Linux Kernel (3rd Ed.) - per approfondire i concetti di kernel, processi, memoria e filesystem.
  • Brian W. Kernighan, Rob Pike: The Practice of Programming - per migliorare la scrittura di codice leggibile, modulare e robusto.
  • M. Mitchell, J. Oldham, A. Samuel: Advanced Linux Programming - approfondimenti sulla programmazione di sistema in ambiente Linux, con esempi pratici.

Codice insegnamento P638683107

DATA AND NETWORK SECURITY 1° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi formativi Il corso di Data and Network Security è concepito per fornire agli studenti una comprensione approfondita di un ampio spettro di concetti, paradigmi e applicazioni reali della cybersecurity.…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi
Il corso di Data and Network Security è concepito per fornire agli studenti una comprensione approfondita di un ampio spettro di concetti, paradigmi e applicazioni reali della cybersecurity. Particolare enfasi è posta sullo sviluppo di una prospettiva critica rispetto all'evoluzione del panorama delle minacce informatiche, incoraggiando gli studenti non solo ad acquisire le basi della sicurezza informatica, ma anche a esplorare le sfide più recenti e le principali direttrici della ricerca nel settore.
Ogni lezione è strutturata con un duplice obiettivo: in primo luogo, introdurre uno specifico argomento di cybersecurity, quali meccanismi di autenticazione, diverse tipologie di malware, canali di comunicazione covert, cyber deception, remote attestation in ambienti IoT, digital forensics, tutela della privacy dei dati, software-defined networking e advanced persistent threats; in secondo luogo, evidenziare le principali problematiche di ricerca, le minacce emergenti e le tecniche innovative relative a ciascun argomento. Tale approccio consente agli studenti di acquisire solide basi teoriche e, al contempo, una consapevolezza delle problematiche applicative e delle più recenti evoluzioni della ricerca.
Uno degli obiettivi centrali del corso è sviluppare negli studenti capacità di pensiero critico e attitudine alla ricerca scientifica. Gli studenti saranno incoraggiati ad andare oltre una comprensione superficiale degli argomenti attraverso l'analisi di articoli scientifici che hanno contribuito all'avanzamento dello stato dell'arte oppure che hanno evidenziato nuove vulnerabilità e modalità di compromissione dei sistemi.
A tal fine, gli studenti svolgeranno un'attività di ricerca autonoma su un argomento di sicurezza di loro interesse, analizzando gli approcci più recenti, presentando i risultati ai colleghi e partecipando a discussioni sulle future direzioni della cybersecurity. Questo coinvolgimento attivo con la ricerca contemporanea consentirà loro di sviluppare le competenze necessarie per valutare criticamente, mettere in discussione e contribuire all'evoluzione del settore.
Conoscenza e capacità di comprensione
Al termine del corso, gli studenti avranno acquisito conoscenze riguardanti i principi fondamentali della sicurezza dei dati e delle reti, con particolare riferimento ai principali concetti di sicurezza, quali riservatezza, integrità e disponibilità; alle più comuni minacce informatiche, vulnerabilità e vettori di attacco, con particolare attenzione alle tendenze e alle pratiche emergenti; alle architetture di sicurezza delle reti, ai principali protocolli e ai meccanismi di difesa; agli standard di sicurezza, alle politiche di sicurezza e alle metodologie di gestione del rischio; nonché alle principali linee di ricerca e alle tecnologie emergenti nel settore della cybersecurity.
Capacità di applicare conoscenza e comprensione
Al termine del corso, gli studenti saranno in grado di analizzare i requisiti di sicurezza di reti e sistemi informativi, analizzare e valutare criticamente le soluzioni proposte nei diversi ambiti della sicurezza dei dati e delle reti, valutare meccanismi di sicurezza quali sistemi di rilevamento del malware, tecnologie di rete emergenti e altre soluzioni innovative, identificare vulnerabilità e proporre appropriate strategie di mitigazione.
Autonomia di giudizio
Al termine del corso, gli studenti avranno sviluppato la capacità di valutare criticamente il livello di sicurezza di sistemi e reti; analizzare criticamente le tendenze emergenti e le soluzioni proposte, sia in termini di attacchi sia di meccanismi di difesa, presentate nella letteratura scientifica; confrontare soluzioni di sicurezza alternative tenendo conto di vincoli tecnici, organizzativi ed economici; analizzare incidenti di sicurezza e individuare le strategie di risposta più appropriate; assumere decisioni consapevoli nell'ambito della gestione del rischio e della definizione delle politiche di sicurezza; valutare le implicazioni etiche, normative e relative alla tutela della privacy associate alle soluzioni di cybersecurity.
Abilità comunicative
Al termine del corso, gli studenti saranno in grado di comunicare in modo chiaro i concetti di sicurezza sia a interlocutori tecnici sia non tecnici, con particolare attenzione a destinatari tecnici che possiedono conoscenze limitate in specifici ambiti della cybersecurity; produrre documentazione tecnica, rapporti di sicurezza e valutazioni del rischio (analisi SWOT); preparare presentazioni tecniche adeguate sia al contesto accademico sia a quello industriale, al fine di illustrare i risultati delle proprie attività di ricerca e le prospettive emergenti nell'ambito oggetto di studio; presentare in maniera efficace proposte di ricerca e analisi di sicurezza.
Capacità di apprendimento
Al termine del corso, gli studenti avranno sviluppato la capacità di acquisire e valutare autonomamente nuove conoscenze nell'ambito della cybersecurity, caratterizzato da una rapida e continua evoluzione, attraverso un'approfondita analisi della letteratura scientifica sullo stato dell'arte delle soluzioni di sicurezza; analizzare la letteratura scientifica, gli standard tecnici e le migliori pratiche industriali al fine di affrontare nuove problematiche di sicurezza e proporre soluzioni innovative o nuove direzioni di ricerca; adattarsi all'evoluzione delle tecnologie, dei nuovi scenari di minaccia e dei requisiti normativi, come il GDPR.

Programma

Il corso è strutturato nelle seguenti due parti:

Background

La prima parte del corso introduce i concetti principali che vengono utilizzati nel resto del corso:

Introduction to cybersecurity

Concepts and terminology

Identification and authentication

Access control techniques

Virus, trojan and, covert channels

Main vulnerabilities of computer systems

Analysis of the most widespread attacks: buffer overflow, cross-site scripting, SQL injection.

Secure operating systems

Security of group communications

Security in cloud computing

Security in wireless networks

Secure protocols for wireless networks topology control

Information security management systems

Analisi della letteratura

Ogni studente sceglierà un argomento da una lista di possibili temi e terrà una presentazione al resto della classe.

  • Lezioni frontali
  • Testi di riferimento: vedi programma del corso

Modalità d'esame

The exam consists of an oral presentation, and in submitting a report. Each student will give a seminar on a topic of their choice from a list of possible topics, and answer questions from the other students in the classroom. Students' participation in the questions&answers phase will be considered in the final grade.

Students will also have to deliver a report describing how and in what measure they intend to solve a cybersecurity problem, which can be also related to the topic of their seminar.

The final grade is calculated as follows:

  • 45% Literature Analysis and active participation
  • 45% Written research report
  • 10% Active participation to Question&Answer section.

If for any reason students do not turn in most of the required above tests, then those students will be required to take an oral exam on the entire course programme, see. The weight of this final oral exam = 100%.

Testi di riferimento

https://sites.google.com/di.uniroma1.it/dns-sapienza/home

https://sites.google.com/di.uniroma1.it/dns-sapienza/home

Codice insegnamento P105166100

DISTRIBUTED SYSTEMS 1° anno · 1° semestre · 6 CFU · IINF-05/A · 1 file

Obiettivi formativi Il corso riguarda i sistemi distribuiti, con particolare attenzione alla tolleranza ai guasti. Gli studenti impareranno a comprendere le difficoltà introdotte dalla coesistenza inevitabile di…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi
Il corso riguarda i sistemi distribuiti, con particolare attenzione alla tolleranza ai guasti. Gli studenti impareranno a comprendere le difficoltà introdotte dalla coesistenza inevitabile di conoscenza locale, asincronia e guasti. Comprenderanno come e quando, nonostante tali difficoltà, sia possibile costruire algoritmi distribuiti potenti. Al termine del corso, lo studente dovrà essere in grado di progettare algoritmi distribuiti tolleranti ai guasti e di fornire argomentazioni formali e convincenti sulla loro correttezza.
Conoscenza e capacità di comprensione
Lo studente conosce e comprende i concetti e i principi fondamentali dei sistemi distribuiti, quali processi, comunicazione, guasti, tempo, sincronizzazione, consistenza, consenso, broadcast, replicazione e tolleranza ai guasti.
Capacità di applicare conoscenza e comprensione
Lo studente è in grado di applicare le conoscenze sui sistemi distribuiti per progettare e implementare algoritmi distribuiti che risolvano problemi in diversi contesti e scenari, quali leader election, memoria condivisa, total order broadcast, replicated state machines, consenso e replicazione tollerante ai guasti.
Autonomia di giudizio
Lo studente è in grado di analizzare criticamente e confrontare diversi algoritmi distribuiti in termini di correttezza, efficienza, scalabilità, robustezza e complessità. Lo studente è inoltre in grado di identificare le assunzioni e i limiti di ciascun algoritmo e di valutarne l’adeguatezza rispetto a diverse applicazioni e requisiti.
Abilità comunicative
Lo studente è in grado di comunicare efficacemente i principali concetti e risultati relativi ai sistemi distribuiti utilizzando terminologia e notazione appropriate. Lo studente è inoltre in grado di presentare e discutere algoritmi distribuiti mediante diagrammi, pseudocodice, presentazioni orali e relazioni scritte.
Capacità di apprendimento
Lo studente sviluppa la capacità di approfondire autonomamente argomenti avanzati nell’ambito dei sistemi distribuiti e di mantenersi aggiornato sugli sviluppi del settore.

Programma

Distributed systems are a fundamental concept in modern computing, enabling the creation of large-scale, fault-tolerant systems that can provide robust, reliable services to users. This university-level course is designed to provide an in-depth understanding of distributed systems, starting with a brief history and overview of the challenges and motivations that led to their development.

Program:

The course is divided into seven modules, each of which covers a different aspect of distributed systems:

M1: Models, Abstractions, and Basic Concepts

In this module, students will learn about the core models and abstractions used in distributed systems, including processes, communication, traces and execution, and I/O Automata. Students will also study different types of failures, such as crash-stop and Byzantine failures, and learn about event-based programming and its abstraction, specification, and implementation. Finally, students will explore different types of links, including fair-lossy, stubborn, and point-to-point links.

M2: Time in Distributed Systems

This module focuses on time in distributed systems, covering synchronous, asynchronous, and eventually synchronous systems. Students will learn about different clock synchronization techniques, including Christian, Berkeley, and NTP, and study tree-based versus fully distributed algorithms. The module also covers logical clocks and vector clocks and the happened-before relationship. Students will also learn about encapsulating time in failure detectors, leader election, eventual leader election, and distributed system models, such as fail-stop, fail-noisy, and fail-silent systems.

M3: Basic Broadcast Primitives

In this module, students will explore different types of broadcast primitives, including best-effort broadcast, reliable broadcast, uniform reliable broadcast, and causal broadcast.

M4: Shared Memories

This module focuses on shared memories and explores different types of consistency, including regular, sequential consistency, and linearizability. Students will also learn about different types of registers, such as (1, N) register and atomic (1, 1), (1, N), and (N, N) registers. The module also covers the non-composability of sequential consistency and the relationship between consistency properties.

M5: Consensus

This module covers consensus and its specification. Students will explore hierarchical consensus, including uniform and non-uniform consensus. The module also covers FLP, including the proof that is not required, only the statement, and Paxos.

M6: Total Ordering and Replicated State Machine

In this module, students will learn about total order broadcast and replicated state machines, including Raft. The module also covers active replication versus primary backup.

M7: Byzantine Fault Tolerance (BFT)

This module covers the basics of BFT, including Byzantine failures and authenticated channels and crypto assumptions. Students will learn about Byzantine broadcast, including its consistency and reliability. The module also covers synchronous systems, including an impossibility result and the necessity of 3f+1 and King Algorithm.

Tentative course calendar:

The course is designed to be taught over 12 weeks, with five hours of teaching each week. The tentative course calendar is as follows:

Week 1:

Introduction to Distributed Systems

-Brief history;

-Challenges;

-Motivations.

Models, Abstractions, and Basic Concepts (M1)

-Processes, communication, traces and execution, I/O Automata;

-Failures: crash-stop, and Byzantine;

-Event-based programming: abstraction, specification, and implementations;

-Links: fair-lossy, stubborn, point-to-point.

Week 2/3:

Time in Distributed Systems (M2)

-Synchronous, asynchronous, and eventually synchronous systems;

-Clock Synchronization: Christian, Berkley, NTP;

-Clock sync. Tree-based vs Fully-Distributed Algorithms, Local Skew vs Global Skew, The limits of ordering with timestamps

-Logical clocks and Vector Clock, Happened-before relationship.

Week 3/4:

Time in Distributed Systems (M2) continued

-Encapsulating time in failure detectors: P, $\Diamond$-P;

-Leader election and Eventual Leader Election

-Distributed system models: fail-stop, fail-noisy, fail-silent."

Week 3/4:

Basic Broadcast Primitives (M3)

-Best effort broadcast;

-Reliable broadcast;

-Uniform reliable broadcast;

-Causal broadcast.

Week 5:

Shared Memories (M4)

-Consistency: regular, sequential consistency, and linearizability;

-Regular (1,N) register: Message Passing and (1,1)-Regular implementation

-Atomic (1,1), (1,N), and (N,N) registers;

-Non-composability of sequential consistency;

-Relationship between consistency properties;"

Week 7:

Consensus (M5)

-Consensus specification;

-Hierarchical consensus: uniform and non-uniform;

-FLP: proof not required only the statement

-Paxos.

Week 8:

Total Ordering and Replicated State Machine (M6)

-Total Order broadcast

-Replicated State Machine and Raft.

-Active Replication vs Primary Backup

Week 9:

BFT (M7)

-Intro: Byzantine failures.

-Authenticated Channel and crypto assumptions.

-Byzantine Broadcast, consistent and reliable.

Week 10:

BFT (M7) continued

-Consensus: synchronous systems, an impossibility result: the necessity of 3f+1.

-Consensus: synchronous systems: King Algorithm

Week 11:

Recap and Exercises

Modalità d'esame

The evaluation is a written exam that tests the student’s knowledge and understanding of the fundamental concepts and principles of distributed systems, as well as their ability to apply them to solve simple problems. The exam consists of multiple-choice questions, short-answer questions, and problem-solving exercises.

The sufficient mark is 18/30 the highest possible mark is 30/30, the laude is awarded in special cases (complete mastery of the discipline).

The marks (18-21) are given to students that show a sufficient knowledge and understanding of fundamentals concepts and principle, but that have difficulties to apply these concepts in a novel way in problem solving exercises.

The marks (22-24) are given to students that show a good knowledge and understanding of fundamentals concepts and principle, but that can sufficiently apply these concepts in a novel way in problem solving exercises.

The marks (25-27) are given to students that show a good or complete knowledge and understanding of fundamentals concepts and principle, but that can apply these concepts in a novel way in problem solving exercises with minimal mistakes.

The marks (27-29) are given to students that show a complete knowledge and understanding of fundamentals concepts and principle, but that can apply these concepts in a novel way in problem solving exercises without mistakes.

The marks (30-30 Laude) are given to students that show a complete knowledge and understanding of fundamentals concepts and principle, but that can apply these concepts in a novel way in problem solving exercises without mistakes and with an elegant and efficient methodology. The Laude is awarded only to students that show a complete and total mastery of the discipline during an additional oral examination reserved to students that reach the mark of 30 in the written exam.

Testi di riferimento

Introduction to Reliable and Secure Distributed Programming - C. Chacin, R. Guerraoui, and L. Rodrigues. 2011

Bibliografia di riferimento

Distributed Algorithms - N. Lynch. 1998. Distributed Computing - H. Attiya, J.L. Welch. 2004

Distributed Systems 3rd edition - M. Van Steen and A.S. Tanenbaum. The authors give away free copies: https://www.distributed-systems.net/index.php/books/distributed-systems-3rd-edition-2017/

Design and Analysis of Distributed Algorithms- N. Santoro, 2008.

Distributed Algorithms - N. Lynch. 1998.

Distributed Computing - H. Attiya, J.L. Welch. 2004

Distributed Systems 3rd edition - M. Van Steen and A.S. Tanenbaum. The authors give away free copies: https://www.distributed-systems.net/index.php/books/distributed-systems-3rd-edition-2017/

Design and Analysis of Distributed Algorithms- N. Santoro, 2008.

Codice insegnamento P205257155

ECONOMICS OF TECHNOLOGY AND MANAGEMENT 1° anno · 2° semestre · 6 CFU · IEGE-01/A · 0 file

Obiettivi formativi Saper applicare gli strumenti di contabilità direzionale per supportare e migliorare i processi di decision-making aziendale. Utilizzare le metodologie di pianificazione per gestire progetti complessi…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi Saper applicare gli strumenti di contabilità direzionale per supportare e migliorare i processi di decision-making aziendale. Utilizzare le metodologie di pianificazione per gestire progetti complessi in ambito tecnologico.
Conoscenza e capacità di comprensione Apprendere i concetti chiave dell'economia e della gestione orientati agli aspetti tecnologici. Comprendere a fondo gli aspetti, i concetti e gli strumenti principali della Contabilità Direzionale e del Project Management.
Capacità di applicare conoscenza e comprensione Saper implementare concretamente strumenti di pianificazione temporale ed economica su casi di studio aziendali o tecnologici. Abilità di tradurre i requisiti di sicurezza e infrastruttura informatica in piani di budget sostenibili per l'organizzazione.
Autonomia di giudizio Sviluppare il pensiero critico necessario per analizzare, valutare e comprendere i problemi gestionali complessi. Riconoscere l'impatto economico e tecnologico delle scelte aziendali.
Abilità comunicative Saper interagire e difendere le proprie scelte strategiche. Utilizzare correttamente la terminologia tecnica ed economica legata alla gestione dei progetti e dei costi.
Capacità di apprendimento Acquisire la flessibilità per assimilare autonomamente nuovi modelli di business e strumenti gestionali che emergeranno nel settore della Cybersecurity e dell'innovazione tecnologica.

Programma

Parte 1: Gestione contabilità

o Contabilità gestionale

o Concetti di costo

o Relazioni costo-volume-profitto

o Costo degli ordini di lavoro

o Analisi differenziale: la chiave del processo decisionale

o Decisioni sui prezzi

o Decisioni di bilancio di capitale

o Il concetto di valore attuale

o Il ruolo degli indicatori

Parte 2: Gestione del progetto

o Il contesto del Project Management

o Fasi del progetto

o Il contenuto della gestione dei progetti

o Integrazione e gestione dell'ambito

o Pianificazione, gestione dei costi e della qualità

o Gestione delle risorse, delle comunicazioni e degli acquisti

o Gestione dei rischi

o Gestione delle parti interessate

Modalità d'esame

La valutazione si basa sulle competenze acquisite durante il corso e sulla capacità dello studente di applicarle in contesti reali. Le prove tendono quindi a far esprimere al meglio le abilità di comunicazione e di innovazione. Particolare enfasi è data alle strategie di gestione delle risorse.

Ogni prova viene valutata in trenta trentesimi. La lode sarà assegnata quando entrambe le prove saranno eccellenti.

Testi di riferimento

Noreen, Brewer, Garrison “Managerial Accounting for Managers” 2020 (5th ed.) McGraw Hill

Larson, Gray, “Project Management: the managerial process”2018 (7th ed.) McGraw Hill

Materiale aggiunto dal docente

https://www.mdpi.com/1999-5903/11/3/73

Codice insegnamento P446441692

ETHICAL HACKING 1° anno · 2° semestre · 9 CFU · INFO-01/A · 1 file

Obiettivi generali Gli hacker etici sono una categoria di professionisti sempre più richiesta da aziende e governi consapevoli della necessità di proteggere efficacemente le proprie infrastrutture da possibili cyber…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali Gli hacker etici sono una categoria di professionisti sempre più richiesta da aziende e governi consapevoli della necessità di proteggere efficacemente le proprie infrastrutture da possibili cyber attacks. Il corso affronta i fondamenti della hacking etico. In particolare, si parte dallo studio sistematico delle metodologie e degli strumenti utilizzati dagli hacker per eseguire i vari attacchi nel cyberspace. Successivamente, si illustra come il professionista di hacking etico possa svolgere una serie di attività lecite e utili sottoponendo i sistemi informatici a test di vulnerabilità. Tali test hanno il fine di valutare e comprovare la cybersecurity di una organizzazione e di aiutare i proprietari e i dirigenti a prendere coscienza e risolvere i loro problemi di cybersecurity. Particolare attenzione viene dedicata all'applicazione pratica delle nozioni apprese.
Obiettivi specifici Il corso spiega in dettaglio cosa fanno gli hacker, come le attività di hacking avvengono, come gli hacker riescono abusivamente ad introdursi in un sistema informatico protetto da misure di sicurezza, e come difendersi.
Conoscenza e comprensione Comprendere i concetti e i limiti dell'hacking etico. Tali concetti includono: Casing the Establishment: le tecniche di hacking utilizzate per l'enumerazione completa del sistema target. Endpoint e Server Hacking: gli obiettivi finali di qualsiasi hacker inclusi gli Advanced Persistent Threat. Hacking delle infrastrutture: il modo in cui gli hacker attaccano gli apparati ai quali si collegano i nostri sistemi. Application e Data Hacking: attacchi ai web/database e le tecniche di mobile hacking. Le contromisure che possono essere utilizzate per ostacolare le attività degli hacker sui sottosistemi considerati. Standard di esecuzione dei test di penetrazione.
Applicazione di conoscenza e comprensione Alla fine del corso, gli studenti avranno la capacità di analizzare sistemi informativi aziendali complessi ed ottenere una migliore comprensione delle vulnerabilità dell'organizzazione. Produrre report in modo da fornire il massimo valore ai dirigenti dell'organizzazione di destinazione.
Capacità di giudizio Gli studenti svilupperanno le capacità di inquadrare le attività di hacking etico in modo da non violare la normativa vigente. Capacità di seguire un codice di condotta etico e di offrire garanzie sulle buone intenzioni nel condurre le attività di penetration testing dei sistemi.
Capacità comunicative Gli studenti impareranno a documentare le loro scelte, anche attraverso l'uso di strumenti di generazione di rapporti automatizzati. Avranno anche acquisito la capacità di preparare presentazioni relative ad argomenti scientifici.
Capacità di proseguire l'apprendimento in modo autonomo Le nozioni acquisite durante il corso forniranno agli studenti una solida base di conoscenza per poter ulteriormente approfondire gli aspetti più tecnici, e per mantenersi autonomamente informati sui continui sviluppi e aggiornamenti del hacking etico.

Programma

L'insegnamento di Ethical Hacking studia i concetti e i limiti dell'hacking etico. Il programma include:

Casing the Establishment: le tecniche di hacking utilizzate per l'enumerazione completa del sistema target.

Endpoint e Server Hacking: gli obiettivi finali di qualsiasi hacker inclusi gli Advanced Persistent Threat.

Hacking delle infrastrutture: il modo in cui gli hacker attaccano gli apparati ai quali si collegano i sistemi.

Application e Data Hacking: gli attacchi ai web/database e le tecniche di mobile hacking.

Si illustrano anche le contromisure che possono essere utilizzate per ostacolare le attività degli hacker e le best-practice per la realizzazione di test di penetrazione.

Modalità d'esame

Gli studenti vengono valutati sulla base di una prova scritta, della consegna di assignment e di relazioni scritte relative ad attività svolte in laboratorio.

Testi di riferimento

Title: Hacking exposed 7 : Network Security Secrets & Solutions

Authors: George Kurtz, Joel Scambray, Stuart McClure

Publisher: McGraw-Hill (2012)

ISBN-10: 0071780289

ISBN-13: 978-0071780285

Codice insegnamento P144426247

Elective course 1° anno · 1° semestre · 12 CFU · 0 file

Previsti dal percorso formativo, a scelta della studentessa/dello studente.

Scheda dell'insegnamento

Obiettivi formativi

Previsti dal percorso formativo, a scelta della studentessa/dello studente.

Codice insegnamento AID-e4610e7c-abf

INTERNET OF THINGS 1° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali: Il corso illustra gli aspetti metodologici, teorici e pratici relativi alla progettazione di reti wireless e Internet delle cose. Il corso prevede un laboratorio. Obiettivi specifici Introduzione alle…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali: Il corso illustra gli aspetti metodologici, teorici e pratici relativi alla progettazione di reti wireless e Internet delle cose. Il corso prevede un laboratorio.
Obiettivi specifici Introduzione alle reti wireless, architetture e protocolli usati nelle reti cellulari info al 5G e nei sistemi Internet delle cose, analisi delle soluzioni di ricerca relative ad alcune delle sfide per la realizzazione dei sistemi internet delle cose (abbattimento del consumo energetico, integrazione del mondo IoT e della robotica, sicurezza delle informazioni).
Struttura sintetica del corso - Introduzione alle reti radio - Dai sistemi cellulari 2G al 5G - Protocolli per sensing systems: protocolli di MAC, routing, localizzazione e sincronizzazione - Verso l'Internet delle cose: caratteristiche e problematiche, protocolli standard e tecnologie, scelte progettuali per diversi ambiti verticali, sfide ancora aperte - Aspetti avanzati dell'IoT: zero-power IoT; aspetti di sicurezza; uso di blockchain in applicazioni IoT; ottimizzazione di sistemi mediante tecniche di machine learning; integrazione di robotica e IoT systems (esempio dell'Internet of Underwater Things). -Lab di programmazione IoT
Conoscenze e comprensione: Alla fine del corso lo studente saprà leggere e comprendere articoli scientifici, documenti tecnici e standard del settore; avrà compreso i trade-off prestazionali associati a diverse scelte progettuali. Sarà quindi in grado di progettare futuri sistemi wireless e IoT. Avrà fatto prime esperienze pratiche relative alla programmazione e valutazione sperimentale di tali sistemi.
Applicazione di conoscenza e comprensione: Gli studenti saranno in grado di partecipare alla progettazione di futuri sistemi e applicazioni IoT e di sistemi 5G.
Capacità di giudizio: Gli studenti svilupperanno le capacità di analisi necessarie per valutare diverse scelte progettuali alternative selezionando la migliore per ogni specifico scenario applicativo e tipo di tecnologia.
Capacità di comunicazione: Gli studenti impareranno ad analizzare e presentare articoli scientifici, idee di ricerca o soluzioni tecniche di settore, descrivendole in modo sintetico ed accurato, con un linguaggio tecnico adeguato.
Capacità di apprendimento: Gli studenti acquisiranno sia competenze teoriche che pratiche relative alla progettazione dei sistemi wireless e IoT.

Codice insegnamento P690611608

NETWORK INFRASTRUCTURES 1° anno · 1° semestre · 6 CFU · IINF-03/A · 0 file

Obiettivi formativi Il corso Network Infrastructures ha l’obiettivo di fornire agli studenti una visione approfondita delle principali architetture, tecnologie e protocolli alla base delle moderne infrastrutture di rete.…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi
Il corso Network Infrastructures ha l’obiettivo di fornire agli studenti una visione approfondita delle principali architetture, tecnologie e protocolli alla base delle moderne infrastrutture di rete. Il corso affronta le reti di accesso cablate e wireless, le reti di trasporto ottiche, le tecnologie di networking avanzato e i principali protocolli di instradamento intra- e inter-dominio. Particolare attenzione è dedicata anche agli aspetti pratici di configurazione e gestione di reti IP, attraverso esercitazioni svolte con strumenti di emulazione di rete quali Kathara. Al termine del corso, gli studenti saranno in grado di comprendere, analizzare e configurare infrastrutture di rete realistiche, valutandone prestazioni, scalabilità e requisiti di sicurezza.
Conoscenza e capacità di comprensione
Gli studenti acquisiranno conoscenze approfondite sulle principali architetture di rete e sulle tecnologie utilizzate nelle infrastrutture di telecomunicazione moderne. In particolare, saranno in grado di comprendere il funzionamento delle reti di accesso a banda larga, delle reti ottiche di trasporto, delle tecnologie wireless di nuova generazione, dei protocolli MPLS e BGP, nonché dei principali meccanismi di instradamento e sicurezza delle reti.
Capacità di applicare conoscenza e comprensione
Gli studenti saranno in grado di applicare le conoscenze acquisite alla progettazione, configurazione e analisi di reti IP. Le esercitazioni pratiche consentiranno di configurare scenari di rete realistici, affrontando temi quali indirizzamento IP, routing, DNS, VPN e firewalling. Tali attività permetteranno agli studenti di collegare gli aspetti teorici del corso a problematiche operative tipiche delle infrastrutture di rete.
Autonomia di giudizio
Gli studenti svilupperanno la capacità di valutare criticamente diverse soluzioni tecnologiche per le infrastrutture di rete, confrontandole in termini di prestazioni, scalabilità, affidabilità e sicurezza. Saranno inoltre in grado di selezionare le soluzioni più adeguate in funzione dei requisiti applicativi e del contesto operativo considerato.
Abilità comunicative
Gli studenti saranno in grado di descrivere e discutere in modo chiaro le principali tecnologie e architetture di rete, utilizzando una terminologia tecnica appropriata. Saranno inoltre in grado di presentare le scelte progettuali e configurative adottate negli scenari pratici, motivandole rispetto ai requisiti di rete e agli obiettivi applicativi.
Capacità di apprendimento
Il corso fornirà agli studenti le basi metodologiche necessarie per seguire l’evoluzione continua delle tecnologie di rete e per approfondire autonomamente nuovi protocolli, standard e soluzioni infrastrutturali. Le competenze teoriche e pratiche acquisite costituiranno una base solida per affrontare ulteriori studi e attività professionali nell’ambito delle reti di telecomunicazione.

Programma

Introduzione alle infrastrutture di rete

  • Introduzione alle architetture delle reti, descrizione delle aree funzionali [2h].
  • Presentazione delle differenti metodologie di accesso cablate e wireless, terrestri e non terrestri [2h].

Accesso alla rete cablato e wireless

  • Reti di accesso in rame a banda larga [3h]
  • ADSL e VDSL, soluzioni di networking [5h]
  • Accesso basato su fibra: FTTX e PON e relative evoluzioni [3h]
  • Reti wireless Multihop/3G/4G [2h]
  • Reti wireless non terrestri [2h]
  • La famiglia Wi-xx [2h]
  • Sistemi 4G: LTE e LTE-A [5h]
  • Evoluzione 5G [1h]

Trasporto in rete e controllo di rete

  • Introduzione alle reti ottiche [5h]
  • Optical Transport Network [2h]
  • Management e Control di reti WDM [5h]
  • Multi Protocol Label Switching [5h]
  • Architetture per la Quality of Service [5h]
  • Inter Domain Routing e Border Gateway Protocol [3h]

Esercitazioni su configurazioni di rete su Kathara

  • IP addressing [2h]
  • IP routing [2h]
  • DNS [2h]
  • VPN [2h]
  • Firewall [2h]
  • Reti di accesso [20h]
  • Testi di riferimento: materiale didattico a cura del docente
  • Reti di trasporto [20h]
  • Testi di riferimento: materiale didattico a cura del docente
  • esercitazioni di laboratorio [20h]
  • Testi di riferimento: materiale didattico a cura del docente

Modalità d'esame

L'esame e' diviso in due parti: PARTE 1) parte pratica su kathara (da svolgere al PC, vale max 22 punti), avente la finalità di verificare la capacità dello studente di configurare correttamente gli apparati di rete; PARTE 2) parte teorica (2 domande di teoria a risposta aperta, valgono max 10 punti), volta a valutare l'apprendimento degli aspetti teorici presentati durante il corso. Durante il semestre la parte pratica su kathara viene svolta attraverso degli homework valutati durante i corso.

Durante il semestre verranno anche svolte due prove in itinere come test che danno diritto a dei punti bonus.

Gli homework ed eventuali punti bonus presi durante il corso saranno spendibili solo negli appelli di Gennaio/Febbraio.

A partire da Marzo l'esame si svolgerà svolgendo interamente la PARTE 1) e la PARTE 2) in aula durante l’appello.

Testi di riferimento

Lucidi del corso e articoli disponibili sul sito web del corso e sulla piattaforma Moodle

Lucidi del corso e articoli disponibili sul sito web del corso e sulla piattaforma Moodle

Codice insegnamento P128999650

PRACTICAL NETWORK DEFENSE 1° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi formativi Il corso "Practical Network Defense" si propone di fornire agli studenti le competenze teoriche e, soprattutto, pratiche necessarie per progettare, implementare e monitorare strategie di difesa…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi
Il corso "Practical Network Defense" si propone di fornire agli studenti le competenze teoriche e, soprattutto, pratiche necessarie per progettare, implementare e monitorare strategie di difesa efficaci all'interno di infrastrutture di rete moderne. Attraverso un approccio fortemente orientato al laboratorio in ambiente cloud, gli studenti apprenderanno come analizzare le vulnerabilità di una rete, mitigare la superficie d'attacco e reagire tempestivamente alle minacce simulando scenari reali di attacco e difesa.
Conoscenza e capacità di comprensione
Al termine del corso lo studente avrà acquisito conoscenze relative a: I principi fondamentali della sicurezza delle reti, con particolare focus sul paradigma della difesa in profondità (Defense in Depth) e sulla minimizzazione della superficie di attacco. Il funzionamento, l'architettura e la configurazione di strumenti di sicurezza perimetrale e interna, quali Firewall, VPN, IDS/IPS, Proxy e Zone Demilitarizzate (DMZ). Le metodologie di monitoraggio e analisi del traffico di rete tramite lo studio dei log e la cattura dei pacchetti. I concetti di inganno informatico (cyber deception) attraverso l'uso di Honeypot e Honeynet. Le principali tecniche di attacco alla rete (es. session hijacking, man-in-the-middle) utilizzate per testare la robustezza delle difese. Il ruolo delle policy di sicurezza nella governance e nella conformità dei servizi di rete.
Capacità di applicare conoscenza e comprensione
Al termine del corso lo studente sarà in grado di: Configurare e distribuire appliance di sicurezza (Firewall, IDS/IPS, Proxy) all'interno di un'infrastruttura virtuale in cloud. Applicare tecniche di hardening delle reti e di controllo degli accessi per limitare il flusso dei pacchetti secondo regole granulari. Isolare i componenti critici della rete progettando una DMZ e segmentando il traffico in modo sicuro. Utilizzare strumenti di analisi e monitoraggio per rilevare anomalie, analizzare i pacchetti di rete e interpretare i log di sistema. Implementare e monitorare Honeypot/Honeynet in ambienti isolati per analizzare il comportamento degli attaccanti. Condurre test di sicurezza controllati (simulando attacchi come MitM o hijacking) per verificare l'efficacia delle contromisure applicate. Tradurre i requisiti di alto livello in policy di sicurezza di rete applicabili e misurabili.
Autonomia di giudizio
Al termine del corso lo studente sarà in grado di: Valutare criticamente il livello di sicurezza di un'infrastruttura di rete esistente, identificando i vettori di attacco e i punti di debolezza. Scegliere le contromisure e gli strumenti di difesa più idonei in base al bilanciamento tra costi, complessità, prestazioni e livello di rischio. Analizzare il traffico e i log di rete per distinguere in autonomia tra attività legittime, falsi positivi e tentativi di intrusione. Formulare giudizi autonomi sull'efficacia delle policy di sicurezza adottate all'interno di un'organizzazione.
Abilità comunicative
Al termine del corso lo studente sarà in grado di: Redigere relazioni tecniche e documentazione di progetto che descrivano chiaramente l'architettura di difesa implementata e le configurazioni adottate nel laboratorio cloud. Comunicare efficacemente (sia a un pubblico di specialisti che a figure non tecniche/manageriali) le vulnerabilità riscontrate in una rete e le relative strategie di mitigazione. Esporre in modo chiaro le motivazioni alla base della scelta di una specifica policy o contromisura di sicurezza.
Capacità di apprendimento
Al termine del corso lo studente avrà sviluppato: La capacità di aggiornarsi autonomamente sulle nuove minacce informatiche, sulle vulnerabilità emergenti (Zero-Day) e sulle evoluzioni degli strumenti di network defense. L'attitudine a muoversi in autonomia all'interno di ambienti cloud e di virtualizzazione per testare e implementare nuove soluzioni di sicurezza. La capacità di apprendere a usare nuovi software di monitoraggio, di simulazione di attacco o di cifratura a partire dalla documentazione tecnica ufficiale.

Programma

●Network hardening: questo argomento copre i modi per aiutare la rete a difendersi da accessi non autorizzati.

●Difesa in profondità: questo argomento introduce l'idea che le difese devono essere stratificate.

●Implementazione di IDS/IPS: Questo argomento tratta dei servizi di rilevamento delle intrusioni e di prevenzione delle intrusioni. Questi servizi controllano il traffico di rete.

●Firewall e reti private virtuali (VPN): questo argomento tratta l'installazione e l'uso dei firewall e delle reti private virtuali.

●Honeypots e honeynets: Questo argomento introduce l'idea di fornire reti e dispositivi intenzionalmente vulnerabili in reti isolate in modo che possano essere osservati e analizzati mentre vengono attaccati.

●Monitoraggio della rete: questo argomento copre gli strumenti e le tecniche per monitorare i dispositivi di rete e i loro log.

●Analisi del traffico di rete: questo argomento riguarda gli strumenti e le tecniche per catturare e analizzare i pacchetti che attraversano la rete.

●Minimizzazione dell'esposizione (superficie d'attacco e vettori): Questo argomento copre gli strumenti e le tecniche per trovare e mitigare le vulnerabilità attraverso l'osservazione dei potenziali punti deboli.

●Controllo dell'accesso alla rete (interno ed esterno): questo argomento riguarda gli strumenti e le tecniche per limitare il flusso dei pacchetti in base a regole basate sul contenuto dei pacchetti.

●Reti perimetrali (conosciute anche come zone demilitarizzate o DMZ) / Server proxy: questo argomento copre gli strumenti e le tecniche per implementare la difesa in profondità utilizzando reti isolate e server speciali.

●Sviluppo e applicazione delle policy: questo argomento riguarda la creazione di politiche che forniscono indicazioni e requisiti per i servizi forniti dalla rete insieme alle misure da utilizzare per assicurarsi che le politiche siano seguite.

●Attacchi alla rete (ad esempio, dirottamento di sessioni, man-in-the-middle): questo argomento copre gli strumenti e le tecniche utilizzate per testare la rete tentando effettivamente di sfruttare le sue vulnerabilità.

Modalità d'esame

Per valutare adeguatamente il raggiungimento degli obiettivi di apprendimento, gli studenti saranno valutati tenendo conto di:

1. quattro compiti obbligatori, per valutare la loro capacità di applicare la conoscenza e la comprensione acquisite e per valutare le loro capacità critiche e di giudizio;

2. un esame scritto, per valutare la loro capacità di apprendimento e le loro capacità di comunicazione.

I quattro compiti obbligatori sono previsti per la 3°, 5°, 8° e 10° settimana del corso.

L'esame scritto è della durata di due ore ed è articolato in due parti:

  • 10 domande a risposta aperta
  • 20 domande a risposta multipla.

Il punteggio totale è di 100 punti: 60 punti per la parte a domande aperte e 40 punti per quella a risposta multipla.

Le domande a risposta aperta vengono valutate da 0 a 6 punti, in base alla loro correttezza, completezza e precisione.

Le domande a risposta multipla vengono valutate da 0 a 2 punti e prevedono 4 possibili risposte, di cui una o più possono essere corrette.

Per superare l'esame occorre ottenere un punteggio non inferiore a 40. Il punteggio ottenuto viene rapportato sulla scala in trentesimi.

Lo studente deve dimostrare di aver acquisito una conoscenza sufficiente di tutti gli argomenti del corso.

Per conseguire un punteggio pari a 30/30 e lode, lo studente deve invece dimostrare di aver acquisito una conoscenza eccellente di tutti gli argomenti trattati durante il corso, essendo in grado di raccordarli in modo logico e coerente.

Il voto dell'esame scritto può essere incrementato (fino a +3 punti) dalla qualità delle quattro relazioni relative ai quattro compiti obbligatori.

Testi di riferimento

● Introduction to Computer Networks and Cybersecurity, Chwan-Hwa (John) Wu, J. David Irwin, 1ed. CRC Press

● Network Security Essentials: Applications and Standards, William Stallings. 6th edition. Pearson ed.

● Practice of Network Security Monitoring, Richard Bejtlich. NoStarch press.

● Network Security Fundamentals, 1st Edition. Cole et al. Wiley Pathways.

● Introduction to Network Security: Theory and Practice, Jie Wang, Zachary A. Kissel. 2nd Edition. Wiley.

● The Network Security Test Lab: A Step-by-Step Guide. Michael Gregg. Wiley.

Codice insegnamento P634366457

SECURE COMPUTATION 1° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi formativi Gli obiettivi di questo corso consistono nel presentare il concetto di computazione sicura con lo scopo di progettare sistemi che permettano di proteggere i dati secondo il paradigma del "data in use"…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi
Gli obiettivi di questo corso consistono nel presentare il concetto di computazione sicura con lo scopo di progettare sistemi che permettano di proteggere i dati secondo il paradigma del "data in use" che evita quindi l'invio indiscriminato dei dati ai server, soddisfando il principio della minimizzazione dei dati esposti. Il corso include sia contenuti teorici che pratici.
Il corso introdurrà i concetti di sicurezza mediante simulazione, l'utilizzo di circuiti cifrati, la cifratura omomorfa, la condivisione di segreti e la fairness nelle computazioni, includendo sia gli aspetti teorici che pratici, presentando casi d'uso concreti e dedicando spazio all'utilizzo di librerie che permettono concretamente di realizzare software che includa tali funzionalità.
Conoscenza e capacità di comprensione
Conoscenza del concetto di computazione fair, privata e sicura. Conoscenza di strumenti di crittografia utili alle secure computation. Comprensione dei limiti in cui la computazione sicura è realizzabile in pratica.
Capacità di applicare conoscenza e comprensione
Utilizzare le librerie per realizzare applicazioni di secure computation. Misurare le prestazioni ed il grado di sicurezza ottenuto con le librerie esistenti.
Autonomia di giudizio
Gli studenti saranno in grado di valutare l'effettiva (in)sicurezza di una progettazione e le sue prestazioni.
Abilità comunicative
Gli studenti impareranno ad argomentare ed illustrare le possibilità per proteggere i dati mediante tecniche di secure computation.
Capacità di apprendimento
Gli studenti otterranno le nozioni necessarie ad un più approfondito studio dei temi del corso.

Programma

Secure Communication

Ideal-Real World Paradigm for Secure Computation

Secure Two-Party Computation

Commitment Schemes (and coin flipping)

Secure Proof Systems

Non-malleability

Oblivious Transfer

Garbled Circuits

GMW-Compiler

(Verifiable) Secret Sharing

Secure Multi-Party Computation

Concurrency and Universal Composability

Fairness and Optimistic Security

Combiners

Fully Homomorphic Encryption

Popular Applications

Libraries/Tools for Secure Computation

  • Secure Communication (3h)
  • The Model of Secure Computation (3h)
  • Secure Two-Party Computation (3h)
  • Commitments and Proofs (12h)
  • Man-in-the-middle Attacks (3h)
  • Secure Multi-Party Computation (3)
  • OT, Garbled Circuits, GMW (8h)
  • VSS and Protocols for Secure Multi-Party Computation (10h)
  • Fairness, Optimistic Security (5h)
  • Combiners (3h)
  • FHE (3h)
  • Applications (4h)

Modalità d'esame

L'esame consiste in colloquio orale con domande specifiche che coprono la gran parte del programma del corso. La valutazione finale terrà conto della qualità delle risposte singolarmente, e della visione d'insieme che si evince dalle stesse. Il voto massimo richiede un'ottima comprensione di tutti gli argomenti del corso, mentre il voto di ammissione minimo, richiede una conoscenza mediamente sufficiente degli argomenti del corso.

Testi di riferimento

Carmit Hazay, Yehuda Lindell:​ Efficient Secure Two-Party Protocols - Techniques and Constructions. Information Security and Cryptography​ Springer 2010, ISBN 9783642143021.​

David Evans, Vladimir Kolesnikov and Mike Rosulek, A Pragmatic Introduction to Secure MultiParty Computation. NOW Publishers, 2018, ISBN:9781680835083.

Dan Boneh and Victor Shoup: A Graduate Course in Applied Cryptography (online).

Slide e risorse messe a disposizione dal docente agli studenti tempestivamente.

​

Codice insegnamento P018540039

SECURITY IN SOFTWARE APPLICATIONS 1° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali I fondamenti della sicurezza nei programmi software. Obiettivi specifici Metodologie e strumenti per trovare e rimuovere le vulnerabilità più comuni del software e per sviluppare software senza falle…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali
I fondamenti della sicurezza nei programmi software.
Obiettivi specifici
Metodologie e strumenti per trovare e rimuovere le vulnerabilità più comuni del software e per sviluppare software senza falle di sicurezza.
Conoscenza e comprensione
Conoscenza e capacità di comprensione delle tecniche più efficaci per la rimozione delle vulnerabilità dal codice e per sviluppare software che soddisfi specifiche politiche di sicurezza.
Capacità di applicare conoscenza e comprensione
Essere in grado di applicare e trasferire la propria conoscenza delle metodologie alla scelta delle tecniche e degli strumenti appropriati per risolvere problemi di sicurezza del software.
Autonomia di giudizio
Capacità di interpretazione autonoma per proporre soluzioni appropriate a problemi di sicurezza software, congruenti con le tecnologie disponibili.
Abilità comunicative
Capacità di presentare e argomentare le proprie scelte in merito alle metodologie e agli strumenti utilizzati per le soluzioni proposte, sia con colleghi sia con utenti.
Capacità di apprendimento
Capacità di apprendere e approfondire nuove tecniche nell’ambito della sicurezza informatica del software, sia per gli aspetti metodologici sia per quelli tecnologici.

Programma

Descrizione del Corso

Il corso presenta aspetti metodologici e pratici della sicurezza software, partendo da alcune delle vulnerabilità più note. Gli argomenti trattati includono attacchi ai cifrari comuni, come la crittoanalisi e i side channel, e attacchi software, tra cui varie forme di buffer e heap overflow, problemi causati dalla formattazione dell'input, conseguenze delle race conditions, generazione di numeri casuali e code injection. L'accento è posto sulle metodologie e i tool usati per identificare ed eliminare tali vulnerabilità.

Vengono presentate tecniche per dimostrare l'assenza di vulnerabilità e discussi approcci per evitare l'introduzione di vulnerabilità nei prodotti software (ad esempio, l'uso dei tipi nei linguaggi per garantire memory safety, type-safety, information flow security e strumenti crittografici). Sono inoltre trattate nozioni di base su Proof-Carrying Code (PCC) e sull'offuscamento del codice/crittografico. Gli studenti vengono esposti a metodologie per progettare software integrando l'analisi e la gestione del rischio nel software development lifecycle.

Migliorare il Codice Esistente

  • Vulnerabilità note: Buffer overflow, SQL/code injection, TOCTOU
  • Analisi statica e dinamica del codice e tools
  • Common Vulnerability Scoring System (CVSS)

Valutare la Sicurezza

  • Principi
  • Testing

Sviluppare Software Sicuro

  • Sviluppo di codice sicuro / defensive coding
  • Sicurezza in Java

Approcci Attuali

  • Language-based security
  • Information Flow Control
  • Proof-Carrying Code
  • Code Obfuscation

Introduzione alle Primitivi Crittografiche

  • Cifrari comuni
  • Crittografia a chiave pubblica
  • Buffer Overflow
  • Format Strings
  • Input Validation
  • Code Injection
  • Design Principles
  • Secure Software Design and Development
  • Language-Based Security
  • Information Flow
  • Program Verification and Testing
  • Obfuscation

Modalità d'esame

Uno o più progetti individuali

  • Analisi statica di frammenti di codice
  • Assertion-based code analysis
  • Testing o Evaluation di applicationo

I progetti sono obbligatori per poter superare l'esame.

  • Esame scritto sugli argomenti del corso.

Testi di riferimento

R. Anderson, Security Engineering: a guide to building dependable distributed systems, 2nd ed., John Wiley and Sons 2008

J.Viega, G.McGraw, Building Secure Software, Addison- Wesley 2002

G.McGraw, Software Security: Building Security in, Addison- Wesley 2006

G.Hoglung, G.McGraw, Exploiting Software: how to break code, Addison-Wesley 2004

G.McGraw, E.Felten, Securing Java, John Wiley and Sons 1999,

D.A.Wheeler, Secure Programming for Linux and Unix HOWTO

J. Katz, Y. Lindell, Introduction to Modern Cryptography (Chapman & Hall/CRC Cryptography and Network Security Series)

Codice insegnamento P407256761

STATISTICS 1° anno · 1° semestre · 6 CFU · STAT-01/A · 1 file

Obiettivi formativi L’obiettivo del corso è fornire agli studenti le conoscenze, i metodi e gli strumenti fondamentali della statistica, con particolare attenzione agli aspetti applicativi rilevanti anche nell’ambito…

Scheda dell'insegnamento

Scheda ripresa da un altro corso di laurea dello stesso ateneo.

Obiettivi formativi

Obiettivi formativi
L’obiettivo del corso è fornire agli studenti le conoscenze, i metodi e gli strumenti fondamentali della statistica, con particolare attenzione agli aspetti applicativi rilevanti anche nell’ambito della cybersecurity. Il corso prevede un’intensa attività pratica al computer finalizzata alla realizzazione di algoritmi statistici, all’applicazione di metodi Monte Carlo e alla realizzazione di simulazioni, al fine di acquisire una solida comprensione dell’effettiva implementazione dei metodi statistici. Saranno inoltre utilizzati linguaggi di programmazione orientati agli oggetti e ambienti di sviluppo integrati di ultima generazione. Gli studenti saranno inoltre coinvolti nella documentazione delle attività di ricerca svolte durante il corso attraverso la realizzazione di un blog secondo le indicazioni del docente.
Conoscenza e capacità di comprensione
Al termine del corso, lo studente avrà acquisito la conoscenza dei principali concetti statistici fondamentali, tra cui campionamento, sperimentazione, variabilità, distribuzioni, associazione, causalità, stima, intervalli di confidenza, verifica delle ipotesi e significatività statistica. Lo studente sarà in grado di comprendere, analizzare e valutare argomentazioni di natura statistica, riconoscendo il ruolo e l’importanza della statistica nei processi di analisi dei dati.
Capacità di applicare conoscenza e comprensione
Lo studente sarà in grado di raccogliere, organizzare e interpretare dati numerici attraverso l’applicazione di metodologie statistiche. Sarà inoltre in grado di implementare algoritmi statistici, utilizzare metodi Monte Carlo e realizzare simulazioni mediante strumenti informatici e linguaggi di programmazione adeguati. Lo studente acquisirà la capacità di interpretare e comunicare correttamente i risultati ottenuti dalle analisi statistiche, supportando processi decisionali basati sull’analisi quantitativa delle informazioni.
Autonomia di giudizio
Lo studente svilupperà la capacità di valutare autonomamente la qualità e l’affidabilità delle analisi statistiche effettuate, interpretando criticamente i risultati ottenuti e riconoscendo i limiti dei metodi applicati. Attraverso l’utilizzo di dati e strumenti computazionali, sarà in grado di formulare valutazioni consapevoli e assumere decisioni basate sull’interpretazione delle informazioni statistiche disponibili.
Abilità comunicative
Lo studente acquisirà la capacità di comunicare in modo chiaro ed efficace risultati e considerazioni derivanti da analisi statistiche, utilizzando una terminologia tecnica appropriata. Attraverso le attività di documentazione e presentazione delle ricerche svolte durante il corso, svilupperà inoltre capacità di esposizione, condivisione e discussione dei risultati ottenuti.
Capacità di apprendimento
Lo studente svilupperà capacità autonome di apprendimento e approfondimento delle metodologie statistiche, attraverso l’utilizzo di strumenti informatici, algoritmi, ambienti di sviluppo e documentazione tecnica. L’approccio pratico del corso favorirà la capacità di applicare e ampliare le conoscenze acquisite, adattandole a nuovi problemi e differenti contesti applicativi.

Programma

First part: Descriptive Statistics Types of variables Graphical representations Location measures Variability measures Dependence measures Correlation coefficient

Second part: Refresher in Probability calculus, Statistical inference Basic concepts of probability Discrete random variables and continuous random variables Central Limit Theorem Sampling distributions for the mean and the variance Maximum likelihood estimation method Point estimates (mean, variance, proportion, means of two populations, proportions of two populations, variance of two populations) Confidence Intervals (mean, variance, proportion, means of two populations, proportions of two populations, variance of two populations) Hypothesis tests (mean, proportion)

Third part: Statistical Models Simple Linear Regression model (definition, estimation and statistical inference on the model parameters) Multiple Linear Regression model (definition, estimation, statistical inference on the model parameters, variable selection) Logistic Regression (definition, estimation and statistical inference on the model parameters)

Modalità d'esame

La valutazione dell’apprendimento avviene tramite esame scritto in presenza. La prova è finalizzata a verificare la comprensione dei concetti teorici e la capacità di applicare metodi e tecniche statistiche alla risoluzione di esercizi e quesiti.

Testi di riferimento

1. Lassy Wasserman. All of Statistics: A Concise Course in Statistical Inference. Springer

2. Alan Agresti, Christine Franklin, Bernhard Klingenberg. Statistics: The Art and Science of Learning From Data. Pearson; 4th International Edition, ISBN 9781292164779.

3. Course material

4. R codes

Codice insegnamento P445291008

SYSTEMS AND CONTROL METHODS FOR CYBER-PHYSICAL SECURITY 1° anno · 2° semestre · 6 CFU · IINF-04/A · 0 file

Obiettivi generali Il corso si propone di fornire concetti e metodologie di base della teoria del controllo, della ricerca operativa e della teoria dei giochi, che costituiscono un quadro analitico per la modellizzazione…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali Il corso si propone di fornire concetti e metodologie di base della teoria del controllo, della ricerca operativa e della teoria dei giochi, che costituiscono un quadro analitico per la modellizzazione dei sistemi cyber-fisici e dei principali tipi di attacchi ai sistemi cyber-fisici (ad esempio: "denial of service", "replay attack", "covert attack", "false data injection") e per la soluzione di giochi di sicurezza e problemi decisionali. Il corso riassumerà un certo numero di tali metodologie e mostrerà come la loro applicazione sia in grado di affrontare i problemi di cybersecurity in numerosi casi d'uso di esempio.
Obiettivi specifici
Conoscenza e comprensione: Gli studenti apprenderanno metodologie per modellare e risolvere i problemi di sicurezza nei sistemi ciber-fisici attraverso la teoria del controllo, la teoria dei giochi e le metodologie di ricerca operativa.
Applicare conoscenza e comprensione: Al termine del corso, lo studente sarà in grado di ricavare modelli matematici astratti per un'ampia classe di sistemi ciber-fisici e per analizzare, a partire da questi modelli, alcune importanti proprietà riguardanti la sicurezza.
Capacità critiche e di giudizio: Lo studente sarà in grado di affrontare i problemi della cybersecurity attraverso la teoria del controllo, la teoria dei giochi e le metodologie di ricerca operativa.
Abilità comunicative: Le attività del corso consentono allo studente di essere in grado di comunicare / condividere i principali problemi relativi ai problemi di cybersecurity nei sistemi ciber-fisici e le possibili scelte progettuali per la loro soluzione.
Capacità di apprendimento: L'obiettivo del corso è quello di sensibilizzare gli studenti su come affrontare i problemi di controllo e decisionali nel contesto dei problemi di sicurezza informatica nei sistemi ciber-fisici.

Programma

  • Introduzione ai sistemi cyber-fisici;
  • Cenni alla gestione del rischio quantitativa in sistemi cyber-fisici.
  • Riepilogo minimo delle nozioni di base del controllo automatico e della teoria dei sistemi;
  • Modellazione di sistemi cyber-fisici, secondo due degli approcci più diffusi al momento. Modellazione dello spazio di attacco. Studio delle limitazioni fondamentali alla rilevabilità e identificabilità degli attacchi;
  • Modellazione e analisi dei principali attacchi cyber-fisici (false data injection attacks (FDIAs), DoS attack, replay attacks, covert attacks, zero dynamics attacks, etc.);
  • Tecniche di rilevamento e mitigazione degli attacchi (residual-based detection, watermarking, etc.);
  • Controllo crittografato;
  • Applicazioni dal contesto delle reti elettriche (introduzione alle smart grids, FDIA contro la stima dello stato, attacchi di ridistribuzione del carico, attacchi di topologia, attacchi di commutazione, attacchi multilivello, problema di difesa ottima);
  • Esempi di applicazioni e simulazioni svolte al computer durante le lezioni, con l'ausilio si software quali Matlab, Python, Julia. Applicazioni su sistemi elettrici, meccanici, idraulici, etc.
  • Introduction to the course
  • Testi di riferimento: See details in the course website
  • Basics of dynamical systems
  • Testi di riferimento: See details in the course website
  • Modelling of cyber-physical systems
  • Testi di riferimento: See details in the course website
  • Discussion of main cyber-physical attacks
  • Testi di riferimento: See details in the course website

Modalità d'esame

Prova scritta (esercizi e domande aperte) più orale facoltativo. Tipicamente, la prova scritta dura 2 o 3 ore, e comprende uno o più esercizi, e una o più domande a risposta aperta. Non è consentita la consultazione di alcun materiale (appunti, libri, etc.). A valle della correzione dello scritto, lo studente può chiedere di sostenere l'esame orale.

In alternativa alla prova scritta, lo studente può svolgere (anche in piccoli gruppi) e discutere un progetto riguardante lo studio di uno o più articoli scientifici inerenti a una delle tematiche svolte a lezione, e l'implementazione al computer delle simulazioni contenute nell'articolo. Prima della discussione del progetto, lo studente deve consegnare un report scritto e il codice delle simulazioni. Per gli studenti che scelgono di svolgere il progetto invece che l'esame scritto, l'esame orale è obbligatorio, e avviene durante la discussione del progetto. La data di discussione del progetto è stabilità in accordo tra il docente e gli studenti, in genere sempre in prossimità della data dell'esame scritto.

In tutti i casi, gli studenti devono prenotarsi su Infostud.

Testi di riferimento

Per ogni argomento trattato, saranno indicati i precisi riferimenti per lo studio (articoli scientifici e capitoli di libro). Tutti i dettagli saranno forniti sul sito durante il corso (vedere ad esempio il sito del corso 2025 - https://sites.google.com/diag.uniroma1.it/liberati/home/teaching/2025-systems-and-control-methods-for-cyber-physical-security)

Tutti i materiali saranno accessibili gratuitamente.

Inoltre, il docente metterà a disposizione delle dispense e un libro da lui curati.

Le lezioni saranno registrate e le registrazioni messe a disposizione tramite sito.

Un libro di base è: Taha, Walid M., Abd-Elhamid M. Taha, and Johan Thunberg. Cyber-Physical Systems: A Model-Based Approach. Springer Nature, 2021. Available online at this link: https://link.springer.com/book/10.1007/978-3-030-36071-9.

Un testo più avanzato è: Ferrari, Riccardo MG, and André MH Teixeira, eds. Safety, Security and Privacy for Cyber-Physical Systems. Springer, 2021. https://link.springer.com/book/10.1007/978-3-030-65048-3

Lo studio di questi due libri non è obbligatorio per il corso, che si baserà maggiormente su articoli scientifici, capitoli di libro, e il libro scritto dal docente, che copre tutti gli argomenti trattati.

Codice insegnamento P756400869

BLOCKCHAIN AND DISTRIBUTED LEDGER TECHNOLOGIES 2° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali Le blockchain costituiscono un paradigma nuovo e rivoluzionario per la gestione distribuita dei sistemi transazionali. Una blockchain è un protocollo per la gestione di ledger distribuiti, ossia per la…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali
Le blockchain costituiscono un paradigma nuovo e rivoluzionario per la gestione distribuita dei sistemi transazionali. Una blockchain è un protocollo per la gestione di ledger distribuiti, ossia per la memorizzazione decentralizzata di una sequenza di transazioni (ledger) a prova di manomissione, mantenuta e verificata dai nodi che partecipano alla rete. Una combinazione di reti peer-to-peer, consenso automatico, crittografia e meccanismi di mercato è al centro delle blockchain, che garantiscono così l'integrità e la trasparenza dei dati. Un numero crescente di piattaforme blockchain fornisce supporto ai cosiddetti smart contract, ossia codice eseguibile che definisce come condurre attività di business tra le parti contraenti (ad esempio trasferire beni digitali al verificarsi di una condizione). La progettazione di applicazioni sicure, verificabili ed efficienti basate su blockchain richiede la capacità di architettare correttamente le interazioni tra le parti coinvolte. Il corso approfondisce i principi e le tecnologie alla base delle piattaforme blockchain e le proprietà che esse garantiscono, fornendo al contempo gli strumenti per la creazione e l’analisi di soluzioni e applicazioni decentralizzate.
Obiettivi specifici
Il corso affronta quattro aree principali: 1) fondamenti delle blockchain e delle tecnologie distributed ledger; 2) funzionamento di Bitcoin, transazioni, UTXO, Script e consenso Proof-of-Work; 3) funzionamento di Ethereum, account, EVM, gas, Proof-of-Stake e introduzione agli smart contract, con cenni a token e NFT; 4) analisi di protocolli DeFi, wallet, incentivi e applicazioni basate su blockchain.
Conoscenza e comprensione
Gli studenti apprenderanno le basi delle tecnologie blockchain e distributed ledger, comprendendo l’interazione tra primitive crittografiche, strutture dati, reti peer-to-peer, modelli transazionali e protocolli di consenso che garantiscono integrità, persistenza e sicurezza delle piattaforme. Studieranno inoltre il funzionamento di Bitcoin ed Ethereum, con attenzione a transazioni, UTXO, Script, Proof-of-Work, account, EVM, gas e Proof-of-Stake. Verranno introdotti gli smart contract, il loro ruolo e funzionamento, con cenni implementativi su token e NFT. Sarà fornita una panoramica delle principali sfide di cybersecurity legate a wallet, DeFi, exchange e applicazioni blockchain. Saranno inoltre considerati aspetti normativi e di privacy.
Applicazione di conoscenza e comprensione
Al termine del corso, gli studenti avranno una solida comprensione delle tecnologie distributed ledger e blockchain e saranno in grado di progettare e implementare sistemi basati su di esse. Saranno inoltre capaci di produrre report ad alto valore informativo per gli stakeholder delle applicazioni decentralizzate.
Autonomia di giudizio
Gli studenti svilupperanno la capacità di valutare la qualità delle applicazioni decentralizzate e delle soluzioni blockchain in termini di affidabilità, robustezza comportamentale, costi di esecuzione, bilanciamento tra carico on-chain e off-chain, applicabilità, sicurezza informatica e privacy.
Abilità comunicative
Gli studenti impareranno a documentare le proprie scelte progettuali anche attraverso diagrammi e strumenti di reportistica, sviluppando inoltre la capacità di preparare presentazioni su temi scientifici.
Capacità di apprendimento
Le conoscenze acquisite forniranno una base solida per ulteriori approfondimenti tecnici e per mantenersi autonomamente aggiornati sugli sviluppi delle blockchain e delle distributed ledger technologies.

Programma

Bitcoin

Hash and Data Structure based on Hash

Digital Signatures

Consensus on Bitcoin and PoW

Incentives in Bitcoin

Mining and mining pool

51% Attacks

Bitcoin Transactions

Bitcoin Script and scripts applications

Bitcoin Blocks

Soft and Hard Forks

Wallet and Bitcoin Storage

Ethereum

EOA and Smart Contracts Accounts

PATRICIA Merkle Trie

Gas and Gas Fee

Ethereum PoS Consensus protocols, Casper and GHOST

Ethereum Incentive Layer

MEV

Advanced Topics:

Pump and Dump.

NFT WashTrading.

Liquidity Pool and Rug Pull.

  • Introduzione e concetti fondamentali
  • Testi di riferimento: Bitcoin and Cryptocurrency Technologies: A Comprehensive Introduction (Capitolo 1)
  • Bitcoin
  • Testi di riferimento: Bitcoin and Cryptocurrency Technologies: A Comprehensive Introduction (Capitolo 2,3,4,5)andMastering Bitcoin
  • Ethereum
  • Testi di riferimento: Mastering Ethereum and Eth2book
  • Argomenti avanzati
  • Testi di riferimento: Articoli e materiale condiviso a lezione

Modalità d'esame

L'esame è composto da 3 parti: Esame Scritto, Relazione con presentazione e Attività Pratiche.

1. Esame Scritto:

L'esame scritto si terrà nella data d'esame programmata. Consiste in domande aperte, domande a risposta multipla e esercizi.

2. Relazione con presentazione

Questa attività consiste nella stesura di una tesina basata su un argomento concordato con il docente e di relativa presentazione.

3. Attività Pratiche:

Queste attività prevedono applicazioni pratiche dei concetti di blockchain e saranno assegnate durante il corso.

Testi di riferimento

Bitcoins:

Bitcoin and Cryptocurrency Technologies: A Comprehensive Introduction, Arvind Narayanan, Joseph Bonneau, Edward Felten, Andrew Miller, and Steven Goldfeder.

Bitcoin: A Peer-to-Peer Electronic Cash System, Satoshi Nakamoto. Link: https://bitcoin.org/bitcoin.pdf

Ethereum:

White paper: https://ethereum.org/en/whitepaper/

Ethereum documentation: https://ethereum.org/en/developers/docs/

Ethereum book: https://eth2book.info

Additional materials:

Mastering Bitcoin: https://github.com/bitcoinbook/bitcoinbook/tree/develop

Mastering Ethereum: https://github.com/ethereumbook/ethereumbook

The doge of wall street: Analysis and detection of pump and dump cryptocurrency manipulations: Massimo La Morgia, Alessandro Mei, Francesco Sassi, Julinda Stefa

A game of NFTs: Characterizing NFT wash trading in the Ethereum blockchain: Massimo La Morgia, Alessandro Mei, Alberto Maria Mongardini, Eugenio Nerio Nemmi

Token Spammers, Rug Pulls, and Sniper Bots: An Analysis of the Ecosystem of Tokens in Ethereum and in the Binance Smart Chain : Federico Cernera, Massimo La Morgia, Alessandro Mei, Francesco Sassi

Codice insegnamento 10627535

CYBER SECURITY SEMINARS 2° anno · 2° semestre · 6 CFU · 0 file

Le organizzazioni oggi si trovano ad affrontare una crescente sofisticazione e persistenza degli attacchi informatici - da governi stranieri, dalla criminalità organizzata, dagli hacktivisti e dagli insider…

Scheda dell'insegnamento

Obiettivi formativi

Le organizzazioni oggi si trovano ad affrontare una crescente sofisticazione e persistenza degli attacchi informatici - da governi stranieri, dalla criminalità organizzata, dagli hacktivisti e dagli insider dall'interno dell'organizzazione. L'obiettivo del corso è descrivere le principali sfide critiche per la protezione dei sistemi e delle risorse informative - informazioni finanziarie, dati dei clienti, proprietà intellettuale - e le implicazioni di non riuscire a farlo.

Programma

I contenuti dei seminari variano di anno in anno per riflettere l'evoluzione del settore della cybersecurity. Potete consultare gli argomenti trattati negli anni precedenti seguendo questo link come esempio:

https://cybersecurity.uniroma1.it/cybersecurity-seminars

Modalità d'esame

Gli studenti vengono valutati sulla base di una prova scritta.

Testi di riferimento

Materiale distribuito durante i singoli seminari volta per volta. Lucidi, Articoli, ecc.

Codice insegnamento AAF1803

MACHINE LEARNING SECURITY 2° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi Formativi Lo scopo dell'insegnamento è quello di insegnare ad applicare tecniche di machine learning (incluso deep learning) in ambito di cybersecurity, e di capire le vulnerabilità che queste tecniche hanno in…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi Formativi Lo scopo dell'insegnamento è quello di insegnare ad applicare tecniche di machine learning (incluso deep learning) in ambito di cybersecurity, e di capire le vulnerabilità che queste tecniche hanno in ambiti adversarial. Gli studenti impareranno formalmente e praticamente come funzionano diversi modelli di machine learning, le loro applicazioni a problemi di cybersecurity, e numerose vulnerabilità, attacchi e difese per proteggerli.
Conoscenza e Comprensione - conoscenza e comprensione dei fondamenti matematici dietro le tecniche moderne di machine learning - conoscenza e comprensione delle vulnerabilità dei modelli di machine learning ad attacchi adversarial - conoscenza e comprensione di tecniche per proteggere i modelli da questi attacchi - conoscenza e comprensione di varie applicazioni del machine learning ai problemi di cybersecurity
Applicazione di Conoscenza e Comprensione - come selezionare le giuste tecniche di machine learning per un dato problema - come implementare modelli di machine learning per risolvere dati problemi - come analizzare i possibili rischi derivanti dalle applicazioni di machine learning a sistemi critici, come cybersecurity
Autonomia di Giudizio - Gli studenti saranno in grado di giudicare l’appropriatezza di una data applicazione di machine learning e valutarne possibili failure mode e vulnerabilità ad attacchi
Abilità Comunicative - Comunicare in modo chiaro i concetti di sicurezza sia a interlocutori tecnici sia non tecnici, con particolare attenzione a destinatari tecnici che possiedono conoscenze limitate in specifici ambiti del Machine Learning. - Gli studenti saranno in grado di descrivere la sicurezza e l’appropriatezza di una data applicazione di machine learning e potranno valutare ed argomentare potenziali vulnerabilità e faliure modes.
Capacità di Apprendimento - Gli studenti saranno in grado di approfondire argomenti e modelli di machine learning più complessi e saranno equipaggiati con la conoscenza necessaria per studiare problemi di ricerca aperti nelle aree di cybersecurity e machine learning

Programma

  • Intro to Machine Learning and Deep Neural Networks
  • Evasion attacks and defenses
  • Poisoning and Trojaning attacks and defenses
  • Certifiable Robustness
  • Generative models and Large Language Models
  • Inference attacks and Federated Learning
  • Explainable AI
  • Lezioni frontali
  • Testi di riferimento: Vedi schedule del corso

Modalità d'esame

  • Presentazione orale durante il corso di paper rilevanti
  • Implementazione progettuale su uno degli argomenti presentati
  • Esame orale sul progetto e argomento collegato

Testi di riferimento

non ci sono libri di testo, ma solo online (papers e slide)

Codice insegnamento 10627247

MALWARE ANALYSIS AND INCIDENT FORENSICS 2° anno · 1° semestre · 9 CFU · IINF-05/A · 0 file

Obiettivi L’attuale scenario della sicurezza informatica evidenzia una crescita costante dei software malevoli utilizzati per realizzare attacchi informatici. L’obiettivo del corso è fornire agli studenti conoscenze,…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi L’attuale scenario della sicurezza informatica evidenzia una crescita costante dei software malevoli utilizzati per realizzare attacchi informatici. L’obiettivo del corso è fornire agli studenti conoscenze, metodi e strumenti di base per analizzare, identificare, classificare e comprendere il comportamento delle diverse categorie di malware. Il corso adotta un approccio pratico, prevedendo frequenti applicazioni delle metodologie apprese a casi reali.
Conoscenza e comprensione
Al termine del corso, lo studente acquisirà conoscenze relative alle principali caratteristiche dei software malevoli, alle diverse categorie di malware, ai loro comportamenti e alle metodologie utilizzate per la loro identificazione e analisi. Lo studente comprenderà i concetti fondamentali, le tecniche e gli strumenti impiegati nell’analisi dei malware e nei processi di threat intelligence.
Capacità di applicare conoscenza e comprensione
Lo studente sarà in grado di analizzare software malevoli di diversa natura, sia manualmente sia attraverso l’utilizzo di strumenti automatizzati, al fine di identificarne le caratteristiche principali. Sarà inoltre in grado di estrarre tali caratteristiche, classificarle e correlarle con basi di conoscenza esistenti, applicando le metodologie acquisite a scenari reali nell’ambito della sicurezza informatica.
Autonomia di giudizio
Lo studente svilupperà la capacità di valutare autonomamente le informazioni relative ai malware, interpretare i risultati delle analisi e contestualizzare le attività dei software malevoli all’interno di processi più ampi di threat intelligence e gestione degli incidenti informatici. Sarà in grado di valutare la rilevanza degli indicatori individuati e contribuire ai processi decisionali relativi alla risposta alle minacce informatiche.
Abilità comunicative
Lo studente acquisirà la capacità di comunicare in modo chiaro ed efficace i risultati delle analisi relative ai malware, utilizzando una terminologia tecnica appropriata e interagendo efficacemente con professionisti della sicurezza informatica, gruppi tecnici e altri soggetti coinvolti nelle attività di analisi e risposta agli incidenti.
Capacità di apprendimento
Lo studente svilupperà la capacità di applicare e ampliare autonomamente le conoscenze acquisite durante il corso, utilizzando metodologie di analisi, documentazione tecnica e basi di conoscenza esistenti per affrontare l’evoluzione delle minacce informatiche. L’approccio pratico del corso favorirà un apprendimento continuo e la capacità di adattamento al rapido cambiamento dello scenario della sicurezza informatica.

Programma

Il corso fornisce un’introduzione alla sicurezza informatica e alle tecniche fondamentali utilizzate nell’analisi e nel reverse engineering del malware. Gli studenti approfondiranno la struttura interna e l’evoluzione del software malevolo, apprendendo metodi di analisi statica e dinamica, oltre alle comuni tecniche di packing e di iniezione del codice. Il programma comprende inoltre i modelli di minaccia, la kill chain degli attacchi e i concetti di base di threat intelligence e digital forensics.

  • Introduction to cybersecurity (5h)
  • Internal structure of a malware sample (5h)
  • Basic malware analysis (5h)
  • Reverse engineering (10h)
  • Static analysis (10h)
  • Dynamic analysis (10h)
  • Packing and injection techniques (15h)
  • Malware evolution (5h)
  • Threat models and attack kill chain (5h)
  • Threat intelligence (15h)
  • Digital forensics (5h)

Modalità d'esame

L'esame si svolge con un test pratico al calcolatore di 3 ore dove verrà chiesto di dissezionare un malware sintetico, ed un questionario di 30 minuti con domande a risposta multipla su altri argomenti del programma.

Testi di riferimento

Slide del docente

M. Sikorski and A. Honig; Practical Malware Analysis: The Hands-On Guide to Dissecting Malicious Software. No Starch Press.

Materiale addizionale verrà reso disponibile sulla pagina del corso.

Ulteriori riferimenti

  • B. Dang, A. Gazet, E. Bachaalany; Practical Reverse Engineering: x86, x64, ARM, Windows Kernel, Reversing Tools, and Obfuscation. Wiley.
  • Monnappa K A; Learning Malware Analysis: Explore the concepts, tools, and techniques to analyze and investigate Windows malware. Packt.

Codice insegnamento P021139525

MOBILE APPLICATIONS AND CLOUD COMPUTING 2° anno · 1° semestre · 6 CFU · IINF-05/A · 0 file

Obiettivi Generali Il corso approfondisce l'integrazione tra mobile computing edge computing e cloud computing, con aspetti architetturali e software per la realizzazione di sistemi distribuiti moderni, scalabili e…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi Generali
Il corso approfondisce l'integrazione tra mobile computing edge computing e cloud computing, con aspetti architetturali e software per la realizzazione di sistemi distribuiti moderni, scalabili e adattativi, includendo lo sviluppo di applicazioni mobili che sfruttano feature come i sensori dei dispositivi mobili e integrano moderne librerie di Machine Learning e servizi cloud. Inoltre, il corso analizza tecniche di bilanciamento del carico, offloading e ottimizzazione delle risorse, e la gestione dei carichi di lavoro in scenari distribuiti.
Obiettivi Specifici Conoscenza e capacità di comprensione
Il corso mira a fornire le conoscenze necessarie per comprendere:
le specificità delle app mobili rispetto alle app desktop; i principali pattern di progettazione per le app mobili; le principali problematiche legate alla sicurezza delle applicazioni per dispositivi mobili; l’utilizzo dei principali servizi cloud di backend e del paradigma di edge/fog computing; le metodologie di progettazione e sviluppo di semplici servizi di backend dispiegati su piattaforme cloud o edge; la classificazione dei modelli di servizio cloud.
Al termine del corso lo studente conosce le architetture e i paradigmi del mobile, edge e cloud computing, comprendendone i principi di funzionamento, le caratteristiche distintive e i principali modelli di sviluppo, tra cui mobile-first, cloud-native e serverless.
Capacità di applicare conoscenza e comprensione
Lo studente è in grado di:
progettare e sviluppare, autonomamente o con il supporto di strumenti di Intelligenza Artificiale, applicazioni software per sistemi mobili (ad esempio mediante Android Studio) che utilizzino sensori, interfacce grafiche e servizi cloud secondo il paradigma mobile-first; progettare e comprendere applicazioni cloud-native; progettare e sviluppare servizi backend serverless eseguibili su infrastrutture cloud o edge; configurare e utilizzare servizi cloud mediante le console di provider quali Google Cloud e AWS; valutare criticamente soluzioni alternative per la realizzazione di servizi cloud ed edge, confrontandole in termini di prestazioni, efficienza energetica, latenza di comunicazione, scalabilità e costo; conoscere e applicare i principali algoritmi di gestione delle risorse nei sistemi edge e cloud, inclusi algoritmi di autoscaling e load balancing, anche basati su tecniche di Reinforcement Learning. Autonomia di giudizio
Lo studente sviluppa la capacità di valutare criticamente differenti architetture e soluzioni progettuali, confrontandone vantaggi, limiti e implicazioni in termini di scalabilità, sostenibilità, sicurezza, privacy e qualità del servizio, anche attraverso l'analisi di articoli scientifici pubblicati nelle principali riviste e conferenze internazionali del settore.
Abilità comunicative
Lo studente acquisisce la capacità di descrivere e presentare architetture, algoritmi e soluzioni progettuali utilizzando una terminologia tecnica appropriata, attraverso la preparazione e la discussione di presentazioni su articoli scientifici del settore e mediante brevi seminari in aula.
Capacità di apprendere
Lo studente sviluppa la capacità di approfondire autonomamente nuove tecnologie, framework e piattaforme nel settore del mobile, edge e cloud computing, consultando documentazione tecnica e letteratura scientifica e mantenendo aggiornate le proprie competenze in un settore caratterizzato da una rapida evoluzione.

Programma

Mobile applications for Android

Reference Frames and device orientation

Sensors

2D graphics basics

Core components: Activity, Broadcast Receiver, Service, Content provider

Modern Android Development (MAD)

Kotlin for Java programmers

The Jetpack extension

AI and ML for mobile devices

Cloud computing:

Recap of distributed system models

Basic queueing models

Cloud computing models

Resource management for cloud computing

Services for mobile apps

Edge computing

  • Modello MWWC
  • Testi di riferimento: slides
  • Il SO operativo Android
  • Testi di riferimento: official documentation
  • Il cloud computing (modelli di deploy, di servizio)
  • Testi di riferimento: slides
  • Servizi cloud per applicazioni mobili
  • Testi di riferimento: Documentazione ufficiale di cloud providers (GCP e AWS)
  • Gestione delle risorse mediante ML
  • Testi di riferimento: Slides ed appunti

Modalità d'esame

Modalità di valutazione

La verifica dell’apprendimento avviene tramite presentazione orale di un articolo scientifico e sviluppo con dimostrazione di un progetto software, in coerenza con i risultati di apprendimento attesi relativi alla comprensione delle tecnologie trattate, alla loro applicazione pratica e alla capacità di analisi critica.

La valutazione complessiva è composta da due elementi:

1. Presentazione e discussione di un articolo scientifico (30% del voto finale)

Lo studente dovrà presentare e discutere un articolo scientifico pertinente agli argomenti del corso mediante una presentazione di circa 10 slide. Durante la presentazione lo studente dovrà descrivere gli obiettivi del lavoro, analizzare l’approccio proposto, discutere i risultati e valutarne criticamente limiti e possibili sviluppi.

Questa prova verifica in particolare i risultati di apprendimento relativi a conoscenza e comprensione, autonomia di giudizio e abilità comunicative.

2. Progetto software e dimostrazione dell’applicazione (70% del voto finale)

Lo studente dovrà progettare, sviluppare e dimostrare un’applicazione mobile funzionante che integri alcune delle tecnologie trattate nel corso. In particolare, l’applicazione dovrà includere l’utilizzo di alcune funzionalità tipiche dei dispositivi mobili e dei sistemi distribuiti, quali ad esempio: accesso a sensori del dispositivo (ad esempio GPS o fotocamera); funzionalità di image processing; integrazione con servizi cloud di terze parti; interazione con un server remoto sviluppato dallo studente, eseguito su macchina virtuale o container.

Durante la prova lo studente dovrà illustrare le scelte progettuali, descrivere l’architettura del sistema e dimostrarne il funzionamento.

Questa prova verifica principalmente i risultati di apprendimento relativi alla capacità di applicare conoscenza e comprensione, alle abilità comunicative e alla capacità di apprendimento autonomo nell’utilizzo di strumenti e tecnologie software.

La valutazione terrà conto della correttezza tecnica della soluzione sviluppata, del livello di integrazione delle tecnologie studiate, della qualità dell’analisi del paper scientifico e della chiarezza dell’esposizione.

Testi di riferimento

slides distribuite a lezione

Codice insegnamento P476593776

PROVA FINALE 2° anno · 2° semestre · 30 CFU · 0 file

La prova finale consiste nella discussione di una tesi di laurea magistrale, costituita da un documento scritto in lingua inglese, che presenta i risultati di uno studio originale condotto su un problema di natura…

Scheda dell'insegnamento

Obiettivi formativi

La prova finale consiste nella discussione di una tesi di laurea magistrale, costituita da un documento scritto in lingua inglese, che presenta i risultati di uno studio originale condotto su un problema di natura applicativa, sperimentale o di ricerca. La preparazione della tesi si svolge sotto la direzione di un docente nel secondo anno del corso.
La prova finale permette di valutare la capacità di applicare le conoscenze apprese a un problema specifico, la capacità di prendere decisioni autonome e di comunicare gli aspetti metodologici e tecnici del lavoro svolto.

Codice insegnamento AAF1028

QUANTUM COMPUTING 2° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi formativi: L’obiettivo generale del corso è fornire agli studenti i concetti fondamentali dell’informatica quantistica, che consentiranno loro di proseguire gli studi o di trovare lavoro nel settore. Il corso…

Scheda dell'insegnamento

Scheda ripresa da un altro corso di laurea dello stesso ateneo.

Obiettivi formativi

Obiettivi formativi:
L’obiettivo generale del corso è fornire agli studenti i concetti fondamentali dell’informatica quantistica, che consentiranno loro di proseguire gli studi o di trovare lavoro nel settore. Il corso ha quattro obiettivi specifici:
introdurre i fondamenti matematici dell’informatica quantistica necessari per comprendere le caratteristiche controintuitive degli algoritmi quantistici; presentare le nozioni fondamentali dell’informatica quantistica; introdurre diversi algoritmi quantistici non banali e protocolli di comunicazione quantistica, e analizzarne il comportamento; mostrare come semplici algoritmi e protocolli quantistici possano essere implementati ed eseguiti su un simulatore o su un computer quantistico. Conoscenza e capacità di comprensione:
Al termine del corso, gli studenti dovrebbero conoscere e comprendere appieno le principali differenze tra computer classici e quantistici, il formalismo dei circuiti quantistici e del bra-ket, e i principali algoritmi quantistici (di Grover, di Shor, HHL, ecc.) e protocolli (ad esempio BB84 e teletrasporto). Inoltre, gli studenti dovrebbero essere a conoscenza delle diverse tecnologie per l’implementazione dell’hardware quantistico.
Capacità di applicare conoscenza e comprensione:
Gli studenti saranno in grado di utilizzare le nozioni teoriche presentate in classe per sviluppare e/o implementare soluzioni quantistiche a problemi. Le esercitazioni pratiche al computer offriranno loro un’esperienza concreta con circuiti quantistici eseguiti su simulatori o computer quantistici, a supporto dei concetti teorici esposti a lezione. Inoltre, gli studenti potranno approfondire autonomamente i propri studi consultando altro materiale sull’argomento, inclusa la letteratura scientifica.
Autonomia di giudizio:
Gli studenti affineranno queste competenze attraverso la risoluzione autonoma di esercizi a casa. Le conoscenze e le competenze acquisite consentiranno loro di selezionare o adattare criticamente approcci quantistici esistenti per risolvere il problema in questione, oppure di sviluppare nuove tecniche quantistiche, se necessario. Gli studenti saranno in grado di valutare l’efficienza e di identificare pro e contro delle proprie soluzioni quantistiche.
Abilità comunicative:
Gli studenti saranno stimolati a collaborare con i propri compagni attraverso lo sviluppo, la documentazione e la risoluzione di compiti ed esercitazioni a casa.
Capacità di apprendimento:
Il corso fornirà agli studenti le competenze tecniche necessarie per studiare a livello di dottorato (PhD) sia argomenti rilevanti in campi affini, come la comunicazione quantistica e la simulazione quantistica, sia aspetti specifici dell’informatica quantistica.

Programma

  • Stato del campo dell'informatica quantistica
  • Ripasso di algebra lineare complessa
  • Operatori lineari sugli spazi di Hilbert
  • Qubit e misurazioni
  • Operazioni unitarie a singolo qubit (NOT, Hadamard, matrici di Pauli)
  • Registri quantistici (prodotti tensoriali)
  • Stati entangled e il paradosso EPR
  • Operazioni multi-qubit (CNOT, Toffoli)
  • Prodotto tensoriale di operazioni unitarie
  • L'equazione di Schrödinger e le regole della meccanica quantistica
  • Teorema di non-clonazione e protocollo di teletrasporto
  • Algoritmi di Deutsch-Jozsa e Grover
  • Stima della fase quantistica e algoritmo di Shor
  • Algoritmo quantistico per sistemi lineari
  • Crittografia post-quantistica
  • I protocolli di scambio di chiavi quantistiche BB84 ed E91
  • Disuguaglianze di Bell e non-località quantistica
  • Fondamenti della teoria dell'informazione quantistica (matrici di densità, superoperatori)
  • Il limite di Holevo
  • Approssimazione di porte unitarie a singolo qubit
  • Approssimazione delle porte unitarie generali (teorema di Solovay-Kitaev)
  • Linguaggi di programmazione quantistica (Silq)
  • Introduzione al corso e ripasso di algebra lineare (settimana 1)
  • I qubits e teorema di non-clonazione; teletrasporto quantistico (settimana 2, 3).
  • Fondamenti matematici per il calcolo quantistico; algoritmo di Deutsch-Jozsa (settimana 4).
  • L'algoritmo di Grover (settimana 5).
  • L'algoritmo di Shor (settimana 6).
  • Crittografia quantistica e diseguaglianze di Bell (settimana 7).
  • Correzione degli errori quantistici; implementazione di circuiti quantistici (settimana 8).
  • Sistemi quantistici probabilistici; operatori di densità (settimana 9).
  • L'algoritmo HHL; algoritmi quantistici variazionali (settimana 10, 11).
  • Linguaggi di programmazione quantistici (settimana 12).

Modalità d'esame

Esame scritto con esercizi e domande di teoria, senza supporti didattici.

Testi di riferimento

Libro di testo consigliato: Quantum Computation and Quantum Information . MA Nielsen, IL Chuang. Cambridge University Press, 2010.

  • Quantum Computing for Everyone. C. Bernhardt. MIT Press, 2020.
  • Classical and Quantum Computation (Graduate Studies in Mathematics). A. Yu. Kitaev, A.H. Shen, M.N. Vyalyi. AMS, 2002.
  • Lectures on Quantum Theory: Mathematical and Structural Foundations. C.J. Isham. Imperial College Press, 1995.
  • Quantum Computing for Computer Scientists. N.S. Yanofsky, M.A. Mannucci. Cambridge University Press, 2008.
  • Mathematical Foundations of Quantum Mechanics (New Edition). J. von Neumann. Princeton University Press, 2018.

Codice insegnamento 10627472

RISK MANAGEMENT 2° anno · 1° semestre · 6 CFU · ECON-09/B · 0 file

Obiettivi generali Il corso affronta la valutazione dei rischi cyber che possono danneggiare un Sistema informativo aziendale, le metodologie per mitigare tali rischi e le necessarie contromisure da applicare con…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali Il corso affronta la valutazione dei rischi cyber che possono danneggiare un Sistema informativo aziendale, le metodologie per mitigare tali rischi e le necessarie contromisure da applicare con l’obiettivo di rendere sicura l’azienda o istituzione pubblica dal punto di vista informatico.
Obiettivi specifici Il corso affronta le relazioni fra i meccanismi di funzionamento dei sistemi informativi e delle reti di calcolatori e le minacce informatiche cui possono essere soggetti, i meccanismi per la identificazione e contrasto degli attacchi e la relativa implementazione mediante l'applicazione di specifiche contromisure per ridurre il rischio cyber. Particolare attenzione viene dedicata all'applicazione pratica delle nozioni apprese attraverso l’analisi di casi di studio e esercitazioni. Il riferimento di base per l'insegnamento di Risk Management e’ lo standard ISO 27005, complementato dal NIST SP 800-30 framework.
Conoscenza e comprensione Analizzare le minacce più ricorrenti e pericolose, mettendole in relazione con le vulnerabilitá dei sistemi e delle reti su cui le minacce possono generare un impatto. Valutare i rischi aziendali conseguenti a tale impatto e raccomandare l’attuazione di relative contromisure; in alternativa, suggerire i criteri per la accettazione dei rischi in tal modo individuati. Spiegare i meccanismi di base utilizzati per l'identificazione dei tentativi di intrusione negli elaboratori e nelle reti. Determinare e stabilire i processi di miglioramento continuo.
Applicazione di conoscenza e comprensione Alla fine del corso gli studenti saranno in grado di identificare e valutare i rischi che possono influenzare il funzionamento e la sicurezza di un sistema informativo e i relativi impatti. Sulla base delle metodologie di analisi e gestione dei rischi apprese nel corso, gli studenti svilupperanno la capacità di identificare e selezionare le contromisure appropriate per proteggere il sistema informativo, sotto il punto di vista sia tecnico che amministrativo, determinando il miglior profilo di governance del processo della sicurezza.
Capacità di giudizio Gli studenti svilupperanno le capacità di analisi necessarie per valutare diverse alternative durante il processo di identificazione dei rischi di sicurezza di un Sistema informativo, con particolare riferimento alla valutazione delle scelte architetturali e dei rischi che possono comportare e agli obiettivi di sicurezza imposti al sistema in relazione al livello di sensibilità delle informazioni da esso gestite.
Capacità comunicative Gli studenti impareranno a documentare le loro scelte, anche attraverso l'uso di strumenti di generazione di rapporti automatizzati. Avranno anche acquisito la capacità di preparare presentazioni relative ad argomenti legati alla sicurezza.
Capacità di proseguire l'apprendimento in modo autonomo Le nozioni acquisite durante il corso forniranno agli studenti una base di conoscenza per poter ulteriormente approfondire gli aspetti più tecnici, e per mantenersi autonomamente informati sui continui sviluppi e aggiornamenti della valutazione dei rischi di sicurezza informatica dei sistemi e delle reti.

Codice insegnamento P594320373

SECURITY AND PRIVACY OF SMART ENVIRONMENTS 2° anno · 1° semestre · 6 CFU · IINF-05/A · 0 file

OBIETTIVI GENERALI Il corso intende fornire agli studenti una panoramica approfondita delle problematiche di sicurezza e privacy nei sistemi smart, inclusi i sistemi cibernetico-fisici, le smart home, le smart city e i…

Scheda dell'insegnamento

Obiettivi formativi

OBIETTIVI GENERALI
Il corso intende fornire agli studenti una panoramica approfondita delle problematiche di sicurezza e privacy nei sistemi smart, inclusi i sistemi cibernetico-fisici, le smart home, le smart city e i sistemi di trasporto intelligenti. L’integrazione di sensori, attuatori, connettività e automazione basata su intelligenza artificiale espone dati sensibili e infrastrutture critiche a una vasta gamma di minacce. Il corso introduce principi, tecnologie e metodologie per progettare ambienti smart sicuri e rispettosi della privacy, considerando anche gli aspetti socio-tecnici legati alla loro implementazione nel mondo reale.
OBIETTIVI SPECIFICI
Conoscenza e comprensione: Gli studenti acquisiranno una comprensione delle architetture e del funzionamento dei sistemi smart e delle relative problematiche di sicurezza e privacy.
Applicare conoscenza e comprensione: Gli studenti saranno in grado di analizzare scenari concreti, individuare vulnerabilità e applicare tecniche di protezione adeguate.
Capacità critiche e di giudizio: Gli studenti svilupperanno capacità di valutazione critica rispetto ai compromessi tra funzionalità, usabilità, sicurezza e privacy nei contesti smart.
Capacità di comunicazione: Attraverso discussioni in aula e presentazioni di progetti, gli studenti miglioreranno la loro capacità di esprimere concetti tecnici in modo chiaro ed efficace.
Capacità di apprendimento: Il corso stimola l’autoapprendimento e lo sviluppo di competenze pratiche attraverso l’analisi di casi studio e attività progettuali.

Codice insegnamento 10628435

SECURITY GOVERNANCE 2° anno · 1° semestre · 6 CFU · IINF-05/A · 0 file

Obiettivi Generali Essere in grado di analizzare e progettare processi per la gestione della sicurezza cibernetica. Conoscenza e comprensione L’obiettivo principale dell'insegnamento è di fornire un’introduzione a…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi Generali
Essere in grado di analizzare e progettare processi per la gestione della sicurezza cibernetica.

  • Conoscenza e comprensione
    L’obiettivo principale dell'insegnamento è di fornire un’introduzione a tutte le tematiche relative alla gestione della cybersecurity. In particolare, verrà mostrato allo studente come il problema della cybersecurity sia verticale rispetto all'organizzazione aziendale e che per tanto la sua gestione ne impatta diversi livelli. Verranno analizzati aspetti legati alle normative, ai regolamenti e agli standard sia Internazionali che Nazionali. Verrà poi discusso come, dal punto di vista metodologico, questi aspetti vengano recepiti e messi in atto attraverso la definizione di appositi framework per la gestione della cybersecurity.
  • Applicare conoscenza e comprensione
    Un altro aspetto fondamentale del corso sarà quello di fornire allo studente metodologie e strumenti per poter affrontare problemi aperti rispetto all'analisi, verifica e certificazione della cybersecurity.
  • Capacità critiche e di giudizio
    Lo studente acquisirà gli strumenti necessari per poter analizzare, valutare e comparare diverse situazioni e progettare le opportune contromisure per migliorare lo stato di sicurezza della realtà analizzata.
  • Capacità comunicative
    Lo studente apprenderà il linguaggio specifico del settore.
  • Capacità di apprendimento
    Lo studente sarà in grado di far proprie e riapplicare tutte le metodologie discusse durante il corso

Programma

Modelli e Metodologie per Information Security Governance (5 ore)

SG Best Practices e Guidelines (3 ore)

  • CSF NIST
  • ISO 27000 Family

Risk Management e Cyber Risks (circa 15 ore)

  • ISO 31000
  • A Methodology for establishing a Risk Management Process
  • Review of existing Risk Management Methodologies
  • Case Study

Security Auditing

Threat Modelling (circa 15 ore)

  • Data Flow Diagrams
  • STRIDE
  • Attack Trees e Attack Libraries
  • Attack Graphs

Incident Management, SOC and CERT (5 ore)

Security Metrics

Seminari e casi di studio (circa 15 ore)

Modalità d'esame

L'esame sarà composto da un test a domande aperte e ha lo scopo di verificare se lo studente ha acquisito e fatto proprie le metodologie e i contenuti presentati durante il corso.

Testi di riferimento

Al momento non è disponibile un testo di riferimento e verranno utilizzate slide e dispense.

[1] von Solms, S.H., von Solms, Rossouw "Information Security Governance" Springer, 2009.

[2] Refsdal, A,. Solhaug, B., Stolen, K., "Cyber-Risk Management" Springer Briefs in Computer Science, 2015

[3] Shostack, A. "Threat Modeling: Designing for Security", Wiley, 2014

[4] NIST SP 800-94, Guide to Intrusion Detection and Prevention Systems (IDPS), 2007

[5] A. Lazarevic, V. Kumar and J. Srivastava, Intrusion Detection: a Survey. In V. Kumar et al. “Managing Cyber Threats: Issues, Approaches and Challenges”, Springer, 2005.

[6] D. Moore, V. Paxson, S. Savage, C. Shannon, S. Staniford and N. Weaver, The Spread of the Sapphire/Slammer Worm, http://www.cs.berkeley.edu/~nweaver/sapphire/, 2003.

[7] D. Powell and R. Stroud, Conceptual Model and Architecture, Deliverable D2, Project MAFTIA IST-1999-11583, IBM Zurich Research Laboratory Research Report RZ 3377, Nov. 2001.

[8] NIST Cyber Security Framework https://www.nist.gov/cyberframework

[9] S. Staniford, J. A. Hoagland and J. M. McAlerney, Practical automated detection of stealthy portscans, Journal of Computer Security, 10, 105–136, 2002.

[10] S. Cheung, R. Crawford, M. Dilger, J. Frank, J. Hoagland, K. Levitt, J. Rowe, S. Staniford-Chen, R. Yip and D. Zerkle, The design of GrIDS: A graph-based intrusion detection system, U.C. Davis Computer Science Department Technical Report CSE-99-2, 1999.

[11] M. Roesch, Snort – lightweight intrusion detection for networks, in: Proceedings of the 1999 USENIX LISA Conference, November 1999. http://www.snort.org/.

[12] P. Porras and A. Valdes, Live traffic analysis of TCP/IP gateways, in: 1998 Internet Society Symposium on Network and Distributed System Security, San Diego, March 1998.

[13] J. Jaeyeon, V. Paxson, A. W. Berger and H. Balakrishnan, Fast portscan detection using sequential hypothesis testing, Proceedings of the IEEE Symposium on Security and Privacy, 2004.

[14] NIST SP 800-61, Revision 2 Computer Security Incident Handling Guide - Recommendations of the National Institute of Standards and Technology https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-61r2.pdf

[15] SANS white paper - SANS: Building a World-Class Security Operations Center: A Roadmap

[16] ENISA – Good Practice Guide for Incident Management https://www.enisa.europa.eu/publications/good-practice-guide-for-incident- management

[17] SOC (Security operation center) e CERT: definizioni e sinergie per la sicurezza informatica - https://www.agendadigitale.eu/sicurezza/soc-security- operation-center-e-cert-definizioni-differenze-e-sinergie-per-una-migliore- sicurezza/

Codice insegnamento P792639135

ADVANCED OPERATING SYSTEMS AND VIRTUALIZATION 0 file
WEB SECURITY AND PRIVACY 0 file

Recensioni del corso

Studi qui? Accedi per lasciare la tua recensione e aiutare altri studenti a scegliere.

★

Nessuna recensione per ora — e la prima è la più preziosa. Condividi la tua esperienza e orienta le future matricole.