Rsa

為什麼在 RSA 中將 phi(n) 保密很重要?

  • October 24, 2021

為什麼重要的是 $ \phi(n) $ 是保密的,在 RSA 中?

根據 totient 函式的定義,我們有以下關係:

$$ \varphi{(n)} = (p - 1)(q - 1) = pq - p - q + 1 = (n + 1) - (p + q) $$ 然後很容易得出:

$$ (n + 1) - \varphi{(n)} = p + q $$ $$ (n + 1) - \varphi{(n)} - p = q $$ 你從 RSA 的定義中知道:

$$ n = pq $$ 將一個代入另一個,您可以得出:

$$ n = p \left ( n + 1 - \varphi{(n)} - p \right ) = -p^2 + (n + 1 - \varphi{(n)})p $$ 通過一些重新排列,我們得到:

$$ p^2 - (n + 1 - \varphi{(n)})p + n = 0 $$ 這是一個二次方程 $ p $ , 和:

$$ \begin{align}a &= 1 \ b &= -(n + 1 - \varphi{(n)}) \ c &= n \end{align} $$ 使用著名的二次公式可以很容易地解決這個問題:

$$ p = \frac{-b \pm \sqrt{|b|^2 - 4ac}}{2a} = \frac{(n + 1 - \varphi{(n)}) \pm \sqrt{|n + 1 - \varphi{(n)}|^2 - 4n}}{2} $$ 由於對稱性,這兩種解 $ p $ 實際上將是兩個主要因素 $ n $ .


這是一個簡短的例子,讓 $ n = 13 \times 29 = 377 $ 和 $ \varphi{(n)} = (13 - 1) \times (29 - 1) = 12 \times 28 = 336 $ . 使用上面顯示的二次方程,我們需要為方程使用以下係數:

$$ \begin{align}a &= 1 \ b &= -(377 + 1 - 336) = -42 \ c &= 377 \end{align} $$ 因此,我們有以下二次方程要解決:

$$ p^2 - 42p + 377 = 0 ~ \implies ~ p = \frac{42 \pm \sqrt{|-42|^2 - 4 \times 377}}{2} = \frac{42 \pm 16}{2} $$ 最後,我們計算兩個解,它們是 $ 377 $ 正如預期的那樣:

$$ \frac{26}{2} = 13 ~ ~ ~ ~ ~ ~ ~ ~ \mathrm{and} ~ ~ ~ ~ ~ ~ ~ ~ \frac{58}{2} = 29 $$


總之,知識 $ \varphi{(n)} $ 允許一個因素 $ n $ 及時 $ O(1) $ . 其他答案是等價的,因為知道 $ d $ 實現了相同的結果(失去 RSA 的任何安全屬性),但為了完整性,我認為展示如何 $ n $ 可以用這個資訊來考慮。

引用自:https://crypto.stackexchange.com/questions/5791