CN114205093B - 区块链消息传输方法、装置、客户端及存储介质 - Google Patents
区块链消息传输方法、装置、客户端及存储介质 Download PDFInfo
- Publication number
- CN114205093B CN114205093B CN202111538853.7A CN202111538853A CN114205093B CN 114205093 B CN114205093 B CN 114205093B CN 202111538853 A CN202111538853 A CN 202111538853A CN 114205093 B CN114205093 B CN 114205093B
- Authority
- CN
- China
- Prior art keywords
- message
- client
- topic
- link
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请提供一种区块链消息传输方法、装置、客户端及存储介质,该方法通过第一客户端生成发布消息指令,该指令携带已加密待发送消息和第一客户端对应的返回地址等,该地址根据第一客户端接收返回消息的第一链路确定,然后,对上述指令进行加密,根据第一客户端发布消息的第二链路,发布加密后的消息,直至话题处理节点接收到相应消息进行解密,获得上述指令进行推送,以使第二客户端获得待发送消息。其中,第一客户端通过第二链路发布消息,话题处理节点不知道消息来源;第一客户端对消息进行加密,第一客户端的区块链节点并不知道这条消息的内容;第二客户端收到消息,最多知道返回地址的首个转发节点,提高区块链上信息匿名传输的安全性。
Description
技术领域
本申请涉及金融科技(Fintech)的区块链技术,尤其涉及一种区块链消息传输方法、装置、客户端及存储介质。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技转变,区块链技术也不例外,但由于金融行业的安全性、实时性要求,其对区块链技术提出更高的要求。
当前分布式存储系统在金融行业中应用越来越广泛。区块链系统是一种多中心、防篡改、防抵赖的分布式存储系统,因此,区块链系统在金融行业中应用越来越多。在区块链系统中,以AMOP方案为例,消息是基于发布-订阅的,订阅者的客户端可以订阅某个话题,而发布者的客户端向某个话题发布消息的时候,区块链节点会将该消息路由给该话题的所有订阅者。其中,上述话题可以分为普通话题和私有话题。对于普通话题,订阅者可以直接订阅话题,没有任何准入限制、加密保护等。对于私有话题,其主要用于机构之间安全的点对点通信。在目前的方案中,订阅者订阅话题需要和发布者进行身份认证,认证通过后才能订阅成功。
然而,在上述方案中私有话题通过对订阅者和发布者进行身份认证来发布-订阅,使得私有话题存在一个缺陷,即安全性较差(例如在上述方案中,虽然订阅者和发布者的客户端无法再监听到私有话题的消息了,但是订阅者和发布者对应的区块链节点仍然具有监听这个消息的能力)。这样可能会导致商业机密泄露,而且如果存在恶意节点,恶意监听消息,可能造成难以估量的损失。
发明内容
为解决现有技术中存在的问题,本申请提供一种区块链消息传输方法、装置、客户端及存储介质。
第一方面,本申请实施例提供一种区块链消息传输方法,所述方法应用于第一客户端,所述第一客户端对应区块链系统中的一区块链节点,所述方法包括:
根据待发布话题,生成发布消息指令,所述发布消息指令携带所述待发布话题的标识、已加密的待发送消息和所述第一客户端对应的返回地址,其中,所述第一客户端对应的返回地址根据所述第一客户端在所述区块链系统中接收返回消息的第一链路确定;
利用所述区块链系统中的话题处理节点,对所述发布消息指令进行加密,获得第一消息;
基于所述第一客户端在所述区块链系统中发布消息的第二链路,对所述第一消息进行加密,获得第二消息;
在对应的区块链节点,根据所述第二链路,发布所述第二消息,直至所述话题处理节点接收到所述第一消息,并对所述第一消息进行解密,获得所述发布消息指令,根据所述待发布话题的标识,获得第二客户端对应的返回地址,并根据所述第二客户端对应的返回地址,推送所述发布消息指令,以使所述第二客户端基于对应的区块链节点,接收到所述发布消息指令,对所述已加密的待发送消息进行解密,获得所述待发送消息。
第二方面,本申请实施例提供另一种区块链消息传输方法,所述方法应用于第二客户端,所述第二客户端对应区块链系统中的一区块链节点,所述方法包括:
基于对应的区块链节点,接收所述区块链系统中的话题处理节点推送的发布消息指令,所述发布消息指令为第一客户端根据待发布话题生成的,所述发布消息指令携带所述待发布话题的标识、已加密的待发送消息和所述第一客户端对应的返回地址,其中,所述第一客户端对应的返回地址根据所述第一客户端在所述区块链系统中接收返回消息的第一链路确定,所述发布消息指令为所述第一客户端利用所述话题处理节点,对所述发布消息指令进行加密,获得第一消息,并基于所述第一客户端在所述区块链系统中发布消息的第二链路,对所述第一消息进行加密,获得第二消息,根据所述第二链路,发布所述第二消息后,由所述话题处理节点接收到所述第一消息,并对所述第一消息进行解密后获得的;
对所述已加密的待发送消息进行解密,获得所述待发送消息。
第三方面,本申请实施例提供一种区块链消息传输装置,所述装置应用于第一客户端,所述第一客户端对应区块链系统中的一区块链节点,所述装置包括:
第一指令生成模块,用于根据待发布话题,生成发布消息指令,所述发布消息指令携带所述待发布话题的标识、已加密的待发送消息和所述第一客户端对应的返回地址,其中,所述第一客户端对应的返回地址根据所述第一客户端在所述区块链系统中接收返回消息的第一链路确定;
第一信息加密模块,用于利用所述区块链系统中的话题处理节点,对所述发布消息指令进行加密,获得第一消息;
第二信息加密模块,用于基于所述第一客户端在所述区块链系统中发布消息的第二链路,对所述第一消息进行加密,获得第二消息;
信息发布模块,用于在对应的区块链节点,根据所述第二链路,发布所述第二消息,直至所述话题处理节点接收到所述第一消息,并对所述第一消息进行解密,获得所述发布消息指令,根据所述待发布话题的标识,获得第二客户端对应的返回地址,并根据所述第二客户端对应的返回地址,推送所述发布消息指令,以使所述第二客户端基于对应的区块链节点,接收到所述发布消息指令,对所述已加密的待发送消息进行解密,获得所述待发送消息。
第四方面,本申请实施例提供另一种区块链消息传输装置,所述装置应用于第二客户端,所述第二客户端对应区块链系统中的一区块链节点,所述装置包括:
第一信息接收模块,用于基于对应的区块链节点,接收所述区块链系统中的话题处理节点推送的发布消息指令,所述发布消息指令为第一客户端根据待发布话题生成的,所述发布消息指令携带所述待发布话题的标识、已加密的待发送消息和所述第一客户端对应的返回地址,其中,所述第一客户端对应的返回地址根据所述第一客户端在所述区块链系统中接收返回消息的第一链路确定,所述发布消息指令为所述第一客户端利用所述话题处理节点,对所述发布消息指令进行加密,获得第一消息,并基于所述第一客户端在所述区块链系统中发布消息的第二链路,对所述第一消息进行加密,获得第二消息,根据所述第二链路,发布所述第二消息后,由所述话题处理节点接收到所述第一消息,并对所述第一消息进行解密后获得的;
信息处理模块,用于对所述已加密的待发送消息进行解密,获得所述待发送消息。
第五方面,本申请实施例提供一种客户端,包括:
处理器;
存储器;以及
计算机程序;
其中,所述计算机程序被存储在所述存储器中,并且被配置为由所述处理器执行,所述计算机程序包括用于执行如第一方面或第二方面所述的方法的指令。
第六方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序使得服务器执行第一方面或第二方面所述的方法。
第七方面,本申请实施例提供一种计算机程序产品,包括计算机指令,所述计算机指令被处理器执行第一方面或第二方面所述的方法。
本申请实施例提供的区块链消息传输方法、装置、客户端及存储介质,该方法通过第一客户端(如发布者的客户端)生成发布消息指令,该发布消息指令携带待发布话题的标识、已加密的待发送消息和第一客户端对应的返回地址,其中,该返回地址根据第一客户端在区块链系统中接收返回消息的第一链路确定,进而,利用话题处理节点和第一客户端发布消息的第二链路,对上述发布消息指令进行加密,从而,根据第二链路,发布加密后的消息,直至话题处理节点接收到相应消息进行解密,获得上述发布消息指令,并根据上述待发布话题的标识,获得第二客户端(如订阅者的客户端)对应的返回地址,推送上述发布消息指令,以使第二客户端接收到上述发布消息指令,获得待发送消息。其中,由于第一客户端通过第二链路发布消息,话题处理节点是不知道消息的来源;第一客户端对应的区块链节点虽然知道发布者发送了一条消息,但由于第一客户端对消息进行了加密,其并不知道这条消息的内容是什么;第二客户端接收到了消息,最多知道返回地址的首个转发节点,但真正的发布人是谁,并不清楚,解决现有私有话题通过对订阅者和发布者进行身份认证来发布-订阅,存在安全性较差的问题,降低商业机密泄露的风险,减少相应的损失。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种AMOP方案中,区块链系统的结构示意图;
图2为本申请实施例提供的图1所示系统进行消息转发的示意图;
图3为本申请实施例提供的一种区块链消息传输系统架构示意图;
图4为本申请实施例提供的一种区块链消息传输方法的流程示意图;
图5为本申请实施例提供的一种客户端发布消息的示意图;
图6为本申请实施例提供的一种发布者发布消息,订阅者接收信息的示意图;
图7为本申请实施例提供的一种订阅者回复消息,接收者接收消息的示意图;
图8为本申请实施例提供的另一种区块链消息传输方法的流程示意图;
图9为本申请实施例提供的一种订阅者获得返回地址的示意图;
图10为本申请实施例提供的一种区块链消息传输装置的结构示意图;
图11为本申请实施例提供的另一种区块链消息传输装置的结构示意图;
图12A示出了本申请客户端的一种可能的结构示意图;
图12B示出了本申请客户端的一种可能的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”及“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在区块链系统中,AMOP是一种借助区块链网络作为路由网络,使两个客户端直接进行通信的方案,用于解决分属两个不同内网的程序无法互相直连的问题。在AMOP方案中,系统的结构如图1所示,它是一个典型的联盟链架构,每个机构会部署一个节点,节点有一个编号组件成区块链网络。同时,每个机构(例如A,B,C…)还会有一个客户端(例如机构A客户端,机构B客户端,机构C客户端…)连接着各自机构的节点(例如机构A节点,机构B节点,机构C节点…),用以收发数据。当机构A的客户端要给机构B的客户端发送数据时,由于它们不处于同一个网段,无法直接建立连接,因此需要借助区块链网络本身作为路由网络。当某一机构,例如机构A发布一条消息,区块链网络会把该消息转发给对该消息感兴趣的机构,例如C和D,如图2所示。
现有区块链系统中,以AMOP方案为例,消息是基于发布-订阅的,订阅者的客户端可以订阅某个话题,而发布者的客户端向某个话题发布消息的时候,区块链节点会将该消息路由给该话题的所有订阅者。其中,上述话题可以分为普通话题和私有话题。对于普通话题,订阅者可以直接订阅话题,没有任何准入限制、加密保护等。对于私有话题,其主要用于机构之间安全的点对点通信。在目前的方案中,订阅者订阅话题需要和发布者进行身份认证,认证通过后才能订阅成功。
假如发布者(记为Alice)和订阅者(记为Bob)想建立一个私有话题A以交换一些商业数据例如订单。假定Alice和Bob都知道对方的公钥,那么二者建立私有话题、完成通信的流程可以如下:
1)发布者Alice请求在区块链上发布一个私有话题A,请求格式可以如下述示例:
字段 | 值 |
发布人 | Alice |
订阅人列表 | [](目前还没有) |
订阅人状态 | [](目前还没有) |
话题名称 | A |
话题类型 | 私有 |
话题用途 | 通信 |
2)区块链节点收到请求后,在自身的存储中创建私有话题记录,数据结构可以如下:
字段 | 值 |
发布人 | Alice |
订阅人列表 | [](目前还没有) |
订阅人状态 | [](目前还没有) |
话题名称 | A |
话题类型 | 私有 |
话题用途 | 通信 |
3)区块链节点向其他节点广播话题信息,即上述记录,区块链网络中的其他节点也在自己内存中创建这样一条记录:
字段 | 值 |
发布人 | Alice |
订阅人列表 | [](目前还没有) |
订阅人状态 | [](目前还没有) |
话题名称 | A |
话题类型 | 私有 |
话题用途 | 通信 |
4)订阅者Bob请求在区块链上订阅同一个私有话题A,请求格式如下:
字段 | 值 |
订阅人 | Bob |
话题名称 | A |
话题属性 | 私有 |
话题用途 | 通信 |
5)区块链节点收到订阅请求后,广播该请求,每个收到请求的节点都在自己的内存中更新订阅信息如下:
字段 | 值 |
发布人 | Alice |
订阅人列表 | [Bob] |
订阅人状态 | [待认证] |
话题名称 | A |
话题类型 | 私有 |
话题用途 | 通信 |
6)创建一个普通话题B,用于认证话题A,即在自身存储中添加一条如下格式的记录:
字段 | 值 |
发布人 | Alice |
订阅人 | Bob |
话题名称 | B |
话题属性 | 普通 |
话题用途 | 认证A |
7)区块链节点和其他节点广播话题B的信息,使区块链网络中的其他节点也在自己内存中创建这样一条记录:
字段 | 值 |
订阅人 | Bob |
话题名称 | B |
话题属性 | 普通 |
话题用途 | 认证A |
8)连接着发布者Alice的节点现在将该话题B传输给发布者Alice;同理,链接着订阅者Bob的节点现在将话题B传输给订阅者Bob。
9)发布者Alice创建随机数n,发往话题B,请求格式如下:
字段 | 值 |
发布人 | Alice |
订阅人 | Bob |
话题名称 | B |
消息内容 | n |
10)区块链节点将该随机数路由转发给Bob(例如利用多播、泛洪等技术)。
11)订阅者Bob用私钥对随机数进行签名,并将消息回复给话题B:
字段 | 值 |
发布人 | Bob |
订阅人 | Alice |
话题名称 | B |
消息内容 | sig(n,Bob) |
12)区块链节点将该签名路由转发给Alice(例如利用多播、泛洪等技术)。Alice收到消息后,用Bob的公钥验证签名sig,将验证结果告知区块链节点,消息格式:
字段 | 值 |
订阅人 | Bob |
话题名称 | B |
验证结果 | 成功 |
13)如果验证成功,并广播给其他节点,每一个收到消息的区块链节点都在自身中修改Bob的认证状态:
字段 | 值 |
发布人 | Alice |
订阅人列表 | [Bob] |
订阅人状态 | [已认证] |
话题名称 | A |
话题类型 | 私有 |
话题用途 | 通信 |
14)接下来,Alice如果给话题A发消息,则区块链节点会将消息路由转发给订阅者Bob,反之亦然。
但是,在上述方案中,私有话题存在一个缺陷,即安全性较差(例如在上述方案中,虽然订阅者和发布者的客户端无法再监听到私有话题的消息了,但是订阅者和发布者对应的区块链节点仍然具有监听这个消息的能力,如监听谁创建了什么话题,谁订阅了什么话题,谁给哪个话题发了什么消息,以及谁给谁回复了什么消息等)。这样可能会导致商业机密泄露,而且如果存在恶意节点,恶意监听消息,可能造成难以估量的损失。
因此,本申请实施例提出一种区块链消息传输方法,通过第一客户端(如发布者的客户端)生成发布消息指令,该发布消息指令携带待发布话题的标识、已加密的待发送消息和第一客户端对应的返回地址,其中,该返回地址根据第一客户端在区块链系统中接收返回消息的第一链路确定,进而,利用话题处理节点,以及第一客户端发布消息的第二链路,对上述发布消息指令进行加密,从而,根据第二链路,发布加密后的消息,直至话题处理节点接收到相应消息进行解密,获得上述发布消息指令,并根据上述待发布话题的标识,获得第二客户端(如订阅者的客户端)对应的返回地址,推送上述发布消息指令,以使第二客户端接收到上述发布消息指令,获得待发送消息。其中,由于第一客户端通过第二链路发布消息,话题处理节点是不知道消息的来源;第一客户端对应的区块链节点虽然知道发布者发送了一条消息,但由于第一客户端对消息进行了加密,其并不知道这条消息的内容是什么;第二客户端接收到了消息,最多知道返回地址的首个转发节点,但真正的发布人是谁,并不清楚,提高区块链上消息匿名传输的安全性。
其中,客户端以传输层安全性协议(Transport Layer Security,TLS)的方式连接着所属机构或组织的区块链节点也可以被称为网关节点。话题处理节点为专门保存话题相关信息的节点。
可选地,本申请提供的一种区块链消息传输方法,可以适用于图3所示的区块链消息传输系统架构示意图,如图3所示,该系统可以包括第一客户端(如发布者的客户端)、第一客户端对应的区块链节点、第二客户端(如订阅者的客户端)、第二客户端对应的区块链节点,以及话题处理节点。其中,上述节点在同一区块链系统中。该区块链系统除包括上述节点外还可以包括其它节点,图3为了方便理解本申请不再示出。
在具体实现过程中,第一客户端生成发布消息指令,该发布消息指令携带待发布话题的标识、已加密的待发送消息和第一客户端对应的返回地址,其中,该返回地址根据第一客户端在区块链系统中接收返回消息的第一链路确定。然后,第一客户端利用话题处理节点,以及第一客户端发布消息的第二链路,对上述发布消息指令进行加密,在对应的区块链节点,根据第二链路,发布加密后的消息。话题处理节点接收到相应消息后进行解密,获得上述发布消息指令,并根据上述待发布话题的标识,获得第二客户端对应的返回地址,推送上述发布消息指令。第二客户端基于对应的区块链节点,接收到上述发布消息指令,进而获得待发送消息。其中,话题处理节点是不知道消息的来源,因此不知道消息的发送人是谁。客户端对应的区块链节点虽然知道发布者发送了一条消息,但并不知道这条消息的内容是什么。订阅者接收到了消息,但是最多知道返回地址的首个转发节点,真正的发布人是谁,并不清楚,解决现有私有话题通过对订阅者和发布者进行身份认证来发布-订阅,存在安全性较差的问题。
应理解,上述第一客户端可以通过处理器读取存储器中的指令并执行指令的方式实现,也可以通过芯片电路实现。
上述系统仅为一种示例性系统,具体实施时,可以根据应用需求设置。
下面以几个实施例为例对本申请的技术方案进行描述,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图4为本申请实施例提供的一种区块链消息传输方法的流程示意图,本实施例的执行主体可以为图3所示实施例中的第一客户端,具体可以根据实际情况确定。如图4所示,本申请实施例提供的区块链消息传输方法包括如下步骤:
S401:根据待发布话题,生成发布消息指令,该发布消息指令携带上述待发布话题的标识、已加密的待发送消息和第一客户端对应的返回地址,其中,第一客户端对应的返回地址根据第一客户端在上述区块链系统中接收返回消息的第一链路确定。
这里,第一客户端可以理解为发布者的客户端,第二客户端可以理解为订阅者的客户端。发布者和订阅者需要使用一个私有话题来进行通信。他们事先可以协商好这个话题的名称和一个对称密钥(也可以称为话题密钥)。
第一客户端根据待发布话题生成发布消息指令可以如下所示:
字段 | 值 |
指令类型 | 发布消息 |
话题名称 | DemoTopic |
消息 | 已加密的待发送消息,已用话题密钥加密 |
第一客户端对应的返回地址 | msgL|L |
即上述发布消息指令可以包括待发布话题的标识(例如话题名称,如DemoTopic)、已加密的待发送消息(已用上述话题密钥加密)、第一客户端对应的返回地址(msgL|L)。
这里,上述第一客户端所在区块链系统可以有许多节点,例如有26个节点,为方便取数,可以分别记为ABCDE…XYZ。发布者(如Alice)需要和订阅者(如Bob)分属于不同机构,Alice和Bob各自连接着一个节点(如第一客户端连接节点L,第二客户端连接节点G)。如现在Alice需要和Bob交换订单数据,订单涉及到两家企业的商业机密和用户隐私,Alice和Bob决定使用一个私有话题来进行通信。其中,Alice和Bob均知道对方的公钥,而且知道网络中每个节点的公钥。
上述第一客户端可以获取上述第一链路中各个区块链节点的公钥和标识,进而,按照第一预设顺序,利用上述第一链路中各个区块链节点的公钥,对上述第一客户端的用户信息和第一链路中各个区块链节点的标识进行层层加密处理,获得上述第一客户端对应的返回地址。
示例性的,上述第一客户端可以先从上述区块链系统中确定一条链路作为接收返回消息的第一链路,比如L,M,N,,即接收返回消息时,消息通过D->L->M->N的顺序路由到上述第一客户端。然后,上述第一客户端对上述第一链路进行处理,获得上述第一客户端对应的返回地址。如上述第一客户端首先将第一客户端的用户信息(例如证书里的身份等)用上述第一链路按倒序的第一区块链节点的公钥加密,例如用上述N的公钥加密,得到msgN。然后上述第一客户端将上述加密的信息和上述按倒序的第一区块链节点的标识拼接在一起,用上述第一链路按倒序的第二区块链节点的公钥加密,例如将上述给N的信息和N节点的身份标识号(Identity document,id)拼一起即msgN|N,用M的公钥加密得到msgM。后续同理,上述第一客户端将加密后的信息和上述按倒序的第二区块链节点的标识拼接在一起,用上述第一链路按倒序的第三区块链节点的公钥加密,例如将上述给M的信息和M节点的id拼一起即msgM|M,用L的公钥加密,得到msgL。最后,上述第一客户端将加密后的信息与上述按倒序的第三区块链节点的标识拼在一起,直至上述第一链路的最后一个节点,例如把上述给L的信息和L节点的id拼在一起,得到msgL|L,这就是返回地址。
另外,上述第一客户端在上述根据待发布话题,生成发布消息指令之前,还可以生成创建话题指令,该创建话题指令携带上述待发布话题的标识,进而,利用上述话题处理节点,对上述创建话题指令进行加密,获得第三消息,基于第一客户端在上述区块链系统中发布消息的第三链路,对上述第三消息进行加密,获得第四消息,在对应的区块链节点,根据上述第三链路,发布上述第四消息,直至上述话题处理节点接收到上述第三消息,并对上述第三消息进行解密,获得上述创建话题指令,根据上述待发布话题的标识进行话题发布记录。
示例性的,上述第一客户端生成的发布消息指令可以如下所示:
字段 | 值 |
指令类型 | 创建话题 |
话题名称 | DemoTopic |
上述第一客户端利用上述话题处理节点,对上述创建话题指令进行加密,获得第三消息,即上述第一客户端可以把上述创建话题指令用D节点的公钥加密,作为后续递交给D的消息,其中,指令加密的过程可以为:
上述第一客户端先将上一步的指令序列化为json或二进制,例如json方式的话会得到下面字符串:
{
“type”(类型):“createTopic”(创建主题),
“typeName”(类型名称):“DemoTopic”
}
然后上述第一客户端使用D节点的公钥对该数据加密,得到msgD。
上述第一客户端可以先确定一条路由链路作为第一客户端在上述区块链系统中发布消息的第三链路,按预设方式,例如倒序的方式,使用第三链路中各个区块链节点的公钥层层加密。该层层加密可以理解为:假设选择的链路是A,B,C(A作为第一个节点),那么进行如下加密:
把上述第三消息和上述话题处理节点的标识拼在一起,用上述第三链路按倒序的第一区块链节点的公钥加密,例如把前述递交给D的消息msgD和D节点id字符串拼接拼一起,即msgD|D,然后对该消息使用C的公钥加密,得到msgC;
把加密后的消息和上述按倒序的第一区块链节点的标识拼在一起,用上述第三链路按倒序的第二区块链节点的公钥加密,例如把上述递交给C的消息msgC和C节点id拼一起,即msgC|C,然后对该消息用B的公钥加密,得到msgB;
同理,把加密后的消息和上述按倒序的第二区块链节点的标识拼在一起,用上述第三链路按倒序的第三区块链节点的公钥加密,重复上述操作,直至上述第三链路按倒序的最后一个区块链节点,得到第四消息,例如把上述递交给B的消息msgB和B节点id拼一起,即msgB|B,然后对该消息用A的公钥加密,得到msgA。
上述第一客户端在对应的区块链节点,根据上述第三链路,发布上述第四消息,直至上述话题处理节点接收到上述第三消息,即上述第一客户端将msgA消息递交给A,A节点用自己的私钥解密msgA,根据前文,将得到以下信息:msgB和B。然后,A节点将msgB转给B,B做类似的事情,以此类推,直到D节点接收消息到msgD,具体处理过程如图5所示。
上述话题处理节点接收到上述第三消息后,可以对上述第三消息进行解密,获得上述创建话题指令,并根据上述待发布话题的标识进行话题发布记录,例如在话题表中添加话题记录。如果解密消息后,话题不存在,则上述话题处理节点可以在话题表中添加一个话题记录:
话题 | 订阅者 |
DemoTopic | Null(空) |
上述话题处理节点还可以将订阅表通过泛洪等现有技术同步给网络其他节点,保证冗余等。
在本申请实施例中,就话题创建而言,由于第一客户端通过第三链路发布消息,话题处理节点是不知道消息的来源,因此保证了不知道话题的发送人是谁。第一客户端对应的区块链节点虽然知道创建者发送了一条消息,但由于第一客户端对消息进行了加密,其并不知道这条消息的内容是什么,甚至连它的类型都不知道,无法区分是话题创建、话题订阅、消息发布等,解决现有私有话题通过对订阅者和发布者进行身份认证来发布-订阅,存在安全性较差的问题,降低商业机密泄露的风险。
S402:利用上述区块链系统中的话题处理节点,对上述发布消息指令进行加密,获得第一消息。
其中,上述第一客户端可以根据上述待发布话题,在上述区块链系统中确定话题处理节点。例如,上述第一客户端据话题名称字符串(比如DemoTopic),执行安全散列算法(Secure Hash Algorithm,SHA)256哈希,得到一个256位的大整数,再使用得到的大整数,对系统中的节点数目(如上述26个节点)求余数,得到的余数对应到的节点,就是话题处理节点,类似于:余数为0,话题节点为A;余数为1,话题节点为B;…。在本申请实施例中,假定得到的话题处理节点是D节点。
这里,上述第一客户端可以利用上述区块链系统中的话题处理节点的公钥,对上述发布消息指令进行加密,获得第一消息,如把上述发布消息指令用D节点公钥加密,得到消息msgD。
S403:基于第一客户端在上述区块链系统中发布消息的第二链路,对上述第一消息进行加密,获得第二消息。
示例性的,上述第一客户端可以按照第二预设顺序,利用上述第二链路中各个区块链节点的公钥,对上述第一消息进行层层加密处理,获得上述第二消息。例如,上述第一客户端可以首先确定一条发布链路作为第一客户端在上述区块链系统中发布消息的第二链路,然后按倒序的方式,使用公钥层层加密,如下所示,假设选择的链路是L,B,C,进行如下加密:
把上述第一消息和上述话题处理节点的标识拼在一起,用上述第二链路按倒序的第一区块链节点的公钥加密,例如把给D的消息和D节点id拼一起即msgD,用C的公钥加密得到msgC;
把加密后的消息和上述按倒序的第一区块链节点的标识拼在一起,用上述第二链路按倒序的第二区块链节点的公钥加密,例如把上述递交给C的消息和C节点id拼一起即msgC|C,用B的公钥加密得到msgB;
同理,把加密后的消息和上述按倒序的第二区块链节点的标识拼在一起,用上述第二链路按倒序的第三区块链节点的公钥加密,重复上述操作,直至上述第二链路按倒序的最后一个区块链节点,得到第二消息,例如把上述递交给B的消息和B节点id拼一起即msgB|B,用L节点的公钥加密得到msgL。
S404:在对应的区块链节点,根据上述第二链路,发布上述第二消息,直至上述话题处理节点接收到上述第一消息,并对上述第一消息进行解密,获得上述发布消息指令,根据上述待发布话题的标识,获得第二客户端对应的返回地址,并根据第二客户端对应的返回地址,推送上述发布消息指令,以使第二客户端基于对应的区块链节点,接收到上述发布消息指令,对上述已加密的待发送消息进行解密,获得上述待发送消息。
这里,上述处理装置在获得上述第二消息后,可以在对应的区块链节点,根据上述第二链路,发布上述第二消息,直至上述话题处理节点接收到上述第一消息,例如上述处理装置在对应的区块链节点,将上述第二消息交给L,L节点用自己的私钥解密,得到以下信息:msgB和B。然后,L转发给节点B,以此类推,直到D节点接收消息。D节点此时拿到了完整的发送话题请求,包括:话题名称、已用话题密钥加密的消息内容和第一客户端返回地址(发布人返回地址)。
上述话题处理节点可以根据上述待发布话题的标识,获得第二客户端对应的返回地址,例如D节点取出话题名称字段,如果话题存在,则提取每一个订阅者的返回地址。上述话题处理节点可以进一步根据上述第二客户端对应的返回地址,推送上述发布消息指令,以使第二客户端基于对应的区块链节点,接收到上述发布消息指令。例如D节点构造消息中转请求,包括:发送话题请求(话题名称、已加密的消息内容和发布人返回地址)和订阅人返回地址。D节点取出内层订阅地址和路由节点,发现是交给F节点的,于是将内层订阅地址,替换到中转请求中,并递交给F节点。F节点用私钥解密订阅人返回地址,类似于前文做法,取出内层订阅地址和路由节点,发现应继续递交给E,于是将内层订阅地址替换到中转请求中的订阅人返回地址,然后路由给E。E节点用私钥解密订阅人返回地址,类似于前文做法,取出内层订阅地址和路由节点,发现应继续递交给G,于是将内层订阅地址替换到中转请求中的订阅人返回地址,然后路由给E。G节点收到消息后,根据里面记录的订阅者信息,推送给第二客户端(即订阅者的客户端),具体过程如图6所示。
进一步地,上述第二客户端对上述已加密的待发送消息进行解密,获得待发送消息。
另外,上述第一客户端根据上述第二链路,发布上述第二消息之后,还可以基于对应的区块链节点,接收上述第二客户端根据上述第一客户端对应的返回地址返回的回复消息,该回复消息携带已加密的回复内容,进而,对上述已加密的回复内容进行解密,获得上述第二客户端的回复内容。
示例性的,上述第二客户端在获得上述待发送消息后可以根据第一客户端返回地址(发布人返回地址),构造回复消息指令,由以下内容构成:回复内容,已用话题密钥加密和第一客户端返回地址(发布人返回地址)。
上述第二客户端根据第一客户端返回地址返回上述回复消息,第一客户端接收上述回复消息,对上述已加密的回复内容进行解密,获得上述第二客户端的回复内容。例如第二客户端(订阅人的客户端)将回复消息交给网关G,网关G根据发布人返回地址,取出内层返回地址,替换到发布人返回地址,然后提交给L节点,类似于前文,不再赘述。L节点用私钥解密发布人返回地址,发现是一个应投递给M的返回地址,因此取出内层返回地址并替换发布人返回地址后,递交给M。反复上述过程,直到N收到消息。N解密开后,发现是给发布人信息的,如果第一客户端(发布者的客户端)还在线,就直接发给发布者的客户端。发布者的客户端用话题密钥解密,至此,对话完成。其中,具体过程参见图7。
这里,就消息回复而言,链路上的任何一个节点(除了第一客户端对应的区块链节点)只知道下一个转发地址,却不知道最终要转发到哪里;而网关并不知道真正的消息内容是什么,因为已经被话题密钥加密。
本申请实施例,通过第一客户端(如发布者的客户端)生成发布消息指令,该发布消息指令携带待发布话题的标识、已加密的待发送消息和第一客户端对应的返回地址,其中,该返回地址根据第一客户端在区块链系统中接收返回消息的第一链路确定,进而,利用话题处理节点和第一客户端发布消息的第二链路,对上述发布消息指令进行加密,从而,根据第二链路,发布加密后的消息,直至话题处理节点接收到相应消息进行解密,获得上述发布消息指令,并根据上述待发布话题的标识,获得第二客户端(如订阅者的客户端)对应的返回地址,推送上述发布消息指令,以使第二客户端接收到上述发布消息指令,获得待发送消息。其中,由于第一客户端通过第二链路发布消息,话题处理节点是不知道消息的来源;第一客户端对应的区块链节点虽然知道发布者发送了一条消息,但由于第一客户端对消息进行了加密,其并不知道这条消息的内容是什么;订阅者接收到了消息,最多知道返回地址的首个转发节点,但真正的发布人是谁,并不清楚,解决现有私有话题通过对订阅者和发布者进行身份认证来发布-订阅,存在安全性较差的问题,降低商业机密泄露的风险,减少相应的损失。
另外,图8为本申请实施例提供的另一种区块链消息传输方法的流程示意图,本实施例的执行主体可以为图3所示实施例中的第二客户端,具体可根据实际情况确定。如图8所示,本申请实施例提供的区块链消息传输方法包括如下步骤:
S801:基于对应的区块链节点,接收上述区块链系统中的话题处理节点推送的发布消息指令,该发布消息指令为第一客户端根据待发布话题生成的,上述发布消息指令携带上述待发布话题的标识、已加密的待发送消息和第一客户端对应的返回地址,其中,第一客户端对应的返回地址根据第一客户端在所述区块链系统中接收返回消息的第一链路确定,上述发布消息指令为第一客户端利用上述话题处理节点,对上述发布消息指令进行加密,获得第一消息,并基于第一客户端在上述区块链系统中发布消息的第二链路,对上述第一消息进行加密,获得第二消息,根据上述第二链路,发布上述第二消息后,由上述话题处理节点接收到上述第一消息,并对上述第一消息进行解密后获得的。
其中,上述第二客户端在接收上述区块链系统中的话题处理节点推送的发布消息指令之前,还可以生成订阅话题指令,该订阅话题指令携带上述待发布话题的标识和第二客户端对应的返回地址,其中,第二客户端对应的返回地址根据第二客户端在上述区块链系统中接收返回消息的第四链路确定,进而,利用上述话题处理节点,对上述订阅话题指令进行加密,获得第五消息,基于第二客户端在上述区块链系统中发布消息的第五链路,对上述第五消息进行加密,获得第六消息,最后,在对应的区块链节点,根据上述第五链路,发布上述第六消息,直至上述话题处理节点接收到上述第五消息,并对上述第五消息进行解密,获得上述订阅话题指令,根据上述待发布话题的标识和第二客户端对应的返回地址,进行话题订阅记录。
这里,上述第二客户端在生成订阅话题指令之前,还可以获取上述第四链路中各个区块链节点的公钥和标识,然后,按照第三预设顺序,利用上述第四链路中各个区块链节点的公钥,对上述第二客户端的用户信息和上述第四链路中各个区块链节点的标识进行层层加密处理,获得第二客户端对应的返回地址。
另外,上述第二客户端还可以按照第四预设顺序,利用上述第五链路中各个区块链节点的公钥,对上述第五消息进行层层加密处理,获得上述第六消息。
示例性的,上述第二客户端(订阅者的客户端)可以先选择一条链路作为在上述区块链系统中接收返回消息的第四链路,比如选择,F,E,G,希望接收消息的时候,消息通过D->F->E->G的顺序路由到订阅者。G节点作为链路末端,上述第二客户端连接着G节点。上述第二客户端将上述链路进行加密,得到返回地址,步骤可以如下:
首先将第二客户端的用户信息,即订阅者的信息,用上述第四链路按照倒序的第一个区块链节点的公钥加密,若用G的公钥加密,得到msgG。然后将加密的信息和上述按照倒序的第一个区块链节点的标识拼在一起,用上述第四链路按照倒序的第二个区块链节点的公钥加密,如将上述G的信息和G节点的id拼一起,即msgG|G,用E的公钥加密,得到msgE。同理,再将加密的信息和上述按照倒序的第二个区块链节点的标识拼在一起,用上述第四链路按照倒序的第三个区块链节点的公钥加密,重复执行上述步骤,直至上述第四链路的最后一个区块链节点,如将上述给E的信息和E节点的id拼一起,即msgE|E,用F的公钥加密,得到msgF,把上述给F的信息和F节点的id拼在一起,即msgF|F,获得第二客户端对应的返回地址(订阅者的返回地址)。例如如图9所示,一个持有该返回地址的消息是如何返回给第二客户端的(订阅者的客户端)。
上述第二客户端生成的订阅话题指令可以如下所示,该订阅话题指令携带上述待发布话题的标识和第二客户端对应的返回地址:
字段 | 值 |
指令类型 | 订阅话题 |
话题名称 | DemoTopic |
返回地址 | msgF|F |
上述第二客户端可以利用上述话题处理节点的公钥,对上述订阅话题指令进行加密,获得第五消息,即把订阅话题指令用D的公钥加密,得到msgD。
进一步地,上述第二客户端可以先选择一条发送链路作为第二客户端在上述区块链系统中发布消息的第五链路,比如G,Y,Z,按照层层加密的方式,把订阅话题指令加密,如下:
把第五消息和上述话题处理节点的标识(如D节点id)拼一起,得到msgD|D,按倒序方式用上述第五链路的第一区块链节点的公钥加密,如用Z的公钥加密,得到msgZ。然后,把加密信息和上述第五链路的第一区块链节点的标识拼一起,按倒序方式用上述第五链路的第二区块链节点的公钥加密,如把上述递交给Z的消息和Z节点id拼一起,得到msgZ|Z,用Y的公钥加密后得到msgY。同理,再把加密信息和上述第五链路的第二区块链节点的标识拼一起,按倒序方式用上述第五链路的第三区块链节点的公钥加密,重复执行上述操作直至上述第五链路的最后一个区块链节点,如把上述递交给Y的消息和Y节点id拼一起,得到msgY|Y,用G节点的公钥加密后得到msgG,获得第六消息。
在对应的区块链节点,上述第二客户端根据上述第五链路,发布上述第六消息,直至上述话题处理节点接收到上述第五消息。如上述第二客户端把msgG发送给G,G解密后得到msgY和Y,于是转发给Y,依此类推,直到D收到消息。
上述话题处理节点对上述第五消息进行解密,获得上述订阅话题指令,并根据上述待发布话题的标识和第二客户端对应的返回地址,进行话题订阅记录。如D节点取出消息里的指令,在自己的话题表中记录订阅者信息:
话题 | 订阅者 |
DemoTopic | 返回链路msgF|F |
D节点还可以将订阅表通过泛洪等同步给网络其他节点,保证冗余等。
在本申请实施例中,就话题订阅而言,由于第二客户端通过第五链路发布消息,话题处理节点并不知道消息的来源,而且里面是订阅人的返回地址,只记录了转发节点的信息,却不知道订阅人自身的信息,因此保证了订阅人对话题处理节点,乃至任何节点的隐匿性。订阅者的区块链节点虽然知道订阅者发送了一条消息,但由于第二客户端对消息进行了加密,其不知道这条消息的内容是什么,甚至连它的类型都不知道,无法区分是话题创建、话题订阅、消息发布等,解决现有私有话题通过对订阅者和发布者进行身份认证来发布-订阅,存在安全性较差的问题,降低商业机密泄露的风险。
S802:对上述已加密的待发送消息进行解密,获得上述待发送消息。
这里,上述第二客户端在对上述已加密的待发送消息进行解密,获得所述待发送消息之后,还可以生成回复消息指令,该回复消息指令携带已加密的回复内容和第一客户端对应的返回地址,进而,在对应的区块链节点,根据第一客户端对应的返回地址,返回上述已加密的回复内容至第一客户端,以使第一客户端对上述已加密的回复内容进行解密,获得上述第二客户端的回复内容。
本申请实施例通过第二客户端(如订阅者的客户端)基于对应的区块链节点,接收区块链系统中的话题处理节点推送的发布消息指令,该发布消息指令为第一客户端(如发布者的客户端)根据待发布话题生成的,该发布消息指令携带待发布话题的标识、已加密的待发送消息和第一客户端对应的返回地址,其中,第一客户端对应的返回地址根据第一客户端在区块链系统中接收返回消息的第一链路确定,上述发布消息指令为第一客户端利用上述话题处理节点和第一客户端在区块链系统中发布消息的第二链路,对上述发布消息指令进行加密,根据第二链路,发布加密消息后,由话题处理节点接收到相应消息,并进行解密后获得的,进而,第二客户端对上述已加密的待发送消息进行解密,获得上述待发送消息。其中,由于第一客户端通过第二链路发布消息,话题处理节点是不知道消息的来源;第一客户端对应的区块链节点虽然知道发布者发送了一条消息,但由于第一客户端对消息进行了加密,其并不知道这条消息的内容是什么;订阅者接收到了消息,最多知道返回地址的首个转发节点,但真正的发布人是谁,并不清楚,提高区块链上消息匿名传输的安全性,降低商业机密泄露的风险,减少相应的损失。
对应于上文实施例的区块链消息传输方法,图10为本申请实施例提供的区块链消息传输装置的结构示意图。为了便于说明,仅示出了与本申请实施例相关的部分。图10为本申请实施例提供的一种区块链消息传输装置的结构示意图,该区块链消息传输装置100包括:第一指令生成模块1001、第一信息加密模块1002、第二信息加密模块1003以及信息发布模块1004。这里的区块链消息传输装置可以是上述第一客户端本身,或者是实现第一客户端的功能的芯片或者集成电路。这里需要说明的是,第一指令生成模块、第一信息加密模块、第二信息加密模块以及信息发布模块的划分只是一种逻辑功能的划分,物理上两者可以是集成的,也可以是独立的。
其中,第一指令生成模块1001,用于根据待发布话题,生成发布消息指令,所述发布消息指令携带所述待发布话题的标识、已加密的待发送消息和所述第一客户端对应的返回地址,其中,所述第一客户端对应的返回地址根据所述第一客户端在所述区块链系统中接收返回消息的第一链路确定。
第一信息加密模块1002,用于利用所述区块链系统中的话题处理节点,对所述发布消息指令进行加密,获得第一消息。
第二信息加密模块1003,用于基于所述第一客户端在所述区块链系统中发布消息的第二链路,对所述第一消息进行加密,获得第二消息。
信息发布模块1004,用于在对应的区块链节点,根据所述第二链路,发布所述第二消息,直至所述话题处理节点接收到所述第一消息,并对所述第一消息进行解密,获得所述发布消息指令,根据所述待发布话题的标识,获得第二客户端对应的返回地址,并根据所述第二客户端对应的返回地址,推送所述发布消息指令,以使所述第二客户端基于对应的区块链节点,接收到所述发布消息指令,对所述已加密的待发送消息进行解密,获得所述待发送消息。
在一种可能的设计中,所述第一指令生成模块1001,还用于:
获取所述第一链路中各个区块链节点的公钥和标识;
按照第一预设顺序,利用所述第一链路中各个区块链节点的公钥,对所述第一客户端的用户信息和所述第一链路中各个区块链节点的标识进行层层加密处理,获得所述第一客户端对应的返回地址。
在一种可能的实现方式中,所述第二信息加密模块1003,具体用于:
按照第二预设顺序,利用所述第二链路中各个区块链节点的公钥,对所述第一消息进行层层加密处理,获得所述第二消息。
另外,在一种可能的实现方式中,所述装置还包括第二指令生成模块1005,用于在所述第一指令生成模块1001根据待发布话题,生成发布消息指令之前,生成创建话题指令,所述创建话题指令携带所述待发布话题的标识;利用所述话题处理节点,对所述创建话题指令进行加密,获得第三消息;基于所述第一客户端在所述区块链系统中发布消息的第三链路,对所述第三消息进行加密,获得第四消息;在对应的区块链节点,根据所述第三链路,发布所述第四消息,直至所述话题处理节点接收到所述第三消息,并对所述第三消息进行解密,获得所述创建话题指令,根据所述待发布话题的标识进行话题发布记录。
在一种可能的实现方式中,所述装置还包括第二信息接收模块1006,用于在所述信息发布模块1004根据所述第二链路,发布所述第二消息之后,基于对应的区块链节点,接收所述第二客户端根据所述第一客户端对应的返回地址返回的回复消息,所述回复消息携带已加密的回复内容;对所述已加密的回复内容进行解密,获得所述第二客户端的回复内容。
本申请实施例提供的装置,可用于执行上述图4所述方法实施例的技术方案,其实现原理和技术效果类似,本申请实施例此处不再赘述。
图11为本申请实施例提供的另一种区块链消息传输装置的结构示意图,该区块链消息传输装置110包括:第一信息接收模块1101以及信息处理模块1102。这里的区块链消息传输装置可以是上述第二客户端本身,或者是实现第二客户端的功能的芯片或者集成电路。这里需要说明的是,第一信息接收模块以及信息处理模块的划分只是一种逻辑功能的划分,物理上两者可以是集成的,也可以是独立的。
其中,第一信息接收模块1101,用于基于对应的区块链节点,接收所述区块链系统中的话题处理节点推送的发布消息指令,所述发布消息指令为第一客户端根据待发布话题生成的,所述发布消息指令携带所述待发布话题的标识、已加密的待发送消息和所述第一客户端对应的返回地址,其中,所述第一客户端对应的返回地址根据所述第一客户端在所述区块链系统中接收返回消息的第一链路确定,所述发布消息指令为所述第一客户端利用所述话题处理节点,对所述发布消息指令进行加密,获得第一消息,并基于所述第一客户端在所述区块链系统中发布消息的第二链路,对所述第一消息进行加密,获得第二消息,根据所述第二链路,发布所述第二消息后,由所述话题处理节点接收到所述第一消息,并对所述第一消息进行解密后获得的。
信息处理模块1102,用于对所述已加密的待发送消息进行解密,获得所述待发送消息。
在一种可能的实现方式中,所述装置还包括第三指令生成模块1103,用于在所述第一信息接收模块1101接收所述区块链系统中的话题处理节点推送的发布消息指令之前,生成订阅话题指令,所述订阅话题指令携带所述待发布话题的标识和所述第二客户端对应的返回地址,其中,所述第二客户端对应的返回地址根据所述第二客户端在所述区块链系统中接收返回消息的第四链路确定;利用所述话题处理节点,对所述订阅话题指令进行加密,获得第五消息;基于所述第二客户端在所述区块链系统中发布消息的第五链路,对所述第五消息进行加密,获得第六消息;在对应的区块链节点,根据所述第五链路,发布所述第六消息,直至所述话题处理节点接收到所述第五消息,并对所述第五消息进行解密,获得所述订阅话题指令,根据所述待发布话题的标识和所述第二客户端对应的返回地址,进行话题订阅记录。
在一种可能的实现方式中,所述第三指令生成模块1103,还用于:
获取所述第四链路中各个区块链节点的公钥和标识;按照第三预设顺序,利用所述第四链路中各个区块链节点的公钥,对所述第二客户端的用户信息和所述第四链路中各个区块链节点的标识进行层层加密处理,获得所述第二客户端对应的返回地址。
在一种可能的实现方式中,所述第三指令生成模块1103,具体用于:
按照第四预设顺序,利用所述第五链路中各个区块链节点的公钥,对所述第五消息进行层层加密处理,获得所述第六消息。
在一种可能的实现方式中,所述装置还包括第四指令生成模块1104,用于在所述信息处理模块1102对所述已加密的待发送消息进行解密,获得所述待发送消息之后,生成回复消息指令,所述回复消息指令携带已加密的回复内容和所述第一客户端对应的返回地址;在对应的区块链节点,根据所述第一客户端对应的返回地址,返回所述已加密的回复内容至所述第一客户端,以使所述第一客户端对所述已加密的回复内容进行解密,获得所述第二客户端的回复内容。
本申请实施例提供的装置,可用于执行上述图8所述方法实施例的技术方案,其实现原理和技术效果类似,本申请实施例此处不再赘述。
可选地,图12A和12B示意性地提供本申请所述客户端的一种可能的基本硬件架构示意图。
参见图12A和12B,客户端1200包括至少一个处理器1201以及通信接口1203。进一步可选的,还可以包括存储器1202和总线1204。
其中,客户端1200中,处理器1201的数量可以是一个或多个,图12A和12B仅示意了其中一个处理器1201。可选地,处理器1201,可以是中央处理器(central processingunit,CPU)、图形处理器(graphics processing unit,GPU)或者数字信号处理器(digitalsignal processor,DSP)。如果客户端1200具有多个处理器1201,多个处理器1201的类型可以不同,或者可以相同。可选地,客户端1200的多个处理器1201还可以集成为多核处理器。
存储器1202存储计算机指令和数据;存储器1202可以存储实现本申请提供的上述区域管理方法所需的计算机指令和数据,例如,存储器1202存储用于实现上述区域管理方法的步骤的指令。存储器1202可以是以下存储介质的任一种或任一种组合:非易失性存储器(例如只读存储器(ROM)、固态硬盘(SSD)、硬盘(HDD)、光盘),易失性存储器。
通信接口1203可以为所述至少一个处理器提供信息输入/输出。也可以包括以下器件的任一种或任一种组合:网络接口(例如以太网接口)、无线网卡等具有网络接入功能的器件。
可选的,通信接口1203还可以用于客户端1200与其它计算设备或者终端进行数据通信。
进一步可选的,图12A和12B用一条粗线表示总线1204。总线1204可以将处理器1201与存储器1202和通信接口1203连接。这样,通过总线1204,处理器1201可以访问存储器1202,还可以利用通信接口1203与其它计算设备或者终端进行数据交互。
在本申请中,客户端1200执行存储器1202中的计算机指令,使得客户端1200实现本申请提供的上述区域管理方法,或者使得客户端1200部署上述的区域管理装置。
从逻辑功能划分来看,示例性的,如图12A所示,存储器1202中可以包括第一指令生成模块1001、第一信息加密模块1002、第二信息加密模块1003、信息发布模块1004、第二指令生成模块1005以及第二信息接收模块1006。这里的包括仅仅涉及存储器中所存储的指令被执行时可以分别实现第一指令生成模块、第一信息加密模块、第二信息加密模块、信息发布模块、第二指令生成模块以及第二信息接收模块的功能,而不限定是物理上的结构。
示例性的,如图12B所示,存储器1202中可以包括第一信息接收模块1101、信息处理模块1102、第三指令生成模块1103和第四指令生成模块1104。这里的包括仅仅涉及存储器中所存储的指令被执行时可以实现第一信息接收模块、信息处理模块、第三指令生成模块和第四指令生成模块的功能,而不限定是物理上的结构。
另外,上述的客户端除了可以像上述图12A和12B通过软件实现外,也可以作为硬件模块,或者作为电路单元,通过硬件实现。
本申请提供一种计算机可读存储介质,所述计算机程序产品包括计算机指令,所述计算机指令指示计算设备执行本申请提供的上述区块链消息传输方法。
本申请提供一种芯片,包括至少一个处理器和通信接口,所述通信接口为所述至少一个处理器提供信息输入和/或输出。进一步,所述芯片还可以包含至少一个存储器,所述存储器用于存储计算机指令。所述至少一个处理器用于调用并运行该计算机指令,以执行本申请提供的上述区块链消息传输方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
Claims (15)
1.一种区块链消息传输方法,其特征在于,所述方法应用于第一客户端,所述第一客户端对应区块链系统中的一区块链节点,所述方法包括:
根据待发布话题,生成发布消息指令,所述发布消息指令携带所述待发布话题的标识、已加密的待发送消息和所述第一客户端对应的返回地址,其中,所述第一客户端对应的返回地址根据所述第一客户端在所述区块链系统中接收返回消息的第一链路确定;
利用所述区块链系统中的话题处理节点,对所述发布消息指令进行加密,获得第一消息;
基于所述第一客户端在所述区块链系统中发布消息的第二链路,对所述第一消息进行加密,获得第二消息;
在对应的区块链节点,根据所述第二链路,发布所述第二消息,直至所述话题处理节点接收到所述第一消息,并对所述第一消息进行解密,获得所述发布消息指令,根据所述待发布话题的标识,获得第二客户端对应的返回地址,并根据所述第二客户端对应的返回地址,推送所述发布消息指令,以使所述第二客户端基于对应的区块链节点,接收到所述发布消息指令,对所述已加密的待发送消息进行解密,获得所述待发送消息。
2.根据权利要求1所述的方法,其特征在于,在所述根据待发布话题,生成发布消息指令之前,还包括:
获取所述第一链路中各个区块链节点的公钥和标识;
按照第一预设顺序,利用所述第一链路中各个区块链节点的公钥,对所述第一客户端的用户信息和所述第一链路中各个区块链节点的标识进行层层加密处理,获得所述第一客户端对应的返回地址。
3.根据权利要求1或2所述的方法,其特征在于,所述基于所述第一客户端在所述区块链系统中发布消息的第二链路,对所述第一消息进行加密,获得第二消息,包括:
按照第二预设顺序,利用所述第二链路中各个区块链节点的公钥,对所述第一消息进行层层加密处理,获得所述第二消息。
4.根据权利要求1或2所述的方法,其特征在于,在所述根据待发布话题,生成发布消息指令之前,还包括:
生成创建话题指令,所述创建话题指令携带所述待发布话题的标识;
利用所述话题处理节点,对所述创建话题指令进行加密,获得第三消息;
基于所述第一客户端在所述区块链系统中发布消息的第三链路,对所述第三消息进行加密,获得第四消息;
在对应的区块链节点,根据所述第三链路,发布所述第四消息,直至所述话题处理节点接收到所述第三消息,并对所述第三消息进行解密,获得所述创建话题指令,根据所述待发布话题的标识进行话题发布记录。
5.根据权利要求1或2所述的方法,其特征在于,在所述根据所述第二链路,发布所述第二消息之后,还包括:
基于对应的区块链节点,接收所述第二客户端根据所述第一客户端对应的返回地址返回的回复消息,所述回复消息携带已加密的回复内容;
对所述已加密的回复内容进行解密,获得所述第二客户端的回复内容。
6.一种区块链消息传输方法,其特征在于,所述方法应用于第二客户端,所述第二客户端对应区块链系统中的一区块链节点,所述方法包括:
基于对应的区块链节点,接收所述区块链系统中的话题处理节点推送的发布消息指令,所述发布消息指令为第一客户端根据待发布话题生成的,所述发布消息指令携带所述待发布话题的标识、已加密的待发送消息和所述第一客户端对应的返回地址,其中,所述第一客户端对应的返回地址根据所述第一客户端在所述区块链系统中接收返回消息的第一链路确定,所述发布消息指令为所述第一客户端利用所述话题处理节点,对所述发布消息指令进行加密,获得第一消息,并基于所述第一客户端在所述区块链系统中发布消息的第二链路,对所述第一消息进行加密,获得第二消息,根据所述第二链路,发布所述第二消息后,由所述话题处理节点接收到所述第一消息,并对所述第一消息进行解密后获得的;
对所述已加密的待发送消息进行解密,获得所述待发送消息。
7.根据权利要求6所述的方法,其特征在于,在所述接收所述区块链系统中的话题处理节点推送的发布消息指令之前,还包括:
生成订阅话题指令,所述订阅话题指令携带所述待发布话题的标识和所述第二客户端对应的返回地址,其中,所述第二客户端对应的返回地址根据所述第二客户端在所述区块链系统中接收返回消息的第四链路确定;
利用所述话题处理节点,对所述订阅话题指令进行加密,获得第五消息;
基于所述第二客户端在所述区块链系统中发布消息的第五链路,对所述第五消息进行加密,获得第六消息;
在对应的区块链节点,根据所述第五链路,发布所述第六消息,直至所述话题处理节点接收到所述第五消息,并对所述第五消息进行解密,获得所述订阅话题指令,根据所述待发布话题的标识和所述第二客户端对应的返回地址,进行话题订阅记录。
8.根据权利要求7所述的方法,其特征在于,在所述生成订阅话题指令之前,还包括:
获取所述第四链路中各个区块链节点的公钥和标识;
按照第三预设顺序,利用所述第四链路中各个区块链节点的公钥,对所述第二客户端的用户信息和所述第四链路中各个区块链节点的标识进行层层加密处理,获得所述第二客户端对应的返回地址。
9.根据权利要求7或8所述的方法,其特征在于,所述基于所述第二客户端在所述区块链系统中发布消息的第五链路,对所述第五消息进行加密,获得第六消息,包括:
按照第四预设顺序,利用所述第五链路中各个区块链节点的公钥,对所述第五消息进行层层加密处理,获得所述第六消息。
10.根据权利要求6至8中任一项所述的方法,其特征在于,在对所述已加密的待发送消息进行解密,获得所述待发送消息之后,还包括:
生成回复消息指令,所述回复消息指令携带已加密的回复内容和所述第一客户端对应的返回地址;
在对应的区块链节点,根据所述第一客户端对应的返回地址,返回所述已加密的回复内容至所述第一客户端,以使所述第一客户端对所述已加密的回复内容进行解密,获得所述第二客户端的回复内容。
11.一种区块链消息传输装置,其特征在于,所述装置应用于第一客户端,所述第一客户端对应区块链系统中的一区块链节点,所述装置包括:
第一指令生成模块,用于根据待发布话题,生成发布消息指令,所述发布消息指令携带所述待发布话题的标识、已加密的待发送消息和所述第一客户端对应的返回地址,其中,所述第一客户端对应的返回地址根据所述第一客户端在所述区块链系统中接收返回消息的第一链路确定;
第一信息加密模块,用于利用所述区块链系统中的话题处理节点,对所述发布消息指令进行加密,获得第一消息;
第二信息加密模块,用于基于所述第一客户端在所述区块链系统中发布消息的第二链路,对所述第一消息进行加密,获得第二消息;
信息发布模块,用于在对应的区块链节点,根据所述第二链路,发布所述第二消息,直至所述话题处理节点接收到所述第一消息,并对所述第一消息进行解密,获得所述发布消息指令,根据所述待发布话题的标识,获得第二客户端对应的返回地址,并根据所述第二客户端对应的返回地址,推送所述发布消息指令,以使所述第二客户端基于对应的区块链节点,接收到所述发布消息指令,对所述已加密的待发送消息进行解密,获得所述待发送消息。
12.一种区块链消息传输装置,其特征在于,所述装置应用于第二客户端,所述第二客户端对应区块链系统中的一区块链节点,所述装置包括:
第一信息接收模块,用于基于对应的区块链节点,接收所述区块链系统中的话题处理节点推送的发布消息指令,所述发布消息指令为第一客户端根据待发布话题生成的,所述发布消息指令携带所述待发布话题的标识、已加密的待发送消息和所述第一客户端对应的返回地址,其中,所述第一客户端对应的返回地址根据所述第一客户端在所述区块链系统中接收返回消息的第一链路确定,所述发布消息指令为所述第一客户端利用所述话题处理节点,对所述发布消息指令进行加密,获得第一消息,并基于所述第一客户端在所述区块链系统中发布消息的第二链路,对所述第一消息进行加密,获得第二消息,根据所述第二链路,发布所述第二消息后,由所述话题处理节点接收到所述第一消息,并对所述第一消息进行解密后获得的;
信息处理模块,用于对所述已加密的待发送消息进行解密,获得所述待发送消息。
13.一种客户端,其特征在于,包括:
处理器;
存储器;以及
计算机程序;
其中,所述计算机程序被存储在所述存储器中,并且被配置为由所述处理器执行,所述计算机程序包括用于执行如权利要求1-5任一项,或者如权利要求6-10任一项所述的方法的指令。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序使得服务器执行权利要求1-5任一项,或者如权利要求6-10任一项所述的方法。
15.一种计算机程序产品,其特征在于,包括计算机指令,所述计算机指令被处理器执行权利要求1-5任一项,或者如权利要求6-10任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111538853.7A CN114205093B (zh) | 2021-12-15 | 2021-12-15 | 区块链消息传输方法、装置、客户端及存储介质 |
PCT/CN2022/124237 WO2023109268A1 (zh) | 2021-12-15 | 2022-10-10 | 区块链消息传输方法、装置、客户端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111538853.7A CN114205093B (zh) | 2021-12-15 | 2021-12-15 | 区块链消息传输方法、装置、客户端及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114205093A CN114205093A (zh) | 2022-03-18 |
CN114205093B true CN114205093B (zh) | 2023-04-07 |
Family
ID=80654258
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111538853.7A Active CN114205093B (zh) | 2021-12-15 | 2021-12-15 | 区块链消息传输方法、装置、客户端及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114205093B (zh) |
WO (1) | WO2023109268A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114205093B (zh) * | 2021-12-15 | 2023-04-07 | 深圳前海微众银行股份有限公司 | 区块链消息传输方法、装置、客户端及存储介质 |
CN114912856B (zh) * | 2022-07-19 | 2022-09-30 | 安胜(天津)飞行模拟系统有限公司 | 一种基于区块链的飞行模拟器维护方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109711174A (zh) * | 2018-11-30 | 2019-05-03 | 深圳灵图慧视科技有限公司 | 数据获取方法、装置、设备及存储介质 |
CN109743185A (zh) * | 2019-03-19 | 2019-05-10 | 全链通有限公司 | 基于域名区块链的群组通信方法、区块链节点及介质 |
CN109981641A (zh) * | 2019-03-26 | 2019-07-05 | 北京邮电大学 | 一种基于区块链技术的安全发布订阅系统及发布订阅方法 |
CN111464494A (zh) * | 2020-02-26 | 2020-07-28 | 北京十安赛恩科技有限公司 | 一种电子邮件加密方法、第一客户端以及区块链系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110033258B (zh) * | 2018-11-12 | 2021-03-23 | 创新先进技术有限公司 | 基于区块链的业务数据加密方法及装置 |
CN114205093B (zh) * | 2021-12-15 | 2023-04-07 | 深圳前海微众银行股份有限公司 | 区块链消息传输方法、装置、客户端及存储介质 |
-
2021
- 2021-12-15 CN CN202111538853.7A patent/CN114205093B/zh active Active
-
2022
- 2022-10-10 WO PCT/CN2022/124237 patent/WO2023109268A1/zh unknown
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109711174A (zh) * | 2018-11-30 | 2019-05-03 | 深圳灵图慧视科技有限公司 | 数据获取方法、装置、设备及存储介质 |
CN109743185A (zh) * | 2019-03-19 | 2019-05-10 | 全链通有限公司 | 基于域名区块链的群组通信方法、区块链节点及介质 |
CN109981641A (zh) * | 2019-03-26 | 2019-07-05 | 北京邮电大学 | 一种基于区块链技术的安全发布订阅系统及发布订阅方法 |
CN111464494A (zh) * | 2020-02-26 | 2020-07-28 | 北京十安赛恩科技有限公司 | 一种电子邮件加密方法、第一客户端以及区块链系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2023109268A1 (zh) | 2023-06-22 |
CN114205093A (zh) | 2022-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108600227B (zh) | 一种基于区块链的医疗数据共享方法及装置 | |
CN114205093B (zh) | 区块链消息传输方法、装置、客户端及存储介质 | |
CN108234443B (zh) | 签约方法、系统及计算机可读存储介质 | |
CN109729041B (zh) | 一种加密内容的发布以及获取方法及装置 | |
CN111786812B (zh) | 节点管理方法、装置、计算机设备和存储介质 | |
CN108028834B (zh) | 用于安全文件传输的装置和方法 | |
CN108829539A (zh) | 数据备份、数据恢复方法及设备 | |
CN114785622B (zh) | 多标识网络的访问控制方法、装置及存储介质 | |
CN113259453B (zh) | 跨链交互方法及装置 | |
JP2020088421A (ja) | 通信装置、通信方法、および通信プログラム | |
US11368288B2 (en) | Apparatus and method of lightweight communication protocols between multiple blockchains | |
CN113922971A (zh) | 跨链交互方法及装置 | |
CN114244851B (zh) | 一种基于区块链的数据分发方法 | |
CN111586010A (zh) | 一种密钥分发方法及装置 | |
CN114285555A (zh) | 基于区块链的组播方法及装置 | |
US11411744B2 (en) | Encryption communication method, information processing apparatus, and program | |
CN111756743B (zh) | 基于区块链的资源转移方法、装置、计算机设备和存储介质 | |
CN115412568A (zh) | 分布式数据传输方法、装置及系统 | |
US11177949B2 (en) | Data sharing method, data sharing system, data sharing server, communication terminal and program | |
Roth et al. | Message exchange on base of a blockchain-based layered architecture | |
CN111224777A (zh) | Sdn网络组播成员信息加密方法、系统、终端及存储介质 | |
Afify | Access control in a peer-to-peer social network | |
CN112350920A (zh) | 基于区块链的即时通讯系统 | |
TWI528795B (zh) | 多節點架構之多媒體傳播系統和其多媒體傳播控制方法 | |
US20230421540A1 (en) | Systems and methods for generating secure, encrypted communications using multi-party computations in order to perform blockchain operations in decentralized applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |