A cura di Antonio Parziale
Pubblicato il 11/06/2005
Questo algoritmo ideato da Bruce Scheiner nel 1993 è veloce, compatto, sicuro tanto da essere la base per uno dei candidati al nuovo standard di cifratura a blocco a chiave simmetrica. Ecco come funziona. L'articolo è tratto dalla tesi di laurea in "Applicazione delle tecniche di crittografia nella trasmissione ed elaborazione dati" redatta dall'ingegnere Federico Gennari nell'anno accademico 2000/2001
Blowfish
Questo algoritmo ideato da Bruce Scheiner nel 1993 è veloce, compatto, sicuro tanto da essere la base per uno dei candidati al nuovo standard di cifratura a blocco a chiave simmetrica. , quindi vale la pena vedere molto succintamente come funziona:
i) Espansione della chiave converte la chiave (di lunghezza variabile, fino a 448 byte) in vari vettori di sottochiavi da 32 bit: il vettore di permutazione Pi con (i=1,...18) e il vettore stringa Si,j con (i=1,...4) e (j=0,...255). Si inizializzano P'1,... P'18 e poi S'1,0,... S'4,255 nell’ordine, usando l’espansione decimale di π. Si ottiene il vettore segreto di permutazione P1,... P18 ponendo Pi = P'i ^ Ki (ovvero lo XOR tra i due operandi)
ii) Cifratura dati: comincia dividendo il testo in chiaro in blocchi da 64bit e ogni blocco in due metà (L0, R0) da 32bit.
iii) Per
si ripete:
- Li = Li-1^Pi
- Ri = F(Li)^Pi (F è la funzione di Feistel)
- Permutazione Li, Ri => Ri, Li
iv) Permutazione finale L16, R16 => R16, L16 (disfa l’ultima delle permutazioni cicliche).
v) Rfinale = R16^P17; Lfinale = L16^P18; il blocco finale è (Lfinal, Rfinal).