
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).

1439








Anteprima del commento