LABORATORIO DI CRITTOGRAFIA

INF/01 - 6 CFU - 1° semestre

Docente titolare dell'insegnamento

MARIO DI RAIMONDO


Obiettivi formativi


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. 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.



Testi di riferimento

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


Altro materiale didattico

Parzialmente disponibile sulla pagina del corso o su Studium: slide ed esempi distribuiti dal docene direttamente agli studenti.



Programmazione del corso

 *ArgomentiRiferimenti testi
1 richiami: definizioni, nozioni di sicurezza, principali primitive 
2 richiami: gruppi, campi, gruppi ciclici, sottogruppi, generatori, teorema cinese del resto 
3*richiami: problemi difficili, logaritmo discreto, fattorizzazione, algoritmi di risoluzione  
4*introduzione alle curve ellittiche 
5*algoritmi per l'esponenziazione nei gruppi ciclici: square-and-multiply, a rango k, sliding window 
6*algoritmi per l'esponenziazione in casi particolari: moduli compositi, a esponente fisso, a base fissa, esponenziazioni multiple 
7*algoritmi per l'aritmetica a multi-precisione: addizione, moltiplicazione elementare, quadrato, Karatsuba, Toom-k (accenno), riduzioni e moltiplicazioni di Montgomery 
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) 
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 
10*implementazione della cifratura RSA: schema di base, sicurezza, ottimizzazioni, attacchi elementari, attacco basato sul parity oracle, attacco basato sul padding oracle (SSL), padding PKCS#1 v1.5, padding EME-OAEP, attacco a RSA-OAEP 
11*implementazione dello scambio di chiavi DH: schema di base, sicurezza, ottimizzazioni, lavorare su un sottogruppo, studio delle prestazioni 
12*implementazione della cifratura Elgamal: schema di base, sicurezza, ottimizzazioni, attacco nel caso in cui si lavori in un sottogruppo, studio delle prestazioni 
13*funzioni hash e funzioni derivate: costruzioni MAC da hash, PBKDF2, derivare sotto-chiavi, supporto nella libreria Nettle, studio delle prestazioni 
14*implementazione della firma RSA: schema di base, sicurezza, ottimizzazioni, padding (PKCS#1 v1.5, EMSA-PSS) 
15*implementazione della firma Elgamal e di quella DSA: schemi di base, sicurezza, ottimizzazioni, attacchi notevoli 
16*modalità di cifratura a blocchi: ECB, CBC, CTR, padding PKCS#7, attacchi elementari, supporto nella libreria Nettle, studio delle prestazioni 
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 
18*modalità di cifratura autenticate: CCM, EAX, GCM, supporto nella libreria Nettle, studio delle prestazioni 
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 
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 
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 
22*altri attacchi a SSL/TLS: attacco su IV predicibile in CBC-AES, attacco BEAST 
* Conoscenze minime irrinunciabili per il superamento dell'esame.

N.B. La conoscenza degli argomenti contrassegnati con l'asterisco è condizione necessaria ma non sufficiente per il superamento dell'esame. Rispondere in maniera sufficiente o anche più che sufficiente alle domande su tali argomenti non assicura, pertanto, il superamento dell'esame.


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 attachi notevoli a schemi noti.

Lo studente, previo approfondimento dell'articolo limitatamente alle parti concordate (no dimostrazioni), dovrà:


PROVE IN ITINERE

E' prevista una prova in itinere intermedia sulla parte degli algoritmi per MPI efficiente. Il suo superamento esonera lo studente da tali argomenti durante il colloquio orale.


PROVE DI FINE CORSO

Lo studente sceglierà l'articolo scientifico a partire da una rosa di articoli segnalati dal docente. Le parti dell'articolo da includere nello studio e quali schemi implementare saranno concordate con il docente. Nell'ambito di un appello ufficiale, previa prenotazione, lo studente terrà pubblicamente il proprio breve seminario. Nello stesso giorno si terrà il colloquio orale che verterà sia sui dettagli della parte progettuale che sui contenuti visti a lezione.


ESEMPI DI DOMANDE E/O ESERCIZI FREQUENTI

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




Apri in formato Pdf English version