正在阅读:

详解去中心化的DIM即时通讯协议

扫一扫下载界面新闻APP

详解去中心化的DIM即时通讯协议

对比于传统的中心化IM 架构,它们采用的是中心数据库中储存ID+密码的对应关系数据来识别身份,很显然区块链这种身份识别方式完全可以替代中心化的用户身份识别。

文 | 阿里八卦

2019年8月21日,密码极客邀请到了DIM项目的首席科学家Albert Moky来社群做线上分享。

以下是线上分享的全部内容

大家好!我叫Moky,是一名程序员,在服务器端、客户端开发都略有涉猎。本人是数学系毕业的,对算法比较感兴趣,之前研究过AI算法,前几年在看到区块链技术的时候也忍不住研究了一下。最近颇有一些心得,想借此机会和大家分享。

今天我想和大家分享的,是关于“去中心化”技术在IM领域的可行方案。由于我本人之前曾负责过一些IM产品的研发,虽然不算太深入,但对于IM领域的一些产品问题仍然有比较多的认识。

我一直在寻找方法尝试去解决它们,但是IM领域的竞争太过激烈,除了巨头之间的竞争,一些小公司基本没有什么参与机会,直到我找到了“去中心化”的方法。

我对比研究了现有的一些较为知名的IM协议,它们都从某些侧面解决了一部分问题。但是这些协议很多都没能得到广泛的应用,哪怕有一些背后有非常强大的公司在推动也没能成功。我分析了深层次的原因,其实根本原因并不在功能性上,也不在应用了多么酷炫的技术,而在于用户体系。

我们看一下过去比较有代表性的IM协议:最初的开源IM协议主要强调通用性,而在真实性和保密性上基本是空白的,完全靠运营方去保证;区块链技术引入之后,解决了真实性问题,但效率远远不能达到IM的标准,所以很多DApp的体验非常的差;还有现在的一些端对端加密IM可以相对地解决了真实性与效率问题,但仍然有漏洞,被攻击的案例也时有发生。

所以,我决定从根本上去研究一个IM到底最关键的要素是什么,一个好的IM系统架构应该是怎样的。我发现所有的IM网络,基本上可以分成两大类设备:终端,和中间节点。

一个最简单的IM系统结构,应该如上图那样,由用户终端和服务器节点组成。有一些用户直接连接在同一个服务器内,而另一些则可能连接了不同的服务器;而众多的服务器可能分布在全世界不同的地方。

那么,当一个信息从一个用户发送到另一个用户,有哪些步骤是必须的呢?针对前面的系统架构,我发现最根本的就是用户身份验证与信息转发机制;针对同一个服务器和不同服务器,甚至是不同地域不同运营商的服务器,需要有一套最佳路由算法去实现。

以上,就是每一个好的IM所必须的全部设计!那么大家可以看到,这里面其实并没有和你用什么数据库存储信息有关,也不跟运营商有什么不同的资源能力有关,只要中间节点能够准确、快速的将信息转达即可;而身份验证问题,当下主流的IM都是中心化的,然而由上面的分析可以发现,其实只要能够证明身份,与是否中心化并没有必然关系。

在我研究区块链技术的时候,我发现基于非对称密码学的区块链技术采用了一种十分巧妙的“身份证明”解决方案,于是我很自然的就联想到可以应用到DIMP的设计中来。拿BTC地址算法举例(也是DIMP支持的ID算法之一),我们可以通过一套共识算法来生成ID,同时绑定了ID与密码的关系。

对比于传统的中心化IM 架构,它们采用的是中心数据库中储存ID+密码的对应关系数据来识别身份,很显然区块链这种身份识别方式完全可以替代中心化的用户身份识别。

只不过BTC地址算法有一些缺点,比如纯随机字符串可读性非常差,用户很难通过一个BTC地址判断它属于哪个好友,所以后来我研究了一些方法,用来绑定一个识别标志到该地址上,类似于传统IM里的username。

对于ETH地址,或者其他任何区块链地址,都可以通过同样的方式被DIMP所兼容。因为DIMP核心算法是直接建立在非对称密码学基础上的,它本身并不需要依赖任何一条区块链。所以它可以兼容所有区块链账号作为DIM的ID来进行通讯。

