用Matrix进行匿名加密的私聊 加密技术

Matrix是一个强加密、去中心化的即时通信协议,Matrix也有多种开源客户端和服务器实现。Matrix协议,对标的是同为即时通信软件的Telegram,Discord。比起这两者,Matrix无需邮箱和手机号就可以注册,免除个人信息泄露之忧。本文介绍Matrix协议和它的一个客户端Element(原名Riot.im)。下文为了方便起见,统称为Matrix。

Element桌面和移动客户端截图

Element桌面和移动客户端截图

Matrix有很多优点,包括:

  1. 隐私:注册Matrix不需要邮箱和手机号,只需要用户名和密码。使用Matrix无需担心手机号和邮箱泄露的危险。
  2. 安全加密:Matrix私聊和群聊是端到端加密的,即使是服务器的所有者,也无法看到用户的聊天内容。
  3. 开源:Matrix客户端和服务器软件全部开源,任何人都可以审查代码,检查代码中的漏洞。有兴趣的人也可以用开源代码搭建自己的Matrix服务器。
  4. 去中心化:Matrix是联邦式协议,Matrix网络由分布在世界各地,由不同个人和组织运营的服务器组成,因此Matrix协议不容易被单个组织垄断。

Matrix网络组成结构

Matrix网络是联邦式结构,由多个地位平等的服务器连接而成

“联邦式协议”听上去十分晦涩,事实上,电子邮件就是一种联邦式协议,每个电子邮件服务器之间的地位平等。在收发电子邮件时,只要指定一个电子邮件服务器和服务器上的用户,就可以通信。例如[email protected]这个电子邮件地址,example是用户名,gmail.com是服务器名。

在Telegram,微信等聊天软件中,添加好友需要指定手机号或者用户名。而Matrix非常像电子邮件,一个matrix账号ID如下:

[email protected]

这里example是用户名,matrix.org是服务器名。Matrix添加好友和收发电邮一样,需要填写完整的[email protected]服务器名。在这里就是[email protected]

安全使用Matrix

1. 选择服务器

电子邮件有很多服务商,例如Gmail,Hotmail,ProtonMail。Matrix作为一种与之类似的联邦式协议,自然也有很多服务器可以选择。Matrix网站上提供了一份服务器列表,可供选择注册:

https://www.hello-matrix.net/public_servers.php

不过,本文推荐使用Matrix官方的服务器matrix.org,matrix官方服务器安全性和稳定性有保证,配置也是最容易的。

2. 网页版客户端+Tor

Matrix协议的主流客户端叫Element(原名Riot.im)。Element有桌面和移动客户端,提供和Telegram、Discord等聊天工具类似的体验,不过这里推荐在Tor浏览器中使用网页版(移动端)。并且账号注册和使用的全程都用网页版在Tor浏览器中完成。

Tor+网页版的优势:

  1. 隐匿IP:Element客户端配置代理比较麻烦。而在Tor浏览器中,不必费力配置客户端的代理,可以做到全程隐匿IP。
  2. 易用性:很多聊天软件网页版会比客户端少些功能。而Element和这些软件不同,Element网页版和桌面客户端的界面完全相同,功能也完全等价。
  3. 隐蔽性:网页版比App的隐蔽性更好,只要使用无痕模式登录,别人就无法发觉Matrix客户端的存在。

Tor+网页版全程匿名,注册不需要邮箱和手机,打开浏览器就能使用。全部通信高度加密,方便程度又可比论坛私信,可作为私信的加密替代。推荐用这种方式使用Matrix。

注册和使用

Element的下载页面提供网页版,也可以点以下链接直接进入注册页面。注意全过程应当用Tor浏览器完成。

https://app.element.io/#/register

首次注册如下图:

图1:首次注册

图1:首次注册

选择上面的“Free”可以选择直接在matrix.org服务器上注册(推荐)。选择“Premium”,可以使用Matrix官网提供的主机自己搭建服务器。选择“Advanced”,可以使用第三方服务器。

注册时只要提供用户名和密码即可,Email是可选的,可以不输入。

图2:邮箱

图2:邮箱

接下来会弹出提醒,如果不绑定电子邮箱,若忘记密码则无法回复。由于这里追求匿名,点continue继续。

如果用Tor注册,接下来会有Google reCaptcha验证码,点完验证码之后即完成注册,如图:

图3:注册完成

图3:注册完成的界面

以后要进入Matrix网页版,访问app.element.io就可以直接登录。

创建恢复密钥

Matrix使用端到端加密,加密后的聊天记录又(可能)保存在多个服务器上,为了能查看历史聊天记录,需要创建恢复密钥。

