我正试图解决一个与RSA加密有关的CTF问题。
我可以运行一个挑战二进制文件,该二进制文件将从文件中读取一个标志,该标志将与以下RegEx匹配:
AB1234C\{[0-9a-f]{32}\}\n
因此,标志总共是42个字节,包括换行符。
然后用随机填充填充标志,使其总数达到128个字节。
我可以选择公共指数e,只要是e>1。二进制将使用python函数Crypto.PublicKey.RSA.generate(bits=2048)生成一个随机的2048位模数。
二进制将打印出模数以及加密填充标志的密文。
我可以运行二进制多次,模数和填充将是不同的每次运行。
我认为这可能与Hastad的攻击有关,但这似乎只适用于线性填充,而Coppersmith的短垫攻击只有在有两条带有随机填充但使用相同模数加密的消息时才有效,这一点我这里没有,因为每次运行二进制文件时都会生成不同的模数。
当涉及到密码时,我仍然是个初学者,所以我可能对那些攻击是错误的,并且可能遗漏了一些明显的东西。
我认为这个漏洞可能与填充物的大小有关,因为填充信息只有模数长度的一半。
我不一定想要解决问题的办法,但只是朝正确的方向努力。谢谢。
发布于 2022-03-30 12:23:53
这是个CTF,所以我只是给了个提示。
我可以选择公共指数e,只要e>1。
我们能从一个查询中选择一个简单的e吗?考虑:
..。对于128个字节,二进制将产生一个随机的2048位模数。
发布于 2022-03-30 23:14:18
因此,在阅读了@fgrieu评论之后,我再次查看了填充方案,并意识到它实际上是确定性的,而不是我所认为的随机的。我刚刚用哈斯塔德的攻击解决了这个问题,所以它实际上是垫子的一个弱点。我对这个不正确的问题表示歉意。
https://crypto.stackexchange.com/questions/99388
复制相似问题