36.6.1 Principle of Operation

The following is a high level description of the algorithm. These are the steps:

  • KeyExpansion: Round keys are derived from the cipher key using Rijndael's key schedule.
  • InitialRound:
    • AddRoundKey: Each byte of the state is combined with the round key using bitwise XOR.
  • Rounds:
    • SubBytes: A non-linear substitution step where each byte is replaced with another according to a lookup table.
    • ShiftRows: A transposition step where each row of the state is shifted cyclically a certain number of steps.
    • MixColumns: A mixing operation which operates on the columns of the state, combining the four bytes in each column.
    • AddRoundKey
  • Final Round (no MixColumns):
    • SubBytes
    • ShiftRows
    • AddRoundKey

The relationship between the module's clock frequency and throughput (in bytes per second) is given by:

Clock Frequency = (Throughput/2) x (Nr+1) for 2 byte parallel processing

Clock Frequency = (Throughput/4) x (Nr+1) for 4 byte parallel processing

where Nr is the number of rounds, depending on the key length.