公钥指数相关攻击
小公钥指数攻击
攻击条件
e 特别小,比如 e 为 3。
攻击原理
假设用户使用的密钥 $e=3$。考虑到加密关系满足:
c≡m3modN
则:
m3m=c+k×N=3c+k×n
攻击者可以从小到大枚举 $k$,依次开三次根,直到开出整数为止。
范例
这里我们以 XMan 一期夏令营课堂练习为例进行介绍(Jarvis OJ 有复现),附件中有一个 flag.enc 和 pubkey.pem,很明显是密文和公钥了,先用 openssl 读一下公钥。
看到 $e=3$,很明显是小公钥指数攻击了。这里我们使用 Crypto 库来读取公钥,使用 multiprocessing 来加快破解速度。
爆破时间有点长,,拿到 flag
题目
RSA 衍生算法——Rabin 算法
攻击条件
Rabin 算法的特征在于 $e=2$。
攻击原理
密文:
c=m2modn
解密:
计算出 $m_p$ 和 $m_q$:
mpmq=cmodp=cmodq
用扩展欧几里得计算出 $y_p$ 和 $y_q$:
yp⋅p+yq⋅q=1
解出四个明文:
abcd=(yp⋅p⋅mq+yq⋅q⋅mp)modn=n−a=(yp⋅p⋅mq−yq⋅q⋅mp)modn=n−c
注意:如果 $p \equiv q \equiv 3 \pmod 4$,则
mpmq=c41(p+1)modp=c41(q+1)modq
而一般情况下,$p \equiv q \equiv 3 \pmod 4$ 是满足的,对于不满足的情况下,请参考相应的算法解决。
例子
这里我们以 XMan 一期夏令营课堂练习(Jarvis OJ 有复现)为例,读一下公钥。
$e=2$,考虑 Rabin 算法。首先我们先分解一下 p 和 q,得到
编写代码
拿到 flag,PCTF{sp3ci4l_rsa}。
题目
Last updated