点对点消息
提示
精卫 (JingWei)
的设计仍在逐步改进与完善中,本文将随时发生变化,感兴趣的朋友们可以时刻保持关注;- 在下方的版权声明中有本文作者的联系方式,有不同意见和相关建议的朋友可以与其保持联系;
- 也可在本文底部的评论区登录 Github 后,直接发表您的观点;
版权声明
- 文章作者: flytreeleft - flytreeleft@crazydan.org
- 文章链接: https://studio.crazydan.org/docs/jingwei-store/arch-design/p2p-message
- 版权声明: 本文章采用许可协议《署名 4.0 国际 (CC BY 4.0)》。 转载或商用请注明来自 Crazydan Studio!
中继信道
- 「本地资产库」向「中继服务」进行注册,成功后,由「中继服务」为注册端生成唯一的「连接密钥」和「消息发送密钥」,并由注册端保存两类密钥的公钥。同时中继服务还会为注册端生成唯一的「外部连接地址」,用于其他资产库向其发送消息。
- 消息接收端将「消息发送密钥」的公钥与连接地址提供给发送端。发送端向接收端发送消息时,需通过「消息发送密钥」的公钥加密消息,再通过接收端的连接地址投递到目标接收端。中继服务通过「消息发送密钥」解密发送端的发送消息,再通过「连接密钥」为接收端加密接收消息并发送,从而完成「中继服务」对消息的收发。(提供两类密钥是为了确保各个接收端的「接收信道」和「发送信道」是相互独立且安全的)
- 为确保消息收发端的消息内容安全,还需要接收端为发送端生成唯一的「消息安全密钥」,并在二者建立对等通信时,向发送端提供公钥。发送端向某个接收端发送消息前,需要使用该公钥加密消息内容,最后由接收端使用私钥解密获得消息内容。(确保任意一对「点对点信道」都是独立且安全的)
- 「中继服务」负责为「本地资产库」接收消息,并确保发送给该库的消息能够投递成功。由于消息只有「接收端」许可过(点对点的双发需由唯一的密钥加密通信)的「发起端」才能够发起,故而「中继服务」可对「接收端」按收到的消息数量、消息内容大小等方式进行计费。
- 「中继服务」为收发消息的两端均能够访问到的公共服务,所以,发送端和接收端仅需要经过一个中继即可完成消息收发,不需要多个中继转发。对于两端可通过其他方式实现互连的情况,也不需要任何中继服务,直接通过两端的可访问地址(如IPv6、内网穿透等)建立连接即可。