安全即时通讯(Secure IM)

概要(Abstract)

本文主要说明了“端到端加密(End-to-End Ecryption, E2EE)”的基础知识及其相关的即时通讯(Instant Messaging, IM)应用(App)。

正文(Body)

先来看下我国当前相关的法律条文:

  1. 中华人民共和国宪法》第四十条

    中华人民共和国公民的通信自由和通信秘密受法律的保护。除因国家安全或者追查刑事犯罪的需要,由公安机关或者检察机关依照法律规定的程序对通信进行检查外,任何组织或者个人不得以任何理由侵犯公民的通信自由和通信秘密。

  2. 中华人民共和国刑法》第二百五十三条之一

    【侵犯公民个人信息罪】

    违反国家有关规定,向他人出售或者提供公民个人信息,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金;情节特别严重的,处三年以上七年以下有期徒刑,并处罚金。

    违反国家有关规定,将在履行职责或者提供服务过程中获得的公民个人信息,出售或者提供给他人的,依照前款的规定从重处罚。

    窃取或者以其他方法非法获取公民个人信息的,依照第一款的规定处罚。

    单位犯前三款罪的,对单位判处罚金,并对其直接负责的主管人员和其他直接责任人员,依照各该款的规定处罚。

  3. 中华人民共和国网络安全法》第四十一条

    网络运营者收集、使用个人信息,应当遵循合法、正当、必要的原则,公开收集、使用规则,明示收集、使用信息的目的、方式和范围,并经被收集者同意。

    网络运营者不得收集与其提供的服务无关的个人信息,不得违反法律、行政法规的规定和双方的约定收集、使用个人信息,并应当依照法律、行政法规的规定和与用户的约定,处理其保存的个人信息。

  4. 中华人民共和国数据安全法》第三十二条

    任何组织、个人收集数据,应当采取合法、正当的方式,不得窃取或者以其他非法方式获取数据。

    法律、行政法规对收集、使用数据的目的、范围有规定的,应当在法律、行政法规规定的目的和范围内收集、使用数据。

  5. 中华人民共和国个人信息保护法

    第二条 自然人的个人信息受法律保护,任何组织、个人不得侵害自然人的个人信息权益。

    第五条 处理个人信息应当遵循合法、正当、必要和诚信原则,不得通过误导、欺诈、胁迫等方式处理个人信息。

    第六条 处理个人信息应当具有明确、合理的目的,并应当与处理目的直接相关,采取对个人权益影响最小的方式。

    收集个人信息,应当限于实现处理目的的最小范围,不得过度收集个人信息。

    第七条 处理个人信息应当遵循公开、透明原则,公开个人信息处理规则,明示处理的目的、方式和范围。

在通讯中,对通讯内容进行"端到端加密(或叫‘点对点加密’,即 End-to-End Encryption, E2EE)",只有通信双方才能解密(运营/服务商也无法解密),可最大限度地防止除通讯双方以外的第三方(包括应用程序本身的运营方)窃取通讯內容。故推荐使用支持"端到端加密"的通讯应用进行通讯(包括含文字、语音、文件和音视频通话等)。

此类应用,目前有两个比较有代表性的开源应用,分别叫“Signal(暗号)”和“Session(会话)”(参见文末的附录部分,以及《當世界向前,回顧暗號是如何做的(Looking back at how Signal works, as the world moves forward)》)。Signal 和 Session 都支持 iOS、Android 以及三大桌面系统(Windows、macOS、Linux)(参见下面附录部分)。除了 Signal 和 Session, 此类安全应用还有 WhatsApp、Telegram、Bleep、Line、Apple iMessage/FaceTime、Google Allo、Facebook Messenger、超信和安司密信(安司密信另有企业、政务和军采版)等。

不幸的是,前面提到的大部分应用,都受到了“防火长城(GFW)”等的影响,导致有时无法正常登录使用,且有的已经完全被屏蔽和下架了。其中,Signal 已于 20210316 也被內地所屏蔽。

不过,目前 Session 还可以正常使用。Session 与 Signal 类似,其本身就是基于早期的 Signal 开发的。Signal 目前需要使用手机号注册(将来会改成使用用户名),支持音视频通话,包括一对一的和多人群组的音视频通话。Session 目前尚不支持音视频通话,但去掉了不必要的敏感数据,采用了去中心化的洋葱路由,也无需手机号,其账号(Session ID)在本地生成,不打算用时删除即可,无需注销。同时,Session 通过 deb 格式和 AppImage 格式来支持多种 Linux 发行版。不过,鉴于内地我们当局的惯用做法,不排除内地将来也把 Session 屏蔽(如也屏蔽其官网和 GitHub 页面,以及下架其 App)的可能性,尤其是当有很多人用时。

