Advanced Encryption Standard (AES)
Introduction: The Advanced Encryption Standard (AES) is a symmetric-key block cipher published by
the National Institute of Standards and Technology (NIST) in December 2001. Algorithm was proposed
by Rijndael the reason also called Rijndael encryption algorithm. Advance encryption standard is a
replacement of Data encryption standard
Features of AES:
✓ Block encryption implementation
✓ 128-bit group encryption with 128, 192 and 256-bit key lengths
✓ Symmetric algorithm requiring only one encryption and decryption key
✓ Data security for 20-30 years
✓ Worldwide access
✓ No royalties
✓ Easy overall implementation
General design of AES encryption:
State Array:
✓ It is an 4x4 matrix
✓ It stores intermediate data
✓ This all can be read as So,1 “First byte of 0th word”, S2,1 “First byte of 2nd word”
Structure of each round:
Transformation:
✓ Sub bytes
✓ Shift rows
✓ Mix Columns
✓ Add round key
Sub bytes
➢ Sub Bytes for byte-by-byte substitution during the forward process. The corresponding
substitution step used during decryption is called InvSubBytes.
➢ This step consists of using a 16 × 16 lookup table to find a replacement byte for a given byte in
the input state array.
➢ The entries in the lookup table are created by using the notions of multiplicative inverses in GF
(28) and bit scrambling to destroy the bit-level correlations inside each byte
Shift rows
Each of the four rows of the matrix is shifted to the left. Any entries that ‘fall off’ are re-inserted
on the right side of row. Shift is carried out as follows −
➢ First row is not shifted.
➢ Second row is shifted one (byte) position to the left.
➢ Third row is shifted two positions to the left.
➢ Fourth row is shifted three positions to the left.
➢ The result is a new matrix consisting of the same 16 bytes but shifted with respect to each
other.
Mix columns
➢ Each column of four bytes is now transformed using a special mathematical function.
➢ This function takes as input the four bytes of one column and outputs four completely new
bytes, which replace the original column.
➢ The result is another new matrix consisting of 16 new bytes.
➢ It should be noted that this step is not performed in the last round.
Add round key
➢ The 16 bytes of the matrix are now considered as 128 bits and are XORed to the 128 bits of the
round key.
➢ If this is the last round then the output is the ciphertext.
➢ Otherwise, the resulting 128 bits are interpreted as 16 bytes and we begin another similar
round.