本文为看雪论坛优秀文章看雪论坛作者ID:丿feng本文简略总结了前人的一些RSA攻击思路,代码或来源于网上或本人原创。并已在GitHub上开源,github地址:https://github.com/yifeng-lee/RSA-In-CTF同时exp也附于附件上。关于RSA算法RSA加密算法是一种非对称加密算法,1977年由Ron Rivest、Adi Shamir和Leonard Adleman一起提出的,算法安全性依赖于极大整数做因数分解的难度。RSA算法加解密实现1.随意选择两个大素数p和q,且p不等于q,计算N=p*q。2.计算n的欧拉函数φ(n) = (p-1)(q-1)(常用phi(n)表示φ(n))。3.选择一个整数e,满足1< e < φ(n),且e与φ(n) 互质(e通常取65537)。4.计算模反元素d,ed ≡ 1 (mod φ(n)) 即求解ex + φ(n)y = 1方程组(利用扩展欧几里得算法可以求出d)。d = gmpy2.invert(e, (p-1)*(q-1))5.得到公钥(N,e)私钥(N,d)6.加密 c = pow(m,e,N)7.解密 m = pow(c,d,N)RSA在CTF中的攻击方法gmpy2安装:sudo apt install libmpc-devpip/pip3 install gmpy2sage安装:https://mirrors.tuna.tsinghua.edu.cn/sagemath/linux/64bit/index.html明文解秘>>>>

模互素

d = gmpy2.invert(e,(p-1) * (q-1))m = gmpy2.powmod(c,d,n)>>>>

模不互素

第一种情况给出 p,q,c,e且gcd(e, (p-1)*(q-1))非常小(可能为3)。example:p,q = 3881, 885445853681787330351086884500131209939c = 1926041757553905692219721422025224638913707e = 33第二种情况:给出n1,n2,e1,e2,c1,c2求满足以下式子:assert p = gcd(n1,n2)assert pow(flag,e1,n1)==c1assert pow(flag,e2,n2)==c2assert gcd(e1,(p1-1) (q1-1))==gcd(e2,(p2-1) (q2-1))0x01 低加密指数攻击m ^ e = kn + c 其中一般 e = 3,k比较小(k小于10亿爆破时间一般小于半小时)。0x02 低加密指数广播攻击c1 ≡ m^e mod n1c2 ≡ m^e mod n2……ce ≡ m^e mod ne如以上所示,e比较小,题目给出n[e]和c[e],且m相同,利用中国剩余定理可以求m。0x03 低解密指数攻击与低加密指数攻击相反,需要满足e非常大,接近于N。0x04 共模攻击c1 ≡ m^e1 mod nc2 ≡ m^e2 mod n如以上使用了相同的模数N对相同的明文进行加密。0x05 Boneh and Durfee attacke 非常大接近于N,跟低解密指数攻击类似,比低解密指数攻击更强,可以解决d的0.292次方的问题。0x06 Coppersmith 攻击:已知p的高位攻击知道p的高位为p的位数的约1/2时即可。0x07 Coppersmith攻击:已知明文高位攻击0x08 Coppersmith攻击:已知d的高位攻击如果知道d的低位,低位约为n的位数的1/4就可以恢复d。0x09 Coppersmith攻击:明文高位相同0x0A 已知dp或dq(dp=d mod p-q , dq=d mod q-1)0x0B Least Significant Bit Oracle Attack0x0C 其他思路给出两组数据:n1,c1,e1,n2,c2,e2且无以上特征可尝试gcd(n1,n2)得到公因子(存在的话)。给出一组数据:n1,c1,e1尝试yafu或http://www.factordb.com分解n(p,q相差过大或过小yafu可分解成功)。给出如下数据:p,q,nextprime(p),nextprime(q)n1 = p * qn2 = nextprime(p) * nextprime(q)n = n1 * n2用yafu分解n可得到:n3 = p * nextprime(q)n4 = q * nextprime(p)参考文献https://www.tr0y.wang/2017/11/06/CTFRSA/index.htmlhttp://inaz2.hatenablog.com/entry/2016/01/20/022936- End -

看雪ID:丿feng

https://bbs.pediy.com/user-809191htm 

*本文由看雪论坛 丿feng 原创,转载请注明来自看雪社区

推荐文章++++

* 移动基带安全研究系列之一 概念和系统篇

* Linux Kernel Exploit 内核漏洞学习(4)-RW Any Memory

* Android 调试任意APK - smail工程--多进程

* 使用IDA Python寻找二进制漏洞

* 看雪CTF从入门到存活(六)主动防御

