AES es un sistema de cifrado simétrico, lo cual significa que se utiliza la misma clave para cifrar y para descifrar. AES basa toda su seguridad en la clave, ya que el algoritmo de cifrado/descifrado es conocido. El principal problema de seguridad que tiene es el intercambio de esta clave, ya que para un posible atacante es más fácil intentar interceptar esta clave que averiguar la misma.
Pasemos a explicar el proceso de descifrado de AES. Al igual que a la hora de cifrar, AES opera sobre una matriz de 4x4 bytes llamda state. En cuanto a la clave, ésta puede ser de 128, 192 o 256 bits. Este tamaño de clave marcará el número de rondas que se harán durante el desarrollo del descifrado: 10, 12 o 14.
El proceso a realizar sería el siguiente:
1 - Expansión de la clave. Se usa el esquema de claves de Rijndael.
2 - Etapa inicial:
AddRoundKey
3 - Rondas:
InvShiftRows - Transposición circular de los bytes de las filas.
InvSubBytes - Se aplica una sustitución inversa mediante cajas-S a cada byte del state
AddRoundKey - cada byte del state es combinado con la clave de ronda, obtenida esta mediante una operación XOR.
InvMixColumns - Complejo mezclado de columnas usando una transformación lineal sobre las columnas.
4 - Etapa final, en la que se realizan las siguientes operaciones:
InvShiftRows
InvSubBytes
AddRoundKey
Las fases de la tercera ronda son las que se repiten dependiendo del número de bits de la clave.