Elgamal-Encryption

使用 OAEP 保護 ElGamal

  • October 29, 2018

是否可以使用OAEPOAEP+製作 ElGamal IND-CCA2 ?
(OAEP+ 來自:Shoup 的“OAEP Reconsiderd”)

我問的原因是我最近回答了這個問題,我想到 OAEP 或 OAEP+ 可能是可能的解決方案。

請注意,這根本不是一個實際問題。沒有實施的意圖,我只是問如果我實施它是否安全。

經過一番思考,我認為答案實際上是否定的,即使對於 IND-1-CCA *甚至對於 Shoup 的 OAEP+ 也是如此。

RSA-OAEP/OAEP+ 通過接收消息工作 $ m $ , 產生一個填充 $ p(m,r) $ 然後加密這個,所以 $ c = f(p(m,r)) $ 在哪裡 $ f $ 是 RSA 加密,並且 $ f(u) = u^e \pmod{N} $ 是確定性的。事實上,OAEP(+) 的全部意義在於將一些熵注入到密文中,這是 IND-CPA 和更高安全性所需的。

ElGamal 加密已經隨機化。如果我們嘗試 ElGamal-OAEP(+) 我們得到 $ c = (g^r, y^r \cdot p(m, r’)) $ 在哪裡 $ y $ 是公鑰。由於 ElGamal 是同態的,這顯然甚至不是 CCA1:考慮一個選擇 $ m_0, m_1 $ , 要求挑戰密文 $ c = (u, v) $ 然後設置 $ c’ = (u \cdot g^s, v \cdot y^s) $ 對於隨機選擇 $ s $ . 無論填充如何,這仍然是有效的 OAEP(+) 密文 $ p $ 是(因為我們只改變“外部”隨機性 $ r \mapsto r + s $ ) 所以 IND-1-CCA 遊戲會愉快地解密並返回 $ m_0 $ 或者 $ m_1 $ 如預期的。

這當然是假設您可以將填充函式的範圍映射到您正在執行 ElGamal 的組中 — 對於 ECC,這應該沒問題,因為 $ \mathbb Z^\times_p $ 組更難。作為替代方案,可以考慮使用散列的 ElGamal-OAEP+ $ c = (g^r, H(y^r) \oplus p(m, r’)) $ 在哪裡 $ H $ 獨立於 OAEP+ 填充中使用的散列函式 $ p $ . 我的直覺是這仍然不是 CCA1,即使它不再具有同態屬性。當然如果 $ H $ 本身俱有一些同態屬性,那麼應該能夠做類似上述反例的事情。

IND-1-CCA:是標準的 IND-CCA2,在看到挑戰密文而不是多項式後,您只會得到 1 個解密查詢。

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