Modalità di funzionamento dei cifrari a blocchi

Incrittografialamodalità di funzionamento dei cifrari a blocchiè una serie di procedimenti standard di unalgoritmoche operi tramitecifratura a blocchiper garantire lasicurezzadi testi o messaggi di lunghezza a piacere.
Le modalità furono definite inizialmente dalNational Institute of Standards and Technology(NIST) nel 1980 con lo standardFIPS 81intitolatoData Encryption Standard modes of operationaffinché l'algoritmo di cifraturaDESpotesse essere applicato a una varietà di situazioni differenti.
Lo standard ebbe successivamente delle estensioni, codificate nella 800-38A.
Tali modalità possono essere utilizzate con qualsiasi algoritmo dicifratura simmetrica a blocchi, tra cuiTriple DESeAES.
La modalità ECB è la più semplice. Il testo in chiaro viene gestito 64bitper volta; ognuno dei blocchi di64 bitviene cifrato con la stessa chiave. Per messaggi più lunghi di 64 bit, si procede suddividendo il messaggio in blocchi di 64 bit, utilizzando, se necessario, bit di riempimento nell'ultimo blocco.
Per una data chiave, esiste un unico testo cifrato per ogni blocco di testo in chiaro di 64 bit; in altre parole, se nel messaggio compare più volte lo stesso blocco di 64 bit di testo in chiaro, verrà prodotto sempre lo stesso testo cifrato. Per questo motivo, il metodo ECB è ideale per limitati volumi di dati (ad esempio, la trasmissione di una chiave di cifratura), poiché per messaggi più lunghi potrebbe essere insicuro: se si trattasse di dover cifrare un messaggio molto strutturato, l'analisi crittograficapotrebbe sfruttarne le regolarità.
Per superare i limiti di sicurezza diECB, è necessario l'utilizzo di una tecnica in cui lo stesso blocco di testo in chiaro, se ripetuto, produce blocchi di testo cifrato differenti. Questo è ciò che accade con la modalità CBC, in cui l'input dell'algoritmo dicrittografiaè il risultato delloXORtra il blocco di testo in chiaro corrente e il blocco di testo cifrato precedente; per ciascun blocco viene utilizzata la stessa chiave.In fase di decifratura, ciascun blocco di testo cifrato passa attraverso l'algoritmo di decrittografia; il risultato subisce uno XOR con il blocco di testo cifrato precedente, per produrre il blocco di testo in chiaro.
Per dimostrare la correttezza del meccanismo, si può scrivere:
Cj=Ek[Cj−1⊕Pj]{\displaystyle C_{j}=E_{k}[C_{j-1}\oplus P_{j}]}
Quindi:
Dk[Cj]=Dk[Ek(Cj−1⊕Pj)]{\displaystyle D_{k}[C_{j}]=D_{k}[E_{k}(C_{j-1}\oplus P_{j})]}
Dk[Cj]=(Cj−1⊕Pj){\displaystyle D_{k}[C_{j}]=(C_{j-1}\oplus P_{j})}
Cj−1⊕Dk[Cj]=Cj−1⊕Cj−1⊕Pj=Pj{\displaystyle C_{j-1}\oplus D_{k}[C_{j}]=C_{j-1}\oplus C_{j-1}\oplus P_{j}=P_{j}}
Per produrre il primo blocco di testo cifrato, lo XOR viene effettuato tra unvettore di inizializzazioneIV(dall'ingleseinitialization vector) e il primo blocco di testo in chiaro. In decifratura, l'IVsubisce uno XOR con l'output dell'algoritmo di decrittografia in modo da ottenere nuovamente il primo blocco di testo in chiaro.Il vettore di inizializzazioneIVdeve essere dunque noto non solo al mittente ma anche al destinatario, che tipicamente lo riceve assieme alla chiave; entrambi i valori vengono cifrati in modalità ECB.Per aumentare il livello di sicurezza ed evitarereplay attack, si utilizza unIVcasuale per ogni processo di cifratura.Questo permette di produrre un testo cifrato differente anche a parità di testo in chiaro e chiave di crittografia. In questi casi è desiderabile poter evitare di condividere con il destinatario ogniIVgenerato; questo è possibile, semplicemente premettendo al testo in chiaro un blocco di testo casuale: in questo modo verrà generato un primo blocco cifrato comunque utilizzabile nel processo di cifratura. Implementando questa modalità, in fase di decifratura sarà necessario generare un nuovoIVcasuale, quindi scartare il primo blocco di testo in chiaro che verrà prodotto.È possibile utilizzare unIVcasuale e senza la necessità di condividerne ogni valore con il destinatario, anche nei cifrari a blocco in modalità CFB e OFBIn conclusione, questa modalità è la più appropriata per cifrare messaggi più lunghi di 64bit. Inoltre, la modalità CBC può essere utilizzata anche per l'autenticazione.
La modalità CFB è stata ideata per convertire idealmente unacifratura a blocchiin unacifratura a flusso. La cifratura a flussi non necessita di eseguire riempimenti e può inoltre operare in tempo reale.Nell'operazione di cifratura, l'input della funzione di crittografia è unregistro a scorrimentoa 64bitche inizialmente viene impostato con un vettore di inizializzazioneIV(Initialization Vector). Glisbit più significativi (ovvero quelli più a sinistra) dell'output subiscono unoXORcon il primo segmento di testo in chiaroP1per produrre la prima unità di testo cifratoC1. Il contenuto del registro di scorrimento viene fatto scorrere a sinistra disbit, e neglisbit meno significativi (quelli più a destra) del registro viene inseritoC1. Il processo viene reiterato fino all'esaurimento di tutte le unità di testo in chiaro.All'atto della decifratura, si utilizza il medesimo schema, tranne per il fatto che le unità di testo cifrato ricevute sono sottoposte ad uno XOR con l'output della funzione di crittografia. Non si utilizza dunque la funzione di decrittografia, perché, seSS(X)sono glisbit più significativi diX, allora:
C1=P1⊕SS(Ek(IV)){\displaystyle C_{1}=P_{1}\oplus S_{S}(E_{k}(IV))}
Pertanto
P1=C1⊕SS(Ek(IV)){\displaystyle P_{1}=C_{1}\oplus S_{S}(E_{k}(IV))}
e lo stesso ragionamento vale per i passi successivi.
La modalità OFB è molto simile allaCFB. Il vantaggio della OFB è che non propaga gli errori di trasmissione deibit. Il suo svantaggio è che è più vulnerabile a un attacco a modifica del flusso dei messaggi.
Questa quinta modalità è stata introdotta successivamente alle altre quattro, per poter essere applicata aATM(Asynchronous Transfer Mode) e aIPsec(IPsecurity).In questa modalità viene utilizzato un contatore corrispondente alle dimensioni del blocco di testo in chiaro. Il requisito essenziale è che il suo valore sia differente per ciascun blocco da cifrare; in genere viene inizializzato con un determinato valore e poi incrementato di un'unità per ogni blocco successivo (modulo 2dove b corrisponde alle dimensioni del blocco).Per la cifratura, il contatore viene crittografato e poi si applica unoXORcol blocco di testo in chiaro per produrre il blocco di testo cifrato.Per la decifratura si utilizza la stessa sequenza di valori del contatore ai quali si applica lo XOR con i blocchi di testo cifrato.
I vantaggi della modalità CTR sono: