Simétrica vs asimétrica
Entender la diferencia entre cifrado simétrico y asimétrico —y, sobre todo, los modos de operación— es la base para explotar la mayoría de fallos criptográficos del mundo real. La teoría es simple; lo explotable está en los detalles de uso.
Simétrica vs asimétrica
Sección titulada «Simétrica vs asimétrica»SIMÉTRICA (AES, ChaCha20) misma clave para cifrar y descifrar; rápida; para grandes volúmenes de datos problema: ¿cómo comparten la clave las dos partes?
ASIMÉTRICA (RSA, ECC) par de claves: pública (cifra/verifica) + privada (descifra/firma); lenta resuelve el reparto de clave y permite firma digital
HÍBRIDO (lo real: TLS, PGP, Signal) asimétrica para intercambiar una clave de sesión -> simétrica para los datosModos de operación (donde se rompe el AES)
Sección titulada «Modos de operación (donde se rompe el AES)»AES cifra bloques de 128 bits. El modo dice cómo encadenar bloques, y ahí están los fallos:
ECB cada bloque independiente -> bloques de texto plano iguales = cifrado igual FUGA de patrones (el "pingüino ECB"); permite cortar/pegar bloques. NUNCA usar.CBC encadena con XOR del bloque anterior; necesita IV aleatorio maleable sin MAC (bit-flipping); vulnerable a padding oracle (ver crypto-padding)CTR convierte AES en cifrado de flujo (keystream XOR texto) reutilizar (clave,nonce) = CATÁSTROFE: XOR de dos textos revela ambosGCM CTR + autenticación (AEAD) -> confidencialidad + integridad. RECOMENDADO nonce ÚNICO por clave: repetir el nonce rompe la autenticación (forja)Ataques clásicos (laboratorio)
Sección titulada «Ataques clásicos (laboratorio)»Detección y explotación de ECB
Sección titulada «Detección y explotación de ECB»# oráculo de cifrado: enviar bloques repetidos y ver criptograma repetidoAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA -> dos bloques cifrados IDÉNTICOS = ECB# "ECB byte-at-a-time": si el servidor cifra ENTRADA‖SECRETO en ECB,# se recupera el secreto byte a byte alineando bloques (reto clásico de cryptopals)Reutilización de keystream (CTR/stream con nonce repetido)
Sección titulada «Reutilización de keystream (CTR/stream con nonce repetido)»C1 = P1 XOR KS C2 = P2 XOR KS (mismo nonce -> mismo KS)C1 XOR C2 = P1 XOR P2 -> con "crib dragging" se recuperan ambos textos sin la claveMaleabilidad / bit-flipping (CBC sin MAC)
Sección titulada «Maleabilidad / bit-flipping (CBC sin MAC)»# alterar un byte del bloque de IV/cifrado de CBC cambia de forma controlada# el texto descifrado del bloque siguiente -> p. ej. flip de "role=user" a "role=admin"Herramientas
Sección titulada «Herramientas»- PyCryptodome para montar los oráculos y ataques; CyberChef para prototipar.
- openssl enc para cifrar/descifrar y reproducir modos; sets de cryptopals para practicar.
Defensa
Sección titulada «Defensa»- AEAD por defecto: AES-GCM o ChaCha20-Poly1305; nunca CBC/CTR “a pelo” sin MAC.
- Nonce único por clave (contador o aleatorio de 96 bits en GCM); IV aleatorio en CBC.
- Prohibir ECB. Encrypt-then-MAC si no se usa AEAD. Rotación de claves y gestión con KMS/HSM.
CVEs y casos reales
Sección titulada «CVEs y casos reales»- ECB en cookies/tokens: fuga de estructura y corte-pegado de bloques, recurrente en auditorías web.
- Nonce reuse en GCM: rotura de la autenticación; documentado en implementaciones TLS y VPN mal configuradas.
- Zerologon (CVE-2020-1472) nace de un uso incorrecto de AES-CFB8 con IV fijo en Netlogon.
Checklist de prueba
Sección titulada «Checklist de prueba»- Identificar algoritmo y modo (tamaño de bloque = 16 → AES)
- Test ECB: bloques repetidos → criptograma repetido
- ECB byte-at-a-time si hay oráculo ENTRADA‖SECRETO
- CTR/stream: buscar reutilización de nonce (XOR de textos)
- CBC sin MAC: probar bit-flipping y padding oracle (Padding oracle)
- GCM: ¿se repite el nonce? → forja de tags
- Verificar que la defensa usa AEAD y nonce único