Encryption

使用私鑰的 RSA 加密和使用公鑰的解密

  • June 8, 2014

使用 RSA 密碼系統時,如果您改為使用私鑰加密並使用公鑰解密,它是否仍然有效?在使用 RSA 進行發件人身份驗證的情況下呢?

從數學上講,它工作得很好。用私鑰“加密”,用公鑰“解密”。然而,通常我們說用私鑰簽名並用公鑰****驗證

如評論中所述,這不僅僅是對消息的直接簽名 $ m $ . 通常涉及雜湊函式和填充。此外,通常有一個單獨的密鑰對用於簽名

如您所見,有許多警告,但總的來說您是正確的,它用於發件人身份驗證。

非對稱加密和簽名是完全不同的概念。安全性和施工要求完全不同。(例如,加密需要注入,而簽名驗證需要是對已驗證消息空間的投射。作為進一步暗示它們本質上的不同之處,請注意它在基於 ID 的加密之前持續了相當長的一段時間可以設計,而基於 ID 的簽名從一開始就存在。)

簡單地說:“用私鑰加密”這個詞(理解定義)沒有任何意義。你會怎麼做?

以 ElGamal 加密方案為例: $ s $ 是你的私鑰, $ g^s $ 你的公鑰。加密 $ m $ ,你隨機畫一個 $ r $ 併計算密文 $ (g^r,mg^{rs}) $ . 現在,讓我們實際一點:您已經擁有了一個實現 ElGamal 的不錯的庫。加密 API 說該函式有兩個參數:一個消息和一個公鑰,這是一個組元素 $ g^s $ 對於一些秘密號碼 $ s $ 和一些組生成器 $ g $ . 現在你如何“用私鑰加密” $ s $ ? 你用 $ m $ 和 $ s $ ? 它不符合 API,甚至可能崩潰。那麼讓我們從理論上講:您如何使用 ElGamal 加密進行簽名?

最終,這種誤解可能源於 RSA 底層數學結構的細節(它同時具有簽名和加密變體,並且可以使用相同形式的私鑰進行解密或簽名,以及用於加密的相應公鑰簽名驗證)。但即使在那裡,符合標準的實現也不允許您“使用公鑰解密”。由於確實存在填充,因此解密不可能成功。對於 RSA 的特殊情況,另請參見。

因此,如果您需要簽名,請使用帶有私鑰的簽名方案的簽名功能。如果您需要加密,請使用帶有公鑰的加密方案的加密功能。畢竟,這就是它們的設計目的。

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