IN450 - Algoritmi per la Crittografia - AA 2018-2019

Lezioni

Diario delle lezioni dell'AA 2018-2019


Le lezioni si tengono nel I semestre con il seguente orario:
  • [-] lunedì ore 16.00-18.00 (lezione, Aula Informatica),
  • [-] mercoledì ore 14.00-16.00 (lezione/esercitazione, Aula Informatica);
  • [-] venerdì ore 14.00-16.00 (lezione, Aula G).

Lezione n. 1 - Monday 24 September 2018

  • 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 - Wednesday 26 September 2018

  • 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 - Friday 28 September 2018

  • Esempi di crittosistemi poco resistenti all'analisi statistica.

Lezione n. 4 - Monday 1 October 2018

  • Introduzione alla programmazione funzionale con Mathematica. Espressioni. Assegnazioni: immediata e posticipata. Il Kernel e il Front-End. Unix scripting con Makefile. Dichiarazione di funzioni. Operazioni Collettive in Mathematica. Creazione di liste di interi. Funzionali: Map, Apply, Fold, Nest.

Lezione n. 5 - Wednesday 3 October 2018

  • 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. 6 - Friday 5 October 2018

  • 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. 7 - Monday 8 October 2018

  • Implementazione del cifrario Vigenere. Implementazione del Kasiski Test. Utilizzo dell'Indice di Coincidenza per verificare l'ipotesi di lunghezza della chiave.

Lezione n. 8 - Wednesday 10 October 2018

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

Lezione n. 9 - Friday 12 October 2018

  • Definizione di codice. Estensione della funzione di codifica alle sequenze. Codici prefissi. Codice Huffman. Proprieta' di ottimalita' del codice Huffmann.

Lezione n. 10 - Monday 15 October 2018

  • Implementazione degli LFSR. Implementazione di cifrari che si ottengono per combinazione di LFSR mediante funzioni di combinazione non lineare. Ricavare la sequenza dei polinomi corrispondenti al keystream di un cifrario a flusso.

Lezione n. 11 - Wednesday 17 October 2018

  • La funzione entropia e' subadditiva. Entropia Condizionata. Proprieta' dell'entropia condizionata. Applicazione ai sistemi di cifratura.

Lezione n. 12 - Friday 19 October 2018

  • 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. 13 - Monday 22 October 2018

  • Reti di Sostituzioni e Permutazioni (SPN). Esempio di SPN. Crittoanalisi Lineare di SPN.

Lezione n. 14 - Wednesday 24 October 2018

  • Calcolo dello sbilanciamento di una v.a.d. Applicazione nella ricerca di relazioni lineari sbilanciate. Crittoanalisi Lineare Calcolo della Tabella di Approssimazione Lineare. Esempio di crittoanalisi.

Lezione n. 15 - Friday 26 October 2018

  • Generalizzazione del cube attack a campi qualunque. Cifrari a blocchi. Cifrari iterati. Reti di Sostituzione-Permutazione.

Lezione n. 16 - Wednesday 31 October 2018

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

Lezione n. 17 - Monday 5 November 2018

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

Lezione n. 18 - Monday 12 November 2018

  • Implementazione del calcolo della Tavola delle frequenze della lingua italiana. Calcolo dell'indice di coincidenza dell'italiano.

Lezione n. 19 - Wednesday 14 November 2018

  • rittoanalisi Algebrica: metodo di linearizzazione. 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.

Lezione n. 20 - Friday 16 November 2018

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

Lezione n. 21 - Monday 19 November 2018

  • 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. 22 - Wednesday 21 November 2018

  • Specifica della funzione di round di AES: SubBytes, ShiftRows, MixColumns, AddKey. Specifica della funzione di generazione del Key schedule.

Lezione n. 23 - Friday 23 November 2018

Lezione n. 24 - Monday 26 November 2018

  • Cube Attack: Calcolo dei superpolinomi e determinazione dei maxterm.

Lezione n. 25 - Wednesday 28 November 2018

  • Funzioni One Way. Complessita' degli Algoritmi. Problemi di decisione. Classe dei problemi P (decidibili in tempo polinomiale) .Algoritmi non deterministici.

Lezione n. 26 - Friday 30 November 2018

  • Definizione di funzione di hash. Criteri di valutazione della sicurezza. Random Oracle Model. Algoritmi Randomizzati di tipo Las Vegas. Definizione di Collisione. Problema della Controimmagine. Problema della seconda controimmagine.

Lezione n. 27 - Monday 3 December 2018

  • Estrazione del grafo di approssimazione lineare relativo ai migliori sbilanciamenti. Implementazione della ricerca di cicli in un grafo. Implementazione della funzione che calcola il superpolinomio rispetto ad un monomio di un polinomio dato.

Lezione n. 28 - Wednesday 5 December 2018

  • Algoritmi Randomizzati di riduzione del problema di ricerca di una collisione in una hash function al problema della controimmagine e della seconda controimmagine. Costruzione delle funzioni di hash per iterazione di una funzione di compressione. Costruzione di Merkle-Damgard.

Lezione n. 29 - Friday 7 December 2018

  • 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. 30 - Monday 10 December 2018

  • Estrazione del grafo di approssimazione lineare relativo ai migliori sbilanciamenti. Implementazione dell'Algoritmo di Tarjan per la ricerca dei cicli in un grafo.

Lezione n. 31 - Wednesday 12 December 2018

  • Algoritmi randomizzati, collisione sul problema della seconda controimmagine, collisione sul problema della controimmagine.

Lezione n. 32 - Friday 14 December 2018

  • Descrizione dell'Algoritmo di Hash Sicuro (SHA-1).

Lezione n. 33 - Wednesday 19 December 2018

  • Attacco multicollisione di Joux.

Lezione n. 34 - Friday 21 December 2018

  • Funzioni di hash. Esempio di applicazione dell'attaco di Joux.