SICUREZZA Canale unico

Docente coordinatore e verbalizzante: DANIELE CONO D'ELIA

Obiettivi formativi

Obiettivi Generali.
Il corso mira a fornire agli studenti conoscenze e competenze rilevanti per identificare, prevenire e rispondere alle minacce alla sicurezza nei sistemi informatici e nelle applicazioni software. Gli studenti apprenderanno riguardo, ad esempio, vulnerabilità comuni, pratiche di programmazione e test "attente alla sicurezza” e meccanismi di sicurezza generali. Acquisiranno inoltre esperienza pratica con tecnologie allo stato dell’arte. Alla fine del corso, gli studenti avranno acquisito familiarità con ciò che è necessario per progettare, implementare e valutare software e sistemi (più) sicuri.

Obiettivi specifici.
Conoscenza e comprensione:
Comprendere i concetti di base della sicurezza informatica, a partire dalle minacce e vulnerabilità che affrontano i sistemi digitali.

Applicare conoscenze e comprensione:
Acquisire esperienza sia metodologica che pratica con strumenti e tecnologie di sicurezza informatica. Studiare pratiche di sviluppo e testing del software consapevoli della sicurezza.

Capacità critiche e di giudizio:
Identificare, esaminare, comprendere e valutare le caratteristiche e le proprietà di programmi e sistemi software che sono rilevanti per la sicurezza.

Capacità comunicative:
Le attività permetteranno agli studenti di identificare, valutare e lavorare sugli aspetti rilevanti per la sicurezza dei software e dei sistemi.

Capacità di apprendimento:
Oltre alle classiche abilità di apprendimento fornite dalle descrizioni teoriche e dalle sessioni pratiche, gli studenti saranno stimolati a approfondire autonomamente le metodologie presentate e acquisire esperienza pratica con strumenti e tecniche per la sicurezza dei software e dei sistemi.

Risultati di apprendimento attesi

Al termine dell’insegnamento, lo studente sarà in grado di:

Conoscenza e comprensione: descrivere i concetti fondamentali della sicurezza informatica, dalla protezione dei dati alle principali minacce e vulnerabilità dei sistemi digitali, e spiegare i principi alla base dell’uso sicuro della crittografia e dello sviluppo del software.

Capacità di applicare conoscenza e comprensione: utilizzare metodi, strumenti e tecniche per analizzare e migliorare la sicurezza di software, dati e sistemi, anche attraverso attività pratiche di testing e fuzzing.

Autonomia di giudizio: identificare, esaminare e valutare le caratteristiche e le proprietà di programmi e sistemi software rilevanti per la sicurezza, selezionando contromisure adeguate rispetto alle minacce considerate.

Abilità comunicative: descrivere e motivare le scelte tecniche adottate nell’analisi e nella protezione di software, dati e sistemi.

Capacità di apprendimento: approfondire autonomamente le metodologie presentate e acquisire ulteriore esperienza pratica con strumenti e tecniche per la sicurezza del software, dei dati e dei sistemi.

Prerequisiti

Conoscenze indispensabili:
- Programmazione in linguaggio C
- Ciclo di sviluppo/compilazione/link del software
- Architettura dei calcolatori elettronici
- TCP/IP

Conoscenze utili:
- ASM x86

Programma dell’insegnamento

- (Pseudo)Randomness
- Data Integrity
- Data Confidentiality
- Standards for data protection
- Common Attacks and Countermeasures
- Secure Software Life Cycle
- Software Testing (dalla teoria al fuzzing hands-on)
- Memory and Type Safety
- Run-time Mitigations for Program Hardening

Testi di riferimento

Slide e risorse messe a disposizione dai docenti

Modalità di svolgimento

Lezioni frontali, esercitazioni, esperienze di laboratorio.

Frequenza

La frequenza è fortemente consigliata, ma non obbligatoria.

Modalità di esame

La prova pratica prevede lo svolgimento di quesiti al calcolatore e ha una durata di due ore.

Esempi di domande

Si prega di far riferimento alla pagina del corso (link disponibile sul sito dei docenti)

Programmazione delle attività didattiche

  • Secure software life cycle (2h)

  • Theory of software testing (4h)

  • Memory and type safety (2h)

  • Sanitizers (6h with hands-on)

  • Run-time mitigations for program hardening (2h)

  • Fuzzing (12h with hands-on)

  • Practice (2h)

  • Randomness/Pseudorandomness (4h)

  • Data Encryption (3h)

  • Data Integrity (3h)

  • Signatures and PKI (4h)

  • Key management/exchange (4h)

  • Secure communication (4h)

  • Typical attacks (4h)

  • OpenSSL (4h)

Obiettivi per lo sviluppo sostenibile - Agenda ONU 2030

  • Goal4
  • Goal9
  • Anno accademico2026/2027
  • Corso di studio a cui afferisce l’insegnamentoIngegneria Informatica e Automatica
  • Codice insegnamento10606849
  • CurriculumInformatica
  • Anno e semestre3º anno - 2º semestre
  • TipologiaAttività formative caratterizzanti
  • AmbitoIngegneria informatica
  • SSDING-INF/05
  • Presenza obbligatoriaNo
  • Linguaita
  • CFU6 CFU
  • Durata complessiva60 ore
  • Distribuzione delle ore36 classroom hours, 24 training hours