Lezioni frontali in aula su argomenti teorici e sullo sviluppo di codice.
Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato in precedenza, al fine di rispettare il programma previsto e riportato nel syllabus.
requisiti: conoscenza della teoria alla base della Crittografia Moderna, buone capacità di programmazione
propedeuticità: Crittografia
La frequenza a lezione è fortemente consigliata.
Il corso è una prosecuzione del percorso teorico iniziato con l'insegnamento "Crittografia" e rappresenta un ponte verso il mondo pratico. Gli argomenti trattati ricadono nella cosiddetta "Cryptographic Engineering": fusione di conoscenze teorico-pratiche che permettono di implementare schemi crittografici in modo corretto, sicuro ed efficiente. Una parte del corso è dedicata al richiamo dei concetti e definizioni principali dal corso di teoria e alla presentazione degli algoritmi efficienti che stanno alla base di qualunque implementazione di numeri a multi-precisione (MPI). Tali conoscenze saranno indispensabili per ottimizzare le prestazioni delle proprie implementazioni e per meglio comprendere alcuni attacchi crittografici avanzati visti durante il corso. Una parte del corso sarà dedicata allo studio di standard reali (SSL/TLS, SSH) e alla presentazione di attacchi crittografici notevoli ai loro danni: tale studio permetterà di meglio comprere alcuni dei principi generali alla base di qualunque implementazione corretta e sicura. Tra gli attacchi presentati ci saranno anche i cosiddetti "Side-Channel Attack": con particolare focus su quelli basati sul timing delle primitive crittografiche attaccate. L'ultima parte del corso sarà dedicata ai dettagli tecnici sugli strumenti e le tecniche per le implementazioni crittografiche.
A lezione si farà inoltre riferimento a svariati articoli scientifici di volta in volta segnalati.
Parzialmente disponibile sulla pagina del corso: slide ed esempi sono distribuiti dal docene direttamente agli studenti.
Argomenti | Riferimenti testi | |
1 | richiami: definizioni, nozioni di sicurezza, principali primitive | corso Crittografia, cap.11 di [S] |
2 | richiami: gruppi, campi, gruppi ciclici, sottogruppi, generatori, teorema cinese del resto | corso Crittografia, cap.8 di [PP], cap.1-2 di [S] |
3 | richiami: problemi difficili, logaritmo discreto, fattorizzazione, algoritmi di risoluzione | corso Crittografia, cap.8 di [PP], cap.2-3 di [S] |
4 | introduzione alle curve ellittiche | cap.9 di [PP], cap.4 di [S] |
5 | algoritmi per l'esponenziazione nei gruppi ciclici: square-and-multiply, a rango k, sliding window | cap.6 di [S], cap.14.6 di [AvOV] |
6 | algoritmi per l'esponenziazione in casi particolari: moduli compositi, a esponente fisso, a base fissa, esponenziazioni multiple | cap.7 di [PP], cap.6 di [S], cap.14.6 di [AvOV] |
7 | algoritmi per l'aritmetica a multi-precisione: addizione, moltiplicazione elementare, quadrato, Karatsuba, Toom-k (accenno), riduzioni e moltiplicazioni di Montgomery | cap.6 di [S], cap.14.6 di [AvOV] |
8 | campionamento del tempo ad alta precisione: tempo di cpu, tempo effettivo, fonti di clock, contatore dei cicli della cpu, chiamate di sistema multi-piattaforma, utilizzo di assembly per l'accesso al registro tsc (accenno) | slide, articoli |
9 | libreria GMP: caratteristiche, numeri supportati, operazioni di base, input-output, operazioni modulari, ottimizzazioni, studio delle prestazioni, generatori di numeri pseudo-casuali, accesso ai pool di entropia multi-piattaforma | cap.6 di [S], doc. GMP |
10 | implementazione della cifratura RSA: schema di base, sicurezza, ottimizzazioni, attacchi elementari, attacco basato sul parity oracle, padding PKCS#1 v1.5, attacco basato sul padding oracle (SSL), accenno ad attacco ROBOT, padding EME-OAEP, sicurezza di RSA-OAEP | cap.7 di [PP], cap.15-16 di [S], articoli |
11 | implementazione dello scambio di chiavi DH: schema di base, sicurezza, ottimizzazioni, lavorare su un sottogruppo, studio delle prestazioni | cap.8 di [PP], cap.18 di [S], doc. Nettle, articoli |
12 | implementazione della cifratura Elgamal: schema di base, sicurezza, ottimizzazioni, attacco nel caso in cui si lavori in un sottogruppo, studio delle prestazioni | cap.8 di [PP], cap.16 di [S], articoli |
13 | funzioni hash e funzioni derivate: costruzioni MAC da hash, PBKDF2, derivare sotto-chiavi, supporto nella libreria Nettle, studio delle prestazioni | cap.11-12 di [PP], cap.14 di [S], doc.Nettle, articoli |
14 | implementazione della firma RSA: schema di base, sicurezza, ottimizzazioni, padding (PKCS#1 v1.5, EMSA-PSS) | cap.10 di [PP], cap.16 di [S], articoli |
15 | implementazione della firma Elgamal e di quella DSA: schemi di base, sicurezza, ottimizzazioni, attacchi notevoli | cap.10 di [PP], cap.16 di [S], articoli |
16 | modalità di cifratura a blocchi: ECB, CBC, CTR, padding PKCS#7, attacchi elementari, supporto nella libreria Nettle, studio delle prestazioni | cap.5 di [PP], cap.13 di [S], doc. Nettle |
17 | costruzioni per combinare autenticazione e cifratura: mac-and-encrypt, mac-then-encrypt, encrypt-them-mac, attacco a mac-then-encrypt di Vaudenay basato su oracolo di padding CBC (TLS), attacco a mac-and-encrypt al protocollo SSH | cap.13 di [S], articoli |
18 | modalità di cifratura autenticate: CCM, EAX, GCM, supporto nella libreria Nettle, studio delle prestazioni | doc. Nettle |
19 | implementazione di schemi su curve ellittiche con pairing: modello, sicurezza, libreria PBC, ottimizzazioni, scelta curve/pairing, implementazione delle firme digitali BLS, studio delle prestazioni | doc. PBC, articoli |
20 | implementazione di schemi su curve ellittiche senza pairing: caratteristiche, curve del NIST, curva 25519, supporto nelle librarie PBC e Nettle, implementazione dello scambio di chiavi DH su curve ellittiche, studio delle prestazioni | cap.8 di [PP], doc. PBC, articoli |
21 | attacchi basati sui side-channel: scenario generale, attacco basato su timing di RSA/DH/DSA di Kocher, attacco su timing di RSA di Schindler, attacco su timing remoto a RSA (OpenSSL) di Brumley-Boneh, attacchi basati sulla compressione dei dati cifrati, attacchi a SSL/TLS CRIME, TIME e BREACH | articoli |
22 | altri attacchi a SSL/TLS: attacco su IV predicibile in CBC-AES, attacco BEAST | articoli |
L'esame prevede l'assegnazione di un articolo scientifico in lingua originale allo studente: tale articolo conterrà tipicamente la proposta di uno o più schemi crittografici o attachi notevoli a schemi noti.
Lo studente, previo approfondimento dell'articolo limitatamente alle parti concordate (no dimostrazioni), dovrà:
La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.
Esempi di assegnamenti per progetti passati sono disponibili su richiesta al docente.