香港國安法通過,全民反監控。常用通訊軟體哪個最安全?

這篇比較了五款台灣最常用的通訊軟體 Facebook Messenger、Line、WhatsApp、Telegram 跟 Signal 評估後的結果,請大家參考!
評論
Photo Credit: Shutterstock/ 達志影像
Photo Credit: Shutterstock/ 達志影像
評論

本文來自 podcast 頻道《我們與駭的距離 The Hacks Between Us》,INSIDE 取得團隊同意後並依照使用創用 CC BY-NC-SA 4.0 授權轉載。

螢幕快照_2020-07-13_下午6_05_31
https://open.firstory.me/story/ckccnckzi691h0918lhu6agwz

Update: 2020/07/10 原先內容有誤,Line 的語音也有支援點對點加密了。

隨著香港國安法在 7 月 1 日正式生效,我陸陸續續收到一些朋友的問題想了解到底用什麼通訊軟體比較安全、可以降低被監控的風險,於是決定用這篇來告訴大家到底要怎麼判斷一個通訊軟體安不安全,以及我比較了五款台灣最常用的通訊軟體 Facebook Messenger、Line、WhatsApp、Telegram 跟 Signal 評估後的結果。

怎麼看一個通訊軟體安不安全?

我在評估軟體的資訊安全時,會同時考慮到資料的安全性跟使用者的隱私,在這裡我把其中比較常被考量的因素分為兩大類:技術層面跟組織政策層面。

技術層面

技術層面會考量的點包含了:

  • 是否支持點對點加密?點對點加密的演算法
  • 預設是否開啟點對點加密?
  • 程式碼是否開源?
  • 伺服器是否會備份訊息資料?
  • 是否有身份認證的機制?
  • 是否有自動通知金鑰變更機制?

過去通訊軟體為了提供訊息備份的功能,會在伺服器端解密使用者的訊息儲存,這樣的壞處是通訊軟體能看到訊息的內容,使用者比較沒有隱私,將訊息存放在雲端也讓雲端伺服器成為駭客的目標,握有解密金鑰的通訊軟體公司也可能被政府要求交出金鑰。

隨著大眾的安全與隱私意識上漲點對點加密就成為了一種更受歡迎的加密方式。這是一種只有收發訊息兩端可以加密與解密訊息的溝通方式,優點是解密後的訊息只會保存在用戶端,安全性跟隱私性較高,所以目前很多通訊軟體都主打點對點加密通訊。

不過,點對點加密並不是無敵,即使都是點對點加密,使用哪一種點對點加密機制也會影響安全性,並不是每一種點對點加密機制都一樣安全。而且,點對點加密還是有遭受中間人攻擊的危險,這也是為什麼點對點加密應該要搭配身份認證機制自動通知金鑰變更的功能才更加安全。

另外,有一些通訊軟體雖然有這個功能但預設卻是沒有開啟,讓很多使用者在不知情下使用了沒有使用點對點加密的通訊方式,比如 Telegram 跟 Facebook Messenger。

此外,當通訊軟體強調自己有許多安全保護機制時,如果沒有把程式碼開源(公開)的話,所有保障安全的說法都是無法受到大眾檢驗的,因此相對於不公開原始碼的通訊軟體來說,開源的通訊軟體在安全性上比較有保障。

組織與政策層面

資訊安全的問題往往不只牽扯到技術面,也很常牽扯到很多組織政策與政治面的問題。在檢視資料安全性跟隱私性的時候,通常也會評估以下的因素:

  • 是否為營利組織?組織的資金及獲利模式
  • 公司是否配合國家政府或執法單位提供資料
  • 有可能會提供給政府的資料

注重資訊安全的使用者需要養成一種習慣,在把資料交出去時先想想能不能信任那個公司/組織。營利組織不會免費提供服務,當服務免費的時候,通常使用者付出的就是他們的資料,很多服務的盈利模式是利用分析使用者的數據去推銷廣告或是做其他用途,所以使用者資訊對他們來說就是直接影響獲利的資源,在這樣的狀況下,使用這種服務通常隱私性會比較低。

