Saltar al contenido
Lectura6 minPreview

Codificar, cifrar o resumir: qué tiene delante

Bienvenida

Bienvenido a CTF de criptografía: capas, XOR y claves débiles. Al terminar va a poder mirar un texto raro y decir si está codificado, cifrado o resumido con un hash, quitarle capas de base64 con CyberChef o Python y romper un cifrado XOR casero con un ataque de texto conocido. Es para quien ya usa una terminal o un navegador con soltura; no hace falta saber matemáticas. Necesita CyberChef (la versión descargable funciona sin internet) o Python 3. Son cinco lecciones: esta, una de herramientas, una práctica guiada, el reto de Distribuidora Guayabo y su writeup, más una evaluación de 4 preguntas. En total, unos 50 minutos.

Qué es cripto en un CTF

En una competencia, la categoría crypto casi nunca le pide romper AES. Le pide encontrar el error de alguien que creyó que estaba cifrando: una clave corta que se repite, un "cifrado" que en realidad es base64, una clave que quedó en un comentario. En los CTF de principiantes, casi todos los retos de cripto que he jugado se reducen a pelar capas y a notar dónde se reutilizó algo.

Lo primero que hago con un archivo de este tipo no es abrir una herramienta. Es preguntarme cuál de estas tres cosas tengo delante, porque cada una se ataca distinto y confundirlas es el error que más tiempo me hizo perder al empezar.

CodificaciónCifradoHash
Para qué sirveRepresentar bytes como textoQue solo lea quien tiene la claveComprobar que algo no cambió
¿Usa clave?NoSíNo (salvo HMAC)
¿Se revierte?Siempre, sin secretoSolo con la claveNo: es de un solo sentido
Ejemplosbase64, hex, URL, ROT13AES, ChaCha20, el XOR caseroSHA-256, MD5, bcrypt

ROT13 está en la columna de codificación aunque parezca cifrado: no tiene clave, siempre se corre 13 letras.

El mismo texto ABC pasa por tres caminos. Codificado en base64 queda QUJD y la flecha de vuelta está libre: cualquiera lo revierte con la tabla pública. Cifrado con un candado queda como ruido y la vuelta solo se abre con la llave. Con un hash sale una huella de largo fijo y la vuelta está tachada: no se puede recuperar el texto.
[fig] Codificar cambia la forma, cifrar exige una clave y un hash no tiene vuelta. Si un sistema «protege» contraseñas con base64, no las protege.

Cómo se reconoce cada uno a simple vista

  • base64: solo letras, dígitos, + y /, largo múltiplo de 4, a veces con = o == al final.
  • hex: solo 0-9 y a-f, siempre en pares.
  • Hash: largo fijo sin importar la entrada. 32 caracteres hex suele ser MD5, 40 es SHA-1, 64 es SHA-256. Un bcrypt empieza con $2b$.
  • Cifrado: bytes que parecen ruido, sin palabras ni patrón. Muchas veces viene envuelto en base64 para poder mandarlo por correo, y ahí está la primera capa.

La pista más útil sale del contexto: el nombre del archivo, un script que lo acompaña, una nota. En el reto de esta píldora el programa que "cifra" viene incluido, y leerlo es la mitad del trabajo.

Lo que se aprende de verdad

Fuera del CTF esto es trabajo de auditoría. Cuando reviso una aplicación de una pyme, busco exactamente estos errores: contraseñas guardadas en base64 "para que no se vean", un XOR con clave fija en el código, MD5 sin sal. OWASP los agrupa en la categoría Cryptographic Failures (A02 en la edición 2021). Aprender a romperlos en un reto es la forma más rápida de reconocerlos después en un informe.