Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Luca Grilli
INTRODUZIONE
Introduzione
Si illustrer come usare gli algoritmi di crittografia a chiave segreta, DES, IDEA e AES, in applicazioni reali
stato visto soltanto come usare tali algoritmi per cifrare blocchi di lunghezza prefissata
64 bit per DES e IDEA 128 bit per AES
CounTeR Mode (CTR) nelle prossime slide, si far riferimento a cifrari a blocchi con blocchi di 64 bit
tutte le considerazioni valgono anche nel casi di cifrari con blocchi di dimensione diversa da 64 bit
ciascun blocco da 64 bit viene cifrato con la chiave segreta la decifratura, consiste nel decifrare ciascun blocco cifrato, e nel ricomporre il messaggio in chiaro a partire dai singoli blocchi decifrati
suddivisione in blocchi
un altro problema che un avversario pu riarrangiare i blocchi in modo da ottenere un effetto predittivo sul testo in chiaro
ad esempio, se la coppia r2|c2 fosse rimossa il corrispondente blocco in chiaro m2 scomparirebbe, o se la coppia r2|c2 fosse scambiata con la coppia r7|c7 m2 e m7 risulterebbero scambiati
per evitare che due testi in chiaro inizialmente identici diano luogo a dei blocchi cifrati inizialmente identici CBC genera un singolo numero random, detto vettore di inizializzazione (Initialization Vector IV), che viene sommato (XOR ) con il primo blocco di testo in chiaro
il risultato viene trasmesso dopo la cifratura a chiave segreta
DECIFRATURA
m1 = D(K, c1) IV mi = D(K, ci) ci-1 per i > 1
in molti casi la sicurezza di CBC non dipende dalla scelta del vettore di inizializzazione IV
cio si possono porre tutte le cifre di IV pari a 0
Ricapitolando
Trudy stato in grado di modificare un blocco in modo predittivo con leffetto collaterale di modificare il blocco precedente senza poter prevedere il risultato finale
a cosa potrebbe servirgli tale flusso cifrato? facciamo una piccola digressione
uno dei modi di combattere la minaccia 1 includere un CRC (Cyclic Redundancy Check) al testo in chiaro prima di cifrarlo con un CBC se Trudy modifica qualche blocco cifrato, il CRC consentir ad un computer di rilevare prontamente lalterazione del messaggio
CBC minaccia 2 Riarrangiamento blocchi cifrati Per prevenire attacchi di questo tipo,
basati sul riarrangiamento dei blocchi cifrati, tale da preservare il CRC originario
CBC minaccia 2 Riarrangiamento blocchi cifrati Per chi progetta protocolli crittografici sicuri, una modalit di cifratura
ad un singolo step e che protegge sia la confidenzialit che l'autenticit di un messaggio
OFB Cifratura
in generale si ha: bi = E(K, bi-1)
il one-time pad (keystream) risultante dato dalla sequenza la cifratura con OFB consiste nel sommare (XOR ) il messaggio m con OTP
se m ha lunghezza lm bit si considereranno soltanto lm bit di OTP OTP = OTP(K, IV) = b0|b1|b2| |bi|bi+1|
IV
OTP gen m
OTP = b0|b1|b2|
c = OTP m
OFB Decifratura
il risultato della cifratura c = OTP m viene trasmesso insieme a IV; la lunghezza lc di c coincide con lm la decifratura come segue
il destinatario riceve IV e conoscendo K calcola lo stesso onetime pad OTP = OTP(K, IV) il messaggio m si ottiene sommando (XOR ) il flusso cifrato c con lc bit di OTP
IV
OTP gen c
OTP = b0|b1|b2|
m = OTP c
OFB Vantaggi
Il one-time pad OTP pu essere generato in anticipo
prima che sia noto il messaggio m da cifrare; una volta ottenuto m necessario soltanto effettuare la somma (XOR ) con il one-time pad
eseguibile in modo estremamente veloce
se qualche bit del testo cifrato dovesse corrompersi, soltanto i corrispondenti bit del testo in chiaro sarebbero corrotti
diversamente dalla modalit CBC dove se cn fosse corrotto mn sarebbe completamente corrotto e mn+1 sarebbe corrotto in corrispondenza dei medesimi bit di cn
OFB Vantaggi
un messaggio m pu arrivare a pezzi di lunghezza arbitraria, e
ogni volta che arriva un pezzo, il corrispondente testo cifrato pu essere immediatamente trasmesso in CBC invece, se il messaggio arriva un byte alla volta, per la cifratura comunque necessario attendere che un blocco di 64 bit (o un multiplo intero di 8 byte) sia completo ci pu comportare lattesa di altri 7 byte o di aggiungere dei bit di riempimento, cosa che aumenta la quantit di dati da trasmettere
OFB Svantaggi
se un avversario conoscesse il testo in chiaro m e quello cifrato c potrebbe modificare il testo in chiaro a piacimento semplicemente
sommando il testo cifrato con il testo in chiaro noto, e sommando il risultato con un qualsiasi messaggio m che desidera sostituire ad m cio, lavversario dovrebbe modificare il testo cifrato nel seguente modo c = c m m verificare che decifrando c anzich c si ottiene m anzich m
k-bit OFB
In generale la modalit OFB consente di generare flussi di pezzi da k bit
quanto visto prima corrisponde al caso in cui k = 64 bit
k-bit OFB
k-bit OFB
La modalit k-bit OFB funziona nel seguente modo (si descriver la versione data in [DES81]):
linput I0 al modulo di cifratura DES inizializzato a IV; cio I0 = IV
se IV ha meno di 64 bit, vengono inseriti degli 0 di riempimento a sinistra (cifre pi significative)
il primo pezzo b0 di OTP si ottiene selezionando k bit dalloutput O0 = E(K, I0) di DES (una quantit a 64 bit)
da un punto di vista crittografico non ha importanza come siano scelti tali bit da O0; [DES81] specifica che devono essere i k bit pi significativi
k-bit OFB
li-esimo pezzo bi si ottiene selezionando i k bit pi significativi delloutput Oi = E(K, Ii) di DES ove linput Ii stato ottenuto da Ii-1 eseguendo due operazioni:
una traslazione a sinistra di k bit, e un inserimento di bi-1 nei k bit meno significativi di I1 (k bit pi a destra)
k-bit CFB
invece, in CFB i k bit di Ii sono i k bit di testo cifrato del blocco precedente, cio i k bit di ci-1
in CFB il one-time pad non pu essere generato prima che il messaggio noto (a differenza di OFB)
CFB Vantaggi
Con OFB o CBC
se si ha una perdita di caratteri in trasmissione (testo cifrato)
ad esempio, se nel flusso cifrato c1, c2, c3, , cn, si perde il carattere ck a destinazione si ottiene la sequenza c1, c2, ck-1, ck, , cn-1 ove ck = ck+1, ck+1 = ck+2, ck+i = ck+i+1
CFB Vantaggi
lintera parte restante della trasmissione risulta indecifrabile
poich mi = ci bi e bi = bi(K, IV) cio bi non dipende dalla sequenza cifrata
CFB Vantaggi
ci perch bi = bi(K, ci-1) cio bi derivato dalla sequenza di caratteri cifrati discorsi analoghi valgono nel caso dellaggiunta di un byte al flusso cifrato
i messaggi cifrati con CFB offrono pi protezione di CBC e di OFB rispetto ad eventuali manomissioni
nel caso di 8-bit CFB un avversario pu modificare ogni singolo byte in modo predittivo, ma con leffetto collaterale di non poter prevedere/controllare i successivi 8 byte discorsi simili valgono per 64-bit CFB
CFB Vantaggi
a differenza di CBC, non sono possibili attacchi basati sul riarrangiamento di blocchi
tuttavia, intere sezioni del messaggio possono essere riarrangiate rendendo indecifrabili le parti corrispondenti ai punti di giuntura
CFB Svantaggi
8-bit CFB ha lo svantaggio che ogni byte di input richiede unoperazione DES inizialmente CFB fu concepito per essere utilizzato con un numero arbitrario k di bit per pezzo
con k < dimensione di un blocco completo (64 bit per DES) nella pratica k pari a 1 byte oppure coincide con la dimensione piena (full-block) dei blocchi del modulo di cifratura
quando utilizzato in modalit full-block le prestazioni di CFB sono comparabili a quelle di ECB, CBC, e OFB
CFB Svantaggi
come OFB consente di cifrare ed inviare ciascun byte del messaggio non appena noto tuttavia, a differenza di OFB non in grado di anticipare il calcolo del one-time pad in fine, in grado di rilevare delle alterazioni meglio di OFB, ma non bene quanto CBC
CTR Vantaggi
Il vantaggio principale che, come OFB,
il one-time pad pu essere pre-calcolato, e la cifratura consiste in un semplice XOR
CTR Svantaggio
Come in OFB (e in tutti i cifrari a flusso), nella modalit CTR si ha una perdita di sicurezza se messaggi diversi sono cifrati con la stessa coppia K, IV
un avversario potrebbe ottenere la somma (XOR ) dei testi in chiaro se somma (XOR ) due testi cifrati ottenuti con la stessa coppia K, IV
ma non offrono una buona protezione dellintegrit/autenticit di un messaggio cio non proteggono da ascoltatori che lo modificano in modo non rilevabile
nel seguito useremo i termini integrit e autenticit in modo intercambiale; se il messaggio integro non stato modificato dal momento in cui stato generato il messaggio autentico
Residuo CBC
Un modo standard per assicurare lautenticit di un messaggio m
(cio per proteggersi da modifiche di m non rilevabili)
calcolare il CBC di m, ma inviare soltanto lultimo blocco cifrato (64 bit) e il messaggio m in chiaro lultimo blocco cifrato detto residuo CBC
Residuo CBC
il calcolo del residuo CBC richiede la conoscenza della chiave segreta K se un avversario modifica m in m resCBC(m) sar diverso da resCBC(m)
c solo 1 possibilit su 264 che siano uguali
lavversario non in grado di calcolare resCBC(m) senza conoscere la chiave segreta K il destinatario del messaggio
calcola il residuo del messaggio in chiaro ricevuto, e verifica che sia uguale al residuo ricevuto se i residui coincidono deduce che (con elevata probabilit) il residuo ricevuto stato calcolato da qualcuno che conosce la chiave segreta il mittente autentico
Residuo CBC
In molte applicazioni non necessario proteggere la confidenzialit, ma solo lautenticit
in questi casi si pu trasmettere il testo in chiaro pi il residuo
inviare il residuo CBC in aggiunta al messaggio cifrato con CBC non aumenta la sicurezza
Sorge un dubbio!
possibile assicurare confidenzialit e autenticit inviando semplicemente il messaggio cifrato con CBC?
per autenticit (integrit) intendiamo che un calcolatore in grado di rilevare automaticamente se il messaggio stato alterato
Via il dubbio!
Usando CBC da solo, non possibile rilevare in modo automatico eventuali modifiche di un messaggio
ogni stringa di bit, comunque venga generata, viene decifrata in qualcosa, e gli ultimi 64 bit di quella stringa sono il suo residuo CBC corretto chiunque intercetta il testo cifrato pu modificarlo, e un computer a destinazione decifrer il risultato,
che potrebbe essere assolutamente privo di senso,
Via il dubbio!
un utente umano si renderebbe conto se il testo cifrato stato alterato
a meno che la modifica non sia stata eseguita da un avversario in modo pulito
Un altro tentativo
Unalternativa potrebbe essere:
calcolare il residuo CBC del messaggio resCBC(m), allegarlo al testo in chiaro m, e cifrare con CBC la concatenazione m|resCBC(m)
Un altro tentativo
Risposta: neanche questa soluzione funziona!
c7 = resCBC(m) = E(K, c6 c6) = E(K, 000 0) cio il residuo CBC una stringa ottenuta cifrando con la chiave segreta una stringa di 64 bit a 0 il residuo CBC non dipende da m non pu offrire alcune protezione di integrit
Ultimo tentativo
Supponiamo di
calcolare un checksum non crittografico CRC(m) (ad esempio, un CRC) del messaggio m e di appenderlo alla fine di m, e di cifrare con CBC il tutto: m| CRC(m)
Ultimo tentativo
Risposta: questa soluzione quasi funziona!
vulnerabile ad attacchi molto sottili se il CRC corto daltro canto checksum non crittografici pi lunghi sono sospetti
Tale soluzione
probabilmente sicura
sebbene non sia stata adeguatamente studiata, visto che gli schemi moderni usano hash cifrati con chiavi
richiede due fasi crittografiche (come nel caso della cifratura CBC pi il residuo CBC con chiavi distinte), ma pi efficiente se la funzione di hash pi veloce dellalgoritmo di cifratura
ha senso applicare
la funzione di decifratura D(K, m) al testo in chiaro m per cifrarlo e poi applicare la funzione di cifratura E(K, D(K, m)) per decifrare quanto ottenuto riottenendo il testo in chiaro m
K1 m E( )
K2 D( )
K1
E( ) c
Decifratura EDE
La decifratura EDE semplicemente il processo inverso K1 c D( ) K2 E( )
K1
D( )
Alcune domande
Per quale motivo 3DES e il corrispondente cifrario a flusso sono stati definiti come appena specificato? Si potevano prendere delle decisioni diverse:
1. si optato per tre cifrature, ma potevano essere due o pi; perch proprio tre? 2. perch le tre funzioni sono E( )-D( )-E( ) e non ad esempio E( )-E( )-E( ) o E( )-E( )-D( )? 3. perch il concatenamento CBC viene fatto esternamente (outside) e non internamente (inside)?
Quante cifrature?
Ovviamente, pi volte un blocco cifrato pi elevata la sua sicurezza
ma ogni cifratura computazionalmente costosa fondamentale che una schema di cifratura sia efficiente oltre che efficace
lobiettivo garantire un livello di sicurezza elevato con il minimo sforzo computazionale
K plaintext E( )
K E( ) ciphertext
K
plaintext D( )
K
D( ) ciphertext
K1 plaintext E( )
K2 E( ) ciphertext
tuttavia, esiste un attacco pi sofisticato che richiede approssimativamente soltanto un raddoppio del costo computazionale necessario a violare DES (singolo)
si tratta di un attacco difficilmente praticabile, ma il fatto che esista spinge a ricercare schemi di cifratura pi sicuri di fatto la cifratura DES con due chiavi non considerata sicura
Tuttavia, lesistenza di un attacco una ragione sufficiente per decidere di usare DES triplo
DES doppio potrebbe essere sufficiente, ma DES triplo pi sicuro e non molto pi complesso da realizzare si usa DES triplo
alcuni sistemi implementano 3DES con tre chiavi indipendenti, ma questo non lo standard
lalternativa sarebbe
cifrare completamente il messaggio con K1 e CBC, poi decifrare il risultato con K2 e CBC, e in fine cifrare di nuovo quanto ottenuto con K1
invertendo il bit x nel blocco cifrato cn-1 ci comporta per leffetto collaterale di modificare in modo imprevedibile il blocco mn-1
la possibilit di sfruttare questa debolezza dipende dal tipo di applicazione
CBC interno presenta delle sottili vulnerabilit se un avversario pu esaminare loutput e fornire del testo in chiaro scelto e IV un altro vantaggio di CBC interno riguarda lefficienza
triplicando luso di hardware e pipeline per le cifrature si pu ottenere complessivamente una velocit pari a quella di una singola cifratura con CBC esterno ci non possibile
Bibliografia
[DES81] DES Modes of Operation, FIPS PUB 81, National Bureau of Standards, U.S. Department of Commerce, 1981. [KPS02] C. Kaufman, R. Perlman, M. Speciner. Network Security Private Communication in a Public World. Prentice Hall. [PFL08] C. P. Pfleeger, S. L. Pfleeger. Sicurezza in Informatica. Pearson, Prentice Hall. [STA07] W. Stallings. Sicurezza delle reti. Pearson, Prentice Hall. [Wiki-it] http://it.wikipedia.org/wiki/ [Wiki-en] http://en.wikipedia.org/wiki/ [ISECOM] Institute for Security and Open Methodologies