另外,對於一些主要需求是反政府監控的使用者來說,通訊軟體服務商會不會配合政府要求交出使用者資料就是一個重要的考量點。通常服務提供商必須要符合當地法律才可以在那個地區提供服務,所以除非直接放棄業務(如 Google 和 Facebook 退出中國市場)否則通常都會配合法院要求,在這樣的狀況下,了解這些公司在配合調查時會提供什麼樣的資料也是一件重要的事情,做資安考量的時候就是要不斷作最壞的打算,假設資料真的被提供出去,監控者可以藉此掌控多少訊息也是一個關鍵的考量點。

比較常用通訊軟體的安全性

利用以上列出的考量因素,我花了很多時間去查比對目前台灣常用的幾家通訊軟體,包含 Facebook Messenger、Line、WhatsApp、Telegram 跟 Signal,分析這些結果之後將通訊軟體的安全度進行排名。不過這個排名是綜合了以上所有提到的因素,依照每個人的需求不同或許有不同的結論,所以我也把比較表放在下方。

1_aXkBxFKLD2mN4gctmmO8Rg
五種通訊軟體比較。安全度:紅 → 低, 橘 → 中, 綠 → 高

Note: WeChat 是已知受政府監控的軟體,在此不列入比較 。

以下依照安全程度低至高的排名做說明:

第五名:Facebook Messenger

761px-Facebook_Messenger_logo_svg

