Encryption

何時/為什麼使用 RSA(混合)加密而不是替代方案?

  • October 9, 2019

我讀過 RSA 並不意味著加密大的明文,因為:(

這些對於像 ElGamal 這樣的其他公鑰加密也是如此嗎?)

  • 它很慢。
  • 填充使密文塊更長。
  • 沒有人那樣使用 RSA。所以它的安全性沒有受到審查。

相反,使用了混合方案,例如 samoz 在如何使用非對稱加密(如 RSA)來加密任意長度的明文?

顯然,這也是 PGP 作品中的加密:

  • 選擇一個隨機對稱密鑰。
  • 使用此對稱密鑰加密明文。
  • 使用接收者的公鑰加密對稱密鑰。
  • (可選)對密文明文進行簽名(雜湊) 。
  • 發送對稱密文、加密的對稱密鑰和(可選)簽名。

這個方案有同樣的問題,我在這裡問為什麼使用 Diffie-Hellman 密鑰交換而不是 RSA(或任何公鑰加密)?,即用接收者的公鑰加密“單邊”對稱密鑰。

那麼為什麼不使用集成加密方案呢?該方案使用接收者的公鑰來創建 Diffie-Hellman 對稱密鑰。有了這個,我根本看不到如何使用公鑰加密。例如,TL​​S 僅使用 RSA 簽名(或 DSA)來簽署密鑰交換,而不是 RSA 加密。這讓我想知道何時和/或為什麼要使用公鑰加密。

與使用 RSA的混合加密相比,集成加密方案沒有提供質量優勢(就提供的加密服務而言)。特別是,兩者都沒有提供前向保密:如果接收者的私鑰洩露,過去的密文可以被破譯。所要做的就是應用解密算法。

這與Diffie-Hellman 密鑰交換以及隨後使用會話密鑰的對稱加密形成對比,後者可以提供前向保密,因為用於生成會話密鑰的種子永遠不會提供給對手。

允許前向保密的非對稱加密協議(如經過身份驗證的 DH 與對稱加密相結合)往往需要雙向通信(我知道也不例外),因此不能普遍使用。公鑰加密方案(如 IES/ECIES 和 RSA 與大型消息的對稱加密相結合)是單向通信的唯一常見選項,包括電子郵件和加密備份(從過去到未來的通信,因此單向,從密碼學家的觀點)。


該答案的其餘部分比較了問題中討論的兩種加密方案的優點。

RSA 的主要優點(使用混合加密,除了非常小的消息之外的所有消息)是

  • 它首先在那裡;
  • 它允許非常有效的非對稱加密(不是解密);在一些消息大小適中、加密方計算能力有限或很少發生解密的應用中,這是一個重要的特性。

IES 的主要優點是它允許根據解決有限群中離散對數相關問題的難度來執行非對稱加密(當 RSA 依賴於解決與因式分解相關的問題時)。反過來,這允許:

  • 更有效的解密,因為涉及更小的指數;

  • 當使用基於橢圓曲線的有限群時,即 ECIES:

    • 更有效的解密,因為基本操作可能涉及較小的值,用於推測的等效安全性;
    • 與直接混合加密相比,密碼略小(當我們採取將部分消息嵌入到 RSA 密碼中的稍微不尋常的步驟時,除了非常小的消息外,這種優勢幾乎消失了)。

每個請求:這種嵌入可能如下。假設一個 3072 位(384 字節)公共 RSA 模數和一些 256 位(32 字節)散列函式 $ H() $ . PKCS#1v2 的 RSAES-OAEP允許加密任何消息 $ M $ 從 0 到 318 字節轉換成 384 字節密碼,由

  • 填充 $ M $ 進入 $ \widetilde M $

OAEP

在哪裡

  • 種子是一個像雜湊一樣寬的新隨機值;
  • lHash是某個公共常量的雜湊值;
  • PS是零值的填充字節;
  • 遮罩生成函式是一些PRF,通常由雜湊建構。
  • 然後應用原始 RSA 公鑰轉換 $ \widetilde M\to C=\widetilde M^e\bmod N $ .

這可以通過應用原始 RSA 私鑰轉換來逆轉 $ C\to \widetilde M=C^d\bmod N $ ,然後是取消填充。

為了 $ M $ 超過 318 字節,我們可以在CTR 模式下使用AES -256加密超過該限制的消息部分,使用 32 字節種子作為密鑰(IV 可以是全零,或低 128 位 $ C $ )。加密的成本為 66 字節(2 個雜湊加 2 個字節),與具有 256 位曲線(64 字節)上的仿射座標的 ECIES 相當。

注意:這個簡化的方案不提供消息完整性;通過重用種子來打破 RSAES-OAEP 的安全論點;出於這個原因,在通常的 RSAES-OAEP API 之上不容易實現,這些 API 往往無法訪問種子

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