i春秋"巔峰極客"2020密碼學部分詳解


一、tryecc

1.1 題目信息

附件是一個sage腳本與一個文本文件,Gitee備份在此

1.2 分析

\(E_{1}: y^{2}\equiv x^{3}+ax+c\ \textrm{mod}\ N ; E_{2}: y^{2}\equiv x^{3}+ax+b\ \textrm{mod}\ N\)
我們總結一下已知量和未知量:

已知 未知
N,C,P1,P2,P3,P4 A,B,m1,m2

那么已知\(P_{1}(x_{1},y_{1}),P_{2}(x_{2},y_{2})\)就可以計算出\(a,b\)
\( y_{1}^{2}\equiv x_{1}^{3}+a\cdot x_{1}+c\ \textrm{mod}\ N \\ y_{2}^{2}\equiv x_{2}^{3}+a\cdot x_{2}+b\ \textrm{mod}\ N \\ a=[y_{1}^{2}-x_{1}^{3}-c]\cdot x_{1}^{-1}\ \textrm{mod}\ N \\ b=y_{2}^{2}-x_{2}^{3}-a\cdot x_{2}\ \textrm{mod}\ N \\ \)

好在\(x_{1}\)在模\(N\)下有逆,於是\(a,b\)就可以解出,到此得到了\(E_{1},E_{2}\)

\(P_{3}=m_{1}\cdot P_{2}\ in\ E_{2},P_{4}=m_{2}\cdot P_{2}\ in\ E_{2}\)

丟到sgae里面去解離散對數,結果發現解不出來!

但是發現N不是素數,用yafu分解一下N,發現N是兩個素數的乘積,記為\(N=p\cdot q\),那么橢圓曲線\(E_{2}\)可重寫為
\(E_{2}: y^{2}\equiv x^{3}+ax+b\ \textrm{mod}\ p\cdot q\),這樣\(E_{2}\)上的點也滿足下面兩個等式:
\( E_{p}: y^{2}\equiv x^{3}+ax+b\ \textrm{mod}\ p \\ E_{q}: y^{2}\equiv x^{3}+ax+b\ \textrm{mod}\ q \)

\(E_{2}\)上的點同時在\(E_{p}\)\(E_{q}\)上(試了一下,我們可以求解\(P_{3},P_{4}\)在橢圓曲線\(E_{p},E_{q}\)上關於基點\(P_{2}\)的離散對數)
\(P_{3}=m_{1}\cdot P_{2}\ in\ E_{2}\) 則有
\( P_{3}=m_{1}\cdot P_{2}\ \ in\ E_{p} \\ P_{3}=m_{1}\cdot P_{2}\ \ in\ E_{q} \)

那是不是意味着我們解出\(P_{3}\)在橢圓曲線\(E_{p}\)上關於基點\(P_{2}\)的離散對數就是\(m_{1}\)呢?非也!我們解出的只是\(m_{1}\ \textrm{mod}\ order_{E_{p}}(P_{2})\),即\(m_{1}\)模了\(P_{2}\)在橢圓曲線\(E_{p}\)上的階之后的值!

要想解出\(M_{1}\),需要將\(P_{3}\)在橢圓曲線\(E_{p},E_{q}\)上關於基點\(P_{2}\)的離散對數結合起來!
\( m_{1}\equiv s_{p}(1)\ \textrm{mod}\ order_{E_{p}}(P_{2}) \\ m_{1}\equiv s_{q}(1)\ \textrm{mod}\ order_{E_{q}}(P_{2}) \)
這里\(s_{p}(1),s_{q}(1)\)分別是\(P_{3}\)在橢圓曲線\(E_{p},E_{q}\)上關於基點\(P_{2}\)的離散對數;

使用中國剩余定理解上述方程組即可解出\(m_{1}\),同理解出\(m_{2}\)

1.3 解題

上述鏈接中的solve.sage為解題的腳本;程序運行結果如下(運行時間有點長,稍微等一下):

$ sage solve.sage
  ***   Warning: increasing stack size to 2000000.
flag{de7a89ab1d074ef3930fb3054c0e3ac8}

后記

一直在等師傅們關於密碼學題目的writeup,結果一直沒有找到;就只能把自己唯一做出來的一道題目的writeup寫一下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM