# Block Cipher Encryption Method

January 6, 2016 | Views: 7316

Block Cipher

Block Cipher is an encryption method where the encryption algorithm operates on a plaintext block of n bits and produces a block of n bits ciphertext. Block Cipher has 2^n possible different plaintext block to encrypt.

Nonsingular Transformation:

Nonsingular Transformation means the encryption algorithm must be reversible (Nonsingular) to decrypt the ciphertext into the original plaintext. The ciphertext must be unique for each plaintext block.

Example:

Encryption Block Cipher with a plaintext block length n=4 bits and ciphertext, with 2^4=16 possible input states.

plaintext | Ciphertext
0000          0101
0001          0111
0010          1001
0011          0000
0100          1100
0101          0110
0110          1010
0111          0011
1000          1011
1001          1000
1010          0010
1011          1111
1100          1110
1101          0001
1110          0100
1111          1101

This example has 16 possible input states, with a Nonsingular transformation (as you can see in the next table.)

Ciphertext | Plaintext
0000          0011
0001          1101
0010          1010
0011          0111
0100          1110
0101          0000
0110          0101
0111          0001
1000          1001
1001          0010
1010          0110
1011          1000
1100          0100
1101          1111
1110          1100
1111          1011

This algorithm is reversible (Nonsingular).

There’s a problem with a small block size n in that this system is vulnerable to statistical analysis. Yet, if n is large enough, the statistical analysis will be much harder.

Also, it’s not practical to establish a large enough reversible substitution cipher (the ideal block cipher). The solution to this problem is Feistel Cipher:

Feistel Cipher:

Feistel proposed that we can approximate the ideal block cipher system for large n, built up by components that are easily realizable. This is the execution of 2 or more simple ciphers in sequence and the result is a strong encryption.

The required form of this approach is to develop a block cipher with a key length = k bits, and a block length = n bits with a total possible transformation = 2^k rather than 2^n.

Feistel Structure:

Feistel Cipher consists of a number of identical rounds of processing. In each round, a substitution is preformed on one half of data being processed followed by a permutation that interchanges the two halves. The original key is expanded so that a different key is used for each round.

image courtesy of Amirki

Feistel Encryption Algorithm:

The Feistel Encryption Algorithm (the left hand side): inputs to a encryption algorithm are a plaintext block of length – 2w bits and key K.

The plaintext is divided into two halves Lo and Ro, which pass through n rounds of processing. Each round i has inputs – Li-1 and Ri-1. Then, they’re combined to produce the ciphertext block.

The subkey Ki is derived from the overall K; Ki is different from K and from each other.

Feistel Cipher actually performs two operations:

1- A substitution is performed on the left half of data by applying a round function F to the right half of data, then by doing XOR the output of round function F with the left half of data.

The round function F has the same structure every round, but there’s a change in parameter subkey Ki for each round.

2- A permutation is performed, which consists of interchanges on the two halves of data.

Feistel Cipher structure is form of substitution permutation network (SPN).

Feistel Decryption Algorithm:

Feistel Decryption Algorithm (the right hand side): inputs to decryption algorithm are ciphertext and subkey Ki but in reverse order. It starts start with Kn then Kn-1 ans so on until K1 in the last round.

Note #1: At every round the value of encryption algorithm is equal to the corresponding value(n-ith) of decryption algorithm, but the two halves are swapped.

For example, in a system with 16 rounds, the value of 5th round in encryption algorithm is equal to the value of 12th round of decryption algorithm, but L and R are swapped.

Note #2: The round function F is not required to be a reversible function.

Feistel Cipher Parameters and Design Features:

1- Block size: Large block size means greater, but reduced encryption and decryption speed.

2- Key size: Large key size mean greater security, but may also reduce the encryption and decryption speed.

3- Number of rounds: Increasing security can be achieved by increasing the number of rounds.

4- Round Function F: Increasing the complexity of round function F increasing the resistance to cryptanalysis.

5- Subkey generation algorithm: Increasing of complexity here also increases the resistance to cryptanalysis.

Thanks and I hope this was useful to you!

Share with Friends
Use Cybytes and
Tip the Author!
Share with Friends

2. is still Feistel Cipher is secure?

3. Wow cool…………

### Our Revolution

We believe Cyber Security training should be free, for everyone, FOREVER. Everyone, everywhere, deserves the OPPORTUNITY to learn, begin and grow a career in this fascinating field. Therefore, Cybrary is a free community where people, companies and training come together to give everyone the ability to collaborate in an open source way that is revolutionizing the cyber security educational experience.

### Support Cybrary

Donate Here to Get This Month's Donor Badge

### Cybrary|0P3N

We recommend always using caution when following any link

Are you sure you want to continue?

Continue
Cancel