AES (Advanced Encryption Standard) overview: Part II
In Part I of the Overview of AES (Advanced Encryption Standard) the most relevant aspects of AES and SBox was described. Now, we discuss some details of the socalled transformations (ByteSub, ShiftRow, MixColumns and AddRoundKey) and the subkey generation process. To see more details in a more dynamic way the Rijndael Animation application is recommended.
ByteSub
This transformation performs a bytebybyte substitution in each of the state matrix elements, ie, the state matrix [a_{ij}] is replaced by the matrix [S_{ij}], Figure # 1 shows this process. Using Rijndael Animation [1] application, it can be seen as the first byte of the state matrix ([a_{00}]) is divided into two groups of four bits each one and they are used as pointers to the SBox rows and columns, respectively, for replacement, in Figure # 1 is shown how the value 19 will be replaced by d4.
Figure # 1: SBox use [1].
ShiftRow
ShiftRow applies circular left shifts, to each state matrix rows as follows: first row zero shifts, second row one shift, third row two shifts and fourth row three shifts, thus, the resultant matrix can be seen in Figure # 2.
Figure # 2: ShiftRow transformation [2].
MixColumns
This transformation allows mixing the bytes of the columns, considering the bytes of each column as polynomials whose coefficients belong to GF(2^{8}). This function consists in multiplying the columns modulus x4+1 by the polynomial c(x) where:
c(x)=03x^{3}+01x^{2}+01x+02
or, in matrix form,
By using Rijndael Animation application [1], we can check the result of applying the above procedure, to the first column in the state matrix (see Figure # 3), which is going to be replaced in the first column of the new matrix .
Figure # 3: MixColumns transformation [1].
AddRoundKey
Let [a_{ij}] be the state matrix and [k_{ij}] the key matrix corresponding to that round. The AddRoundKey function, consists in performing a xor between state and key matriz (Figure # 4), and then, replace it with the appropriate value.
AddRoundKey_{AES128bits}=[a_{ij}]xor[k_{ij}]
Figure # 4: AddRoundKey transformation [2].
Subkey generation
This process permits to generate subkeys from the system key. The key is extended to a list of 4byte words called W, and containing N_{b}(N_{r}+1) words, where,
N_{r}=Max(N_{k},N_{b})+6=Número de rondas
The firsts N_{k} elements of W correspond to the key. The rest of the W elements are defined recursively, using SubByte function, cyclic shifts and xor operations. The Figure # 5 shows it.
Figure # 5: Expansion of keys [3].
Now the RotByte function is used, which returns a word whose bytes are cyclically shifted one position to the left.
R_{con}[i]=(RC[i],0x00,0x00,0x00)
being RC[i] an GF[2^{8}] element, defined by:
RC[1]=0x01, RC[i]=0x02*RC[i1]
Now, for N_{k}<=6 and for all i that is not a multiple of N_{k}, the keywords are calculated:
W(i)=W(iN_{k}) xor W(i1)
and for all i multiple of N_{k}, the keywords are calculated:
W(i)=W(iN_{k}) xor [ByteSub(RotByte[W(i1)]) xor R_{con}(i/N_{k})]
In the case of N_{k}>6 the operation is the same used for N_{k}<=6, except when i satisfies i mod N_{k}=4 the subkeys are calculated:
W(i)=W(iN_{k}) xor ByteSub(W[i1])
Referencias
 http://www.formaestudio.com/rijndaelinspector/
 J A. AES  Advanced Encryption Standard. (2005) Versión 2005: .
 A M. Seguridad Europea para EEUU Algoritmo criptográfico Rijndael. Madrid (2004) : .
 Joan Daemen VR. AES Proposal: Rijndael. NIST AES Proposal (1998) : .
 http://www.cryptosystem.net/aes/
 http://www.criptored.upm.es
 http://www.kriptopolis.es
Luis Sequeira
Luis Sequeira is an IT professional with experience in cloud environments, quality of service and network traffic analysis, who loves looking for solutions to engineering challenges, share knowledge. At work, the main challenge is to integrate different network and software technologies to provide solution in a wide range of areas, e.g., virtual network functions, machine learning, autonomous driving, robotics and augmented reality.
Website: https://www.luissequeira.comRelated items
Latest from Luis Sequeira
3 comments

I reckon something genuinely interesting about your blog so I saved to fav.

I gotta favorite this internet site it seems invaluable handy

I’m not that much of a internet reader in truth however your site is
very nice, keep writing! I’ll go ahead and bookmark your site to return later.
Good luck.