中間人攻擊
中間人攻擊(Man-in-the-middle attack,縮寫:MITM)在密碼學和計算機安全領域中是指攻擊者與通訊的兩端分別建立獨立的聯繫,並交換其所收到的數據,使通訊的兩端認為他們正在通過一個私密的連接與對方直接對話,但事實上整個會話都被攻擊者完全控制。在中間人攻擊中,攻擊者可以攔截通訊雙方的通話並插入新的內容。在許多情況下這是很簡單的(例如,在一個未加密的Wi-Fi 無線接入點[1] 的接受範圍內的中間人攻擊者,可以將自己作為一個中間人插入這個網絡)。
一個中間人攻擊能成功的前提條件是攻擊者能將自己偽裝成每一個參與會話的終端,並且不被其他終端識破。中間人攻擊是一個(缺乏)相互認證的攻擊。大多數的加密協議都專門加入了一些特殊的認證方法以阻止中間人攻擊。例如,SSL協議可以驗證參與通訊的一方或雙方使用的證書是否是由權威的受信任的數字證書認證機構頒發,並且能執行雙向身份認證。
目錄
攻擊示例
假設愛麗絲(Alice)希望與鮑伯(Bob)通信。同時,馬洛里(Mallory)希望攔截竊會話以進行竊聽並可能在某些時候傳送給鮑伯一個虛假的消息。
首先,愛麗絲會向鮑勃索取他的公鑰。如果Bob將他的公鑰發送給Alice,並且此時馬洛里能夠攔截到這個公鑰,就可以實施中間人攻擊。馬洛里發送給愛麗絲一個偽造的消息,聲稱自己是鮑伯,並且附上了馬洛里自己的公鑰(而不是鮑伯的)。
愛麗絲收到公鑰後相信這個公鑰是鮑伯的,於是愛麗絲將她的消息用馬洛里的公鑰(愛麗絲以為是鮑伯的)加密,並將加密後的消息回給鮑伯。馬洛里再次截獲愛麗絲回給鮑伯的消息,並使用馬洛里自己的私鑰對消息進行解密,如果馬洛里願意,她也可以對消息進行修改,然後馬洛里使用鮑伯原先發給愛麗絲的公鑰對消息再次加密。當鮑伯收到新加密後的消息時,他會相信這是從愛麗絲那裡發來的消息。
1.愛麗絲發送給鮑伯一條消息,卻被馬洛里截獲: 愛麗絲「嗨,鮑勃,我是愛麗絲。給我你的公鑰」 --> 馬洛里 鮑勃
2.馬洛里將這條截獲的消息轉送給鮑伯;此時鮑伯並無法分辨這條消息是否從真的愛麗絲那裡發來的: 愛麗絲 馬洛里「嗨,鮑勃,我是愛麗絲。給我你的公鑰」 --> 鮑伯
3.鮑伯回應愛麗絲的消息,並附上了他的公鑰: 愛麗絲 馬洛里<-- [鮑伯的公鑰]-- 鮑伯
4.馬洛里用自己的密鑰替換了消息中鮑伯的密鑰,並將消息轉發給愛麗絲,聲稱這是鮑伯的公鑰: 愛麗絲<-- [馬洛里的公鑰]-- 馬洛里 鮑勃
5.愛麗絲用她以為是鮑伯的公鑰加密了她的消息,以為只有鮑伯才能讀到它: 愛麗絲「我們在公共汽車站見面!」--[使用馬洛里的公鑰加密] --> 馬洛里 鮑勃
6.然而,由於這個消息實際上是用馬洛里的密鑰加密的,所以馬洛里可以解密它,閱讀它,並在願意的時候修改它。他使用鮑伯的密鑰重新加密,並將重新加密後的消息轉發給鮑伯: 愛麗絲 馬洛里「在家等我!」--[使用鮑伯的公鑰加密] --> 鮑伯
7.鮑勃認為,這條消息是經由安全的傳輸通道從愛麗絲那裡傳來的。
這個例子顯示了愛麗絲和鮑伯需要某種方法來確定他們是真正拿到了屬於對方的公鑰,而不是拿到來自攻擊者的公鑰。否則,這類攻擊一般都是可行的,在原理上,可以針對任何使用公鑰——密鑰技術的通訊消息發起攻擊。幸運的是,有各種不同的技術可以幫助抵禦MITM攻擊。
防禦攻擊
許多抵禦中間人攻擊的技術基於以下認證技術:
- 公鑰基礎建設
- 更強力的相互認證,例如:
- 密鑰(通常是高信息熵的密鑰,從而更安全),或
- 密碼(通常是低的信息熵的密鑰,從而降低安全性)
- 延遲測試,例如使用複雜加密哈希函數進行計算以造成數十秒的延遲;如果雙方通常情況下都要花費20秒來計算,並且整個通訊花費了60秒計算才到達對方,這就能表明存在第三方中間人。
- 第二(安全的)通道的校驗
- 一次性密碼本可以對中間人攻擊免疫,這是在對一次密碼本的安全性和信任上建立的。公鑰體系的完整性通常必須以某種方式得到保障,但不需要進行保密。密碼和共享密鑰有額外的保密需求。公鑰可以由證書頒發機構驗證,這些公鑰通過安全的渠道(例如,隨Web瀏覽器或操作系統安裝)分發。公共密鑰也可以經由Web在線信任進行在線驗證,可以通過安全的途徑分發公鑰(例如,通過面對面的途徑分發公鑰)。
查看密鑰交換協議以了解不同類別的使用不同密鑰形式或密碼以抵禦中間人攻擊的協議。
中間人攻擊的取證分析
從被懷疑是中間人攻擊的鏈接中捕捉網絡數據包並進行分析可以確定是否存在中間人攻擊。在進行網絡分析並對可疑的SSL中間人攻擊進行取證時,重要的分析證據包括:
- 遠程服務器的IP地址
- DNS域名解析服務器
- X.509證書服務器
- 證書是自簽名證書嗎?
- 證書是由信任的頒發機構頒發的嗎?
- 證書是否已被吊銷?
- 證書最近被更改過嗎?
- 在互聯網上的其他的客戶端是否也得到了相同的證書?
其他的非加密的中間人攻擊
一個著名的非加密中間人攻擊的例子是貝爾金無線路由器2003年的某一個版本所造成的。它會周期性地接管通過它的HTTP連接,阻止數據包到達目的地。並將它自己對請求的回應作為應答返回。而它發送的回應,則是在用戶原本應該顯示網頁的地方,顯示一個關於其他貝爾金產品的廣告。在遭到了解技術詳情的用戶的強烈抗議後,這個功能被貝爾金從路由器後續版本的固件中刪除。
另一個典型的非加密中間人攻擊的例子是「圖靈色情農場」。布賴恩·華納說,這是垃圾郵件發送者用來繞過驗證碼的「可以想象的攻擊」。垃圾郵件發送者設置了一個色情網站,而訪問這個色情網站需要用戶解決一些驗證問題。這些驗證問題實際上是其他網站的驗證問題。這樣就可以達到繞開網站驗證發送垃圾郵件的目的。然而,Jeff Atwood指出,這次襲擊僅僅是理論上的——沒有任何證據指出垃圾郵件發送者曾經在2006年建立了圖靈色情農場。然而,2007年10月有新聞報道稱,垃圾郵件發送者確實建立了一個Windows遊戲,當用戶鍵入從雅虎收到的註冊郵箱驗證碼後,程序將獎勵用戶色情圖片。這將允許垃圾郵件發送者創建臨時的免費電子郵件帳戶以發送垃圾郵件。