triplo_DES capitolo 6

Report
Considerazioni sulla sicurezza e relativa lentezza di alcune
operazioni del software DES, hanno motivato i ricercatori a
proporre un certo numero di progetti di cifrature a blocchi
alternativi a cominciare dalla fine degli anni '80 ed i primi anni
'90
Esempi di tali sistemi sono:
RC5, Blowfish, IDEA, NewDES, SAFER, CAST5 e FEAL.
La maggior parte di questi progetti considerano blocchi a 64 bit
come nel DES e chiavi di 64 o 128 bit.
•Il DES può essere migliorato utilizzando un procedimento di
crittografia multipla mediante il quale lo stesso algoritmo viene
applicato più volte.
0
Varianti del DES
•Double-DES: implica l'applicazione del DES tre volte con due
chiavi diverse
• Triple DES (3DES): è stato analizzato e descritto nelle
pubblicazioni ufficiali. Implica l'applicazione del DES tre volte
con due o tre chiavi diverse.
•DES-X: alternativa computazionalmente meno pesante che
aumenta la lunghezza della chiave effettuando un'operazione di
XOR con dei bit extra prima e dopo il l'applicazione del DES.
•GDES:altra variante del DES proposta per avere un'alternativa
più veloce ma si è dimostrata debole nei confronti degli attacchi
mediante crittanalisi differenziale.
1
•Nel 2001, dopo una competizione internazionale, il NIST ha
selezionato un nuovo algoritmo di cifratura: l'Advanced
Encryption Standard (AES), come sostituto.
•L’uso di varianti del DES ha comunque il vantaggio di
conservare l’investimento esistente in termini di software e
dispositivi
2
DES Doppio
testo in chiaro
testo cifrato
DES
DES
K1
K2
Cifratura
lunghezza blocco = 64 bit
chiave (K1, K2)
apparentemente lunga 56+56 = 112 bit
C=E[K2,E(K1,P)]
3
DES Doppio
Cifratura
DES
testo in chiaro
P
E
C
E
K1
K2
DES-1
DES-1
Decifratura
testo cifrato
X
DES
D
K2
X
D
testo cifrato
C
testo in chiaro
P
K1
P=D[K1,D(K2,C)]
4
DES Doppio
•Riduzione a un’unica fase
Proposizione 2.1: Per ogni coppia di chiavi (k1, k2) non
esiste alcuna chiave k3 tale che
DES k2(DES k1(X))=DES k3(X)
per ogni testo in chiaro X.
Se fosse stato vero il contrario, se cioè l'utilizzo di due chiavi fosse stato equivalente
all'utilizzo di una sola chiave, allora la cifratura doppia, ed in generale la cifratura
con un numero qualsiasi di passi (e di chiavi), sarebbe stata inutile
5
DES Doppio
•Un’encryption DES è un mapping da un blocco di 64 bit ad un altro
•Con una data chiave ad un blocco di 64 bit viene associato uno dei
264 possibili blocchi in modo univoco.
64
1020
64
•Vi sono 2 ingressi possibili quindi vi sono (2 )!  (10 )
mapping diversi
•DES definisce un mapping per ogni chiave, quindi 256 < 1017
•Il DES con due chiavi diverse può produrre un mapping
non prodotto da una singola applicazione del DES (la dimostrazione
è stata data nel 1992 da Campbell che dimostrò che DES non è un
gruppo
•Il Double-DES è un miglioramento rispetto al DES
6
Sicurezza DES doppio
Quanto è “sicuro”
il DES doppio?
7
DES Doppio:
attacco meet in the middle
L’attacco meet in the middle è stato proposto da Diffie ed Hellman
nel 1997
Tale algoritmo, non dipende dalla particolare struttura del DES, e
pertanto può essere usato per attaccare un qualunque cifrario a
blocchi.
Si basa sull’osservazione che, se: (vedi figura)
C = E( K2(E(K1,P))
allora
X = E(K1,P) = d(K2,P)
8
DES Doppio:
attacco meet in the middle
Supponiamo di conoscere una particolare coppia (P, C), dove P è il
testo in chiaro e C il testo cifrato, e di voler determinare la coppia di
chiavi (K1, K2) utilizzate per cifrare P.
1◘ Cifriamo P utilizzando tutte le 256 possibili chiavi K1 e
memorizziamo i testi cifrati in una tabella ordinata per valori di X
2◘ Decifriamo C usando tutte le 256 possibili chiavi K2
◘ Confrontiamo i valori ottenuti nel passo due con quelli presenti
nella tabella costruita nel passo1
Se si trova una corrispondenza allora le due chiavi corrispondenti
potrebbero formare la coppia cercata
9
DES Doppio:
attacco meet in the middle
Non è detto,, che la coppia trovata sia effettivamente quella corretta perché, in
realtà, possono esistere diverse chiavi che dallo stesso testo in chiaro P generano lo
stesso testo cifrato C. In particolare, per ogni testo in chiaro P, il Doppio DES
può produrre 264 possibili valori di testo cifrato.
Poiché il Doppio DES usa una chiave a 112 bit, le chiavi possibili sono 2112.
Peranto, se scegliamo a caso una coppia (P, C), il numero di di chiavi da 112 bit che
trasformano P in C è in media 2112/264 = 248
•L'attacco considerato produce cioé circa 248 collisioni sulla coppia (P, C).
•Allora scegliamo a caso un'altra coppia (P', C') di testo in chiaro-testo cifrato
(indipendente dalla prima) tale che C' sia prodotto da P' utilizzando la stessa
coppia di chiavi (K1, K2).
Con tale scelta il numero di falsi allarmi diminuisce riducendosi a 248-64=2-16 .
Il risultato è che l’attacco avrebbe successo con uno sforzo computazionale pari10a 256;
DES Doppio:
attacco meet in the middle
testo in chiaro
x
DES
K1
z
DES
testo cifrato
y
K2
Known Plaintext Attack
chiave tes to cifrato
Input: x, y = DESk´(DESk(x) )
k''
DESk'' (x)
Costruisci tabella
…
…
for k2{0,1}56
do z = DES-1k2(y)
if per qualche k1, (k1, z) è nella tabella
then return la chiave è (k1,k2)
11
3DES
standardizzato per le applicazioni finanziarie nel 1985,
dal 1999 incorporato nello standard DES
tre esecuzioni del DES secondo uno schema EDE
stessa resistenza del DES alla crittoanalisi
tre chiavi da 56 bit equivalenti a una da 168 bit
12
DES Triplicato
testo in chiaro
testo cifrato
DES
DES
DES
k1
k2
k3
Cifratura
 lunghezza blocco = 64 bit
 chiave (k1, k2,k3) lunga 56 + 56 + 56 = 168 bit
13
DES Triplo
testo in chiaro
testo cifrato
DES
DES-1
DES
k1
k2
k1
Cifratura
 lunghezza blocco = 64 bit
 chiave (k1, k2) lunga 56+56 = 112 bit
 spesso chiamato EDEk1,k2 (acronimo per Encrypt Decrypt Encrypt)
 adottato negli standard X9.17 e ISO 8732
14
Compatibilità DES Triplo e DES
Se k 1= k2 il DES triplo
testo in chiaro
DES
k1
-1
DES
k2
k1
DES
testo cifrato
è equivalente al semplice DES
testo in chiaro
DES
testo cifrato
15
Decifratura DES Triplo
Cifratura
testo in chiaro
testo cifrato
DES
DES-1
DES
k1
k2
k1
DES
-1
Decifratura
testo cifrato
DES
-1
k1
k2
DES
testo in chiaro
k1
16
DES Triplicato:
attacco meet in the middle
Complessità Known Plaintext Attack  2112
Ricerca esaustiva su tutte le chiavi  2168
•“Equivalente” ad un cifrario con una chiave
di 112 bit, e non 168 bit
17
DES Triplicato:
attacco meet in the middle
testo in chiaro
x
testo cifrato
DES
k
DES
k´
z
DES
y
k´´
Known Plaintext Attack
Input: x, y = DESk´´(DESk´(DESk((x)))
chiave
testo cifrato
Costruisci tabella
(k''',k'''') DESk''' (DESk'''' (x))
…
…
for k3 {0,1}56
do z = DES-1k3(y)
if per qualche k1,k2, (k1k2, z) è nella tabella
then return la chiave è (k1,k2,k3)
18
Modalità operative del DES
Come cifrare testi più lunghi di 64 bit?
 Electronic codebook chaining (ECB)
 Cipher block chaining (CBC)
 Cipher feedback (CFB)
 Output feedback (OFB)
 Counter (CTR)
19
Modalità operative del DES
•Electronic Codebook (ECB)
• Il messaggio è suddiviso in blocchi indipendenti che sono
poi criptati singolarmente
• Si tratta a tutti gli effetti di un cifrario a sostituzione
• E’ il metodo più semplice ma anche meno affidabile, ideale
per la trasmissione di brevi quantità di dati
• Un crittoanalista può rompere tale cifrario abbastanza
facilmente poiché è possibile applicare un’analisi di
frequenza. Inoltre un attaccante che si inserisce a metà del
canale di trasmissione (man in the middle attack) può
sostituire parti del testo cifrato senza che il ricevente possa
accorgersi facilmente della sostituzione.
20
Modalità operative del DES
•Electronic Codebook (ECB)
21
Modalità operative del DES
Svantaggi della modalità ECB
• La ridondanza del plaintext viene riportata
nel ciphertext
• Blocchi uguali di plaintext in tempi diversi
produrranno blocchi analoghi di ciphertext
• Se il messaggio è strutturato (header comune) si
possono ottenere copie di testo in chiaro/testo cifrato su
cui lavorare
• La modalità ECB viene utilizzata per l’invio
di piccole quantità di dati tipo una chiave di cifratura
22
Modalità operative del DES
Cipher Block Chaining (CBC)
• Il plaintext è diviso in parole di 64 bit
• Tali parole sono però collegate tra loro durante
la criptazione
• Ciascun blocco cifrato è concatenato (tramite uno
XOR) col successivo blocco di plaintext
• Il primo blocco di plaintext fa uso di un vettore di
•inizializzazione (IV):
• La modalità CBC viene usata per la criptazione di
grosse quantità di dati
23
Modalità operative del DES
Cipher Block Chaining (CBC)
24
Modalità operative del DES
Cipher Block Chaining (CBC)
25
Modalità operative del DES
•Modalità CBC: vantaggi e svantaggi
• Ciascun blocco di ciphertext dipende da tutti i
precedenti blocchi di plaintext
• Un cambiamento in un singolo blocco ha effetto
su tutti i blocchi cifrati seguenti
• C’è bisogno di un vettore di inizializzazione (IV)
noto al trasmettitore e al ricevitore
– IV tuttavia non può essere inviato in chiaro
– IV deve essere inviato in forma criptata (ad esempio
con modalità ECB) o deve assumere un valore fisso e
26
noto
Modalità operative del DES
Cipher FeedBack (CFB)
27
Modalità operative del DES
Cipher FeedBack (CFB)
28
Modalità operative del DES
Message padding
Alla fine del messaggio possibile presenza di un blocco
più breve del blocco del cipher
p.e. [ b1 b2 b3 0 0 0 0 5]
significa avere 3 bytes di dati, quindi 5 bytes di pad+count
Ciò può richiedere un intero blocco aggiuntivo
a quelli propri del messaggio
Possibile padding con valori non-data (p.e. null) noti
oppure possibile un padding dell’ultimo blocco con
un contatore del padding
Esistono altri modi più sofisticati che evitano la presenza
29
del blocco aggiuntivo
Modalità operative del DES
Output Feedback (OFB)
• Output Feedback (OFB) in questo caso il collegamento
avviene tra l'output del blocco precedente ed il blocco
corrente. Questo dovrebbe garantire un procedimento più
veloce. Questo modello viene utilizzato nelle
comunicazioni ad elevata velocità come ad esempio i
satelliti.
Esistono sistemi crittografici che cercano di combinare i
modelli a blocchi sopra illustrati.
30
Modalità operative del DES
Output FeedBack (OFB)
31
Modalità operative del DES
Advantages and Limitations of OFB
used when error feedback a problem or where need to
encryptions before message is available
superficially similar to CFB
but feedback is from the output of cipher and is
independent of message
a variation of a Vernam cipher
– hence must never reuse the same sequence (key+IV)
sender and receiver must remain in sync, and some
recovery method is needed to ensure this occurs
originally specified with m-bit feedback in the standards
subsequent research has shown that only OFB-64 should
32
ever be used
Modalità operative del DES
Counter (CTR)
33
Modalità operative del DES
Counter (CTR)
34
Stream Ciphers
Cifrario a flusso (stream cipher): trasforma, uno o pochi alla volta,
i bit del testo da cifrare e da decifrare.
Protezione dei singoli bit di una trasmissione seriale
WEP, GSM
•Due tipi di cifrario a flusso
•flusso sincrono: Il flusso dei bit di chiave è generato in modo
indipendente dal flusso dei bit di testo
•Autosincronizzazione: il flusso dei bit di chiave dipende dal flusso
dei bit di testo cifrato
Stream Ciphers
seed
seed
FLUSSO DI CHIAVE
•lungo quanto il testo
PRNG •formato da bit pseudocasuali
•periodo lunghissimo
•sequenza scelta in segreto e a caso
ki
sincronismo
mi
ci
CIFRATURA
ci = mi  ki
i= 1, 2, 3, ..
ci
PRNG
ki
mi
DECIFRAZIONE
ci  ki = (mi  ki) ki = mi
i= 1, 2, 3, ..
Stream Ciphers
•Sicurezza
La sicurezza dei cifrari a flusso è concentrata nella realizzazione di
una stringa di bit di valore aleatorio lunga quanto il testo.
In realtà i bit sono pseudocasuali con un periodo p >1050.
Per cifrare e decifrare un messaggio entrambi gli utenti devono
Inizializzare due generatori di flusso di chiave (che garantiscono la
sincronizzazione del flusso di dati) con un seme (seed) segreto di
piccole dimensioni.
Stream Ciphers
ATTACCHI
FLUSSO SINCRONO
AUTOSINCR.
Cancellazione di bit
propagazione d’errore
perdita di sincronizzaz.
transitorio
non rilevabile
Inserzione di bit
propagazione d’errore
perdita di sincronizzaz.
transitorio
non rilevabile
Replica di bit
propagazione d’errore
perdita di sincronizzaz.
transitorio
non rilevabile
Modifica di bit
non propagazione
non rilevabile
transitorio
rilevabile
Cifratura a flussi:RC4
Stream cipher realizzato della RSA Data Security Inc.
Progetto semplice ma efficiente
Funzionamento byte-oriented
Lunghezza di chiave variabile
Largamente usato: web SSL/TLS, WLAN WEP e WPA
Chiave genera permutazione casuale di tutti i valori a 8 bit
Usa quella permutazione per l’elaborazione dell’informazione
Era rimasto protetto dal segreto commerciale finché qualcuno spedì
il codice sorgente di un algoritmo "equivalente" a RC4 nelle Usenet
New
RC4
•S costituisce l’internal state del keystream generator
•Inizialmente array S di numeri da 0 a 255
•Chiave usata per mescolare bene i 256 numeri
•Per un byte da cifrare viene selezionato un byte dello state
•Dopo di ciò nuova permutazione
for i = 0 to 255 do
S[i] = i
T[i] = K[i mod keylen]
j=0
for i = 0 to 255 do
j = (j + S[i] + T[i]) (mod 256)
swap (S[i], S[j])
RC4
La encryption continua mescolando i valori dell’array
Somma di una coppia mescolata seleziona dalla
permutazione lo stream key
Per criptare/decriptare si fa lo XOR con il successivo
byte del messaggio
i=j=0
for each message byte Mi
i = (i + 1) (mod 256)
j = (j + S[i]) (mod 256)
swap(S[i], S[j])
t = (S[i] + S[j]) (mod 256)
Ci = Mi XOR S[t]
RC4
RC4
Il risultato finale è fortemente non lineare
RC4 è uno stream cipher, quindi non si deve riusare la chiave
Esiste un problema noto con il WEP, ma è dovuto al sistema
di gestione della chiave e non ad RC4
Il governo USA ha approvato l'esportazione di RC4 con chiavi di
40 bits: chiavi cosi piccole possono essere facilmente forzate da
istituzioni come il governo, l'esercito etc
SSL, versione export, che usa RC4 con chiavi di 40, bits è stato
recentemente forzato da almeno due gruppi indipendenti in circa
otto giorni di attività. Qualche tempo dopo lo stesso attacco è stato
effettuato con successo in soli 35 minuti
RC4
Inizialmente i sistemisti Microsoft utilizzavano per la cifratura
l 'algoritmo RC4. A causa di qualche problema i programmatori
Microsoft implementarono una versione dell'RC4 leggermente
modificata a livello di codice, ma completamente stravolta a livello
di funzionalità. Con semplici operazioni di X0R e di traslazione e
grazie a numerosi programmi freeware si possono decodificare tutte
le password contenute nel file .PWL. Un esempio di programma per
attaccare le password è PWL-TOOL. Questo tool è immediato da
utilizzare grazie alla sua interfaccia grafica friendly ed è scaricabile
dal sito www.webdor.com.
La software house evidentemente non ha ritenuto opportuno dedicare
sufficiente attenzione alla implementazione di un algoritmo sicuro
per la protezione delle password di sistema
A5
•Forse il più diffuso stream cipher
•Usato dal GSM per la encryption della voce/dati
•Mai reso pubblico, quindi noto solo in modo non ufficiale
•Due varianti A5/1 ad alta sicurezza A5/1 a bassa sicurezza A5/2
•GSM trasmette un frame ogni 4,6 ms, formato da 228 bit
•114 in un senso e 114 in quello opposto
114
114
•Una conversazione è criptata con una chiave di sessione K
•di 64 bit
•10 bit sono uguali a 0, sicché la chiave effettiva è di 54 bit
GSM
A5
•La chiave K è unita ad un frame counter Fn di 22 bit
noto al pubblico e il risultato è lo stato iniziale del
generatore di un keystream con unità di 228 bit
•L’unità di keystream di 228 bit è XORed dalle due parti A
e B con i 114 + 144 bit di plaintext per produrre i 114 +
114 bit di ciphertext
•L’unità di keystream di 228 bit è generata usando tre Linear
Feedback Shift Register (LFSR) R1 (19 bit), R2 (22 bit) e R3
(23 bit), più un quarto LSFR R4 (17)
•I registri sono Maximal Length
A5
A5
Funzionamento del meccanismo di clocking
R4 controlla il clocking di R1, R2 e R3
Dovendo effettuare il clocking di R1, R2 e R3 si iniettano nella
Clocking unit i bit R4[3], R4[7] e R4[10 ]
La Clocking unit calcola la majority function su questi 3 bit
maj(a,b,c) = a· bb · cc · a
R1, R2 e R3 sono clocked, se e solo se, rispettivamente R4[1],
R4[3] e R4[7] è uguale alla majority
Dopo queste operazioni R4 è clocked
A5
Senza funzionamento stop/go, il periodo della somma
dei tre LSFR è dato da
(219 -1)(222 -1)(223 -1)
Tenendo conto dello stop/go si si ha un periodo di
circa 4 •(223 -1) / 3
All’avvio i registri sono inizializzati a 0
Per 64 cicli di clock si provvede ad aggiungere la
chiave
A5
Nel ciclo i si aggiunge al bit meno significativo di ciascun
registro il bit i-esimo della chiave usando un’XOR
R(0) = R(0) K(i)
Dopo l’XOR si invia il clock
Similmente in 22 cicli di clock si aggiunge il frame number
Si effettuano 100 cicli di clock a vuoto, ossia senza
prendere l’uscita
A questo punto il keystream generator è pronto

similar documents