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.

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:
- El mensaje cifrado en Base64.
- La clave AES-256 en formato hexadecimal.
Mensaje cifrado
yqFtv1UibQ/gm5MBMqshBHOn1k1zrP2Pc1KQ2MNHJ1PREuWA/eyeWnjEOTWimrJfNCwodYbbozT4VpnQAeHLm2tl6bIePnEOExHNEFbk19hSHdlDLE0l2TO/uMRJ6rqokkUuJjL3GLAPcDohDBTO4NgAlRn5sUfry0fd9bFe5UkOSncIjt+LdH5dpOdtfLqP4grCpmO57lwdVKZOfl9KVcVAWeJ2nLji5nc1dOFhddtbJowMkoUnOdgObIu/im72+f/xUNmj6QGKZe/JI3J4xKktKsd7C1/qJmTeephtf0TMM4txEUOsfHS0n51ttKlBW3bdYpSiarxDF4XkyICeLbLkON+nADB2WOmuMiIZ8yU=Clave AES-256
e1394a9987914db24f405ff7f2619f515922949feb9152f1d21edefa36d68b5cUna 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:
python -m pip install pycryptodomeCódigo:
import base64from dataclasses import dataclass
from Crypto.Cipher import AESfrom Crypto.Random import get_random_bytes
@dataclassclass 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.


