網路安全

中間人攻擊(man-in-the-middle attack)

想像你透過中間一位同學傳紙條給朋友。你信任他會忠實轉交——但假設他偷偷讀了每一張紙條,甚至在轉交前改寫了一些,同時對你們兩人都說對方同意了。你們倆都沒察覺迴路裡還有第三方。中間人攻擊(MITM)正是如此:攻擊者偷偷把自己安插在兩方之間,一邊轉送他們的訊息、一邊讀取甚至可能改動它們,讓雙方都以為自己在直接跟對方交談。

它的運作方式是對雙方各自冒充對方。典型的網頁中間人攻擊是這樣:攻擊者先擠進路徑上(在區域網路用 ARP 欺騙、架設惡意 Wi-Fi 存取點,或用 DNS 欺騙)。當你試圖連到某網站,攻擊者裝成伺服器來回應你,同時又裝成你去連真正的伺服器。於是存在兩條看起來都加密的連線——你對攻擊者、攻擊者對伺服器——而攻擊者坐在中間,能在資料經過時以明文讀到一切。整個把戲都仰賴你沒有去驗證對端的真實身分。

為什麼重要:中間人攻擊正是「為什麼光加密不夠、鑑別不可或缺」的理由。對「你連到的不管是誰」加密,如果那一方就是攻擊者,那就毫無價值。TLS 擊敗中間人的方式,是讓伺服器出示一張由可信機構簽署、把它的身分綁到它公開金鑰上的憑證——如果攻擊者拿不出真正網站的有效憑證,你的瀏覽器就會拒絕或警告。這也是為什麼憑證警告很重要、為什麼一路點掉它們、或信任一個要你安裝它自己「根憑證」的網路,都可能把中間那個位子拱手讓給攻擊者。

在咖啡店 Wi-Fi 上,攻擊者用 ARP 欺騙讓你的筆電把所有流量都經過他的機器。他攔截你連到銀行的請求並試圖冒充銀行。因為銀行使用 HTTPS、而攻擊者無法偽造有效的憑證,你的瀏覽器顯示了安全警告而不是放他進來——憑證檢查擋下了這場中間人攻擊。

光有加密還不夠;身分必須被驗證。

一個常見誤解:「它有加密,所以安全。」加密能防止聆聽,卻防不了一個你誤把它當成對端的攻擊者。擊敗中間人需要驗證對端的身分——這正是憑證所做的事。

又稱
MITMMitMon-path attack中間人攻擊介於中間攻擊