GhostAcademy logo GhostAcademy
🎓 Material Didáctico

Guía de Retos de
Criptografía

Soluciones paso a paso para 10 retos de criptografía y esteganografía. Cada reto incluye enunciado, metodología detallada e imágenes ilustrativas.

10Retos
66Capturas
2Disciplinas
01

Cervantes

Esteganografía · Método EOF (End Of File) Esteganografía
▼
Abre la imagen asociada al reto. En ella se oculta información adicional. Encuéntrala y revela su contenido.
📥Descargar archivosReto 1_Cervantes.bmp
Solución paso a paso
1Análisis hexadecimal — comparar tamaños

Abrimos Reto 1_Cervantes.bmp con un editor hexadecimal y comparamos el tamaño indicado en la cabecera con el tamaño real del archivo:

image1.png

Los tamaños no coinciden: según la cabecera debería tener 8.200.530 bytes, pero realmente tiene 8.303.389 bytes — es decir, tiene 102.859 bytes de más. Esto indica que el método empleado es EOF (End Of File): se ha añadido información al final del archivo sin modificar la cabecera.

2Identificar la firma del archivo oculto

Vamos al final del fichero con el editor hexadecimal y encontramos los caracteres IEND, que marcan el final de una imagen PNG.

image2.png

Vamos a la posición 7D2151 (decimal 8.200.529), donde debería terminar el archivo BMP según su cabecera. Justo a continuación (posición 7D2152) reconocemos la cabecera de una imagen PNG: los bytes 89 50 4E 47, donde 50 4E 47 corresponden en ASCII a los caracteres PNG.

image3.png

Buscamos más cabeceras PNG en el resto del archivo. Solo hay una, confirmando que únicamente se oculta una imagen PNG al final del BMP.

3Extraer el contenido oculto

Extraemos todo el contenido del archivo BMP desde la posición 7D2152 hasta el final y generamos un nuevo archivo: mensaje.png. Su tamaño es 102.859 bytes, que sumados a los 8.200.530 de la cabecera dan exactamente 8.303.389 (el tamaño real). Esto confirma que solo hay una imagen PNG oculta.

4Abrir la imagen extraída

Abrimos mensaje.png con cualquier visor de imágenes y obtenemos la imagen que estaba oculta:

image4.png
🔑
Solución al Reto 1
«Los trabajos de Persiles y Sigismunda» — última novela de Miguel de Cervantes.
02

César

Criptografía · Cifrado César · Ataque por fuerza bruta Criptografía
▼
«Como en casi todo en esta vida, en el criptoanálisis la fuerza bruta no es una opción, o al menos suele ser la peor opción. Pero también hay excepciones. Éste es el caso del criptograma asociado al reto, ya que el espacio de claves es ridículo, incluso para un criptosistema clásico. Por las pistas dadas, seguro que ya sabes cuál es el criptosistema empleado. El refranero español es muy sabio y nos recuerda lo que he dicho al principio: ¿qué frase del refranero se esconde en el criptograma?»
Solución paso a paso
1Identificar el criptosistema: Cifrado César

El título y el enunciado apuntan directamente al cifrado César: cada carácter del texto en claro se sustituye por el que se encuentra un número fijo de posiciones por delante en el alfabeto (p. ej., «A» → «D», «B» → «E» con desplazamiento 3).

El desplazamiento más habitual es 3, pero puede ser cualquiera de los n−1 posibles. Con el alfabeto español (n = 27) hay 26 desplazamientos posibles — un espacio de claves ridículamente pequeño.

2Ataque por fuerza bruta

Probamos todos los desplazamientos posibles. En el peor caso son 26 intentos. Colocamos el criptograma en la primera fila y, debajo de cada carácter, el anterior del alfabeto. Si no obtenemos texto legible, añadimos otra fila y repetimos:

image5.png

En pocos intentos el texto en claro queda perfectamente visible.

