Cifratura a blocchi

Incrittologiaunalgoritmo di cifratura a blocchi(dall'inglese:block cipher) è un algoritmo achiave simmetricaoperante su un gruppo di bit di lunghezza finita organizzati in un blocco. A differenza deglialgoritmi a flussoche cifrano un singolo elemento alla volta, gli algoritmi a blocco cifrano un blocco di elementi contemporaneamente.
Un algoritmo di cifratura a blocchi è composto da due parti, una che cifra,Ee un'altra che decifraE. Molti algoritmi accettano due ingressi,Nbbit per il blocco da cifrare eNkbit per la chiave da utilizzare durante la cifratura. Ovviamente restituisconoNbbit di uscita. Per alcuni casi particolari a decifrare il blocco è lafunzione inversadella cifratura
per ogni bloccome chiavek.
Per ogni chiave di ingressok,Ekè una delle possibilipermutazionisull'insieme di input del blocco, tra le(2Nb)!{\displaystyle (2^{N_{b}})!}possibili. Il numero di possibili chiavi usualmente è un numero inferiore al numero di possibili ingressi.
Ladimensione del blocco,Nb, è tipicamente di 64 o128 bitsebbene alcuni algoritmi accettino blocchi di dimensione variabile. Usualmente l'algoritmo in caso di testo di dimensione inferiore al blocco provvede a riempire il blocco con dei dati inutili per poter trattare testi di qualsiasi lunghezza. La scelta dei dati inutili da utilizzare per riempire il blocco può influenzare la sicurezza dell'algoritmo e quindi va fatta con attenzione. La lunghezza della chiave (Nk) può essere 40, 56, 64, 80, 128, 192 e 256 bit. Nel2005si considera come lunghezza minima accettabile 80 bit dato che lunghezze inferiori di chiave potrebbero essere forzate con unattacco a forza bruta.
Molti algoritmi sono basati su semplici funzioni che vengono combinate e iterate più volte (vedicifrario del prodotto). Ogni iterazione viene chiamatarounde normalmente gli algoritmi utilizzano più di 4 round ma meno di 64 per singolo blocco da cifrare. Molti algoritmi sono basati sullarete di Feistelo più in generale sullarete a sostituzione e permutazione. Operazioni aritmetiche, operazioni logiche (specialmenteXOR)S-boxe varie tecniche di permutazione sono tra i componenti più comuni di queste reti.
Luciferè ritenuto generalmente il primo algoritmo moderno a blocchi. Sviluppato dall'IBMneglianni settantaera basato sul lavoro diHorst Feistel. Una versione migliorata venne utilizzata dal governo degliStati Uniti d'Americaper realizzare lo standardFIPSData Encryption Standard(DES). Venne scelto dall'US National Bureau of Standards (NBS) dopo la pubblicazione del bando che invita a sottoporre all'attenzione delNSAi propri algoritmi di cifratura. Lo standard del DES venne pubblicato nel1976e da allora venne utilizzato fino alla fine del2000.
DES era progettato per resistere a una categoria di attacchi conosciuti dalla NSA e in seguito scoperti anche dall'IBM. La famiglia di attacchi basati sullacrittanalisi differenzialedivennero noti quando vennero pubblicati daEli BihameAdi Shamirverso la fine degli anni ottanta. Questa tecnica è una delle poche a essere in grado di forzare molti cifrari a blocchi. La seconda tecnica utilizzabile era lacrittanalisi lineareche forse non era nota alla NSA finché non venne pubblicato l'articolo diMitsuru Matsui. DES ha prodotto un prolifico settore di ricerca che ha sviluppato molte innovazioni nel settore degli algoritmi crittografici.
Il principale limite del DES è la sua chiave di soli 56 bit. Alcuni commentatori già negli anni '70 segnalarono che la chiave era troppo piccola e che un attacco a forza bruta era possibile. La dimostrazione definitiva dell'inadeguatezza del DES la si ebbe nel1998quando laElectronic Frontier Foundationriuscì a forzare la codifica DES con una macchina specializzata nel giro di tre giorni. Vennero sviluppate delle varianti del DES come ilTriple DES, che offre una maggiore sicurezza ma risulta più lento per via della triplice esecuzione della cifratura DES.
Il DES è stato sostituito dal nuovo standard federale,Advanced Encryption Standard(AES), scelto dalNational Institute of Standards and Technology(NIST) nel2001dopo 5 anni distandardizzazione. Il nuovo standard deriva da un algoritmo sviluppato daJoan DaemeneVincent Rijmene il suo nome èRijndael. AES gestisce blocchi di 128 bit e chiavi di lunghezza 128, 192, 256 bit. Il governo Statunitense permette l'utilizzo dell'AES per la cifratura di documenti classificati con apparecchiature approvate dalla NSA.
Oltre all'analisi differenziale e lineare esistono altre tecniche di attacco. La crittanalisi troncata e parziale, l'attacco slide, l'attacco boomerang, l'attacco square, l'attacco integrale, l'attacco XSLe l'attacco algebrico. Per dimostrare la sua validità un nuovo algoritmo deve essere in grado di superare tutti questi tipi di attacco.