RSA2
题面:
1 | from Crypto.Util.number import* |
分析:
此处参考了la佬的:给定N,e,c,其中dp过小
题目给定的q_bit=658,n_bit=2048
$$
q_{bit}=658,N_{bit}=2048\
则\frac{q_{bit}}{N_{bit}}=0.32<0.38
$$
$$
参数\beta=\frac{q_{bit}}{N_{bit}},\delta=\frac{dp_{bit}}{N_{bit}}\
满足3\beta<1+\beta^2+2\delta,可以确定 \beta和\delta的值\
$$
$$
构造格的维度为n,格中的模数N的最大次幂为m,应满足关系: \
\frac{m(m+1)}{2}+\frac{n(n-1)(2\delta+\beta)}{2}-(1-\beta)nm<0
$$
$$
确定\beta和\delta之后,可枚举确定n和m的取值(最小值),m=(1-\beta)n是一个较优的取值
$$
先给出求格维度的脚本:
1 | from Crypto.Util.number import * |
得到了维度n=3.408695,但是测试发现大于5之后才能得到想要的结果
然后用la佬的脚本:
1 | #sage |
从后往前是dp
, k-1
1 | 603601239605461619719962824215850028370828276194986402520006784945171666555162381560306067089554862768237542295127706223128204911327713581268000464342787657534895446276895456449104343518846054862311913534953258511*x + 1115967702502739*y |
用下面的式子求p
题解:
1 | from Crypto.Util.number import * |
RSA3
题面:
1 | from Crypto.Util.number import * |
分析:
很明显是Franklin-Reiter相关信息攻击,但是此处的e比较大,所以考虑用Half-GCD解
pgcd(f1,f2)
返回的是ax-bM,a,b代表任意数字
用monic()
使得上式变为x-M,再提取出M
题解:
1 | from Crypto.Util.number import * |
RSA4
题面:
1 | from Crypto.Util.number import * |
分析:
$$
hint = ((t+q)^4+(t+q)^3+(t+q)^2+(t+q)+2023) % n
$$
直接二项式展开得到:
$$
hint = t^4+t^3+t^2+t+2023+Poly(p)\ mod\ n
$$
在Coppersmith下,由于在模n的行为下,p是n的素因子,那么就会把含p的多项式都模掉
$$
Poly(p)\ =0\ mod\ n
$$
$$
hint=(t^4+t^3+t^2+t+2023)\ mod\ n
$$
对于:
$$
c≡t^m\ mod\ r
$$
这里注意题目条件:
$$
len(flag)\leq35,\therefore m\leq2^{280}\
但是r.bit_length()只有257\
c≡t^m\ mod\ r \ \ ->\ \ c≡(c×1)\ mod\ r\ \ ->c≡t^{m’} × t^{k\phi®}\ mod\ r\
所以m=m’+k×\phi®
$$
不过发现一直爆破不出来
猜测:
$$
因为\phi®=r-1 有很多因子,\phi ®可能不是t模r的阶,遍历所有因子,发现存在使得t^a≡1\ mod\ r\
发现因子有2,17,则a=\frac{r-1}{2}和a=\frac{r-1}{17}\
所以t模r的阶为\frac{r-1}{34}, 记为\phi’®\
这个满足t^{\phi’®}≡1\ mod\ r\
尝试m=m’+k×\phi’®,k的大小在(280-257)=23,那就大约22bit左右
$$
题解:
1 | from Crypto.Util.number import * |