🔑
Solución al Reto 2
«Más vale maña que fuerza» — refrán que recuerda que la fuerza bruta raramente es la mejor estrategia.
03

Aficiones

Esteganografía · Código QR manipulado · Metadatos de imagen Esteganografía
▼
«Comparto con un amigo la afición por el ajedrez y nos enviamos problemas por e-mail. Aprovechamos para incluir un mensaje oculto con la fecha, hora y lugar de la próxima cita. Supón que interceptas el e-mail asociado al reto: ¿cuándo y dónde hemos quedado?»
📥Descargar archivosaficiones1.pngaficiones2.PNG
Solución paso a paso
1Análisis inicial de los dos archivos

Descargamos los dos archivos. El primero (posición de ajedrez) se abre con el editor hexadecimal y no revela nada sospechoso.

El segundo archivo (código QR) no es reconocido por el lector de QR. Analizándolo, se observa que los patrones de sincronización tienen los colores invertidos respecto a los patrones de posición, alineamiento y zona tranquila:

image6.png
2Restaurar el código QR

Usando Paint, seleccionamos todo el QR excepto la zona tranquila e invertimos los colores:

image7.png

A continuación invertimos individualmente los colores de cada patrón de posición y del patrón de alineamiento, obteniendo el QR corregido:

image8.jpeg

Ahora el lector sí reconoce el código. Es un QR de geolocalización que muestra esta ubicación:

image9.png
3Extraer la fecha y la hora de los metadatos

Abrimos el archivo del QR con el editor hexadecimal:

image10.png

Entre los metadatos aparece la fecha y hora 19/12/2017 19:00. Esto también es visible en las propiedades del archivo (campo «Comentarios»):

image11.png

Como el correo fue enviado el 16/12/2017, la fecha 19/12/2017 es claramente la de la cita futura.

🔑
Solución al Reto 3
Cita el 19/12/2017 a las 19:00 h, en las coordenadas de geolocalización contenidas en el código QR.
04

Criptoanálisis

Criptografía · Análisis de frecuencias · Sustitución monoalfabética Criptografía
▼
«Al-Kindi, en el siglo IX, fue el primero en documentar que un texto cifrado puede atacarse mediante la estadística del lenguaje. El análisis de frecuencias estudia la aparición de caracteres y grupos en el criptograma. ¿Puedes descifrar el criptograma utilizando este método?»
📥Descargar archivosCriptograma.png
Solución paso a paso
1Análisis de frecuencias — monogramas

Calculamos la frecuencia de aparición de cada símbolo en el criptograma y la comparamos con las frecuencias de las letras en español:

image12.png

Hipótesis inicial: los dos símbolos más frecuentes del criptograma corresponden a «E» y «A». El segundo símbolo (8,33% de frecuencia) es muy probable que sea «S» (la consonante más frecuente en español):

image13.png

Primera aproximación al texto en claro con estas hipótesis:

image14.png
2Ampliar la hipótesis — más letras

El tercer símbolo podría ser «T» (el texto empezaría por «ESTE»), y los dos símbolos consecutivos repetidos podrían ser «L» (se leería «ELLOS»). Las frecuencias de aparición en el criptograma son coherentes con las de «T» (4,63%) y «L» (4,97%) en español.

Segunda aproximación al texto en claro:

image15.png
3Análisis de bigramas y trigramas

Analizamos los 12 bigramas que se repiten 3 o más veces: «OS», «LO», «TE», «ES», «EL»... y varios terminados en «E»:

image16.png

El símbolo que precede a «E» con más frecuencia (4 veces, enmarcado en rojo) es candidato a ser «D» — «DE» es posiblemente el bigrama más frecuente en español terminado en «E». También se identifican «U» y «N» gracias al bigrama «UN»:

image17.png

Recapitulamos todas las correspondencias halladas hasta el momento:

image18.png

Tercera aproximación al texto en claro:

image19.png
4Descifrado completo

