
Versión Simplificada del Ataque Criptográfico basado en la Paradoja del Cumpleaños: Sweet32 (CVE-2016-2183)
Esta es una demostración del ataque Sweet32 (CVE-2016-2183): https://sweet32.info/
El ataque es un ejemplo de un ataque de cumpleaños que explota algoritmos criptográficos con tamaños de bloque pequeños (64 bits) en modo CBC, como 3DES y Blowfish. El ataque requiere la generación de una gran cantidad de bloques cifrados con texto plano conocido. Después de la generación, se pueden identificar bloques cifrados idénticos y usarlos para identificar el valor de texto plano de los bloques con texto plano desconocido.
Esta implementación usa 3DES (Triple DES) como su algoritmo de cifrado, que tiene un tamaño de bloque de 64 bits (8 bytes) – el mismo tamaño de bloque que hace que el 3DES real sea vulnerable al ataque Sweet32.
Cuando dos bloques de texto cifrado colisionan (c_i = c_j), podemos recuperar texto plano desconocido usando:
p_i = p_j ⊕ c_{i-1} ⊕ c_{j-1}
Donde:
p_i es el texto plano desconocido (p. ej., cookie secreta)p_j es texto plano conocido (p. ej., cabeceras HTTP)c_{i-1} y c_{j-1} son los bloques de texto cifrado anterioresEsto funciona porque en modo CBC, una colisión significa que las entradas al cifrador de bloque eran iguales, permitiendo la recuperación por XOR sin conocer la clave de cifrado.
Ejecuta la demo con una colisión garantizada:
# Paso 1: Generar paquete cifrado con cookie secreta
python generate_rigged_packets.py rigged_demo.bin
# Paso 2: Ejecutar el ataque para recuperar la cookie
python sweet32.py --block-size 8 rigged_demo.bin
¡El ataque mostrará el valor de la COOKIE SECRETA y luego la recuperará usando solo el texto cifrado!
generate_rigged_packets.pyCrea un paquete con una colisión garantizada con fines de demostración. El valor de la cookie está diseñado para que colisione con un bloque de texto plano conocido.
sweet32.pyEjecuta el ataque de cumpleaños Sweet32 para recuperar la cookie.
El ataque Sweet32 explota la paradoja del cumpleaños. Para un cifrador de bloque de 64 bits:
Esto hace que 3DES (y otros cifradores de bloque de 64 bits) sean vulnerables en sesiones HTTPS de larga duración.
Para el ataque Sweet32 real sobre 3DES (bloques de 64 bits):
| Tamaño del bloque | Tamaño del bloque | Núm. Paquetes | Datos necesarios | Cantidad de bloques |
|---|---|---|---|---|
| 8 bytes | 64 bits | ~785GB | ~785GB | ~2^32 bloques |
El ataque real requiere ~785GB de datos cifrados bajo la misma clave, por lo que afecta principalmente a conexiones HTTPS de larga duración.