恢复密钥并不复杂,本质上就是给你的账户设置两道密码。登录密码用来登录Matrix账户,恢复密钥用来查看历史消息。当你在新的设备上登录时,Matrix服务器会要求验证第二道密码,没有第二密码(恢复密钥)仍然可以登录,但是无法查看历史消息。

恢复密钥的设置方法如下:

点击左上头像,选择【settings】,在右侧选择【Security & Privacy】,如图。

图4:设置

图4:设置

在左侧选择绿色的【Set up】按钮,弹出如下页面。

图5:恢复密钥选项

图5:恢复密钥选项

这里选择第二项【Enter a Security Phrase】。

接下来需要输入第二道密码,这里设置的密码就用来恢复聊天记录。设置完成后,会显示一个12组每组4个的密钥,如下图,建议把这个密钥备份并保管好。如果上面的第二道密码忘记,可以用这个密钥串解锁聊天记录:

图6:恢复密钥串

图6:恢复密钥串

如果你需要管理这些用户名、密码、密钥串,可以使用KeepassXC等密码管理器。

开始聊天

在Matrix中,知道对方的ID(类似[email protected]这格式),点击左边栏上边的“+”号(Start Chat)就可以私聊了。

群聊的方法类似。点击左边栏下方的“+”号(Add Room)就可以创建或加入群聊。选择explore public rooms,可以使用加群连接加入他人群聊。群ID类似于以下格式:

https://matrix.to/#/!xTTMQbujXcFdGQJgAS:matrix.org?via=matrix.org

也可以选择Create new room自行建群。

Matrix的其它用法和主流聊天软件类似,在此不再赘述。

更多Matrix资料可见:

[1] https://matrixim.cc/sfd2017-matrix.pdf,北大Matrix兴趣社团的slides。

[2] https://matrix.org/docs/develop Matrix开发文档,可用于bot,bridge的开发参考。也描述了很多Matrix的内部细节。

18
2020年12月19日 1410 次浏览
6 个评论
thphd 2047站长

暂不确定如何与第三方用户系统整合。

依赖项是postgres,看样子得开个VM养着。

还是直接用公用服务器比较科学,然后把自己id贴到2047的签名上

https://matrix.org/blog/2019/04/11/we-have-discovered-and-addressed-a-security-breach-updated-2019-04-12

我不建议用Matrix进行匿名加密的私聊,因为上面的这个前科。

忙碌中

@李舜生 #118018

原文摘录:

TL;DR: An attacker gained access to the servers hosting Matrix.org. The intruder had access to the production databases, potentially giving them access to unencrypted message data, password hashes and access tokens. As a precaution, if you're a matrix.org user you should change your password now.

The matrix.org homeserver has been rebuilt and is running securely; bridges and other ancillary services (e.g. this blog) will follow as soon as possible. Modular.im homeservers have not been affected by this outage.

这是一次拖库事件,黑客利用服务器上的漏洞,获得了服务器数据的访问权限。事实上如果采用了tor上网和端到端加密,黑客能获得的信息相当有限。

这次事件并非matrix协议的缺陷或者运维故意为之,甚至也不是matrix软件的漏洞。原文是这样的:

We were using Jenkins for continuous integration (automatically testing our software). The version of Jenkins we were using had a vulnerability (CVE-2019-1003000, CVE-2019-1003001, CVE-2019-1003002) which allowed an attacker to hijack credentials (forwarded ssh keys), giving access to our production infrastructure. Thanks to @jaikeysarraf for drawing this to our attention.

是服务器运维使用的第三方软件的问题。

这事件反而证明了matrix的安全性,在全程使用tor和端到端加密的情况下,即使服务器不能信任,也是足够安全的。(实际上匿名上网就是基于不信任原则)。

相反如果是telegram,discord服务器被拖库,或者迫于政府压力交出数据(应该时刻注意这一点),IP地址、电话号码、聊天记录就一览无余了。

NL
Tooyames 兔子严肃思考了一段时间,随后便揪出了有嫌疑的一小撮

能不能设置引用别人对话的最大字数?Matrix的群聊体验有点难受,quote别人时是一整段话,若群里的大家都是以这种方式聊天,晚上来的人看到那么长的历史纪录都frustrated了,无心浏览。

@Tooyames #118202 不能。quote别人应该是用telegram的习惯,改掉这个习惯就好了:)

此贴置顶3d。欢迎大家加我Matrix账号 @thphd:matrix.org或者加入2047公共讨论群 #teahall:matrix.org

现在matrix注册是需要用电子邮件认证的,推荐大家用fake mail generator生成一个随机收件地址完成注册,不要用自己的常用邮件地址。

( 由 作者 于 9月19日 编辑 )

欲参与讨论,请 登录注册

example notif text