Sei sulla pagina 1di 109

Modalit Operative dei Cifrari a Blocchi (Modes of Operation)

Luca Grilli

Modalit Operative dei Cifrari a Blocchi

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

come si procede se necessario cifrare dei messaggi di lunghezza arbitraria/diversa?

Si vedr inoltre come si generano dei MAC (Message Authentication Code)


sfruttando la crittografia a chiave segreta

Modalit Operative dei Cifrari a Blocchi

CIFRARE MESSAGGI DI GRANDI DIMENSIONI

Cifrare messaggi di grandi dimensioni


Come possibile cifrare messaggi di dimensioni superiori a 64 bit?
Sono state proposte diverse modalit operative dei cifrari a blocchi
cio come utilizzare i cifrari a blocchi nel caso di messaggi di lunghezza maggiore di quella di un singolo blocco

le modalit pi conosciute e che verranno descritte di seguito sono


Electronic Code Book (ECB) Cipher Block Chaining (CBC) k-Bit Cipher FeedBack Mode (CFB) k-Bit Output FeedBack Mode (OFB)

Cifrare messaggi di grandi dimensioni


una modalit operativa pi recente, che potrebbe essere importante in futuro, il

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

Electronic Code Book (ECB)


questa modalit consiste nel fare la cosa pi ovvia; corrisponde, in genere, alla soluzione peggiore

il messaggio viene decomposto in blocchi da 64 bit


inserendo eventualmente dei bit di padding nellultimo blocco al fine di riempirlo

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

Electronic Code Book (ECB)


ELECTRONIC CODE BOOK ENCRYPTION

ELECTRONIC CODE BOOK DECRYPTION

Problemi di sicurezza in ECB


La modalit operativa ECB introduce una serie di problemi non presenti nel cifrario a blocchi
se il messaggio contiene due blocchi di 64 bit identici anche i corrispondenti blocchi cifrati saranno identici
ci fornisce delle informazioni aggiuntive sul testo in chiaro che un ascoltatore pu sfruttare ad esempio, supponiamo che l'ascoltatore sappia che il testo in chiaro contiene l'elenco, ordinato alfabeticamente, degli impiegati e dei relativi salari inviato dall'amministrazione all'ufficio paghe

File con i salari


Cognome Bianchi Nome Walter Posizione Impiegato Salario () 18.000,00

Neri Rossi Verdi Viola

Marcello Carlo Dario Saverio

Top Manager Project Manager Tecnico Presidente

70.000,00 40.000,00 25.000,00 120.000,00

suddivisione in blocchi

Problemi di sicurezza in ECB


supponiamo inoltre che ogni riga del file sia lunga esattamente 64 byte (8 blocchi da 8 byte), e che i vari blocchi risultino suddivisi in modo tale che alcuni contengono la codifica della cifra decimale pi significativa del campo salario; migliaia di dollari/euro comparando i testi cifrati, lascoltatore oltre a dedurre quanti dipendenti hanno lo stesso salario, pu anche dedurre quanti dipendenti hanno uno stipendio nello stesso range (ordine di 10 dollari) se ci sono complessivamente pochi range salariali, lascoltatore pu dedurre a quale categoria di dipendente corrisponda un dato blocco cifrato

Problemi di sicurezza in ECB


inoltre, se lascoltatore un impiegato, pu sostituire il blocco cifrato di un altro dipendente (un manager) al suo blocco cifrato (dedotto in base allordine e alla numerosit della sua classe salariale)

ECB ha due serie debolezze


qualcuno analizzando diversi blocchi cifrati potrebbe dedurre (inferire) informazioni sfruttando le ripetizioni di alcuni blocchi cifrati, e/o potrebbe riarrangiare/modificare i blocchi cifrati a proprio vantaggio

per tali ragioni ECB raramente usato

Cipher Block Chaining (CBC)


CBC non presenta i problemi di ECB
a due blocchi in chiaro identici non corrispondono due blocchi cifrati identici per comprendere CBC conviene prima considerare il seguente esempio che ne condivide lidea base
RANDOMIZED ELECTRONIC CODE BOOK ENCRYPTION

CBC Idea base


per ogni blocco di testo in chiaro mi viene generato un numero random a 64 bit ri mi e ri vengono sommati ( XOR) il risultato viene cifrato con la chiave segreta i blocchi cifrati ci e i numeri random, in chiaro, ri vengono trasmessi per riottenere il testo in chiaro, vengono prima decifrati i blocchi ci con la chiave segreta poi i blocchi risultanti vengono sommati ( XOR) con i numeri random ri

CBC Idea base


lesempio appena visto molto inefficiente
linformazione da trasmettere duplicata; per ogni blocco va trasmesso il corrispondente numero random

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

CBC Idea base


ancora peggio, se lavversario conosce ciascun mi, pu modificare mi in modo predittivo cambiando il corrispondente numero random ri

Modalit operativa CBC


CBC genera i suoi propri numeri random
usa ci come numero random ri+1
cio, usa il precedente blocco cifrato come numero random da sommare (XOR ) al blocco di testo in chiaro successivo

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

Modalit operativa CBC


CIPHER BLOCK CHAINING ENCRYPTION

CIPHER BLOCK CHAINING DECRYPTION

Modalit operativa CBC in formule


CIFRATURA
c1 = E(K, (IV m1)) ci = E(K, (ci-1 mi)) per i > 1

DECIFRATURA
m1 = D(K, c1) IV mi = D(K, ci) ci-1 per i > 1

Modalit operativa CBC


la decifratura semplice essendo lor-esclusivo unoperazione che coincide con la propria inversa essendo il costo della somma (XOR ) trascurabile rispetto al costo della cifratura a chiave segreta la cifratura con CBC ha le stesse prestazioni della cifratura con ECB
eccetto il costo delle generazione e trasmissione di IV

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

Utilit del vettore di inizializzazione


tuttavia, in alcuni casi, lassenza di IV riduce la sicurezza
ad esempio, si supponga che il file cifrato contenente i salari dei dipendenti sia trasmesso settimanalmente in assenza di IV, un ascoltatore potrebbe verificare se il testo cifrato differisce da quelle della precedente settimana, e potrebbe determinare la prima persona il cui salario cambiato un altro esempio quello di un generale che invia giornalmente delle informazioni segrete dicendo continue holding your position

Utilit del vettore di inizializzazione


il testo cifrato sarebbe ogni giorno lo stesso, finch il generale decide di cambiare ordine, inviando il messaggio start bombing il testo cifrato cambierebbe immediatamente, allertando il nemico

Utilit del vettore di inizializzazione


Un vettore di inizializzazione scelto randomicamente garantisce che
anche se lo stesso messaggio inviato ripetutamente il corrispondente testo cifrato risulta ogni volta differente, e

previene attacchi allalgoritmo di cifratura di tipo testo in chiaro selezionato


anche quando un avversario pu fornire del testo in chiaro al CBC

CBC minaccia 1 Modifica dei blocchi cifrati


Luso di CBC non elimina il problema che qualcuno possa modificare il messaggio in transito
cambia la natura della minaccia un avversario non pu pi vedere ripetizioni di blocchi cifrati, e non pu pi copiare/spostare blocchi cifrati; ad esempio per scambiare il salario di due dipendenti

un avversario pu ancora modificare il testo cifrato in modo predittivo


cosa potrebbe succedere se modificasse un blocco di testo cifrato, ad esempio cn?

CBC minaccia 1 Modifica dei blocchi cifrati


da mn+1 = D(K, cn+1) cn si evince che una modifica di cn pu avere un effetto prevedibile su mn+1 ad esempio, cambiando il terzo bit di cn cambia il terzo bit di mn+1 chiaramente essendo anche mn = D(K, cn) cn-1 lavversario non pu prevedere quale possa essere il nuovo valore di mn, molto probabilmente la modifica di cn corrompe completamente il blocco in chiaro mn

