我一直在阅读RSA攻击,并遇到了一种可以称为最低有效位(LSB)的oracle攻击。为了清楚起见,让我们定义RSA素数$(p,q )$,私钥$ d $和公钥$(e,N)$,其中$ N $是模数。

现在假定存在一个将使用以下命令解密给定密文$ C $的预言家:私钥$ d $并检查解密密码的奇偶校验。也就是说,如果解密的密码分别为偶数或奇数,它将返回true或false。

如果攻击者截取了加密的明文$ C = P ^ e \ mod N $,则可以将其乘以$ 2 ^ e \ mod N $(实际上是将原始明文加倍)并将其发送到oracle。 oracle将解密并找到$ 2P \ mod N $。现在,如果$ 2P> N $,则余数将为奇数,因为$ N $为奇数。如果$ 2P N / 2 $(oracle返回奇数)。

这就是我受困的部分,因为显然,您可以通过某种方式迭代地应用此原理,并通过迭代地缩小$ P $的范围,可以在$ \ log_ {2} N $迭代中完全恢复$ P $。我无法看到迭代的工作方式。

如果可能的话,我宁愿使用提示而不是完全写出的解决方案,因为我会自己做些事情。我只需要向正确的方向轻轻一点。非常感谢。

评论

你读过例如Fischlin和Schnorr的“用于RSA和Rabin比特的更强大的安全证明”?

只是一个小小的注:N不是素数(第4段),很奇怪。应该是“ ..余数将是奇数,因为N是奇数,所以2P是偶数,而2P <2N”。

@tylo你是完全正确的,改变了错误。就像您在回答中建议的那样,昨天我能够解决它。为了完整性,我还将添加最终的方法,但是您对此表示赞同。

#1 楼

这是迭代的下一步,应该很容易理解:
让我们在2P和4P上调用oracle:

答案(偶数,偶数)表示$ P (偶数,奇数)表示$ N / 4 \ le P (奇数,偶数表示$ N / 2 \ le P <3N / 4 $

(奇数,奇数)表示$ 3 / 4N \ le P
如果继续将P的因子乘以2,您将获得下一轮迭代,其中“奇数”表示间隔的上半部分,而“偶数”表示间隔的下半部分。

评论


$ \ begingroup $
我们知道P N => P> N / 2,如果4P为奇数,则4P> N => P> N / 4。 3/4是哪里来的?
$ \ endgroup $
– David天宇黄
16年4月16日在15:57

$ \ begingroup $
啊,找出原因:)以奇数次进行第二次迭代,您没有使用4P,而是使用2(2P-N),因为我们已经有了2P> N
$ \ endgroup $
– David天宇黄
16年4月16日在16:45

#2 楼

解决问题的方法确实如@tylo所建议。最初我们知道目标纯文本$ P $在范围$ [0,N] $内,其中下限$ LB = 0 $和上限$ UB = N $。

现在我们重复以下算法$ log_ {2} N $次从原始截获的密文$ C $

$ C'=(2 ^ {e} \ mod N)* C $

if (Oracle(C') == even)
    UB = (UB + LB)/2;
else
    LB = (UB + LB)/2;