RSA进阶之共模攻击

Posted zaqzzz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RSA进阶之共模攻击相关的知识,希望对你有一定的参考价值。

适用场景:

同一个n,对相同的m进行了加密,e取值不一样。

e1和e2互质,gcd(e1,e2)=1

如果满足上述条件,那么就可以在不分解n的情况下求解m    

原理

复杂的东西简单说:

如果gcd(e1,e2)=1,那么就有e1*s1+e2*s2=1,s1和s2一正一负。

最后会推出来这个公式,c1^s1+c2^s2=m。假设S2是负数,则要计算C2的模反元素假设x,然后求x^(-s2)。

c1^s1+x^-s2=m

注意

这里需要用到gmpy2和libnum,windows下gmpy2很好安装,需要的是python2.7傻瓜式下载安装不断下一步

但是libnum我却没能安装上去,但是在kali下很容易安装。

其实脚本需要同时用到libnum和gmpy2,但是因为不能同时安装所以我是分开求的。

c1和c2的值直接扔到winhex,复制16进制数值出来。  
也可以是libnum直接打开.enc密文文件转化查看的。  

例题

对jarvis里的veryhard RSA进行详细的分析

https://dn.jarvisoj.com/challengefiles/veryhardRSA.rar.2a89300bd46d028a14e2b5752733fe98

rar文件解压后打开是两个enc密文和一个python脚本,打开py脚本。  


技术分享图片

m,e1,e2,n,c1,c2,共模攻击  

三.

从实验吧拿来的攻击脚本(感谢这位大哥)

技术分享图片

你所要做的就是填写n,c1,c2,e1,e2。十进制十六进制都可以  
c1,c2直接扔winhex复制十六进制就可以了。这里应该可以直接用libnum读取enc的,但是我电脑没安上,我恨。kali下安装了,也可以直接在kali下读出来。  


运行后是十进制,kali下用libnum.n2s("解出的十进制字符")

技术分享图片

以上是关于RSA进阶之共模攻击的主要内容,如果未能解决你的问题,请参考以下文章

RSA进阶之低加密指数攻击

密码学---公钥密码---RSA算法

我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情

iOS逆向之RSA加密(下)

全差分放大器——共模的意义

密码学之公钥密码体系:RSA算法