RSA工作原理

RSA的工作原理,RSA涉及的几个参数
明文=>m
密文=>c
模n,负责计算出两个质数p和q  p和q计算欧拉函数值Φ(n)
欧拉函数Φ(n)=> Φ(n)=(p-1)*(q-1)
公钥参数e和私钥参数d,可由欧拉函数计算出  ed ≡ 1(mod Φ(n))
加密=> m^e≡c (mod n)
解密=> c^d ≡m (mod n)

模攻击
共模是指:就是明文m,相同。用两个公钥e1,e2加密得到两个私钥d1,d2 和两个密文c1,c2
共模攻击,即当m不变的情况下,知道n,e1,e2,c1,c2, 可以在不知道d1,d2的情况下,解出m
利用条件为=> gcd(e1,e2)=1

根据扩展欧几里得 算法得
可以得到该式子的一组解(s1,s2) 假设s1为正数,s2为负数
有整数s1,s2(一正一负)
存在e1s1+e2s2==1

加密过程
C=m^e mod n
C=pow(m,e,n)
解密过程
M=c^d mod n
M=pow(c,d,n)

m=(pow(c1,s1,n)*pow(c2,s2,n))%n
=>(c1s1%n*c2s2%n)%n=m

∵gcd(e1,e2)1,∴由扩展欧几里得算法,存在e1s1+e2s21
∴mm1==m(e1s1+e2s2)((me1)s1)*((me2)s2)==(c1s1)*(c2s2)

数学原理

这里我用三种数学原理来进行说明
第一种:

证明:m=(c1^s1)*(c2^s2)
带入 c1 = m^e1%n   c2 = m^e2%n  两个公式计算
(c1^s1)*(c2^s2)%n=((m^e1%n)^s1*(m^e2%n)^s2)%n
=>(c1^s1)*(c2^s2)%n=((m^e1%n)^s1%n*(m^e2%n)^s2%n)%n    #(a*b)%n=(a%n*b%n)%n
=>(c1^s1)*(c2^s2)%n=((m^e1)^s1%n*(m^e2)^s2%n)%n    #a^b%n=((a%n)^b)%n     a=(m^e1)^s1   b=(m^e2)^s2
=>(c1^s1)*(c2^s2)%n=((m^e1)^s1*(m^e2)^s2)%n        #((a%p)*(b%p))%p=(a^b)%p
=>(c1^s1)*(c2^s2)%n=((m^(e1*^s1)*(m^(e2*^s2))%n    #幂的乘方,底数不变,指数想乘
=>(c1^s1)*(c2^s2)%n=((m^(e1*^s1+e2*^s2))%n
因为e1*s1+e2*s2=1  得:
(c1^s1)*(c2^s2)%n=(m^(1)%n
(c1^s1)*(c2^s2)%n=m%n
(c1^s1)*(c2^s2)=m    #根据等式性质

第二种:

因为gcd(e1,e2)=1
根据扩展欧几里得得到 e1*s1+e2*s2=1    s1,s2中一正一负,设s1为正,s2为负
c1 = m^e1%n   c2 = m^e2%n
(c1^s1)*(c2^s2)%n=((m^e1%n)^s1*(m^e2%n)^s2)%n
=>(c1^s1)*(c2^s2)%n=((m^e1)^s1*(m^e2)^s2)%n       #(a*b)%n=(a%n*b%n)%n
=>(c1^s1)*(c2^s2)%n=(m^(e1^s1+e2^s2))%n              #同底数幂
=>(c1^s1)*(c2^s2)%n=(m^(1))%n    e1*s1+e2*s2=1
=>(c1^s1)*(c2^s2)%n=m%n
=>(c1^s1)*(c2^s2)=m
可得m=(c1^s1)*(c2^s2)%n

第三种:

gcd(e1,e2)=1
e1*s1+e2*s2=1
m
=>m^1
=>m(e1*s1+e2*s2)
=>((m^e1)^s1*(m^e2)^s2)
=>(c1^s1)*(c2^s2)根据模运算性质
(a*b)%n=(a%n*b%n)%n
a^b%n=((a%n)^b)%n
((a%p)*(b%p))%p=(a^b)%p

出题脚本:

import libnum
import gmpy2
#生成素数
p=libnum.generate_prime(1024)
q=libnum.generate_prime(1024)
e1=2333
e2=23333
m="flag{6ed4c74e022cb18c8039e96de93aa9ce}"
m=libnum.s2n(m)
n=p*q
c1=pow(m,e1,n)
c2=pow(m,e2,n)
print("n1=",n)
print("e1=",e1)
print("c1=",c1)
print("n2=",n)
print("e2=",e2)

解题脚本:

n1= 13275539468515927122668657418826962202430467408860484765898568663156503527396473586233806355289560759234484646820604878130245116609025833260834734249490247181739187091798406386899992249647283296098046635078998806241008947511489965043592342640904960118547695431908152475613663532406184101144164645776485026634520190801390504479902674438381031902988558383334546358843335032069110257941561153526273905221509504939058454345020402752203190691148266740216247933791900283468212865430165408235093857626104437061213452413564723765040442767798563232901124229044449065445046888956215682366228655047929453110805914555163635510419
e1= 2333
c1= 12839285960223495540837529365339640783021439899108155136321855396508597591195084834231690640732914408618285996134049202996422114737474822115945692760871458165554118169402663520900701296114704740122786806542520699905862239914946533647899715822828542560800418499031431014437887839597676472165537391472198221714363610491291038442463223575122912669355380941374075599322428985304893846875110708290551186273543362765115647684956793570841630280930991407077401574158296542671529832884549202417721050055128956160795181219321381962644469613816746657814407025821523489911167830470453075666809891234756979759785607614579837734082
n2= 13275539468515927122668657418826962202430467408860484765898568663156503527396473586233806355289560759234484646820604878130245116609025833260834734249490247181739187091798406386899992249647283296098046635078998806241008947511489965043592342640904960118547695431908152475613663532406184101144164645776485026634520190801390504479902674438381031902988558383334546358843335032069110257941561153526273905221509504939058454345020402752203190691148266740216247933791900283468212865430165408235093857626104437061213452413564723765040442767798563232901124229044449065445046888956215682366228655047929453110805914555163635510419
e2= 23333
c2= 3354756678232940495821979239801458007420410531822100812188898131516917749604851255269716527378343349516173106916414335163414268865824921119788877047553519631159949070051858008087712664995111487663781337726742683963116894637201549928831686056701870685405950856250977197910095810076403861881931015074416123490624856112462001350590171001296114611866177706693234039596982711256182797885834942186618425452535848339326240931859796433390218112045498069663580377366715346261942151557866185723732917427377138450852758541378023643134160677508933773941402646042004431292764888647202090679358894168736017515947373729257142729574
import gmpy2
import libnum
s,s1,s2=gmpy2.gcdext(e1,e2)
m=(pow(c1,s1,n1)*pow(c2,s2,n2))%n1   => ∵m=(c1^s1)*(c2^s2)
print(libnum.n2s(int(m)).decode())

RSA共模攻击(包括原理)相关推荐

  1. 关于RSA共模攻击e1,e2不互素的解法

    最近做密码学rsa的题目,搜集了很多情况下的rsa解题脚本,记录一下 import gmpy2 import rsa from binascii import a2b_hex import libnu ...

  2. 【ctf学习】RSA共模攻击

    已知n,c1,e1,c2,e2 比如: from gmpy2 import * from Crypto.Util.number import *m=bytes_to_long(flag)e1=7001 ...

  3. CTF-RSA共模攻击 和 非共模攻击解密脚本

    给定两个不同的n的时候一定要看看n1,n2有没有最大公约数(素数),如果有,那么该最大公约数就是两者共同的p给定两个相同的n的时候,那就要考虑共模攻击了 共模攻击 有两组RSA密码 提取公钥信息 fr ...

  4. 共模电感的原理以及使用情况

        由于EMC所面临解决问题大多是共模干扰,因此共模电感也是我们常用的有力元件之一!这里就给大家简单介绍一下共模电感的原理以及使用情况.共模电感是一个以铁氧体为磁芯的共模干扰抑制器件,它由两个尺寸 ...

  5. 共模电感模型matlab,混成式共模电感的原理及功能讲解?

    混成式共模电感的原理及功能讲解?岑科电感小编今天就给各位厂家们解开这个谜团! EMI抑制方案有许多组合,包括滤波器组合.变压器绕线安排,甚至PCB布局.本文提供一种结合共模电感与差模电感的磁混成,称之 ...

  6. CTF-RSA共模攻击

    1.共模攻击原理 一号选手和二号选手对同一段明文进行加密. 如果此时有一个攻击者,同时监听了一号选手和二号选手接收到的密文,.因为模数不变,以及所有的公钥都是公开的,那么利用共模攻击,就可以在不知道, ...

  7. 共模电感的原理、作用和使用示例

    共模电感在日常使用中可以起到防EMC的作用,非常广泛,在工业生产场景的控制器上会经常使用,可以使用在电源方面,也可以使用的通信电路的抗EMC方面.下面整理了一下相关的资料,希望能对大家的设计起到帮助作 ...

  8. [密码学] RSA同模攻击与选择密文攻击

    文章目录 同模攻击 选择密文攻击 RSA-OAEP 同模攻击 选择密文攻击 RSA-OAEP

  9. EMC原理-传导(共模、差模)与辐射(近场、远场)详解

    目录: 第一章.EMC概念介绍 第二章.感应干扰(近场) 第三章.辐射干扰(远场) 第四章.差模干扰 第五章.共模干扰 ---------------------------------------- ...

最新文章

  1. 上海大学c语言程序设计,上海大学2009-C语言程序设计秋季学期试卷.doc
  2. Redis运维优化的陷阱及避坑指南
  3. 基于Bootstrap的jQuery开关按钮插件
  4. 将html转换为pptx,javascript – 将html表导出到客户端的ppt?
  5. Log binomial 回归在队列中的应用
  6. SAP APF modeler过滤器的设计原理
  7. 【渝粤教育】21秋期末考试建设工程法规10221k1
  8. bba70_BBA的完整形式是什么?
  9. redis配置文件参数详解
  10. 为何谷歌放弃以甜品命名android,甜点不见了 谷歌变更Android命名方式
  11. JVM与计算机之间的关系
  12. Vite 配置项目别名-最新版
  13. 史上最强三千六百道脑筋急转弯(6)
  14. android+模拟示波器,模拟示波器
  15. 数据通路、微操作序列
  16. 嘉立创 PCB 生产流程
  17. c语言单片机仿真keil,如何在keil中仿真stm32单片机
  18. web项目034-----JS模版引擎
  19. 二进制数据文件中的字符串替换的实现(C++)
  20. vue3里面的watch

热门文章

  1. 宽带共享常见经典问题(转)
  2. QQ登录+分享+空间分享
  3. 毕业倒计时 — 科班仔Java后端的点滴与学习路线规划
  4. 充电枪cp信号控制板_一种电动汽车交流充电系统的CP信号电压检测方法及装置与流程...
  5. 如何把拱门改成方形_闭气式方形拱门的制作方法
  6. python爬取豆瓣书评实战——初级
  7. Python 框架 之 Django MVT 下的 M 的 模型的简单介绍和使用
  8. char* 和char[]的区别
  9. windows10服务器维护,win10自动开机设置方法_网站服务器运行维护,win10
  10. 卸载ros2 foxy