CBC minaccia 1 Modifica dei blocchi cifrati


ad esempio, supponiamo che un avversario (Trudy) sappia che una data sequenza di blocchi cifrati, del file dei salari, corrispondano alla riga contenente i suoi dati personali se Trudy vuole aumentare il suo salario di 10K, e se sa che lultimo byte di m7 corrisponde alle decine di migliaia nella codifica decimale 00000010, per darsi 10K in pi deve semplicemente cambiare il bit meno significativo di c6; da m7 = D(K, c7) c6
Tacker m1 m2 Trudy m3 Project Manager m4 m5 m6 m7 24.122,00 m8

CBC minaccia 1 Modifica dei blocchi cifrati


tuttavia, Trudy non sar pi in grado di predire cosa apparir nella voce Posizione, infatti, da m6 = D(K, c6) c5, impraticabile prevedere leffetto della modifica di c6 su m6 se il file decifrato fosse letto da una persona umana, questa potrebbe insospettirsi della presenza di simboli strani nel campo Posizione, se invece il file decifrato viene elaborato da un programma lattacco potrebbe non essere rilevato
Tacker m1 m2 Trudy m3 Project Mana?#j$h* m4 m5 m6 m7 34.122,00 m8

CBC minaccia 1 Modifica dei blocchi cifrati

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

CBC minaccia 2 Riarrangiamento blocchi cifrati

Si supponga che Trudy conosca


il testo in chiaro e, il corrispondente testo cifrato di qualche messaggio, cio
m1, m2, ..., mn e IV, c1, c2, ..., cn conosce anche il blocco decifrato di ciascun ci, da D(K, ci) = ci-1 mi

CBC minaccia 2 Riarrangiamento blocchi cifrati


da queste informazioni, Trudy
pu considerare ciascun ci come un "building block" e costruire un flusso cifrato usando ogni combinazione di ci ed essere in grado di calcolare quale sar il corrispondente testo in chiaro

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


supponiamo che sia stato scelto un CRC a 32 bit c' 1 possibilit su 232 che il CRC coincida con quello corretto supponiamo che a Trudy non interessi quale possa essere il nuovo messaggio di testo in chiaro (che potrebbe essere completamente indecifrabile), ma interessi solamente che il nuovo messaggio manomesso sia accettato dal computer ricevente sapendo che viene eseguito un controllo di tipo CRC Trudy pu provare a costruire molti flussi cifrati combinando in modi diversi i blocchi c1, c2, ..., cn e pu calcolare il risultante testo in chiaro per ciascuno di essi, e

CBC minaccia 2 Riarrangiamento blocchi cifrati


pu poi testare se il testo in chiaro risultante ha un CRC corretto mediamente serviranno 231 tentativi
Che male potrebbe fare Trudy modificando un messaggio, senza controllarne il contenuto, in modo tale che sia accettato dal computer ricevente? a) forse Trudy soltanto malizioso, e vuole distruggere alcuni dati che vengono caricati attraverso la rete b) in realt, c' un modo sottile di controllare, seppur in misura ridotta, il contenuto del messaggio modificato

CBC minaccia 2 Riarrangiamento blocchi cifrati


supponiamo che Trudy sposti blocchi contigui; ad esempio, cn e cn+1 vengono spostati in qualche altro posto il blocco originale mn+1 apparir in unaltra posizione se mn+1 contiene il salario del presidente, Trudy potrebbe scambiare i blocchi in modo da cambiarlo con il suo, ma poi dovr modificare molto probabilmente gran parte del messaggio restante per garantire che il CRC risulti invariato

CBC minaccia 2 Riarrangiamento blocchi cifrati Per prevenire attacchi di questo tipo,
basati sul riarrangiamento dei blocchi cifrati, tale da preservare il CRC originario

potrebbe essere usato un CRC a 64 bit


ci sicuramente sufficiente se lattacco al CRC, nellambito di un CBC, di tipo a forza bruta

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

stata per molti anni una sorta di Santo Graal da ricercare!

