RSA 密碼:模糊或被 eth root 破解?
對 RSA 消息密碼感到困惑: $ c = m^e (mod\ n) $
因此,如果 $ m^e $ 可以大於 n,那麼您可以獲得相同消息的重複密碼。我讀過的大多數文章都這麼說 $ m^e $ 必須始終小於 n 才能抵消。
但如果 $ m^e $ 小於 n,則 $ c = m^e $ 並且可以被解密 $ \sqrt[e]{c} $ . 我讀過的大多數文章都說 $ m^e $ 應大於 n 以抵消。
所以似乎只有 2 個不同的選項。這在實踐中如何協調?(我的假設是“填充”可以協調這一點,但我不確定如何。)
由於符號使用不當,該問題使用了教科書 RSA 加密的錯誤(或至少不完整)定義,該定義實際上定義了密文 $ c $ 對於給定的 $ m $ 作為:$$ c=m^e\bmod n $$這可以讀作:“ $ c $ 等於
$$ pause $$ $ m $ 到 $ e $ 次冪減模 $ n $ ”可以隱含權力或/和減少,停頓強調 $ c $ 是最終模組化減少的結果。代表著 $ c $ 是歐幾里得除法的餘數 $ m^e $ 經過 $ n $ ,它明確地定義了 $ c $ 給定的 $ m\ge0 $ , $ e>0 $ , 和 $ n>0 $ . 它等效地意味著 $ 0\le c<n $ 和 $ c\equiv m^e\pmod n $ ,定義如下。 符號 $ c\equiv m^e\pmod n $ 可以讀作:“ $ c $ 相當於 $ m $ 到 $ e $ 次冪
$$ pause $$模組 $ n $ ” 此處 的 停頓 強調模與 較早 的**等價物配對, 而 不是 隱含 的減少. 對於非零 $ n $ , 代表著 $ m^e-c $ 是的倍數 $ n $ . 有無數個 $ c $ 匹配這個。 符號規則:當 $ \mod; $ 在其左側沒有左括號,並且沒有 $ ;\equiv; $ 在其左邊的任何地方簽名,這意味著減少模數,或等價的餘數。否則,它往往意味著等價模。後者是明確的,當 $ \mod; $ 是在它的左邊有一個左括號,並且有一個 $ ;\equiv; $ 在它左邊的某個地方簽名。
確實,為了避免猜測 $ m $ 作為 $ \sqrt[e]c $ , 有必要 $ m^e\ge n $ 至少有壓倒性的優勢。確保這一點的推薦方法不是直接避免小 $ m $ ; 而是選擇 $ m $ 本質上是一個隨機整數 $ 0\le m<n $ . 選擇更安全、更實用 $ m $ 在後面的方式中,然後使用 $ m $ 作為保護實際消息機密性的對稱密碼的密鑰。存在其他允許與 $ c $ 一條小消息 $ M $ 可逆地變成整數 $ m $ 這是足夠隨機的,請參閱PKCS#1 加密方案。
因此,如果 $ m^e $ 可以大於 n,那麼您可以獲得相同消息的重複密碼。
我不確定你的意思,但是:
- 如果你的意思是一個特定的消息 $ m $ 可能以兩種不同的方式加密,不,情況並非如此,至少不是按照您的意思。如果你有一個特定的值 $ m $ , $ e $ 和 $ n $ , 然後 $ m^e \bmod n $ 具有 0 到 0 之間的唯一值 $ n-1 $ . 現在,這個“一個特定的消息可能會以多種方式加密”是我們真正想要的屬性;在實踐中,我們在填充中處理它(它將我們實際想要加密的消息映射到我們提供給 RSA 算法的值)。
- 如果您的意思是可能有兩條不同的消息 $ m_1 $ 和 $ m_2 $ 這將加密為相同的密文,不,事實並非如此(除非 $ e $ 恰好不是相對質數 $ \phi(n) $ ; 當我們選擇 $ e $ 和 $ n $ , 我們總是注意確保 $ e $ 和 $ \phi(n) $ 是相對質數)。
我讀過的大多數文章都說 $ m^e $ 應大於 n 以抵消。
確實如此;其實是故意選小 $ m $ 是一個壞主意(因為它可能允許基於 RSA 的同態屬性的其他攻擊)。