requisiti: conoscenza della teoria alla base della Crittografia Moderna, buone capacità di programmazione, conoscenza di base dell'architettura delle reti di calcolatori
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 la pratica. Dopo aver introdotto gli strumenti implementativi, il corso propone uno studio dei principi di corretta realizzazione attraverso l'analisi di alcuni protocolli reali (standard contemporanei) e di attacchi crittografici effettivi.
Il corso prevede anche una parte teorica integrativa e di approfondimento su alcuni argomenti avanzati di Crittografia.
(elenco provvisorio e non definitivo)
A lezione si farà inoltre riferimento a svariati articoli scientifici di volta in volta segnalati.
* | Argomenti | Riferimenti 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, studio delle prestazioni | |
20 | * | implementazione di schemi su curve ellittiche senza pairing: caratteristiche, curve del NIST, curva 25519, supporto nelle librarie PBC e Nettle, studio delle prestazioni | |
21 | * | attacchi basati su side-channel: scenario generale, attacco basato su timing di RSA/DH/DSA di Kochen, attacco su timing di RSA di Schindler, attacco su timing remoto a RSA (OpenSSL) di Brumley-Boneh |
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à:
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.