共私钥d的RSA攻击
攻击原理
不深究数学原理
对于RSA给出的r个式子满足:
$$ \begin{align*} e_1 d &= 1 + k_1 \phi(N_1) \\ e_2 d &= 1 + k_2 \phi(N_2) \\ &\ \vdots \\ e_r d &= 1 + k_r \phi(N_r) \end{align*} $$私钥指数d相同,模数N大小相似,且满足
$$ N_1 < N_2 < N_3 < .... < Nr < 2N_1 $$$ϕ(N_r)=N_i−s_i$,
$$ 在 RSA 中,模数N=pq,欧拉函数 \varphi(N) = (p-1)(q-1) = pq - p - q + 1 = N - (p+q) + 1 \\ 令 s = p + q - 1,那么 \varphi(N) = N - s $$在攻击中,$ϕ(N_r)$未知,所以可以将其转换成N-s,
$$ 所以e_i d = 1 + k_i \varphi(N_i)\\ 就变成了 e_i d = 1 + k_i (N_i - s_i) \quad\Rightarrow\quad e_i d - N_i k_i = 1 - k_i s_i $$令$M=\sqrt{N_r}$这样就可以根据这个方程构造格:
$$ dM=dM\\ e_1d-N_1k_1=1-k_1s_1\\ e_2d-N_2k_2=1-k_2s_2\\ ...\\ e_rd-N_rk_r=1-k_rs_r\\ $$构造过程:
$$ d\begin{pmatrix} M \\ e_1 \\ e_2 \\ ... \\ e_r\end{pmatrix}+k_1\begin{pmatrix} 0 \\ -N_1 \\0 \\ ... \\ 0\end{pmatrix}+k_2\begin{pmatrix} 0 \\ 0 \\-N_2 \\ ... \\ 0\end{pmatrix}+...+k_r\begin{pmatrix} 0 \\ 0 \\0 \\ ... \\ -N_r\end{pmatrix}=\begin{pmatrix} dM \\ 1-k_1s_1 \\1-k_2s_2 \\ ... \\ 1-k_rs_r\end{pmatrix} $$转置得到这个矩阵来进行LLL:
$$ \begin{pmatrix} M &e_1 &e_2 & \dotsb &e_r \\ 0 & -N_1 & 0 & \dotsb & 0 \\ 0 & 0 & -N_2 & \dotsb & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 0 & \dotsb & -N_r \end{pmatrix} $$题
python
|
|
构造格
$$ \begin{pmatrix} M & e_0 & e_1 & e_2 \\ 0 & -n_0 & 0 & 0 \\ 0 & 0 & -n_1 & 0 \\ 0 & 0 & 0 &-n_2 \end{pmatrix} $$
python
|
|
评论