AES-256: qué es, cómo funciona y cómo utilizarlo

Explicación técnica del estándar de cifrado avanzado AES-256, su arquitectura de bloques, rondas de transformación y aplicaciones prácticas.

Admin8 min de lectura
AES-256: qué es, cómo funciona y cómo utilizarlo

AES-256 es un algoritmo de cifrado simétrico utilizado para proteger archivos, mensajes, copias de seguridad y comunicaciones digitales.

Se denomina simétrico porque utiliza la misma clave para cifrar y descifrar la información. Si la clave se pierde, el contenido no podrá recuperarse; si otra persona la obtiene, podrá acceder a los datos.

Características de AES-256

Parámetro AES-256
Tipo de cifrado Simétrico por bloques
Tamaño de la clave 256 bits o 32 bytes
Tamaño del bloque 128 bits o 16 bytes
Rondas de cifrado 14
Subclaves generadas 15
Combinaciones posibles 2²⁵⁶

AES siempre trabaja con bloques de 128 bits. El número 256 se refiere al tamaño de la clave, no al tamaño del bloque.

Cómo funciona AES-256

AES organiza cada bloque de información en una matriz y aplica diferentes transformaciones matemáticas.

Expansión de la clave

La clave de 256 bits se transforma en 15 subclaves de 128 bits mediante el proceso conocido como Rijndael Key Schedule.

Cada subclave se utiliza en una etapa diferente del cifrado.

Ronda inicial

La primera etapa aplica:

  • AddRoundKey: combina el bloque de información con la primera subclave mediante una operación XOR.

Rondas principales

Durante las rondas principales se ejecutan estas operaciones:

  • SubBytes: sustituye cada byte utilizando una tabla criptográfica denominada S-box.
  • ShiftRows: desplaza las filas de la matriz.
  • MixColumns: mezcla matemáticamente los valores de cada columna.
  • AddRoundKey: combina el resultado con una nueva subclave.

Ronda final

La última ronda repite las operaciones principales, pero no aplica MixColumns.

El resultado es un bloque cifrado que no puede interpretarse sin la clave correcta.

AES necesita un modo de operación

AES cifra únicamente bloques individuales. Para proteger mensajes completos debe combinarse con un modo de operación.

Los más conocidos son:

Modo Características Recomendación
GCM Cifra y verifica la integridad del contenido. Recomendado para desarrollos nuevos
CBC Cifra los datos, pero necesita autenticación adicional. Solo por compatibilidad
CTR Convierte AES en un cifrado de flujo. Requiere autenticación separada
XTS Diseñado principalmente para discos y almacenamiento. Adecuado para cifrado de unidades
ECB Cifra cada bloque por separado y revela patrones. No debe utilizarse

Para aplicaciones nuevas se recomienda emplear un modo autenticado como AES-GCM.

Diferencia entre CBC y GCM

AES-CBC puede ocultar el contenido, pero no detecta por sí solo si el mensaje fue modificado.

AES-GCM produce:

  • Texto cifrado.
  • Nonce o número único.
  • Etiqueta de autenticación.

La etiqueta permite detectar modificaciones, claves incorrectas o datos dañados.

Por esta razón, GCM suele ser una opción más segura y sencilla para nuevas aplicaciones.

Herramienta web de descifrado

Puedes utilizar una herramienta web para realizar pruebas con mensajes cifrados y claves AES.

Plataforma:

https://cc-genpro.com/decodificador/

Utiliza únicamente información propia o datos creados para pruebas. No introduzcas documentos privados o claves reales en herramientas externas que no controles.

Cómo utilizar el decodificador

La herramienta puede solicitar dos valores:

  1. El mensaje cifrado en Base64.
  2. La clave AES-256 en formato hexadecimal.

Mensaje cifrado

