首页
社区
课程
招聘
[原创]CTF 2019Q4 crackme 第九题:四季之歌 设计思路
发表于: 2019-11-25 00:40 9793

[原创]CTF 2019Q4 crackme 第九题:四季之歌 设计思路

2019-11-25 00:40
9793

《 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

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2019-12-27 15:21 被readyu编辑 ,原因:
上传的附件:
收藏
免费 5
支持
分享
最新回复 (3)
雪    币: 11705
活跃值: (975)
能力值: ( LV12,RANK:779 )
在线值:
发帖
回帖
粉丝
2
附件 keygenme2019q4_a2019_keygen.rar  ,VC++6 测试通过。
keygen源代码, 解压pass:
edwards

crackme只用到椭圆曲线的点加 , 而keygen要用到k倍加(点乘, R = k* G), 所以要实现mul算法,参见源代码。
keygen用的是二进制展开法,这个方法最便于理解, k的展开如下描述:
// x2,y2 = k* x1,y1
// k = base2 :   an | an-1 | ... | a1 | a0,    ai = (0, 1)
// k = a0 + 2 * a1 + 4*a2 +...+ 2^n*an
上传的附件:
2019-11-28 11:31
0
雪    币: 220
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
请问一下扭曲爱德华曲线的无穷远点一定是(0,1)吗?
2022-10-31 14:46
0
游客
登录 | 注册 方可回帖
返回
//