Modalità di funzionamento dei cifrari a blocchi

Da Wikipedia, l'enciclopedia libera.

Le modalità di funzionamento dei cifrari a blocchi sono state definite inizialmente dal NIST (National Institute of Standards and Technology) nel documento FIPS 81 (Federal Information Processing Standard) intitolato "DES modes of operation" affinché l'algoritmo di cifratura DES potesse essere applicato ad una varietà di situazioni differenti.
Queste modalità cercano dunque di considerare tutte le possibili applicazioni della crittografia per cui può essere utilizzato l'algoritmo DES; con la successiva comparsa di nuovi requisiti, il NIST ha espanso l'elenco delle modalità di funzionamento a cinque, nel documento Special Publication 800-38A.
Tali modalità possono essere utilizzate con qualsiasi algoritmo di cifratura simmetrica a blocchi, tra cui Triple DES e AES.

Electronic CodeBook (ECB)[modifica | modifica sorgente]

Exquisite-kfind.png Per approfondire, vedi Electronic code book.

La modalità ECB è la più semplice. Il testo in chiaro viene gestito 64 bit per volta; ognuno dei blocchi di 64 bit viene 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.

Ecb encryption.png

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 crittografica potrebbe sfruttarne le regolarità.

Vantaggi[modifica | modifica sorgente]
  • La cifratura in modalità ECB è parallelizzabile
  • Gli errori rimangono localizzati, quindi non si ha propagazione di errore su diversi blocchi
Svantaggi[modifica | modifica sorgente]
  • Non è garantita l'integrità del messaggio, poiché un attaccante potrebbe invertire dei blocchi e la vittima non se ne accorgerebbe
  • Usa una chiave fissa che quindi può essere predisposta ad attacchi di analisi crittografica
  • Non è sicuro contro attacchi di forza bruta

Cipher Block Chaining (CBC)[modifica | modifica sorgente]

Per superare i limiti di sicurezza di ECB, è 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 di crittografia è il risultato dello XOR tra 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.

Cbc encryption.png

Per dimostrare la correttezza del meccanismo, si può scrivere:

C_j = E_k[C_{j-1} \oplus P_j]

Quindi:

D_k[C_j] = D_k[E_k(C_{j-1} \oplus P_j)]

D_k[C_j] = (C_{j-1} \oplus P_j)

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 un vettore di inizializzazione IV (dall'inglese initialization vector) e il primo blocco di testo in chiaro. In decifratura, l'IV subisce uno XOR con l'output dell'algoritmo di decrittografia in modo da ottenere nuovamente il primo blocco di testo in chiaro.
Il vettore di inizializzazione IV deve essere dunque noto non solo al mittente ma anche al destinatario, che tipicamente lo riceve assieme alla chiave; entrambi i valori vengono crittati in modalità ECB.
In conclusione, questa modalità è la più appropriata per cifrare messaggi più lunghi di 64 bit. Inoltre, la modalità CBC può essere utilizzata anche per l'autenticazione.

Cipher Feedback (CFB)[modifica | modifica sorgente]

La modalità CFB è stata ideata per convertire idealmente una cifratura a blocchi in una cifratura 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 è un registro a scorrimento a 64 bit che inizialmente viene impostato con un vettore di inizializzazione IV (Initialization Vector). Gli s bit più significativi (ovvero quelli più a sinistra) dell'output subiscono uno XOR con il primo segmento di testo in chiaro P1 per produrre la prima unità di testo cifrato C1. Il contenuto del registro di scorrimento viene fatto scorrere a sinistra di s bit, e negli s bit meno significativi (quelli più a destra) del registro viene inserito C1. 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é, se SS(X) sono gli s bit più significativi di X, allora:

C_1 = P_1 \oplus S_S(E_k(IV))

Pertanto

P_1 = C_1 \oplus S_S(E_k(IV))

e lo stesso ragionamento vale per i passi successivi.

Cfb encryption.png

Output Feedback (OFB)[modifica | modifica sorgente]

La modalità OFB è molto simile alla CFB. Il vantaggio della OFB è che non propaga gli errori di trasmissione dei bit. Il suo svantaggio è che è più vulnerabile a un attacco a modifica del flusso dei messaggi.

Ofb encryption.png

Counter (CTR)[modifica | modifica sorgente]

Questa quinta modalità è stata introdotta successivamente alle altre quattro, per poter essere applicata a ATM (Asynchronous Transfer Mode) e a IPsec (IP security).
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 2b dove b corrisponde alle dimensioni del blocco).
Per la cifratura, il contatore viene crittografato e poi si applica uno XOR col 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.

Ctr encryption.png

I vantaggi della modalità CTR sono:

  • efficienza dell'hardware;
  • efficienza del software;
  • pre-elaborazioni;
  • accesso diretto;
  • sicurezza dimostrabile;
  • semplicità.

Tabella riassuntiva[modifica | modifica sorgente]

Modalità Applicazioni tipiche
ECB Trasmissione sicura di singoli valori
CBC
  • Trasmissione di carattere generale orientata ai blocchi
  • Autenticazione
CFB
  • Trasmissione di carattere generale orientata al flusso di dati
  • Autenticazione
OFB Trasmissione orientata al flusso di dati su canali rumorosi
CTR
  • Trasmissione di carattere generale orientata ai blocchi
  • Utile per requisiti di alta velocità

Bibliografia[modifica | modifica sorgente]

  • William Stallings, Crittografia e sicurezza delle reti, McGraw-Hill, 2004. ISBN 88-38-63435-1

Collegamenti esterni[modifica | modifica sorgente]