《 CTF 2019Q4 readyu's crackme 四季之歌 设计思路 》
20191124 版本
说明:密码学题目, VC++ 编译的Win32程序,取名“四季之歌”。
crackme主程序
(已上传)
:
crackme2019q4_readyu_四季之歌.exe
#2 算法模型与解题分析
本题验证爱德华椭圆曲线上 “点加” 的相遇等式,
求 G。
G是未知量,其余的点和参数都是已知量。
L + G = M
或者记作:
L(G, hash1, m) + G = M(G, hash2, n
)
再展开,记作:
3^365*[ 12*(R1+R2+R3+R4) + h1*G ] + G = 2^365 *[ 4(W1 + W2 + W3 + W4) + h2*G ]
故事概要:在
爱德华
曲线的时空里, 李雷(L)和韩梅梅(M)从某一点G同时出发, 以不同步长走了365天,最终发现仅有一步之遥(G),就牵手成功。
G点的坐标(X,Y,Z)对应了Flag。
下面会详细展开,讲述这个故事。
2.1 引言:爱德华椭圆曲线上的加法循环
Edwards
曲线的典型应用为EdDSA
(Edwards-curve Digital Signature Algorithm )
, 在RFC8032有规范描述。
用以取代传统
Weierstrass
椭圆曲线上使用的ECDSA(Elliptic Curve Digital Signature Algorithm)。
参考: https://en.wikipedia.org/wiki/EdDSA
单位圆上有理点的“加法”,那就是在复变函数 |z|=1 做运算,要保证两个点“相加”得到的第三点,仍在单位圆上,并且要满足交换律,意味着各点平等。
这实际上对应着单位圆上复数的乘法(指数相加,而模长不变),就是角度旋转,欧拉公式揭示了这一点。
P3( X3,Y3) = P1 + P2 = cos(A+B) + i*sin(A+B) ... (6)
"加法"这样计算: (x1,y1)+(x2,y2)=(x3,y3)
x3 = cos(A+B) = cosA*cosB − sinA* sinB = x1*x2 - y1*y2
y3 = sin(A+B) = sinA*cosB + cosA * sinB = x1*y2 + y1*x2
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2019-12-27 15:21
被readyu编辑
,原因: