Advanced Encryption Standard (AES), tamén coñecido como Rijndael, é un esquema de cifrado por bloque adoptado como un estándar de encriptación polo goberno estadounidense, e esperase que sexa usado en todo o mundo, como tamén analizado exhaustivamente, como foi o caso do seu predecesor, o DES. Foi adoptado polo Instituto Nacional de Estándares e Tecnoloxía (NIST) como un FIPS (PUB 197) en novembro do 2001 despois de 5 anos do proceso de estandarización.
O cifrado foi desenvolvido por dous criptologos Belgas, Joan Daemen e Vincent Rijmen, e enviado ó proceso de selección AES baixo o nome "Rijndael".
Descrición do cifrado
Estritamente falando, AES non é precisamente Rijndael (aínda que na práctica chamaselle de maneira indistinta) xa que Rijndael permite un maior rango de tamaño de bloque e clave; AES ten un tamaño de bloque fixo de 128 bits e tamaños de chave de 128, 192 ó 256 bits, mentres que Rijndael pode ser especificado por unha clave que sexa múltiplo de 32 bits, cun mínimo de 128 bits e un máximo de 256 bits.
A maioría dos cálculos do algoritmo AES fanse nun campo finito determinado.
AES opera nun arranxo de 4×4 bytes, chamado state (algunhas versións de Rijndael cun tamaño de bloque maior teñen columnas adicionais no state). Para o cifrado, cada rolda da aplicación do algoritmo AES (excepto a última) consiste en catro pasos:
SubBytes — neste paso realizase unha substitución non lineal onde cada byte é substituído por outro seguindo unha táboa lookup table.
ShiftRows — neste paso realizase unha transposición onde cada fila do state é rotado de maneira cíclica un número determinado de veces.
MixColumns — operación de mesturado que opera nas columnas do «state», combinando os catro bytes en cada columna usando unha transformación lineal.
AddRoundKey — cada byte do «state» é combinado coa clave «round»; cada clave «round» deriva da clave de cifrado usando unha key schedule.