Advanced Encryption Standard

AES

AES has been developed to replace both DES and 3DES. AES was approved by the secretary of Commerce as the official federal governmental standard on May 26, 2002.
Facts of AES are as follow: -
·        The block size used by AES is 128 bits.

·        The number of round varies from 10 to 14, depending on the key length.
  •        Three key lengths are available:

1.   128 bits
2.   192 bits
3.   256 bits 
  •     Each round consists of four functions:

1)   ByteSub — nonlinear layer
2)   ShiftRow — linear mixing layer
3)   MixColumn — nonlinear layer
4)   AddRoundKey — key addition layer

·        AES treats 128-bit block as 4x4 byte array:
  •     The ByteSub operation is applied to each byte aij, that is, bij = ByteSub(aij). The result is the array of bij is:


  •        The ShiftRow operation is a cyclic shift of the bytes in each row of the 4x4 byte array. This operation is given by:
  • ü The first row does not shift.
    ü The second row circular left-shifts by one byte.
    ü The third row left shifts by two bytes.
    ü The forth row left shifts by three bytes.

    ·        The MixColumn operation is applied to each column of the 4 x 4 byte array as given below: 
  • ü MixColumn consists of shift and XOR operations.
    ü It is most effiently implemented as a lookup table.
    ü The overall operation is nonlinear.

    ·        The AddRoundKey operation is straightforward. It is similar to DES, a key schedule algorithm is used to generate a subkey for each round.The main features of AES are: -
    1)   Symmetric and parallel structure: - This gives the implementers of the algorithm a lot of flexibility. It also stands up well against cryptanalysis attacks.

    2)   Adapted to modern processor: - The algorithm works well with modern processors (Pentium, RISC, parallel).

    3)   Suited to modern processors: - The algorithm can work well with smart cards.


    In general, two version of AES are used: -

    1)    A 128-bit plain-text block combined with a 128-bit key block.

    2)    A 128-bit plane text block with a 256-bit key block.



    One-time Initialization Process: -

    a)    Expand the 16-byte key to get the actual key block to be used.

    b)    Do one-time initialization of the 16-byte plain-text block (called state).

    c)    XOR the state with the key block.


    Process in  Each Round: -

    1)    Apply s-box to each of the plain-text bytes.

    2)    Rotate row k of the plain-text block (i.e., state) by k bytes.

    3)    Perform a mix-columns operation

    4)    Matrix multiplication