2024 CTFZone-she's the real one-Writeup
CTFZone好难好难...肝了一天也只不过拿下这一道题。
task
python
1 |
|
先来看下输出:
output.dump
python
1 |
|
题目其实是在实数域上的一条singular curve上的ECDLP。我们知道singular curve只会是cusp(三重根)或node(二重根)。对于本题而言,曲线其实是\(y^{2}=x^{3}-3x-2=(x+1)^{2}(x-2)\),是node(二重根),所以有个homomorphism可以把ECDLP转化到DLP:
\[\phi: E\left(\mathbb{R}\right) \rightarrow K^{\times}(x, y) \mapsto \frac{y+\sqrt{\alpha-\beta}(x-\alpha)}{y-\sqrt{\alpha-\beta}(x-\alpha)},\alpha=-1,\beta=2\]
这题中\(\mathbb{K}=\mathbb{C}\),sagemath没有可以直接解决其上的DLP的函数。记\(\phi(P)^{m}=\phi(Q)\),则\(m = \frac{ln(\phi(Q))}{ln(\phi(P))}\)。不过因为复对数函数是多值函数,所以实际的m对应的分子/分母上是要加上\(2k\pi\)的,因此没办法直接从这个式子计算得到m。
不过总之我们有\(ln(\phi(Q))-mln(\phi(P))+k\pi=0\),所以还是可以考虑LLL求解。这里反而困扰了我一段时间,因为赛场上最初构造的格乘上的系数太大,出不来flag:
python
1 |
|
最初格子里的\(2^{528}\)取的是\(2^{2048}\),一直出不来;最后把系数调小到\(2^{528}\)反而就有了...
不懂,感觉很玄学(
2024 CTFZone-she's the real one-Writeup
https://eupho.me/9d419715.html