Output FeedBack Mode (OFB)


LOFB un cifrario a flusso
la cifratura consiste nel sommare (XOR ) il messaggio con il keystream (o one-time pad) generato da OFB stesso supponiamo che il keystream sia ottenuto generando singoli blocchi di 64 bit alla volta; un possibile modo per generarlo il seguente
viene prima generato un numero random IV (Initialization Vector) di 64 bit il primo blocco del keystream coincide con IV: b0 = IV il secondo blocco b1 si ottiene cifrando b0 con la chiave segreta; in formule b1 = E(K, b0), e cos via

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)

Cipher FeedBack Mode (CFB)


La modalit CFB molto simile a OFB
viene prodotto un one-time pad che viene sommato (XOR ) con pezzi di k bit del messaggio
generando, uno alla volta, singoli pezzi di k bit

k-bit CFB

Cipher FeedBack Mode (CFB)


in OFB i k bit meno significativi dellinput Ii del modulo di cifratura DES sono i k bit di bi-1
sono parte delloutput Oi-1 della cifratura DES del blocco precedente

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)

nella modalit a k-bit ragionevole assegnare a k un valore diverso da 64 bit


una scelta sensata k = 8 bit

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

o se extra caratteri sono aggiunti al flusso cifrato


ad esempio, se nel flusso cifrato c1, c2, c3, , cn, si aggiunge il carattere c* dopo di ck-1 a destinazione si ottiene la sequenza c1, c2, ck-1, ck, , cn+1 ove ck = c*, ck+1 = ck, 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

invece, con 8-bit CFB, si ha un effetto risincronizzante


se un byte ci perso in trasmissione il corrispondente testo in chiaro mi perso, e i successivi 8 byte mi+1, , mi+8 risulteranno indecifrabili, ma dal byte mi+9 in poi il testo in chiaro sar corretto

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

CounTeR Mode (CTR)


CTR simile a OFM: un one-time pad viene generato e sommato (XOR ) con i dati Differisce da OFM perch
non concatena ciascun blocco di one-time-pad con il precedente, ma incrementa IV e poi cifra quanto ottenuto per ottenere il prossimo blocco di one-time pad

CounTerR Mode (CTR)

CTR Vantaggi
Il vantaggio principale che, come OFB,
il one-time pad pu essere pre-calcolato, e la cifratura consiste in un semplice XOR

inoltre, come in CBC,


la decifratura di un messaggio pu iniziare da un qualunque blocco
non obbligata ad iniziare dal primo blocco CRT lideale in applicazioni che richiedono la cifratura di file/memorie ad accesso casuale (sottoinsiemi di dati prelevati ed ordine non prevedibili)

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

Modalit Operative dei Cifrari a Blocchi

GENERARE MESSAGE AUTHENTICATION CODE (MAC)

Generare MAC Introduzione


Un sistema di cifratura a chiave segreta pu essere usato per generare un MAC cio una checksum cifrato
MAC sta per Message Authentication Code
un sinonimo di MAC MIC (Message Integrity Code) il termine MAC pi popolare; nella PEM (Privacy Enhanced Mail) viene usato il termine MIC

Generare MAC Introduzione


Le modalit operative CBC, CFB, OFB, e CTR
offrono una buona protezione della confidenzialit
un messaggio intercettato difficilmente decifrabile

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

Tuttavia, assai frequente la necessit di proteggere contemporaneamente confidenzialit e autenticit


se il messaggio m un singolo blocco, ci pu ottenersi con una semplice cifratura a chiave segreta nel caso di un messaggio multi blocco qual la trasformazione equivalente?

Assicurare confidenzialit e autenticit


Ricapitolando, dato un messaggio m
per assicurare la confidenzialit di m basta cifrarlo in modalit CBC per assicurare lautenticit di m basta inviare resCBC(m) pi m in chiaro

a prima vista la soluzione riportata sotto sembrerebbe assicurare confidenzialit e autenticit

Assicurare confidenzialit e autenticit


