NSSCTF_crypto_[CISCN 2021初赛]rsa

NSSCTF_crypto_[CISCN 2021初赛]rsa

提示:低加密指数攻击   共模攻击   p高位

题目:

from flag import text,flag
import md5
from Crypto.Util.number import long_to_bytes,bytes_to_long,getPrime

assert md5.new(text).hexdigest() == flag[6:-1]


msg1 = text[:xx]
msg2 = text[xx:yy]
msg3 = text[yy:]

msg1 = bytes_to_long(msg1)
msg2 = bytes_to_long(msg2)
msg3 = bytes_to_long(msg3)

p1 = getPrime(512)
q1 = getPrime(512)
N1 = p1*q1
e1 = 3
print(pow(msg1,e1,N1))
print (e1,N1)

p2 = getPrime(512)
q2 = getPrime(512)
N2 = p2*q2
e2 = 17
e3 = 65537
print (pow(msg2,e2,N2))
print (pow(msg2,e3,N2))
print (e2,N2)
print (e3,N2)

p3 = getPrime(512)
q3 = getPrime(512)
N3 = p3*q3
print (pow(msg3,e3,N3))
print (e3,N3)
print (p3>>200)


题目分析

本题分为三个部分,分别考察了三种不同的RSA攻击方法:

  1. 低加密指数攻击(e=3)

  2. 共模攻击(相同的N,不同的e)

  3. 部分私钥泄露攻击(已知p的高位)

第一部分:低加密指数攻击 (e=3)

攻击原理

当加密指数e很小(如e=3)且明文m较小时,可能存在m^e < N的情况。此时可以直接对密文c开e次方恢复明文。

如果m^e > N,但m不是太大,可以尝试m^e = c + k*N,其中k是一个小的整数。

解题步骤

  1. 给定参数:

    • e1 = 3

    • N1 = 123814470394550598363280518848914546938137731026777975885846733672494493975703069760053867471836249473290828799962586855892685902902050630018312939010564945676699712246249820341712155938398068732866646422826619477180434858148938235662092482058999079105450136181685141895955574548671667320167741641072330259009

    • c1 = 19105765285510667553313898813498220212421177527647187802549913914263968945493144633390670605116251064550364704789358830072133349108808799075021540479815182657667763617178044110939458834654922540704196330451979349353031578518479199454480458137984734402248011464467312753683234543319955893

  2. 尝试k从0开始递增,寻找满足条件的m:

    k = 0
    while True:
        ret = gmpy2.iroot(c1 + k*N1, e1)
        if ret[1]:
            m1 = ret[0]
            break
        k += 1
  3. 找到的明文m1转换为字节:b' \nO wild West Wind, thou breath of Autum'

第二部分:共模攻击 (相同的N,不同的e)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值