可去中心化的应用:IM即时通讯

目前大家的"伪共识"是,Web3.0 旨在提供一个去中心化的互联网,用户可以更好地控制他们自己的数据和交互操作,而无需中介或中心化服务器。它理论上比以前版本的 Web 更安全、更透明、更具包容性。在 Web3 中,用户直接拥有自己的数据并能够直接与之交互,而无需任何中介平台。Web3 的去中心化特性

目前大家的"伪共识"是,Web3.0 旨在提供一个去中心化的互联网,用户可以更好地控制他们自己的数据和交互操作,而无需中介或中心化服务器。它理论上比以前版本的 Web 更安全、更透明、更具包容性。在 Web3 中,用户直接拥有自己的数据并能够直接与之交互,而无需任何中介平台。Web3 的去中心化特性还提供了更大的隐私和安全性,变相的降低了黑客攻击和数据泄露的风险。

IM 类工具的历史

我觉得 IM 类工具是一个很好应用去中心化的领域。为什么这样说呢?这要从早期的 IM 工具讲起。

即时通讯(IM)工具的历史可以追溯到20世纪60年代末,其初衷是为了在计算机网络上实现实时的文字交流。早期的IM系统通常是在同一计算机系统或者通过 ARPANET 网络连接的不同系统之间实现的。上古时期的 IM 工具基本都是基于 P2P 模式,信息是直接从一个用户的终端传送到另一个用户的终端,没有中间服务器的参与。例如,1970年代的UNIX系统上的 talk 程序就支持用户在终端之间直接进行即时文本交流。

后期到了20世纪90年代,ICQ MSN 之类的开始出现,再往后 WhatsApp 微信 iMessage就全部出现了。这些新世代 IM 工具的特点是,都采用了集中式的服务器来维护用户的联系人列表和消息传递。当然,TG 算是个例外,他也支持 P2P 。

新世代的 IM 工具集成了更多的功能,包括视频聊天、文件分享和集成社交媒体(朋友圈)功能,几乎全部的 IM 都采用集中式服务器的模式来提供服务,以便更好地管理大规模的通信需求和提供更复杂的服务。

为什么又要搞回去中心化的 IM 呢?

主要是下面几个核心的驱动因素:

  • 隐私和安全性:在传统的集中式IM系统中,用户的数据一定会经过并存储在中心服务器上。这种架构使得用户的私人数据可能面临来自第三方的监视或不当使用之类的风险。

  • 抗审查和内容控制:在某些国家或地区,中心化的服务器可能会被政府或其他权力机构要求审查特定内容或阻止某些信息传播。而没有中心节点可以轻易地被封锁或控制的去中心化形式,就能”规避“以上问题。

  • 稳定性和可靠性:去中心化网络一般比中心化网络更健壮,因为数据和功能分布在多个节点上,即使部分系统组件失效,整个系统也能继续运行。

  • 用户控制权:去中心化的系统会给予用户更多的控制权,例如:允许用户选择或运行他们自己的服务节点,从而不必依赖特定的服务提供商。

去中心化 IM 的劣势

