Nome dell’Insegnamento: Crittografia I Crediti: 6 Anno di Corso: 2015/16 Docente: Andrea Visconti Ore di didattica: 48 Modalità d’esame: orale Sito del corso: http://www.di.unimi.it/visconti Categoria: Complementare Semestre: Primo Obiettivi: Il corso si prefigge di fornire agli studenti un’approfondita conoscenza degli algoritmi e protocolli crittografici oggi in uso, con particolare riferimento alla loro applicazione nel campo della sicurezza della trasmissione. Parte del corso sarà dedicata alle esercitazioni per consentire agli studenti di toccare con mano quanto presentato nella parte teorica. Prerequisiti: Per la comprensione degli argomenti trattati nel corso è indispensabile una buona conoscenza delle nozioni di base di calcolo combinatorio, calcolo delle probabilità, algebra e della programmazione in C. Programma: Nozioni matematiche di base: algebra lineare e modulare. Principio di Kerckoff, possibili tipi di attacco ai sistemi crittografici. Accenni storici: sistemi mono e polialfabetici a sostituzione, Cesare, Cardano, Vigenère, critto sistemi affini, Palyfair, ADFGX, Hill, One-Time Pads, etc. Attacchi ai precedenti sistemi. DES: crittazione e decrittazione. Crittoanalisi differenziale. Modalità di utilizzo dei cifrari di tipo simmetrico. AES: crittazione e decrittazione. Il concetto di chiave pubblica. Concetti di one-way function e trapdoor. Il problema del logaritmo discreto, esempi di utilizzo (ElGamal, Diffie-Hellman), debolezze note in letteratura e soluzioni adottate. Teorema cinese dei resti, Algoritmo di Euclide, Algoritmo di Euclide esteso, Piccolo teorema di Fermat, funzione di Eulero, Teorema di Eulero. Generazione di numeri pseudo-casuali. Generazione di grandi numeri primi e test di primalità. Fattorizzazione di grandi numeri. RSA (con DIM): crittazione e decrittazione. Attacchi ad RSA. Funzioni Hash e proprietà. Esempi: SHA-1 e SHA-2. Attacchi noti alle funzioni hash. Birthday Attacks. Confidenzialità, firma e autenticazione. Firma digitale. Distribuzione di chiavi autenticate. Kerberos. Web of trust, Pubblic Key Infrastructures (PKI), certificati X.509. Concetto di Trusted Authority (TA o TTP) e problemi di distribuzione delle chiavi. Esempi di applicazioni. Secret sharing schemes. Protocolli e Algoritmi Zero-Knowledge. Curve ellittiche. Curve mod p e con caratteristica 2. Curve ellittiche per fattorizzare. Crittosistemi basati su curve ellittiche. Libri consigliati (per la parte di teoria): W.Stallings, Cryptography and Network Security, Prentice Hall. (libro preferito) B.Schneier, Applied Cryptography, John Wiley & Sons Inc. A.J.Menezes, et al., Handbook of Applied Cryptography, CRC Press. Libri suggeriti (per il laboratorio): B.Kernighan e D.M.Ritchie, Il linguaggio C, Pearson Education Italia. Per approfondimenti (teoria): Song Y. Yan, Number Theory for Computing, Springer-Verlag. Song Y. Yan, Primality Testing and Integer Factorization in Public-Key Cryptography, Springer-Verlag.