rsa 模数 指数转换 c语言_CTF中RSA的一些攻击思路
本文为看雪论坛优秀文章看雪论坛作者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从入门到存活(六)主动防御
进阶安全圈,不得不读的一本书﹀﹀﹀戳
rsa 模数 指数转换 c语言_CTF中RSA的一些攻击思路相关推荐
- rsa 模数 指数转换 c语言_模数转换,你必须知道的8个经典ADC转换电路方案
模数转换器即A/D转换器,或简称ADC,通常是指一个将模拟信号转变为数字信号的电子元件.通常的模数转换器是将一个输入电压信号转换为一个输出的数字信号.由于数字信号本身不具有实际意义,仅仅表示一个相对大 ...
- 低解密指数攻击_CTF中RSA的一些攻击思路
本文为看雪论坛优秀文章看雪论坛作者ID:丿feng本文简略总结了前人的一些RSA攻击思路,代码或来源于网上或本人原创.并已在GitHub上开源,github地址:https://github.com/ ...
- php rsa 模数 指数,密码:使用模数和指数生成RSA私钥
我是密码世界的新手.我需要从下面提供的数据中生成相应的RSA私钥. Modulus B87BDAB530F8FDED78223D841C5D4E66A6CA86E1D690E829755F244B6F ...
- 软件开发基于JavaScript实现快速转换文本语言(繁体中文和简体中文)_javascript技巧
软件开发基于JavaScript实现快速转换文本语言(繁体中文和简体中文)_javascript技巧 一般商业网站都有一个语言的需求,就是为了照顾使用正体中文的国人,会特地提供一个切换到正体中文的选项 ...
- C语言程序设计——函数 梅森尼数形如2^i-1的素数,称为梅森尼数。编程计算并输出指数i在[2,n]中的所有梅森尼数,并统计这些梅森尼数的个数,其中n的值由键盘输入,并且n的值不能大于50。
梅森尼数 形如2^i-1的素数,称为梅森尼数.编程计算并输出指数i在[2,n]中的所有梅森尼数,并统计这些梅森尼数的个数,其中n的值由键盘输入,并且n的值不能大于50.其中,2^i表示2的i次方,请不 ...
- php 获取rsa 模数,使用Python从公钥获取RSA指数和模数
我知道如何使用openssl从公共密钥获取RSA模数和指数,但是现在我尝试将其与Python结合使用.我已经看到了,并按照步骤进行. 假设这是公钥: -----BEGIN PUBLIC KEY---- ...
- rsa加解密算法报告c语言,RSA加密解密算法c语言程序Word版
<RSA加密解密算法c语言程序Word版>由会员分享,可在线阅读,更多相关<RSA加密解密算法c语言程序Word版(5页珍藏版)>请在人人文库网上搜索. 1.传播优秀Word版 ...
- [crypto]-52-python3中rsa(签名验签加密解密)aes(ecb cbc ctr)hmac的使用,以及unittest测试用
环境: 在ubuntu14.04下,记得安装:sudo pip3 install pycrypto 代码示例1: =========================== import base64 f ...
- php公钥模数,php – 如何从公共指数和RSA模数生成DER / PEM证书?
众所周知,公钥由公共指数和模数组成. 我的问题是: 如何从公共指数和RSA模数生成DER / PEM证书? 非常感谢你提前. 解决方法: 使用公共指数和模数,你可能希望做的最好的事情是得到这样的东西: ...
- CTF中RSA常见解题思路
1. 直接分解模数N 直接分解模数N是最直接的攻击方法,也是最困难的方法.具体的解析同上RSA安全性分析. 如果n小于256bit,可以使用本地工具进行暴力分解,列入windows平台的RSATool ...
最新文章
- ansible playbook lookups组件
- Pinterest从OpenTSDB切换到他们自己的时间序列数据库
- javap反编译学习
- DEM挖填方分析--基于水平参考面计算
- 内存管理1retain和release
- html5实现3d翻页效果,利用css3 3d transform制作超逼真翻书效果
- 第一个servlet小程序
- 计算机应用基础教学改革参考文献,关于计算机应用基础论文范文资料 与计算机应用基础课程教学改革分析有关论文参考文献...
- framebuffer[转之]
- 共用数据库和上传的文件的laravel-admin 和 laravel 项目中文件保存路径的配置
- linux系统日志_Linux系统学习系列——Linux系统日志管 理(下 )
- 0基础学python做什么工作好-写给0基础小白:Python能干什么?就业前景好不好?怎么开始学?...
- 开发自己的博客转发插件(跨域)
- git 配置beyond compare
- 计算机运算法则图鉴,AP微积分BC TI-Nspire计算器使用指南 正确使用计算器5分到手轻而易举...
- Mysql安装+卸载教程
- 把一个人的特点写具体作文_把一个人的特点写具体作文800字
- 制作openstack离线 yum 源
- 低频RFID 底层编码
- 灰度共生矩阵及matlab实现
热门文章
- 微型计算机主装箱中装有哪些,微型计算机及接口技术2016年10月真题试题(04732)...
- ERNIE: Enhanced Representation through Knowledge Integration, Yu Sun 2020【representation+Bert+ner】
- 利用Euclid算法求解两个数的最大公约数及逆 matlab
- 宝塔面板本地调试网站提示域名解析错误的问题
- 论文-Estimation–Action–Reflection: Towards Deep Interaction Between Conversational and Recommender Sys
- Training data-efficient image transformers distillation through attention
- 广度优先搜索(C语言实例)
- 当下既是上天赐予的礼物 ——《心灵奇旅》影评
- 3dmax怎么渲染全景图,如何使用vray渲染制作360度全景图?
- 【信息检索导论】第一章 布尔检索