In realt tale soluzione chiaramente errata!
consiste nellinviare
il messaggio cifrato nella modalit CBC: ECBC(K, IV, m) ripetendo soltanto lultimo blocco cifrato: resCBC(m)

chiunque voglia alterare il messaggio deve solo


modificare uno o pi blocchi cifrati con CBC e inviare il nuovo messaggio ripetendo due volte lultimo blocco cifrato

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,

senza essere consapevole che quanto ottenuto di fatto spazzatura

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

ma un computer non in grado di farlo se non si aggiunge un controllo di integrit

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)

Domanda: questa soluzione funziona?

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)

Domanda: questaltra soluzione funziona?

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

Qual la soluzione sicura?


Viene considerata una soluzione sicura proteggere
la confidenzialit di un messaggio m cifrandolo con CBC, e lintegrit di m con un residuo CBC a patto che vengano usate due chiavi distinte
protezione confidenzialit: ECBC(K, IV, m) protezione integrit: resCBC(K, IV, m) con K K

chiaramente ci comporta una notevole perdita di efficienza

Qual la soluzione sicura?


il costo computazionale duplicato rispetto al costo della sola cifratura CBC
sono state proposte tecniche pi rapide, ma generalmente presentano sempre dei sottili difetti crittografici se tali difetti siano seri o meno dipende dal tipo di applicazione e dallintelligenza dellavversario

alcune di queste tecniche sono


CBC con un Checksum Crittografico Debole Cifratura CBC e Residuo CBC con Chiavi Correlate CBC con Hash Crittografico Offset Codebook Mode (OCB)

CBC con un Checksum Crittografico Debole


Visto che
luso di checksum non crittografici in CBC risulta poco sicuro, e checksum crittografici di qualit sono computazionalmente dispendiosi

stato proposto di usare checksum crittografici deboli


complessivamente dovrebbe essere una soluzione sicura
lo sforzo computazionale per violare il checksum debole va moltiplicato per le limitazioni derivanti dal fatto che usato in una cifratura CBC

CBC con un Checksum Crittografico Debole


Sebbene non ci sono ragioni per sostenere che tale schema sia insicuro, CBC con checksum crittografici deboli non ha riscosso successo
si consideri che Kerberos IV usa un checksum crittografico debole per la protezione dintegrit fuori da uno schema di cifratura e sembra che non sia mai stato violato!

Cifratura CBC e Residuo CBC con Chiavi Correlate


anzich usare due chiavi completamente indipendenti per la cifratura CBC e per il calcolo del residuo un trucco usato in Kerberos V impiegare una versione modificata della chiave in una delle due operazioni
cambiare un singolo bit dovrebbe essere sufficiente, ma Kerberos invece somma (XOR ) la chiave con la costante a 64 bit F0F0F0F0F0F0F0F016 tale soluzione preserva la parit della chiave e mai trasforma una chiave non-debole in una chiave debole

Cifratura CBC e Residuo CBC con Chiavi Correlate


il fatto di avere una chiave matematicamente correlata allaltra
in alternativa alla scelta di due numeri random come chiavi

non introduce particolari debolezze, ma non introduce neanche particolari vantaggi


in generale, distribuire una coppia di chiavi non pi difficile di distribuirne solo una, e il fatto che due chiavi siano matematicamente correlate non riduce il carico computazionale, lunico vantaggio nel derivare una chiave dallaltra lo si ha quando si dispone di un sistema/servizio per la distribuzioni di chiavi singole che non estendibile al caso di coppie di chiavi

CBC con Hash Crittografico


Un altro approccio
concatenare un messaggio m con il suo un hash crittografico h(m), tipicamente 128 bit, e cifrare con CBC il tutto: m|h(m)

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

Offset CodeBook Mode (OCB)


OCB uno dei molti modi che permette di ottenere cifratura e protezione di integrit effettuando soltanto una singola fase di cifratura
OCB e altre tecniche simili sono molto recenti per avere un supporto di studi e test, spesso sono gravate da license/patenti, ma sembra molto probabile che una o pi di queste tecniche diventi alla fine il modo standard per ottenere protezione di integrit e di confidenzialit