A simple vista ya se leen palabras como «ATAQUE», «TEXTO», «ANALISIS»... Con los candidatos para «I», «R» y «C» determinados por eliminación y frecuencia, descifrado completo:

image20.png
🔑
Solución al Reto 4
«ESTE ES UN EJEMPLO DE ATAQUE A UN TEXTO CIFRADO MEDIANTE UN ANALISIS DE FRECUENCIAS DE LOS CARACTERES O SIMBOLOS Y GRUPOS DE ELLOS QUE FIGURAN EN EL CRIPTOGRAMA»
05

Newton

Criptografía · Cifrado Playfair · Resolución de anagrama Criptografía
▼
«La "llave" de este reto la tiene un científico inglés cuyo nombre latinizado se esconde en el anagrama asociado. Con esa "llave inglesa" descifrar el criptograma es un juego de niños, sobre todo si el inventor del criptosistema es otro científico inglés: Charles Wheatstone. ¿A qué obra del primero de ellos se refiere el criptograma?»
📌 Recursos del reto

Anagrama: JEOVASANCTUSUNUS

Criptograma: QLTASA

Solución paso a paso
1Resolver el anagrama — identificar la clave

«Jeova Sanctus Unus» (algo así como «Jehová único santo») era el seudónimo alquimista de Isaac Newton. Reordenando las letras del anagrama obtenemos su nombre latinizado:

image21.png

Resultado: «ISAACUS NEUUTONUS». Esta será la clave del cifrado.

2Identificar el criptosistema: Playfair

El enunciado indica que el inventor del criptosistema fue Charles Wheatstone, quien inventó el cifrado de Playfair (aunque lleve el nombre de Lyon Playfair, quien lo popularizó).

3Construir la matriz Playfair 5×5

Se disponen en la matriz los caracteres de la clave sin repetidos (ISACUNETO) y se completa con el resto del alfabeto, excluyendo «J» y «Ñ»:

image22.png
4Descifrar el criptograma «QLTASA»

Agrupamos en pares: QL · TA · SA.

Par QL — misma fila: cada letra se sustituye por la anterior de su fila → P y R:

image23.png

Par TA — misma columna: cada letra se sustituye por la de encima → A y X:

image24.png

Par SA — misma fila: cada letra se sustituye por la anterior → I y S:

image25.png

Texto en claro: PRAXIS.

🔑
Solución al Reto 5
«Praxis» — la obra más importante de Isaac Newton como alquimista.
06

Enigma

Criptografía · Máquina Enigma · Bomba de Turing Criptografía
▼
«Estás en Bletchley Park. Se intercepta un parte meteorológico cifrado con Enigma. Encajando la crib «WETTERVORHERSAGE» en el criptograma, ¿puedes encontrar la clave del día (rotores, ajuste de anillos y conexiones del tablero de clavijas)?»
📌 Recursos del reto

Criptograma: ...QQVWHKXFVWKBOKKA...

Crib: ...WETTERVORHERSAGE...

Herramienta: Simulador Bomba de Turing ↗

Solución paso a paso
1Elaborar el «menú»

El primer paso es encajar la crib en el criptograma y construir el menú de enlaces entre caracteres que se usará para configurar la bomba:

image26.png

Se asigna a cada enlace un codificador de doble extremo, eligiendo el camino más largo posible a través de los enlaces:

K → A → E → K → R → V → T → W → H → E → Q → W

image27.png

Finalmente se ajusta la posición inicial de los tambores de cada codificador según su posición relativa en la crib (ZZA, ZZB, ZZC…):

image28.png
2Configurar la Bomba de Turing

En el simulador, montamos los tambores del orden I-II-III en los 12 codificadores de la batería superior y ajustamos las posiciones iniciales según el menú:

image29.png

Establecemos las conexiones del menú en el panel posterior, «puenteando» la salida de cada codificador con la entrada del siguiente:

image30.png

Añadimos el resto de cables del menú y aplicamos tensión a la letra «E» (la más involucrada en bucles), con hipótesis de conexión «E»↔«A»:

