AES Functional Description
663
SLAU723A – October 2017 – Revised October 2018
Copyright © 2017–2018, Texas Instruments Incorporated
Advance Encryption Standard Accelerator (AES)
Table 9-1. Key-Block Round Combinations
Key
Key Length
(Nk)
Block Size (Nb)
Number of
Rounds (Nr)
128 bits
4
4
10
192 bits
6
4
12
256 bits
8
4
14
The AES algorithm for cipher and inverse cipher uses a round function composed of four different byte-
oriented transformations, as follows:
•
Byte substitution using a substitution table (S-Box)
This transformation is a nonlinear byte substitution that operates independently on each byte of the
state (the state is an intermediate processed block of 128 bits inside the AES, arranged as an array of
[4 x Nk] bytes) using an S-Box. This S-Box transformation is reversible.
•
Shifting rows of the state array by different offsets
In this transformation, the bytes in the last three rows of the state are cyclically shifted over different
numbers of bytes (offsets). The first row (r = 0) is not shifted.
•
Mixing the data within each column of the state array
This transformation operates on the state column-by-column, treating each column as a four-term
polynomial. The columns are considered polynomials over GF(2
8
) and multiplied modulo ×
4
+ 1 with a
fixed polynomial a(x).
•
Adding a round key to the state
In this transformation, a round key is added to the state using a simple bitwise XOR operation. Each
round key consists of Nb words from the key schedule.
The AES algorithm takes the cipher key (K) and performs a key expansion routine to generate a key
schedule. The key expansion generates a total of Nb × (Nr + 1) words. The algorithm requires an initial set
of Nb words, and each of the Nr rounds requires Nb words of key data. The resulting key schedule
consists of a linear array of 4-byte words, denoted [w
i
], with i in the range 0
≤
i < Nb × (Nr + 1).
9.2.3 AES Operating Modes
9.2.3.1
Supported Modes of Operation
9.2.3.1.1 ECB Feedback Mode
shows the basic ECB feedback mode of operation, where the input data is passed directly to
the basic cryptographic core and the output is passed directly to the output buffer.
For decryption, the cryptographic core operates in reverse: the decryption data path is used for data
processing, whereas encryption uses the encryption data path.