当前位置: 首页 > news >正文

RSA 共模攻击

  1. 模运算:
    两个数相除的余数。

共模攻击常见题目说明:
image

共模攻击就是:同一个 RSA 模数 n 下,不同公钥指数加密同一明文时,可以通过求贝祖系数直接算出明文。


我们来深入讲解 RSA 共模攻击(Common Modulus Attack)。从原理、条件、数学推导到实际利用,逐步推进。

1️⃣ 背景概念

image

p, q:两个随机生成的大素数,通常位数很大(比如 1024 位或 2048 位),保证安全性。


2️⃣ 攻击条件

image

3️⃣ 攻击原理

image


4️⃣ 攻击步骤总结

image


5️⃣ 注意点

image


总结:

  • 共模攻击利用的是 相同模数 + 不同公钥指数 + 同一明文
  • 攻击过程简单,但前提条件苛刻,多用于教学或错误配置环境。
  • 现实中,标准 RSA 系统会避免这种情况,因此风险主要来自 不安全的密钥复用

常用脚本

import gmpy2
from libnum import n2s,s2n
def egcd(a, b):
if (a == 0):
return (b, 0, 1)
else:
g, y, x = egcd(b % a, a)
return (g, x - (b // a) * y, y)
e1 = 806324329
e2 = 981665371
n = 839123934774248293554478900304805652005840721338630070412976096583047842775036
231818774021937639649434688167897414096334116238084902194754637764024750792816
721392354301739479608067847343792597904131386883826936202738091643779024125141
255264223247609242732797223111375906539968766539699070553220024835237726906103
489324159983224252110158455246369757060858217509822937163152185972444899932745
256697748371372158650749600653559864702036394611754651413137001635037310384486
835415211127040685857231115447354804277699698486014015179198727374388217592948
103504783273235502069953842424278640309430812418432009515965525235385145845104
436993038590088545931577484359861647891101843425163557830467877799969686630827
090586068831286572090214049241078519089880483666226861834918996928339953135949
773709823413539900554860599681940844430108740145857463465317542463460369739470
382431178811713605099730666854586750420573809975950891432736357055207659867908
960389714343184134892741009452909757459817636609433427812924456782545899375540
553326445169985403837463499577711582154287873330657825693756960147166773280203
881994461147955853897180714973259859345569061880741001595805100970589056125774
856383495601030032566633812017502429733745385901436096392471289
c1 = 163820585866464748037603720038892832306554988255206332863466690031251112393421
587550794518466136449805972150046258007843678810670858951387865544768705860991
912961811815403716953592063388227590617471347829805148489681889353092402164643
007648065816490395610440358210631794473074518280532005297323838015000696012544
093096729757248560313800119985077628515064121290046849842744649645290768993658
687322260767120966685347950282971463554789285475522426817366147609763855420569
516751283073981560233583052224238576709207099742418240326781531079937393665507
293492304460161648982800074101163393514977619796309524278704876480025742024160
221890561273557038260189577859945055862584556222614337893856036135407528568963
925417637444291244325443939058848883360791328763182036736991538226734334763710
031379376903812920870564906505631446736446351432678455275793428547686664667539
262939321057216659646680245853118886811477642137593470574356360886586517623917
262716025748350280034971229225621439570870095238910932174538777011907435005615
951965481796660744335386804670981037480723346003591779345801230978946027215192
726050182071464556997361600570176261668330138026540849862934790571484498436157
306820319598552136374283506981655462848489790309701474742231765
c2 = 273242589426480927826167181440879042261352093903608434884600905569452427185873
771727772405404505268635334400366319247889103997045566310053661596019565754930
974302295439331258267831862178643151110272578792132366938072461672903904131261
872916290092535496394107067073669859724326918200655564533782970003007228779265
786965898584930920671749110403164178828194786698903692367972071819235589738473
333448909143263601696287295696594333362374640947177450581133679785322780121777
626014738094838546764265270540875237752587231957198655334919482389040609616499
842407581630400649266699612327355801522626608567074516199161612041393966746535
463537504182396463306145605244107129067775658018376118992392243654356151728789
607874911337696728619623272935933692059586381093273314357325686727609120412886
454183336002684696756892485413467576457476017669378668920561188578039728356555
469910921968008598794341024437414411415025750797861498237313315133504763627579
092827456484850672726497492397166505646338025210493939717283132813965892266364
677296542793933736272452657509115949431627829562871153172728793514100920642454
624860024655189013182334029353933043493447139401983635409889928162529397033633
451464690205097492717456395000561496206701612814279836034509030
s = egcd(e1, e2)
s1 = s[1]
s2 = s[2]
if s1<0:
s1 = - s1
c1 = gmpy2.invert(c1, n)
elif s2<0:
s2 = - s2
c2 = gmpy2.invert(c2, n)
m = pow(c1,s1,n)*pow(c2,s2,n) % n
print n2s(m)
http://www.wxhsa.cn/company.asp?id=6141

相关文章:

  • 计组博文
  • week1task
  • 《原子习惯》-读书笔记3
  • Linux系统编程笔记总结
  • Java SE 25新增特性
  • linux系统编程09-进程间通信
  • 谈谈语法糖
  • 2025年,秋天与冬天(长期)
  • ssl rsa解密
  • linux系统编程05-标准IO1
  • linux系统编程07-文件IO\系统调用IO
  • linux系统编程06-标准IO2
  • linux系统编程08-高级IO
  • 第03周 预习、实验与作业:面向对象入门2与类的识别
  • 第8篇、Kafka 监控与调优实战指南
  • linux系统编程02-进程基本知识
  • linux系统编程03-并发:信号
  • linux系统编程04-并发:线程
  • 新手高效制作PPT的3个步骤:告别逻辑混乱,从构思到完成!
  • Avalonia:用 ReactiveUI 的方法绑定数据、事件和命令
  • 【pyQT 专栏】程序设置 windows 任务栏缩略图(.ico)教程
  • Say 题选记(9.14 - 9.20)
  • vm的配置
  • 力扣72题 编辑距离
  • 数学基本结构框架
  • 2025.9.16总结
  • 在 Tailscale 中禁用 DNS
  • 软件工程实践一:Git 使用教程(含分支与 Gitee)
  • 【青少年低空飞行玩意】设计图以及项目概况
  • C++ 多态