我们再来看一下DIMP定义的通讯消息发送和接收过程。作为一个IM应用,每一条消息必须定义的信息字段,主要包括3个:

1、发件人(sender)

2、收件人(receiver)

3、数据内容(data)

而为了证明该信息是sender真实发送而不是伪造的,则必须带有第4个信息:

4、签名信息(signature)

如果该信息不是公开信息,则还需要一个加密方法,我这里采用了非对称加密与对称加密两层加密算法,所以还需要第5个信息:

5、密钥(key)

以上就是一个去中心化的、端对端加密IM应用中必须的数据结构。

可以说,上面的两大部分:身份识别&通讯格式,已经完成了一个去中心化即时通讯应用的全部核心定义。但我上面提到过,一个IM应用能否生存和发展,关键不在于它定义了哪些功能,使用了哪些酷炫的技术,而在于用户体系。在过去20多年的混战中,不计其数的挑战者都失败了,当然每个公司失败的原因有很多,但我发现它们几乎都有同一个特点:用户规模不够。

因为IM不同于其他信息类应用,它是一个“赢者通吃”效应特别强烈的领域。如果你的好友全部在某一个IM应用上,那么就算你对它不是十分满意,你也必须要用它;反之,另一个app无论多么的合你胃口,只要你的朋友们没有在用,你也没办法把它当成日常沟通工具。

所以接下来,我将介绍我针对这个问题的解决方案。

在我们的DIM network里,我把每一个“公司”定义为“Service Provider”。和历史上出现过无数的IM创业者(我在这里称其为“挑战者”)一样,DIM network里也有很多的创业者(我在这里称之为“服务提供商”)。

而和传统不同的是,我们这里的SP采用一套共识算法来生成和识别用户身份ID。因此实质上每一个SP所发展出来的用户都是相通的,无论各个SP之间是否已建立数据共享链接。

而以往的IM领域挑战者,包括小公司和一些已经做到比较大用户规模的大公司,最后没有活下来的原因,可能仅仅是因为它不够大。但在DIM network里,一个SP能否存活和发展,跟你的用户数没有关系,而是跟你的服务能力直接相关。

因为所有SP都面对着同一个用户群,只要你的服务质量好,创新增值服务丰富,能满足用户需求,就会有人用,哪怕你的增值服务只针对一小部分用户,这部分用户也不会因为你的用户关系网络不够大而不得不抛弃你;反之,如果某个曾经的大SP不思进取,服务质量逐渐下降,那它的用户们也可以很轻易地转向其他能提供更优质服务的SP。

通过SP的引入,可以解决过去一些纯粹基于p2p技术的IM应用的缺点,比如它们完全靠用户自发(或者给予一定奖励)的方式来建立点对点网络,但是很显然,普通用户的建网能力和服务能力是无法跟专业的SP相提并论的,所以这是过往的基于p2p技术的IM难以发展推广的原因。而通过统一的账号设计,又能解决过去那些IM挑战者们单打独斗的局面,所有小SP可以联合起来,拼接成一张大网络,并且通过自由竞争、而不是靠垄断手段来实现更大的用户价值。

以上就是我想和大家分享的内容,谢谢大家!

以下是互动问答环节

问题一至二来自贺鹏飞【贺鹏飞:Kaleido公有链技术合伙人,前迅雷技术总监,十余年互联网技术研发经验。任职迅雷期间打造会员离线下载业务,覆盖500万付费用户,后在网心科技基于百万级玩客云节点打造出分布式存储平台TCFS。】

问题一

对于普通用户来说,使用基于密钥的、使用签名来校验其身份的账号机制,门槛还是比较高的,比如如何安全的保管密钥等。我们有没有一个能有效简化用户管理和使用密钥的产品方案?

Moky:签名和加密的过程其实是对用户透明的,这些工作应由DIM app自动完成,用户在日常使用中并不需要关心这些技术细节;而密钥保管的问题,一些公信力足够大的SP可以提供托管服务,这个由市场去决定哪些SP的公信力足够大,用户愿意把自己的私钥交给他们托管(托管前还可以加密)。

