Advanced Encryption Standard (AES)
The more popular and widely adopted symmetric encryption algorithm likely to be encountered nowadays is the Advanced Encryption Standard (AES). It is found at least six times faster than triple DES.
A replacement for DES was needed as its key size was too small. With increasing computing power, it was considered vulnerable to exhaustive key search attack. Triple DES was designed to overcome this drawback but it was found slow.
The features of AES are as follows
- Symmetric key symmetric block cipher o 128-bit data, 128/192/256-bit keys o Stronger and faster than Triple-DES.
- Provide full specification and design details o Software implementable in C and Java.
AES Standard: Advanced Encryption Standard (AES)
- The figure shows the overall structure of the AES encryption process.
- Plain text block size is 128 bits (16 bytes).
- Key size depends on the number of round 128, 192, or 256 bit as shown in a table.
- Based on key size AES is named as AES-128, AES-192, or AES-256.
- The input 128-bit block, this block is arranged in the form of 4 X 4 square matrix of bytes. This block is copied into the state array, which is modified at each stage of encryption or decryption. After the final stage, State is copied to an output matrix.
- There is an initial single transformation (AddRoundKey) before the first round which can be considered Round 0.
- The first N-1 rounds consist of four distinct transformation function: SubBytes, ShiftRows, MixColumns, and AddRoundKey, which are described subsequently.
- The final round contains only first three transformations of above ground.
- Each transformation takes one or more 4 X 4 matrices as input and produces a 4 X 4 matrix as output.
- The key expansion function generates N+1 round key each of which is distinct 4 X 4 matrices. Each round key serves as one of the inputs to the AddRoundKey transformation in each round.
Detail Structure: Advanced Encryption Standard (AES)
The figure shows detail encryption-decryption process of AES.
Let’s discuss Several comments about AES structure:
- It is not a Feistel structure. As we know in Feistel structure half of the data block is used to modify the other half of the data block and then the halves are swapped. While in AES we use full data block as a single matrix during each round.
- The key is expanded into an array of forty-four 32-bit words. And such four word (128-bit) serves as round key for each round.
- Four different stages are used one of permutation and three of substitution:
- SubBytes: Uses an S-box to perform a byte-by-byte substitution of the block.
- ShiftRows: A simple permutation.
- MixColumns: A substitution that makes use of arithmetic over bytes.
- AddRoundKey: A simple bitwise XOR of the current block with a portion of the expanded key.
- The structure is quite simple for both encryption and decryption it begins with AddRoundKey, followed by nine rounds of all four stages, followed by a tenth round of three stages.
- Only AddRoundKey stage use key, for this reason, the cipher begins and ends with an AddRoundKey stage. Any other stage, applied at the beginning or end, is reversible without knowledge of the key and so would add no security.
- The AddRoundKey stage is in effect, a form of Vernam cipher and by itself would not be formidable. The other three stages together provide confusion, diffusion, and nonlinearity, but by themselves would provide no security because they do not use the key.
- Each stage is easily reversible.
- In AES decryption algorithm is not identical to the encryption algorithm.
- Once it is established that all four stages are reversible, it is easy to verify that decryption does recover the plain text.
- For making AES reversible the final round of both encryption and decryption are consists of only three stages.