MATEMATICA E INFORMATICAInformaticaAnno accademico 2022/2023

1015622 - CRYPTOGRAPHIC ENGINEERING

Docente: MARIO DI RAIMONDO

Risultati di apprendimento attesi

Modalità di svolgimento dell'insegnamento

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.

Prerequisiti richiesti

requisiti: conoscenza della teoria alla base della Crittografia Moderna, buone capacità di programmazione

propedeuticità: Crittografia

Frequenza lezioni

La frequenza a lezione è fortemente consigliata.

Contenuti del corso

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.

Testi di riferimento

A lezione si farà inoltre riferimento a svariati articoli scientifici di volta in volta segnalati.

Programmazione del corso

 ArgomentiRiferimenti testi
1richiami: definizioni, nozioni di sicurezza, principali primitivecorso Crittografia, cap.11 di [S]
2richiami: gruppi, campi, gruppi ciclici, sottogruppi, generatori, teorema cinese del restocorso Crittografia, cap.8 di [PP], cap.1-2 di [S]
3richiami: problemi difficili, logaritmo discreto, fattorizzazione, algoritmi di risoluzione corso Crittografia, cap.8 di [PP], cap.2-3 di [S]
4introduzione alle curve ellittichecap.9 di [PP], cap.4 di [S]
5algoritmi per l'esponenziazione nei gruppi ciclici: square-and-multiply, a rango k, sliding windowcap.6 di [S], cap.14.6 di [AvOV]
6algoritmi per l'esponenziazione in casi particolari: moduli compositi, a esponente fisso, a base fissa, esponenziazioni multiplecap.7 di [PP], cap.6 di [S], cap.14.6 di [AvOV]
7algoritmi per l'aritmetica a multi-precisione: addizione, moltiplicazione elementare, quadrato, Karatsuba, Toom-k (accenno), riduzioni e moltiplicazioni di Montgomerycap.6 di [S], cap.14.6 di [AvOV]
8campionamento 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
9libreria 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-piattaformacap.6 di [S], doc. GMP
10implementazione 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-OAEPcap.7 di [PP], cap.15-16 di [S], articoli
11implementazione dello scambio di chiavi DH: schema di base, sicurezza, ottimizzazioni, lavorare su un sottogruppo, studio delle prestazionicap.8 di [PP], cap.18 di [S], doc. Nettle, articoli
12implementazione della cifratura Elgamal: schema di base, sicurezza, ottimizzazioni, attacco nel caso in cui si lavori in un sottogruppo, studio delle prestazionicap.8 di [PP], cap.16 di [S], articoli
13funzioni hash e funzioni derivate: costruzioni MAC da hash, PBKDF2, derivare sotto-chiavi, supporto nella libreria Nettle, studio delle prestazionicap.11-12 di [PP], cap.14 di [S], doc.Nettle, articoli
14implementazione della firma RSA: schema di base, sicurezza, ottimizzazioni, padding (PKCS#1 v1.5, EMSA-PSS)cap.10 di [PP], cap.16 di [S], articoli
15implementazione della firma Elgamal e di quella DSA: schemi di base, sicurezza, ottimizzazioni, attacchi notevolicap.10 di [PP], cap.16 di [S], articoli
16modalità di cifratura a blocchi: ECB, CBC, CTR, padding PKCS#7, attacchi elementari, supporto nella libreria Nettle, studio delle prestazionicap.5 di [PP], cap.13 di [S], doc. Nettle
17costruzioni 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 SSHcap.13 di [S], articoli
18modalità di cifratura autenticate: CCM, EAX, GCM, supporto nella libreria Nettle, studio delle prestazionidoc. Nettle
19implementazione di schemi su curve ellittiche con pairing: modello, sicurezza, libreria PBC, ottimizzazioni, scelta curve/pairing, implementazione delle firme digitali BLS, studio delle prestazionidoc. PBC, articoli
20implementazione 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 prestazionicap.8 di [PP], doc. PBC, articoli
21attacchi 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 BREACHarticoli
22altri attacchi a SSL/TLS: attacco su IV predicibile in CBC-AES, attacco BEASTarticoli

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

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 attacchi 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 domande e/o esercizi frequenti

Esempi di assegnamenti per progetti passati sono disponibili su richiesta al docente.


English version