Modalit Operative dei Cifrari a Blocchi

CIFRATURA MULTIPLA DES

Cifratura multipla EDE o 3DES


In generale, ogni schema di cifratura pu essere reso pi sicuro ricorrendo alla cifratura multipla. Nel caso di DES, universalmente ritenuta sicura la cifratura multipla nota come
EDE: Encrypt-Decrypt-Encrypt (o 3DES, triplo DES)
c = E(K1, D(K2, E(K1, m))) = (E1 D2 E1)(m) m = E(K1, D(K2, E(K1, c))) = (E1 D2 E1)(c)

la cifratura multipla EDE


di fatto un meccanismo per incrementare la lunghezza della chiave DES sebbene sia stata introdotta per arrivare ad uno standard sicuro basato su DES, in linea di principio applicabile anche ad altri schemi di cifratura, ed esempio ad IDEA pi importante nel caso di DES; la chiave DES notoriamente considerata troppo corta

Cifratura multipla EDE o 3DES


Si visto che uno schema di crittografia presenta sempre due funzioni
note come cifratura e decifratura

Tali funzioni sono luna linversa dellaltra


in pratica, ciascuna
prende in input un blocco di dati m, e restituisce il corrispondente blocco offuscato c tale che, applicando a c laltra funzione si ottiene m

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

Cifratura multipla EDE o 3DES


in definitiva ha poco senso chiamare
E(K, m) funzione di cifratura, e D(K, m) funzione di decifratura

i ruoli di tali funzioni sono interscambiabili!


conviene chiamarle semplicemente funzione E( ) e funzione D( ) tuttavia, spesso si continuer a chiamarle funzione di cifratura e funzione di decifratura!

Cifratura multipla EDE o 3DES


Realizzare una cifratura multipla non banale
specie se si desidera anche ottenere un cifrario a flusso a partire da un cifrario a blocchi

Il metodo standard per usare EDE il seguente


vengono usate due chiavi (e non tre): K1 e K2 ogni blocco di testo in chiaro mi sottoposto
prima ad E1( ) cio viene eseguito E(K1, m) poi a D2( ) cio viene eseguito D(K2, E(K1, m)) e in fine ancora ad E1( ) cio viene eseguito E(K1, D(K2, E(K1, m)))

Cifratura multipla EDE o 3DES


Quanto ottenuto di fatto un nuovo schema di cifratura a chiave segreta
un blocco di 64 bit in input mappato in un altro blocco di 64 bit in output il processo invertibile se si conoscono le chiavi, altrimenti di fatto impraticabile risalire dalloutput allinput

K1 m E( )

K2 D( )

K1
E( ) c

Decifratura EDE
La decifratura EDE semplicemente il processo inverso K1 c D( ) K2 E( )
K1

D( )

EDE con CBC outside


Per ottenere un cifrario a flusso a partire dal cifrario a blocchi EDE, viene usata la modalit operativa CBC outside
cio le tre funzioni E1( )-D2( )-E1( ) vengono applicate a ciascun blocco, ma il concatenamento CBC viene eseguito soltanto una volta

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)?

EDE con CBC inside


Cifrario a flusso ottenibile con un concatenamento CBC interno
cio si considerano una cascata di due concatenamenti CBC
prima, utilizzando la funzione E1( ), poi utilizzando D2( ) e in fine utilizzando ancora E1( )

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

proviamo a valutare il rapporto sicurezza / costo computazionale nei seguenti casi


cifratura doppia con la stessa chiave cifratura doppia con due chiavi diverse cifratura tripla con due chiavi diverse cifrare tripla con tre chiavi diverse

Cifratura doppia con una stessa chiave


Supponiamo di non volere il disagio di leggere in due chiavi DOMANDA: Cifrare due volte consecutive con la stessa chiave aumenta la sicurezza?

K plaintext E( )

K E( ) ciphertext

