IN450 - Algoritmi per la Crittografia - AA 2020-2021

Corso

Descrizione, Programma


Introduzione

Il corso di è dedicato allo studio dei sistemi di cifratura e delle loro proprietà. In particolare, verranno studiati i metodi e gli algoritmi sviluppati per verificare il livello di sicurezza dei crittosistemi, sia dal punto di vista della sicurezza formale (nell'ambito dei protocolli) sia dal punto di vista della crittoanalisi. E' richiesto come prerequisito di tipo informatico la conoscenza del sistema operativo Unix (Linux) e della programmazione in C.

Più in dettaglio, il corso fornisce una presentazione delle principali primitive crittografiche e degli algoritmi utilizzati per attaccarle.

Programma del corso

  1. 1. Crittografia Classica
    • Crittosistemi di base: cifratura per sostituzione, per traslazione, per permutazione, affine, di Vigenère, di Hill. Cifratura a flusso (sincrona e asincrona), Linear feedback shift registers (LFSR) su campi finiti, Cifrario autokey. Cifrari prodotto. Crittoanalisi di base: classificazione degli attacchi; crittoanalisi per i cifrari affini, per la cifratura a sostituzione (analisi delle frequenze), per la cifratura di Vigenère: Kasiski test, indice di coincidenza; crittoanalisi del cifrario di Hill e degli LFSR: attacchi algebrici, cube attack.
  2. 2. Applicazione della Teoria di Shannon alla crittografia
    • Sicurezza dei cifrari: sicurezza computazionale, sicurezza dimostrabile, sicurezza incondizionata. Richiami di calcolo delle probabilità: variabili aleatorie discrete, probabilita congiunta, probabilita condizionata, variabili aleatorie indipendenti, Teorema di Bayes. Variabili aleatorie associate a crittosistemi. Sistemi di cifratura a sicurezza perfetta. Crittosistema di Vernam. Entropia. Codici di Huffman. Spurious Keys e Unicity distance.
  3. 3. Cifrari a blocchi
    • Schemi di cifratura iterativi; Reti di Sostituzione-Permutazione (SPN); Crittoanalisi lineare per SPN: Piling-Up Lemma, approssimazione lineare di S- boxes, attacchi lineari a S-boxes; Crittoanalisi differenziale per SPN; Cifrari di tipo Feistel; DES: descrizione e analisi; AES: descrizione; Cenni sui campi finiti: operazioni su campi finiti, algoritmo di Euclide generalizzato per il calcolo del mcd e degli inversi; Modi operativi per i cifrari a blocchi.
  4. 3. Funzioni Hash e Codici per l'autenticazione di messaggi
    • Funzioni di hash e integrità dei dati. Funzioni di hash sicure: resistenza alla controimmagine, resistenza alla seconda controimmagine, resistenza alla collisione. Il modello dell'oracolo random: funzioni di hash ideali, proprietà di indipendenza. Algoritmi randomizzati, collisione sul problema della seconda controimmagine, collisione sul problema della controimmagine. Funzioni di hash iterate; la costruzione di Merkle-Damgard. Algoritmo di Hash Sicuro (SHA-1). Codici di Autenticazione (MAC): codici di autenticazione nidificati (HMAC).