# 10. 即時通訊應用泛論

# 1 IM 安全性與端到端加密

# 1.1 IM 安全性

即時通訊(Instant Messaging, IM)應用的安全包括【通信安全】、【雲端安全】和【終端安全】。

# 1.1.1 通信安全

【通信安全】是指信息傳輸過程中的安全。包括微信在內的即時通訊服務都在客戶端到伺服器端/伺服器端到客戶端的傳輸過程中對通訊內容加密。

# 1.1.2 雲端安全

【雲端安全】是指存儲在通訊服務商的雲端伺服器上的用家聊天記錄的安全性。【雲端安全】受到諸多因素的影響:

  • 服務商對用家數據的處置方式
    • 明文存儲/加密存儲
    • 集中存儲/分布式存儲
  • 服務商的用戶條款和私隱政策中對向第三方披露數據的規定
  • 服務商的透明度報告
  • 服務商的商業模式
    • 是否有出售用戶資料牟利的動機 ⋯⋯

就【雲端安全】而言,最安全的做法是在伺服器端不存儲任何聊天記錄(如 Signal、Telegram 私密模式的做法)

微信完全無【雲端安全】可言。結合歷年來中國警察憑藉微信聊天記錄監控、威脅維權人士和其他活動人士的新聞報導足以推斷,用家的聊天內容在微信後台明文裸奔。相信 QQ 等其他中資即時通訊軟體也存在一樣的問題。

# 1.1.3 終端安全

【終端安全】是指安裝即時通訊軟體的終端裝置的安全性,可分為【軟體安全】和【物理安全】。

【軟體安全】的例外是指終端裝置中存在【惡意軟體】,你的作業系統、即時通訊應用本身或者其他應用(比如 )存在後門,或者他人對你的設備擁有遠程登陸權限,你的通訊內容就可能會洩露。

【物理安全】的例外是指你的裝置落入了他人之手,如果你的設備沒有設定密碼、你被迫解鎖設備或者警察使用【取證設備】破解了系統防護,他們將能看到你的通訊內容,取證設備還可能恢復被刪除的聊天記錄。即時通訊軟體在移動裝置上的【物理安全】的脆弱性是由移動裝置及移動作業系統本身的脆弱性決定的。任何通訊軟體都無法保證【物理安全】。

參見:
– 微信
Solidot | 騰訊的QQ和微信被指毫無隱私 (opens new window)(2016-10-22)
Solidot | 微信有隱私嗎? (opens new window)(2018-01-08)
中國數字時代|【立此存照】網安部門監控清華大學學生組織的報告書 (opens new window) (2017-12-04)
Solidot|微信監視所有用戶的內容 (opens new window) (2020-05-08)
– 學習強國
BBC News|China's Study the Great Nation app 'enables spying via back door' (opens new window) (2019-10-14)

# 1.2 什麼是端到端加密

实际上端到端加密和非端到端的加密可能使用的相同的算法(包括对称加密:AES,非对称加密:RSA),但端到端加密这么值得推崇的价值就在于它带来的社会层面的应用:让密钥跟着用户走,除了密钥的所有者谁也无法掌控TA的密钥,就像物理世界里的钥匙一样。

很多安全软件服务商或开发者也为了更易用(或者有其他目的?)而对用户的密钥代为生成、管理(有时甚至不告诉用户关于TA的密钥的事)。这样就使得「端到端」的意义丧失,跟非端到端的技术没有区别了。服务商说,他使用的是端到端技术,说没有其他人(包括他们自己)能控制得了你的密钥,但你能做什么呢?你只能靠道义上的信任了。毕竟你的密钥是人家给你生成的,也放置在人家的服务器上。

——Matters|UglyBull:你真的了解端到端加密麼? (opens new window)

【端到端加密】是指只有通信的雙方能夠解密通信内容,包括通信服務提供者在內的第三方都不掌握密鑰,無法解密通信內容。如今「端到端加密」概念被廠商廣泛用於廣告宣傳中,但它並不是衡量使用一款即時通訊應用是否安全的唯一標準。

【端到端加密】實質上是一種密鑰的分發和管理方法,所解決的是【雲端安全】和用家對通信服務商的信任問題,它能否真正發揮作用取決於服務商的做法。

# 2 三種加密模式對比

# 2.1 Telegram 模式

Telegram 支援【端到端加密】但默認不開啟而受到詬病。然而,「沒有端到端加密」並不等於「不加密」,Telegram 默認的 Cloud Chats(普通模式)採用的「客戶端對伺服器端/伺服器端對客戶端加密」(Client to Server/Server to Client Encryption),且使用與【端到端加密】模式相同的 MTProto (opens new window) 協議加密傳輸,聊天記錄存儲在雲端伺服器上並支援【多設備同步】。Secret Chats(私密模式)基於【端到端加密】,通訊只建立在兩台終端設備之間,伺服器本身不留存任何數據,因此也不支援聊天記錄備份和【多設備同步】。

# 2.2 WhatsApp 模式

WhatsApp 採用【默認端到端加密】(Always End-to-End Encrypted),同時允許用家將聊天記錄備份到 iCloud、Google Drive 雲端,以便用家更換設備時從雲端下載之前的聊天記錄,但不支援【多設備同步】。然而,即便是加密存儲在伺服器上的數據在政府部門和黑客面前是很脆弱的,另外這也意味著 WhatsApp 有能力解密用家的聊天記錄,這就完全消解了「端到端加密」的意義。

# 2.3 Signal 模式

Signal 同樣採用【默認端到端加密】,同時不支援雲備份聊天記錄和多設備同步,在選擇隱私與安全的同時捨棄了便利。

# 3 IM 的選擇建議

# 3.1 選擇 IM 的參考因素

基礎:

  • 免費
  • 支援全平台客戶端
  • 連接速度快
  • 客戶端開源
  • 不依賴監控資本主義商業模式
  • 服務提供者的聲譽
    • 無重大安全漏洞
    • 無重大數據洩露事件
    • 拒絕配合專制政權【網絡審查】
    • 拒絕配合【大規模網絡監控】
      加分項:
  • 支援多設備同步
  • 通信協議開源且經過審計
  • 無重大宕機事件
  • 無需提供手機號或電子郵箱註冊
  • 不記錄元數據
  • 功能豐富

參見:
柳長風:「小白向即時通訊工具(IM)指北」 (opens new window) (2020-07-09)
ProtonMail Blog | Best WhatsApp alternatives that respect your privacy (opens new window) (2021-02-15)

# 2.2 為什麼不推薦 WhatsApp

  • 【雲備份】與【端到端加密】衝突
  • 客戶端不開源
  • 頻繁爆出【後門】等安全醜聞
  • 收集大量元數據
  • 母公司商業模式與私隱保護衝突
    • 母公司是 Facebook,依賴廣告業務(向廣告商出售用戶數據牟利)
  • 服務條款模糊不清

參見:
Slate | How Did the FBI Access Paul Manafort’s Encrypted Messages? (opens new window) (2018-06-05)
Telegraph - Pavel Durov | Why WhatsApp Will Never Be Secure (opens new window) (2019-05-15)
Solidot | NSO 被指入侵 WhatsApp,监视美国盟国的高官 (opens new window) (2019-11-01)
Pavel Durov|A New Backdoor Was Quietly Found In WhatsApp (opens new window) (2019-11-20)
Solidot | Jeff Bezos 的手机曾被沙特王储入侵 (opens new window) (2020-01-22)
Telegraph - Pavel Durov | Why Using WhatsApp Is Dangerous (opens new window) (2020-01-30)
Solidot|因服務條款更新 WhatsApp 失去了數百萬用戶 (opens new window) (2021-01-25)

# 2.3 為什麼不推薦 Signal

相比 Telegram,Signal 的優勢在於:

  • *默認端到端加密(至少保護了那些不明白加密原理和軟體功能的用家)
  • 使用開源、經過專家審計的 Signal 協議
  • 伺服器端開源

