Apparently curves with numbers in their name are now cool, so I decided to make my own.
We have the flag encrypted by key
x, and a point
xG on the elliptic curve.
- Recover the equation of the elliptic curve.
- Map points on the curve to an multiplicative group.
- Calculate discrete logarithm to find x.
The slope of the curve is
3x^2 + 4x+ 1 / 2y compare to the derivative of y^2 = x^3 + cx^2 + ax + b 3x^2 + 2cx + a / 2y E: y^2 = x^3 + 2x^2 + x + b Evaluate on the point (4, 10), we found that b = 0 E: y^2 = x^3 + 2x^2 + x = x (x + 1)^2
That is a singular curve, which is isomorphic to a multiplicative group.
Here's a great article about how to solve discrete log on these curve.
First, we translate the curve to
y = x^2 (x - 1)
and find the square root of
z^2 = -1 mod p z = 189460722536962819362366221450020958767 f(x, y) = (y + zx) / (y - zx)
where f is an isomorphism from E to Fp.
And then we can get x by solving the discrete logarithm using sage:
Fp = IntegerModRing(p) g = Fp(f(Gx, Gy)) t = Fp(f(Tx, Ty)) x = t.log(g)
It takes several minutes to solve, and then we can decrypt our flag with