通過同態隨機屏蔽填充的 RSA 密文
我之前問過一個與此相關的問題: Oblivious Decryption: Decrypting with a private key, without known the message
@rikhavshah 有一個答案,我想討論一下它的安全性。
簡單的說:
- Alice 有一個 RSA 公鑰 $ (e, N) $ 和一個私鑰 $ (d,N) $
- 有密文 $ x $ ,使用 Alice 的公鑰填充和加密。
- Bob 不知道填充的明文是什麼 $ m_p $ 是,但有密文 $ x $ .
- Bob 隨機選擇一個面具 $ r $ 從 $ {1,\cdots,N-1} $ , 計算 $ x,r^e\bmod N $ 並將其發送給愛麗絲。
- 愛麗絲解密 $ x,r^e $ 通過計算 $ (x,r^e)^d\bmod N $ ,這也是 $ x^d,r\bmod N $ , 並將其發送給 Bob
- Bob 將值乘以 $ r^{-1} $ (模乘逆 $ r $ 模組 $ N $ ,其中具有壓倒性的可能性是明確定義的)提取 $ x^d\bmod N = m_p $ . 稍後刪除/解碼填充以提取 $ m $ .
這樣,Alice 解密 $ x $ , 不知道是什麼 $ m_p $ 是。Bob 知道 $ m_p $ 不知道 Alice 的私有指數的值 $ d $
是否存在已知的攻擊,該方案容易受到攻擊?可以選擇 $ r $ 使這或多或少安全?或者簡單地說,我們如何處理這個方案並使其安全?
注意:正如@rikhavshah 在他們的回答中也提到的那樣,這具有潛在的攻擊,Bob 可以讓 Alice 解密使用她的公鑰加密的任何內容。但這實際上是該方案所要求的。所以我不會認為這是一個漏洞。請假設,他們正在使用簽名方案來驗證彼此的身份。
在問題的最後一個項目符號中,Bob 計算 $ x^d\bmod N=m_p $ . 這是填充消息 $ m $ . 填充物必須從 $ m_p $ 由鮑勃回來 $ m $ . 如果 Bob 在填充檢查失敗的哪一步洩漏,可能會出現嚴重的問題,就像 James Manger 的A Chosen Ciphertext Attack on RSA Optimal Asymmetric Encryption Padding (OAEP) as Standardized in PKCS #1 v2.0(在Crypto 2001 的程序中) .
如果 Bob 在填充失敗的地方洩漏(例如,通過計時),並允許這種情況經常發生(幾千次)以用於不同的 $ x $ 由對手選擇,那麼活躍的對手可以解密 Bob 不知道的消息,即使如果對手直接詢問 Alice(因為 Alice 驗證了她接受來自誰的消息), Alice 會拒絕解密該消息。
沒有證據表明擁有 $ (N,e) $ 以及提升權力的能力 $ d $ 模組 $ N $ (通過查詢 Alice)不允許 Bob 分解 $ N $ 並到達 $ d $ (或等價物)。這只是廣泛的推測。
還應該強調的是,鮑勃沒有 $ d $ ,但可以獲得幾乎一樣好的東西:提升權力的能力 $ d $ 模組 $ N $ . 他可以共享該能力(通過將請求轉發給 Alice 和她的答案,或者只是向 Alice 透露他的憑據)。
另外:即使 Bob 驗證了諸如 OAEP 之類的安全填充,除了成功/失敗之外沒有洩漏任何東西,Bob 仍然應該小心,在 Alice 的幫助下通過填充檢查破譯的消息絕不是經過身份驗證的。例如,如果(真正的)消息 $ x $ 已破譯為“獲勝者是卡羅爾”,鮑勃後來收到一條消息 $ x’ $ 破譯“重複:獲勝者是 Malory”,Bob 不應該洩露他很驚訝,因為這將表明獲勝者不是 Malory,無論是誰(例如 Malory)生成了偽造的 $ x’ $ .
除了這些以及針對 Alice 和 Bob 的標準實現攻擊(例如側通道洩漏),我看不到其他特定於該協議的攻擊。
每條評論:我沒有看到該協議對生成器中的微小缺陷敏感 $ r $ ,包括愛麗絲試圖得到的 $ m $ .