yqFtv1UibQ/gm5MBMqshBHOn1k1zrP2Pc1KQ2MNHJ1PREuWA/eyeWnjEOTWimrJfNCwodYbbozT4VpnQAeHLm2tl6bIePnEOExHNEFbk19hSHdlDLE0l2TO/uMRJ6rqokkUuJjL3GLAPcDohDBTO4NgAlRn5sUfry0fd9bFe5UkOSncIjt+LdH5dpOdtfLqP4grCpmO57lwdVKZOfl9KVcVAWeJ2nLji5nc1dOFhddtbJowMkoUnOdgObIu/im72+f/xUNmj6QGKZe/JI3J4xKktKsd7C1/qJmTeephtf0TMM4txEUOsfHS0n51ttKlBW3bdYpSiarxDF4XkyICeLbLkON+nADB2WOmuMiIZ8yU=

Clave AES-256

e1394a9987914db24f405ff7f2619f515922949feb9152f1d21edefa36d68b5c

Una clave AES-256 expresada en hexadecimal debe contener 64 caracteres, equivalentes a 32 bytes.

Después de introducir los datos, presiona Descifrar. Si la clave, el formato y el modo de cifrado son correctos, la herramienta mostrará el contenido original.

Para descifrar correctamente no basta con tener la clave. También debes conocer el modo de operación, el nonce o IV, el formato del mensaje y, cuando se utilice GCM, la etiqueta de autenticación.

Implementación moderna en Python

El siguiente ejemplo utiliza AES-256-GCM para cifrar y verificar la integridad del mensaje.

Primero instala PyCryptodome:

Terminal window
python -m pip install pycryptodome

Código:

import base64
from dataclasses import dataclass
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
@dataclass
class EncryptedMessage:
nonce: bytes
ciphertext: bytes
tag: bytes
def to_base64(self) -> str:
"""Une nonce, etiqueta y texto cifrado en una sola cadena Base64."""
data = self.nonce + self.tag + self.ciphertext
return base64.b64encode(data).decode("utf-8")
@classmethod
def from_base64(cls, encoded: str) -> "EncryptedMessage":
raw = base64.b64decode(encoded, validate=True)
# PyCryptodome utiliza normalmente un nonce de 16 bytes
# y una etiqueta GCM de 16 bytes.
if len(raw) < 32:
raise ValueError("El mensaje cifrado es demasiado corto.")
return cls(
nonce=raw[:16],
tag=raw[16:32],
ciphertext=raw[32:],
)
class AES256GCM:
KEY_SIZE = 32
def __init__(self, key: bytes | None = None) -> None:
self.key = key or get_random_bytes(self.KEY_SIZE)
if len(self.key) != self.KEY_SIZE:
raise ValueError("La clave AES-256 debe contener exactamente 32 bytes.")
def encrypt(self, plaintext: str) -> str:
cipher = AES.new(self.key, AES.MODE_GCM)
ciphertext, tag = cipher.encrypt_and_digest(
plaintext.encode("utf-8")
)
encrypted = EncryptedMessage(
nonce=cipher.nonce,
ciphertext=ciphertext,
tag=tag,
)
return encrypted.to_base64()
def decrypt(self, encoded: str) -> str:
encrypted = EncryptedMessage.from_base64(encoded)
cipher = AES.new(
self.key,
AES.MODE_GCM,
nonce=encrypted.nonce,
)
plaintext = cipher.decrypt_and_verify(
encrypted.ciphertext,
encrypted.tag,
)
return plaintext.decode("utf-8")
def main() -> None:
cipher = AES256GCM()
message = input("Escribe el texto que deseas cifrar: ").strip()
if not message:
print("Debes introducir un mensaje.")
return
encrypted = cipher.encrypt(message)
print("\nTexto cifrado:")
print(encrypted)
print("\nClave hexadecimal:")
print(cipher.key.hex())
try:
decrypted = cipher.decrypt(encrypted)
print("\nTexto descifrado:")
print(decrypted)
except (ValueError, KeyError) as error:
print(f"No fue posible descifrar el mensaje: {error}")
if __name__ == "__main__":
main()

Cómo descifrar con una clave guardada

Para recuperar un mensaje en otra ejecución, convierte la clave hexadecimal nuevamente en bytes:

