CRITTOGRAFIA
Anno accademico 2024/2025 - Docente: Dario CATALANORisultati di apprendimento attesi
Il corso fornisce un'introduzione ai concetti fondamentali della crittografia moderna. Obiettivo del corso sarà definire e costruire adeguati strumenti crittografici quali cifrari, message authentication codes e firme digitali. Cercheremo di capire che proprietà dovrebbero soddisfare tali strumenti, come formalizzare rigorosamente tali proprietà e come costruire schemi che le soddisfano. Ci soffermeremo soprattutto su schemi ampiamente diffusi in pratica, come AES, SHA, HMAC e RSA. In particolare, cercheremo di capire in dettaglio come sono costruiti e che livello di sicurezza garantiscono.
Il corso non prevede moduli di programmazione.
Obiettivi formativi generali dell'insegnamento in termini di risultati di apprendimento attesi.
- Conoscenza e capacità di comprensione (knowledge and understanding): l'obiettivo del corso è quello di far acquisire conoscenze che consentano allo studente di comprendere le idee ed i principi che stanno alla base della crittografia moderna; in particolare lo studente acquisirà le conoscenze dei principali strumenti crittografici utilizzati in pratica.
- Capacità di applicare conoscenza e comprensione (applying knowledge and understanding): lo studente acquisirà le competenze necessarie per utilizzare in modo sicuro strumenti crittografici quali schemi di cifratura, di autentica e funzioni hash crittografiche.
- Autonomia di giudizio (making judgements): Attraverso esempi concreti di errori derivanti dall'utilizzo di soluzioni solo all'apparenza sicure lo studente sarà in grado di utilizzare autonomamente soluzioni crittografiche in grado di garantire elevati livelli di sicurezza.
- Abilità comunicative (communication skills): lo studente acquisirà le necessarie abilità comunicative e di appropriatezza espressiva nell'impiego del linguaggio tecnico nell'ambito generale della crittografia moderna.
- Capacità di apprendimento (learning skills): il corso si propone, come obiettivo, di fornire allo studente le necessarie metodologie teoriche e pratiche per poter affrontare e risolvere autonomamente nuove problematiche che dovessero richiedere l'utilizzo di strumenti crittografici quali cifrari, schemi di firme digitali e funzioni hash.
Modalità di svolgimento dell'insegnamento
Le lezioni sono tenute in aula con l'ausilio di slide, rese disponibili agli studenti sulla pagina web del docente (www.dmi.unict.it/catalano/). Le slide non sostituiscono i testi di riferimento, ma, oltre che agevolare la comprensione della lezione, forniscono un dettaglio puntuale sul programma svolto.
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
Per una adeguata comprensione dei contenuti del corso sono necessari i seguenti prerequisiti.
- Basi di matematica discreta.
- Nozioni basilari di algoritmi
Frequenza lezioni
La frequenza delle lezioni non è obbligatoria ma fortemente consigliata.
Contenuti del corso
1. Introduzione e breve panoramica del corso
Materiale: Cap 1 di [1]
2. Cifrari Storici e One Time Pad. Il cifrario shift cipher. Il cifrario substituition cipher. Crittanalisi di substitution cipher. Perfetta Sicurezza. Subst. Cipher non offre perfetta sicurezza (dimostrazione). One time pad. One time pad offre perfetta sicurezza (dimostrazione). One time pad è ottimo (dimostrazione). Teorema di Shannon (enunciato)
Materiale: Cap 2 di [1] e cap. 2 di [3]
3. Cifrari a Blocchi: AES
Materiale: Cap 3 di [1]
4. Funzioni e permutazioni Pseudo Casuali. Introduzione e definizioni. Applicazioni ai cifrari a blocchi. Qualche esempio. La sicurezza in senso prf implica sicurezza in senso key recovery (dimostrazione). Il paradosso del compleanno.
Materiale: Cap. 4 e Appendice di [1]
5. Cifrari Simmetrici: modi d'operazione. Modo ECB, Modo CBC$, Modi CTR (a stati e randomizzato). Nozione di sicurezza per cifrari simmetrici: IND-CPA. Attacchi a messaggio scelto e attacchi a crittotesto scelto. Prova che un cifrario deterministico non può essere sicuro. Ind-cpa security implica plaintext recovery security (dimostrazione). Indistinguibilità relativamente ad attacchi a crittotesto scelto: IND-CCA security. Ind-cpa security non implica ind-cca security: il caso di CTR$ (dimostrazione)
Materiale: Cap 5 di [1] e Cap 3 di [3]
6. Funzioni Hash.. Resistenza alle collisioni: funzioni universali, funzioni universali unidirezionali, funzioni resistenti alle collisioni. Attacchi generici alle funzioni hash. Attacchi alle funzioni MD4, MD5, SHA1 (cenni). La trasformazione Merkle-Damgard. Cenni su SHA3.
Materiale: Cap 6 di [1] e Appunti
7. Message Authentication. Definizione di sicurezza per MAC. Il paradigma PRF as a MAC. CBC-MAC. Basic CBC-MAC se applicato a messaggi di lunghezza variabile non è sicuro (dimostrazione). (In)sicurezza di CBC-MAC randomizzato. CBC-MAC per messaggi di lunghezza variabile. MAC da funzioni hash: HMAC.
Materiale: Cap 7 di [1] e Cap 4 di [3]
8. Introduzione alla crittografia asimmetrica. Funzioni unidirezionali e funzioni trapdoor. Richiami di teoria dei numeri computazionale. Generalità sui gruppi. Algoritmo di Euclide, teorema cinese del resto. Quadrati residui.
Materiale: Cap 9 di [1], capitoli vari di [2]
9. Primitive Asimmetriche. Il problema del logaritmo discreto su campi finiti. Il problema computazionale Diffie Hellman. Il problema decisionale Diffie-Hellman. Fattorizzazione. La funzione RSA. Cenni su test di primalità. Algoritmo Miller-Rabin. L'algoritmo square and multiply.
Materiale: Cap 10 di [1]. Appunti delle lezioni.
10. Cifrari Asimmetrici. Definizioni di sicurezza per cifrari asimmetrici. Cifrari Asimmetrici. Definizione di sicurezza per cifrari asimmetrici. Il cifrario El Gamal. Il cifrario El Gamal è sicuro (in senso IND-CPA) relativamente all'ipotesi decisional Diffie-Hellman (dimostrazione).
Il cifrario Paillier. Preliminari matematici. Il cifrario Paillier gode della proprietà di omomorfismo additivo (dimostrazione).
Il cifrario RSA-OAEP. Proprietà del cifrario.
Cifrari basati sull'identità: il cifrario Boneh Franklin. Mappe bilineari. Proprietà del cifrario.
Materiale: Cap 11 di [1] Cap 11 di [3] e appunti delle lezioni.
11. Firme digitali. Preliminari. Definizione di sicurezza per firme digitali. Hash and Sign.
Materiale: Cap 12 di [1] Appunti delle lezioni.
12. Advanced Encryption Mechanisms. Fully Homomorphic Encryption. Functional Encryption
Materiale: MAteriale fornito dal docente
Testi di riferimento
[1] M. Bellare, P. Rogaway “Introduction to Modern Cryptography”
- Scaricabile da http://www.cs.ucsd.edu/~mihir/cse107/classnotes.html
[2] V. Shoup A Computational Introduction to Number Theory and Algebra
- Scaricabile da http://shoup.net/ntb/
[3] J. Katz, Y. Lindell “Introduction to Modern Cryptography” CRC press
Programmazione del corso
Argomenti | Riferimenti testi | |
---|---|---|
1 | Cifrari Storici e One Time Pad. Il cifrario shift cipher. Il cifrario substituition cipher. Crittanalisi di substitution cipher. Perfetta Sicurezza. Subst. Cipher non offre perfetta sicurezza (dimostrazione). One time pad. One time pad offre perfetta sicurezza (dimostrazione). One time pad è ottimo (dimostrazione). Teorema di Shannon (enunciato) | Materiale: Cap 2 di [1] e cap. 2 di [3] |
2 | Cifrari a Blocchi: AES | Cap 3 di [1] |
3 | Funzioni e permutazioni Pseudo Casuali. Introduzione e definizioni. Applicazioni ai cifrari a blocchi. La sicurezza in senso prf implica sicurezza in senso key recovery (dimostrazione). | Cap. 4 di [1] |
4 | Cifrari Simmetrici: modi d'operazione. Modo ECB, Modo CBC$, Modi CTR (a stati e randomizzato). Nozione di sicurezza per cifrari simmetrici: IND-CPA. Attacchi a messaggio scelto e attacchi a crittotesto scelto. Prova che un cifrario deterministico non può essere sicuro. Ind-cpa security implica plaintext recovery security (dimostrazione). Indistinguibilità relativamente ad attacchi a crittotesto scelto: IND-CCA security. Ind-cpa security non implica ind-cca security: il caso di CTR$ (dimostrazione) | Cap 5 di [1] e Cap 3 di [3] |
5 | Funzioni Hash.. Resistenza alle collisioni: funzioni universali, funzioni universali unidirezionali, funzioni resistenti alle collisioni. Attacchi generici alle funzioni hash. Attacchi alle funzioni MD4, MD5, SHA1 (cenni). La trasformazione Merkle-Damgard. Cenni su SHA3 | Cap 6 di [1] |
6 | Message Authentication. Definizione di sicurezza per MAC. Il paradigma PRF as a MAC. CBC-MAC. Basic CBC-MAC se applicato a messaggi di lunghezza variabile non è sicuro (dimostrazione). (In)sicurezza di CBC-MAC randomizzato. CBC-MAC per messaggi di lunghezza variabile. MAC da funzioni hash: HMAC. | Cap 7 di [1] e Cap 4 di [3] |
7 | Introduzione alla crittografia asimmetrica. Funzioni unidirezionali e funzioni trapdoor. Richiami di teoria dei numeri computazionale. Generalità sui gruppi. Algoritmo di Euclide, teorema cinese del resto. Quadrati residui. | Cap 9 di [1], capitoli vari di [2] |
8 | Primitive Asimmetriche. Il problema del logaritmo discreto su campi finiti. Il problema computazionale Diffie Hellman. Il problema decisionale Diffie-Hellman. Fattorizzazione. La funzione RSA. Cenni su test di primalità. Algoritmo Miller-Rabin. L'algoritmo square and multiply. | Cap 10 di [1]. |
9 | Cifrari Asimmetrici. Definizioni di sicurezza per cifrari asimmetrici. Cifrari Asimmetrici. Definizione di sicurezza per cifrari asimmetrici. Il cifrario El Gamal. Il cifrario El Gamal è sicuro (in senso IND-CPA) relativamente all'ipotesi decisional Diffie-Hellman (dimostrazione). Il cifrario Paillier. Preliminari matematici. Il cifrario Paillier gode della proprietà di omomorfismo additivo (dimostrazione). Il cifrario RSA-OAEP. Proprietà del cifrario. | Cap 11 di [1] Cap 11 di [3] e appunti delle lezioni. |
10 | Cifrari basati sull'identità: il cifrario Boneh Franklin. Mappe bilineari. Proprietà del cifrario. | Appunti delle lezioni |
11 | Firme digitali. Preliminari. Definizione di sicurezza per firme digitali. Hash and Sign. | Cap 12 di [1] |
12 | Advanced Encryption Mechanisms. Fully homomorphic Encryption. Functional Encryption. | Appunti delle lezioni e materiale fornito dal docente. |
Verifica dell'apprendimento
Modalità di verifica dell'apprendimento
L'esame consiste di una prova scritta ed un colloquio orale. La prova scritta consiste, tipicamente, di 5 domande a risposta aperta.
Per superare la prova scritta è necessario ottenere una valutazione di almeno 18. La prova scritta può essere visionata prima di sostenere la prova orale.
Prove in itinere: Sono previste tre prove in itinere. La prima prova verte, tipicamente, sul concetto di perfetta sicurezza, sui cifrari a blocchi e sulle funzioni e permutazioni pseudocasuali. La seconda prova verte su: cifrari simmetrici, funzioni hash e message authentication. La terza prova copre il resto del programma (crittografia asimmetrica)
La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.
Il voto è attribuito secondo il seguente schema:
- Non approvato: lo studente non ha acquisito i concetti di base e non è in grado di rispondere ad almeno il 60% delle domande né di svolgere gli esercizi teorici e pratici.
- 18-20: lo studente dimostra una padronanza appena sufficiente dei concetti base, e/o riesce ad impostare gli esercizi teorico/pratici con molta difficoltà e con vari errori.
- 21-24: lo studente dimostra una padronanza minima dei concetti di base, le sue capacità di collegamento dei contenuti sono modeste, riesce a risolvere semplici esercizi.
- 25-27: lo studente dimostra una buona padronanza dei contenuti del corso, le sue capacità di collegamento dei contenuti sono buone, risolve gli esercizi con pochi errori.
- 28-30 e lode: lo studente ha acquisito tutti i contenuti del corso ed è in grado di padroneggiarli compiutamente e di collegarli con spirito critico; risolve gli esercizi in modo completo e senza errori di particolare rilievo.
Esempi di domande e/o esercizi frequenti
- Definizioni di sicurezza (cifrari simmetrici, asimmetrici, firme digitali, ecc)
- Esercizi sulle primitive crittografiche studiate (ad esempio: dimostrare che un dato cifrario è insicuro)
- Algoritmi (ad es. fornire e spiegare lo pseudocodice di algoritmi studiati a lezione)