Gestione dei blocchi.

DocumentazioneTecniche di Crittografia

Cryptea supporta due modalità di operazione classiche nell'utilizzo di RSA come cifrario a blocchi: ECB (Electronic Codebook) e CBC (Cipher Block Chaining).

In entrambe le modalità il messaggio viene suddiviso in blocchi della dimensione leggermente inferiore al Modulo n della chiave RSA e ogni blocco viene cifrato/decifrato separatamente.

Per garantire la correttezza con chiavi grandi (2048–4096 bit) è stato implementato il padding ISO/IEC 7816-4, che consiste nell'aggiungere alla fine del messaggio un byte dal valore 0x80, seguito da zeri fino a riempire il blocco.

Inizialmente era stato implementato PKCS#7, ma per blocchi molto grandi genera errori di padding per insufficienza di riempimento (>255 blocchi da riempire).

RSA non è progettato per la cifratura e decifratura di dati, ma univocamente alla cifratura e decifratura della chiave simmetrica. Sono stati implementati i meccanismi a blocchi solo a fini didattici.

Modalità ECB

La modalità ECB è la più semplice: ogni blocco di plaintext viene cifrato indipendentemente dagli altri. È molto veloce, ma non nasconde le ripetizioni presenti nel messaggio (stessi blocchi di plaintext producono sempre gli stessi blocchi di ciphertext).

Per questo motivo ECB è sconsigliata in quanto vulnerabile ad attacchi di analisi forense!

Schema cifratura

Cifratura ECB

Schema decifratura

Decifratura ECB

Modalità CBC

La modalità CBC migliora notevolmente la sicurezza introducendo una catena tra i blocchi. Prima di cifrare ogni blocco di plaintext viene eseguito uno XOR con il blocco ciphertext precedente (o con un Initialization Vector – IV – per il primo blocco).

Questo rende il ciphertext molto più imprevedibile e nasconde le ripetizioni del plaintext.

Schema cifratura

Cifratura CBC

Schema decifratura

Decifratura CBC

ECB e CBC a confronto

Da questa immagine è possibile vedere a colpo d'occhio la vulnerabilità intrinseca di ECB, nella cifratura dell'immagine di "Tux", simbolo di Linux. Nel lato CBC, invece, utilizzando un vettore insieme alla cifratura sempre diverso, rende impossibile prevedere il contenuto o parte di esso.

ECB e CBC a confronto su Cryptea: Encryption served hot.