En la década de 1990 se puso de relieve que el estándar de cifrado DES usado hasta ese momento ya no estaba a la altura del desarrollo tecnológico, de tal manera que se hacía necesario contar con otro más moderno. El algoritmo Rijndael, desarrollado por los entonces estudiantes Vincent Rijmen y Joan Daemen, se consolidó como el sucesor tras ganar la convocatoria que lanzó el NIST en 1997 para desarrollar el AES, un estándar de cifrado adaptado a la información sensible del siglo XXI. El NIST lo certificó como AES a finales del año 2000.
El sucesor de DES también subdivide el texto plano en bloques, pero el nuevo AES soporta claves de 128, 192 y 256 bits y, en lugar de utilizar bloques de 64 bits, el estándar avanzado utiliza bloques más grandes de 128 bits, que se cifran en varias rondas consecutivas con ayuda de una red de substitución-permutación (SPN). Como su antecesor, AES también usa en cada ronda una nueva subclave, que se deriva de forma recursiva de la clave inicial y se une al bloque a cifrar con XOR. El funcionamiento del algoritmo se puede subdividir grosso modo en cuatro fases:
1. Expansión de la clave: para que AES pueda utilizar una nueva subclave en cada ronda, derivada por recursión de la primera clave, esta se ha de expandir a una longitud que permita generar el número necesario de subclaves de 128 bits. Así, cada subclave se basa en un fragmento de la clave de salida expandida. El número de subclaves necesarias comprende el número de rondas (R), incluida la ronda final y una subclave para la ronda previa (R + 1).
2. Ronda previa: en la ronda previa el bloque de 128 bits se transpone en una tabla bidimensional o matriz (state) y se une con la primera subclave mediante XOR (Key Addition). La tabla comprende 4 columnas y 4 líneas. Cada casilla contiene 1 byte (8 bits) del bloque que se ha de encriptar.
3. Rondas de cifrado: el número de rondas depende de la longitud de clave utilizada, esto es, 10 rondas en AES128, 12 en AES192 o 14 en AES256. En cada ronda tienen lugar las siguientes operaciones:
- SubBytes: se trata de una substitución alfabética simple, en la cual cada byte del bloque original se sustituye por un equivalente mediante una caja-S.
- ShiftRows: en la transformación ShiftRow los bytes de las casillas de la matriz se desplazan cíclicamente hacia la izquierda.
- MixColumns: esta transformación contenida en el algoritmo AES consiste en mezclar los datos dentro de las columnas de la tabla. Este paso se basa en un recálculo de cada casilla, para lo cual las columnas se someten a una multiplicación matricial. Los resultados se unen mediante XOR.
- KeyAddition: al final de cada ronda se produce una nueva KeyAddition, es decir, una unión con la subclave, que se apoya, como en la etapa inicial, en la unión por XOR del bloque de datos o los bytes de la matriz con la subclave actual.
4. Etapa final: Esta es la última ronda de cifrado que, al contrario que las rondas anteriores, no contiene transformaciones del tipo MixColumns, comprendiendo únicamente las operaciones SubBytes, ShiftRows y KeyAddition. El resultado de esta ronda final es el texto cifrado.
El descifrado de datos encriptados con AES se basa en la inversión del algoritmo, que no solo guarda relación con la secuencia de pasos sino también con las operaciones ShiftRow, MixColumns und SubBytes, que también han de ver invertida su orientación.
AES ha demostrado una elevada seguridad debido a su algoritmo, sin conocerse bis dato ningún ataque relevante. La longitud de clave de 128 bits anula la eficacia de los ataques de fuerza bruta y las operaciones ShiftRows y MixColumns son las responsables de la mezcla óptima de los bits, porque, en definitiva, cada bit depende de la clave. Por su sencilla implementación y gran velocidad, AES se utiliza como estándar de cifrado en WPA2, SSH e IPSec y su algoritmo se usa para cifrar archivos comprimidos como 7-Zip o RAR.
Sin embargo, la información encriptada con AES solo está segura de los ataques externos mientras la clave permanezca en secreto. Como solo se usa una sola clave tanto para el cifrado como para el descifrado, este algoritmo padece los mismos problemas que todos los simétricos en relación con el intercambio de la clave, de tal modo que el uso seguro de AES se limita a aquellos campos de aplicación que no requieren un intercambio de claves o que lo permiten en un canal seguro.
No obstante, la comunicación encriptada en Internet requiere que los datos se cifren en un ordenador y se descifren en otro. Es aquí donde se han consolidado sistemas criptográficos asimétricos que posibilitan el intercambio seguro de claves simétricas o que funcionan sin necesidad de este intercambio.
Como alternativa a AES también se pueden utilizar los algoritmos simétricos MARS, RC6, Serpent y Twofish, también basados en el cifrado por bloques y también finalistas en el mismo concurso que ganó finalmente el algoritmo Rijndael. El predecesor de Twofish, Blowfish, también se sigue usando. Junto a estos, también destaca el cifrado de flujo Salsa20, desarrollado en 2005 por Daniel J. Bernstein y que se cuenta entre los finalistas del proyecto eSTREAM europeo.