## Register Now

Supported by: Please register yourself to join the community.

## Cryptography : Data Encryption Standard (DES)

Hello everyone. In this blog, I will be discussing about first Symmetric Key
Cryptography – Data Encryption Standard (DES) – in details.
DES was developed by IBM in 1970s and later standardized in public by NSA
in 1977. It is a block cipher. It encrypts data in blocks of size 64 bits
each. DES uses heavily bit operations. It uses a key of 56 bit length. The
same algorithm and the key is used for decryption process.
Actually, the original key is of 64 bit length. But for parity checking
purpose, every 8th bit is discarded from the original key, making it a
key of 56 bit length. Now what I have done here is that I took ASCII value
of each character from the plain text and the key and converted to binary
digits of 8 bit length. Now this happens that the total length of the plain
text and the key may not be an exact multiple of 64. So I appended zeroes
at the end of the plain text and the key in such a way that they become a
multiple of 64. One important thing to note is that the key size cannot be
greater than 8 characters. As each character represents 8 bits and the
size of key cannot be greater than 64 bits, hence key size cannot be
more than 8 characters.
Now divide the plain text in blocks of 64 bits. Take each block one by one.
And start encrypting them with DES. The DES involves the following steps : 1. Initial Permutation:
As the name suggests, it rearranges the first Plain Text block bits
according to the IP table. That is, the first bit of the permuted text
block will be the 58th bit of the first plain text block, the second
bit will be the 50th bit of the first plain text block and so on. Now
divide the permuted text into two halves – 32 bit Left Plain Text (LPT)
and 32 bit Right Plain Text (RPT).
2. 16 Rounds:
a) Key Transformation:
Divide the 56 bit Key into two halves – C Key (28 bit) and
D Key (28 bit). Perform Left Circular Shift to C Key and D Key
according to the Circular Left Shift Table.
After the shift, join C Key and D Key again to make Shifted Key of
56 bit.
b) Compression Permutation:
This step involves selection of 48 bits out of 56 bits of Shifted
Key. In other words, Shifted Key is compressed and permuted at the
same time. It is done according to the Compression Permutation table.
For example, the first bit of Compressed Key will be the 14th
bit of the shifted key and so on.
c) Expansion Permutation:
Recall that after Initial Permutation, we had LPT and RPT, each of 32
bit length. During this step, RPT is expanded from 32 bit to 48 bit.
Besides this, it is permuted as well. Hence the Expansion Permutation.
At first, 32 bit RPT is divided into 8 blocks of 4 bits each. Then
each 4 bit block is expanded to 6 bit block by adding two more bits.
One bit at the beginning of the 4 bit block and the other bit at the
end of that 4 bit block.
For simplicity of the computation, this process
has been stored in the Expansion Permutation table. After this step, RPT
has 8 blocks of 6 bits each, making it a 48 bit Expanded RPT.
d) XOR:
This step involves the bitwise XOR operation between the Expanded RPT
of 48 bit length and the Compressed Key of 48 bit length. This results
in the XORed RPT of 48 bit length.
e) S Box Substitution:
The XORed RPT is fed into the S Box Substitution step. Here, the XORed
RPT is again divided into 8 blocks of 6 bit each. For each block, there
is a separate S Box table which gives 4 bit output. Hence, there are 8
S Box tables corresponding to 8 blocks. For example, Block 1 will be
fed to S Box 1, Block 2 to S Box 2 and so on. S Box tables consist of
4 rows and 16 columns. Each row contains 0 to 15 numbers in haphazard
manner. These 0 to 15 numbers can be represented with 4 bits. As we know,
each block contains 6 bits, these 6 bits tell us the row number and the
column number of the S Box table corresponding to that block. The 1st
bit and the 6th bit determines the row number whereas 2nd, 3rd, 4th and
5th bits determine the column number. The value that is obtained at the
intersection of the row number and the column number is the 4 bit output
of the S Box table. So each of the 8 blocks gives 4 bit output, giving
rise to 32 bit S Box RPT.
f) P Box Permutation:
In this step, S Box RPT will be permuted according to the P Box table
giving rise to P Box RPT.
g) XOR and Swap:
During all these operations, the LPT was left untouched so far. So in
this step, P Box RPT of 32 bit length and the untouched LPT of 32 bit
length is XORed. The XORed text is stored in the RPT and the original
RPT is stored in the LPT. After this, again the next round starts.
That is why it is called 16 Rounds.
3. At the end of the 16 rounds, the Final Permutation is done on the combined
LPT and RPT giving rise to 64 bit first Cipher Text block. It is done
according to the Final Permutation table.
4. All the previous steps i.e. 1,2 and 3 is performed for all the other Plain
Text blocks to get the corresponding Cipher Text blocks. At the very end,
all the Cipher Text blocks are combined to obtain the final cipher text.
In this modern world, people don’t use Single DES as it is vulnerable to
heavy attacks. That’s why they prefer more Double DES and Triple DES.
In Double DES, DES is done twice with 2 different keys.
In Triple DES, DES is done thrice. Here Triple DES can be performed with
3 keys or even 2 keys.
Here is the link to my complete blog:
That’s the end of this blog. I hope you find my blogs useful. Till then
stay tuned and keep coding.