DIM的开源代码目前共有27个库,其中有7类共22个核心库。核心库所用语言实现情况如上图所示。
各个库的功用如下:
mkm “名可名”——账户模块:
-
介绍了一种用于去中心化用户身份验证的通用帐户模块。
-
实现去中心化的用户身份认证技术(用户身份由非对称密码学验证确认)
dkd “道可道”——消息模块:
-
介绍了一种用于去中心化即时通讯的通用消息模块。
-
实现基于端对端加密的安全通讯技术(端对端加密通讯消息需要用到对称与非对称两层密钥)
-
确保信息不被任何中间节点监听窃取,防止第三方冒充篡改,从而实现安全可靠的去中心化通讯。
core:
-
定义了meta命令协议、Profile命令协议
-
规定几个常见的消息内容类型的格式规范。
常见的消息内容类型:文本消息、文件消息、图片消息、语音消息、视频消息、网页消息、引用回复、系统命令、转发消息。 -
实现了群组内的操作指令,如建群、添加/驱逐群成员、退群、群发消息。
-
管理所有实体的meta
-
管理对话的密钥
-
处理消息转换
mkm与dkd共同组成core。
sdk:
-
注册用户帐户、创建并上传用户配置文件
-
处理连接和握手、搜索/握手命令处理器
-
打包并发送命令到station
-
缓存即时消息等
-
用4种语言实现,其中sdk.js是用javascript实现的去中心化通讯核心源代码,在浏览器内核环境下运行去中心化技术。这意味着DIM技术已可以与跨端技术、H5技术结合,广泛应用在网页端的服务场景中。 (demo见demo-web库)
-
有加密及密钥管理方面相关的功能
-
定义了3级信息格式:
①原始信息包(Instant Message)—— 发送方发出的信息、接收方收到后的信息
②加密信息包(Secure Message)—— 客户端发出信息前,先对原始信息进行加密所得的中间信息包
③网络传输包(Reliable Message)—— 用发送方私钥对中间信息包进行签名, 最终得到的网络信息包
client:
即客户端源码,功能包括但不限于:
-
实现用户认证和消息传递
-
访问数据库以加载/保存用户的私钥、meta和配置文件
-
重用对称密钥、转换和发送/接收消息
demo:
demo源码(Android端、iOS端、mac端、web端)
station:
位于client层级,具有两个重要功能:
-
离线时缓存消息
-
实现meta的数据交换
其他功能包含但不限于:
-
支持通讯密钥和meta.key分离,降低“历史攻击”的风险;
-
收到客户端的连接请求时确认对方身份是否合法,以正确的投递信息包;
-
协助DIM网络计算最短传输路径,然后将登录命令用广播消息发送出去;
-
追踪用户信息包到达情况等
htmlpages:
-
配合station完成辅助功能包括但不限于:
-
一些非核心层但为应用层方面的功能:在服务端保管用户的头像、缓存图片消息等
-
处理密码重置邮件
-
验证应用程序的用户身份
-
负责新用户的注册和验证
-
定义应用程序的命令调度、为应用程序注册命令
-
获取未经身份验证的用户应该重定向到的路径。
-
提供在启用维护模式时可以访问的URIs
-
处理传入请求
-
检测应用程序可信代理的标头
-
报告或记录异常:列出未报告的异常类型、验证异常的输入、报告HTTP响应异常等
-
dimchat.github.io:
网站https://dimchat.github.io的html
dimchat-web:
官网dim.chat的源码
DIMP:
-
主要描述DIMP协议的中心思想与核心内容
-
介绍了一种为即时消息(IM)设计的新协议和用于开发去中心化IM应用程序的体系结构。 该软件通过端到端加密提供账户和账户之间的安全通信,包括两个部分:用户识别和消息传递
docs-cn:
-
中文版技术白皮书
-
阐述了DIMP作为人与人社交产品的基础,作为跨区块链、跨企业的数据交换工具,乃至应用到智能设备、联网通讯的底层的原因和特性
暂无评论
要发表评论,您必须先 登录