Tracking The Beast - SpookyCTF2024
Reto Cripto basado en Curvas Elipticas.
Autor del reto: thatoganGuy
Dificultad: Difícil
Enunciado
NICC is hot on the trail of bigfoot! He has been following a path equivalent to the curve y^2 = x^3 + 73x + 42 mod 251. Each point along this curve represents one of Bigfoot’s hideouts. NICC dicovered in his cave located at (26,38), many references to Green Lantern comics. A large depiction of Green Lantern with 13 rings on his fingers was drawn on the cave wall. I think this is the cover to an old issue of Green Lantern, could something about the issue point to how many more hideouts Bigfoot will travel through before stopping again?
Archivos
En este reto no nos dan ningún archivo, solamente el enunciado.
Archivos utilizados aquí
Analizando el Enunciado
Básicamente el enunciado nos dice que están investigando los escondites de Bigfoot a lo largo de la curva elíptica descrita por la ecuación ( y^2 = x^3 + 73x + 42 ) módulo 251.
Además se ha encontrado una de sus cuevas en el punto (26, 38) donde dentro hay referencias a cómics de Green Lantern, incluida una representación de Green Lantern con 13 anillos en los dedos.
Para obtener la flag, tenemos que encontrar el próximo escondite de Bigfoot, ¿podremos encontrarlo?
Solución
Básicamente, en este reto nos piden calcular el siguiente punto de la curva donde el Bigfoot puede estar. Para comenzar podemos ver los próximos puntos donde el Bigfoot puede estar, para ello utilizaré la herramienta online Elliptic Curves over Finite Fields
Pero antes de comenzar, vamos a desglosar todos los datos que tenemos.
- Tenemos la curva elíptica ( y^2 = x^3 + 73x + 42 mod 251), donde p = 251, a = 73 y b = 42
- Además tenemos un punto P (26, 38) dentro de la curva.
- Por último, tenemos una pista (un tanto guessy) la cual nos dice que en la cueva donde se encontró El Bigfoot, hay una referencia de una portada de cómic protagonizada por Linterna Verde con 13 anillos en los dedos.
Antes de continuar desarrollando la pista, vamos a observar los posibles puntos en los que puede estar escondido Bigfoot.
Es importante saber que elegimos subgrupos dentro del punto P ya que las curvas elípticas tienen estructuras algebraicas que permiten la definición de grupos de puntos. Estos grupos tienen subgrupos que son útiles para realizar operaciones y cálculos específicos. La clave en este reto viene dada por encontrar dichos puntos a lo largo de la curva. Como sabemos que para seguir el camino tenemos un punto inicial P, simplemente tenemos que multiplicar el punto inicial P por un escalar N.
Dicho escalar N lo obtenemos mediante la tercera pista, por lo que tenemos que encontrar la portada a la que se refieren en el enunciado, para ello un poco de OSINT y encontramos lo siguiente.
Como podemos observar, dicha portada del cómic se corresonde con lo descrito en el enunciado, ¿y ahora que hacemos?
Pues básicamente tenemos que tomar el número 49 equivalente a el número de tomo del cómic como escalar N y operar en la curva elíptica para obtener el punto multiplicativo. N x P
Realizando un breve script en sage
obtenemos la flag.
1
2
3
4
5
6
F = GF(251)
E = EllipticCurve(F, [73, 42])
P = E.point([26,38])
print(49*P)
Ejecutando el código anterior obtenemos el punto del siguiente escondite del Bigfoot el cual se corresponde con (72, 17) y como podemos observar dicho punto existe dentro de la lista.
Flag
NICC{72,17}