问题二

对于强调加密、匿名属性的通讯工具,从现实角度来讲,一定会有一些监管方面的风险和压力,DIM是如何平衡和处理这个风险的?

Moky:每一项新技术只要得到了广泛应用,自然会有相应的法律法规跟进,我认为这不是技术研究者的任务,就好像电报技术被发明之后,就会有结合电报业务相关的法律法规出台;后面的电话技术、互联网技术也一样,只要技术发展起来了,使用的范围足够广了,自然就会有相应的立法和执法。

DIMP设计的目的,是为了解决市场被垄断带来的一系列问题,以及中心化服务的信息安全问题,不是用来逃避监管的。每一个加入DIM network的SP都应该考虑到其所在国家的法律要求,主动接受监管。

问题三至六来自张珂良【张珂良:AToken区块链研究员,复旦大学计算机科学与技术博士,曾多次在国内外重要期刊和区块链会议发表论文。曾任中泰金控区块链研究员,专注区块链公链技术、共识算法、智能合约等。】

问题三

DIM打造的去中心化即时通讯协议能够用于跨链吗?和Cosmos的跨链或Polkadot的跨链协议有什么区别?

Moky:您提到的这两个协议主要是用来解决不同区块链之间的数据交换问题的,而且它们也都是基于区块链的。换句话说,它们是引入新的区块链,用来桥接不通的区块链。

而DIMP是直接建立在非对称密码学基础之上的,由于目前所有区块链技术都建立在非对称密码学之上,所以它们的账号地址天然能被DIM兼容,因此跨链通讯没有任何限制。DIMP和上述区块链技术的最显著区别就在于DIMP的信息通讯是p2p的,不依赖公链,所以可以避免了区块链的效率问题,而效率是IM领域至关重要的考量指标之一。

问题四

DIM会有自己的通证吗,类似于ERC20 Token?

Moky:为了最大化地发挥DIMP的去中心化优势,我们需要联合众多的SP共同组建更大的DIM网络,所以我们提出了“SP联盟”的概念。

而为了有效地管理和激励参与者,我们会设计开发一些需要所有SP共同维护和支持的产品,如ANS(Address Name Service)就是其中之一,因此我们会开发一个联盟链,来连接所有SP ,甚至包括用户,来实现网络价值最大化。

顺便提一下,ANS是我们参考传统的DNS提出的新概念,由“SP联盟”里的每一位SP通过共识算法实现的短域名映射增值服务,今后我们还会开发更多的联盟增值服务。

问题五

DIM对传统即时通讯领域主要的改进在哪里?两者是互补的还是竞争关系?

MokyDIMP相对于传统即时通讯领域而言,最具革命性的地方在于其账号体系。传统IM由于账号数据私有(也不得不私有),从而导致了垄断,换句话说,传统IM企业的核心价值在于其用户数据与关系网络。而DIMP提出的是一个开放式的去中心化账号体系,所以传统IM的核心价值可能会受到挑战,但我对DIMP的设想是面向未来的,而未来的互联网将会走向更加扁平化,现有的IM企业要适应这种变化,可能他们需要在这方面多做一些思考。

问题六

目前,DIM在通过区块链技术来实现去中心化的即时通信领域的过程中,有没有竞争对手,目前各自的实现进度如何?

Moky:除了传统的IM以外,现阶段比较热门的端对端加密通讯如Telegram、Mixin 等都是基于中心化用户体系的,它们的安全性主要受到来自两方面的威胁:

1、运营方的行业道德水平制约,因为用户隐私数据全部在中心服务器上,所以运营商可以利用这些数据实现价值变现;2、运营方的安全技术水平制约,频繁出现且无法杜绝的黑客入侵事件就是证明。我认为它们没有很好地认识到通讯的本质。

衡量一个通讯技术或协议的最关键指标是:安全、高效和易扩展。但就高效这一条,目前可以看到的区块链技术是难以解决的。所以我认为DIMP是一个全新的、非常值得关注的技术方向,目前我已经把核心代码在GitHub上开源了,包括Java、Objective-C和Python版,有兴趣可以看一下。

本文为转载内容,授权事宜请联系原著作权人。

