dp泄露

runwu2204 Lv6

dp = d%(p-1)

∴dp*e=d*e mod(p-1)

∴d*e=dp*e+k1*(p-1) ①

又有e*d = 1mod((p-1)*(q-1))

∴e*d=k2*(p-1)*(q-1)+1 ②

①带入②得

dp*e+k1*(p-1)=k2*(p-1)*(q-1)+1 k1,k2∈Z

dp*e =k2*(p-1)*(q-1)+k3*(p-1)+1 k2,k3∈Z

e*dp=(k2*(q-1)+k3)*(p-1)+1

∵dp<q-1

∴(k2*(q-1)+k3)<e

设(k2*(q-1)+k3)=i

可以通过遍历求出i的值

根据已知条件n=p*q,i*(p-1)+1=dp*e

1
2
3
4
5
6
7
8
9
10
for i in range(2,e):
if (dp*e-1)%i==0:
p=((dp*e-1)//i)+1
if n%p==0:
q=n//p
if e*dp==i*(p-1)+1:
d=__import__('gmpy2').invert(e,(p-1)*(q-1))
print(long_to_bytes(pow(c,d,n)))
break

例题[LitCTF 2023]P_Leak | NSSCTF

给了dp,n,c可以直接求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
e=65537
# m=bytes_to_long(b'xxxx')
# p=getPrime(512)
# q=getPrime(512)
# n=p*q
# phi=(p-1)*(q-1)
# d=inverse(e,phi)
# dp=d%(p-1)
# c=pow(m,e,n)
# print("dp=",dp)
# print("n=",n)
# print("c=",c)
dp= 5892502924236878675675338970704766304539618343869489297045857272605067962848952532606770917225218534430490745895652561015493032055636004130931491316020329
n= 50612159190225619689404794427464916374543237300894011803225784470008992781409447214236779975896311093686413491163221778479739252804271270231391599602217675895446538524670610623369953168412236472302812808639218392319634397138871387898452935081756580084070333246950840091192420542761507705395568904875746222477
c= 39257649468514605476432946851710016346016992413796229928386230062780829495844059368939749930876895443279723032641876662714088329296631207594999580050131450251288839714711436117326769029649419789323982613380617840218087161435260837263996287628129307328857086987521821533565738409794866606381789730458247531619
for i in range(1,e):
if (dp*e-1)%i==0:
p=((dp*e-1)//i)+1
if n%p==0:
q=n//p
if e*dp==i*(p-1)+1:
d=__import__('gmpy2').invert(e,(p-1)*(q-1))
print(__import__('Crypto.Util.number', fromlist=['*']).long_to_bytes(pow(c,d,n)))
break

  • 标题: dp泄露
  • 作者: runwu2204
  • 创建于 : 2023-07-19 16:08:26
  • 更新于 : 2023-09-22 21:14:55
  • 链接: https://runwu2204.github.io/2023/07/19/Crypto/RSA/dp泄露/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录
dp泄露