基于区块链的跨通道数据分享模型、分享方法和装置与流程

文档序号:18738501发布日期:2019-09-21 01:29阅读:428来源:国知局
基于区块链的跨通道数据分享模型、分享方法和装置与流程

本发明涉及一种数据分享技术领域,尤其涉及一种基于区块链的跨通道数据分享模型、分享方法和装置。



背景技术:

Hyperledger Fabric是Linux基金会所主导的超级账本Hyperledger的项目,适合于企业区块链的场景,成员通过身份验证才能加入网络,且兼顾数据共享和隐私保护。

Fabric网络中每个节点可以订阅多条通道,根据创建通道时指定的通道策略,基于数据的保密性考虑数据被通道相互隔离和保密,通道外的节点无法通过调用链码的方式访问通道账本内容,这些节点只能访问所订阅通道上的区块数据。

由于每一条区块链维护着一套独立的账本,属于不同区块链子网的账本之间无法直接完成资产的转移和价值的转换,这样无形之间形成了“信息孤岛”,因此,如何在保证数据通信安全性的情况下,又能够提高数据共享是亟待解决的技术问题。



技术实现要素:

本发明的目的在于克服现有技术之缺陷,提供了一种基于区块链的跨通道数据分享模型、分享方法和装置,保证了所有隐私数据和记录上链。所有参与数据分享的通道都会将目标数据经过模型的服务中心传输到对应的数据请求方,参与数据分享的不是整个通道的所有组织,也避免了通道子网之间两两建立通道所带来的管理负担和资源浪费,因此,在保障数据安全的前提下,解决了区块链子网之间的信息传输问题。

本发明是这样实现的:

本发明提供一种基于区块链的跨通道数据分享模型,第一子网,用于接收请求数据信息,并将所述请求数据信息通过第一联络通道进行发送,其中,所述请求数据信息包括数据所在的子网,数据编号和所述第一子网信息名称;

服务中心,用于接收并转发所述请求数据信息;

第二子网,用于通过所述第二联络通道接收所述请求数据信息,并从所述服务中心的中继链账本中解析子网和联络通道参数信息,读取所述数据编号对应的目标编号数据,并写入所述第二联络通道,以使所述服务中心通过中继链读取所述第二联络通道的目标编号数据,并加密上传到所述第一子网的第一联络通道,以使所述第一子网读取所述目标编号数据;

其中,所述第一子网、所述第二子网为预先加入所述服务中心的任意子网。

进一步地,所述第二子网用于:获取所述第二子网的目标联络人;通过所述目标联络人读取在账本上的目标编号数据,并计算所读取数据对应的第一哈希值,以及读取哈希数据通道账本中相同目标编号数据的第二哈希值,在所述第一哈希数值和所述第二哈希值一致的情况下,将数据加密到所述第二联络通道。

进一步地,述服务中心包括第一代理人,所述第一代理人与所述第一子网的第一联络人构建所述第一联络通道;

所述服务中心包括第二代理人,所述第二代理人与所述第二子网的第二联络人构建所述第二联络通道;

所述服务中心通过所述第一代理人将所述第一联络通道账本中的请求数据信息读取到所述服务中心账本中;

所述服务中心通过所述第一代理人将服务中心账本上的目标编号数据写入所述第一联络通道。

进一步地,所述服务中心根据每一个子网生成对应的非对称加密的公私钥对,以及针对上链数据产生对称加密的密钥;

所述服务中心采用对应的公私钥对的公钥加密对称密钥,将加密后的对称密钥分发到所述第一联络通道/所述第二联络通道;所述第一联络人/所述第二联络人从通道里面获取加密后的对称密钥;采用该通道对应的私钥进行解密,获得对称密钥;采用所获得的对称密钥解析加密数据获得数据的明文。

进一步地,所述服务中心接收加入数据分享服务请求,并分配一与该子网上的联络人相对应的代理人,该代理人与联络人形成联络通道,将每一个子网及与其相关的联络人和代理人信息存储在中继链账本。子网属性信息存储至所述服务中心的中继链账本上,其中,所述子网属性包括:子网名称、CA服务器、排序服务、子网联络人名称、平台代理人名称和子网数据授权组织。

