RSA 共模攻击实战:BUUCTF RSA3 双密文单模数场景解密(附 Python 代码)

发布时间:2026/7/10 10:51:15

RSA 共模攻击实战:BUUCTF RSA3 双密文单模数场景解密(附 Python 代码)
RSA共模攻击深度解析从数学原理到CTF实战1. 共模攻击场景概述在传统RSA加密中每个用户使用不同的模数n和公钥e进行加密。但当两个不同的公钥共享同一个模数n时就会产生严重的安全漏洞——共模攻击Common Modulus Attack。这种攻击方式允许攻击者在不知道私钥的情况下仅通过两个使用相同n的密文恢复出原始明文。典型攻击场景同一消息被两个不同公钥加密e₁, e₂两个公钥使用相同的模数n攻击者获取了c₁ mᵉ¹ mod n和c₂ mᵉ² mod n2. 数学原理与推导共模攻击的核心在于扩展欧几里得算法的应用。当e₁和e₂互质时存在整数s₁和s₂满足e₁*s₁ e₂*s₂ 1通过这个关系我们可以推导出m (c₁ˢ¹ * c₂ˢ²) mod n关键步骤证明根据欧几里得算法求出s₁和s₂处理负数指数的情况使用模逆元组合两个密文恢复明文注意当s₁或s₂为负数时需要先计算对应密文的模逆元再执行幂运算。3. BUUCTF RSA3题目实战3.1 题目参数分析给定参数n 22708078815885011462462049064339185898712439277226831073457888403129378547350292420267016551819052430779004755846649044001024141485283286483130702616057274698473611149508798869706347501931583117632710700787228016480127677393649929530416598686027354216422565934459015161927613607902831542857977859612596282353679327773303727004407262197231586324599181983572622404590354084541788062262164510140605868122410388090174420147752408554129789760902300898046273909007852818474030770699647647363015102118956737673941354217692696044969695308506436573142565573487583507037356944848039864382339216266670673567488871508925311154801 e1 11187289 e2 9647291 c1 22322035275663237041646893770451933509324701913484303338076210603542612758956262869640822486470121149424485571361007421293675516338822195280313794991136048140918842471219840263536338886250492682739436410013436651161720725855484866690084788721349555662019879081501113222996123305533009325964377798892703161521852805956811219563883312896330156298621674684353919547558127920925706842808914762199011054955816534977675267395009575347820387073483928425066536361482774892370969520740304287456555508933372782327506569010772537497541764311429052216291198932092617792645253901478910801592878203564861118912045464959832566051361 c2 187020100451870155565486916423949828356692621472302127313099386752264585552104259724294184492734105353879859310367118542656239050668056657518032691068807467690034789007910995902395139254497488140759040174715855728484735564905654500626647064491284158347879619472662597897859629222387011340797204142284140661930714953046123410529874556159300235368238014992697733571860874527475008406404193650115544211830375056534612867327409837027408226711480456194976671845861236572856040618756539095678223289140653377977334446403515187754876498199782623636172657979828431796308887294072384966509877204287082171152579890078673316983973.2 攻击脚本实现from gmpy2 import invert import binascii def common_modulus_attack(n, c1, c2, e1, e2): def egcd(a, b): if b 0: return a, 1, 0 else: g, x, y egcd(b, a % b) return g, y, x - (a // b) * y # 计算s1和s2 g, s1, s2 egcd(e1, e2) # 处理负数情况 if s1 0: s1 -s1 c1 invert(c1, n) if s2 0: s2 -s2 c2 invert(c2, n) # 计算明文 m (pow(c1, s1, n) * pow(c2, s2, n)) % n return m # 执行攻击 result common_modulus_attack(n, c1, c2, e1, e2) print(Decrypted message:, result) print(Flag:, binascii.unhexlify(hex(result)[2:].strip(L)))3.3 代码逐行解析扩展欧几里得算法def egcd(a, b): if b 0: return a, 1, 0 else: g, x, y egcd(b, a % b) return g, y, x - (a // b) * y递归实现返回gcd(a,b)和系数x,y满足ax by gcd(a,b)负数指数处理if s1 0: s1 -s1 c1 invert(c1, n)当s₁为负时计算c₁的模逆元将指数转为正数明文恢复m (pow(c1, s1, n) * pow(c2, s2, n)) % n利用中国剩余定理组合两个计算结果4. 防御措施与最佳实践绝对避免的做法多个用户共享相同模数n重复使用素数p和q生成不同密钥对推荐方案1. **密钥生成规范** - 每个实体独立生成密钥对 - 使用安全随机数生成素数 2. **加密增强** - 添加随机填充如OAEP - 对同一消息使用不同随机数 3. **系统设计检查** - 定期审计密钥生成流程 - 验证n的唯一性5. CTF中的扩展应用常见变种题型多组共模攻击2组密文结合中国剩余定理的题型部分密钥泄露场景解题技巧对比表攻击类型所需条件典型特征解题步骤共模攻击相同n不同e提供多组(e,c)对1. 检查gcd(e₁,e₂)12. 应用扩展欧几里得算法低加密指数小e值e3或e5直接开e次方根维纳攻击d较小e非常大连分数分解6. 密码学安全启示通过BUUCTF RSA3这道题我们深刻认识到数学基础的重要性欧几里得算法等基础数论知识是理解现代密码学的关键实现细节的致命性看似微小的实现错误如模数复用可能导致整个系统崩溃防御性编程的必要性在开发加密系统时必须严格遵循密码学标准和建议在实际项目中遇到类似场景时我的经验是永远假设攻击者会获得所有公开参数设计系统时要确保即使在这种情况下也能保持安全性。共模攻击这类漏洞之所以危险正是因为它们利用了看似无害的参数共享。

相关新闻

WechatDecrypt:掌握微信数据库解密的3个核心步骤,让您的聊天记录重获新生

WechatDecrypt:掌握微信数据库解密的3个核心步骤,让您的聊天记录重获新生

2026/7/10 10:51:15

WechatDecrypt:掌握微信数据库解密的3个核心步骤,让您的聊天记录重获新生 【免费下载链接】WechatDecrypt 微信消息解密工具 项目地址: https://gitcode.com/gh_mirrors/we/WechatDecrypt 在数字时代,微信聊天记录承载着我们的社交记忆…

AI在网络防御中的三重角色:从日志分析到自主响应

AI在网络防御中的三重角色:从日志分析到自主响应

2026/7/10 10:51:15

1. 项目概述:当AI成为网络防御的“矛”与“盾” 最近圈子里关于DeepSeek的讨论又热了起来,特别是看到不少朋友在折腾如何把它接入VSCode、IDEA,或者研究它的API怎么调用。这让我想起一个更根本的问题:我们费这么大劲把这些强大的A…

锂电池主动均衡技术:BQ25887与MK20DN128VFM5方案详解

锂电池主动均衡技术:BQ25887与MK20DN128VFM5方案详解

2026/7/10 10:41:15

1. 电池单元平衡技术背景与核心挑战 在锂电池组应用中,单体电池之间的电压差异会导致整体性能下降和寿命缩短。这种现象在串联电池组中尤为明显,由于制造工艺差异、温度分布不均或使用历史不同,各单体电池的内阻和容量会逐渐产生偏差。当这种…

第7章 Java高级技术

第7章 Java高级技术

2026/7/10 12:21:34

一、枚举枚举是Java中的一种特殊类型,一般用来做信息的标记和分类 使用标记来区分春、夏、秋、冬四个季节1、传统的枚举方法2、枚举的枚举方法3、枚举的特点1、每一个枚举项其实就是该枚举的一个对象2、通过枚举类名去访问指定的枚举项3、所有枚举类都是Enum的子类4…

Arch Linux配置BlackArch国内镜像源:安全研究者的加速指南

Arch Linux配置BlackArch国内镜像源:安全研究者的加速指南

2026/7/10 12:21:34

1. 项目概述:为什么安全研究员需要配置BlackArch镜像源 如果你是一名在Arch Linux上进行安全研究或渗透测试的从业者,或者正准备踏入这个领域,那么BlackArch这个渗透测试和安全研究发行版的大名你一定听过。它本质上是一个庞大的、面向Arch L…

Claude Code命令执行实战手册:7步完成本地/远程终端无缝接管,附完整权限校验清单

Claude Code命令执行实战手册:7步完成本地/远程终端无缝接管,附完整权限校验清单

2026/7/10 12:21:34

更多请点击: https://intelliparadigm.com 第一章:Claude Code终端命令执行能力全景概览 Claude Code(指集成于Anthropic Claude系列模型的代码增强能力,尤其在支持终端交互的IDE插件或CLI工具中)并非原生操作系统She…

R 4.5.0深度解析:底层重构、静默变更与平滑迁移指南

R 4.5.0深度解析:底层重构、静默变更与平滑迁移指南

2026/7/10 12:21:34

1. R 4.5.0不是“小修小补”,而是底层运行时的一次静默重构R 4.5.0在2025年4月正式发布,表面看只是版本号从4.4.x跳到4.5.0,连官方新闻稿都写得克制——没有“革命性”“颠覆性”这类词,只说“性能改进、内存管理优化、错误处理增…

稳压二极管选型实战:基于 5 个关键参数计算限流电阻与功率(附 Excel 工具)

稳压二极管选型实战:基于 5 个关键参数计算限流电阻与功率(附 Excel 工具)

2026/7/10 12:21:34

稳压二极管选型实战:基于5个核心参数的工程计算与Excel工具在硬件设计中,稳压二极管的应用看似简单,实则暗藏玄机。许多工程师都曾遇到过这样的场景:电路仿真一切正常,实际测试时稳压管却莫名发热甚至烧毁;…

还在为论文开题报告头秃?这5个AI论文工具让你效率翻倍!

还在为论文开题报告头秃?这5个AI论文工具让你效率翻倍!

2026/7/10 12:11:34

朋友们,写论文是不是让你抓狂?对着空白文档发呆、查重率压不下来、导师催稿催到心慌……别急!今天给大家推荐几款AI工具,只要用对了工具,真的能让你从焦虑中解脱! 不过先说清楚哈——AI不能替你写论文&…

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

2026/7/9 19:40:56

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gi…

6个月转型AI工程师:实战路径与核心技能

6个月转型AI工程师:实战路径与核心技能

2026/7/9 18:28:30

1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公…

YOLOv5模型剪枝与量化实战:边缘设备部署优化

YOLOv5模型剪枝与量化实战:边缘设备部署优化

2026/7/10 6:57:56

1. 项目背景与核心价值在计算机视觉领域,YOLOv5因其出色的实时检测性能成为工业界宠儿。但当我们尝试将其部署到边缘设备(如树莓派、Jetson Nano或手机终端)时,立刻会遇到两个致命问题:模型体积庞大(原始YO…

终极原神FPS解锁器完整指南:轻松突破60帧限制

终极原神FPS解锁器完整指南:轻松突破60帧限制

2026/7/10 0:00:42

终极原神FPS解锁器完整指南:轻松突破60帧限制 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 原神FPS解锁器是一款专为《原神》玩家设计的开源工具,通过先进的Wri…

YesPlayMusic:如何用高颜值播放器重塑你的网易云音乐体验?[特殊字符]

YesPlayMusic:如何用高颜值播放器重塑你的网易云音乐体验?[特殊字符]

2026/7/10 0:00:42

YesPlayMusic:如何用高颜值播放器重塑你的网易云音乐体验?🎵 【免费下载链接】YesPlayMusic 高颜值的第三方网易云播放器,支持 Windows / macOS / Linux :electron: 项目地址: https://gitcode.com/gh_mirrors/ye/YesPlayMusic…

从零实现红黑树:手写C++的set与map容器

从零实现红黑树:手写C++的set与map容器

2026/7/10 0:00:42

1. 项目概述:从STL容器到自研轮子在C的日常开发中,std::set和std::map是我们再熟悉不过的伙伴了。它们一个负责管理不重复的集合,一个负责维护键值对映射,底层都依赖一颗高效的红黑树来保证数据的有序性和操作的性能。但你是否曾想…