头部背景图片
ssyeats'blog |
ssyeats'blog |

RSA学习总结

最近看了几篇RSA加密算法的相关文章,CTF中常见的几种和RSA有关的题目大多都有套路,下面趁写文章学习总结一波:

1.e较大:

wiener攻击

解密代码链接https://codeload.github.com/pablocelayes/rsa-wiener-attack/zip/master

理论基础链接https://blog.csdn.net/oumeixi_wjp/article/details/44747329

这种攻击方法适合在知道e,n,a,m的情况下使用,e一般很大,这时通过a求出p,q,进而求d

2.e较小:

直接开方

相关链接https://blog.csdn.net/jeffreynnn/article/details/77169723

有时数太大需要提高精度,安恒7月赛的writeup里有相关内容

3.低加密指数广播攻击:

相同低指数的e和多个相同的消息m

相关链接https://blog.csdn.net/xuqi7/article/details/75578414

这种情况适合已知多组对应的c,n,同时已知m和e相同

4.coppersmith定理攻击:

只有部分高位的p或q

相关链接https://www.52pojie.cn/thread-653446-1-8.html

这种攻击方法适合用OpenSSL只能分解出p的一部分的情况,具体如链接

5.共模攻击:

相同n,相同m

https://www.cnblogs.com/gwind/p/8013154.html

这种攻击方法适合已知n,以及互相对应的多对c,e,利用e1s1+e2s2 = 1,(c1^s1*c2^s2)%n = m^%n 这两个公式求出m,具体方法见链接。

6.已知dp的攻击:

相关链接https://mp.weixin.qq.com/s/Mkkl_lXLlKJ70VzNVRqOTA

给定e,n,dp,c,dp≡d mod (p-1)经过复杂的推导可得x (p-1)+1=dpe,x∈(0,e),通过遍历x,可以求出p-1,进而求d。

7.已知dp,dq,p,q的攻击:

相关链接https://mp.weixin.qq.com/s/eNerFn4Aw3l7xeVnnDxKpg

给定dp,dq,p,q,c,通过推导可得m≡(((m2-m1)*p-1 mod q)p+m1)mod n ,那么m1,m2怎么求呢?还是经过推导可得m1=cdp mod p,m2=cdq mod q