评论

暂无评论哦,快来评价一下吧!

下载界面新闻

微信公众号

微博

详解去中心化的DIM即时通讯协议

对比于传统的中心化IM 架构,它们采用的是中心数据库中储存ID+密码的对应关系数据来识别身份,很显然区块链这种身份识别方式完全可以替代中心化的用户身份识别。

文 | 阿里八卦

2019年8月21日,密码极客邀请到了DIM项目的首席科学家Albert Moky来社群做线上分享。

以下是线上分享的全部内容

大家好!我叫Moky,是一名程序员,在服务器端、客户端开发都略有涉猎。本人是数学系毕业的,对算法比较感兴趣,之前研究过AI算法,前几年在看到区块链技术的时候也忍不住研究了一下。最近颇有一些心得,想借此机会和大家分享。

今天我想和大家分享的,是关于“去中心化”技术在IM领域的可行方案。由于我本人之前曾负责过一些IM产品的研发,虽然不算太深入,但对于IM领域的一些产品问题仍然有比较多的认识。

我一直在寻找方法尝试去解决它们,但是IM领域的竞争太过激烈,除了巨头之间的竞争,一些小公司基本没有什么参与机会,直到我找到了“去中心化”的方法。

我对比研究了现有的一些较为知名的IM协议,它们都从某些侧面解决了一部分问题。但是这些协议很多都没能得到广泛的应用,哪怕有一些背后有非常强大的公司在推动也没能成功。我分析了深层次的原因,其实根本原因并不在功能性上,也不在应用了多么酷炫的技术,而在于用户体系。

我们看一下过去比较有代表性的IM协议:最初的开源IM协议主要强调通用性,而在真实性和保密性上基本是空白的,完全靠运营方去保证;区块链技术引入之后,解决了真实性问题,但效率远远不能达到IM的标准,所以很多DApp的体验非常的差;还有现在的一些端对端加密IM可以相对地解决了真实性与效率问题,但仍然有漏洞,被攻击的案例也时有发生。

所以,我决定从根本上去研究一个IM到底最关键的要素是什么,一个好的IM系统架构应该是怎样的。我发现所有的IM网络,基本上可以分成两大类设备:终端,和中间节点。

一个最简单的IM系统结构,应该如上图那样,由用户终端和服务器节点组成。有一些用户直接连接在同一个服务器内,而另一些则可能连接了不同的服务器;而众多的服务器可能分布在全世界不同的地方。

那么,当一个信息从一个用户发送到另一个用户,有哪些步骤是必须的呢?针对前面的系统架构,我发现最根本的就是用户身份验证与信息转发机制;针对同一个服务器和不同服务器,甚至是不同地域不同运营商的服务器,需要有一套最佳路由算法去实现。

以上,就是每一个好的IM所必须的全部设计!那么大家可以看到,这里面其实并没有和你用什么数据库存储信息有关,也不跟运营商有什么不同的资源能力有关,只要中间节点能够准确、快速的将信息转达即可;而身份验证问题,当下主流的IM都是中心化的,然而由上面的分析可以发现,其实只要能够证明身份,与是否中心化并没有必然关系。

在我研究区块链技术的时候,我发现基于非对称密码学的区块链技术采用了一种十分巧妙的“身份证明”解决方案,于是我很自然的就联想到可以应用到DIMP的设计中来。拿BTC地址算法举例(也是DIMP支持的ID算法之一),我们可以通过一套共识算法来生成ID,同时绑定了ID与密码的关系。

对比于传统的中心化IM 架构,它们采用的是中心数据库中储存ID+密码的对应关系数据来识别身份,很显然区块链这种身份识别方式完全可以替代中心化的用户身份识别。

只不过BTC地址算法有一些缺点,比如纯随机字符串可读性非常差,用户很难通过一个BTC地址判断它属于哪个好友,所以后来我研究了一些方法,用来绑定一个识别标志到该地址上,类似于传统IM里的username。

对于ETH地址,或者其他任何区块链地址,都可以通过同样的方式被DIMP所兼容。因为DIMP核心算法是直接建立在非对称密码学基础上的,它本身并不需要依赖任何一条区块链。所以它可以兼容所有区块链账号作为DIM的ID来进行通讯。