Cifratura doppia con una stessa chiave


RISPOSTA
cifrare due volte con la stessa chiave K risulta non essere molto pi sicuro di eseguire una singola cifratura con K
una ricerca esaustiva nello spazio della chiave richiede ancora, nel caso peggiore, 256 tentativi ogni tentativo ha un costo computazionale duplicato
lavversario deve eseguire una decifratura doppia tuttavia, raddoppiare lo sforzo computazionale non considerato in generale un aumento significativo della sicurezza soprattutto tenendo conto che anche lefficienza risulta essere dimezzata

Cifratura doppia con una stessa chiave


DOMANDA: e riguardo agli schemi riportati sotto?
si tratta sempre di una cifratura doppia con la stessa chiave K plaintext E( ) K plaintext D( ) K D( ) K E( ) ciphertext ciphertext

K
plaintext D( )

K
D( ) ciphertext

Cifratura doppia con due chiavi


Se cifrare due volte consecutive, con due chiavi diverse K1 e K2, avesse leffetto di raddoppiare la chiave (da 56 a 112 bit) allora la cifratura doppia sarebbe sufficiente, ma non cos! Supponiamo di eseguire una cifratura doppia, con due chiavi K1 e K2, su un singolo blocco da 64 bit
trascuriamo ogni schema di concatenamento e concentriamoci sui cifrari a blocchi

K1 plaintext E( )

K2 E( ) ciphertext

Cifratura doppia con due chiavi


in apparenza, sembra che luso di due chiavi diverse equivalga a raddoppiare la lunghezza della chiave
un attacco brute force deve indovinare sia K1 che K2 per ottenere il testo in chiaro da quello cifrato

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

Attacco a DES doppio


1. Si assuma che un avversario disponga di qualche coppia plaintext, ciphertext
m1, c1, m2, c2, m3, c3 dove ci = E(K2, E(K1, mi)) ottenuto eseguendo una cifratura doppia di mi con K1 e K2 si desidera trovare le chiavi K1 e K2 ogni entry una coppia Ki, r = E(Ki, m1) ordinare la tabella in base al valore numerico di r ogni entry una coppia Ki, r = D(Ki, c1) ordinare la tabella in base al valore numerico di r

2. Costruire prima una tabella A con 256 entry

3. Costruire poi una seconda tabella B con 256 entry

Attacco a DES doppio


4. Ricercare nelle due tabelle (ordinate) le entry corrispondenti, cio con lo stesso valore di r
ad es. KA, r della tabella A e KB, r della tabella B ogni corrispondenza fornisce KA come candidato di K1 e KB come candidato di K2 poich r = E(KA, m1) e r = D(KB, c1) c1 = E(KB, E(KA, m1))

5. In generale, si otterranno pi di una coppia candidata


per ogni coppia candidata va eseguito il test rispetto m2, c2, se ci sono ancora pi coppie candidate va eseguito il test rispetto m3, c3 e cos via la coppia corretta quella che passa tutti i test, mentre quelle errate dovranno fallire qualche test

Attacco a DES doppio


Lattacco a DES doppio appena descritto difficilmente praticabile
dover costruire una tabella di 256 entry sicuramente scoraggiante

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

Attacco a DES doppio Stima dei tentativi


Quante coppie candidate ci saranno mediamente dopo la prima ricerca nelle due tabelle?
#cc1: numero di coppie candidate ottenute dopo la prima ricerca 264 possibili blocchi da 64 bit 256 entry in ciascuna tabella Pbt: probabilit che un blocco sia in una tabella Pbt = 256 / 264 = 1 / 28 Pc: probabilit che un blocco sia entrambe le tabelle (e che quindi identifichi una coppia candidata) Pc = 1/(28 28)= 1 / 216 #cc1 Pc numero blocchi = 264 / 216 = 248

Attacco a DES doppio Stima dei tentativi


