Block Cipher

Lo schema di base di un codice a blocchi è rappresentato come segue:

Un codice a blocchi prende un blocco di bit di testo in chiaro e genera un blocco di bit di testo cifrato, generalmente della stessa dimensione. La dimensione del blocco è fissata nello schema dato. La scelta della dimensione del blocco non influisce direttamente sulla forza dello schema di crittografia. La forza della cifratura dipende dalla lunghezza della chiave.

Misura del blocco

Sebbene qualsiasi dimensione del blocco sia accettabile, i seguenti aspetti vengono tenuti presenti durante la selezione della dimensione di un blocco.

  • Avoid very small block size- Supponiamo che la dimensione di un blocco sia m bit. Quindi le possibili combinazioni di bit di testo in chiaro sono quindi 2 m . Se l'aggressore scopre i blocchi di testo normale corrispondenti ad alcuni blocchi di testo cifrato inviati in precedenza, può lanciare un tipo di "attacco dizionario" costruendo un dizionario di coppie di testo normale / testo cifrato inviato utilizzando quella chiave di crittografia. Una dimensione del blocco maggiore rende l'attacco più difficile in quanto il dizionario deve essere più grande.

  • Do not have very large block size- Con blocchi di dimensioni molto grandi, il codice diventa inefficiente per funzionare. Tali testi in chiaro dovranno essere riempiti prima di essere crittografati.

  • Multiples of 8 bit - Una dimensione di blocco preferita è un multiplo di 8 poiché è facile da implementare poiché la maggior parte dei processori del computer gestisce i dati in più di 8 bit.

Padding in Block Cipher

I cifrari a blocchi elaborano blocchi di dimensioni fisse (diciamo 64 bit). La lunghezza dei testi in chiaro non è per lo più un multiplo della dimensione del blocco. Ad esempio, un testo in chiaro a 150 bit fornisce due blocchi di 64 bit ciascuno con un terzo blocco di bilanciamento di 22 bit. L'ultimo blocco di bit deve essere riempito con informazioni ridondanti in modo che la lunghezza del blocco finale sia uguale alla dimensione del blocco dello schema. Nel nostro esempio, i restanti 22 bit devono avere ulteriori 42 bit ridondanti aggiunti per fornire un blocco completo. Il processo di aggiunta di bit all'ultimo blocco viene indicato comepadding.

Troppa imbottitura rende il sistema inefficiente. Inoltre, il riempimento a volte può rendere il sistema insicuro, se il riempimento viene eseguito sempre con gli stessi bit.

Schemi di cifratura a blocchi

Esiste un vasto numero di schemi di cifratura a blocchi in uso. Molti di loro sono pubblicamente noti. I codici a blocchi più popolari e importanti sono elencati di seguito.

  • Digital Encryption Standard (DES)- Il popolare cifrario a blocchi degli anni '90. Ora è considerato come un codice a blocchi "rotto", principalmente a causa delle sue piccole dimensioni della chiave.

  • Triple DES- È uno schema variante basato su ripetute applicazioni DES. È ancora un cifrario a blocchi rispettato ma inefficiente rispetto ai nuovi cifrari a blocchi più veloci disponibili.

  • Advanced Encryption Standard (AES) - È un codice a blocchi relativamente nuovo basato sull'algoritmo di crittografia Rijndael che ha vinto il concorso di design AES.

  • IDEA- È un codice a blocchi sufficientemente potente con una dimensione del blocco di 64 e una dimensione della chiave di 128 bit. Numerose applicazioni utilizzano la crittografia IDEA, comprese le prime versioni del protocollo Pretty Good Privacy (PGP). L'uso dello schema IDEA ha un'adozione limitata a causa di problemi di brevetto.

  • Twofish- Questo schema di cifratura a blocchi utilizza una dimensione del blocco di 128 bit e una chiave di lunghezza variabile. È stato uno dei finalisti AES. Si basa sul precedente codice a blocchi Blowfish con una dimensione del blocco di 64 bit.

  • Serpent- Un codice a blocchi con una dimensione del blocco di 128 bit e una lunghezza della chiave di 128, 192 o 256 bit, che era anche un finalista del concorso AES. È più lento ma ha un design più sicuro rispetto ad altri codici a blocchi.

Nelle prossime sezioni, discuteremo prima il modello di cifratura a blocchi seguito da DES e AES, due dei più influenti codici a blocchi moderni.