RSA共模攻击 by shenqi

admin 2024年9月25日12:47:27评论9 views字数 5660阅读18分52秒阅读模式

EDI

JOIN US ▶▶▶

招新

EDI安全的CTF战队经常参与各大CTF比赛,了解CTF赛事。

欢迎各位师傅加入EDI,大家一起打CTF,一起进步。(诚招web re crypto pwn misc方向的师傅)有意向的师傅请联系邮箱root@edisec.net、shiyi@edisec.net(带上自己的简历,简历内容包括但不限于就读学校、个人ID、擅长技术方向、历史参与比赛成绩等等。

点击蓝字 ·  关注我们

01

出题脚本

import libnum import gmpy2 #生成素数p=libnum.generate_prime(1024) q=libnum.generate_prime(1024) e1 = 2333 e2 = 23333 m = "flag{welc0me_t0_crypt0}" 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) print("c2=",c2) ''' n1= 232386709436368212294181983036964840335465487253207895119051841544642165747413364204 621134762327433176742228667510937265639270464797770043359166623856543636719811459708 384817804673141226893181977655413390809439644017122880192619972788805693056098670729 951563699705413269178069248282662526715939950484425322050001738083273246890046229101 389729730208438997996300651271287958375819406567610589424021292872374186021462595358 497730335478976449715709075441544929289943903261810405141143808402498800962662132479 689095824813325194886611549303879663878262693954307608251386268674849319955795771388 60619071549478038088017447009 e1= 2333 c1= 182499511238279361651105801086265804955699834728862526475489209548137438888528301510 461700177812310917000331843742327357676592671529937806554190317880645730744328527374 211700186950915083126137917129685694260444460038935244999939424699240559176105814379 340183952059233657223080580607017535500026875597537417228974392611120146466402652598 516879384158293989418917112879153229506315159697692974885533880511950494988883557884 497669546643093284591585230262842223871386847773170173595063356178168248812155159258 340009300197191015275403255460513415452480048385279489924461992458151166774607778637 56165903160043717884206023382 n2= 232386709436368212294181983036964840335465487253207895119051841544642165747413364204 621134762327433176742228667510937265639270464797770043359166623856543636719811459708 384817804673141226893181977655413390809439644017122880192619972788805693056098670729 951563699705413269178069248282662526715939950484425322050001738083273246890046229101 389729730208438997996300651271287958375819406567610589424021292872374186021462595358 497730335478976449715709075441544929289943903261810405141143808402498800962662132479 689095824813325194886611549303879663878262693954307608251386268674849319955795771388 60619071549478038088017447009 e2= 23333 c2= 795513931626540345441086932455908667979245229108247829493862669645544050151877072089 061892471060061872889280500282629155430952824271855677879922093499795725259815652265 131607156857771710348436576167599464458168687444731880205259716735521027185069483393 008772069360109389029136711134295174857478278337997240012299161227378092927415332835 624925375559924862436222180469822907722270427843762050910840536640713984606042887446 449271344845880841096695340933959839938215727699780460128368760911636658156001224232 858920136464429117896528104264149851439835204097847326440194543577606575224052227385 7215764354822976705881386403 '''

02

攻击原理

1、攻击条件: 

相同的模数:多个明文使用了相同的模数进行加密 

不同的指数:每个明文都有不同的公钥指数e

2、相同的模数

密文c1、c2都公用一个模数n。

c1 = pow(m,e1,n)c2 = pow(m,e2,n)

3、不同的指数   

e1 = 2333e2 = 23333

4、共模方式加密的同余式 

RSA共模攻击 by shenqi

5、攻击思路:我们的思路是求出明文m,所以要想办法把明文m的指数给去掉 

6、根据裴蜀定理,如果两个数互质(最大公因数为1),那么它可以表示为:

RSA共模攻击 by shenqi

7、那么这里我们可以将指数e1,e2代入式子中 

RSA共模攻击 by shenqi

注意这个前提:gcd(e1,e2) = 1,我们知道e1=233,e2 = 23333,所以可以适用此定理。  

8、现在我们将两个方程式结合起来看:这里如果可以让和分别乘上和那么就可以抵消掉的指数 即因为可以得到

RSA共模攻击 by shenqi

9、根据同余式相乘的性质:

RSA共模攻击 by shenqi

10、所以这里有:将这两个式子分别乘上和的次方 

RSA共模攻击 by shenqi

11、根据同余式相乘的性质: 

RSA共模攻击 by shenqi

12、所以这里有:

RSA共模攻击 by shenqi

13、所以我们知道了,求解明文的方程为: 

RSA共模攻击 by shenqi

14、x、y的结果肯定是一正一负,所以要判断一下x、y的值如果为负数就要进行模逆运算。

03

解题脚本

n = 232386709436368212294181983036964840335465487253207895119051841544642165747413364204 621134762327433176742228667510937265639270464797770043359166623856543636719811459708 384817804673141226893181977655413390809439644017122880192619972788805693056098670729 951563699705413269178069248282662526715939950484425322050001738083273246890046229101 389729730208438997996300651271287958375819406567610589424021292872374186021462595358 497730335478976449715709075441544929289943903261810405141143808402498800962662132479 689095824813325194886611549303879663878262693954307608251386268674849319955795771388 60619071549478038088017447009   e1 = 2333 e2 = 23333 c1 = 182499511238279361651105801086265804955699834728862526475489209548137438888528301510 461700177812310917000331843742327357676592671529937806554190317880645730744328527374 211700186950915083126137917129685694260444460038935244999939424699240559176105814379 340183952059233657223080580607017535500026875597537417228974392611120146466402652598 516879384158293989418917112879153229506315159697692974885533880511950494988883557884 497669546643093284591585230262842223871386847773170173595063356178168248812155159258 340009300197191015275403255460513415452480048385279489924461992458151166774607778637 56165903160043717884206023382 c2 = 795513931626540345441086932455908667979245229108247829493862669645544050151877072089 061892471060061872889280500282629155430952824271855677879922093499795725259815652265 131607156857771710348436576167599464458168687444731880205259716735521027185069483393 008772069360109389029136711134295174857478278337997240012299161227378092927415332835 624925375559924862436222180469822907722270427843762050910840536640713984606042887446 449271344845880841096695340933959839938215727699780460128368760911636658156001224232 858920136464429117896528104264149851439835204097847326440194543577606575224052227385 7215764354822976705881386403 # e1,e2必须互质,即最大公因数必须是1 if libnum.gcd(e1,e2) != 1: print("[-] gcd(e1,e2) != 1") exit(0) # 使用扩展欧几里得求出x,y的值_ , x ,y=gmpy2.gcdext(e1,e2) if x < 0: c1 = libnum.invmod(c1,n) x = abs(x) if y < 0: c2 = libnum.invmod(c2,n) y = abs(y) m = (pow(c1,x,n) * pow(c2,y,n)) % n # flag{welc0me_t0_crypt0} print(long_to_bytes(m).decode())

EDI安全

RSA共模攻击 by shenqi

扫二维码|关注我们

一个专注渗透实战经验分享的公众号

原文始发于微信公众号(EDI安全):RSA共模攻击 by shenqi

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年9月25日12:47:27
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   RSA共模攻击 by shenqihttps://cn-sec.com/archives/3207216.html

发表评论

匿名网友 填写信息