中間人攻擊（，縮寫：）在密碼學和計算機安全領域中是指攻擊者與通訊的兩端分別建立獨立的聯絡，並交換其所收到的資料，使通訊的兩端認為他們正在透過一個私密的連線與對方直接對話，但事實上整個會話都被攻擊者完全控制。在中間人攻擊中，攻擊者可以攔截通訊雙方的通話並插入新的內容。在許多情況下這是很簡單的（例如，在一個未加密的 WiFi 無線接入點的接受範圍內的中間人攻擊者，可以將自己作為一箇中間人插入這個網路）。 一箇中間人攻擊能成功的前提條件是攻擊者能將自己偽裝成每一個參與會話的終端，並且不被其他終端識破。中間人攻擊是一個（缺乏）相互認證的攻擊。大多數的加密協議都專門加入了一些特殊的認證方法以阻止中間人攻擊。例如，SSL 協議可以驗證參與通訊的一方或雙方使用的證書是否是由權威的受信任的數字證書認證機構頒發，並且能執行雙向身份認證。 特性 中間人攻擊需要透過一個安全的通道做額外的傳輸。與連鎖協議不同，所有能抵禦中間人攻擊的加密系統都需要透過一個來傳輸或交換一些額外的資訊。為了滿足不同安全通道的不同安全需求，許多已經被研究了出來。 攻擊示例 假設愛麗絲（Alice）希望與鮑伯（Bob）通訊。同時，馬洛裡（Mallory）希望攔截竊會話以進行竊聽並可能在某些時候傳送給鮑伯一個虛假的訊息。 首先，愛麗絲會向鮑伯索取他的公鑰。如果 Bob 將他的公鑰傳送給 Alice，並且此時馬洛裡能夠攔截到這個公鑰，就可以實施中間人攻擊。馬洛裡傳送給愛麗絲一個偽造的訊息，聲稱自己是鮑伯，並且附上了馬洛裡自己的公鑰（而不是鮑伯的）。 愛麗絲收到公鑰後相信這個公鑰是鮑伯的，於是愛麗絲將她的訊息用馬洛裡的公鑰（愛麗絲以為是鮑伯的）加密，並將加密後的訊息回給鮑伯。馬洛裡再次截獲愛麗絲回給鮑伯的訊息，並使用馬洛裡自己的私鑰對訊息進行解密，如果馬洛裡願意，她也可以對訊息進行修改，然後馬洛裡使用鮑伯原先發給愛麗絲的公鑰對訊息再次加密。當鮑伯收到新加密後的訊息時，他會相信這是從愛麗絲那裡發來的訊息。 1 愛麗絲 zhhans 發；zhhant 發 送給鮑伯一條訊息，卻被馬洛裡截獲： 2 馬洛裡將這條截獲的訊息轉送給鮑伯；此時鮑伯並無法分辨這條訊息是否從真的愛麗絲那裡發來的： 3 鮑伯回應愛麗絲的訊息，並附上了他的公鑰： 4 馬洛裡用自己的金鑰替換了訊息中鮑伯的金鑰，並將訊息轉發給愛麗絲，聲稱這是鮑伯的公鑰： 5 愛麗絲用她以為是鮑伯的公鑰加密了她的訊息，以為只有鮑伯才能讀到它： 6 然而，由於這個訊息實際上是用馬洛裡的金鑰加密的，所以馬洛裡可以解密它，閱讀它，並在願意的時候修改它。他使用鮑伯的金鑰重新加密，並將重新加密後的訊息轉發給鮑伯： 7 鮑伯認為，這條訊息是經由安全的傳輸通道從愛麗絲那裡傳來的。 這個例子顯示了愛麗絲和鮑伯需要某種方法來確定他們是真正拿到了屬於對方的公鑰，而不是拿到來自攻擊者的公鑰。否則，這類攻擊一般都是可行的，在原理上，可以針對任何使用公鑰 金鑰技術的通訊訊息發起攻擊。幸運的是，有各種不同的技術可以幫助抵禦 MITM 攻擊。 防禦攻擊 許多抵禦中間人攻擊的技術基於以下認證技術： 公鑰基礎建設 在 PKI 方案中，主要防禦中間人攻擊的方案就是 PKI 的相互認證的機制。這樣的機制由應用程式驗證使用者，由使用者裝置驗證應用程式。但在使用某些不安全的應用的情況下，這不是很有用。因此，需要注意選擇正版軟體。 更強力的相互認證，例如： 金鑰（通常是高資訊熵的金鑰，從而更安全），或 密碼（通常是低的資訊熵的金鑰，從而降低安全性） 延遲測試，例如使用複雜加密雜湊函式進行計算以造成數十秒的延遲；如果雙方通常情況下都要花費 20 秒來計算，並且整個通訊花費了 60 秒計算才到達對方，這就能表明存在第三方中間人。 第二（安全的）通道的校驗 一次性密碼本可以對中間人攻擊免疫，這是在對一次密碼本的安全性和信任上建立的。公鑰體系的完整性通常必須以某種方式得到保障，但不需要進行保密。密碼和共享金鑰有額外的保密需求。公鑰可以由證書頒發機構驗證，這些公鑰透過安全的渠道（例如，隨 Web 瀏覽器或作業系統安裝）分發。公共金鑰也可以經由 Web 線上信任進行線上驗證，可以透過安全的途徑分發公鑰（例如，透過面對面的途徑分發公鑰）。 檢視金鑰交換協議以瞭解不同類別的使用不同金鑰形式或密碼以抵禦中間人攻擊的協議。 中間人攻擊的取證分析 從被懷疑是中間人攻擊的連結中捕捉網路資料包並進行分析可以確定是否存在中間人攻擊。在進行網路分析並對可疑的 SSL 中間人攻擊進行取證時，重要的分析證據包括： 遠端伺服器的 IP 地址 DNS 域名解析伺服器 X509 證書伺服器 證書是自簽名證書嗎？ 證書是由信任的頒發機構頒發的嗎？ 證書是否已被吊銷？ 證書最近被更改過嗎？ 在網際網路上的其他的客戶端是否也得到了相同的證書？ 其他的非加密的中間人攻擊 一個著名的非加密中間人攻擊的例子是貝爾金無線路由器 2003 年的某一個版本所造成的。它會週期性地接管透過它的 HTTP 連線，阻止資料包到達目的地。並將它自己對請求的回應作為應答返回。而它傳送的回應，則是在使用者原本應該顯示網頁的地方，顯示一個關於其他貝爾金產品的廣告。在遭到了解技術詳情的使用者的強烈抗議後，這個功能被貝爾金從路由器後續版本的韌體中刪除。 另一個典型的非加密中間人攻擊的例子是 圖靈色情農場。布賴恩華納說，這是垃圾郵件傳送者用來繞過驗證碼的 可以想象的攻擊。垃圾郵件傳送者設定了一個色情網站，而訪問這個色情網站需要使用者解決一些驗證問題。這些驗證問題實際上是其他網站的驗證問題。這樣就可以達到繞開網站驗證傳送垃圾郵件的目的。然而，Jeff Atwood 指出，這次襲擊僅僅是理論上的 沒有任何證據指出垃圾郵件傳送者曾經在 2006 年建立了圖靈色情農場。然而，2007 年 10 月有新聞報道稱，垃圾郵件傳送者確實建立了一個 Windows 遊戲，當用戶鍵入從雅虎收到的註冊郵箱驗證碼後，程式將獎勵使用者色情圖片。這將允許垃圾郵件傳送者建立臨時的免費電子郵件帳戶以傳送垃圾郵件。 實現 dsniff 一個實現 SSH 和 SSL 中間人攻擊的工具 Cain and Abel Windows 圖形介面的工具，它可以執行中間人攻擊，嗅探和 ARP 投毒 Ettercap 一個基於區域網的中間人攻擊工具 Karma 一個使用 80211 Evil Twin 以執行 MITM 攻擊的工具 AirJack 一個演示 80211 MITM 攻擊的工具 SSLStrip 一個基於 SSL 的 MITM 攻擊的工具。 SSLSniff 一個基於 SSL 的 MITM 攻擊的工具。原本是利用一個在 Internet Explorer 上缺陷實現的。 csploit 一個在 android 系統上實現的 MITM 攻擊工具包。 Mallory 一個透明的 TCP 和 UDP MiTMing 代理。擴充套件到 MITM SSL，SSH 和許多其他協議。 wsniff 一個 80211HTTP HTTPS 的基於 MITM 攻擊的工具 安裝在自動取款機銀行卡插槽上的附加讀卡器和安裝在鍵盤上的附加密碼記錄器。 zanti 一款在 android 系統上的多功能網路滲透包。 參見 瀏覽器中間人攻擊 一種網頁瀏覽器中間人攻擊 Boyinthebrowser 一個簡單的 Web 瀏覽器中間人攻擊 Aspidistra transmitter 英國二戰 入侵 行動中使用的無線電發射器，早期的中間人攻擊。 計算機安全 安全的計算機系統的設計。 安全性分析 在不完全知道加密方法的情況下破解加密後的資訊。 數字簽名 一個加密文字的真實性擔保，通常是一個只有筆者預計將能夠執行計算的結果。 聯鎖協議 一個特定的協議，在金鑰可能已經失密的情況下，規避可能發生的中間人攻擊。 金鑰管理 如何管理金鑰，包括生成，交換和儲存金鑰。 金鑰協商協議 又稱金鑰交換協議，一個協商如何建立適合雙方通訊的金鑰的協議。 相互認證 如何溝通各方的信心建立在彼此的身份。 密碼認證金鑰協議 建立使用密碼鑰匙的協議。 量子密碼 量子力學的使用提供安全加密（老方法，而依靠單向函式）。 安全通道 一種在通訊中防截獲和防篡改的方式。 欺騙攻擊 HTTP 嚴格傳輸安全 HTTP 公鑰固定 哈薩克斯坦政府實行的中間人攻擊 參考資料 Z Category 電腦安全 Category 傳輸層安全協議