此外,本发明还公开了一种基于区块链的跨通道数据分享方法,所述方法包括:

第一子网接收用户输入的请求数据信息,并通过第一联络通道将所述请求数据信息发送至所述服务中心,其中,所述请求数据信息包括数据所在的子网,数据编号和所述第一子网信息名称;

所述服务中心接收所述请求数据信息,在判断所述第一子网为预先加入所述服务中心子网的情况下,根据所述请求数据信息包括数据所在的子网,获取数据所在的第二子网所对应的第二联络通道,将所述请求数据信息通过所述第二联络通道转发,其中,第二子网为预先加入所述服务中心的子网;

所述第二子网接收所述请求数据信息,根据所述请求数据信息从所述服务中心中继链账本中解析目标编号数据,并加密上传到所述第一子网的第一联络通道,以使所述第一子网读取所述目标编号数据。

进一步地,所述第一子网接收用户输入的请求数据信息,并通过第一联络通道将所述请求数据信息发送至所述服务中心的步骤,包括:

所述第一子网接收用户输入的请求数据信息;

针对上链数据产生对称加密的密钥,将所述请求数据信息通过所述对称密钥进行加密;

第一联络人将加密后的对称密钥写入所述第一联络通道;

通过第一联络通道将所述请求数据信息发送至所述服务中心;

所述第二子网接收所述请求数据信息的步骤,包括:

第二联络人从所述第二通道中获取加密后的对称密钥,根据对应的私钥进行解密,得到对称密钥;

根据所述对称密钥解析获得所述请求数据信息;

其中,所述第一联络人为所述第一子网的指定节点;

所述第二联络人为所述第一子网的指定节点。

进一步地,所述方法还包括:

第三子网在向所述中继链账本写入数据时,将数据进行哈希运算后存入哈希数据通道;

在任意一个联络人在所述中继链账本中读取数据时,获取该数据对应的第一哈希值,以及哈希数据通道账本中该数据所对应的第二哈希值;

在所述第一哈希值和所述第二哈希值一致时,接收该联络人的数据读取命令。

进一步地,所述方法还包括:

所述服务中心接收需要注册子网的用户信息,并录入MySQL数据库;根据每个子网建立一个用户账号;生成该用户对应的公钥和私钥,并同用户个人信息MySQL数据库。

以及,公开了一种基于区块链的跨通道数据分享装置,其特征在于,所述装置包括处理器、以及通过通信总线与所述处理器连接的存储器;其中,

所述存储器,用于存储基于区块链的跨通道数据分享程序;

所述处理器,用于执行所述基于区块链的跨通道数据分享程序,以实现如权利要求任一项所述的基于区块链的跨通道数据分享步骤。

本发明具有以下有益效果:

1、在第一子网和第二子网为预先加入服务中心的前提下,就能够通过服务中心的实现数据在构建的联络通道之间进行发送和数据的分享,实现通过新建联络通道实现数据在多个子网之间的传输,解决了现有技术中数据安全性和数据传输转换的局限性问题;整个跨通道数据分享模型,通过中继链和服务中心的设计,避免了不同区块链网络两两之间数据分享会带来的网络臃肿;

2、通过子网用户登录和注册,生成每个子网用户的公私钥对并存储到数据库,进一步提高在联络通道中传输数据的安全性保障;

3、将加入数据分享服务的子网及与其相关的联络人和代理人信息存储在中继链账本,实现扩大数据分享范围,操作简单且可靠性高;

4、数据的加密上链,增强了数据在链上的安全性;

5、通过将数据所在的子网(数据授权机构)加入哈希数据通道,保证数据的读取上链经过数据所有人的授权和背书。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1为本发明实施例提供的基于区块链的跨通道数据分享模型结构示意图;

图2为本发明实施例提供的基于区块链的跨通道数据分享模型一种应用场景示意图;

图3为本发明实施例提供的子网与中继链的通信连接示意图;

