Proceso de Cifrado

El algoritmo AES (Advanced Encryption Standard) tiene un tamaño fijo de bloque de 128 bits a la hora de cifrar. El tamaño de la clave, sin embargo, puede ser de 128, 192 ó 256 bits.

El proceso de cifrado consta de un número variable de rondas que depende exclusivamente del tamaño de la clave, 10 rondas en caso de que la clave sea de 128 bits, 12 rondas para claves de 192 y por último 14 rondas para las de 256.

AES opera sobre una matriz de 4x4 bytes, denominada state sobre la que va realizando las modificaciones pertinentes.

El esquema del proceso es el siguiente:

1 - Expansión de la clave usando el esquema de claves de Rijndael.

2 - Etapa inicial:
AddRoundKey

3 - Rondas:
SubBytes - Se realiza una sustitución no lineal donde cada byte es reemplazado con otro de acuerdo a una tabla de búsqueda.
ShiftRows - En este paso se realiza una transposición donde cada fila del state es rotada de manera cíclica un número determinado de veces.
MixColumns - operación de mezclado que opera en las columnas del state, combinando los cuatro bytes en cada columna usando una transformación lineal.
AddRoundKey - cada byte del state es combinado con la clave de ronda; cada clave de ronda se deriva de la clave de cifrado usando una iteración de la clave.

4 - Etapa final, en la que se realizan las siguientes operaciones:
SubBytes
ShiftRows
AddRoundKey

El bloque 3 correspondiente a las rondas es el que se repite dependiendo del tamaño de la clave. Para claves de 128 bits, donde el número de rondas es 10, este bloque se repitiría un total de 9 veces que más la ronda final (en la que no se realiza el proceso de MixColumns) darían las 10 rondas de las que hablábamos. Para tamaños de clave superiores, el recorrido sería análogo.