LCG
LCG,线性同余生成器
principle
递归公式
若$gcd(a,p)=1$,则周期$T=ord(a)$
因此选取系数时应尽量使得a为模m的原根,以此尽量延长LCG周期,使$T=phi(p)$
Crack methods
unknown a,b
已知:m,s0,s1,s2
以下是另一种利用格密码的解法:
一组求模等式方程组的通法,基于LLL,对构造的格基进行约化
因此我们要找到格基约化后一个行向量,满足前两个元素为0
为了在约化后的矩阵中得到直观的a, b,邻接上一个$\frac{E}{m}$(这里不用单位矩阵E的原因,是因为最好使得包含a(-a),b(-b)的行向量的长度尽可能短,也就是说更大的分母也是允许的
在LLL约化后,找到满足下列要求的行向量r,即求解成功:
- r[0] = r[1] = 0
- r[-1] = 1(-1)
𝑚⋅𝑟[2]=𝑎(−𝑎),𝑚⋅𝑟[3]=𝑏(−𝑏)
1 |
|
unknown a,b,p
已知$s_{0}$~$s_6$
令
既然$T_{n}T_{n+2} - T_{n+1}^{2}=kp$, 那么可以尝试gcd一连串的$T_{n}T_{n+2} - T_{n+1}^{2}$来找到p
此时问题就转化为unknown(a,b)
LCG_LLBP
结合HNP的LCG,seed高位泄露
这个问题一般给出了a,b,m和一组连续的seed的高位
1 |
|
得到seed之后就可以直接推测next了
参考Summary-of-Crypto-in-CTF(PRNG) | 0xDktb’s Blog (dunkirkturbo.github.io)
LCG(线性同余生成器)-CSDN博客
| 独奏の小屋 (hasegawaazusa.github.io)
LCG
http://example.com/2024/04/26/LCG/