ci sono circa 248 coppie candidate errate Pc2: probabilit che una coppia candidata soddisfi anche il secondo test Pc2 1/264 Pe2: probabilit di trovare un coppia candidata errata dopo il secondo test Pe2 248/264 pertanto, Pe3 248/2128 = 1 / 280 la probabilit di trovare un falso positivo dopo tre test di fatto nulla
dopo tre test si ottiene ununica coppia candidata che quella corretta

Cifratura tripla con solo due chiavi


3DES effettua una cifratura tripla Perch 3DES usa solo due chiavi?
molto probabilmente non si ha una maggiore sicurezza rispetto a DES doppio
K1 usata due volte

ormai opinione comune che usare K1 due volte sufficientemente sicuro


non necessario generare, trasmettere e memorizzare una terza chiave 112 bit di chiave mettono al riparo da attacchi di tipo brute force, e nessun attacco diverso da quello a forza bruta noto per EDE

alcuni sistemi implementano 3DES con tre chiavi indipendenti, ma questo non lo standard

Cifratura tripla con solo due chiavi


Una ragione esoterica per luso di due sole chiavi la seguente
in molte applicazioni (es. UNIX Password Hash) una propriet importante di un sistema crittografico che
data una coppia plaintext, ciphertext deve essere impraticabile trovare qualche chiave che mappa il testo in chiaro in quello cifrato (con blocchi di 64 bit e chiavi di 112 bit ci saranno molte di queste chiavi) usando EDE con tre chiavi diverse, semplice trovare una tripla di chiavi che mappa un dato testo in chiaro in un dato testo cifrato per, nel caso in cui K1 = K3 il problema diventa impraticabile (provarlo)

Cifratura tripla con solo due chiavi


Perch la chiave K2 usata in modalit di decifratura, cio nella funzione di decifratura D( ) di EDE?
tale scelta non serve ad aumentare il livello di sicurezza; si poteva usare K2 in modalit di cifratura ottenendo uno schema di tipo EEE una possibile ragione che se K1 = K2 EDE equivale ad un semplice DES
quindi possibile interoperare con un sistema DES semplice

CBC Outside vs Inside


Il 3DES comunemente usato nelle applicazioni esegue un concatenamento CBC esterno
ad ogni blocco viene applicata la cifratura tripla, e il concatenamento CBC viene fatto una sola volta sui blocchi cifrati

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

Quali sono le implicazioni di queste scelte?

CBC Outside vs Inside


Si visto che con CBC possibile
fare una modifica predittiva sul testo in chiaro mn
ad esempio invertire il bit x

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

Con CBC esterno, un avversario pu ancora sferrare questo tipo di attacco


il fatto che la cifratura fatta con un triplo DES del tutto ininfluente

CBC Outside vs Inside


un avversario che inverte il bit x di un blocco cifrato cn-1 modificher completamente e in modo imprevedibile il blocco di testo in chiaro mn-1 il blocco di testo in chiaro mn avr il bit x invertito e tutti i blocchi di testo in chiaro diversi da mn-1 e mn saranno invariati

CBC Outside vs Inside


Con CBC interno
una modifica ad un blocco cifrato cn altera in modo imprevedibile tutti i blocchi di testo in chiaro dal blocco mn fino alla fine del messaggio CBC interno pi sicuro di CBC esterno, e forse dovrebbe essere la scelta migliore tuttavia, in alcuni casi preferibile che la modifica di un blocco cifrato non si propaghi completamente nel resto del messaggio

CBC Outside vs Inside


sarebbe preferibile che lo schema di cifratura sia autosincronizzante
dopo un piccolo numero di blocchi corrotti, il testo in chiaro inizier ad essere nuovamente decifrato correttamente

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

CBC Outside vs Inside


Una ragione per la quale CBC esterno pi usato nonostante i suoi svantaggi che
la cifratura EDE pu considerarsi a tutti gli effetti un nuovo schema di cifratura (a chiave segreta) a blocchi che usa una chiave di 112 bit
pu essere utilizzata con ciascun metodo di concatenamento (OFB, ECB, CFB, CTR e CBC)

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