RSA攻击基本原理及代码实现总结个人文章

已知常规RSA算法原理可由以下五个式子表达

$$m^e\equivc(mod~~n)\tag{1}$$

$$c^d\equivm(mod~~n)\tag{2}$$

$$n=p\timesq\tag{3}$$

$$φ(n)=(p-1)\times(q-1)\tag{4}$$

$$e\timesd\equiv(mod~~phi)\tag{5}$$

而非常规RSA算法原理与常规RSA算法原理仅(4)(5)式不同

(4)式改为

$$n=p^{p'}\timesq^{q'}\timesr^{r'}\timess^{s'}\times···\tag{6}$$

而(5)式改为

$$φ(n)=p^{p'-1}\times(p-1)\timesq^{q'-1}\times(q-1)\timesr^{r'-1}\times(r-1)\timess^{s'-1}\times(s-1)\times···\tag{7}$$

由上述式子可得到当n可以被分解时,很容易得到p,q,r,s,p',q',r',s'的值

可以通过(4)计算得到φ(n)

进而求e在模φ(n)条件下的模逆d

即可获取明文

那么如合通过实际可行的办法分解n

e:加密钥整数集合或列表

yin:n分解得到的所有因数的集合或列表

\(e_1\):加密钥举例1

\(c_1\):用加密钥举例1加密m得到的密文

\(e_2\):加密钥举例2

\(c_2\):用加密钥举例1加密m得到的密文

假设e1,e2互质,即:

$$gcd(e_1,e_2)=1\tag{1}$$

即存在:

$$e_1*s_1+e_2*s_2~=~1\tag{2}$$

$$\becausec_1=m^{e_1}(\modn),c_2=m^{e_2}(\modn)\tag{3}$$

$$\thereforec_1^{s_1}\timesc_2^{s_2}\equiv(m^{e_1})^{s_1}\times(m^{e_2})^{s_2}(\modn)\tag{4}$$

由(2)式与(4)式得:

$$c_1^{s_1}\timesc_2^{s_2}\equivm^1(\modn)\tag{5}$$

由此可得,当求出\(s_1\)和\(s_2\)时,即可解得获得明文

如何求\(s_1\)与\(s_2\)

fromCrypto.Util.numberimportlong_to_bytes,bytes_to_longfromgmpy2importinvertfromegcdimportegcd#RSA共模攻击defRSA_mo(n,e1,c1,e2,c2):'''#RSA共模攻击'''s,s1,s2=egcd(e1,e2)ifs1<0:s1,s2=s2,s1e1,e2=e2,e1c1,c2=c2,c1ifs!=1:return'不能进行共模攻击'c2=invert(c2,n)m=(pow(c1,s1,n)*pow(c2,-s2,n))%nreturnm,long_to_bytes(m)2.代码说明1.输入说明2.输出说明返回m的数值与字符值

m:明文

$$phi=(p-1)\times(q-1)=p\timesq-p-q+1\tag{1}=n-(p+q)+1$$

$$\becausep\timesq>>p+q\tag{2}$$

$$\thereforephi\approxn\tag{3}$$

$$e\timesd\equiv1(\modphi)\newlinee\timesd-1=k\timesd\tag{4}$$

由(2)两边同时除\(d\timesphi\)可得:

$$\dfrac{e}{phi}-\dfrackd=\dfrac1{d\timesphi}\tag{5}$$

$$\because\dfrac1{d\timesphi}\approx0\tag{6}$$

$$\therefore\dfrac{e}{phi}\approx\dfrackd\tag{7}$$

$$(p+q)=n-phi+1\tag{8}$$

再通过构造方程

$$x^2-(p+q)+p\timesq=0\tag{9}$$

求解方程即可得到p,q的值

fromCrypto.Util.numberimportlong_to_bytesfromgmpy2importinvert,isqrtfromlibnumimportn2s,s2n#低解密指数攻击#条件:d

dp:d对(p-1)取模

当dp泄露时,n可分解成的素数种类大大降低,变得“可预测”

$$dp\equivd\mod(p-1)\tag{1}$$

\(dp\timese\equivd\timese\mod(p-1)\)

\(d\timese=k\times(p-1)+dp\timese\)

\(d\timese\equiv1\mod(p-1)\times(q-1)\)

\(k\times(p-1)+dp\timese\equiv1\mod(p-1)\times(q-1)\)

\(k\times(p-1)+dp\timese=k_1\times(p-1)\times(q-1)+1\)

\(dp\timese=(k_1\timesq+k_1-k)\times(p-1)+1\)

设:\(X=(k_1\timesq+k_1-k)\)

\(dp\timese=X\times(p-1)+1\tag{2}\)

\(dp<(p-1)\)

\(e>X\)

\(X\in[0,e]\)

遍历[0,e]即可找出X,进而通过上述公式求得p,从而达到n分解的目的

fromCrypto.Util.numberimportlong_to_bytesfromgmpy2importinvertfromfactordb.factordbimportFactorDB#dp泄露攻击defRSA_dp_reveal(dp,e,n,c):forXinrange(2,e):if(dp*e-1)%X==0:p=(dp*e-1)//X+1ifn%p==0:q=n//pbreakphi=(p-1)*(q-1)d=invert(e,phi)ci=long_to_bytes(pow(c,d,n))returnci