image31.png

Activamos los interruptores CHAIN 1, el de la batería y CARRY:

image32.png
3Obtener y leer la parada

Ponemos en marcha la bomba. Se detiene mostrando el ajuste de anillos: X, W, V:

image33.png

El lateral derecho indica que «E» estaría conectada con la letra «T» en el tablero de clavijas:

image34.png
4Máquina de comprobación — obtener el tablero de clavijas

Pasamos a la checking machine del simulador. Ajustamos anillos a X-W-V y pulsamos las letras del menú para descubrir todas las conexiones:

image35.png

Conexiones obtenidas: E/T · Q/G · W/W · H/M · A/D · K/I · R/R · V/N · B/O · X/X · F/U · S/S. No hay contradicciones.

5Verificación con la réplica Enigma

En la réplica Enigma (Enigma 3) del simulador, ajustamos los anillos de los rotores I, II y III a X, W y V:

image36.png

Ponemos posición inicial Y-Y-Y (no Z-Z-Z, para compensar un error conocido del simulador de la bomba en los tambores I, II y III):

image37.png

Introducimos las conexiones del tablero de clavijas conocidas:

image38.png

Desciframos el criptograma de la crib y obtenemos el texto en claro correcto, confirmando que la clave es válida:

image39.png
🔑
Solución al Reto 6
Rotores: I-II-III · Anillos: X-W-V · Tablero: E/T · Q/G · W/W · H/M · A/D · K/I · R/R · V/N · B/O · X/X · F/U · S/S
07

Fuerza

Criptografía · Cifrado César · Ataque por fuerza bruta Criptografía
▼
«Como en casi todo en esta vida, en el criptoanálisis la fuerza bruta no es una opción, o al menos suele ser la peor opción. Pero también hay excepciones. El espacio de claves es ridículo, incluso para un criptosistema clásico. ¿Qué frase del refranero español se esconde en el criptograma?»
📌 Recursos del reto

Criptograma: YNFINXQYNANDHQRHQEMN

Solución paso a paso
1Identificar el criptosistema

El título («Fuerza») y el enunciado apuntan al cifrado César. El espacio de claves es de solo 26 desplazamientos — perfectamente atacable por fuerza bruta, incluso a mano.

2Ataque por fuerza bruta

Probamos sistemáticamente todos los desplazamientos. Colocamos el criptograma en la primera fila y, en cada fila sucesiva, el carácter anterior del alfabeto, hasta obtener texto legible:

image5.png
🔑
Solución al Reto 7
«Más vale maña que fuerza» — el mismo refrán que nos recuerda que la fuerza raramente es la mejor opción.
08

Cumpleaños

Criptografía · Vigenère · Hash Snefru-128 · RSA Criptografía
▼
«El 25 de julio fue el cumpleaños de un amigo. Le pregunté cuántos años cumplía y no me quiso decir. Al llegar a casa me envió un correo con el texto del reto. ¿Me puedes ayudar a saber qué edad tiene?»
📌 Recursos del reto

Criptograma 1 (Vigenère): PEEIHNÑEFEFAGE… (longitud 130)

Hash (Snefru-128): 8735f04f7d38955fa9a11e6265f11b16

Criptograma 3 (RSA): 6AE3 (hex) = 27.363 (dec)

Solución paso a paso
1Primer criptograma — Identificar el método

El primer criptograma está formado solo por caracteres alfabéticos en mayúsculas, lo que sugiere un método clásico. Calculamos el Índice de Coincidencia (IC) para determinar si es transposición/sustitución monoalfabética o polialfabética.

IC obtenido: 0,0441. Muy alejado del español (0,0775), por lo que descartamos transposición y sustitución monoalfabética simple. Apunta a cifrado polialfabético.

2Primer criptograma — Método Kasiski para Vigenère

Aplicamos el método Kasiski usando el software CriptoclasicosV2.1 para detectar secuencias repetidas y estimar la longitud de la clave:

image40.png

El software detecta secuencias repetidas y propone longitud de clave = 6 (mcd de las separaciones 6, 30, 66, 78). Probamos con Vigenère de clave longitud 6:

image41.png

El software propone la clave DECPDA, pero el texto parcialmente descifrado muestra que la cuarta posición no es correcta. La clave correcta es DECADA:

image42.png

Texto en claro obtenido: «NACI EN LA DECADA DE LOS AÑOS SETENTA DEL PASADO SIGLO. SNEFRU FUE UN FARAON DEL ANTIGUO EGIPTO Y EL TIENE LA CLAVE PARA DESCIFRAR EL SIGUIENTE CRIPTOGRAMA»

→ El amigo nació entre 1970 y 1979.

3Segundo criptograma — Hash Snefru-128

La cadena 8735f04f7d38955fa9a11e6265f11b16 tiene 32 caracteres hexadecimales = 128 bits. El texto anterior menciona a Snefru, que además del faraón es el nombre de una función hash criptográfica de 128 bits creada por Ralph Merkle.

Introduciendo el hash en una web especializada en Snefru-128, obtenemos el texto en claro:

«MI AÑO DE NACIMIENTO ES UNO DE LOS DE LA PRIMERA MITAD DE LOS AÑOS SETENTA. EL SIGUIENTE CRIPTOGRAMA ESTÁ CIFRADO CON RSA, EL PRODUCTO DE LOS DOS PRIMOS ES 52.841 Y LA CLAVE PÚBLICA ES 7»

→ El amigo nació entre 1970 y 1974.

4Tercer criptograma — Factorizar módulo RSA y obtener clave privada

Datos públicos RSA: módulo n = 52.841, clave pública e = 7. Para descifrar necesitamos la clave privada d. Factorizamos n con el software «Simulación de la Fortaleza de Cifrados»:

image43.png

Los dos factores primos son p = 53 y q = 997. Ahora calculamos la clave privada con el software genRSA:

image44.png

Resultado: clave privada d = 7399. Desciframos el criptograma 6AE3 (decimal 27.363):

image45.png

El año obtenido es 1974.

🔑
Solución al Reto 8
El amigo nació en 1974. El 25 de julio de 2017 cumplió 43 años.
09

Feliz Navidad

Esteganografía + Criptografía · Cabecera BMP · EOF ZIP · Cifrado de rejilla · Base64 Esteg. + Cript.
▼
«Como todos los años suelo enviar una felicitación de navidad a un amigo con el que comparto la afición por el ajedrez. Este año le he enviado un correo con la imagen asociada al reto como adjunto. No me he equivocado de imagen. Supón que interceptas ese e-mail: ¿puedes ver la felicitación de navidad?»
📥Descargar archivosReto 9_Navidad 2017.bmp
Solución paso a paso
1Análisis hexadecimal de la cabecera BMP

Abrimos Reto 9_Navidad 2017.bmp con el editor hexadecimal. Lo primero que llama la atención son los caracteres alfanuméricos LyQW2FDMTlR4 a partir de la posición 36 hex (54 decimal):

image46.png

La cabecera BMP indica que su tamaño es 00 00 00 42 hex = 66 bytes, cuando lo normal son 54. La diferencia es exactamente 12 bytes = los 12 caracteres alfanuméricos. Se ha ampliado la cabecera para ocultar datos sin afectar la visualización de la imagen.

2Detectar archivo ZIP oculto al final (EOF)

El tamaño real del archivo no coincide con el esperado tras la ampliación:

image47.pngimage48.png

Se espera 373.734 + 12 = 373.746 bytes, pero el archivo tiene 466.396 bytes. Vamos a la posición 05B3F1 (último byte esperado) y justo después (05B3F2) encontramos la cabecera de un archivo ZIP (50 4B = «PK» en ASCII):

image49.png

El ZIP parece contener un archivo Navidad2017.jpg. Extraemos el contenido desde 05B3F2 hasta el final y guardamos como Reto 9_Navidad2017.zip:

