IN450 - Algoritmi per la Crittografia - AA 2016-2017

Lezioni

Diario delle lezioni dell'AA 2016-2017


Le lezioni si tengono nel I semestre con il seguente orario:
  • [-] lunedì ore 9.00-11.00 (esercitazioni, Laboratorio Informatico/Aula 311);
  • [-] lunedì ore 14.00-16.00 (lezione, Aula 211/Laboratorio Informatico);
  • [-] giovedì ore 9.00-11.00 (lezione, Aula 311/Laboratorio Informatico).

Lezione n. 1 - Monday 26 September 2016

  • Presentazione del corso. Prime definizioni. Sistemi di Cifratura Classici. Distinzione tra sistemi Monoalfabetici e Sistemi Polialfabetici. Shift cipher, substitution cipher, affine cipher, Vigenere cipher, Hill cipher. Cifrario per trasposizione. Osservazione che il cifrario per trasposizione e' un caso particolare del cifrario di Hill.

Lezione n. 2 - Thursday 29 September 2016

  • Crittoanalisi dei cifrari. Tipologie di attacchi: ciphertext-only, known-plaintext, chosen-plaintext, chosen-ciphertext. Crittoanlisi del cifrario affine. Crittoanalisi statistica di cifrari monoalfabetici.

Lezione n. 3 - Monday 3 October 2016

  • Introduzione alla programmazione funzionale con Mathematica. Espressioni. Assegnazioni: immediata e posticipata. Dichiarazione di funzioni. Meccanismo della memoization per le funzioni. Creazione di liste di interi. Funzionali: Map, Apply, Fold, Nest. Crittoanalisi del Cifrario di Vigenere. Kasiski Test. Indice di Coincidenza. Test dell'indice di coincidenza per un'ipotesi di chiave. Crittoanalisi del cifrario di Hill. Crittoanalisi dei cifrari a flusso.

Lezione n. 4 - Thursday 6 October 2016

Lezione n. 5 - Monday 10 October 2016

  • Introduzione all'utilizzo del Makefile e del Kernel di Mathematica. Implementazione del cifrario shift. Utilizzo dell'implementazione del cifrario per la codifica di un testo e la corrispondente decifratura. Equivalenza tra cifrario LFSR di Galois e cifrario LFSR ordinario. Polinomio caratteristico di un cifrario di Galois. Relazione tra le radici del polinomio caratteristico di un LFSR di Galois e la funzione di aggiornamento di stato del cifrario.

Lezione n. 6 - Thursday 13 October 2016

  • Definizione e prime proprieta' elementari delle distribuzioni di probabilita' discreta. Definizione di segretezza perfetta. Definizione di Entropia.

Lezione n. 7 - Monday 17 October 2016

  • Implementazione del cifrario Vigenere. Implementazione del Kasiski Test. Utilizzo dell'Indice di Coincidenza per verificare l'ipotesi di lunghezza della chiave. Calcolo dell'entropia. Definizione di codice. Estensione della funzione di codifica alle sequenze. Codici prefissi. Codice Huffman. Proprieta' di ottimalita' del codice Huffmann. La funzione entropia e' subadditiva. Entropia Condizionata. Proprieta' dell'entropia condizionata. Applicazione ai sistemi di cifratura.

Lezione n. 8 - Thursday 20 October 2016

  • Entropia della chiave condizionata al ciphertext. Ridondanza in funzione dell'entropia. Definizione di chiavi spurie. Calcolo della distanza di unicita' a partire dalla ridondanza.

Lezione n. 9 - Monday 24 October 2016

Lezione n. 10 - Thursday 27 October 2016

  • Reti di Sostituzioni e Permutazioni (SPN). Esempio di SPN. Crittoanalisi Lineare di SPN. Calcolo dello sbilanciamento di una v.a.d. Applicazione nella ricerca di relazioni lineari sbilanciate.

Lezione n. 11 - Thursday 3 November 2016

  • Crittoanalisi Lineare Calcolo della Tabella di Approssimazione Lineare. Esempio di crittoanalisi.

Lezione n. 12 - Monday 14 November 2016

  • Crittoanalisi differenziale per i cifrari a blocchi. Cifrari di tipo Feistel.

Lezione n. 13 - Thursday 17 November 2016

  • Esempio di Attacco di un crifrario co il cube-attack. Trasformata di Moebius per ottimizzare lo spazio di memoria occupato.

Lezione n. 14 - Monday 21 November 2016

  • Crittoanalisi Algebrica: metodo di linearizzazione. Matrice di Macaulay. Metodo delle Basi di Groebner. Classificazione della sicurezza di un sistema di cifratura: sicurezza computazionale, sicurezza condizionata, sicurezza incondizionata. Implementazione del calcolo delle frequenza caratteristiche della lingua a partire da un corpus di testo. Implementazione del calcolo della Tavola delle frequenze della lingua italiana. Calcolo dell'indice di coincidenza dell'italiano.

Lezione n. 15 - Thursday 24 November 2016

  • Cifrari Iterati. Reti di Sostituzione-Permutazione. Esempio di cifrario SPN. Cifrario di tipo Feistel. Cifrario di Feistel Generalizzato.

Lezione n. 16 - Monday 28 November 2016

  • Crittoanalisi Differenziale di cifrari iterati di tipo SPN. Definizione di differenziale di una sostituzione. Calcolo delle Tabelle dei Differenziali. Applicazione dei Differenziali per realizzare un attacco known-plaintext. Attacco su una rete di sostituzione permutazione a partire dagli sbilanciamenti caratteristici delle S-box. Implementazione di un attacco di tipo known-plaintext, di una S-box di cui siano noti gli sbilanciamenti nella tavola di approssimazione lineare. Calcolo delle caratteristiche differenziali di una S-Box. Ricerca delle caratteristiche componibili.

Lezione n. 17 - Thursday 1 December 2016

  • Calcolo dei superpolinomi e determonazione dei maxterm.

Lezione n. 18 - Monday 5 December 2016

  • Estrazione del grafo di approssimazione lineare relativo ai migliori sbilanciamenti.

Lezione n. 19 - Monday 12 December 2016

  • Funzioni di Hash. Esempi di funzioni di hash. Funzioni di Hash ideali. Algoritmi Randomizzati. Funzioni One Way. Complessita' degli Algoritmi. Problemi di decisione. Classe dei problemi P (decidibili in tempo polinomiale) .Algoritmi non deterministici. Classe dei problemi NP (decidibili in tempo polinomiale con una macchina non-deterministica). Riducibilita' tra problemi di decisione. La classe dei problemi NP-Hard.

Lezione n. 20 - Thursday 15 December 2016

Lezione n. 21 - Monday 19 December 2016

  • La costruzione di Merkle-Damgard per la definizione di funzioni di hash iterate basate su funzioni di compressione ideali. Algoritmo MD1 ed MD2.

Lezione n. 22 - Thursday 22 December 2016

  • Codici per l'autenticazione di messaggi (MAC). L'algoritmo SHA-1.