AES (Advanced Encryption Standard) es un algoritmo de cifrado simétrico por bloques que transforma datos en claro en datos cifrados mediante una serie de rondas de sustitución, permutación y mezcla sobre bloques de 128 bits usando la misma clave para cifrar y descifrar.
Conceptos básicos de AES
AES es un cifrado simétrico: la misma clave secreta se usa tanto para cifrar como para descifrar. Opera sobre datos organizados en bloques de 128 bits, independientemente de que la clave sea de 128, 192 o 256 bits.
El algoritmo trabaja sobre una matriz de estado de 4×4 bytes (16 bytes = 128 bits), donde cada byte se va transformando mediante operaciones bien definidas. La longitud de la clave determina cuántas rondas de transformación se aplican: 10 rondas para 128 bits, 12 para 192 bits y 14 para 256 bits.
Estructura general del cifrado
AES pertenece a la familia de redes de sustitución‑permutación (SPN), donde en cada ronda se sustituyen bytes y se permutan filas y columnas para difundir la información por todo el bloque. El proceso de cifrado incluye una ronda inicial, varias rondas intermedias y una ronda final ligeramente diferente.
El flujo típico de cifrado de un bloque es:
Expansión de la clave maestra en subclaves de ronda.
Ronda inicial: combinación del bloque con la primera subclave.
Rondas intermedias: se repiten operaciones de sustitución de bytes, desplazamiento de filas, mezcla de columnas y combinación con subclave.
Ronda final: igual que las intermedias, pero omitiendo la mezcla de columnas.
Bloques, estado y tamaños de clave
AES toma el texto plano y lo divide en bloques de 128 bits; cada bloque se trata de forma independiente dentro del modo de operación elegido (CBC, GCM, etc., aunque esos modos se definen aparte del núcleo AES). Internamente, el bloque de 128 bits se interpreta como 16 bytes dispuestos en una matriz de 4 filas por 4 columnas, denominada estado.
Las claves pueden ser de 128, 192 o 256 bits, lo que ofrece diferentes niveles de seguridad y número de rondas: 10, 12 y 14 respectivamente. La clave original se procesa mediante un algoritmo de expansión para generar un conjunto de subclaves de 128 bits, una por cada ronda más una inicial.
Expansión de clave (Key Schedule)
La expansión de clave toma la clave maestra de 128/192/256 bits y genera una secuencia de claves de ronda, cada una del tamaño del bloque (128 bits). Este proceso introduce constantes y sustituciones no lineales para evitar que patrones simples en la clave se trasladen directamente a las subclaves.
En términos conceptuales, el algoritmo de expansión:
Divide la clave en palabras de 32 bits.
Genera nuevas palabras mediante rotaciones, sustitución de bytes usando la misma S‑Box que en SubBytes y suma de constantes de ronda (Rcon).
Va concatenando palabras hasta producir todas las subclaves necesarias para el número de rondas elegido.
Ronda inicial: AddRoundKey
Antes de comenzar las rondas principales, AES realiza una ronda inicial llamada AddRoundKey. En esta etapa, cada byte del estado se combina con el byte correspondiente de la primera subclave mediante la operación XOR bit a bit.
Esta operación:
Introduce la clave en el estado desde el principio.
Es su propia inversa, lo que simplifica posteriormente el descifrado.
SubBytes: sustitución no lineal
SubBytes es una transformación no lineal donde cada byte del estado se reemplaza por otro valor según una tabla de sustitución (S‑Box).
Características clave:
La S‑Box está diseñada a partir de operaciones en un campo de Galois y una transformación afín para maximizar la no linealidad y minimizar estructuras explotables.
Cada byte se transforma de forma independiente, lo que introduce confusión en el sentido de Shannon (relación compleja entre clave y texto cifrado).
Esta operación tiene una inversa llamada InvSubBytes, usada durante el descifrado, con una S‑Box inversa correspondiente.
ShiftRows: permutación de filas
ShiftRows actúa sobre las filas de la matriz de estado.
Conceptualmente:
La primera fila se deja sin cambios.
La segunda fila se rota cíclicamente hacia la izquierda un byte.
La tercera fila se rota dos bytes.
La cuarta fila se rota tres bytes.
Este desplazamiento reparte la influencia de un byte por varias columnas, incrementando la difusión. Su inversa, InvShiftRows, rota en sentido contrario durante el descifrado.
MixColumns: mezcla de columnas
MixColumns trata cada columna de la matriz como un vector sobre un campo de Galois y la multiplica por una matriz fija definida por el estándar AES.
En términos de alto nivel:
Cada byte de una columna se reemplaza por una combinación lineal de los cuatro bytes originales, utilizando operaciones de suma y multiplicación en el campo GF(2⁸).
Esto mezcla la información verticalmente, de modo que un cambio en un solo byte afecta a toda la columna tras varias rondas.
En la ronda final del cifrado, MixColumns se omite para mantener una estructura simétrica de cifrado y descifrado. En el descifrado se emplea una operación inversa llamada InvMixColumns.
AddRoundKey en cada ronda
Después de SubBytes, ShiftRows y MixColumns (excepto en la ronda final), AES aplica AddRoundKey, que combina el estado con la subclave de la ronda actual mediante XOR.
Esta operación:
Asegura que cada ronda dependa de una parte diferente de la clave expandida.
Vuelve impracticable el análisis de sólo texto cifrado sin conocer la clave, incluso si se entienden todas las otras transformaciones.
Número de rondas y seguridad
El número de rondas depende de la longitud de la clave:
AES‑128: 10 rondas.
AES‑192: 12 rondas.
AES‑256: 14 rondas.
Más rondas implican más pasos de sustitución, permutación y mezcla, lo que aumenta la resistencia frente a ataques de criptoanálisis conocidos, a costa de un mayor tiempo de cómputo. En la práctica, AES‑128 ya ofrece un nivel de seguridad muy alto, y AES‑256 se usa cuando se buscan márgenes adicionales frente a ataques futuros o requisitos normativos estrictos.
Proceso de descifrado
El descifrado AES invierte las operaciones en orden inverso utilizando las mismas subclaves, pero aplicadas en secuencia inversa.
A grandes rasgos:
Se comienza combinando el texto cifrado con la última subclave (AddRoundKey).
Se aplican las inversas de ShiftRows y SubBytes (InvShiftRows, InvSubBytes).
En rondas intermedias se usa también InvMixColumns antes de AddRoundKey.
El proceso se repite hasta recuperar el texto plano original.
El uso de operaciones invertibles (S‑Box inversa, rotaciones inversas, mezcla de columnas inversa y XOR) garantiza que cada etapa sea reversible.
Modos de operación (visión general)
Aunque AES define el cifrado de un único bloque, en sistemas reales se emplean modos de operación para cifrar mensajes largos:
CBC (Cipher Block Chaining): encadena bloques usando XOR con el bloque cifrado anterior.
CTR (Counter): convierte AES en un cifrado de flujo mediante un contador cifrado.
GCM: combina contador con autenticación de mensajes (AEAD).
Estos modos se diseñan para evitar que bloques idénticos de texto plano produzcan bloques idénticos de texto cifrado y, en algunos casos, aportar integridad además de confidencialidad.
Ventajas y usos típicos de AES
AES es actualmente uno de los algoritmos de cifrado simétrico más usados en el mundo. Entre sus ventajas destacan:
Alta eficiencia en hardware y software, incluso en dispositivos con recursos limitados.
Resistencia comprobada frente a ataques conocidos, con un margen de seguridad amplio.
Soporte por organismos internacionales y requisitos regulatorios en sectores como banca, administración pública y telecomunicaciones.
Por ello, AES se utiliza en:
VPN, redes Wi‑Fi protegidas (como WPA2/WPA3), discos cifrados y TLS.
Servicios en la nube, aplicaciones móviles, dispositivos IoT y equipos industriales que requieren protección de datos.
No hay comentarios:
Publicar un comentario