🔬 Herramienta Educativa de Seguridad

Hash Collision Lab

Comprende de forma práctica por qué MD5 y SHA-1 ya no son seguros. Genera, descarga y verifica colisiones de hash reales con tus propios datos.

MD5 Roto 2004
SHA-1 Roto 2017
SHA-256 Recomendado

🔬 Explorador de Hash

Escribe cualquier texto y observa cómo se transforma en un "hash" — una huella digital única e irreversible.

Esperando entrada...
¿Qué es un hash?
Es como una "huella digital" de tu información. No importa si escribes una letra o un libro: el resultado siempre tiene el mismo tamaño. Y si cambias una sola coma, la huella cambia por completo.

MD5 → 32 caracteres hex (128 bits)  |  SHA-1 → 40 caracteres hex (160 bits)
⚠ Ambos están criptográficamente rotos — se recomienda SHA-256 o superior.

💥 Colisión Real de MD5

Dos bloques de 128 bytes diferentes que producen el mismo hash MD5. Diferencias en rojo. Basado en Wang & Yu (2004).

Bloque A — hexadecimal
Bloque B — hexadecimal
⚡ 0 caracteres hex diferentes entre ambos bloques
🔓
¡COLISIÓN CONFIRMADA! — Datos diferentes, mismo hash
¿Qué significa?
Un atacante puede crear dos documentos con el mismo hash. Te presenta el legítimo para que lo firmes, y luego lo reemplaza por uno malicioso. Tu firma digital seguiría siendo "válida".

📥 Genera tu Propia Colisión

Escribe tu texto y genera dos archivos diferentes con el mismo hash. Descárgalos y verifícalo con cualquier herramienta externa.

1
Personaliza el contenido
Vista previa:
Escribe algo arriba para ver los hashes en tiempo real.
2
Descarga archivos con colisión verificable

Cada archivo = bloque de colisión diferente (Wang & Yu 2004) + tu texto. Gracias a Merkle-Damgård, ambos producen el mismo hash MD5.

📄
colision_A.bin
Bloque A + tu texto
📄
colision_B.bin
Bloque B + tu texto

En 2017, investigadores de Google y CWI Ámsterdam lograron la primera colisión práctica de SHA-1: dos PDFs visualmente diferentes con el mismo hash SHA-1. Estos son los archivos originales de la investigación, alojados en el repositorio oficial del autor.

📋
shattered-1.pdf
PDF fondo azul — 422 KB
Fuente: GitHub oficial
⬇ Descargar PDF 1
📋
shattered-2.pdf
PDF fondo rojo — 422 KB
Fuente: GitHub oficial
⬇ Descargar PDF 2
Hash SHA-1 idéntico de ambos PDFs:
38762cf7f55934b34d179ae6a4c80cadccbb7f0a

Requirió 9.2 quintillones de compresiones SHA-1 (6,500 años-CPU + 110 años-GPU ≈ $110,000 USD).
Paper: Stevens et al., CRYPTO 2017  |  Repo: GitHub oficial
💡 Es solo demostrativo.

Dos contratos con contenido diferente que ilustran el impacto práctico de una colisión.

📋
contrato_original.pdf
Contrato legítimo
📋
contrato_alterado.pdf
Contrato manipulado
3
Verifica que los hashes son idénticos

🔍 Instrucciones de verificación

Get-FileHash .\colision_A.bin -Algorithm MD5 | Format-List Get-FileHash .\colision_B.bin -Algorithm MD5 | Format-List
md5sum colision_A.bin colision_B.bin
Get-FileHash .\shattered-1.pdf -Algorithm SHA1 | Format-List Get-FileHash .\shattered-2.pdf -Algorithm SHA1 | Format-List # Ambos deben dar: 38762cf7f55934b34d179ae6a4c80cadccbb7f0a
sha1sum shattered-1.pdf shattered-2.pdf
import hashlib for f in ['colision_A.bin','colision_B.bin']: print(f, hashlib.md5(open(f,'rb').read()).hexdigest()) for f in ['shattered-1.pdf','shattered-2.pdf']: print(f, hashlib.sha1(open(f,'rb').read()).hexdigest())
¿Por qué funciona la colisión MD5 con texto personalizado?
MD5 usa Merkle-Damgård: si dos bloques iniciales distintos producen el mismo estado interno, cualquier dato idéntico añadido después mantiene la colisión:
MD5(Bloque_A + tu_texto) == MD5(Bloque_B + tu_texto)
¿Y SHA-1? — El mismo principio, mayor escala
SHA-1 también usa Merkle-Damgård, por lo que es vulnerable al mismo tipo de extensión. La diferencia es la dificultad: encontrar los bloques iniciales que colisionan en SHA-1 requirió 9.2 quintillones de cálculos (~$110,000 USD), mientras que en MD5 se logra en milisegundos. Los PDFs de SHAttered son la prueba:
SHA1(PDF_azul) == SHA1(PDF_rojo) == 38762cf7...bb7f0a
Ambos PDFs comparten los mismos bloques de colisión iniciales, pero muestran imágenes diferentes gracias a una manipulación del formato JPEG dentro del PDF.

