Data Encryption Standard
Data Encryption Standard
Data Encryption Standard
The Data Encryption Standard (DES) is a symmetric-key block cipher published by the
National Institute of Standards and Technology (NIST).
DES is an implementation of a Feistel Cipher. It uses 16 round Feistel structure. The block
size is 64-bit. Though, key length is 64-bit, DES has an effective key length of 56 bits, since
8 of the 64 bits of the key are not used by the encryption algorithm (function as check bits
only). General Structure of DES is depicted in the following illustration −
Since DES is based on the Feistel Cipher, all that is required to specify DES is −
Round function
Key schedule
Any additional processing − Initial and final permutation
Initial and Final Permutation
The initial and final permutations are straight Permutation boxes (P-boxes) that are inverses
of each other.
Round Function
The heart of this cipher is the DES function, f. The DES function applies a 48-bit key to the
rightmost 32 bits to produce a 32-bit output.
Expansion Permutation Box − Since right input is 32-bit and round key is a 48-bit, we first
need to expand right input to 48 bits.
XOR (Whitener). − After the expansion permutation, DES does XOR operation on
the expanded right section and the round key. The round key is used only in this
operation.
Substitution Boxes. − The S-boxes carry out the real mixing (confusion). DES uses 8
S-boxes, each with a 6-bit input and a 4-bit output.
There are a total of eight S-box tables. The output of all eight s-boxes is then
combined in to 32 bit section.
Straight Permutation − The 32 bit output of S-boxes is then subjected to the straight
permutation
Key Generation
The round-key generator creates sixteen 48-bit keys out of a 56-bit cipher key. The process of
key generation is depicted in the following illustration −
DES Analysis
The DES satisfies both the desired properties of block cipher. These two properties make
cipher very strong.
Avalanche effect − A small change in plaintext results in the very great change in the
ciphertext.
Completeness − Each bit of ciphertext depends on many bits of plaintext.
Feistel Cipher
Feistel Cipher is not a specific scheme of block cipher. It is a design model from which many
different block ciphers are derived. DES is just one example of a Feistel Cipher. A
cryptographic system based on Feistel cipher structure uses the same algorithm for both
encryption and decryption.
Encryption Process
The encryption process uses the Feistel structure consisting multiple rounds of processing of
the plaintext, each round consisting of a “substitution” step followed by a permutation step.
The input block to each round is divided into two halves that can be denoted as L and
R for the left half and the right half.
In each round, the right half of the block, R, goes through unchanged. But the left half,
L, goes through an operation that depends on R and the encryption key. First, we
apply an encrypting function ‘f’ that takes two input − the key K and R. The function
produces the output f(R,K). Then, we XOR the output of the mathematical function
with L.
In real implementation of the Feistel Cipher, such as DES, instead of using the whole
encryption key during each round, a round-dependent key (a subkey) is derived from
the encryption key. This means that each round uses a different key, although all these
subkeys are related to the original key.
The permutation step at the end of each round swaps the modified L and unmodified
R. Therefore, the L for the next round would be R of the current round. And R for the
next round be the output L of the current round.
Above substitution and permutation steps form a ‘round’. The number of rounds are
specified by the algorithm design.
Once the last round is completed then the two sub blocks, ‘R’ and ‘L’ are
concatenated in this order to form the ciphertext block.
For Encryption:
Li = Ri-1
Ri=Li-1 XOR (f(Ri-1,Ki)