Modalita' di cifratura ECB e CBC

Cifrario a blocchi: quale modalita' scegliere
Data: 01/10/2013 Autore: Iasparra Francesco 

La modalita' definisce come un cifrario debba applicare un algoritmo di cifratura.
Il cifrario a flusso cifra un byte alla volta, il cifrario a blocchi considera piu' byte alla volta (es 8).
Alcuni algoritmi consentono di specificare la grandezza del blocco.

Due tra le modalita' piu' comuni sono:

- ECB :[Elettronic Code Book] lo stesso blocco di dati in chiaro viene sempre cifrato con lo stesso blocco di dati cifrato.

- CBC :[Cipher Block Chaining] ogni blocco cifrato dipende dal relativo blocco in chiaro, ma anche da tutti i blocchi precedenti e da un vettore di inizializzazione IV.

Nei cifrari asimmetrici si usa quasi sempre ECB.

Padding

I cifrari a blocchi operano su blocchi di dati, ma i dati in chiaro difficilmente saranno esattamente un multiplo del blocco.
Prima di cifrare occorre dunque aggiungere il padding (spaziatura).
Il padding PKCS#5 (Public Key Criptography Standard) e' il piu' utilizzato per la Cifratura simmetrica e funziona in questo modo:

- ai byte che mancano per riempire un blocco viene assegnato un numero che equivale al numero di byte mancanti.

Gli standard per cifrare con RSA sono invece PKCS#1 e OAEP (Optimal Asymmetric Encryption Padding).

Esempio di codice java:

Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");