PGP中公鑰的選擇密文攻擊
在 Secrets & Lies (2000) 中,Schneier 描述了在 PGP 下對公鑰的選擇密文攻擊:
“由於 RSA 和 ElGamal 具有延展性,可以對加密的對稱密鑰進行已知更改。然後可以將修改後的(加密的)密鑰與原始消息一起發送。這為對稱密鑰的相關密鑰攻擊打開了可能性或者,可以找到一個弱密文,其在對稱密鑰算法下的解密揭示了有關修改後的密鑰的資訊,然後直接導致有關原始密鑰的資訊。
$$ P. 327-328. Schneier, Bruce. Secrets & Lies. 2000 $$
你能解釋一下(a)這種攻擊是如何工作的,(b)它在 2016 年是否仍然可行?
TL;DR:這種攻擊將針對 RSA 和 ElGamal 的標準選擇密文攻擊擴展到混合加密設置,但需要一些巨大的 IF,這些 IF 甚至不再有實現的可能性。
要了解這種攻擊,首先需要了解如何根據此片段為 PGP 加密數據。假設您有一個收件人密鑰 $ pk $ , 一個消息 $ m $ , 一個加密函式 $ E_{pk}( \cdot ) $ (教科書 RSA或教科書 ElGamal),隨機對稱密鑰 $ K $ 和一個著名的對稱密碼 $ E_K( \cdot ) $ . 現在形成密文 $ C $ 作為 $ C=E_{pk}(K)||E_K(m) $ 和 $ || $ 表示可逆配對(例如,您可以稍後提取這兩個部分)。
下一步是注意,您可以通過對密文執行特定(簡單)操作——只知道公鑰,任意、乘法地修改教科書 RSA和教科書 ElGamal中的消息。請注意,您可以對加密的“標頭”應用兩個連結攻擊 $ E_{pk}(K) $ 從上面。
現在你使用這些攻擊並改變 $ K $ 值 $ K’ $ ,最好以巧妙的方式。如果密碼容易受到相關密鑰攻擊,您可以通過這種方式為這種攻擊生成相關密鑰,然後對其進行攻擊,可能會濫用使用者作為解密預言機。現在也可能是,您偶然發現了在新密鑰下看起來很弱的密文,並允許您從密文中推斷出一些關於密鑰的資訊,從而緩解暴力攻擊。
這種攻擊現在還可行嗎?一如既往,這取決於。 類似的加密機制RSA-KEM和ECIES在對稱密碼和公鑰加密的對稱密鑰之間使用散列函式,因此它們是免疫的。
如果您使用RSA-OAEP或 ElGamal 的 IND-CCA2 安全變體,您也是安全的,因為延展性屬性不再適用。
此外,經過身份驗證的(對稱)加密也使這種攻擊變得更加困難,因為您首先需要找到一個不會產生無效標籤的相關密鑰,從而將您的資訊量從“在此相關密鑰下完全解密”減少到“是否解密的消息”在此相關密鑰下成功”,這可能不足以進行恢復攻擊。
如果您的密碼(足夠)抵抗相關密鑰攻擊並且沒有“弱密文”,那麼您也是安全的。大多數體面的現代密碼對於相關密鑰攻擊都“足夠安全”,即使是對這些攻擊有過一些破壞經驗的 AES 仍然足夠安全。
這尤其是當今適用的最後一種緩解措施。幾乎每個人都在使用 AES 或相當強大的密碼,因此不存在所需的相關密鑰攻擊,這更多是理論上的弱點,而不是實際的弱點。