Feistel Cipher Structure

Feistel Cipher Structure, invented by Horst Feistel, is the most common basic #cipher structure adopted by various schemes.

First, it starts its cipher process halving input blocks, which then perform substitution# on left data half based on round function with right halve and subkey as parameters. After that, it performs a permutation# by swapping the halves. The process is then repeated for multiple rounds. The process is shown as formula below:

$$ \begin{aligned} P &= (L_0, R_0)\\ L_i &= R_{i-1}\\ R_i &= L_{i-1} \oplus F(R_{i-1}, K_i)\\ C &= (L_n, R_n) \end{aligned} $$

Where:

  • \(P\) is the plaintext
  • \(L\) indicates the left halve
  • \(R\) indicates teh right halve
  • \(i = 1, 2, \ldots, n\)
  • \(n\) is the number of rounds
  • \(K\) is the subkey
  • \(F\) is the round function used

Note: Remember that the after the round function is performed on the left, the right will swap with the left. This means that the right becomes the new left, and the rounded left becomes the new right.

To decrypt the encrypted (by Feistel Cipher) message, simply put the subkeys in reverse order using the same algorithm.

When designing a Feistel Cipher, several elements need to be considered such as block size, key size, number of rounds, subkey generation algorithm, round function, fast software encryption and/or decryption, and ease of analysis.

Links to this page
#cryptography