Guía de cifrado AES-256: protección de archivos nivel militar
Entiende el cifrado AES-256 y por qué es el estándar de oro. Aprende cómo este cifrado militar mantiene seguros tus archivos.
AES-256 es un cifrado de bloques simétrico aprobado por la NSA de EE. UU. para datos de máximo secreto (TOP SECRET) según CNSSP-15. Cifra bloques de 128 bits con una clave de 256 bits a lo largo de 14 rondas de sustitución, permutación y mezcla. Forzar una clave AES-256 por fuerza bruta requeriría en promedio unas 2^255 operaciones, un número tan grande que todos los ordenadores de la Tierra funcionando durante la edad del universo no lo lograrían. Por eso, todos los servicios de transferencia de archivos serios, desde SwissTransfer hasta Tresorit, usan AES-256 como cifrado principal. Así es como funciona en realidad.
De dónde viene el «256»
AES tiene tres tamaños de clave: 128, 192 y 256 bits. El número se refiere únicamente a la longitud de la clave, no al tamaño del bloque (que siempre es de 128 bits). El tamaño de clave determina cuántas rondas ejecuta el cifrado: 10 para AES-128, 12 para AES-192 y 14 para AES-256.
Más rondas implican mayor difusión: cada bit de salida depende de más bits de entrada, y mayor resistencia a ataques criptanalíticos como el ataque biclique publicado en 2011, que teóricamente redujo la seguridad efectiva de AES-256 de 256 a 254,4 bits. Sigue estando muy por encima de cualquier ataque práctico.
El estándar Federal Information Processing Standard FIPS 197 define AES, y NIST SP 800-38A a 800-38G definen los modos de operación.
Modos de operación: GCM vs CBC vs ECB
AES es un cifrado de bloques, lo que significa que solo sabe cifrar un bloque de 128 bits. Para cifrar un archivo de tamaño arbitrario se necesita un modo de operación. La elección es determinante:
- ECB (Electronic Codebook): bloques de texto plano idénticos producen texto cifrado idéntico. Nunca uses este modo. La famosa imagen del «pingüino ECB» muestra el contorno de Tux visible a través de los píxeles cifrados con ECB.
- CBC (Cipher Block Chaining): aplica XOR a cada bloque con el texto cifrado anterior. Seguro si se combina con HMAC para autenticación, pero CBC solo es vulnerable a ataques de oráculo de relleno (POODLE afectó a SSL en 2014).
- GCM (Galois/Counter Mode): cifra con un contador y produce una etiqueta de autenticación de 128 bits en el mismo paso. Cualquier manipulación del texto cifrado rompe el descifrado de forma evidente. Es el modo que usan los servicios modernos.
AES-256-GCM es el modo por defecto en TLS 1.3, Signal, WireGuard y cualquier servicio de transferencia de archivos serio. Si un servicio menciona «AES-256» sin especificar el modo, asume GCM y verifícalo.
El IV (nonce) que nunca debes reutilizar
GCM requiere un vector de inicialización (IV) de 96 bits único por cifrado con una clave dada. Reutilizar el IV con la misma clave aunque sea una vez permite a un atacante hacer XOR de dos textos cifrados para recuperar el texto plano, un fallo catastrófico explotado famosamente contra el Wi-Fi WEP.
Buena práctica: genera el IV con un generador de números aleatorios criptográficamente seguro (crypto.getRandomValues() en navegadores, /dev/urandom en Linux) y antepónlo al texto cifrado. Un IV aleatorio de 96 bits tiene una probabilidad de colisión de aproximadamente 2^-48 después de cifrar 2^32 archivos, aceptable para un servicio de transferencia. Para reutilización de claves en miles de millones de archivos, usa un contador determinista en su lugar.
Derivación de claves: convertir contraseñas en claves
Los usuarios quieren contraseñas como miperro2024. AES necesita 256 bits de aleatoriedad uniforme. El puente es una función de derivación de claves (KDF). Hay tres en uso habitual:
- PBKDF2 con HMAC-SHA-256 y 600.000 iteraciones (recomendación OWASP 2023). Ampliamente compatible, disponible en la Web Crypto API.
- scrypt añade resistencia a la memoria, aumentando los costes de ataques con GPU. Bitcoin y LastPass lo utilizan.
- Argon2id es la mejor práctica actual, ganador de la Password Hashing Competition de 2015. Parámetros:
memory=64 MB, iterations=3, parallelism=4.
Una contraseña aleatoria de 12 caracteres procesada con Argon2id tomaría a una GPU moderna aproximadamente mil millones de años para forzarla. Una contraseña débil como password123 cae en milisegundos independientemente de la KDF.
AES en el navegador: la Web Crypto API
Los navegadores exponen AES-256-GCM de forma nativa a través de window.crypto.subtle. Un flujo típico:
const key = await crypto.subtle.generateKey(
{ name: "AES-GCM", length: 256 },
true,
["encrypt", "decrypt"]
);
const iv = crypto.getRandomValues(new Uint8Array(12));
const ciphertext = await crypto.subtle.encrypt(
{ name: "AES-GCM", iv },
key,
fileBytes
);
Las CPU modernas cuentan con instrucciones AES-NI que aceleran esto a aproximadamente 3–5 GB/s por núcleo. Un archivo de 1 GB se cifra en menos de un segundo en un portátil de gama media. En móvil, los chips Apple A-series y Qualcomm Snapdragon incluyen ARMv8 Crypto Extensions para un rendimiento similar.
Qué protege AES-256 (y qué no)
AES-256 resuelve un problema concreto: la confidencialidad de los datos en reposo o en tránsito, dada una clave secreta. No resuelve:
- Gestión de claves. Si envías la contraseña junto al archivo por correo, AES-256 no aporta nada.
- Compromiso del endpoint. El malware que lee el texto plano antes del cifrado evita por completo el cifrado.
- Bugs de implementación. Los ataques BEAST, CRIME y Lucky13 afectaron a implementaciones de TLS, no a AES en sí.
- Ataques de canal lateral. El análisis de temporización de caché y el análisis de energía han extraído claves AES de dispositivos con recursos limitados. AES-NI mitiga esto en gran medida en ordenadores de escritorio.
AES-256 tampoco prueba quién envió el archivo. Para eso, combínalo con firmas digitales usando Ed25519 o ECDSA.
Por qué «nivel militar» es principalmente marketing
La frase se usa porque la NSA CNSSP-15 aprobó AES-256 para datos TOP SECRET en 2003. Eso es real, pero también tiene 23 años. AES-128 está aprobado para SECRET y serviría a la mayoría de los casos de uso civiles de forma idéntica. El salto de 128 a 256 bits es una cobertura frente a avances futuros en computación cuántica: el algoritmo de Grover teóricamente reduce a la mitad la seguridad de las claves simétricas, reduciendo la fortaleza efectiva de AES-256 a 128 bits, que sigue siendo segura.
En la práctica, AES-256 cuesta aproximadamente un 40 % más de CPU que AES-128 con AES-NI y tiene soporte universal, por lo que se ha convertido en el estándar incluso cuando 128 bits serían suficientes.
Cómo verificar que un servicio usa realmente AES-256-GCM
Tres formas de comprobarlo:
- Lee el whitepaper de seguridad. Los servicios fiables (Tresorit, Proton Drive, SwissTransfer, HexaTransfer) publican el modo exacto y el manejo del IV.
- Inspecciona el código del cliente. Abre DevTools, busca en el bundle de JavaScript
AES-GCMoaes-256-gcm. Deberías verlo de forma explícita. - Comprueba auditorías de terceros. Cure53, NCC Group y Trail of Bits publican auditorías que nombran los algoritmos revisados.
Señales de alerta: «cifrado de grado bancario» sin modo especificado, «algoritmo propietario» de cualquier tipo, o referencias a AES-128-ECB.
Ponerlo en práctica
Para enviar un archivo sensible hoy: elige un servicio que declare AES-256-GCM de forma explícita, use un IV aleatorio de 96 bits por archivo y ejecute el cifrado en tu navegador (no en su servidor). Combina eso con una frase de contraseña de 16+ caracteres derivada mediante Argon2id o PBKDF2 a 600.000+ iteraciones.
Pruébalo en hexatransfer.com — gratis, sin cuenta, hasta 10 GB.
Envía archivos grandes de forma segura con cifrado de extremo a extremo
Transfiere archivos de hasta 10 GB gratis con cifrado de extremo a extremo. Sin necesidad de cuenta. Tus archivos se cifran en tu navegador antes de subirlos: nadie más puede leerlos.
Enviar un archivo