1593 words
8 minutes
Matrix | 下一代去中心化即时通信协议
2025-01-30

近期,Telegram 在多个国家遭遇封锁,甚至在某些地区主动配合政府审查,封禁特定频道或用户。例如,德国政府要求 Telegram 删除涉及非法内容的群组,Telegram 随后配合执行,而巴西政府更是多次命令其封禁相关账户。类似的事件让人们意识到:尽管 Telegram 标榜自己重视隐私和自由,但它仍然是一个中心化平台,最终受限于服务器托管和法律管辖,个人信息依旧无法得到真正保障。

此外,Telegram 服务器掌控在一个封闭的基础设施上,用户无法自行托管,所有数据流量都经过其官方服务器,这意味着一旦 Telegram 决定配合某方要求,用户的数据和通讯自由将受到直接威胁。

Matrix 作为优秀的替代品,受到一众开发者的青睐,许多开源项目,甚至清华大学也在上面有自己的群组。

为什么选择 Matrix 作为替代?#

Matrix 采用 联邦式架构(Federation),相比 中心化架构(Centralized) (例如: Telegram、微信)数据更安全、抗审查,相比 分布式架构(P2P) 不会直接暴露IP,Matrix 赋予用户真正的数据自主权和抗审查能力。

  1. 去中心化 + 抗封锁: 多个 Home Server 通过 联邦协议(Federation Protocol) 相互通信。即使某个服务器遭到封锁,用户仍可切换至其他节点继续通信,无需依赖单一服务提供商,且可以通过没被封锁的服务器与在被封锁的服务器上的用户进行对话。
  2. 端到端加密,保障隐私: 默认支持 端到端加密(E2EE),确保消息只能由通信双方解读,避免服务器端窥探。
  3. 开放协议,社区驱动: 完全开源,任何开发者都可以构建自己的客户端或服务器。
  4. 桥接功能,兼容现有平台: 允许桥接 Telegram、WhatsApp、Slack 等多个通讯平台,使用户在过渡期间仍可与旧平台上的联系人保持联系,同时逐步迁移到更安全的通信环境。

Matrix 联邦式架构 介绍#

假设 Alice 使用 Gmail邮箱alice@gmail.com),Bob 使用 Outlook邮箱bob@outlook.com),尽管他们的邮件服务提供商不同,但他们仍能互相收发邮件。这是因为电子邮件遵循 SMTP 等开放协议,使不同服务器可以互通。

Matrix 也是如此:

  • Alice 的 Matrix ID 可能是 @alice:matrix.org,Bob 的 ID 可能是 @bob:example.com,类似电子邮件一样,需要同时指明用户名和所在服务器。
  • Alice 在 matrix.org 服务器上注册,Bob 在 example.com 服务器上注册,即便他们的服务器不同,依然可以顺畅通信。
  • 这依赖于 Matrix 联邦协议,使不同 Home Server 互相同步消息,实现分布式通信。

类似电子邮件的 user@server 格式,Matrix 也有自己一套标注格式

类型Matrix 语法示例说明
用户(User)@user:server@alice:matrix.org标识某个服务器上的特定用户,@ 开头,: 后跟服务器地址
房间 ID(Room ID)!roomid:server!abcd1234:envs.net确定的唯一房间 ID,! 开头,由服务器分配,适用于内部存储,用户通常不必使用
房间别名(Room Alias)#alias:server#chatroom:mozilla.org类似邮件列表,# 开头,用户可通过该别名加入房间
空间(Space)#space:server#myspace:fedora.im类似于文件夹或 Discord 服务器,可包含多个房间,用于组织聊天

Matrix 联邦架构图

软件下载#

在 Matrix协议官网 有收入了许许多多的客户端 matrix.org/ecosystem/clients ,我这里着重介绍以下几个常用客户端

  • Element: 功能最为丰富的客户端,全平台支持
  • Element X: 在移动端上作为 Element 的替代品,具有更好的界面设计和最新的协议支持
  • FluffyChat: 遵循 Material You 设计,尤其在对平板的适配上是最好的

联邦服务器推荐#

请选择延迟最低的服务器,保障你聊天的流畅度

  • matrix.org: 作为协议官方的服务器,上面有许许多多的房间,可惜已被天朝封锁
  • mozilla.org: Firefox火狐的制造者Mozilla非营利组织的服务器
  • envs.net: 位于德国的Linux爱好者们搭建的服务器
  • fedoraproject.org: Linux发行版Fedora的服务器
  • opensuse.org: Linux发行版openSUSE的服务器
  • opendesktop.org: 国产中文Linux操作系统OpenDesktop的服务器
  • deepin: 国产中文Linux操作系统深度Deepin的服务器,需要通过申请取得账号

Google上还能搜到许许多多的Matrix服务器,比如 https://servers.joinmatrix.org/, https://tatsumoto-ren.github.io/matrix/等等,这里不再一一列举

公共房间推荐#

多平台同步说明#

因为 Matrix 房间默认是端到端加密的,且密钥存储在本地,所以你直接在不同的客户端或是不同的设备上登录都将无法解密过去的聊天。

所以,如果你要全平台同步,那么你要导出你的恢复密钥(Recovery key),并妥善保管,在登录新客户端时,导入你的密钥来解密你的消息

  • Element客户端通常在登录时会让你导入密钥,导出密钥在 设置 -> Encryption -> Change recovery key,里面有复制密钥的按钮
  • FluffyChat客户端点击搜索栏的个人头像,进入设置,在第一项 Chat backup 里有关于恢复密钥的选项

加密使用说明#

Matrix 默认开启 端到端加密(E2EE),但为了防止中间人攻击(MITM),仍需用户手动验证对方身份。

Matrix 采用 SAS(Short Authentication String,短认证字符串) 进行密钥指纹验证,其中 Emoji 认证 是常见方式。

在 Element 客户端,可通过“验证”按钮进行身份确认;在 FluffyChat,对话右上角的图标表示安全状态(绿色为已验证,黄色为未验证)。
验证时,双方客户端会显示一串 Emoji,请使用 其他聊天平台线下(如果你的对话需要极高的安全性) 核对,确保序列一致,避免遭受窃听。

Matrix | 下一代去中心化即时通信协议
https://www.noctiro.moe/posts/matrix/
Author
Noctiro
Published at
2025-01-30