在 CA 受損的情況下 S/MIME 的安全性
假設 Alice 和 Bob 正在使用 S/MIME 交換消息,受相同 CA 或兩個相互獨立的 CA 頒發的證書的保護。存在一個對手馬洛里,他想要獲得損害通信機密性或完整性或兩者兼而有之的能力。我們可以假設 Mallory 受到以下限制:
- Mallory 無權訪問 Alice 或 Bob 的私鑰。然而,Mallory 可能有權訪問 CA 的私有證書籤名密鑰。
- Mallory 可以完全訪問 Alice 和 Bob 之間的網路通信。
- 馬洛里想要避免被發現。首先,Mallory 想要一種對 Alice 和 Bob 都完全透明的攻擊,在最壞的情況下,這種攻擊會以可檢測的方式乾擾通信,但只是很少發生並且可以合理地解釋為網路故障、軟體故障或硬體失敗。
- 通常,我們可以假設 Mallory 將大多數操作委託給自動化服務。特別是,我們可能會假設,即使 Mallory 已經成功地在兩個方向上妥協了機密性和完整性,大多數時候交換的消息將在不受干擾的情況下通過,而且 Mallory 可能很難真正改變消息時間,當某些資訊(例如證書指紋)被交換時,可能會導致洩露。
從技術上講,Alice 和 Bob 通常會通過 Alice 向 Bob 發送僅簽名消息,Bob 提取 Alice 的證書,然後用簽名然後封裝的消息回复 Alice 來建立一個機密通道。鑑於前三個限制,這樣的交換可能會以下列方式受到微不足道的損害:
- Mallory 創建密鑰對 $ Pub_{FA},Priv_{FA} $ 和證書 $ Cer_{FA} $ 由 Bob 信任的 CA 簽名並且(不誠實地)辨識 Alice。Mallory 創建密鑰對 $ Pub_{FB},Priv_{FB} $ 和證書 $ Cer_{FB} $ 由 Alice 信任的 CA 簽名並且(不誠實地)辨識 Bob。
- 愛麗絲發送消息 $ Sign_{Priv_A}(M_A,Cer_A) $ Bob 被 Mallory 攔截,Mallory 將其替換為 $ Sign_{Priv_{FA}}(M_A,Cer_{FA}) $ .
- 鮑勃發送消息 $ Env_{Pub_{FA}}(Sign_{Priv_B}(M_B,Cer_B)) $ 被 Mallory 攔截,替換為 $ Env_{Pub_{FA}}(Sign_{Priv_{FB}}(M_B,Cer_{FB})) $ .
現在,我擔心的是,這種攻擊不一定符合第四個限制。例如,如果 Alice 和 Bob 以某種方式設法在不被發現的情況下通過受感染的通道交換證書指紋,那麼將立即檢測到受攻擊。
有沒有更好的攻擊,或者我們可以假設這四個限制使 S/MIME 相對安全,不受 Mallory 等攻擊者的攻擊?
**編輯:**馬洛里對愛麗絲和鮑勃的機密性和完整性構成威脅。相反,Alice 和 Bob 對 Mallory 的透明度構成威脅。考慮到馬洛里選擇了愛麗絲和鮑勃的目標,但不是反過來,愛麗絲和鮑勃在多大程度上信任他們的機密性和完整性,基於他們對馬洛里的透明度構成威脅,馬洛里可能是安全的假設不攻擊他們?
不,因為
破壞溝通 $ :\implies: $ 破壞 PKI 設置 $ :\implies $
錯誤地聲稱一方生成了特定的公鑰 $ :\implies: $ “如果愛麗絲……馬上。”
.
是的,我們可以假設。
請注意,如果頻道可以傳送語音,那麼偽造比較可能需要語音模擬。
這就是ZRTP背後的想法(誠然,它不適用於電子郵件)。
您是否懷疑我對這個問題的回答中的最後一段?:-)
是的,任何此類篡改都可以在事後被發現。
我發給你的資訊(叫它 $ \mathcal{M} $ ) 取決於我認為您的公鑰是什麼。您收到的消息(稱它為 $ \mathcal{M}’ $ ) 必須使用您的實際私鑰解密。
您的假設是對手不知道您的私鑰,因此他只能在以下情況下閱讀消息 $ \mathcal{M} $ 和 $ \mathcal{M}’ $ 是不同的。顯然,我們可以通過比較它們在事後檢測到這一點。
請注意,類似的論點適用於針對 Diffie-Hellman 等線上密鑰交換協議的 MITM 攻擊,在這種攻擊中,如果不與我們每個人協商不同的共享秘密,對手就無法攔截流量。如果我們每個人都保存了共享密鑰(或者只是保存 PFS 的雜湊),我們可以稍後比較它們以檢測攻擊。
所以,再一次,CA 證書的洩露對於大規模攻擊不是很有用,因為你最終會被抓到。問問伊朗就知道了。