我们再来看一下DIMP定义的通讯消息发送和接收过程。作为一个IM应用,每一条消息必须定义的信息字段,主要包括3个:

1、发件人(sender)

2、收件人(receiver)

3、数据内容(data)

而为了证明该信息是sender真实发送而不是伪造的,则必须带有第4个信息:

4、签名信息(signature)

如果该信息不是公开信息,则还需要一个加密方法,我这里采用了非对称加密与对称加密两层加密算法,所以还需要第5个信息:

5、密钥(key)

以上就是一个去中心化的、端对端加密IM应用中必须的数据结构。

可以说,上面的两大部分:身份识别&通讯格式,已经完成了一个去中心化即时通讯应用的全部核心定义。但我上面提到过,一个IM应用能否生存和发展,关键不在于它定义了哪些功能,使用了哪些酷炫的技术,而在于用户体系。在过去20多年的混战中,不计其数的挑战者都失败了,当然每个公司失败的原因有很多,但我发现它们几乎都有同一个特点:用户规模不够。

因为IM不同于其他信息类应用,它是一个“赢者通吃”效应特别强烈的领域。如果你的好友全部在某一个IM应用上,那么就算你对它不是十分满意,你也必须要用它;反之,另一个app无论多么的合你胃口,只要你的朋友们没有在用,你也没办法把它当成日常沟通工具。

所以接下来,我将介绍我针对这个问题的解决方案。

在我们的DIM network里,我把每一个“公司”定义为“Service Provider”。和历史上出现过无数的IM创业者(我在这里称其为“挑战者”)一样,DIM network里也有很多的创业者(我在这里称之为“服务提供商”)。

而和传统不同的是,我们这里的SP采用一套共识算法来生成和识别用户身份ID。因此实质上每一个SP所发展出来的用户都是相通的,无论各个SP之间是否已建立数据共享链接。

而以往的IM领域挑战者,包括小公司和一些已经做到比较大用户规模的大公司,最后没有活下来的原因,可能仅仅是因为它不够大。但在DIM network里,一个SP能否存活和发展,跟你的用户数没有关系,而是跟你的服务能力直接相关。

因为所有SP都面对着同一个用户群,只要你的服务质量好,创新增值服务丰富,能满足用户需求,就会有人用,哪怕你的增值服务只针对一小部分用户,这部分用户也不会因为你的用户关系网络不够大而不得不抛弃你;反之,如果某个曾经的大SP不思进取,服务质量逐渐下降,那它的用户们也可以很轻易地转向其他能提供更优质服务的SP。

通过SP的引入,可以解决过去一些纯粹基于p2p技术的IM应用的缺点,比如它们完全靠用户自发(或者给予一定奖励)的方式来建立点对点网络,但是很显然,普通用户的建网能力和服务能力是无法跟专业的SP相提并论的,所以这是过往的基于p2p技术的IM难以发展推广的原因。而通过统一的账号设计,又能解决过去那些IM挑战者们单打独斗的局面,所有小SP可以联合起来,拼接成一张大网络,并且通过自由竞争、而不是靠垄断手段来实现更大的用户价值。

以上就是我想和大家分享的内容,谢谢大家!

以下是互动问答环节

问题一至二来自贺鹏飞【贺鹏飞:Kaleido公有链技术合伙人,前迅雷技术总监,十余年互联网技术研发经验。任职迅雷期间打造会员离线下载业务,覆盖500万付费用户,后在网心科技基于百万级玩客云节点打造出分布式存储平台TCFS。】

问题一

对于普通用户来说,使用基于密钥的、使用签名来校验其身份的账号机制,门槛还是比较高的,比如如何安全的保管密钥等。我们有没有一个能有效简化用户管理和使用密钥的产品方案?

Moky:签名和加密的过程其实是对用户透明的,这些工作应由DIM app自动完成,用户在日常使用中并不需要关心这些技术细节;而密钥保管的问题,一些公信力足够大的SP可以提供托管服务,这个由市场去决定哪些SP的公信力足够大,用户愿意把自己的私钥交给他们托管(托管前还可以加密)。