What data does each app collect from your phone?

Instant Messaging Apps User's Data Collection, by SafeNet

值得一提的是,开源应用 Signal 因注重对个人信息与隐私权的保护,而受到了前美国中央情报局(CIA)技术分析员、美国国家安全局的"棱镜"监听项目(参见著名的"棱镜门"事件)的曝光者爱德华·斯诺登(Edward Snowden,现以政治避难的方式居住于俄罗斯)等人的推荐(参见 Signal 官网)。而理论上,目前 Session 比 Signal 更安全。

温馨提示一下,如果你用的是苹果公司的产品的话,如 iPhone、iPad 和 Mac 等,你也可以使用 iOS 下的 iMessage 和 FaceTime 进行安全通讯(但 Session 和 Signal 更安全),只不过需要通讯双方都使用苹果的设备(注:网上也有人开发了相应的 App 以使 Android 也可以与苹果设备发送 iMessage 消息)。

更多可参考这个“安全通讯应用比较(Secure Messaging Apps Comparison)”网站(內容仅英文)。

附(Appendix)

注:因 Signal 于 20210316 也被內地屏蔽,故以下 Signal 链接及 Signal 应用本身现已无法在内地正常访问和使用(需借助一些特殊的工具才行),故目前可使用 Session。

一、Session(会话) - Private Messenger(私密信使)

Session Messenger Logo

Session Messenger

官网: https://getsession.org/ ,“ Session | Send Messages, Not Metadata. | Private Messenger ”。

源码: https://github.com/oxen-io/

下载: https://getsession.org/download/

Session Android 版

参见: https://github.com/oxen-io/session-android/releases

注:内地 Android 手机用户因不能正常访问 Google Play 应用商店,故可在 其 GitHub 的发布页 直接下载 APK 格式安装包。
如当前(20210930)的最新版(v1.11.10)下载链接为(一般的 Android 手机可以安装下面第一个 universal 版):
https://github.com/oxen-io/session-android/releases/download/1.11.10/session-1.11.10-universal.apk
https://github.com/oxen-io/session-android/releases/download/1.11.10/session-1.11.10.aab
https://github.com/oxen-io/session-android/releases/download/1.11.10/session-1.11.10-arm64-v8a.apk
https://github.com/oxen-io/session-android/releases/download/1.11.10/session-1.11.10-armeabi-v7a.apk
https://github.com/oxen-io/session-android/releases/download/1.11.10/session-1.11.10-x86.apk
https://github.com/oxen-io/session-android/releases/download/1.11.10/session-1.11.10-x86_64.apk

Session iOS 版

参见: https://apps.apple.com/cn/app/session-private-messenger/id1470168868

注: 内地 iOS 用户也可直接在 其 GitHub 的发布页 直接下载 IPA 格式安装包。
如当前(20210930)最新版(v1.11.16)的下载链接为:
https://github.com/oxen-io/session-ios/releases/download/1.11.16/session-1.11.16.ipa

Session 桌面版/电脑版

参见: https://github.com/oxen-io/session-desktop/releases

注:桌面版目前支持三大桌面系统,即 Linux,Windows 和 macOS。
如当前(20210430)最新版(v1.7.3)的下载链接为:
https://github.com/oxen-io/session-desktop/releases/download/v1.7.3/session-desktop-linux-amd64-1.7.3.deb
https://github.com/oxen-io/session-desktop/releases/download/v1.7.3/session-desktop-linux-x86_64-1.7.3.AppImage
https://github.com/oxen-io/session-desktop/releases/download/v1.7.3/session-desktop-win-1.7.3.exe
https://github.com/oxen-io/session-desktop/releases/download/v1.7.3/session-desktop-mac-1.7.3.dmg
https://github.com/oxen-io/session-desktop/releases/download/v1.7.3/session-desktop-mac-1.7.3.zip

对于 Debian 和 Ubuntu 等相关 Linux 桌面系统,也可通过添加 Oxen 的软件仓库来安装 Session 等:

1
2
3
4
sudo curl -so /etc/apt/trusted.gpg.d/oxen.gpg https://deb.oxen.io/pub.gpg
echo "deb https://deb.oxen.io $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/oxen.list
sudo apt update
sudo apt install session-desktop

更多说明可参见 https://deb.oxen.io

二、Signal(暗号) - Private Messenger(私密信使)

Signal Messenger Logo