key_hex = input("Introduce la clave hexadecimal: ").strip()
encrypted_text = input("Introduce el mensaje en Base64: ").strip()
try:
key = bytes.fromhex(key_hex)
cipher = AES256GCM(key)
decrypted = cipher.decrypt(encrypted_text)
print("Mensaje descifrado:")
print(decrypted)
except ValueError:
print("La clave, el mensaje o la etiqueta de autenticación no son válidos.")

La clave debe almacenarse de forma segura. Si se modifica un solo byte del mensaje cifrado, GCM rechazará el descifrado.

Usos comunes de AES-256

AES-256 puede utilizarse en:

Protección de datos

  • Archivos privados.
  • Copias de seguridad.
  • Bases de datos.
  • Almacenamiento en la nube.
  • Discos y dispositivos.

Comunicaciones

  • VPN.
  • Aplicaciones de mensajería.
  • Conexiones protegidas.
  • Sistemas empresariales.

Sector financiero

  • Protección de información sensible.
  • Sistemas internos.
  • Infraestructuras de pago.
  • Entornos que deben cumplir requisitos de seguridad.

El uso concreto puede combinar AES con otros algoritmos, protocolos y sistemas de gestión de claves.

Recomendaciones de seguridad

Protege la clave

Nunca almacenes la clave junto al archivo cifrado sin una protección adicional.

En entornos profesionales pueden utilizarse:

  • Gestores de secretos.
  • Módulos de seguridad de hardware.
  • Servicios de administración de claves.
  • Controles de acceso.
  • Rotación de claves.

No reutilices nonces en GCM

Cada cifrado realizado con la misma clave debe utilizar un nonce diferente.

Reutilizar un nonce con AES-GCM puede comprometer la confidencialidad y la autenticidad de los mensajes.

Las bibliotecas criptográficas confiables suelen generar el nonce automáticamente.

Evita crear tu propia criptografía

Utiliza bibliotecas conocidas y mantenidas.

No modifiques manualmente:

  • S-box.
  • Número de rondas.
  • Generación de claves.
  • Etiquetas de autenticación.
  • Nonces.
  • Algoritmos internos.

No utilices ECB

ECB revela patrones cuando existen bloques repetidos. No es apropiado para proteger documentos, imágenes ni mensajes.

Deriva correctamente las contraseñas

Una contraseña escrita por una persona no debe utilizarse directamente como clave AES.

Utiliza una función de derivación como:

  • Argon2.
  • Scrypt.
  • PBKDF2.

También debes guardar el salt necesario para volver a derivar la misma clave.

AES-256 y computación cuántica

AES-256 no es un algoritmo postcuántico en el mismo sentido que los nuevos mecanismos de intercambio de claves o firmas digitales.

Sin embargo, los ataques cuánticos conocidos no lo inutilizan directamente. AES-256 mantiene un margen de seguridad elevado frente a la búsqueda exhaustiva.

Los algoritmos de clave pública, como RSA, presentan un riesgo diferente frente a futuros ordenadores cuánticos suficientemente potentes.

Por ello, no es correcto comparar directamente:

Algoritmo Tipo Uso principal
AES-256 Simétrico Cifrar grandes cantidades de información
ChaCha20-Poly1305 Simétrico Cifrado autenticado, especialmente en software
RSA Asimétrico Firmas e intercambio de claves en sistemas tradicionales
ML-KEM Postcuántico Establecimiento de claves resistente a ataques cuánticos conocidos

AES y RSA no cumplen la misma función, por lo que el tamaño de sus claves no puede compararse directamente.

Conclusión

AES-256 continúa siendo una opción sólida para proteger información cuando se implementa correctamente.

Su seguridad no depende únicamente del tamaño de la clave. También requiere:

  • Un modo de operación adecuado.
  • Nonces únicos.
  • Verificación de integridad.
  • Gestión segura de claves.
  • Bibliotecas confiables.
  • Controles de acceso.
  • Actualizaciones periódicas.

Para nuevos proyectos, AES-256-GCM suele ser una alternativa más completa que AES-CBC porque incorpora autenticación y permite detectar modificaciones en los datos.

Las herramientas web pueden resultar útiles para pruebas educativas, pero la información sensible debe procesarse localmente o mediante sistemas bajo tu control.