Crittografia i

A.A. 2021/2022
6
Crediti massimi
48
Ore totali
SSD
INF/01
Lingua
Italiano
Obiettivi formativi
L'insegnamento si prefigge di fornire agli studenti un'approfondita conoscenza degli algoritmi e protocolli crittografici oggi in uso (simmetrici, asimmetrici, funzioni hash, KDF, scambio di chiavi), con particolare riferimento alle applicazioni che proteggono i dati in-transit, at-rest, ed end-to-end.
Risultati apprendimento attesi
Al termine dell'insegnamento gli studenti saranno in grado di: (1) Comprendere e utilizzare in modo appropriato gli algoritmi di cifratura simmetrica/asimmetrica, funzioni hash, firma digitale; (2) Descrivere e utilizzare i protocolli di scambio di chiavi, schemi di condivisione di segreti, protocolli di comunicazione sicura; (3) Analizzare i livelli di sicurezza adottati e gli attacchi noti in letteratura: collisioni di funzioni hash, crittoanalisi differenziale, attacchi alle implementazioni.
Programma e organizzazione didattica

Edizione unica

Responsabile
Periodo
Primo semestre
Programma
Nozioni matematiche di base: algebra lineare e modulare. Principio di Kerckoff, possibili scenari di attacco a sistemi crittografici.
Accenni storici: sistemi monoalfabetici e polialfabetici a sostituzione, Vigenère, crittosistemi affini, Hill, One-Time Pads, etc. Attacchi ai precedenti sistemi.
AES, DES e Triplo DES: crittazione e decrittazione. Modalità di utilizzo dei cifrari di tipo simmetrico. Crittoanalisi differenziale e lineare. Ambiti di utilizzo (es. trasmissioni client-server cifrate)
Il concetto di chiave pubblica. Concetti di "one-way function" e "trapdoor".
Il problema del logaritmo discreto ed esempi di utilizzo: ElGamal, Diffie-Hellman. Scambio di chiavi con Diffie-Hellman. Debolezze note in letteratura ai precedenti sistemi crittografici e soluzioni adottate.
Teorema cinese dei resti, Algoritmo di Euclide, Algoritmo di Euclide esteso, Piccolo teorema di Fermat, funzione di Eulero, Teorema di Eulero.
La generazione di numeri pseudo-casuali e la loro importanza (IoT, mobile e server). Generazione di grandi numeri primi e test di primalità. Fattorizzazione di grandi numeri.
RSA con teorema e dimostrazione: crittazione e decrittazione. Attacchi a RSA noti in letteratura. Applicazioni di RSA e ambiti di utilizzo (es. bancomat, smart card, certificati, etc.)
Public Key Infrastructures (PKI) e certificati X.509. Concetto di Trusted Authority (TA e TTP) e problemi di distribuzione delle chiavi. Esempi di applicazioni.
Web of trust.
Le funzioni Hash e le loro proprietà. Esempi di hash: la famiglia SHA. Birthday Attacks. Esempi di utilizzo. HMAC, Esempio di KDF (PBKDF2).
Confidenzialità, firma e autenticazione. Firma digitale. Blockchain e cryptocurrency.
Protocolli e Algoritmi Zero-Knowledge.
Introduzione alle curve ellittiche. Operazioni sulle curve. Curve mod p e con caratteristica 2. Curve ellittiche per fattorizzare. Crittosistemi basati su curve ellittiche.
Prerequisiti
Per una migliore comprensione degli argomenti trattati durante il corso di Crittografia 1 sono gradite conoscenze di base di: statistica, matematica del discreto e programmazione.
Metodi didattici
Lezioni frontali. La modalità di frequenza dell'insegnamento non è obbligatoria ma fortemente consigliata.
Materiale di riferimento
La pagina web https://aviscontic1.ariel.ctu.unimi.it/ vi ridirigerà semplicemente qui: http://www.di.unimi.it/visconti/

Riferimenti bibliografici:
W.Stallings, Cryptography and Network Security, Prentice Hall.
D.R.Stinson, M.Paterson, Cryptography: Theory and Practice, 4th Ed. CRC Press.

Possibili alternative:
A.Languasco, A.Zaccagnini MANUALE DI CRITTOGRAFIA Teoria, algoritmi e protocolli, Hoepli
A.J.Menezes, et al., Handbook of Applied Cryptography, CRC Press.

Ulteriore materiale integrativo (articoli scientifici specifici e/o lucidi preparati dal docente) sarà elencato sul sito web dell'insegnamento.
Modalità di verifica dell’apprendimento e criteri di valutazione
L'esame consiste di una prova orale (discussione). Tale prova mira ad accertare le conoscenze dello studente sia sugli aspetti teorici della materia (algoritmi crittografici, dimostrazioni, semplici esercizi numerici, etc.) sia sul quelli applicativi (risoluzione di problemi pratici e/o di crittografia applicata). La discussione orale verte su tutti gli argomenti trattati durante il corso. La valutazione, espressa in trentesimi, tiene conto del livello di padronanza degli argomenti, della chiarezza espositiva e della proprietà di linguaggio.
INF/01 - INFORMATICA - CFU: 6
Lezioni: 48 ore
Docente: Visconti Andrea
Docente/i
Ricevimento:
Controllare le informazini presenti sulla pagina personale del docente.
Stanza 5008 -- Quinto Piano, Dipartimento di Informatica, via Celoria 18, Milano.