$\Huge\text{The problem: given d and e, can we factorize N ?}$
-------
Ta có: $de \equiv 1 (mod$ $\phi(N))$.
Gọi $k = de - 1 = t * \phi(N)$, $k$ chẵn.
$\rightarrow k = 2^i * r$, với $r$ lẻ, $i \ge 1$.
Để phân tích $p, q$ thì ta sẽ làm như sau:
Dựa trên bài toán tìm nghiệm $x$ thỏa mãn $x^2 \equiv 1 \pmod N$.
Chọn $1$ số ngẫu nhiên $g$ sao cho $gcd(g, N) = 1$ và $1 < g < N$.
$\rightarrow$ $g^{\phi(N)} \equiv 1 \pmod N$ theo định lí Euler.
$\rightarrow$ $g^k \equiv 1 \pmod N$ vì $k$ là bội của $\phi(N)$.
Thuật toán của ta sẽ là:
- Ban đầu ta gọi $x$ $=$ $g^{\frac{k}{2}}$, ta có phương trình $x^2 \equiv 1 \pmod N$. $(*)$
- Dùng CRT để giải phương trình này ta có 4 nghiệm: $x = 1, x = -1,x = a,x = -a$.
- Với $x = a$ $(mod$ $pq)$ và $1 < a < pq$ và $a$ thỏa mãn:
$$
\begin{cases}
a \equiv 1 \mod p \\
a \equiv -1 \mod q
\end{cases}
$$
Thì ta có thể lấy $gcd(a - 1, pq)$ là sẽ ra được $p$.
Vì ta đã biết giá trị $a = g^{\frac{k}{2}}$ nên ta sẽ thay vào rồi lấy GCD luôn.
- Ta thấy phương trình luôn có nghiệm $x = 1$, khi đó ta sẽ lặp lại bước $(*)$ với $x$ giảm dần $x =g^{\frac{k}{2}}, g^{\frac{k}{4}}, g^{\frac{k}{8}}, ..., g^{\frac{k}{2^i}}$ để tiếp tục tìm được nghiệm $a$ thỏa mãn. Nếu vẫn không tìm được thì ta sẽ random số $g$ mới.
-----
Resource:
- [RSA: how to factorize N given d](https://www.di-mgt.com.au/rsa_factorize_n.html)
- [Twenty Years of Attacks on the RSA Cryptosystem](https://crypto.stanford.edu/~dabo/papers/RSA-survey.pdf)