# 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)