Rsa

RSA 協議/生成素數

  • October 4, 2017

因此,Alice 想要使用 RSA 協議並支付 Cindy 來生成兩個(奇數)素數 p 和 w,這樣她就可以使用 e=65537 和 n=pw 作為她的公鑰。Alice 將在收到 p 和 w 後,私下找到 d 作為她的私鑰。

Cindy 將 p 和 w 傳遞給 Alice,其中 p 是素數,但她搞砸了,將一個數字 w 傳遞給 Alice,它是合數。這個數字 w 是兩個(不同的)素數的乘積。(假設 (p,w)=1。)Alice 沒有意識到 w 是素數,並且在這個假設下找到了 d。因此公開她的公鑰(65537,pw)。

令人驚訝的是,每當消息 M 使用 RSA 使用她的公鑰發送給 Alice 並且 Alice 使用她的 d 時,她總是正確地恢復消息 M!(當然我們假設 M 和 pw 沒有公因數)。

這世界上怎麼可能??公式是什麼??

我們如何證明不存在大小為 512 位的 w?

編輯:另外,我們如何證明除以 w 的兩個素數不能具有相同的位數(以二進製表示)?

這怎麼可能?

發生這種情況的最簡單方法是,如果 $ w $ 是一個卡邁克爾數(並且相對於 $ p $ ).

卡邁克爾數是一個合數,使得 $ x^{w-1} \equiv 1 \bmod w $ 對所有人 $ x $ 相對於 $ w $ .

如果您獲取 Carmichael 編號,只需將其插入 RSA 機器;也就是說,計算 $ d = e^{-1} \bmod \text{lcm}(p-1, w-1) $ (或者 $ (p-1)(z-1) $ ,在這種情況下都有效),您將獲得一個有效的加密/解密對。

為了讓事情變得更有趣,還有一些數字 $ x^{w-1} \equiv 1 \pmod m $ 通常(但不總是)是正確的(我個人稱它們為 quasicarmichael 數;這可能不是標準術語);然後,取決於什麼 $ p $ 是(實際上,它是因式分解 $ p-1 $ 這很關鍵),並且可能您是否使用 $ \text{lcm}(p-1, w-1) $ 或者 $ (p-1)(z-1) $ ,也可以工作。

(當然我們假設 M 和 pw 沒有公因數)。

實際上,我們不需要做這樣的假設。

我們如何證明不存在大小為 512 位的 w?

實際上,我相信有這麼大的卡邁克爾數。

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