image50.png

El ZIP existe y contiene Navidad2017.jpg, pero está protegido con contraseña.

3Descifrar el criptograma de la cabecera — Cifrado de rejilla

Los caracteres LyQW2FDMTlR4 son la contraseña cifrada. Probamos como contraseña directa y como Base64 — no funciona.

La imagen del archivo es un tablero de ajedrez, que recuerda a una rejilla. La hipótesis es que se usó un cifrado de rejilla, y que las posiciones de las piezas indican los huecos perforados.

La rejilla resultante:

image51.png

Colocamos la rejilla sobre papel y rellenamos los huecos de la primera fila y mitad de la segunda con los primeros caracteres del criptograma:

image52.png

Rotamos 90° y continuamos:

image53.png

Rotamos otros 90° y continuamos:

image54.png

Última rotación de 90°:

image55.png

Quitamos la rejilla y leemos el texto resultante:

image56.png

Texto obtenido: TWlLR2FyQDM4. Probamos como contraseña — no funciona. Pero decodificado en Base64:

image57.png

La contraseña en claro es MiKGar@38. Abrimos el ZIP y obtenemos la felicitación:

image58.png
🔑
Solución al Reto 9
La felicitación navideña está en el archivo Navidad2017.jpg extraído del ZIP. Contraseña del ZIP: MiKGar@38 (texto obtenido aplicando cifrado de rejilla al criptograma de la cabecera y decodificando Base64).
10

Confidencial

Esteganografía · Bytes de relleno BMP (padding) Esteganografía
▼
«Sospechamos que un empleado está sacando información confidencial en un pendrive. Conseguimos acceso al mismo y recuperamos varios archivos borrados, todos protegidos por contraseña salvo una imagen. En la imagen se oculta la contraseña del resto de archivos: ¿cuál es?»
Solución paso a paso
1Descarte de métodos esteganográficos que aumentan el tamaño

Abrimos Reto 10_Imagen.bmp con el editor hexadecimal. El tamaño indicado en la cabecera coincide con el tamaño real:

image59.pngimage60.png

Esto descarta los métodos EOF y ampliación de cabecera. Tenemos que buscar otro método.

2Identificar el método: bytes de relleno de línea BMP

En los archivos BMP, cada línea de píxeles tiene una longitud múltiplo de 4 bytes. Si no llega a ese múltiplo, se añaden bytes de relleno con valor 0. Estos bytes son ignorados al visualizar la imagen, por lo que son perfectos para ocultar información.

La imagen tiene 523 píxeles de ancho y usa 24 bits (3 bytes) por píxel:

image61.png

523 píxeles × 3 bytes/píx = 1.569 bytes por línea. Como 1.569 no es múltiplo de 4, se añaden 3 bytes de relleno por línea hasta llegar a 1.572. Con 412 líneas en total: 412 × 3 = 1.236 bytes disponibles para ocultar información.

3Extraer la contraseña de los bytes de relleno

Vamos a la posición del primer byte de relleno de la primera línea (hex: 36 + 621 = 657):

image62.png

Los 3 bytes de relleno contienen los valores hex 4B 65 79 → ASCII: Key. ¡Hay datos ocultos!

Segunda línea (posición 657 + 3 + 621 = C7B):

image63.png

Valores 2F 30 38 → ASCII: /08

Tercera línea (posición C7B + 3 + 621 = 129F):

image64.png

Valores 2D 30 33 → ASCII: -03

Cuarta línea (posición 129F + 3 + 621 = 18C3):

image65.png

Valores 00 00 00 → fin de la contraseña.

Contraseña reconstruida: Key/08-03. La probamos en el archivo ZIP:

image66.png

¡Correcto! El archivo Documento 1.txt se descomprime correctamente.

🔑
Solución al Reto 10
Contraseña: Key/08-03 — oculta en los bytes de relleno de las tres primeras líneas de la imagen BMP.