去中心化的 IM 虽然能提供隐私和自由方面的优势,但是问题更多,而且几乎都是体验上的问题:

  • 性能和延迟不太行:在中心化网络中,数据都是通过预设并优化好的路径传输,这些路径由 ISP 或服务提供商管理和维护,但去中心化基本”随机“;中心化网络中,节点和连接基本是稳定的,而去中心化网络的节点可能更加动态,节点的加入和退出更为频繁,这可能导致数据路由的不确定性增加,进而影响通信的稳定性和延迟。

  • 垃圾信息和滥用:在中心化的 IM 系统中,组织可以监控和管理网络流量,采取某些措施来对抗它。相比之下,去中心化的系统因为缺乏中心管理机构,更难以有效监控和抑制垃圾信息的传播。不过也有解决方式,Wiremin 用的方式是工作量证明,发消息就像挖矿一样(haha

  • 数据备份和同步:在中心化的 IM 系统中,用户的聊天记录和数据存储在服务器上,可以在不同设备间自动同步。而在去中心化的系统中,实现数据的跨设备备份和同步复杂一些,用户可能需要自行管理数据的备份和恢复。

  • 最重要的,你如何说服周围的朋友和你一起用?

Matrix.org

就像 IPFS 不是一个去中心化网盘,Matrix 也类似于 IPFS,它只是一个开放的通信协议,而不是一个具体的应用或服务。Matrix 提供了一个标准的协议框架,允许不同的服务和应用实现数据交换和实时通信。它主要用于即时通讯、VoIP(语音通话)和视频通话等功能。 IPFS(InterPlanetary File System)也是一个协议,它用于创建分布式文件系统,旨在使网络更加健壮、分散和开放。

Matrix 协议的美好愿景

看 Matrix 的技术白皮书,不难看出实际上 Matrix 是设想建造一个下述中理想的网络通讯生态:

  • 用户可以自由选择不同的服务器,这些服务器之间能够实现互通,用户可以根据个人喜好选择不同的服务商,如WeChatServer、GoogleServer、MetaServer,甚至包括更为”安全“的360ChatServer😓。

  • 在这样的框架下,不同的服务器可以开发和提供独特的功能。例如,PDDServer用户可以享受互相砍价的功能,GoogleServer用户免费用谷歌的一些高阶服务,而AlibabaServer用户可以快捷地使用淘宝等。

  • 用户的身份标识可以跨平台使用,例如:abc@Google、abc@PDD、abc@Microsoft、abc@10010等。

  • 从驱动因素来看,除了互联网头部大厂之外,其他服务商甚至自己搭建服务器也有参与的利益。虽然假设没用互联网大厂加入,该模型可能难以成功实施,但这种多元化的通信网络模式有几个明显的优势:

  • 用户不必担心因单一服务器封号而无法联系朋友。

  • 提供更多的选择权,用户可以对不喜欢的功能说“不”。

  • 如果用户愿意,即时消息服务(IM)可以真正成为一个独立的即时通讯平台。

这种模型强调了用户自主权和网络生态多样性,倡导一个更开放、更自由的通讯环境。

基于 Matrix 的应用

Element 用的最多,Matrix 有如下推荐:

实际上基于 Matrix 的应用有很多,Matrix 给出的有如下:

Matrix 协议介绍

这里要简单说下协议,基于去中心化设计的 IM 工具必须要满足以下基础要求,才能叫 IM 啊:

  • 去中心化的用户身份认证技术

  • 基于端对端加密的安全通讯技术

有以上两个基础,才有后续衍生的 IM 需求,例如高并发 低延迟等等。

去中心化的用户身份认证

在 Matrix 中,用户身份被称为“MXID”,即 Matrix ID,通常格式为

@username:domain.com

每个用户的身份由自己选择的 homeserver 来管理,这使得用户可以自由选择或迁移到不同的服务器,而无需依赖于单一的中心化服务提供商。Matrix 的去中心化身份认证主要通过以下方式实现:

  • 去中心化服务器架构:用户可以选择加入任何公开的 Matrix 服务器,或者自行搭建私有服务器。这种结构确保了用户控制自己的数据和身份,减少了对单一点的依赖。

  • 联邦协议:Matrix 服务器之间可以通过联邦协议进行交互。这意味着即使用户分布在不同的服务器,他们也能够相互通信。身份验证和数据同步是通过各自的服务器在背后处理,而非集中式的数据中心。

  • 端到端加密:Matrix 支持端到端加密,保护用户通信不被第三方(包括服务器管理员)窥探。这提高了通信的隐私性和安全性。

  • 自定义身份验证方法:服务器管理员可以实施自定义的身份验证机制,比如整合现有的企业用户目录、社交媒体账号或采用更复杂的认证策略。

尽管 Matrix 提供了这些去中心化和安全性特性,它并不内置一个统一或全球性的身份认证系统,就像基于区块链身份认证解决方案那样。用户身份的认证和管理依然是依赖于各自的服务器来执行。

Matrix 中的端到端加密

  • 加密实现:Matrix 使用名为 Olm Megolm 的加密算法。Olm 主要用于点对点的通信,如一对一聊天;而 Megolm 被设计用于群组聊天,优化了对群组成员变动的处理和密钥管理效率。

  • 可选加密:在Matrix中,端到端加密不是默认启用的,需要在创建聊天室时或之后进行设置。一旦启用,所有后续通信都将被加密。

  • 设备管理:Matrix 用户需要管理自己的设备和相应的加密密钥。当用户尝试从新设备访问加密聊天时,他们需要验证新设备,确保其安全性。

  • 密钥验证:用户可以通过比较安全的标识码或使用扫描二维码等方法,直接验证对方身份和密钥的正确性,这有助于防止中间人攻击。

  • 交叉签名:允许用户验证并信任其他用户的设备,从而改进了多设备同步和群组聊天的安全性。

那 WireMin 呢?

很重要的一点是,Matrix 是不完全去中心化的,它有 homeserver。因此在Matrix协议中,即使用户不在线,也能收到消息推送。而 WireMin 我记得是48小时还是多久,消息就丢了,太久没用记不清了。

这得益于Matrix服务器的工作机制,它保持了用户的消息记录和状态,直到用户重新上线并同步。 Matrix 消息推送的工作原理大概是这样:

  • 消息存储:当用户不在线时,发送给他们的消息会被存储在他们的 homeserver 上。这些消息保存在服务器中,等待用户再次上线。

  • 推送通知:Matrix支持通过推送服务发送通知。当有新消息时,用户的 homeserver 可以向用户的设备发送推送通知,即使应用程序在后台运行或设备处于休眠状态。这需要用户在设备上配置和允许接收通知。

  • 消息同步:用户重新上线时,他们的客户端将与 homeserver 同步,下载在离线期间接收的所有消息。

  • 多设备支持:如果用户有多个设备,每个设备都可以独立接收推送通知和同步消息,确保用户在任何设备上都能查看完整的聊天历史。

Q&A:

假设我的homeserver是Google,我的身份信息是abc@googleServer,那我想选择在alibabaServer登录的话,身份信息怎么同步呢?

在Matrix网络中,用户的身份和账号是和特定的 homeserver 紧密关联的。如果你的账户是 abc@googleServer,这意味着你的身份和所有相关的数据(如消息记录、联系人列表等)都存储在 googleServer 上。如果你想使用另一个服务器,如 alibabaServer,这就需要重新创建新身份并迁移数据。

那这是不是意味着,假设Googleserver坏了,我就无法登录并同步数据了?那这算哪门子去中心化的身份啊!

确实,虽然Matrix协议支持服务器间的联邦通信,实现了网络的去中心化,但每个用户的数据和身份实际上还是存储在特定的 homeserver 上。完全去中心化的身份验证也有DIDs,uPort是基于ETH分布式身份,不过已经拆分了。

LICENSED UNDER CC BY-NC-SA 4.0
Comment