图4为本发明实施例提供的数据授权连接示意图。

图5为本发明实施例提供的哈希校验连接示意图。

图6为本发明实施例提供的数据加密流程示意图。

图7为本发明实施例提供的基于区块链的跨通道数据分享模型另一种应用场景示意图。

图8为本发明实施例提供的基于区块链的跨通道数据分享方法流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

需要说明的是,每一条区块链维护着一套独立的账本,属于不同区块链子网的账本之间无法直接完成资产的转移和价值的转换,这样无形之间形成了“信息孤岛”,为了扩大数据的传播范围,需要进建立多个区块链子网,这样浪费了很多的人力和经济成本,同时也减缓了互联网行业生产效率。因此,如何实现在不同通道成员不相互涉足对方网络范围的前提下,完成通道网络之间的数据分享,是亟待解决的一个问题。

参见图1,本发明实施例提供一种基于区块链的跨通道数据分享模型,包括:

第一子网,用于接收请求数据信息,并将所述请求数据信息通过第一联络通道进行发送,其中,所述请求数据信息包括数据所在的子网,数据编号和所述第一子网信息名称。

需要说明的是,本发明实施例中,第一子网是同意加入数据分享服务的拥有私有数据,通过接收用户发送的请求数据信息,期望获取对应的数据。因此,第一子网是对其他子网有数据需求的区块链通道子网络。

需要说明的是,子网包括子网名称,是系统中子网的唯一标识,请求方发送给服务中心的消息中包含目标子网的名称,中间层12需要根据子网名称在中继链账本中查询相应子网的信息,并获取与之相关的联络人、代理人和联络通道信息;CA表示给子网颁发电子证书的CA服务器或节点的地址以及端口号;Orderer是子网所依赖的排序组织的名称和orderer节点的地址与端口号;链码在子网上用于读取目标数据的链码名称,链码的使用需要经过安装和实例化等步骤。

以及,包括联络人,是专属于子网的节点名称,通过联络人名称可以查询账本返回对应联络节点的详细参数;代理人,负责中继链与子网之间数据传输的节点名称,通过代理人名称可以查询账本返回对应代理节点的详细参数;联络通道名称是代理人与联络人之间建立的联络通道名称。

示例性的,通过Web客户端向底层网络发送请求信息,每个客户端也能够通过基于WebSocket的STOMP协议来和数据服务中心进行交互。因此,本发明实施例中的跨通道数据分享模型允许注册账号的用户。

另外,每个子网均需要进行数据传输至服务中心,因此,需要一个与服务中心进行通信连接的节点,本发明实施例中为第一节点,第一节点可以是子网负责与服务中心联络的节点,通常是子网中某个加入联络通道的组织的一个节点,它是每个子网负责与服务中心联络的节点,通常是子网中某个加入联络通道的组织的一个节点。

其中,联络人包括:联络人名称,是联络人节点的唯一标识,系统中间层12根据联络人名称查询账本获得联络节点具体参数信息。组织MSP,是联络人所在组织MSP名称,联络人所在组织是构成联络通道的一员;组织名称,是组织在系统中的唯一标识;Peer节点,是底层网络中联络人节点的地址和端口号;PeerEventHub,是Peer节点事件监听地址和端口号;联络通道名称,是联络人所在联络通道名称;联络通道链码,安装并实例化到联络通道上的链码信息。

服务中心,用于接收并转发所述请求数据信息。

需要说明的是,服务中心底层使用的fabric区块链子网络。在服务中心上针对每一个加入的子网分配一个代理人,用来对接子网上的联络人,两者之间会建立一个数据分享的通道,同一个服务中心用户作为代理人可以同时承担多个通道子网的数据代理服务。

具体的,服务中心接收请求数据信息后将请求转发给目标子网联络人,其中,目标子网联络人为数据所在的子网。

第二子网,用于通过所述第二联络通道接收所述请求数据信息,并从所述服务中心的中继链账本中解析子网和联络通道参数信息,读取所述数据编号对应的目标编号数据,并写入所述第二联络通道,以使所述服务中心通过中继链读取所述第二联络通道的目标编号数据,并加密上传到所述第一子网的第一联络通道,以使所述第一子网读取所述目标编号数据。

需要说明的是,所述第一子网、所述第二子网为预先加入所述服务中心的任意子网。

数据所在的子网即是第二子网,在第二子网接收到请求数据信息以后,根据数据编号可以利用Ajax技术向后台发送执行命令的参数信息,从服务中心中继链账本解析子网和联络通道参数信息,使用所在组织和节点信息读取目标编号数据,并写入联络通道。

子网加入数据分享服务的同时,根据子网参数信息,实例化子网相关数据结构信息,将信息记录在中继链账本。一个联络通道就对应一个子网,构建联络通道时,需要将联络人组织和代理人组织加入通道,并选择一个拥有账本读写权限的节点,通常可以是组织锚节点(Anchor peer)来做为代理人和联络人节点。

具体的,通过链码查询是否已经注册了该子网,是否成功建立了联络通道,如果是,可以通过第二联络人与服务中心对应的代理人所在组织和节点来调用链码,进而对中继链账本执行数据的读取。

服务中心可以通过页面命令操作平台底层中继链读取通道数据,并上传到第一子网的第一联络通道,最后供第一子网读取。

需要说明的是,数据编号所对应的目标编号数据可以是在第二子网上,也可以是存储在其他的数据所有者上,即目标编号数据存储在目标子网用户,或者目标子网数据授权组织。当存储在其他子网时,在读取目标子网相关数据时,需要对数据上链进行授权背书,而存储数据的子网不需要在模型中注册。

需要说明的是,客户端通过WebSocket建立稳定连接,通过STOMP消息协议结构体承载请求,收到消息的一方,通过解析请求Message信息,获取请求详细内容。每次数据在子网或者账本之间的流动,都会反馈给Web客户端,相应的Web客户端通过STOMP消息广播给其他参与用户,或者发送给指定用户。

服务中心根据数据读取成功信息反馈,可以操作数据在服务中心的转发,如图2和图3所示,请求子网的web页面发送请求数据,经过服务中心web页面进行转发请求,目标子网web页面查询目标子网账本,在获取到对应数据以后,将目标数据进行数据上链处理发送到目标子网与服务中心之间的联络通道,同时目标子网通知服务中心数据已上链,然后转发到中继链账本,由服务中心读取请求子网的信息,同时在服务中心转发后数据发送到中继链账本,中继链账本通知服务中心与请求子网之间的联络通道告知数据就绪,然后请求子网读取联络通道的数据,实现数据转发的全过程。

具体的,目标子网接受到请求消息,调用SDK读取账本数据,数据读取成功后,将加密后的数据通过联络人节点写入联络通道账本,后台返回写入结果信息,目标子网将写入结果通过STOMP消息格式广播到服务中心和请求子网。

如图4中,目标子网A和请求子网B通过联络人和地阿里人进行通信后,由于子网C存储有目标数据,所以要在子网C授权的情况下,目标子网A才能读取子网C的数据,通过中继链与子网C之间的联络通道进行数据的传输。

需要说明的,由于子网C可能并没有实现经过服务中心进行入网操作,所以为了进一步提高数据的可靠性,本发明实施例中,通过哈希数据通道和读取数据请求进行双重保障。

具体实现中,获取所述第二子网的目标联络人;通过所述目标联络人读取在账本上的目标编号数据,并计算所读取数据对应的第一哈希值,以及读取哈希数据通道账本中相同目标编号数据的第二哈希值,在所述第一哈希数值和所述第二哈希值一致的情况下,将数据加密到所述第二联络通道。在两个哈希值一致的情况下,能够确保数据的读取操作是由所在通道子网的授权组织背书的。

具体实现中,联络人组织和授权组织所在子网(例如子网C),在向账本中写入数据时,同时将数据进行哈希运算后存入哈希数据通道,哈希数据通道在实例化链码时指定了背书策略,保证数据必须有子网中的授权组织进行背书才能写入,数据授权组织可以是子网内部专门设立的管理数据的组织,也可以是该子网中拥有该数据的某个用户组织,联络人在账本和哈希数据通道账本中读取同一个编号的数据,并进行哈希比对,验证无误后方可将数据加密到联络通道,以供服务中心调取。以实现在数据授权后才能进行数据的读取,提高数据的安全性。

因此可见,在成功创建联络通道后,从目标子网或者请求子网加入联络通道的组织中选择一个节点充当联络人,该联络人节点将同时处在两个不同的通道中,通过多通道的链码调用功能,将一个账本上的数据读取到另一个通道账本中,这样就实现了数据在不同账本间的流转。

如图5所示,哈希数据通道的参与方为授权组织(数据所有者)、联络人组织(例如第二联络人)、代理人组织(例如服务中心的对应代理人);在经过与数据的哈希值进行哈希校验通过后对数据进行加密上链,发送至对应的联络通道进行数据转发。

本发明的一种实现方式中,在子网注册成功并创建联络通道成功后,服务中心会针对每个子网生成一个对应的非对称加密的公私钥对,针对上链数据会产生一个对称加密的密钥。

在数据请求时,请求子网所请求的数据信息通过对称密钥进行加密,在各个账本或通道之间流通,任一方如果需要查看数据明文,就需要获取到该对称密钥。为防止对称密钥的泄露,如图6所示,读取用户公钥,使用各子网的公私钥对的公钥加密对称密钥,将加密后的对称密钥分发到每个联络通道,联络通道的联络人从通道里面获取加密后的对称密钥,使用对应的私钥进行解密,得到对称密钥,然后用该密钥解析加密数据获得数据的明文。对于参与数据分享的每一方而言,加密数据所使用的对称密钥是相同的,本模型采用AES算法生成对称密钥并给数据进行加密处理,并采用常用的RSA算法生成公私钥对。

用户信息选择存储在MySQL或其他关系型数据库,用户信息不仅包含基本的账号和密码,还包括用户所在子网名称,中间层12会在每个用户录入注册信息的同时生成唯一的公私钥对,公私钥对在对数据的重加密过程中起到关键作用。

当有两个或两个以上的通道子网同意加入数据分享服务,并注册相关信息后才能开启数据分享服务。通过自定义的数据结构将子网相关信息依次记录到服务平台的中继链账本上,这些信息包括通道子网络,子网对应的联络人、代理人和联络通道等。

如图7所示,本发明提供一种具体的数据通道分享模型。需要说明的是,超级账本子项目fabric中的通道与绑定到该通道上的组织节点和数据共同构成了一条私有的区块链覆盖(Blockchain Overlay),一个通道包含了交易、账本、链码和成员组织,这些成分共同组成了一条完整的区块链子网络,为解决通道子网之间的数据分享而提出的该模型包含了三层结构。

每个加入跨通道数据分享的通道子网上的合法用户,都能够在该层通过网页界面向服务中心发送相关请求信息,例如请求子网用户与服务中心的代理人之间通过STOMP消息通信,服务中心的代理人通过STOMP消息与目标子网进行通信。服务中心转发请求后,根据目标数据上链流通情况,将数据流状态信息通知给相关参与子网,用户也可以通过前端页面,调用SDK来执行账本数据的相关操作。

事务层11作为最靠近用户端的一层,主要负责用户登录后对数据请求的发送与转发,数据读取与传输过程中状态的反馈。

构建联络通道:要保证数据从目标子网顺利经过区块链网络传输到请求子网,就需要建立联络通道,联络通道实际上是一个只包含两个组织的fabric网络通道,它的作用是充当一个“桥梁”,目标数据通过这个“桥梁”传输到中继链账本。包括搭建联络通道、哈希数据通道等。

例如图7中包括请求通道网络目标通道网络和中继链网络,在请求通道网络上进行发送请求、接收数据、数据的解密和读取,对应的在目标通道网络上接收请求、读取账本、哈希值读取和数据加密;在中继链网络中,在注册子网后进行密钥分发并构建联络通道,在接收到发送请求后进行请求转发,在接收到目标子网用户发送的响应数据时进行数据转发。