Signal 在安全性相比 Telegram 略有優勢但不明顯,在追求【端到端加密】的同時完全犧牲了雲存儲和多設備同步的功能,使其在【可用性】上遠遜於 Telegram,這一點決定了 Signal 無法成為大眾流行即時通訊應用。(封殺 Telegram 的國家遠多於封殺 Signal 的國家。中國在 2015 年 7 月封鎖了 Telegram,遲至 2021 年 3 月才封鎖了 Signal)

補充信息:

2021 年 1 月初 WhatsApp 宣布修改私隱條款後大量 WhatsApp 用家湧入 Telegram 和 Signal,同樣在中心化伺服器模式下,Signal 因服務容量過載而出現了長時間的宕機,而 Telegram 則沒有出現這樣的問題。

對了應對伊朗的封鎖,Signal 推出了自己的 TLS 代理 (opens new window),但很快被指出存在未將全部流量路由到代理、將導致用家 IP 暴露的問題。Signal 無視漏洞並在 GitHub 和論壇對提出問題的研究者刪帖禁言,由此引發爭議。

參見:
Bloomberg|Why WhatsApp’s New Privacy Rules Are Sparking Alarm (opens new window) (2021-01-11)
– Signal 代理相關的醜聞:
Solidot|Signal 無視代理漏洞,稱“這不是風險” (opens new window) (2021-02-08)
Solidot|研究人員發現 Signal 的 TLS 代理會洩漏 DNS 和 API 請求 (opens new window) (2021-02-09)
Solidot|FOSS News:Signal 本應更好地回應反審查社區 (opens new window) (2021-02-18)
Solidot|Signal 被屏蔽 (opens new window) (2021-03-16)

# 2.4 我該使用 Telegram 嗎

# 2.4.1 有條件地推薦 Telegram

相比 WhatsApp 和 Signal,Telegram 較好地平衡了【安全性】和【可用性】/私隱與便利;無人數上限的頻道使 Telegram 在信息傳播上有著同類產品無可比擬的優勢。綜合功能、私隱、使用門檻和用家規模等方面來看,Telegram 是最有能力取代微信和 WhatsApp 的大眾流行即時通訊應用。不過 Telegram 在安全與私隱上也並非十全十美,而只是當前條件下的最優選。

考慮到在中國等數字極權國家普及 Telegram 面臨的困難:

  • 來自 GFW 的【網絡封鎖】
  • 【實名制】手機號帶來的安全隱患

(Telegram 和 WhatsApp、Signal 都要求使用手機號碼註冊,沒有考慮到【匿名性】需求。使用不記名手機號可以提高追溯難度,但並不等於完全匿名)

本作品僅向同時符合下列三個條件的人士推薦 Telegram:

  • 能夠自由訪問國際互聯網(熟練掌握翻牆能力,或身處無網絡封鎖國家)
  • 擁有/能以低成本獲取【不記名手機號】
  • 已通讀官網 FAQ (opens new window)

事實上選擇使用即時通訊軟體本身就是對安全的妥協,最安全的做法莫過於徹底不用。至於一款即時通訊軟體到底有多安全,除了軟體本身的設計上,還取決於用家的使用方法和使用場景。

有鑑於 Telegram【匿名性】不佳——手機號帶來的實名隱患、(至少在移動端)不支援使用 Tor 作代理——無論你是否使用不記名手機號註冊 Telegram,都不建議在 Telegram 公海/群組聊天中討論政治敏感話題。(Telegram 公海/群組並不適合作為網絡論壇的替代品,其原因除安全隱患外,還在於群組人數上限高達 20 萬,多人同時發送消息容易導致連續刷屏,使其他成員信息過載,也使群組難以專注討論特定話題。如需公開討論政治敏感話題,建議轉往 2047 (opens new window)諾德之海 (opens new window)XsDen (opens new window)(粵語)等匿名友好的網絡論壇進行,並且至少使用 Proxy+Tor【雙重代理】)

如果你仍選擇使用 +86 等【實名制】手機號註冊的 Telegram,建議你將任何陌生帳號都當成網警來防範,

  • 避免在任何群組中發言
  • 多使用刪除功能、私密模式並開啟閱後即焚,盡可能少保留敏感信息
  • 只將帳號用於與熟人的一對一私聊、關注頻道接受資訊

