Close

Cifratura a blocchi, cos’è

Come funziona e quali sono gli algoritmi più noti
Mattoncini lego per indicare la cifratura a blocchi.
Tempo di lettura: 4 minuti

Indice dei contenuti

di Pierluigi Paganini*

Ogni giorno usiamo in modo inconsapevole un gran numero di applicazioni che utilizzano i principali algoritmi di cifratura, nelle modalità più disparate.

In un articolo precedente abbiamo visto le principali differenze tra cifratura simmetrica e asimmetrica. Introducendo gli algoritmi di cifratura simmetrica, abbiamo accennato al DES, senza tuttavia esplorare il concetto di cifratura a blocchi.

Algoritmo di cifratura a blocchi

Un algoritmo di cifratura a blocchi è un algoritmo a chiave simmetrica che opera su gruppi di bit di lunghezza fissa, detti blocchi. Le operazioni di cifratura interessano un blocco come unità atomica e non i singoli bit come negli algoritmi stream cypher.

Una cifratura a blocchi implementa una funzione di crittografia E, che trasforma i blocchi di testo forniti in chiaro (P) in blocchi di testo cifrato (C) utilizzando una chiave segreta k.

Con una formula matematica possiamo scrivere: C = E (k, P)

Schema cifratura a blocchi 1.

L’operazione inversa, che riceve in ingresso i blocchi cifrati e ne recupera il testo in chiaro, è detta decodifica. La funzione di decodifica utilizza la medesima chiave usata per la codifica.

In formula matematica: P= D (k, C).

Schema cifratura a blocchi 2.

Il fatto che gli algoritmi di cifratura a flusso cifrano e decifrano i dati un bit alla volta, implica che essi sono particolarmente adatti per applicazioni hardware in tempo reale, come applicazioni audio e video. Tuttavia, i cifrari a flusso sono più deboli e meno efficienti degli algoritmi di cifratura a blocchi quando si tratta di applicazioni software. Inoltre, i cifrari a blocchi sono molto facili da implementare via software.

Alcuni algoritmi di cifratura a blocchi sono basati su semplici funzioni che vengono combinate e iterate più volte. Tipicamente si utilizzano più di 4 iterazioni, ma meno di 64 per ogni singolo blocco da cifrare. Tuttavia, molti algoritmi utilizzano la rete di Feistel, che utilizza operazioni aritmetiche e logiche per cifrare i blocchi mediante operazioni di sostituzione e permutazione.

Il DES Data Encryption Standard

Tra i più noti algoritmi di cifratura a blocchi c’è il DES, Data Encryption Standard. Il DES nasce nel 1972, quando l’agenzia di intelligence americana NSA (National Security Agency) chiede al National Bureau of Standards, oggi noto come NIST (National Institute of Standards and Technology), di mettere a punto un algoritmo di cifratura da adottare in ambito governativo.

Nel marzo 1975 IBM sviluppa il DES, pubblicato nel Federal Register per far sì che esperti possano esaminarlo e sottoporlo a commenti pubblici.

Furono molte le critiche, soprattutto relative ad alcune anomalie che si ritenevano potessero essere state indotte dall’intelligence statunitense.

Tra i maggiori dubbi sollevati dagli esperti vi era la lunghezza della chiave, ritenuta a ragione troppo breve, e la presenze di anomale “scatole di sostituzione”, note come S-box, utilizzate negli algoritmi di crittografia a blocchi per mascherare il legame funzionale tra il testo in chiaro e il corrispettivo cifrato.

Dopo alcuni raffinamenti il DES divenne standard federale nel novembre del 1976 e fu pubblicato nel gennaio seguente come FIPS PUB 46, ovvero certificato per la cifratura di dati non classificati del governo.

Tutto andò bene fino al Luglio del 1998, quando il gruppo per la difesa dei diritti civili Electronic Frontier Foundation (EFF) dimostrò che l’algoritmo era debole e costruì una macchina dal costo di 250.000 dollari che riuscì a violare una chiave DES in sole 56 ore.

Quali sono gli algoritmi di cifratura a blocchi più noti

Senza entrare nel dettaglio di ciascun algoritmo di cifratura a blocchi, è opportuno sapere che ve ne sono davvero tanti, sebbene AES, DES, IDEA, Triple DES, RC5, RC6 e Blowfish siano i più popolari.

Di seguito un elenco preso da Wikipedia: 3-Way, AES, Blowfish, Camellia, CAST-128, CAST-256, CMEACS-Cipher, DEAL, DES, DES-X, FEAL, GDES, GOST, IDEA, Iraqi block cipher, KASUMI, Khafre, KHAZAD, Khufu, LOKI89/91, LOKI97, Lucifer, MAGENTA, MARS, MISTY1, MMB, RC2, Red Pike, S-1, SAFER, Serpent, SHARK, Skipjack, Square, TEA, Triple DES, Twofish, RC5, RC6, XTEA.

Il 3DES è un algoritmo che di fatto riutilizza il suo predecessore DES, invocandone in cascata tre istanze operanti con chiavi distinte. È considerato un algoritmo lento, soprattutto per quanto concerne le sue implementazioni software.

L’algoritmo di Blowfish presenta il vantaggio di poter operare con chiavi molto lunghe, tuttavia la dimensione dei blocchi che utilizza è di 64 bit, proprio come quella degli algoritmi DES e 3DES. Le implementazioni software del Blowfish sono considerate estremamente efficienti, sebbene le prestazioni dipendano da come il sistema operativo che esegue l’algoritmo gestisce lo spazio di memoria e la memorie cache. Il Blowfish è stato poi sostituito dall’algoritmo Twofish.

Chiudiamo con l’AES, il successore del DES, che utilizza chiavi di 128, 192 o 256 bit e blocchi di 128 bit. È ritenuto molto performante, sia nelle implementazioni software che hardware. Di fatto è l’algoritmo a oggi ritenuto più sicuro.


*Pierluigi Paganini

Membro Gruppo di Lavoro Cyber G7 2017 presso Ministero degli Esteri
Membro Gruppo Threat Landscape Stakeholder Group ENISA
Collaboratore SIPAF presso il Mef

TAG