利用少量RSA私钥信息穿透迷雾
1. 搜索空间减半
在RSA算法中,若已知公钥模数 (N = PQ)((P) 和 (Q) 为素数),且通常选择 (P) 和 (Q) 具有相同的比特位数,攻击者可假设 (P < Q < 2P)。由此可得:
[2\sqrt{N} < P + Q < 3\sqrt{\frac{N}{2}}]
进而推出 (\varphi(N) = N - (P + Q) + 1) 的范围:
[N - 3\sqrt{\frac{N}{2}} + 1 < \varphi(N) < N - 2\sqrt{N} + 1]
此区间长度小于 (\frac{1}{8}\sqrt{N}),所以可轻易确定 (\varphi(N)) 一半以上的最高有效位。
公钥指数 (E) 和私钥指数 (D’) 满足:
[D’ \times E = 1 + k\varphi(N)]
通常选择 (D’ < \varphi(N)),使得 (k < E)。为 (D’) 添加一个随机因子 (r\varphi(N))((r) 常为32位随机数),得到实际用于指数运算的私钥 (D):
[D = D’ + r\varphi(N) = \frac{1 + (k + rE)\varphi(N)}{E}]
设 (B) 为 (r) 的上界,那么 (\varphi(N)) 的系数 (k + rE) 是 (0) 到 (BE) 范围内的随机数。攻击者只需生成 (O(BE)) 个可能的系数值,就能得到一个包含观察到的指数运算中使用的 (D) 的近似值集合。若没有添加随机因子,取 (r = 0),(B = 1)。