各个库的用途简介 | DIM开源代码库学习笔记(一)

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作为人与人社交产品的基础,作为跨区块链、跨企业的数据交换工具,乃至应用到智能设备、联网通讯的底层的原因和特性

暂无评论

相关推荐

微信扫一扫,分享到朋友圈

DIM白皮书(中文版)