CTF RSA 共模攻击原理剖析:从欧几里得算法到 2 组密钥的明文恢复
📅 2026/7/10 6:17:30
👁️ 次浏览
CTF RSA 共模攻击原理深度解析从贝祖等式到明文恢复实战1. 密码学挑战中的共模攻击场景在CTF竞赛的密码学板块中RSA共模攻击Common Modulus Attack是一类经典题型。设想这样一个场景同一段明文m使用相同的模数n但不同的加密指数e1和e2进行加密得到密文c1和c2。此时若e1与e2互质攻击者无需分解n即可恢复明文——这正是共模攻击的核心要义。攻击成立的关键条件相同模数n用于多组加密两组加密指数e1、e2满足gcd(e1,e2)1攻击者能够获取两组密文c1、c2# 典型CTF题目参数结构示例 n 0xabcdef... # 公共模数 e1, e2 65537, 10001 # 互质的加密指数 c1 pow(m, e1, n) # 第一组密文 c2 pow(m, e2, n) # 第二组密文2. 数论基础扩展欧几里得算法共模攻击的数学基础是贝祖定理Bézouts identity对于任意整数a、b存在整数x、y使得a*x b*y gcd(a,b)当gcd(e1,e2)1时算法能求出满足e1*s1 e2*s2 1的整数s1和s2。这正是破解的关键def extended_gcd(a, b): if b 0: return a, 1, 0 else: g, x, y extended_gcd(b, a % b) return g, y, x - (a // b) * y # 计算系数示例 g, s1, s2 extended_gcd(17, 65537) assert g 1 and 17*s1 65537*s2 1算法可视化流程步骤abqa//bra%bxy1e117e265537017102655371738552013172811-385542120-830841510--17-655373. 攻击原理的数学推导利用扩展欧几里得算法得到的系数s1、s2我们可以重构原始明文由加密公式c1 ≡ m^e1 mod nc2 ≡ m^e2 mod n计算s1和s2使得e1*s1 e2*s2 1明文恢复公式m ≡ c1^s1 * c2^s2 mod n为什么这个公式有效因为c1^s1 * c2^s2 ≡ (m^e1)^s1 * (m^e2)^s2 mod n ≡ m^(e1*s1 e2*s2) mod n ≡ m^1 mod n ≡ m注意当s1或s2为负数时需要先计算模逆元。例如若s10则计算c1_inv pow(c1, -1, n)然后使用pow(c1_inv, -s1, n)4. 实战中的边界处理实际CTF解题时需要处理以下特殊情况情况1系数为负数if s1 0: c1 pow(c1, -1, n) # 模逆元计算 s1 -s1 elif s2 0: c2 pow(c2, -1, n) s2 -s2情况2大数运算优化# 分段计算避免内存溢出 part1 pow(c1, s1, n) if s1!0 else 1 part2 pow(c2, s2, n) if s2!0 else 1 m (part1 * part2) % n完整攻击脚本示例from Crypto.Util.number import long_to_bytes def common_modulus_attack(n, e1, e2, c1, c2): g, s1, s2 extended_gcd(e1, e2) if s1 0: c1 pow(c1, -1, n) s1 -s1 if s2 0: c2 pow(c2, -1, n) s2 -s2 m (pow(c1, s1, n) * pow(c2, s2, n)) % n return long_to_bytes(m) # BUUCTF-RSA3示例参数 n 0xabcdef... # 实际题目中的模数 e1, e2 11187289, 9647291 c1 0x223220... c2 0x187020... print(common_modulus_attack(n, e1, e2, c1, c2))5. 与传统RSA解密的对比特性共模攻击传统RSA解密所需参数n, e1, e2, c1, c2n, d, c数学基础扩展欧几里得算法欧拉定理是否需要分解n否是需知道φ(n)时间复杂度O(log min(e1,e2))O(√n) 因式分解难度适用条件e1与e2互质任意有效的d6. 防御方案与最佳实践为防止共模攻击系统设计时应遵循密钥生成规范避免同一模数n被多个用户共用为不同用户生成独立的(p,q)对加密策略优化# 安全的使用方式示例 from Crypto.PublicKey import RSA def generate_key_pair(): key RSA.generate(2048) return { n: key.n, e: key.e, d: key.d, p: key.p, q: key.q } # 每个用户拥有独立的密钥对 user1_key generate_key_pair() user2_key generate_key_pair()Padding的必要性始终使用OAEP等填充方案避免裸RSA加密Textbook RSA7. 扩展应用与变种攻击共模攻击思想可延伸至以下场景多组密文情况 当有k组(ei,ci)且gcd(e1,e2,...,ek)1时可通过找到ai使得 Σai*ei 1 则 m ≡ Π ci^ai mod n广播攻击 当相同明文用不同ni加密e较小时可使用中国剩余定理恢复明文。from sympy.ntheory.modular import crt def broadcast_attack(enc_data): # enc_data [(e1, n1, c1), (e2, n2, c2), ...] e enc_data[0][0] # 假设所有e相同 residues [c for _,_,c in enc_data] moduli [n for _,n,_ in enc_data] m_e crt(moduli, residues)[0] # 中国剩余定理 m, exact gmpy2.iroot(m_e, e) return long_to_bytes(m)在真实CTF比赛中遇到这类题目时建议按照以下步骤操作检查是否满足gcd(e1,e2)1实施扩展欧几里得算法求系数处理可能的负指数情况组合计算结果恢复明文将长整数转换为字节串提交flag理解共模攻击不仅能帮助解决CTF挑战更能深化对RSA系统安全边界的认知——密码学方案的强度往往取决于其最薄弱的实现环节。
在计算机视觉领域,密集空间感知任务如语义分割、深度估计、表面法线预测等,正从依赖大量标注数据的监督学习,转向利用大规模无标注数据进行预训练的新范式。这种转变的核心驱动力在于,标注密集感知任务所需的像素级标签成本极高&a…
📅 2026/7/10 6:17:30
企业选择多平台评论舆情工具时,不能只看工具能不能看到评论,更要看它能不能把评论整理成判断。评论本身只是用户表达,真正有价值的是情绪变化、问题集中点、品牌口碑、竞品对照和传播复盘结论。
多平台评论舆情工具,指的是能够围绕…
📅 2026/7/10 6:16:30
在工业装备精密化、工况复杂化的大趋势下,密封圈早已从标准件演变为“定制化”的核心基础件。无论是新能源液冷系统的微泄漏控制,还是化工设备抵抗强酸强碱的长期腐蚀,“一劳永逸”的标准件模式已逐渐失效,密封圈定制服务正成为行…
📅 2026/7/10 6:16:30
1. 项目概述:从Jupyter笔记本到线上服务,这中间到底隔着多少道墙?“How to Move Your Data Science Project to Production”——这个标题乍看像一句温和的指南提问,实则是一记精准戳中数据科学从业者集体痛点的重锤。我带过二十多…
📅 2026/7/10 7:41:01
门店核销系统哪个好?优惠券、团购券和会员权益怎么管理
门店核销系统哪个好,要看它能不能把“发出去的权益”和“到店后的消费”对上。优惠券、团购券、会员权益如果没有核销记录,门店很难知道活动是否有效,也容易出现重复使用、…
📅 2026/7/10 7:41:01
1. 项目概述:用C语言在控制台“造”一场流星雨 如果你学C语言还停留在打印“Hello World”和做几道数学题,那这个项目绝对能让你眼前一亮。我们这次要做的,是用最基础的C语言,在Dev-C这个经典的IDE里,实现一个在黑色控…
📅 2026/7/10 7:41:01
🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 “AI 将取代 90% 的 App”——这个观点最近在技术圈和产品圈流传甚广。乍一听,这像是一个博人眼球的标题党,但…
📅 2026/7/10 7:41:01
前言
刚开始学习AI的时候。
我和很多Java开发一样。
每天都在看:
AgentRAGWorkflowMCP
越看越焦虑。
感觉每个概念都很复杂。
直到后来我才发现。
自己走错了方向。
对于传统开发来说。
学习AI最好的方式不是先研究各种框架。
而是先做出一个真正能运行的…
📅 2026/7/10 7:41:01
所谓UGC简单说,就是给陌生人视频里面含有自家产品的视频,免费刷流量,数据,让视频爆火,从而实现宣传自家产品的目的。
------------------------------------------------------------
几乎所有头部大企业,…
📅 2026/7/10 7:40:00
一、为什么接口自动化测试,适合用AI赋能?
大家可自行先思考一个问题:
AI赋能测试全流程,为什么优先推荐从接口自动化切入?
有三个典型原因:
接口输入结构化,AI最擅长"吃"
接口有OpenA…
📅 2026/7/10 0:00:53
终极原神FPS解锁器完整指南:轻松突破60帧限制 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock
原神FPS解锁器是一款专为《原神》玩家设计的开源工具,通过先进的Wri…
📅 2026/7/10 0:00:53
YesPlayMusic:如何用高颜值播放器重塑你的网易云音乐体验?🎵 【免费下载链接】YesPlayMusic 高颜值的第三方网易云播放器,支持 Windows / macOS / Linux :electron: 项目地址: https://gitcode.com/gh_mirrors/ye/YesPlayMusic…
📅 2026/7/10 0:00:53
1. 项目背景与核心需求 在嵌入式系统开发中,快速精确的数据检索是一个常见但极具挑战性的需求。特别是在工业控制、医疗设备和物联网终端等场景下,系统往往需要在毫秒级时间内完成关键参数的读取和写入操作。传统基于Flash存储的方案存在擦写次数有限、操…
📅 2026/7/9 15:10:35
1. 工业电流环信号传输的基础认知在工业自动化领域,4-20mA电流环传输技术已经持续服役超过半个世纪。这种看似简单的信号传输方式之所以能经久不衰,核心在于其独特的抗干扰能力——电流信号在长距离传输时几乎不受线路电阻和电压波动的影响。我曾在化工厂…
📅 2026/7/9 14:14:01
最近在项目里尝试用 YOLO 做目标检测,从环境搭建到模型训练,再到推理部署,整个过程踩了不少坑。网上的资料虽然多,但要么版本老旧,要么步骤零散不成体系,对于刚入门的新手来说,很容易卡在某个环…
📅 2026/7/9 15:10:36
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/9 15:10:36
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/9 15:10:36
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/9 15:10:36