# 2.4.2 Telegram 是否值得信任

Telegram 的【可用性】——快速、多設備同步、支援大容量文件傳輸(2 GB)、超高人數上限(200, 000 人)的公開群組、本地磁盤空間零佔用等特性均高度依賴【雲服務】,用家在以非【端到端加密】模式使用 Telegram 時的安全性都建立在對 Telegram 服務提供者及其伺服器的信任上。那麼 Telegram 是否值得信任呢?

# 得分項
  • Telegram 客戶端、加密通信協議、API 開源
  • Telegram 的運營模式
    • 2013-2021年,非營利
      • 開支由創始人 Durov 個人承擔
    • 2021年- (opens new window)
      • 普通用家永久免費,推出面向企業的付費版
      • 在公開頻道引入私隱友好的廣告平台
  • Telegram 私隱政策中對向執法部門披露信息的規定 (opens new window)
    • 僅在法院命令下,披露恐怖主義犯罪嫌疑人的 IP 地址和手機號碼
  • Telegram 因拒絕配合極權/威權政權的【網絡監控】和【網絡審查】政策,在伊朗、俄羅斯、中國等多國被封鎖
  • Durov 聲稱美國情報機構曾試圖賄賂 Telegram 開發者以弱化加密和植入後門
  • Telegram 尚未因加密協議被破解或伺服器遭攻擊而造成用家聊天記錄洩漏
  • 學者在驗證了 MTProto 2.0 的安全性(見論文 (opens new window)
# 安全性爭議

(附部分解讀)

  • 默認未開啟兩步驗證(2FA)
    • SS7 攻擊可攔截基於 SMS 短訊驗證碼侵入帳戶
  • 默認不開啟端到端加密
    • (上文已提及)
  • 群聊不支援端到端加密
    • 群聊端到端加密的意義不大,只要有特務潛入群組就能看到整個群組的聊天內容
  • 伺服器端不開源
    • Telegram CEO Pavel Durov 本人的回應 (opens new window):開源伺服器端無助於保障私隱。與客戶端不同,用家無法驗證公開的源代碼與實際運行在伺服器上的代碼是同一套代碼
  • 自有加密通信協議 MTProto (opens new window) 相關的爭議
  • Desktop 版和網頁版不支援端到端加密
  • 暴露在線時間
    • 設置僅支援模糊化「上次在線時間」(Last Seen) ,已讀標記、正在輸入 (typing) 及在線狀態 (online) 無法關閉(用家閱讀消息、輸入內容和發送消息後的 30 秒內會被自動顯示為 online)——攻擊者可以通過對話獲取用家的在線時間
    • 使用建議:如遇不明身份人士主動搭話,直接將其封鎖
  • Availability Exploit
    • 他人可通過將手機號導入通訊錄的方式檢測該號碼是否註冊了 Telegram
    • Telegram 在 2016 年調整了 API 後阻止了大規模檢測 (mass check) ,但仍無法阻止小範圍的檢測
  • 收集元數據
    • 【元數據】包括用家的 IP 地址、通信的對象、通信的時間等
      • 真實 IP 地址可以使用 VPN 等單層代理隱藏,在桌面級裝置上可以使用 Tor 作代理實現更高強度的匿名
  • Telegram 的數據洩漏事件
    • 大規模的數據洩漏內容均為用戶名和手機號碼,獲取手段包括 Availability Exploit/Mass Check 和誘使用家使用伊朗政府控制的非官方客戶端
    • 聊天記錄的洩露由終端安裝惡意軟體或帳號因未開啟 2FA 被入侵造成,與協議和伺服器無關
  • 公司實際運營地從德國柏林遷往阿聯酋迪拜
    • 阿聯酋人權記錄惡劣

參見:
Wikipedia - Telegram_(software) - #Security (opens new window)
Telegram Blog | Keep Calm and Send Telegrams! (opens new window) (2016-08-02)
Security Analysis of Telegram - courses.csail.mit.edu (opens new window) (2017)

# 3 匿名友好型即時通訊應用

# 3.1 Element

Element (opens new window)(原名 Riot.im)是一款基於 Matrix (opens new window) 協議、自由開源的即時通訊客戶端。

特性:

  • 自由開源軟體(FOSS)
  • 無需提供手機號或電子郵箱註冊
  • 支援全平台客戶端
  • 支援端到端加密
  • 聯邦式的去中心化設計(使其更難被徹底封殺)
  • 免翻牆使用(暫時)

Element 网页版 (opens new window) 可以配合 Tor Browser 使用,實現基於 Tor 的高強度匿名。

法國政府開發了基於 Riot(Element 的前身)的 Tchap (opens new window) 供內部使用。參見:Solidot|法國政府發布它開發的端對端加密加密消息應用 (opens new window) (2019-04-20)

參見:
2047|沉默的廣場:用Matrix進行匿名加密的私聊 (opens new window) (2020-12-19)

# 3.2 Jami

Jami (opens new window) 是一款基於 P2P、自由開源的即時通訊/視頻通話應用,最初的定位是 Skype 的開源替代品。

特性:

  • 自由開源軟體(FOSS)
  • 無需提供手機號或電子郵箱註冊
  • 支援全平台客戶端
  • 支援端到端加密
  • P2P 式的去中心化設計,不依賴中央伺服器運作
  • 免翻牆使用(暫時)

# 3.3 Session

Session (opens new window) 是一款主打匿名和私隱保護的即時通訊應用,是正在成長中的區塊鏈開發平台 Oxen (opens new window)(原名 Loki Project)的產品之一。

技術細節請瀏覽 Session 的白皮書 (opens new window)

優點:

  • 無需提供手機號或電子郵箱註冊
  • 支援端到端加密
  • 支援多設備同步
  • 全平台客戶端
  • 不收集元數據
  • 使用 Tor,隱藏通信雙方的真實 IP
  • 無中央伺服器,使用基於 Cryptonote 協議開發的區塊鏈網絡
  • 免翻牆使用(暫時)

缺點:

  • 產品尚不成熟

# 3.4 Tox

Tox (opens new window) 是一個基於 P2P/對等式網路、端到端加密的即時通訊協議。使用 Tox core 的 qTox、µTox 等客戶端之間可以相互通信。

  • 無需提供手機號或電子郵箱註冊
  • 在查找朋友過程中使用 Tor

目前 Tox 缺乏可用的 iOS 客戶端。(Antidote 已停止更新。支援 iOS/Android 的 TOK 疑似為間諜、抄襲軟體,且未被 Tox 官網收錄,不建議使用,參見:Telegraph - 爱谁谁|什么Tok? (opens new window)

# 4 支援網狀網絡的 IM

【網狀網絡】(Mesh Networking)可以通過藍牙通信,將區域內每一台安裝網狀網絡通訊應用的移動裝置作為中繼,構建出不依賴 ISP 和伺服器的【P2P】網絡,因而在政府切斷互聯網連接或者蜂窩移動網絡因過載斷流等【斷網】的場景下使用。

# 4.1 Briar

Briar (opens new window) 是一款支援網狀網絡、自由開源的即時通訊應用,可以通過藍牙、無線網絡和 Tor 通信。

優點:

  • 支援【端到端加密】
  • 【自由開源軟體】

缺點:

  • 目前只支援 Android

# 4.2 Bridgefy

Bridgefy 是一款支援網狀網絡的移動通信應用,曾被運用於香港反修例運動、印度反公民身份法修正案示威等大型社運中。

受制於藍牙通信的距離限制,Bridge 的「Nearby/Broadcast」模式要求兩台通信設備間的物理距離在 330 英尺(約 100 米)內,「Mesh Chat」模式通過將中間的第三台設備用作中繼來支援距離超過 300 英尺的通信。

優點:

  • 同時支援 iOS 和 Android

缺點:

  • 不加密
  • 不開源

參見:
維基百科 - 端到端加密 (opens new window)
Riot.im - 維基百科 (opens new window)
Tox - 維基百科 (opens new window)
TorChat - Wikipedia (opens new window)
Bridgefy - Wikipedia (opens new window)