是否有任何協議可以真正免受主動和被動 MITM 攻擊?
是否有任何加密協議或算法可以防止主動 MITM 攻擊或在啟動與伺服器或您之前未交換密鑰的人的新連接時的干擾?
例如:
Alice's computer ➜ ISP ➜ Internet ➜ ISP ➜ Bob's server
眾所周知,ISP 受到 NSA/GCHQ 使用的秘密房間和設備的影響,尤其是在美國和英國。紐西蘭感覺被排除在間諜災難之外,決定在過去幾天效仿,他們剛剛通過了一項法律,迫使 ISP 協助 GCSB 進行監視。
鏈條現在真的是這樣的:
Alice's machine ➜ ISP (hostile) ➜ Internet (hostile) ➜ ISP (hostile) ➜ Bob's machine
假設任何一個 ISP 都有一些可以實時進行主動 MITM 攻擊的設備或人員。例如,它檢測到密鑰交換,而不是為 Alice/Bob 提供真正的密鑰,而是將攻擊者的密鑰提供給他們。哪個協議讓 Alice 或 Bob 知道發生了偽造?如果他們檢測到偽造,這是否會導致 Alice 或 Bob 在沒有被監控的情況下無法進行通信的拒絕服務?
讓我們明確一點,證書頒發機構不是解決方案。我什至不確定像 Perspectives 或 Convergence 這樣的系統是否會有所幫助,因為 Alice 或 Bob 的機器仍然需要通過敵對的 ISP 連接以聯繫公證人或一組公證人以驗證原始公鑰的真實性。如果 ISP 受到威脅,您如何安全地做到這一點?ISP 可以簡單地回复 Alice/Bob 假裝是公證人並說一切都很好。
那麼如何解決這種場景下的真實性問題,防止主動中間人攻擊呢?
如果 Alice 和 Bob 已經有一個共享的密鑰(可能是親自交換的),這能解決問題嗎?那麼可以使用哪些協議,它們是否完全防止主動 MITM 和拒絕服務?
簡而言之:
如果你假設沒有共享秘密,你就不能建構任何東西。對於這方面的一些理論,Dolev Yao 模型中形式化了類似的假設(所有消息都通過攻擊者發送,假設完美加密),其中不可能進行未經身份驗證的密鑰交換。
如果您假設一個共享秘密,那麼它取決於執行許多協議的秘密類型:
- 像 Diffie-Hellman 這樣的用於密鑰交換的 MITM 通常會為 Alice 和 Eve 之間的連接以及 Bob 和 Eve 之間的連接產生不同的密鑰(由於 DLOG 仍然很難)。因此,您從正常的密鑰交換開始,但不要立即將此密鑰用於您的會話。
- 在第一部分的會話密鑰和共享密鑰上執行單向函式。例如,您可以在 cocatenation 上使用密鑰派生函式。Eve 應該無法計算這個密鑰,因為她不知道其中的秘密。
- 使用派生密鑰作為會話密鑰或 MAC 密鑰,或任何您想用它做的事情。Eve 不應該知道它,它可以用來檢查消息的完整性(或註意 Eve 是否已經對第一次密鑰交換進行了調整)。