2020 De1CTF

  1. NLFSR
  2. easyRSA
  3. ECDH
  4. Homomorphic

题目和exp塞这里了。

NLFSR

改编自2018年的强网杯streamgame3,式子可以化简

(ao * bo) ^ (bo * co) ^ (bo * do) ^ co ^ do = (ao * bo) ^ (bo * (co ^ do)) ^ (co ^ do)

[把co ^ do 设为=>eo ] => (ao * bo) ^ (bo *eo )) ^ eo 这样子又只有三个寄存器了。

然后我们看一下关系

1
2
3
4
5
6
7
8
9
10
11
12
13
14
for ao in range(2):
for bo in range(2):
for eo in range(2):
print ao,bo,eo,(ao*bo)^(bo*eo)^eo

>>
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1

这样子,ao、eo 和输出有75%相同,这里可以用相关攻击。bo的话,爆破就好了。

这里说说自己对相关攻击的理解。线性反馈位移寄存器是用来生成密钥流的嘛,然后良好生成方式应该是输出的每一位为0和1的概率都应该是0.5,这里的lfsr应该也是比较良好的吧,俺猜的,有现题了,就懒狗了,没有做测试, 所以我们才有上面的表。

然后我们先爆破a,当ao和输出(不用全部输出啦,题目给的量有点大,随便来个1000位大概就好了)的75%相同时,大概就确定a了。

然后我们同时爆破c,d。当co^do 和输出的%75相同时,大概就确定c,d了。(出题人有良心,c 和 d 给的都比较短)

最后我们爆破b,把之前得到的a,c,d带入到加密程序,如果输出和题目给的输出完全相同就可了。(这次也不用测全部,来个50位,100位也就足够了。)

easyRSA

2019年D3CTF common一题的一个part

直接用当时出题人给的题解exp, 换一换alpha的值,用解出来的phi求解私钥,解密密文,观察解密后的明文是否为flag就好

题做出来了,但其实原理并没有懂,是一个大坑,等俺哪天学会了再说哈哈哈哈哈

ECDH

NCCIP问题,直接构造出低阶点P(记录P的阶为N),然后发送给服务端,让他算出key,之后加密自己的输入,我们拿来异或自己的输入从而得到key,然后根据key的值(和P的关系)可以得到secret模N的一个剩余,即secret%N,多发送几个,最后来一波CRT就好。

具体步骤、细节俺会专门再写一篇。 在做了,在做了

Homomorphic

这道题俺其实连解密原理都没搞懂,自己对多项式还是不够了解熟悉,所以这题就本地搭好,然后测!就硬测!

经过测试,发现该算法如其名,具有加法同态。并且发送(1,1,1,1,,,,,,1)和(1,1,1,,,,,1)过去解密得到的明文的ascii值是0。

所以直接把服务端给的flag的所有密文(FLAG)(44对,88组多项式),每一对中每一组的每一个系数都减1,发送回去给服务端解密就好。然后index输入0(多项式的表达,列表里头好像第一个是常数,也就是我们要的m),得到一位flag的ascii码,44次交互得到flag。

没懂原理,测试出来的而已哈哈哈哈哈哈哈哈

感觉这是非预期,毕竟让我们交互2^10次,出题人应该是看了这篇paper,想让我们恢复私钥的吧哈哈哈哈哈哈哈哈。俺以后有空一定看,一定看

PS:badmonkey师傅好像是根据这个来的,恢复了私钥,TQL!!!


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可联系QQ 643713081,也可以邮件至 643713081@qq.com

文章标题:2020 De1CTF

文章字数:893

本文作者:Van1sh

发布时间:2020-05-05, 15:57:00

最后更新:2020-05-24, 18:33:22

原始链接:http://jayxv.github.io/2020/05/05/2020De1CTF/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