Least Significant Bit Oracle Attack (LSB Oracle Attack / Parity Oracle)
适用情况:可以选择密文并泄露明文的最低位(奇偶性)。
原理介绍
假设存在一个oracle(可以理解为一个方法),它能对给定密文进行解密并给出对应明文的奇偶信息。利用这个oracle,进行二分查找,则只需要 log(N)次就能解密任意密文。
在一次RSA加密中,明文为 m 模数为 n,加密指数为 e,密文为 c我们可以构造出
c ′ = ( ( 2 e ) ∗ c ) % n = ( ( 2 e ) ∗ ( m e ) ) % n = ( ( 2 ∗ m ) e ) % n c′=((2^e)*c)\% n=((2^e)*(m^e))\% n=((2*m)^e)\% n c′=((2e)∗c)%n=((2e)∗(me))%n=((2∗m)e)%n
因为 m的两倍可能大于 n,所以经过解密得到的明文是 m ′ = ( 2 ∗ m ) % n m′=(2*m)\%n m′=(2∗m)%n
我们还能够知道 m′的最低位lsb是1还是0:因为 n 是奇数,而 2*m 是偶数,那么如果lsb是0,可以说明(2*m)%n 是偶数,没有超过 n(超过n的话,取余后就会变为奇数),即 m < n 2 m<\frac{n}{2} m<2n;反之则 m > n 2 m>\frac{n}{2} m