AES is an acronym for Advanced Encryption Standard. It is used worldwide. It has been adopted by the government of the United States. AES was announced as the standard for encryption by the National Institute of Standards and Technology in the United States of America. DES or the Data Encryption Standard was used before the introduction of AES. DES has a relatively small key 56-bit which makes it more prone to attacks. Hence a new encryption standard was required which was introduced in November 2001 and called the Advanced Encryption Standard. The AES can have a key with a maximum size of up to 256 bits. The AES algorithm uses a cryptography scheme of a symmetric block cipher which encrypts and decrypts data. The key length of the standard keys used in AES is 128,192 and 256 bits. The AES standard specifies the Rijndael algorithm which is a symmetric block cipher that has the ability to process data blocks of 128 bits, using cipher keys with lengths of 128, 192, and 256 bits. Rijndael algorithm was designed to handle additional block sizes and higher key lengths, but they are not adopted in this standard.
The AES algorithm consists of four stages that operate in a round fashion re-iterating or repeating itself 10 times for a 128 bit length key, 12 times for a 192-bit key and 14 times for a 256-bit key.
The subytes transformation can be described as a non-linear byte substitution that works or operates independently on each byte of the state using a substitution table also known as the S-box, derived from the Rijndael algorithm. The multiplicative inverse over GF(28) is used to derive the S-box. The S-box is constructed by combining the inverse function with an invertible affine transformation (a transformation that prevents straight lines) to avoid attacks. Any fixed points and opposite fixed points are avoided while choosing the S-box.
The shiftrows transformation operates on the rows of the state. The bytes present in the last three rows of the state are cyclically shifted over different number of bytes or offsets. The first row of the array is not changed. Each byte of the second row is shifted one to the left in a cyclic order. The second and third rows are shifted two and three bytes respectively. The shifting pattern is the same for 128 bits and 192 bits of block size. In the case of 256 bit block, the first row is left unchanged and the second, third and fourth row are shifter 1 byte, 3 bytes and 4 bytes respectively.
The four bytes of each column of the state are combined using a invertible linear transformation in the mixcolumns function. The mixcolumns transformation takes four bytes as input and outputs four bytes. All the input bytes affect the output bytes. Mixcolumns and shiftrows provide diffusion in the cipher. Each column of the mixrows is treated as a polynomial over GF (28) and is then multiplied modulo x4+1 with a fixed polynomial c(x) = 0x03.
The subkey is combined with the state in the addroundkey transformation. The Rijndael's key schedule states that each subkey is the same size as the state. This method is implemented in the addroundkey transformation where for every round; the sub key is derived from the main key. By combining each byte of the state with the corresponding byte of subkey, the subkey is added.