🤎LFSR
2023-7-7
| 2024-10-30
0  |  0 分钟
type
status
date
summary
password
category
slug
icon

CTF中的LFSR类题目

题型:给出反馈函数输出序列,反推出初始状态

2018 CISCN 线上赛 oldstreamgame

题目

题解

0xffffffff -->32位的常数 $0b11111111111111111111111111111111$ 按位与运算(同1才为1)与$0xffffffff$做按与运算,结果为原数低32位, R(flag)是32位的初始状态
output = (R << 1) & 0xffffffff 把R左移一位后低32位(即抹去R的最高位)
i=(R&mask)&0xffffffff
#把传入的R和mask做按位与运算,运算结果取低32位,将该值赋给i变量。
i&1的作用是从低到高取出每一位
lastbit^=(i&1)说明Lastbit是i从低位异或到高位的结结果,如果i中有奇数个1,结果1;偶数个1,结果为0。
output^=lastbit将output变量的最后一位设置成lastbit变量的值。
整体流程: 每轮产生8个lastbit,lastbit取决于r按位与上mask后结果中1的个数,因为按位与性质,都为1时才为1,mask已知,
只需考虑mask中是1的位置(从右边数
每次产生lastbit后,R值更新为output(=R去掉最高位第32位是lastbit的值)
每轮产生一个结果,即8个lastbit异或的结果

WP

2018 强网杯 线上赛 streamgame1

题目

题解

方法一

和第一题一样

方法二

因为flag不是很长(19bit),所以可以爆破

WP

2018 强网杯 线上赛 streamgame2

题目

题解

同1,2,len(flag)==27

WP

2019 0CTF/TCTF 线上赛 zer0lfsr

题目

题解

方法一:Fast Correlation Attacks

Fast Correlation Attacks(快速相关攻击)
Correlation Attacks(相关攻击)
利用单个LFSR的输出序列和combine之后的LFSR的输出序列之间具有的一定的相关性这一特点,来还原LFSR的初始状态
两种重要的快速相关攻击的手法:Algorithm A和Algorithm B
使用该攻击的满足条件:单个LFSR的输出序列和combine之后的LFSR的输出序列之间的相关性大于0.53\
例子:
x1
x2
x3
combine(x1,x2,x3)
0
0
0
0
0
0
1
0
0
1
0
0
0
1
1
1
1
0
0
0
1
0
1
1
1
1
0
1
1
1
1
1
当x1=0时,会对应四个result(即combine(x1,x2,x3))值,其中3个result值为0,一个为1,即x1和result相同的概率为0.75。同理,x2和x3也满足这一规律,这样一来我们就找到了一个很关键的要素,那就是单个x的值和combine之后的值相同的概率有0.75
Meier-Staffelbach模型
两种重要的快速相关攻击的手法:Algorithm A和Algorithm B,都默认建立在该模型之下。
两种算法的比较:
1.算法A:
优点:错误率接近0.75时攻击效果显著。
缺点:当抽头数量较多时,该攻击将逐渐退化为穷举攻击。
2.算法B:
优点:错误率接近0.5时攻击效果显著。
缺点:该攻击需要进行大量的双精度计算,计算量较大
脚本:

方法二:z3约束求解

z3约约束求解的核心是列方程和解方程,如果能解,z3就会给你一组解(注意:如果方程有多组解,z3只会给你其中的一组解,所以这组解虽然满足题意但未必是正确答案,这个时候我们可以尝试能否继续为方程添加约束条件,进一步限制解的范围,从而获得我们预期的一组解
Solver添加方程的时候,只添加了200个方程,按理来讲,我们应该有len(outputs)个方程,为什么只添加200个呢?实际上在这里200并不是一个精确数字,而是一个大概的数字,意思是当添加够200个方程的时候,得到的解就已经固定了,即我们需要的那组解,我们把它改到300,得到的还是这组解,所以就不用继续添加没有必要的方程了。那么既然我们说反正都一样,我直接给他添加len(outputs)个方程,不是更省事吗,也不用去关它多少个方程之后解就固定了,其实大家可以动手去试一下,这样虽然理论上是一样的,但是实际操作的时候计算机反而解不出来,原因就是约束的方程过多了,计算机反而解不出来了,因此我们需要手动测试一下,找到一个合适的数值,来使得我们的脚本既能求出我们希望的一组解,又能让计算机正常跑出来。

wp

解出init1,init2,init3

2018 强网杯 线上赛 streamgame3

题目

Fast Correlation Attacks(快速相关攻击)

B-M 算法

比赛复现
DHKESICTF2023 Round2
目录