请求解析:服务中心接受请求方发送的数据分享请求,根据请求内容找到数据所在的目标子网,以及参与数据分享的联络人、代理人节点参数信息和联络通道信息。

请求子网发出的数据请求,被数据分享服务中心接收处理,系统从数据源读取所需数据,并加密上链,通过服务中心底层的fabric中继链作为中介,顺利的传送到请求方。在整个请求及响应的过程中,从目标子网读取的数据,不经过任何其他网络设备,数据分享全过程都在链上进行,充分利用了fabric网络自有的安全性和访问权限控制功能,并在此基础上运用了重加密机制和哈希通道机制,使得数据的安全传输得到了进一步的保障。数据加密的过程就是在通过私钥解密得到对称密钥后,给链上分享的数据进行加解密操作。

数据授权是在请求子网通过数据分享服务中心发送数据请求后,目标子网接收到服务中心的转发请求,就通过相应的子网联络人读取账本数据,为了保证数据的真实和无误,构建了哈希数据通道,将需要分享的数据求得哈希值后上链保存。

中间层12是模型系统的核心部分,主要的功能都在该层实现,比如注册子网、生成公私钥对、转发请求以及反馈数据流信息。

所述网络层13是模型的底层部分,为整个模型提供基础网络设施。整个系统的通道子网络和数据分享中心底层中继链都是采用的fabric区块链网络。

此外,本发明还公开了一种基于区块链的跨通道数据分享方法,如图8所示所述方法包括:

S801,第一子网接收用户输入的请求数据信息,并通过第一联络通道将所述请求数据信息发送至所述服务中心,其中,所述请求数据信息包括数据所在的子网,数据编号和所述第一子网信息名称;

S802,所述服务中心接收所述请求数据信息,在判断所述第一子网为预先加入所述服务中心子网的情况下,根据所述请求数据信息包括数据所在的子网,获取数据所在的第二子网所对应的第二联络通道,将所述请求数据信息通过所述第二联络通道转发,其中,第二子网为预先加入所述服务中心的子网;

S803,所述第二子网接收所述请求数据信息,根据所述请求数据信息从所述服务中心中继链账本中解析目标编号数据,并加密上传到所述第一子网的第一联络通道,以使所述第一子网读取所述目标编号数据。

具体的,所述第一子网接收用户输入的请求数据信息,并通过第一联络通道将所述请求数据信息发送至所述服务中心的步骤,包括:所述第一子网接收用户输入的请求数据信息;针对上链数据产生对称加密的密钥,将所述请求数据信息通过所述对称密钥进行加密;第一联络人将加密后的对称密钥写入所述第一联络通道;通过第一联络通道将所述请求数据信息发送至所述服务中心;

所述第二子网接收所述请求数据信息的步骤,包括:第二联络人从所述第二通道中获取加密后的对称密钥,根据对应的私钥进行解密,得到对称密钥;根据所述对称密钥解析获得所述请求数据信息;其中,所述第一联络人为所述第一子网的指定节点;所述第二联络人为所述第一子网的指定节点。

具体的,所述方法还包括:第三子网在向所述中继链账本写入数据时,将数据进行哈希运算后存入哈希数据通道;在任意一个联络人在所述中继链账本中读取数据时,获取该数据对应的第一哈希值,以及哈希数据通道账本中该数据所对应的第二哈希值;在所述第一哈希值和所述第二哈希值一致时,接收该联络人的数据读取命令。

以及,所述方法还包括:

所述服务中心接收需要注册子网的用户信息,并录入MySQL数据库;根据每个子网建立一个用户账号;生成该用户对应的公钥和私钥,并同用户个人信息MySQL数据库。

此外,本发明还公开一种基于区块链的跨通道数据分享装置,所述装置包括处理器、以及通过通信总线与所述处理器连接的存储器;其中,所述存储器,用于存储基于区块链的跨通道数据分享程序;所述处理器,用于执行所述基于区块链的跨通道数据分享程序,以实现任一项所述的基于区块链的跨通道数据分享步骤。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1