RSA攻击方式总结 - Blog of Mathias
Blog of Mathias Web Securtiy&Deep Learning
RSA攻击方式总结
发表于: | 分类: crypto | 评论:0 | 阅读:1,045

总结一下crypto中的rsa攻击方式
1.n较小,或p,q差较大时,分解n的攻击
不多说,最常见的,n最大在768bit可以破解
一是本地用yafu
二是尝试http://www.factordb.com/
ed=1 mod (p-1)(q-1)
1<e<(p-1)(q-1)
2.选择密文攻击(CCA)
如果一个系统能够对我们的rsa密文请求做解密(但是不能解密之前用户的敏感信息)
那么可以有如下方法
(1)选择Zn*中的一个随机整数X。
(2)计算出

1.png

(3)发送到解密过程中,得到

2.png

(4)第一步变换

3.png

(5)得到明文

4.png

3.低加密指数(e=3)攻击
c=m^e mod n,但此时如e=3导致明文加密后的结果远小于n,则
设明文m和密文c满足如下关系
c=m^e+kn,这是一个m^e加上线性式子,因此条件是m^e不够大
这时候只需要对k做暴力搜索即可,然后尝试开三次方

4.低加密指数(e=3)广播攻击(m相同,n不同,e相同的广播)
和3类似,使用的较小的e,比如e=3
并且使用了相同的加密指数给一个接受者的群发送相同的信息,那么可以进行广播攻击得到明文。
也就是存在多个多个接收者使用相同e,然后他们的解密密钥可能较大,这不影响
这种方法的e可以比3更大一些,也能解密,因为会应用到中国剩余定理,把私钥乘起来,如下

5.png

同样可以设
c=m^e+kn1n2n3
一般e=3时k=0,因此开三次方就可以破解了

5.共模攻击(m相同,n相同,e不同的广播)
和4类似,也是广播的情况,不过应用更广,而且这时候所有接收者的n都相同,只是e不相同,即:

7.png

首先要求他们的e不同,并且互质,则存在s1,s2使s1e1+s2e2=1可以做如下推理

8.png

6.d偏小(e相对较大)时的wiener's attack
在blog前文中有介绍
需要满足连分数攻击的条件是

6.png

地址https://github.com/pablocelayes/rsa-wiener-attack

7.循环攻击
很鸡肋的攻击方式,难度和分解n是同一个级别的
原理是密文是明文的置换,所以对密文反复加密后,如果得到了自身
那么回退一步就是我们需要的明文了。

8.rsa padding oracle
严格意义上来说不算rsa本身的问题,而是cbc这种加密模式产生的问题,在rsa中也比较鸡肋
在其他非公钥系统密码中(加密中间值也不可预知)更有利用效果
首先看密文长度的最大约数,来判断每个块的大小(一般是8的倍数)
其中一种padding是,明文至少占7位,padding占1位
不足的明文用padding填充,并且padding的值为0x0[自身数量]
如果我们的应用在校验padding的时候,给出一个提示(oracle)
那么我们就可以根据这个来生成指定明文的密文
首先确定IV的位置,然后先把其初始化为全0,之后第一个加密块中,最后一位可以根据加密值 xor IV得到0x01来得知
然后逐步的得到0x02...0x03 最后得到整个加密中间值。由于最后拥有了加密中间值
我们就可以根据构造IV来构造对应的密文了。
如果要构造多个块的密文,可以在构造完第一个块后,把它的内容当作IV,来计算第二个块应该等于的值
在某些应用比如根据密文下载对应文件download.php?x=[密文]中
或者伪造用户名中,有比较大的效果
文章链接
http://blog.zhaojie.me/2010/10/padding-oracle-attack-in-detail.html

9.Bleichenbacher's attack
PKCS 1.5标准中,可以伪造rsa签名
原理是其中校验的时候只校验了部分padding,可以伪造0xff等串来实现欺骗

10.copper smith attack
有待补充

还不快抢沙发

添加新评论