THE END
1.25行代码实现完整的RSA算法rsa算法代码网络上很多关于RSA算法的原理介绍,但是翻来翻去就是没有一个靠谱、让人信服的算法代码实现,即使有代码介绍,也都是直接调用JDK或者Python代码包中的API实现,也有可能并没有把核心放在原理的实现上,而是字符串转数字啦、或者数字转字符串啦、或者即使有代码也都写得特别烂。无形中让人感觉RSA加密算法竟然这么https://blog.csdn.net/bian_h_f612701198412/article/details/79358771
2.如何用Python实现RSA加密算法pythonRSA加密算法是一种非对称加密算法,即使用不同的密钥进行加密和解密,下面这篇文章主要给大家介绍了关于如何用Python实现RSA加密算法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下+ 目录 1.RSA算法简介 1977年,三位数学家 Rivest、Shamir 和 Adleman 设计了一种算法,可以实现非对称加密。这种算法用https://www.jb51.net/python/2876002mr.htm
3.RSA算法python代码解密mob64ca12f028ff的技术博客RSA算法是一种广泛使用的公钥密码体制,它在网络安全、数据加密等领域得到广泛应用。RSA算法的核心在于大数的乘法和分解,这使得数据的加密和解密变得安全可靠。本文将详细介绍RSA算法的基本原理,并提供Python代码示例,展示如何进行RSA解密。 一、RSA算法基础 RSA算法的核心在于三个步骤:密钥生成、数据加密和数据解密。以下https://blog.51cto.com/u_16213430/11881872
4.C#下RSA算法的实现(适用于支付宝和易宝支付)威流RSA算法代码: usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.IO;usingSystem.Security.Cryptography;namespacenet.jundie.utils {//////类名:RSAFromPkcs8///功能:RSA加密、解密、签名、验签///详细:该类对Java生成的密钥进行解密和签名以及验签专用类,不需要修改///版本:3.0///日期https://www.cnblogs.com/valu/p/6596069.html
5.(完整版)RSA算法C语言代码.docx(完整版)RSA算法C语言代码.docx 关闭预览 想预览更多内容,点击免费在线预览全文 免费在线预览全文 请输入素数和初始化随机数产生随机整数初始化随机数产生随机整数与互质公钥私钥加密函数去掉中的空格结束符密文是解密函数实现解密加空格明文系统功能选择页面欢迎进入法加密解密退出请输入要选择的功能号请输入初始明文小写https://max.book118.com/html/2020/1226/7142161126003034.shtm
6.密码学基础1:RSA算法原理全面解析本文第 1 节为 RSA 相关的数论基础,第 2 节是 RSA 算法原理描述和证明,第 3 节通过 openssl 生成 RSA 密钥来分析实际应用中的密钥格式。可以直接从第 2 节开始,遇到相关定理可以转到第 1 节处查阅即可。本文所有代码都在shishujuan:rsa-algrithm,如有错误,也恳请指正。https://www.jianshu.com/p/6aa7b59be872
7.网络安全之RSA加密算法介绍腾讯云开发者社区RSA允许你选择公钥的大小。512位的密钥被视为不安全的;768位的密钥不用担心受到除了国家安全管理(NSA)外的其他事物的危害;1024位的密钥几乎是安全的。 百度百科 所以在实际应用中使用1024位及以上的密匙就可以保证信息的安全。 代码演示 注:本文只使用一个简单的示例来阐述RSA算法加密解密的过程,实际应用中读者可以https://cloud.tencent.com/developer/article/2010524
8.RSA加密算法RSA加解密过程及公式论证(基础数论知识)上次为大家介绍了【RSA算法产生的过程与原理详解】,相信阅读过的同学们对RSA加密算法也算是有了一个大概的了解。如果你对这些解密算法概念及特点还不是很清晰的话,推荐大家可以看看HTTPS的加密通信原理,因为HTTPS加密通信使用了目前主要的三种加密算法,大家可以从中体会到各种加密算法的优缺点。今天要为大家介绍的是RSAhttps://www.wosign.com/news/news_2018121801.htm
9.青少年网络信息安全知识竞赛题库(中职(学)版)网络安全14. DES 算法密钥是 64 位,因为其中一些位是用作校验的,密钥的实际有效位是 位。 ( B ) A. 60 B. 56 C. 54 D. 48 15. 下列算法是基于大整数因子分解的困难性的一项是 ( B ) A. ECC B. RSA C. DES D. Diffie-Hellman 16. 以下选项属于对称加密算法 ( D ) https://www.wxjsxy.com/xxglzx/wlaq/content_11087
10.密码算法cipherfail 返回错误代码 说明 202输入参数错误。 示例: //加密cipher.rsa({action:'encrypt',//待加密的文本内容text:'hello',//base64编码后的加密公钥key:'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDc7GR2MrfAoefES+wrs1ns2afT\n'+'eJXSfIkEHfPXG9fVFjaws1ho4KcZfsxlA0+SXvc83f2SVGCuzULmM2lxxRCtcUN/\nhttps://doc.quickapp.cn/features/system/cipher.html
11.RSACryptoServiceProvider类(System.Security.Cryptography)RSACryptoServiceProvider 实现 ICspAsymmetricAlgorithm 示例 下面的代码示例使用RSACryptoServiceProvider类将字符串加密为字节数组,然后将字节解密回字符串。 C#复制 usingSystem;usingSystem.Security.Cryptography;usingSystem.Text;classRSACSPSample{staticvoidMain(){try{//Create a UnicodeEncoder to convert between bytehttps://msdn.microsoft.com/zh-cn/library/system.security.cryptography.rsacryptoserviceprovider.aspx