问题二

对于强调加密、匿名属性的通讯工具,从现实角度来讲,一定会有一些监管方面的风险和压力,DIM是如何平衡和处理这个风险的?

Moky:每一项新技术只要得到了广泛应用,自然会有相应的法律法规跟进,我认为这不是技术研究者的任务,就好像电报技术被发明之后,就会有结合电报业务相关的法律法规出台;后面的电话技术、互联网技术也一样,只要技术发展起来了,使用的范围足够广了,自然就会有相应的立法和执法。

DIMP设计的目的,是为了解决市场被垄断带来的一系列问题,以及中心化服务的信息安全问题,不是用来逃避监管的。每一个加入DIM network的SP都应该考虑到其所在国家的法律要求,主动接受监管。

问题三至六来自张珂良【张珂良:AToken区块链研究员,复旦大学计算机科学与技术博士,曾多次在国内外重要期刊和区块链会议发表论文。曾任中泰金控区块链研究员,专注区块链公链技术、共识算法、智能合约等。】

问题三

DIM打造的去中心化即时通讯协议能够用于跨链吗?和Cosmos的跨链或Polkadot的跨链协议有什么区别?

Moky:您提到的这两个协议主要是用来解决不同区块链之间的数据交换问题的,而且它们也都是基于区块链的。换句话说,它们是引入新的区块链,用来桥接不通的区块链。

而DIMP是直接建立在非对称密码学基础之上的,由于目前所有区块链技术都建立在非对称密码学之上,所以它们的账号地址天然能被DIM兼容,因此跨链通讯没有任何限制。DIMP和上述区块链技术的最显著区别就在于DIMP的信息通讯是p2p的,不依赖公链,所以可以避免了区块链的效率问题,而效率是IM领域至关重要的考量指标之一。

问题四

DIM会有自己的通证吗,类似于ERC20 Token?

Moky:为了最大化地发挥DIMP的去中心化优势,我们需要联合众多的SP共同组建更大的DIM网络,所以我们提出了“SP联盟”的概念。

而为了有效地管理和激励参与者,我们会设计开发一些需要所有SP共同维护和支持的产品,如ANS(Address Name Service)就是其中之一,因此我们会开发一个联盟链,来连接所有SP ,甚至包括用户,来实现网络价值最大化。

顺便提一下,ANS是我们参考传统的DNS提出的新概念,由“SP联盟”里的每一位SP通过共识算法实现的短域名映射增值服务,今后我们还会开发更多的联盟增值服务。

问题五

DIM对传统即时通讯领域主要的改进在哪里?两者是互补的还是竞争关系?

MokyDIMP相对于传统即时通讯领域而言,最具革命性的地方在于其账号体系。传统IM由于账号数据私有(也不得不私有),从而导致了垄断,换句话说,传统IM企业的核心价值在于其用户数据与关系网络。而DIMP提出的是一个开放式的去中心化账号体系,所以传统IM的核心价值可能会受到挑战,但我对DIMP的设想是面向未来的,而未来的互联网将会走向更加扁平化,现有的IM企业要适应这种变化,可能他们需要在这方面多做一些思考。

问题六

目前,DIM在通过区块链技术来实现去中心化的即时通信领域的过程中,有没有竞争对手,目前各自的实现进度如何?

Moky:除了传统的IM以外,现阶段比较热门的端对端加密通讯如Telegram、Mixin 等都是基于中心化用户体系的,它们的安全性主要受到来自两方面的威胁:

1、运营方的行业道德水平制约,因为用户隐私数据全部在中心服务器上,所以运营商可以利用这些数据实现价值变现;2、运营方的安全技术水平制约,频繁出现且无法杜绝的黑客入侵事件就是证明。我认为它们没有很好地认识到通讯的本质。

衡量一个通讯技术或协议的最关键指标是:安全、高效和易扩展。但就高效这一条,目前可以看到的区块链技术是难以解决的。所以我认为DIMP是一个全新的、非常值得关注的技术方向,目前我已经把核心代码在GitHub上开源了,包括Java、Objective-C和Python版,有兴趣可以看一下。

本文为转载内容,授权事宜请联系原著作权人。