0
21kviews
Explain Blowfish Algorithm
3
927views

Blowfish Algorithm

• Blowfish was developed by Bruce Schneier. It is very strong symmetric key cryptographic algorithm.

Features of Blowfish:

• Fast: Blowfish encryption state on 32 bit microprocessors.

• Compact: Blowfish can execute in less than 5KB memory

• Simple: Blowfish uses only primitive operations such as addition, XOR and table lookup making its design and manipulation simple

• Secure: Blowfish has a variable key length up to a maximum of 448 long, making it both flexible and secure

Operations: (Blowfish encrypts 64-bit block with a variable-length key)

1) Subkey Generation: This process covert the key up to 448 bit long to subkeys totaling 7168 bits

2) Data Encryption : This process involves the iteration of a simple function 16 times. Each round contains a key-dependent permutation and key and data substitution

• Blowfish is a very fast algorithm which takes 64 bit input as plaintext and generates 64 bit output ciphertext

• It uses the concept of P-array which uses 32 bit subkeys and there are 18 P-arrays $P_1 \ to \ P_{18}$

• Blowfish Algorithm runs 16 times i.e. 16 rounds

Processes:

1. Subkey Generation:
• Key Size is variable but blowfish algorithm generates very large sub-keys . The key size is in the range of 32 bits to 448 bits or 14 words.

• Concept of P-array consists of 18, 32 bit sub-keys

• There are 4 S-boxes containing 256 entries of 32 bits

• P-array is initialized first then four s boxes with fixed string

• Then P-arryas are XORed with subkeys ie from $P_1 \ to \ P_{18}$ . Once the sub keys are generated the encryption process begins.

1. Data encryption and decryption:
• We use the P arrays and S boxes during this process

Algorithm for encryption of 64 bit block

1. Divide X into two blocks XL and XR of equal sizes. Thus both XL and XR will consist of 32 bit each

2. For i=1 to 16

$\hspace{1.5cm}$XL = XL ⊕ $P_i$

$\hspace{1.5cm}$XR = f(XL) ⊕ XR

$\hspace{1.5cm}$Swap XL ,XR

$\hspace{1.5cm}$(undo last swap)

1. XR = XR ⊕ $P_{17}$

2. XL = XL ⊕ $P_{18}$

3. Concatenate XL and XR back into X to get ciphertext CT

Function f is as follows

$\hspace{1.5cm}$a. Divide the 32 bit XL block into four 8 bit sub blocks named a, b, c, d

$\hspace{1.5cm}$b. Compute f(a,b,c,d) = $((S_1[a ] + S_2[b] mod 2^{32}) ⊕ S_3[c])⊕ S_4 [d] mod 2^{32}$

Blowfish Decryption