Rsa

ECDH 或 RSA 對對稱密鑰包裝更安全?

  • May 7, 2018

假設一條消息是用帶有隨機密鑰的對稱分組密碼加密的。RSA 通常用於使用接收者的公鑰來包裝對稱密鑰。

在這種情況下,消息的大小會增加,因為 RSA 加密的塊大小(取決於模數大小)遠大於對稱密鑰的實際大小。這也導致使用一些特殊的填充方案(如 OAEP)。

例如:假設我們想要 128 位安全性 - 128 位對稱密鑰,用 2048 位 RSA 加密產生 256 字節輸出,是對稱密鑰大小的 16 倍。

另一方面,當尺寸增加成為問題時,可以使用 ECDH(具有一些安全曲線)。獲取收件人的公鑰 $ rP $ , 生成一個隨機值 $ s $ , 計算 $ rsP $ 並使用 KDF 從其獲取對稱密鑰 $ x $ -協調。加密消息與發件人的公鑰一起發送 $ sP $ .

在這種情況下(對於 128 位安全性),使用 256 位素數欄位上的一些安全曲線,大小為 $ sP $ $ x $ -coordinate 是 32 字節,是對稱密鑰大小的兩倍。

我的問題來了 - 除了計算要求更高(兩個標量點乘法與一個指數)之外,在這種情況下用 ECDH 替換 RSA 時是否應該考慮任何額外的安全考慮?

是的,有幾個理由更喜歡 ECDH 而不是 RSA:

  1. ECDH 會表現得更好;
  2. 當與臨時密鑰對一起使用時,ECDH 可以提供前向安全性,而不會為創建這些密鑰對帶來大量性能成本;
  3. ECDH 應該不受大多數預言機攻擊的影響,即對 OAEP 的基於時間的填充預言機攻擊。

對於前向保密,您需要兩個臨時密鑰對(執行臨時-臨時 Diffie-Hellman)。臨時密鑰對不能用於身份驗證,因此如果您想為此使用靜態 ECDH 密鑰對,則需要額外的步驟。

也有一些缺點:

  1. RSA 通常更好理解。
  2. 有一些關於 EC 安全性和域參數的討論:您可能需要驗證公鑰點或使用安全曲線之一。

儘管您可能必須為 ECDH 執行更多的模計算(包括模冪運算),但模計算的數字要小得多,從而產生更好的算法,尤其是在使用私鑰的計算方面。

教科書或原始 RSA 完全能夠處理大密鑰;任何正常大小的密鑰都可以直接用正常大小的 RSA 公鑰加密。只需將填充的密鑰解釋為數字即可。需要諸如 OAEP 之類的 RSA 填充方案來獲得安全性

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