Cryptography Reference
In-Depth Information
3.4
Blowfish
If plans related to secret operations are prematurely divulged the agent and
all those to whom he spoke of them shall be put to death.
Sun Tzu (ca. 400 B.C.), Chinese warrior and philosopher
— from The Art of War ([279, page 147, no. 15])
In 1994, Bruce Schneier developed the formidable Blowfish cryptosystem.
Schneier obtained his bachelor's degree in physics from the University of
Rochester, and his master's degree in computer science from American Uni-
versity. Currently he is president of Counterpane Systems , a consulting firm in
Minneapolis, which essentially deals with computer security, and specializes in
cryptography. He is the author of several topics [238]-[240], as well as numer-
ous publications on cryptological issues. He has written a number of articles
for magazines and is a contributing editor to Dr. Dobb's Journal , editing the
Algorithms Alley column. Additionally, he serves on the boards of directors
of the International Association of Cryptologic Research and the Voter's Tel-
com Watch . He is considered to be a leading influence in today's cryptographic
community, with sought-after opinions on cryptological matters.
Below, we will describe the Blowfish cipher briefly without details about,
for instance, the specific initialization strings used and the like. We gave an
exhaustive description of S-DES and its analysis in the previous section to give
us su0cient background to appreciate this symmetric-key block cipher. For
Schneier's comments see, [235]-[237].
The Blowfish Cipher
The Blowfish cipher encrypts 8-byte blocks of plaintext into 8-byte blocks
of ciphertext. It has a key k , with keylength variable from 32 to 448 bits,
namely, from one to fourteen 32-bit strings, stored in a K-array, K 1 ,K 2 ,...,K 14 .
The key k is used to generate eighteen 32-bit subkeys (precomputed before any
encryption or decryption occurs), and stored in a P-array, P 1 ,P 2 ,...,P 18 . There
are four 8
32 S-boxes with 256 entries each, denoted by S j, 0 ,S j, 1 ,...,S j, 255 , for
j =1 , 2 , 3 , 4. These make up the S-array. We let E P,S ( m ) denote the ciphertext
that results from using Blowfish to encipher m with arrays P and S .
×
Subkey Generation
1. Initialize P 1 and the four S-boxes with a fixed string (in a fashion that
utilizes the fractional part of π .)
2. Perform P j
K j for j =1 , 2 ,... , as often as needed to exhaust the P-
array, reusing the elements of the K-array, if necessary. For example, if
the keylength is 448 bits, then the full fourteen units of the K-array will
be utilized as follows. P j
K j for j =1 , 2 ,..., 14, Then reuse the first
four to get, P 15
K 1 , P 16
K 2 , P 17
K 3 , and P 18
K 4 .
3. Using the subkeys in steps 1 and 2, encrypt the 64-bit block consisting of
all zeros.
Search WWH ::




Custom Search