对幂运算算法的 N - 1 攻击的进一步研究
1. N - 1 攻击原理
在幂运算中,对于任意奇数 $k$,有 $(n - 1)^k \equiv n - 1 \pmod{n}$。给定 $M = n - 1$,在迭代 $i$ 的步骤 5 之后,算法会得到 $S = (n - 1)(d_{m - 1}\cdots d_i) 2 \bmod n$。
- 若 $S = 1$,则 $(d {m - 1} \cdots d_i) 2$ 是偶数,且 $d_i = 0$。
- 若 $S = n - 1$,则 $(d {m - 1} \cdots d_i)_2$ 是奇数,且 $d_i = 1$。
根据迭代 $i$ 时 $S$ 的两种可能值,迭代 $(i - 1)$ 只有两种可能的计算:
- 若 $d_i = 0$,迭代 $(i - 1)$ 的步骤 3 执行:$R[0] = 1^2 \bmod n$。
- 若 $d_i = 1$,迭代 $(i - 1)$ 的步骤 3 执行:$R[0] = (n - 1)^2 \bmod n$。
这样只会导出两个可能的私钥,可使用试错法从这两个可能性中选择正确的 $d$。例如,若假设最高有效位(MSB)为 1,则可以轻松选择两个可能密钥中的一个。为简洁起见,将 $1^2 \bmod n$、$(n - 1)^2 \bmod n$ 和 $1 \times (n - 1) \bmod n$ 分别写为 $1^2$、$(n - 1)^2$ 和 $1 \times (n - 1)$,并在以下分别表示为 $S_1$、$S_2$ 和 $M$。
超级会员免费看
订阅专栏 解锁全文
50

被折叠的 条评论
为什么被折叠?



