145418 — Reti Avanzate

Laurea Triennale in Informatica
Anno Accademico 2017-2018, secondo semestre

Mutua
145945 — Reti avanzate e sicurezza
140278 — Sicurezza dei Dati
145023 — Reti di Calcolatori: Applicazioni

Avvisi


Docenti

Orario

Da lunedì 19 febbraio a martedì 29 maggio.
  • Laboratorio: Lunedì 13:30-15:30, aula B106
  • Teoria: Martedì 8:30-10:30, aula A105
    Eccezioni:
    • 29 maggio

Notifiche urgenti

Per ricevere notifiche urgenti (cambiamenti d'aula, rinvii, ecc.) relativi al corso, potete iscrivervi al canale Telegram https://t.me/RetiAvanzate.
Il canale sarà utilizzato solamente per comunicazioni urgenti.

Prerequisiti

Il corso si pone in continuità con Reti di Calcolatori. Si assume dunque che gli studenti conoscano i principali protocolli, sappiano collocarli all'interno della pila protocollare ISO/OSI e dell'equivalente pila TCP/IP.
Occasionalmente, saranno richieste nozioni di Geometria e Algebra Lineare.

Programma

Il programma sarà precisato durante lo svolgimento. Gli argomenti previsti sono:
  • Livello data link: LAN virtuali;
  • Livello rete: inter-VLAN routing;
  • Dimensionamento e realizzazione di una rete locale;
  • Configurazione di apparati di rete;
  • Livello trasporto: programmazione a livello socket;
  • Livello applicativo: protezione delle reti
    • Network Address Translation
    • Principali metodi di attacco di una rete
    • Firewall, Proxy
  • Sicurezza dei dati
    • Crittografia (cenni)
    • Firma digitale (cenni)
    • Principali protocolli crittografici
Le lezioni di laboratorio prevedono la verifica e la sperimentazione degli argomenti trattati a teoria tramite l'utilizzo di simulatori e la scrittura di brevi programmi di prova sotto la guida del docente.
La simulazione di reti si baserà su apparati Cisco, ma riguarderà argomenti di carattere generale.

Esami

L'esame consiste di una prova scritta.

La prova scritta, con carta e penna, non richiederà la scrittura di codice. Conterrà uno o due esercizi affini agli esempi contenuti nella traccia degli argomenti del corso, e una domanda di teoria in cui si chiede di sviluppare per iscritto un argomento specifico. La prova dura tre ore.

Prove parziali

Le date confermate delle prove parziali sono le seguenti:

ProvaAula
Prima prova:Venerdì 6 aprile, ore 11:00(*)B107
Seconda prova:Lunedì 4 giugno, ore 9:00B107

(*) Per favorire gli studenti provenienti da prove nelle ore immediatamente precedenti, sarà possibile accedere all'aula fino alle 11:30. Prima di quell'ora, i presenti non potranno lasciare l'aula.

Le prove parziali avranno una durata di due ore e saranno composte da uno o due esercizi e alcune domande teoriche a risposta multipla.

La partecipazione alla seconda prova parziale è subordinata al superamento della prima prova con almeno 18/30. Il superamento delle due prove parziali varrà come prova scritta, il voto finale sarà la media dei due voti parziali.

Bibliografia

Il corso non prevede l'adozione di un libro di testo.
Per approfondimenti si consigliano le seguenti risorse:

Pagine e siti web

Software

  • NetSimK: software per la simulazione di un'architettura di rete con apparati Cisco.

Libri per approfondimenti

Un'edizione ragionevolmente recente di un libro di reti può essere di notevole aiuto. Ad esempio:

Materiale del corso

Dispense del corso

Esercitazioni di laboratorio

Esami


Programma svolto

Teoria

  • Introduzione (lunedì 19 febbraio)
    • Richiami: pila protocollare ISO/OSI, apparati di livello 1 e 2.
  • Reti locali (martedì 20 febbraio)
    • Domini di collisione, domini di broadcast.
    • Lo standard Ethernet. Indirizzi MAC. Struttura di un frame Ethernet.
    • Funzionamento di uno switch. Struttura ad albero di una rete locale.
    • Reti locali virtuali (VLAN):
      • separazione dei domini di broadcast;
      • collegamenti access e trunk;
      • lo standard IEEE802.1Q per il tagging dei frame.
  • Livello rete (martedì 27 febbraio)
    • Reti e sottoreti IP.
    • Routing fra reti locali virtuali: router con porte virtuali, switch layer-3.
  • Network Address Translation (NAT) (martedì 27 febbraio, martedì 13 marzo)
    • Modifica dell'indirizzo IP del mittente per pacchetti emessi da client privati.
    • Utilizzo della porta effimera del mittente per indicizzare la traduzione.
    • Port forwarding: raggiungibilità di server privati dall'esterno.
    • UDP hole punching: realizzazione di un tunnel attraverso due router NAT.
  • Sicurezza delle reti (martedì 6 marzo, martedì 13 marzo, martedì 20 marzo)
    • Metodi ed esempi di attacco: ricerca di server tramite DNS e port mapping; Idle scan; buffer overflow, Denial of Service
    • Firewall: packet filtering, con e senza mantenimento dello stato. Access Control List (ACL).
    • Proxy applicativi: vantaggi e svantaggi
    • Architetture di rete: SOHO, three-legged con DMZ e intranet, schermatura a più livelli.
  • Crittografia a chiave simmetrica (martedì 10 aprile, martedì 17 aprile, martedì 24 aprile)
    • Concetti base (messaggio, codice, chiave; principio di Kerckhoffs) e cenni storici.
    • One-time pad; cifrari a flusso e cifrari a blocchi
    • Funzioni hash crittografiche, verifiche di integrità.
    • Il protocollo di Diffie-Hellman per la generazione di una chiave condivisa, possibili attacchi Man-in-the-Middle
    • Modalità d'utilizzo dei cifrari a blocchi: ECB, CBC.
  • Crittografia a chiave pubblica e firma digitale (martedì 24 aprile)
    • Crittografia a chiave asimmetrica e a chiave pubblica: proprietà di RSA
    • Proprietà fondamentali di una firma
    • Utilizzo combinato delle funzioni hash crittografiche e della crittografia a chiave pubblica
  • Firma e certificazione digitale (martedì 8 maggio)
    • Web of trust e autorità di certificazione.
    • Catene di certificati e loro uso per le comunicazioni online e la firma del software.
  • Protocolli sicuri (martedì 8 maggio, martedì 15 maggio)
    • Utilizzo online delle tecniche di crittografia, firma e certificazione: il protocollo TLS (https)
    • Utilizzo offline: la firma del software nei principali sistemi operativi.
    • Il principio della forward secrecy.
  • VPN (martedì 15 maggio, non è materiale d'esame)
    • Motivazioni
    • Modalità bridging (livello 2, interfaccia tap)
    • Modalità routing (livello 3, interfaccia tun)
  • Proof of work (martedì 22 maggio)
    • Generare problemi di difficoltà variabile utilizzando le funzioni hash crittografiche
    • Il protocollo Hashcash (accenno)
 

Laboratorio

  • Switching, VLAN e inter-VLAN routing con NetSimK (lunedì 19 febbraio, lunedì 26 febbraio)
    • Realizzazione di una semplice rete locale con uno switch e vari PC.
    • Realizzazione di una rete con vari switch e più VLAN.
    • Collegamento di reti locali virtuali tramite router.
  • Routing statico e dinamico con NetSimK (lunedì 5 marzo)
    • Collegamento di reti tramite router.
    • Configurazione statica e dinamica (tramite protocollo RIP) dei router.
  • DHCP, NAT statico e dinamico con NetSimK (lunedì 12 marzo)
    • Impostazione del servizio DHCP su un router Cisco.
    • NAT statico (uno a uno) e dinamico (con traduzione delle porte).
  • Access Control Lists con NetSimK (lunedì 19 marzo, lunedì 26 marzo)
    • Firewalling basato su access control lists.
    • Esercitazione di riepilogo
  • Decodifica degli hash delle password (16 aprile)
    • Uso di una distribuzione Linux mirata alla sicurezza: KaliLinux
    • Generazione e uso di dizionari di password
  • Attacco di un server Linux (23 aprile)
    • Mappatura dei servizi di una macchina remota
    • Tentativi di attacco con metodi di forza bruta
  • Cifrari a blocchi e a flusso (7 maggio)
    • Creazione di un file chiave OTP usando il dispositivo /dev/urandom
    • Script python per l'or esclusivo dei byte di un messaggio con quelli del file chiave
    • Sostituzione del file chiave con un generatore pseudocasuale
    • Crittografia a blocchi: modalità ECB e CBC
  • Sniffing di comunicazioni di rete (14 maggio)
    • Uso di Wireshark per lo sniffing di pacchetti
    • Analisi delle tracce di comunicazioni DNS, ICMP, HTTP, SSH
  • Spoofing di siti web (21 maggio)
    • Utilizzo del file /etc/hosts nei sistemi unix
    • Configurazione di base di siti web virtuali con Apache2
    • Utilizzo di openssl per la creazione e l'analisi di chiavi private, certificati, richieste di certificazione
    • Installazione di certificati nei siti web (Apache2), nel sistema operativo (Ubuntu Linux), nel browser (Firefox).

Pagina mantenuta da Mauro Brunato