🎲 Birthday Attack

La "paradoja del cumpleaños" demuestra que encontrar colisiones es mucho más fácil de lo que parece.

🎂Analogía: Con 23 personas, hay >50% de probabilidad de que dos compartan cumpleaños (entre 365 días). Lo mismo con los hashes: no necesitas probar todas las combinaciones.
Combinaciones
65,536
Intentos colisión
~307
Veces más rápido
213x

🌊 Efecto Avalancha

Un buen hash cambia radicalmente con el más mínimo cambio en la entrada.

Caracteres diferentes
—
Porcentaje de cambio
—
¿Por qué importa?
El efecto avalancha garantiza que no puedes "adivinar" el contenido original. Un buen hash cambia ~50% de su salida ante cualquier cambio mínimo.

📚 Entendiendo las Colisiones de Hash

Explicado de forma sencilla, sin conocimientos técnicos previos.

🏷️ ¿Qué es un Hash?

🍰Imagina que eres pastelero. Cada pastel tiene una foto de 10×10 cm. No importa su tamaño, la foto siempre mide lo mismo. Si cambias un ingrediente, la foto es completamente diferente. Un hash funciona igual.
  • ✓
    Determinista: Mismo dato = mismo hash, siempre.
  • ✓
    Irreversible: No se puede reconstruir el dato original.
  • ✓
    Tamaño fijo: Sin importar la entrada, la salida tiene la misma longitud.
  • ✓
    Efecto avalancha: Un cambio mínimo produce un hash totalmente diferente.

🌍 ¿Dónde se usan?

  • ✓
    Contraseñas: Los sitios guardan el hash, no tu contraseña real.
  • ✓
    Descargas: Si el hash coincide con el oficial, nadie modificó el archivo.
  • ✓
    Firmas digitales: Se firma el hash del documento. CEW Forense usa SHA-256.
  • ✓
    Bitcoin: Cada bloque contiene el hash del anterior (blockchain).

💥 ¿Qué es una Colisión?

🏠100 apartamentos, 200 inquilinos. Es inevitable que dos compartan. Infinitos datos posibles, finitos hashes → eventualmente dos datos producen el mismo hash. El problema es cuando alguien puede fabricarlas a voluntad.

⚠️ ¿Por qué es peligroso?

📝Ataque del contrato falso:

1. Atacante crea dos contratos con mismo hash: uno normal, otro perjudicial.
2. Te muestra el normal. Lo firmas digitalmente.
3. Reemplaza por el malicioso. Tu firma sigue "válida".
4. Existe un documento perjudicial con tu firma legítima.
  • !
    2012 — Flame: Falsificó certificados de Microsoft con colisiones MD5.
  • !
    2008: Certificado SSL falso generado usando colisiones MD5.
  • !
    2017 — SHAttered: Google creó dos PDFs con el mismo SHA-1.

📅 Línea del Tiempo

MD5 — Roto desde 2004

1991 — Se publica como estándar.
1996 — Primeras debilidades teóricas.
2004 — Wang & Yu: colisiones en <1 hora.
2006 — Klima: colisiones en segundos.
2012 — Malware Flame falsifica certificados.
Hoy — Colisiones en milisegundos. Totalmente roto.

SHA-1 — Roto desde 2017

1995 — Adoptado mundialmente.
2005 — Primeros ataques teóricos.
2017 — Google: SHAttered, primera colisión práctica.
2020 — Colisiones chosen-prefix por ~$11,000 USD.
Hoy — Navegadores ya no aceptan SHA-1.

🛡️ ¿Qué usar hoy?

  • ✓
    SHA-256 / SHA-3: Estándar actual. CEW Forense, Bitcoin, SSL.
  • ✓
    BLAKE3: Moderno y ultra rápido.
  • ✓
    bcrypt / Argon2: Para contraseñas (resistentes a GPU).
Regla: Si un sistema usa MD5 o SHA-1 para seguridad, es vulnerable.

🎯 Resumen en 30 segundos

  • 📌
    Hash = huella digital de un archivo.
  • 📌
    Colisión = dos archivos distintos con la misma huella.
  • 📌
    MD5 roto en 2004. SHA-1 roto en 2017.
  • 📌
    Las colisiones permiten falsificar documentos firmados.
  • 📌
    Usa SHA-256 para seguridad y Argon2/bcrypt para contraseñas.