This page was last modified 2007-10-09 15:30:27 by Puchu.Net user Choco. (Show history)
Work in Progress
Please check back later. Thanks!
[edit] IntroductionBlowfish is a block cipher designed by Bruce Schneier, intended for replacing DES. It requires no license and has no practical cryptanalysis for the full 16-round implementation. It is a good algorithm to study as it shares many features common in various block cipher algorithms:
[edit] Key Permutation and S-BoxesS-Boxes provide the non-linear transform required. For Blowfish the key and s-boxes initialization is done by first filling the memory with hexadecimal value of Pi. [edit] Feistel NetworkMany well-known block cipher use Feistel network to provide diffusion and confusion, two important properties to provide security. Diffusion works by removing or decreasing any advantage gained by knowing statics about plaintext and ciphertext. Specifically, a small change in the plaintext should cause dramatic change in the ciphertext output so that cryptanalysis isn't possible by feeding known plaintext. Typically this is achieved by using a cryptographically secure round function and executing it over multiple rounds, and this is the case for Blowfish, which consists of 16 rounds. Confusion works by protecting the key, such that it isn't possible to recover the encryption key from ciphertext. In Blowfish this is achieved using several key-dependent S-boxes and permutations over different algebraic groups. Block cipher employing Feistel network have the same sequence of instructions for encryption and decryption, with the only difference being the order of subkeys being used. Usually for each round a block is divided into two halves, where the first half is XOR'd with second half that has been processed by the round function and the corresponding subkey. Blowfish uses 64-bit blocks (
[edit] Combination of Algebraic Groups[edit] References
|
|
||||