Lab: Criptografía aplicada — retos

Entorno de práctica para la Parte 2 — Criptografía aplicada (clases 046–065). Cuatro retos que muestran, en la práctica, por qué ciertas construcciones criptográficas son inseguras. No necesita Docker ni dependencias: todo es Python puro (stdlib).

🎓 Intenta resolver cada reto por tu cuenta antes de mirar soluciones/. Las soluciones están comentadas y explican la debilidad.

🎯 Los retos

# Reto Debilidad que enseña Clases
1 XOR de clave repetida Un "cifrado" XOR con clave corta se rompe por análisis de frecuencia 048
2 RSA con primos cercanos Si p y q son cercanos, n se factoriza con Fermat en milisegundos 049
3 Hashes MD5 sin sal MD5 sin sal + contraseñas débiles = crackeo instantáneo 051, 057
4 Detección de AES-ECB ECB filtra patrones: mismo bloque de texto → mismo bloque cifrado 047

🚀 Cómo trabajar

cd labs/cripto
# (opcional) regenerar los datos de los retos de forma determinista:
python _generar_retos.py

# resuelve tú; cuando quieras comprobar, corre la solución:
python soluciones/sol1_xor.py
python soluciones/sol2_rsa.py
python soluciones/sol3_hashes.py
python soluciones/sol4_ecb.py

🧭 Pistas

🏆 Retos verificables

  1. Recupera la clave y la flag del Reto 1. Aceptación: imprimes FLAG{...} y la clave.
  2. Factoriza n y descifra el Reto 2. Aceptación: obtienes p, q y la flag.
  3. Crackea los 3 hashes del Reto 3. Aceptación: las 3 contraseñas en claro.
  4. Demuestra que el Reto 4 usa ECB. Aceptación: señalas los bloques repetidos y propones el modo correcto (CBC/CTR/GCM).
  5. Defensa: para cada reto, escribe la construcción correcta (ChaCha20/AES-GCM, RSA-OAEP con primos grandes y aleatorios, Argon2id).

🔗 Referencias