Expansión de la clave de Rijndael (AES)
Cómo la expansión de clave Rijndael (AES) transforma una clave secreta en claves de ronda: operaciones, diferencias entre 128/192/256 bits y notas de seguridad e implementación.
La expansión de clave de Rijndael es el procedimiento determinista que amplía una clave secreta corta hasta convertirla en el conjunto de claves de ronda usadas por el Advanced Encryption Standard (AES). AES implementa Rijndael con un bloque fijo de 128 bits y tres longitudes de clave (128, 192 y 256 bits). La expansión transforma la clave original en una secuencia de claves de ronda de 128 bits, una para cada ronda del cifrado más la clave inicial, de modo que el cifrado pueda mezclar material de clave en el estado en cada ronda.
Estructura básica y terminología
La expansión trabaja en unidades llamadas palabras de 32 bits (a menudo denotadas w[i]). AES usa Nb=4 palabras por clave de ronda (128 bits). La clave inicial aporta Nk palabras, donde Nk es 4, 6 u 8 para claves de 128, 192 y 256 bits, respectivamente. La programación completa de claves produce Nb*(Nr+1) palabras en total; por ejemplo, AES-128 genera 44 palabras (11 claves de ronda), AES-192 genera 52 palabras y AES-256 genera 60 palabras.
Operaciones básicas
Durante la expansión se aplican repetidamente tres transformaciones pequeñas:
- RotWord: rota los cuatro bytes de una palabra una posición hacia la izquierda.
- SubWord: aplica la S-box de AES a cada byte de una palabra (una sustitución byte a byte no lineal).
- Rcon: hace XOR con una constante dependiente de la ronda en el byte de mayor orden de una palabra; estas constantes provienen de potencias de 2 en el campo finito GF(2^8).
Esquema del algoritmo
La programación de claves suele describirse como un bucle sencillo. Partiendo de las Nk palabras de la clave, cada nueva palabra w[i] se deriva de palabras anteriores. En términos concisos:
- Sea temp = w[i-1].
- Si i mod Nk == 0, establecer temp = SubWord(RotWord(temp)) XOR Rcon[i/Nk].
- En caso contrario, si Nk > 6 y i mod Nk == 4, establecer temp = SubWord(temp). (Esto se aplica en AES-256.)
- Entonces w[i] = w[i-Nk] XOR temp.
Los grupos de cuatro palabras consecutivas forman cada clave de ronda de 128 bits; estas se usan directamente en el paso AddRoundKey de AES.
Diferencias entre tamaños de clave
- AES-128 (Nk=4, Nr=10): cada cuarta nueva palabra usa RotWord+SubWord+Rcon; total de 44 palabras (11 claves de ronda).
- AES-192 (Nk=6, Nr=12): lógica similar con Nk=6; total de 52 palabras (13 claves de ronda).
- AES-256 (Nk=8, Nr=14): además de la regla Nk==0, cada palabra cuyo índice mod Nk sea 4 recibe un SubWord aislado; total de 60 palabras (15 claves de ronda).
Historia, motivación y notas de seguridad
La expansión de clave de Rijndael fue diseñada para ser simple y para permitir una implementación eficiente en software y hardware, al tiempo que proporciona una difusión suficiente del material de clave a lo largo de las rondas. Las operaciones pequeñas y orientadas a bytes encajan con la S-box de AES y con la estructura por bytes del estado. Con el tiempo, los criptanalistas han estudiado la programación de claves: existen algunos ataques teóricos de clave relacionada contra variantes de rondas reducidas o casos de uso atípicos, pero el AES estándar con claves independientes y el uso recomendado sigue considerándose ampliamente seguro. Quienes lo implementan deben tener presente la fuga por canales laterales: la expansión puede precalcularse, pero hay que evitar exposiciones por tiempo de ejecución o por caché al expandir claves en tiempo real.
Implementación y referencias
La mayoría de las implementaciones prácticas precalculan una vez el conjunto completo de claves de ronda y lo almacenan en una forma de memoria adecuada para el bucle del cifrado. Las optimizaciones equilibran memoria y velocidad; por ejemplo, calcular las claves bajo demanda frente a almacenar todas las claves de ronda. Para detalles formales y vectores de prueba, consulte la especificación de AES o referencias formales: especificación de la programación de claves AES.
Artículos relacionados
Autor
AlegsaOnline.com Expansión de la clave de Rijndael (AES) Leandro Alegsa
URL: https://es.alegsaonline.com/art/82924