Signal Messenger

注:20210316 已被内地屏蔽,暂已无法正常使用,需借助工具能访问和使用。

  1. 官网: https://signal.org/

  2. 源码: https://github.com/signalapp/

  3. Android 版:最新版的下载页面为 https://signal.org/android/apk/

注:内地 Android 手机用户因不能正常访问 Google Play 应用商店,故可下拉到以上页面底部下载其在网站上直接发布的版本。如:当前(20210930)最新版的下载链接为 https://updates.signal.org/android/Signal-Android-website-prod-universal-release-5.24.7.apk (手机上请复制粘贴到浏览器中打开,以下载安装),另见 https://updates.signal.org/android/latest.json

  1. iOS 版: https://itunes.apple.com/cn/app/signal-private-messenger/id874139669

  2. macOS 版: https://updates.signal.org/desktop/signal-desktop-mac-5.17.2.dmghttps://updates.signal.org/desktop/signal-desktop-mac-5.17.2.zip

  3. Windows 版: https://updates.signal.org/desktop/signal-desktop-win-5.17.2.exe

  4. Linux (Debian-based) 版:
    (1)直接下载: https://updates.signal.org/desktop/apt/pool/main/s/signal-desktop/signal-desktop_5.17.2_amd64.deb

    (2)或通过添加官方仓库来安装(以后可随系统自动更新):

    1
    2
    3
    $ curl -s https://updates.signal.org/desktop/apt/keys.asc | sudo apt-key add -
    $ echo "deb [arch=amd64] https://updates.signal.org/desktop/apt xenial main" | sudo tee -a /etc/apt/sources.list.d/signal-xenial.list
    $ sudo apt update && sudo apt install signal-desktop

三、安全性(Security)

Signal 和 WhatsApp 等都使用了开源的“暗号协议(Signal Protocol)”的端到端加密的通信技术。Session 则使用了修改后的“会话协议(Session Protocol)”。

参见:

The Session Protocol: What’s changing — and why (English)

Session Protocol: Technical implementation details (English)

(以下 Signal 支持网站,内地现需科学上网才能访问队了)

https://support.signal.org/ (English)

https://support.signal.org/hc/zh-tw/ (正體中文)

https://support.signal.org/hc/zh-tw/categories/360000674811 (正體中文)

四、备用下载(Standby Downloads)

(1)Fenlly favorites on GitHub: https://fenlly.org/favorites/

(2)百度网盘(含 Signal 与 Session): https://pan.baidu.com/s/1miFtFxI

参考(References)

印记(Imprints)

(1)20170829:首次作为手稿和内部消息(《推荐使用更安全的手机通讯应用(含简洁版和详细版)》)公开于部分微信好友群聊中。
(2)20170901:简化并增加部分英文翻译,并首次作为“评论”公开于个人最近的一条微信朋友圈动态下。
(3)20170905-1012:进行了多次修改、更新和完善。
(4)20171119:增加国内支持端到端加密的部分通讯应用,以及相关法律条文。
(5)20180107:重新排版和组织并更新相关内容。
(6)20180311:(a)增加另外两个新的法条并优化排版,并完善相关正文内容;(b)更新 Signal 和 WhatsApp 官方的相关下载连接;(c)修正备用的百度网盘下载链接。
(7)20201101:完善和更新文本内容;更新附录中的 Signal 相关链接,并增加开源的 Session(见上面的“附三”),同时去掉附录中未开源的 WhatsApp。
(8)20210210:添加《當世界向前,回顧暗號是如何做的》鏈接,更新 Signal Android 的最新鏈接。
(9)20210322:因 Signal 已於 20210316 被内地屏蔽,故修改了一些與 Signal 及目前可用的 Session 相關內容。
(10)20210430:添加”安全通訊應用比較(Secure Messaging Apps Comparison),https://www.securemessagingapps.com“參考網站鏈接。
(11)20210930:添加一張關於 App 收集相關數據的對比圖;增加《數據安全法》(自 2021 年 9 月 1 日起施行)和《個人信息保護法》(自 2021 年 11 月 1 日起施行)中的部分相关法条;更新 Session 和 Signal 相关内容等。
(N)下一步(Next): xxx。
(T)待做(TODO):同步英文翻译。

署名(Attribution)

如果转载,请至少保证“正文”部分的完整性且至少须以链接形式给出的原文链接。
具体请参见“指南(Guides)”页面中与版权相关的CC授权协议及注意事项等。请不要构成侵权行为,谢谢合作。

平民(Pingmin Fenlly Liu)
20170829-20210930

结束(End)