进阶安全圈,不得不读的一本书﹀﹀﹀

低解密指数攻击_CTF中RSA的一些攻击思路相关推荐

  1. RSA密码——Wiener的低解密指数攻击(利用连分数理论)

    RSA密码--Wiener的低解密指数攻击 先描述一下RSA密码体制: RSA密码体制: 大素数p,qp,qp,q,模数n=pqn=pqn=pq,加密指数bbb,解密指数aaa,满足ab≡1(modϕ ...

  2. 羊城杯 Crypto RRRRRRRSA (连分数,低解密指数攻击原理)

    题面 import hashlib import sympy from Crypto.Util.number import *flag = 'GWHT{************}'flag1 = fl ...

  3. CTF密码学中RSA学习以及总结

    RSA简介 为了方便理解,先对RSA密钥体制做个简略的介绍. 选择两个大的参数,计算出模数 N = p * q 计算欧拉函数 φ = (p-1) * (q-1),然后选择一个e(1<e<φ ...

  4. CTF 中RSA的常见解析

    0x01 前言 这里就不讨论数论的基础了,进行RSA的题目解答,至少要懂得基本的数论知识的,如果不了解数论的基本知识的话,网上相关内容还是挺多的. RSA基于一个简单的数论事实,两个大素数相乘十分容易 ...

  5. 攻防世界-crypto-OldDriver(RSA低加密指数广播攻击) 方法总结

    今天遇到了一个新题型感觉有点意思记录一下; 开始 有个年轻人得到了一份密文,身为老司机的你能帮他看看么? 从题目下载附件打开~ 嗯? 这一大串是啥东西?以前没做过这种题阿?果断看WP了; RSA低加密 ...

  6. Extremely hard RSA 低加密指数攻击

    题目说明 没想到RSA4096都被你给破了,一定是我的问题,给了你太多信息,这次我只给你一个flag的加密值和公钥(Extremely hard RSA),仍然是RSA4096,我就不信你还能解出来. ...

  7. RSA进阶之低加密指数攻击

    适用场景: n很大,4000多位,e很小,e=3 一般来说,e选取65537.但是在RSA加密的时候有可能会选用e=3(不要问为什么,因为选取e =3省时省力,并且他可能觉得n在4000多位是很安全的 ...

  8. 基于低加密指数广播攻击(Hastad攻击)的更深一步学习

    低指数加密指数广播攻击 原型介绍: 低指数加密指数广播攻击(Low-Exponent RSA Broadcast Attack)是一种针对低指数RSA加密算法的攻击方法. 例题引入: 下面展示一些 内 ...

  9. BUUCTF rsa2(低密度指数攻击)

    题目: 首先,审计题目,我们可以从中发现我们想要的N和e两个条件,出现hashlib.md5,在rsa中d也称为解密指数,当d比较小的时候,e也就显得特别大了. 适用情况:e过大或过小(一般e过大时使 ...

最新文章

  1. HTML5学习之二:HTML5中的表单2
  2. matlab如何截取图像的中间部分_利用matlab提取并分割RGB图像中的某一个已知像素值的图像...
  3. java静态内部类(嵌套类)
  4. Google WideDeep Model
  5. uilabel 自行撑开高度_UILabel文本高度计算的那些事儿
  6. windows系统SSH证书设置
  7. 低压抽屉柜常见故障处理方法_低压配电设备常见故障分析,处理办法介绍
  8. kubernetes ui 搭建
  9. 企业微信_通讯录管理,获取部门列表部门成员及详情
  10. yum方式安装android_linux yum 命令 详解
  11. 一文看懂响应率模型开发内容
  12. H3C V7版本的系统默认权限
  13. 如何快速水一篇NLP论文?
  14. Python实现代码雨效果
  15. 《阿里铁军》的读后感范文3700字
  16. li指令 汇编_汇编语言和汇编软件
  17. 支付宝企业转账到个人账号(php源码,亲测)
  18. FINN(二)CNN,BNN及其硬件实现的背景知识
  19. C语言如何产生一个随机数,rand函数的使用
  20. 图灵书籍源码下载地址

热门文章

  1. HTML标记语言——(二)
  2. XJOI 3866 写什么名字好呢
  3. Java报错 -- The public type c must be defined in its own file
  4. java.lang.InstantiationException: DWR can't find a spring config. See the logs for solutions
  5. ADC 电路板布线注意事项
  6. 关于java中equals与==的区别的小实验
  7. Binary Numbers(HDU1390)
  8. Python笔记4 实例之批量修改文件名
  9. python input函数详解_对Python3中的input函数详解
  10. 用Python画一颗心、小人发射爱心