其實 Facebook Messenger 一直都沒有主打自己的安全功能,拿它來比較或許不太公平,不過因為台灣很多使用者而且也有人在問,就一起放進來了。Facebook Messenger 之所以落到最後一名,原因如下:

  • 支援點對點加密(悄悄話訊息),但預設不開啟
  • 群組對話不支援點對點加密
  • 備份使用者非悄悄話對話訊息
  • 程式碼不開源
  • 無自動通知金鑰更改的功能
  • 由營利組織營運,且公司有洩漏使用者資料的黑歷史 (劍橋事件
  • 會配合美國法院傳票調查交出以下訊息:名稱,開始使用的日期,最後查看訊息的時間,IP,email 地址。美國外的法院調查也有機會配合但沒有說明會交出那種資料。

第四名:Line

768px-LINE_logo_svg

Line 使用了 Letter Sealing 的獨創點對點加密機制,但並沒有詳細公開這個加密機制的細節,目前分析此機制的論文沒有發現特別弱點的,不過可能因為主要使用者在亞洲,也比較少對於此加密機制的討論。Line 使用者要注意的是,當配合法院要求調查時,他提供的資訊相較於其他通訊軟體是最多的。

  • 語音跟文字都支援點對點加密
  • 群組 50人以上不支援點對點加密
  • 程式碼非開源
  • 無自動檢查金鑰變更通知
  • 接受法院調查時提供以下資料:註冊信息(個人資料圖像,顯示名稱,電子郵件地址,電話號碼,LINE ID,註冊日期等),指定用戶的通信數據(消息發送日期,發送者的IP地址),沒有加密的文字聊天訊息 (預設是加密,所以如果被關掉了文字訊息會被保存)

第三名:Telegram

1024px-Telegram_logo_svg

最近台灣很多使用者認為 Line 不安全轉向使用 Telegram,但比較發現其實安全程度以技術層面來看並沒有好很多。Telegram 的問題如下:

  • 支援點對點加密,但預設不開啟
  • 群組不支援點對點加密
  • 使用的點對點加密機制 MTProto 雖然舉辦破解比賽多年無人破解,但被很多密碼學學者資安研究員指出不夠安全 (我不是密碼學家無法驗證,但其他通訊軟體沒有被這麼多人質疑所以這個列入疑慮)
  • 會備份非點對點加密的訊息
  • 程式碼僅客戶端開源,伺服器端沒有開源
  • 若有法院通知與恐怖份子行為有關會配合交出IP位址跟電話號碼 (公開時會通知在一個群組,目前聲稱沒有提供過任何資料)

第二名:WhatsApp

766px-WhatsApp_svg

全球使用用戶很多的 WhatsApp 在技術上安全性其實並不差,預設提供點對點加密,並且使用的是跟 Signal 一樣的 Signal Protocal 點對點加密機制。另外服務強調訊息並不會被備份,而且是少數通訊軟替中能做金鑰變更通知的(此功能需要手動開啟)。不過 WhatsApp 也存在以下問題:

  • 程式碼非開源
  • 由營利組織營運 (Facebook),且公司有洩漏使用者資料的黑歷史 (劍橋事件
  • 群組無法確認使用者金鑰
  • 會配合美國法院傳票調查交出以下訊息:名稱,開始使用的日期,最後查看訊息的時間,IP,email 地址。美國外的法院調查也有機會配合但沒有說明會交出那種資料。

第一名:Signal

Signal-696x392
source: https://signal.org/

Signal 因為被吹哨者 Edward Snowden (愛德華·史諾登) 表示自己在使用而吸引了很多使用者,不過經過比較後發現 Signal 並不是浪得虛名。 Signal 無論在技術面還是組織政策面都是相對較安全的通訊軟體,而且 Signal 由非營利組織營運,大家也不用擔心這是一篇業配。程式碼客戶端跟伺服器端完全開源,完全不備份使用者訊息,全部通訊(不只文字,語音也受到加密)預設皆為點對點加密,並且使用了備受多國密碼學研究員檢驗的 Signal Protocol ,支援身份驗證及自動金鑰變更通知。不過,Signal 也是會配合法院傳票提供資訊,但會在提供資料時公開在網頁上,Signal 表示因為根本沒有存使用者的訊息等等資料,唯一能提供的就是用戶註冊日期跟最後使用 App 的時間,這些提供的資料是這些比較的軟體中最少的,連 IP 地址都沒有提供給法院。

建議搭配 VPN (Virtual Private Network) 使用

由上面的分析可以知道,很多通訊軟體是有可能會配合法院傳票通知提供使用者的 IP 訊息,若有需要降低暴露真實通訊 IP 的需求建議搭配 VPN 使用。除此之外,在網路架構受到監管的地區,也可以降低被監控的風險。

至於如何使用 VPN 網路上有很多教學,這邊就不贅述,大家有問題也可以留言或私訊問我。

資訊保護及反監控不能只靠通訊軟體

最後我想要強調一個很重要的觀念,再安全的通訊軟體保護的都是訊息在傳輸過程中的安全,無法保護訊息在產生過程跟收到訊息後的安全。簡單來說就是,假設你的訊息在傳送過程中是安全的,但你的手機或是接收訊息的裝置已經被攻擊滲透,那用了再安全的通訊軟體都沒用。

因此,平常建立良好的使用習慣是很重要的,無論是手機還是電腦裝置,應該都要裝上防毒軟體,如果有需要使用一些高風險的 APP (例如需要使用 Wechat 跟客戶溝通),建議分開安裝在不同的裝置上。瀏覽網站跟收發簡訊及 Email 時都需要小心不知名的網址與附件。

補充知識:

什麼是點對點加密 (End-to-end encryption)

這個影片解釋得非常清楚:

在解釋什麼是點對點前,必須先解釋什麼不是點對點。我們知道訊息要能利用通訊軟體順利發送,中間是需要有一些通訊軟體的雲端伺服器(也就是郵差)幫我們做傳遞訊息的工作的,很多線上的服務為了要提供一些功能,必須保存使用者的訊息。比如當使用者在換新手機時,要用手機登入帳戶能看到之前用舊手機傳的訊息就必須被保存在通訊軟體的雲端伺服器,如果雲端伺服器無法知道訊息內容是什麼的話,就沒辦法提供這個服務。

所以為了要讓伺服器能保存訊息,傳統上很多服務是使用客戶端到伺服器端加密 ( client to server encryption) 的方式在進行通訊,也就是伺服器必須有可以解密訊息的鑰匙,訊息加密後傳送到雲端伺服器被解密,之後伺服器端再加密一次傳到收訊端。這種雲端伺服器可以解密又加密的通訊方式就不是點對點加密。

用這種方式傳遞訊息讓伺服器端可以解密訊息看到內容(也就是郵差會看到你傳了什麼訊息),也有能力保存,從一個角度來看這是一種功能 (feature) ,可以讓使用者輕鬆的在不同裝置存取訊息。但站在隱私的角度來看,這就是一個缺點,雲端的伺服器變成一個需要被信任的對象跟可能被攻擊的中心點,駭客只要利用各種工法取得在雲端伺服器的資料,就可以得到使用者的對話內容跟其他資料。

隨著使用者越來越注重隱私,為了要消除這個弱點,點對點加密就成了更受歡迎的一種通訊加密方式,利用這種加密方式,只有訊息發送方跟接受方可以知道訊息真實內容,以技術上來說,就表示只有收發兩方擁有可以解密的鑰匙,加密跟解密的行為也只有收發兩端會進行。

看到這裡你應該就能明白為什麼很多通訊軟體在轉換裝置的時候需要使用者手動備份對話紀錄 (比如 Line),這就是因為伺服器端並沒辦法解密你的對話紀錄也沒有保存。基本上這個功能跟隱私性是互斥的,為了要讓用戶保有隱私就必須捨棄這個功能羅!

什麼是身份認證機制?

點對點的加密機制是怎麼讓訊息在被伺服器傳送的時候也不會被解密呢?這需要用到密碼學上的非對稱式加密演算法 (Asymmetric Encryption)。

上面這個影片解釋得蠻清楚的。我自己喜歡用一個例子解釋,大家可以想像小時候玩的交換日記,為了不被別人偷看,小時候我都會去書局買那種上面有鎖跟鑰匙的日記本,通常這種日記本都會付兩把鑰匙,我就可以把其中一把交給要跟我玩交換日記的朋友,這樣他收到我的日記就可以用那把鑰匙打開。

假設我沒辦法當面把鑰匙交給我朋友而要請朋友幫忙轉交的話,就會有鑰匙被朋友拿去複製一份的風險。這時候我使用了相反的方法,把鎖頭拿去請朋友交換,在收到朋友的鎖頭後,就用我的鎖頭鎖起來,再請朋友拿給我,這樣朋友從頭到尾都沒拿到鑰匙也不能解鎖了。這樣就是一種非對稱式加密!

但這樣做還有一個漏洞,假設朋友一開始在幫我們交換鎖頭的時候,自己去買了兩個鎖頭掉包,讓我跟朋友以為是對方的鎖頭而用它來鎖住筆記本,這樣之後朋友在幫我們傳日記的時候還是可以打開。

那有什麼方法可以知道這個鎖頭是不是被調包了呢?這就是我們這裡要說的身份認證機制,目前最安全的身份認證方法,就是在通訊前當面或是利用其他管道雙方確認這把鑰匙是不是屬於對方的。這把鑰匙通常會在通訊軟體裡面以一個代碼顯示,在不同通訊軟體又不同的名稱,比如 fingerprint、security number 等等。在確認鑰匙的時候通常會比對這個代碼做確認,比如下方是 Signal 顯示的身份代碼。

1_kgxpPTBANyTyK1O6Vy9ATQ
在 Signal 中顯示的身份號碼 source: https://signal.org/blog/safety-number-updates/

這個身份代碼在是隨裝置改變的,所以如果換了裝置或是重新安裝,這個代碼都會改變,所以如果使用者沒有變更裝置卻改變了代碼,就有可能是對方的帳號被盜取。

自動通知金鑰(代碼)變更

你或許會想到,就算是當面先確認鑰匙,有人會這麼勤勞每次傳訊息都檢查一下鑰匙一不一樣嗎?相信 90% 以上的人都不會這麼勤勞。所以這時候自動通知的功能就很有用了,較安全的通訊軟體會自動在這個身份變更的時候在對話中通知,當發現這個訊息代碼長的跟一開始不一樣,就馬上發出變更的通知,這樣可以讓安全性多出一層保障。下圖是的 Signal 中自動通知的訊息。

1_21Iuu0PfeobwRCZELqDA_Q
source: https://signal.org/blog/safety-number-updates/

這篇分享的內容對你有幫助嗎?歡迎大家留言告訴我!

對資安議題有興趣的話,不要忘記 Follow 我們的 Podcast 跟社群平台喔~

責任編輯:Chris
核稿編輯:李柏鋒




精選熱門好工作

產品企劃

皇博數位有限公司
高雄市.台灣

獎勵 NT$15,000

Account Executive 專案執行〔集團〕

Cheil PengTai Taiwan
臺北市.台灣

獎勵 NT$15,000

DevOps / SRE 工程師

創順科技有限公司
臺北市.台灣

獎勵 NT$15,000