此身份驗證協議有問題
考慮這樣的身份驗證協議:
Alice 和 Bob 共享一個密鑰。
- Bob 向愛麗絲發送一個隨機數。
- Alice 使用共享密鑰對其進行加密並發送給 bob。
現在假設 Alice 已成功通過身份驗證。
但是有提到這樣的攻擊
如果 Trudy 可以發送帶有 Alice 源地址的數據包,Trudy 可以在身份驗證後劫持連接
這似乎是身份驗證協議的普遍問題。即使第 1 步和第 2 步是安全的並且認證協議是安全的,在認證協議完成後,trudy 總能發動上述攻擊,不是嗎?此類問題如何處理?
這通常通過創建會話密鑰作為身份驗證過程的一部分來解決,然後對整個會話使用經過身份驗證的加密。這就是例如 TLS 的做法。即使攻擊者可以劫持連接,他們也沒有會話密鑰,因此無法生成有效數據。
會話密鑰可以以各種方式構造。例如,一個非常簡單的純對稱密鑰協議可以讓 Alice 生成一個隨機密鑰,使用該密鑰加密隨機數,使用長期密鑰加密會話密鑰。會話的其餘部分將使用會話密鑰進行加密和驗證。
在實踐中,使用 Diffie-Hellman 密鑰交換之類的東西是一個好主意,因為它可以讓您獲得前向保密等。
TL;DR:上述攻擊僅適用於明文連接。
Alice 和 Bob 共享一個密鑰。
如果是這種情況,您不應該推出自己的協議。只需依靠TLS及其PSK密碼套件的強大功能 - 最好是那些通過使用 (EC) DHE 交換來提供前向保密的密碼套件。
當且僅當雙方共享相同的密鑰時,TLS 握手才會成功,並且任何一方標識的任何內容都必須使用該方的會話密鑰進行加密和驗證。因此,如果 Trudy 使用 Alice 的源地址(但不使用 Alice 的會話密鑰)發送一些消息,則 MAC 驗證將失敗,並且連接將被中止,因為已註冊攻擊。
此類問題如何處理?
如果您確實部署了自定義身份驗證協議,則應始終通過 TLS(伺服器身份驗證或機會主義)執行它們。這允許您將給定方 (Alice) 與特定 TLS 連接的給定另一端相關聯。如果任何“來自該方”的東西沒有使用正確的密鑰,MAC 驗證將失敗並且連接將被丟棄。
我很好奇我描述的攻擊的性質
該攻擊通過欺騙源地址來進行。如果沒有適當的應對措施,並且攻擊者獲得了 Alice 的源(IP)地址,那麼如果 Alice 只被她的源地址辨識(而不是擁有密鑰甚至 cookie),他就可以作為 Alice 發送任意請求。然而,這些請求的答案仍將發送給真正的 Alice(除非攻擊者通過充當中間人以巧妙的方式攻擊身份驗證協議),但它們仍然會造成傷害。