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.