WhatsApp有安全漏洞? 別恐慌,先了解「中間人攻擊」是甚麼

WhatsApp有安全漏洞? 別恐慌,先了解「中間人攻擊」是甚麼
Photo Credit: RITCHIE B. TONGO / EPA / 達志影像
我們想讓你知道的是

日前有報道指WhatsApp存在安全漏洞,但有安全專家卻認為沒有問題,到底是怎麼一回事?

唸給你聽
powered by Cyberon

上星期五英國《衛報》刊出報道,指通訊軟件WhatsApp的「後門」容許該公司窺探用戶的加密訊息,引起安全恐慌。其後《衛報》更新報道,把「後門」改為「漏洞」。不少媒體如《香港01》《蘋果日報》《立場新聞》引述《衛報》的報道時,均指涉事設計乃「後門」或「安全漏洞」。

事情沒有這麼簡單。雖然理論上WhatsApp(及其母公司Facebook)可以使用有關設計來截取部份對話,但有安全專家指出,這根本不是「後門」或「漏洞」,而是考慮到用戶體驗的決定。

先介紹一下WhatsApp加密通訊的背景。致力推廣加密通訊、開發通訊軟件Signal的非牟利組織Open Whisper Systems(OWS)在2014年底宣佈跟WhatsApp合作,將Signal通訊協議移植到WhatsApp。去年4月OWS宣佈整合完成,用戶只要更新WhatsApp就可以使用「點對點加密」。

中間人攻擊

在「點對點加密」通訊中,假如Alice要傳訊息給Bob,她必須先用Bob提供的「公鑰」去把訊息加密,Bob收到加密訊息後,可以用只有她知道的「私鑰」去解密。(有關公鑰、私鑰可參考這篇文章。)

然而如果黑客Mallory想截取訊息,可以先欺騙Alice用Mallory的公鑰加密,這樣Mallory就可以解密讀取訊息,再用Bob的公鑰加密傳給Bob,偽裝成是Alice直接傳送的訊息,雙方都不知道Mallory存在。

1024px-Man_in_the_middle_attack_svg
Image Credit: Miraceti, CC BY-SA 3.0
中間人攻擊示意圖。

這種截取訊息手段被稱為「中間人攻擊」,是所有公鑰加密通訊系統——而不只是WhatsApp——都有可能遇到的攻擊。因此較好的加密通訊軟件,均會讓用戶能確認密鑰未經中間人修改,例如WhatsApp用戶可以在通話中驗證安全編碼。

今次的「漏洞」是甚麼?

加州大學柏克萊分校的密碼學及安全研究員Tobias Boelter發現,WhatsApp可以強制離線用戶(在通訊雙方不知情下)產生新的密鑰,然後讓發送訊息者以新密鑰加密訊息再傳送一次——但只適用於未標示為已傳送的訊息,換言之對方已接收的訊息不能重新加密再傳。

《衛報》指出,OWS的加密通訊軟件Signal沒有這個問題,在Signal中如果收訊人在離線時改變了密鑰(例如轉用了新電話),那麼原本的加密訊息就無法傳送,而發訊者會收到通知,不會自動重新傳送訊息。

而採用Signal協定的WhatsApp則修改設計,自動以新密鑰把訊息加密,然後再傳送出去。Boelter提出,假如WhatsApp伺服器只傳送訊息,但不發放「訊息已接收」的「雙剔」通知,那麼就可以利用這個漏洞取得一整段的通話內容。

WhatsApp的發言人回應時指出,用戶可以在設定中開啟「安全通知」(設定>帳號>安全性),當對方更改密鑰時就會在對話中顯示。又表示最常見的狀況是用戶換了新電話,或重新安裝WhatsApp,而在這些情況下他們希望確保訊息能傳送出去,因此採用上述設計。

安全專家︰並非後門

《衛報》的報道刊出後,OWS創辦人、有份設計Signal通訊協定及協助WhatsApp加密訊息的Moxie Marlinspike就批評報道的指控錯誤,因為該設計並非「後門」。

14480216525_9c35c21e3e_o
Photo Credit: John S. and James L. Knight Foundation, CC BY-SA 2.0
Moxie Marlinspike

他指出現實世界中,密鑰會在正常情況下更改——正如WhatsApp回應提到的換電話、重裝軟件——而這是加密系統需要處理的狀況。WhatsApp用戶可以選擇開啟通知,而且按照WhatsApp的用戶端軟件設計,伺服器方面無法得知用戶有否開啟通知、驗證安全碼。因此WhatsApp需要冒着被用戶發現的風險,才可以嘗試以「中間人攻擊」截取通訊內容。

Marlinspike亦強調,WhatsApp經小心設計,不會重新加密已發送的訊息,當出現「雙剔」標記後,就不能夠再要求重新傳送訊息,這阻止任何入侵WhatsApp伺服器的人竊取已傳送的訊息。

取捨問題

他指出所有加密通訊系統都會面對更換密鑰的問題,WhatsApp的處理手法並非「後門」或「漏洞」。唯一合理的問題是︰當用戶更換密鑰後,未接收的訊息應該自動重新加密再傳送,抑或要求用戶手動確認新密鑰?

Marlinspike解釋,基於WhatsApp用戶眾多,OWS認為該公司的決定恰當。他更指出,要求用戶手動確認新密鑰甚或有反效果,因為這將會令伺服器方面知道誰開啟了安全通知,從而知道可以攻擊哪些沒有開啟通知的用戶。

電子前線基金會(EFF)亦提到,其實WhatsApp需要就「安全但會遺失訊息」和「順利傳送訊息,但或會受中間人攻擊」中取捨,他們選擇了後者。任何通訊系統都必須就安全作出取捨,EFF指出即使有完美的安全通訊工具,假如因太難使用而無人問津,仍然沒有意義。

沒有絕對安全

假如你仍希望使用WhatsApp又重視私隱及安全,首先須確定已開啟安全通知,而每當在對話中見到安全編碼變更後,都再作驗證。這樣的話,即使WhatsApp或其他黑客意圖用中間人攻擊截取通訊,亦最多只可能得到離線時傳過的訊息,而且會被你在驗證安全編碼時發現。

這個世界上不會存在「絕對安全」的通訊工具,從你使用的電腦硬件、作業系統、通訊軟件等每一個環節都有機會出現漏洞,用戶應根據自己的狀況及威脅模型(threat model)去判斷使用哪一種軟件。

對一般用家而言,WhatsApp仍然是普遍、易用而且具一定安全保障的選擇。假如你需要更安全的通訊方法,也不是沒有其他替代軟件,例如Signal

相關文章︰

資料來源︰