Crittografia - Sito Stek Andaloro
Transcript
Crittografia - Sito Stek Andaloro
Crittografia Definizione ● La crittografia serve per: ● Celare il significato del messaggio ● Garantire l’autenticità del messaggio ● Identificare l’autore del messaggio ● Firmare e datare il messaggio Crittografia deriva dal greco = scrittura nascosta Crittoanalisi ● L’avversario vuole negare gli scopi della crittografia; l'azione di un crittoanalista mirata a violare il crittosistema prende il nome di crittoanalisi. ● Celare il significato del messaggio – ● Garantire l’autenticità del messaggio – ● modificare il messaggio Identificare l’autore del messaggio – ● leggere il messaggio impersonare Firmare e datare il messaggio – ripudiare Storia ● Scitala ● Cesare ● Leon Battista Alberti Storia ● La tavola di Vigenère Principio di Kerkhoffs ● ● ● Un sistema deve essere sicuro anche se l’intero sistema, eccetto la chiave, è pubblico Massima di Shannon Il nemico conosce il sistema Proverbio Sicurezza tramite segretezza non dà nessuna sicurezza Enigma ● ● Macchina militare tedesca: Combinazione elettromeccanica di tutte le tecniche precedenti ● Primo utilizzo della matematica ● Invenzione dei computer ● Alan Turing Cifrario di Vernam ● Esiste uno ed un solo sistema perfettamente sicuro: ● ● One time pad - Come Vigenère, ma la chiave è casuale e lunga quanto il testo in chiaro. Il cifrario di Vernam è l'unico sistema crittografico la cui sicurezza sia comprovata da una dimostrazione matematica e per questo si è guadagnato il titolo di "cifrario perfetto". La prima dimostrazione della sua inviolabilità fu pubblicata nel 1949 da Claude Shannon nell'articolo La teoria della comunicazione nei sistemi crittografici. Algoritmi simmetrici DES ● ● ● ● Data Encryption Standard (1976) Combinazione elettronica delle tecniche precedenti ripetute 16 volte Sviluppato per l'IBM da Horst Feistel Riconosciuto dall'NSA DES ● ● ● DES è un algoritmo simmetrico a chiave segreta di 64 bit ma dei quali 8 sono di controllo. Tramite questa chiave l'algoritmo prevede 16 trasformazioni successive applicate a ogni blocco del messaggio. Il testo in chiaro (in bit....) viene suddiviso in blocchi da 8 byte (ogni parola è 8 bit...), quindi 64 bit. Ci sono 16 fasi identiche di processo dette round o cicli. Ci sono inoltre una permutazione iniziale ed una finale dette IP e FP. DES ● IP ed FP non hanno alcuna importanza per la cifratura ma sono state probabilmente aggiunte per facilitare il caricamento dei blocchi sull'hardware tipico degli anni '70. DES ● Il blocco è suddiviso in due sottoblocchi da 32 bit. Come si vede dalla figura il secondo sottoblocco subisce una trasformazione dalla funzione Feistel. Questo farà un OR esclusivo con il primo sottoblocco. Tutto ciò come si vede dalla figura si invertirà e ripeterà per 16 volte. DES ● La funzione Feistel opera su mezzo blocco (32 bit) per volta: – – Espansione - blocco di 32 bit è espanso fino a 48 bit utilizzando la permutazione di espansione contraddistinta con E nello schema, che duplica alcuni bit. Miscelazione con la chiave - il risultato è combinato con una sottochiave usando un'operazione di XOR. DES – Sostituzione - il blocco viene diviso in 8 parti di 6 bit prima del processamento con le Sbox. Ognuna delle 8 Sbox sostituisce 6 bit in input con 4 bit in output mediante una trasformazione non lineare effettuata attraverso una tabella. DES – Permutazione - infine, i 32 bit risultanti dalle Sbox sono riordinati in base alle permutazioni fisse della P-box. DES ● ● Generatore di chiavi I 56 bit iniziali vengono processati mediante la funzione Permuted Choice 1 (PC-1). Questi poi vengono suddivisi in 2 metà di 28 bit. DES ● Negli step successivi i due blocchi vengono fatti shiftare verso sinistra di 1 o 2 bit e quindi vengono scelti 48 bit per la sottochiave mediante la funzione Permuted Choice 2 (PC-2) - 24 bit dalla metà di sinistra e 24 bit da quella di destra. S-box ● ● ● ● Queste particolari strutture sfruttano il principio della "Confusione e Diffusione" enunciato da Shannon. Confusione: rendere la relazione tra chiave e testo cifrato quanto più complessa possibile Diffusione: rendere la relazione tra testo in chiaro e testo cifrato quanto più complessa possibile Ad esempio, la cifratura monoalfabetica non ha alcuna diffusione, perché le caratteristiche statistiche di ogni carattere in chiaro si trasmettono inalterate al carattere cifrante. S-box ● ● ● Ne consegue che la modifica di anche un carattere del testo in chiaro dovrebbe implicare l’alterazione di tutto il testo cifrato (diffusione) Analogamente, la modifica di anche un solo carattere della chiave, dovrebbe implicare l’alterazione di tutto il testo cifrato (confusione) Questa proprietà è nota con il nome di "Criterio di avalanche" (effetto valanga) S-box ● ● ● Una Substitution Box (S-Box) è una funzione che sostituisce i bit di input con dei bit di output in modo soddisfare il criterio di "avalanche". Il cambiamento di un singolo bit di input quindi deve influenzare circa la metà dei bit di output Una S-Box è un tipo particolare di cifratura a sostituzione P-box ● Una Permutation Box (P-Box) è una funzione che genera in output una permutazione dei bit di input. E’ quindi un caso particolare di cifratura a trasposizione. AES ● ● Advanced Encryption Standard (AES) è il primo standard approvato dall'NSA e tuttora non sono conosciuti attacchi in grado di violarlo. AES è un cifrario a blocchi da 128 bit con chiavi indipendenti l'una dall'altra a lunghezza variabile da 128, 192 o 256 bit. AES ● ● L'algoritmo consiste nel: Prendere i blocchi da 128 (16 caratteri) e disporli in tabelle 4x4. Quindi a questo punto si procede alla codifica attraverso 10 round: ogni round è composto da 4 fasi. AES ● ● Substitute Bytes Ogni byte viene trasformato attraverso una permutazione non lineare. I bytes vengono mappati attraverso una tabella detta S-box. AES ● ● Shift Rows La prima riga non viene modificata, nella seconda avviene uno shift verso di sinistra di un posto, nella terza di due e nella quarta di tre. AES ● ● Mix columns La matrice viene trasformata moltiplicandola per una matrice generata da un polinomio. AES ● ● Add Round Key Ogni byte viene combinato tramite uno Xor il byte corrispondente della chiave. Conclusioni ● ● In definitiva questi due algoritmi rispettano il principio di Kerckhoffs ed hanno un forte effeto valanga. Questi algoritmi sono abbastanza sicuri (infatti sono ancora usati nelle validazioni di password segrete), ma non possono essere usati sempre in quanto il mittente dovrebbe mandare insieme al messaggio la chiave.