La sicurezza dei cifrari a blocchi è fondamentalmente radicata nell'applicazione iterativa di operazioni di confusione e diffusione. Questo concetto fu formalizzato per la prima volta da Claude Shannon nel suo fondamentale lavoro sulla teoria della comunicazione dei sistemi di segretezza, dove espresse la necessità sia di confusione che di diffusione nei sistemi crittografici per contrastare attacchi statistici e strutturali. Comprendere perché siano necessari più cicli di queste operazioni e come queste siano interconnesse è fondamentale per comprendere la progettazione e la sicurezza dei moderni cifrari a blocchi come il Data Encryption Standard (DES) e l'Advanced Encryption Standard (AES).
Confusione e diffusione: definizioni e ruoli
La confusione cerca di rendere il più complesso possibile il rapporto tra testo cifrato e chiave. Lo fa mascherando la struttura statistica del testo in chiaro, spesso attraverso l'uso di sostituzioni non lineari (ad esempio, le S-box in DES e AES). Più questa mappatura è non lineare e complessa, più difficile diventa per un aggressore dedurre informazioni sulla chiave, anche avendo accesso a numerose coppie testo in chiaro-testo cifrato.
La diffusione, d'altra parte, mira a distribuire l'influenza di ciascun bit del testo in chiaro su molti bit del testo cifrato, in modo che una modifica in un singolo bit di input comporti modifiche in molti bit di output. Questa proprietà garantisce che le proprietà statistiche del testo in chiaro vengano dissipate attraverso il testo cifrato, rendendo impossibile per gli aggressori sfruttare i pattern tramite analisi di frequenza o tecniche simili. La diffusione si ottiene in genere tramite operazioni di mixaggio lineare, come permutazioni, XOR bit a bit o moltiplicazioni di matrici (come nell'operazione MixColumns di AES).
Struttura dei cifrari a blocchi iterativi
La maggior parte dei cifrari a blocchi è strutturata come cifrario iterativo, ovvero applica una semplice funzione di round più volte per raggiungere un elevato livello di sicurezza. La funzione di round in genere combina sia la confusione (ad esempio, tramite applicazioni S-box) sia la diffusione (ad esempio, tramite fasi di permutazione o miscelazione). La logica alla base dell'impiego di più round è che una singola applicazione di confusione e diffusione non è sufficiente a oscurare tutte le relazioni strutturali tra testo in chiaro, testo cifrato e chiave. Ogni round aumenta progressivamente la complessità di queste relazioni e solo dopo diversi round il cifrario raggiunge il livello di sicurezza desiderato contro gli attacchi crittoanalitici noti.
Ad esempio, considerando il cifrario AES, ogni ciclo di crittografia è costituito dai seguenti passaggi chiave:
1. SubBytes (Confusione): Ogni byte nella matrice di stato viene sostituito con un altro secondo una S-box non lineare fissa, introducendo la non linearità.
2. ShiftRows (Diffusione): Le righe della matrice di stato vengono spostate ciclicamente, spostando i byte su colonne diverse e facilitando la mescolanza dei valori.
3. MixColumns (Diffusione): Le colonne dello stato vengono mescolate utilizzando la moltiplicazione di matrici in un campo finito, distribuendo ulteriormente l'influenza di ciascun byte di input.
4. AddRoundKey (Confusione): La matrice di stato viene combinata con una sottochiave derivata dalla chiave principale, introducendo una dipendenza dalla chiave a ogni round.
L'efficacia del cifrario dipende non solo dalla forza di ogni singola operazione, ma anche dal numero di volte in cui queste operazioni vengono eseguite. I crittoanalisti hanno dimostrato che ridurre il numero di cicli in un cifrario come AES o DES può renderlo vulnerabile ad attacchi come la crittoanalisi differenziale e lineare. Ad esempio, mentre l'AES-128 completo utilizza 10 cicli, le versioni con solo 6 cicli sono suscettibili ad alcune tecniche di crittoanalisi.
Necessità di più round
Per chiarire ulteriormente, si consideri cosa accade se viene applicato un solo ciclo di confusione e diffusione. Anche utilizzando S-box e livelli di mixaggio robusti, relazioni e pattern statistici potrebbero persistere. Gli aggressori potrebbero sfruttare questi pattern residui utilizzando attacchi a testo in chiaro scelto o a testo in chiaro noto. Più cicli garantiscono che l'influenza di ogni chiave e bit del testo in chiaro sia distribuita in modo uniforme sull'intero testo cifrato, rendendo impossibile l'esecuzione di tali attacchi.
Il concetto di "effetto valanga" è centrale in questo contesto. Un cifrario forte garantisce che una piccola modifica nel testo in chiaro (come l'inversione di un singolo bit) comporti una modifica in circa la metà dei bit del testo cifrato, e questa proprietà viene raggiunta solo dopo diversi cicli di confusione e diffusione. La struttura iterativa dei moderni cifrari a blocchi è specificamente progettata per amplificare questo effetto, rendendo il cifrario resistente agli attacchi che si basano sul tracciamento delle relazioni input-output.
Esempi: DES e AES
Il cifrario storico DES illustra bene questo principio. Il DES utilizza 16 cicli nella sua struttura di rete Feistel, con ogni ciclo costituito da espansione, sostituzione di S-box (confusione) e permutazione (diffusione). Un'ampia analisi crittoanalitica ha dimostrato che l'utilizzo di meno di 16 cicli porta a debolezze; la crittoanalisi differenziale è efficace contro versioni con meno cicli. I progettisti hanno scelto 16 cicli per fornire un margine di sicurezza contro i progressi nella crittoanalisi, sottolineando l'importanza delle iterazioni multiple.
AES, progettato decenni dopo, applica 10, 12 o 14 round a seconda della dimensione della chiave (rispettivamente 128, 192 o 256 bit). Ogni round incorpora gli effetti combinati di confusione e diffusione attraverso i suoi passaggi SubBytes, ShiftRows e MixColumns. Il numero di round è stato scelto attentamente in base ai risultati della crittoanalisi per bilanciare sicurezza e prestazioni.
Modalità di funzionamento e loro relazione
Mentre la sicurezza interna dei cifrari a blocchi è determinata da ripetuti processi di confusione e diffusione, la modalità di funzionamento (ad esempio, ECB, CBC, CFB, OFB, CTR) specifica come i cifrari a blocchi vengono applicati a dati più grandi di un singolo blocco. Le proprietà di sicurezza di un cifrario a blocchi in una determinata modalità dipendono fondamentalmente dalla sua resistenza agli attacchi, che a sua volta è funzione di quanto accuratamente vengono raggiunte la confusione e la diffusione in più cicli. Se il cifrario a blocchi sottostante è debole (ad esempio, con un numero di cicli troppo basso), nessuna modalità di funzionamento può compensare questa carenza.
Attacchi e round crittoanalitici
Diversi attacchi crittoanalitici sfruttano l'insufficiente confusione e diffusione nei cifrari a blocchi. La crittoanalisi differenziale, ad esempio, studia come le differenze nei testi in chiaro influenzino le differenze risultanti nel testo cifrato. Se il cifrario non ha diffuso adeguatamente le differenze di input, un aggressore può prevedere come tali differenze si propagano e utilizzare questa conoscenza per recuperare la chiave. Analogamente, la crittoanalisi lineare cerca approssimazioni lineari tra testo in chiaro, testo cifrato e bit della chiave. L'efficacia di questi attacchi diminuisce con l'aumentare del numero di round, a condizione che ogni round implementi efficacemente confusione e diffusione.
Per esempio, un DES con 8 round (metà del numero standard) è suscettibile alla crittoanalisi differenziale, ma con 16 round la probabilità di propagare una traccia differenziale utile su tutti i round diventa trascurabile. Ciò dimostra che la struttura iterativa, e in particolare il numero di round, è fondamentale per raggiungere la sicurezza pratica.
Compromessi di progettazione
I progettisti di cifrari devono bilanciare il numero di cicli con i requisiti prestazionali. Un numero maggiore di cicli generalmente significa maggiore sicurezza, ma anche maggiori costi computazionali. Il numero di cicli viene in genere scelto per fornire un margine di sicurezza superiore a quello degli attacchi più noti al momento della progettazione, con l'aspettativa che i futuri progressi nella crittoanalisi possano erodere tale margine. Questo approccio conservativo garantisce che il cifrario rimanga sicuro per tutta la sua durata prevista.
Giustificazione matematica
Da un punto di vista teorico, i progetti di cifrari a blocchi iterati possono essere visti attraverso la lente del modello del "cifrario a prodotto iterato". Sotto determinate ipotesi, è stato dimostrato che la composizione di più cifrari deboli (ciascuno dei quali implementa confusione e/o diffusione deboli) può produrre un cifrario complessivo forte, a condizione che i componenti siano sufficientemente indipendenti e che il numero di cicli sia elevato. Ciò giustifica l'approccio iterativo alla confusione e alla diffusione nella progettazione pratica di cifrari.
Esempi pratici
Un esempio istruttivo è la struttura di rete a sostituzione-permutazione (SPN), utilizzata da AES. In una SPN, il testo in chiaro è sottoposto a livelli alternati di sostituzione (confusione) e permutazione (diffusione). Dopo diversi cicli, ogni bit di output dipende da ogni bit di input in modo altamente non lineare. Questa proprietà non si ottiene con un singolo ciclo; è l'effetto cumulativo di più cicli che garantisce che ogni bit del testo cifrato sia una funzione complessa di ogni bit del testo in chiaro e della chiave, una proprietà nota come diffusione completa.
La rete di Feistel, utilizzata nel DES, raggiunge un livello di sicurezza simile applicando iterativamente una funzione di round che combina sostituzione e permutazione, con l'output di ogni round che alimenta quello successivo. La sicurezza di tali costruzioni aumenta esponenzialmente con il numero di round, presupponendo che la funzione di round stessa non sia banalmente invertibile o lineare.
Conclusione: dipendenza della sicurezza dall'iterazione
La robustezza dei cifrari a blocchi è strettamente legata all'applicazione ripetuta di operazioni di confusione e diffusione. I cifrari moderni sono progettati con un numero di cicli di cifratura sufficiente a garantire che qualsiasi relazione statistica residua derivante dal testo in chiaro o dalla chiave venga eliminata e che ogni bit del testo cifrato sia influenzato da ogni bit del testo in chiaro e della chiave. Questo processo iterativo non è semplicemente un dettaglio implementativo, ma un principio fondamentale della sicurezza dei cifrari. Il numero di cicli di cifratura viene scelto sulla base di un'analisi crittografica approfondita per garantire un margine di sicurezza e viene periodicamente rivalutato in caso di nuovi attacchi. Sotto tutti gli aspetti pratici e teorici, la sicurezza dei cifrari a blocchi dipende effettivamente dalla combinazione ripetuta di operazioni di confusione e diffusione.
Altre domande e risposte recenti riguardanti Applicazioni dei cifrari a blocchi:
- Cosa dovrebbe includere un cifrario a blocchi secondo Shannon?
- Diffusione significa che singoli bit di testo cifrato sono influenzati da molti bit di testo in chiaro?
- La modalità BCE suddivide il testo in chiaro di input di grandi dimensioni in blocchi successivi
- Possiamo usare un codice a blocchi per costruire una funzione hash o un MAC?
- La modalità OFB può essere utilizzata come generatori di keystream?
- Può una crittografia essere deterministica?
- Quali sono le modalità operative?
- Cosa fa la modalità BCE ai semplici codici a blocchi?
- Il PSRNG può essere realizzato tramite cifrari a blocchi?
- È possibile costruire un MAC tramite cifrari a blocchi?
Visualizza altre domande e risposte in Applicazioni di cifrari a blocchi

