CN113961645A - 数据共享方法、装置、存储介质及电子设备 - Google Patents
数据共享方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN113961645A CN113961645A CN202111294905.0A CN202111294905A CN113961645A CN 113961645 A CN113961645 A CN 113961645A CN 202111294905 A CN202111294905 A CN 202111294905A CN 113961645 A CN113961645 A CN 113961645A
- Authority
- CN
- China
- Prior art keywords
- data
- target
- ciphertext
- data provider
- provider
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及一种数据共享方法、装置、存储介质及电子设备。该方法包括:数据提供方对待共享的目标数据进行数据拆分,得到多个目标子数据,每一目标子数据对应有索引信息;数据提供方针对每一目标子数据,随机分配对称密钥,并根据随机分配的对称秘钥进行加密,得到目标子数据密文;数据提供方根据数据提供方的私钥对各对称秘钥进行加密,得到相应地对称密钥密文;数据提供方将包括各目标子数据密文、各对称密钥密文、各目标子数据的索引信息、用于表征数据提供方的唯一标识符的目标数据结构存储在链下存储代理中心,并将基于多个目标子数据计算得到的Merkle树存储在区块链,以完成目标数据的共享。采用这种方法可提升目标数据的安全性。
Description
技术领域
本公开涉及区块链技术领域,具体地,涉及一种数据共享方法、装置、存储介质及电子设备。
背景技术
区块链多方协作的特性和智能合约自动执行的特性使得区块链技术能够在不同的算法逻辑与场景模式下广泛应用。尤其在数据共享场景中,区块链技术的去中心化、去信任特点能够从根本上提高数据共享的效率。但是,区块链完全公开的特点、多方可见的账本特色同时也是一把双刃剑,目前由于难以限制用户访问区块链中存储的数据,所以存在数据泄漏的隐患。
发明内容
本公开的目的是提供一种数据共享方法、装置、存储介质及电子设备,以避免共享数据泄露,保障共享数据的安全性。
为了实现上述目的,本公开实施例的第一部分提供一种数据共享方法,所述方法应用于区块链系统,包括:
数据提供方对待共享的目标数据进行数据拆分,得到多个目标子数据,其中,每一所述目标子数据对应有索引信息;
所述数据提供方针对每一所述目标子数据,随机分配对称密钥,并根据随机分配的对称秘钥进行加密,得到目标子数据密文;
所述数据提供方根据所述数据提供方的私钥对各所述对称秘钥进行加密,得到相应地对称密钥密文;
所述数据提供方将包括各所述目标子数据密文、各所述对称密钥密文、各所述目标子数据的所述索引信息、以及用于表征所述数据提供方的唯一标识符的目标数据结构存储在链下存储代理中心,并将基于所述多个目标子数据计算得到的Merkle树存储在区块链,以完成所述目标数据的共享,其中,所述Merkle树用于数据需求方校验从所述链下存储代理中心获取到的数据。
可选地,所述区块链上存储有所述数据提供方的身份信息,所述数据提供方的身份信息是通过如下方式生成的:
所述数据提供方通过非对称密钥生成器生成所述数据提供方的公钥和私钥,并将所述数据提供方的私钥存储在所述数据提供方的终端设备;
所述数据提供方对所述数据提供方的公钥进行转码以得到用于表征所述数据提供方的唯一标识符;
所述数据提供方根据所述数据提供方的私钥对包括所述数据提供方的公钥和所述数据提供方的唯一标识符的基础信息进行数字签名,得到签名信息,将所述签名信息与所述基础信息组合得到所述数据提供方的身份信息。
可选地,所述方法还包括:
所述数据需求方向所述数据提供方发送数据获取请求,所述数据获取请求所请求的目标需求数据包括至少一个所述目标子数据;
所述数据提供方响应于接收到所述数据获取请求,根据所述数据获取请求中携带的用于表征所述数据需求方的唯一标识符从所述区块链获取所述数据需求方的公钥,其中,所述区块链存储有所述数据需求方的身份信息;
所述数据提供方根据所述数据需求方的公钥以及所述数据提供方的私钥生成代理重加密密钥,并至少根据所述代理重加密密钥以及所述目标需求数据的所述索引信息生成授权信息;
所述数据提供方将所述授权信息发送给所述链下存储代理中心,所述授权信息用于授权所述链下存储代理中心向所述数据需求方提供所述目标需求数据。
可选地,所述方法还包括:
所述数据提供方向所述数据需求方发送数据授权通知;
所述数据需求方在接收到所述数据授权通知的情况下,向所述链下存储代理中心发送链下数据获取请求;
所述链下存储代理中心响应于接收到所述链下数据获取请求,从所述区块链获取所述数据需求方的公钥以验证所述数据需求方的身份,并在验证通过的情况下,将目标加密数据反馈给所述数据需求方,其中,所述目标加密数据是根据所述授权信息生成的。
可选地,所述链下存储代理中心根据所述授权信息生成所述目标加密数据,包括:
根据所述授权信息中所述目标需求数据的所述索引信息,确定目标需求子数据密文;
根据所述授权信息中所述代理重加密密钥对与所述目标需求子数据密文对应的对称密钥密文进行重加密,得到重加密密文,所述目标加密数据包括所述目标需求子数据密文和所述重加密密文。
可选地,所述方法还包括:
所述数据需求方响应于获取到所述目标加密数据,根据所述数据需求方的私钥对所述重加密密文进行解密,得到与所述目标需求子数据密文对应的目标对称密钥;
所述数据需求方根据所述目标对称密钥对所述目标需求子数据密文进行解密,得到所述目标需求数据。
可选地,所述方法还包括:
所述数据需求方从所述区块链获取所述Merkle树,以校验所述目标需求数据。
本公开实施例的第二部分提供一种数据共享装置,所述装置应用于区块链系统,包括:
拆分模块,用于数据提供方对待共享的目标数据进行数据拆分,得到多个目标子数据,其中,每一所述目标子数据对应有索引信息;
第一加密模块,用于所述数据提供方针对每一所述目标子数据,随机分配对称密钥,并根据随机分配的对称秘钥进行加密,得到目标子数据密文;
第二加密模块,用于所述数据提供方根据所述数据提供方的私钥对各所述对称秘钥进行加密,得到相应地对称密钥密文;
共享模块,用于所述数据提供方将包括各所述目标子数据密文、各所述对称密钥密文、各所述目标子数据的所述索引信息、以及用于表征所述数据提供方的唯一标识符的目标数据结构存储在链下存储代理中心,并将基于所述多个目标子数据计算得到的Merkle树存储在区块链,以完成所述目标数据的共享,其中,所述Merkle树用于数据需求方校验从所述链下存储代理中心获取到的数据。
可选地,所述区块链上存储有所述数据提供方的身份信息,所述装置还包括第一生成模块,用于通过如下方式生成所述数据提供方的身份信息:
所述数据提供方通过非对称密钥生成器生成所述数据提供方的公钥和私钥,并将所述数据提供方的私钥存储在所述数据提供方的终端设备;
所述数据提供方对所述数据提供方的公钥进行转码以得到用于表征所述数据提供方的唯一标识符;
所述数据提供方根据所述数据提供方的私钥对包括所述数据提供方的公钥和所述数据提供方的唯一标识符的基础信息进行数字签名,得到签名信息,将所述签名信息与所述基础信息组合得到所述数据提供方的身份信息。
可选地,所述装置还包括:
第一请求模块,用于所述数据需求方向所述数据提供方发送数据获取请求,所述数据获取请求所请求的目标需求数据包括至少一个所述目标子数据;
第一获取模块,用于所述数据提供方响应于接收到所述数据获取请求,根据所述数据获取请求中携带的用于表征所述数据需求方的唯一标识符从所述区块链获取所述数据需求方的公钥,其中,所述区块链存储有所述数据需求方的身份信息;
第二生成模块,用于所述数据提供方根据所述数据需求方的公钥以及所述数据提供方的私钥生成代理重加密密钥,并至少根据所述代理重加密密钥以及所述目标需求数据的所述索引信息生成授权信息;
第一发送模块,用于所述数据提供方将所述授权信息发送给所述链下存储代理中心,所述授权信息用于授权所述链下存储代理中心向所述数据需求方提供所述目标需求数据。
可选地,所述装置还包括:
第二发送模块,用于所述数据提供方向所述数据需求方发送数据授权通知;
第三发送模块,用于所述数据需求方在接收到所述数据授权通知的情况下,向所述链下存储代理中心发送链下数据获取请求;
反馈模块,用于所述链下存储代理中心响应于接收到所述链下数据获取请求,从所述区块链获取所述数据需求方的公钥以验证所述数据需求方的身份,并在验证通过的情况下,将目标加密数据反馈给所述数据需求方,其中,所述目标加密数据是根据所述授权信息生成的。
可选地,所述装置还包括第三生成模块,用于所述链下存储代理中心根据所述授权信息通过如下方式生成所述目标加密数据:
根据所述授权信息中所述目标需求数据的所述索引信息,确定目标需求子数据密文;
根据所述授权信息中所述代理重加密密钥对与所述目标需求子数据密文对应的对称密钥密文进行重加密,得到重加密密文,所述目标加密数据包括所述目标需求子数据密文和所述重加密密文。
可选地,所述装置还包括:
第一解密模块,用于所述数据需求方响应于获取到所述目标加密数据,根据所述数据需求方的私钥对所述重加密密文进行解密,得到与所述目标需求子数据密文对应的目标对称密钥;
第二解密模块,用于所述数据需求方根据所述目标对称密钥对所述目标需求子数据密文进行解密,得到所述目标需求数据。
可选地,所述装置还包括:
校验模块,用于所述数据需求方从所述区块链获取所述Merkle树,以校验所述目标需求数据。
本公开实施例的第三部分提供一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一部分中任一项所述方法的步骤。
本公开实施例的第四部分提供一种电子设备,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现第一部分中任一项所述方法的步骤。
采用上述技术方案,至少可以达到如下的技术效果:
数据提供方通过对待共享的目标数据进行数据拆分,得到多个目标子数据。针对每一目标子数据,随机分配对称密钥,并根据随机分配的对称秘钥进行加密,得到目标子数据密文。根据数据提供方的私钥对各对称秘钥进行加密,得到相应地对称密钥密文。将包括各目标子数据密文、各对称密钥密文、各目标子数据的索引信息、以及用于表征数据提供方的唯一标识符的目标数据结构存储在链下存储代理中心,并将基于各目标子数据(目标数据)计算得到的Merkle树存储在区块链以完成目标数据的共享。本公开的这种将目标数据结构存储在链下存储代理中心的方式,可缓解区块链的网络带宽与存储能力不足的问题。而将基于各目标子数据计算得到的Merkle树存储在区块链的方式,可保障存储在链下存储代理中心的目标数据不被篡改。此外,由于存储在链下存储代理中心的共享数据是以目标子数据密文的形式存储的,因此可保障链下存储代理中心无法获取到解密后的共享数据,这进一步提升了共享数据的安全性。另外,由于目标数据被拆分为多个目标子数据,且加密这些目标子数据的对称密钥不尽相同,所以这能再进一步保障整个目标数据的安全性。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是根据本公开一示例性实施例示出的一种区块链系统的框图。
图2是根据本公开一示例性实施例示出的一种数据共享方法的流程图。
图3是根据本公开一示例性实施例示出的一种Merkle树示意图。
图4是根据本公开一示例性实施例示出的一种身份信息生成方法的示意图。
图5是根据本公开一示例性实施例示出的另一种数据共享方法的流程图。
图6是根据本公开一示例性实施例示出的一种数据共享装置的框图。
图7是根据本公开一示例性实施例示出的一种电子设备的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
区块链多方协作的特性和智能合约自动执行的特性使得区块链技术能够在不同的算法逻辑与场景模式下广泛应用。尤其在数据共享场景中,区块链技术的去中心化、去信任特点能够从根本上提高数据共享的效率。但是,区块链完全公开的特点、多方可见的账本特色同时也是一把双刃剑,目前由于难以合理控制对区块链中存储的数据的访问,所以存在数据泄漏的隐患。
为了解决链上数据容易泄露的问题,可采用链下存储、链上记录的模式来对共享数据进行管理,但是这种方式虽然能保障共享数据不被篡改,但链下存储共享数据的方式仍然无法避免数据泄漏的问题。
有鉴于此,本公开实施例提供一种数据共享方法、装置、存储介质及电子设备,以解决上述问题。
为了使本领域普通技术人员更加容易理解本公开的技术方案,下面先对本公开的应用场景进行简要说明。本公开的技术方案应用于如图1所示的区块链系统。该区块链系统包括数据提供方、数据需求方、链下存储代理中心、以及区块链(网络)。其中,数据提供方和数据需求方可以为区块链的节点,数据提供方可以为数据需求方,数据需求方也可以为数据提供方。
下面对本公开的技术方案进行详细的实施例说明。
图2是根据本公开一示例性实施例示出的一种数据共享方法的流程图,该数据共享方法应用于区块链系统,例如应用于图1所示的区块链系统。如图2所示,该数据共享方法包括以下步骤:
S11、数据提供方对待共享的目标数据进行数据拆分,得到多个目标子数据,其中,每一所述目标子数据对应有索引信息。
示例地,数据提供方对待共享的目标数据进行数据拆分,得到多个目标子数据,并针对每一目标子数据分配索引信息。每一目标子数据的索引信息可以为从该目标子数据中抽取到的关键词。或者,每一目标子数据的索引信息也可以是根据该目标子数据在目标数据中的位置(如章节、段落等)信息确定的。索引信息用于快速找到所需的数据。
S12、所述数据提供方针对每一所述目标子数据,随机分配对称密钥,并根据随机分配的对称秘钥进行加密,得到目标子数据密文。
在一种可能的实施方式中,数据提供方针对每一目标子数据,随机生成或分配对称密钥。示例地,如表1所示,针对每一目标子数据均随机生成(随机分配)一个对称密钥。进一步地,针对每一目标子数据,根据随机分配的对称秘钥对该目标子数据进行加密,得到该目标子数据对应的目标子数据密文。
表1
S13、所述数据提供方根据所述数据提供方的私钥对各所述对称秘钥进行加密,得到相应地对称密钥密文。
针对每一用于加密目标子数据的对称密钥,根据数据提供方的私钥进行加密,得到对应地对称密钥密文。根据表1举例来说,假设数据提供方的私钥为ska,那么针对kaes1、kaes2、kaes3分别进行加密后得到相应的对称密钥密文Cak1=Enc(kaes1,ska)、Cak2=Enc(kaes2,ska)、Cak3=Enc(kaes3,ska)。
此处值得说明的是,本公开不限制步骤S12、S13之间的先后顺序。例如,数据提供方可随机生成(或从对称密钥库获取)对称秘钥,同时基于ska对该对称秘钥进行加密得到相应地对称密钥密文,然后根据随机分配的对称秘钥对目标子数据进行加密,得到目标子数据密文。又例如,数据提供方可随机生成(或从对称密钥库获取)对称秘钥,并在根据随机分配的对称秘钥对目标子数据进行加密得到目标子数据密文之后,再基于ska对该对称秘钥进行加密得到相应地对称密钥密文。
S14、所述数据提供方将包括各所述目标子数据密文、各所述对称密钥密文、各所述目标子数据的所述索引信息、以及用于表征所述数据提供方的唯一标识符的目标数据结构存储在链下存储代理中心,并将基于所述多个目标子数据计算得到的Merkle树存储在区块链,以完成所述目标数据的共享,其中,所述Merkle树用于数据需求方校验从所述链下存储代理中心获取到的数据。
在具体实施时,数据提供方根据各目标子数据密文、各对称密钥密文、各目标子数据的索引信息、以及用于表征数据提供方的唯一标识符生成目标数据结构。示例地,目标数据结构如下表2所示。数据提供方将目标数据结构存储在链下存储代理中心。
表2
同时,数据提供方基于划分的各目标子数据计算Merkle树。示例地,如图3所示,Merkle树可以是针对各目标子数据进行哈希计算得到的,其中Merkle树的叶子节点为各目标子数据的哈希值。
应当解释的是,Merkle树是指默克尔树,用于对数据进行完整性验证。比如数据需求方从链下存储代理中心获取到的数据为图3中的目标子数据1和目标子数据2。那么在数据需求方校验从链下存储代理中心获取到的目标子数据1和目标子数据2时,根据目标子数据1和目标子数据2构造目标Merkle树,比较该目标Merkle树的根节点和Merkle树中相同的数据量的根节点(即图3中的hash01)是否相同,以确定数据需求方从链下存储代理中心获取到的目标子数据1和目标子数据2的完整性和准确性。
采用上述方法,数据提供方通过对待共享的目标数据进行数据拆分,得到多个目标子数据。针对每一目标子数据,随机分配对称密钥,并根据随机分配的对称秘钥进行加密,得到目标子数据密文。根据数据提供方的私钥对各对称秘钥进行加密,得到相应地对称密钥密文。将包括各目标子数据密文、各对称密钥密文、各目标子数据的索引信息、以及用于表征数据提供方的唯一标识符的目标数据结构存储在链下存储代理中心,并将基于各目标子数据(目标数据)计算得到的Merkle树存储在区块链以完成目标数据的共享。本公开的这种将目标数据结构存储在链下存储代理中心的方式,可缓解区块链的网络带宽与存储能力不足的问题。而将基于各目标子数据计算得到的Merkle树存储在区块链的方式,可保障存储在链下存储代理中心的目标数据不被篡改。此外,由于存储在链下存储代理中心的共享数据是以目标子数据密文的形式存储的,因此可保障链下存储代理中心无法获取到解密后的共享数据,这进一步提升了共享数据的安全性。另外,由于目标数据被拆分为多个目标子数据,且加密这些目标子数据的对称密钥不尽相同,所以这能再进一步保障整个目标数据的安全性。
可选地,所述区块链上存储有所述数据提供方的身份信息,所述数据提供方的身份信息是通过如下方式生成的:
所述数据提供方通过非对称密钥生成器生成所述数据提供方的公钥和私钥,并将所述数据提供方的私钥存储在所述数据提供方的终端设备;
所述数据提供方对所述数据提供方的公钥进行转码以得到用于表征所述数据提供方的唯一标识符;
所述数据提供方根据所述数据提供方的私钥对包括所述数据提供方的公钥和所述数据提供方的唯一标识符的基础信息进行数字签名,得到签名信息,将所述签名信息与所述基础信息组合得到所述数据提供方的身份信息。
示例地,参见图4,数据提供方通过非对称密钥生成器生成数据提供方的公钥和私钥,并将数据提供方的私钥存储在数据提供方自己的终端设备上。进一步地,数据提供方对数据提供方的公钥进行转码(可采用相关技术中的摘要算法或转码算法)以得到用于表征数据提供方的唯一标识符。数据提供方根据数据提供方的私钥对包括数据提供方的公钥和数据提供方的唯一标识符的基础信息进行数字签名,得到签名后的签名信息。数据提供方将签名信息以及包括数据提供方的公钥和数据提供方的唯一标识符的基础信息一起上传至区块链网络进行存储。
采用这种方式,由于身份信息中包括数据提供方的唯一标识符,因此身份信息具备唯一标识性。而由于区块链具备全网公开性和可信性。因此,存储在区块链的数据提供方的身份信息因不可被篡改而具备公开性和可信性。进一步地,持有私钥的用户(数据提供方)所做的数字签名由于其公钥的公开性而使得数字签名具备了不可抵赖性的效果。同时,由于用户的公钥公开且可信,因此该公钥可供链下存储代理中心在与该用户交互的过程中验证该用户的身份,例如图5所示的身份验证过程。如此本公开的这种基于区块链的分布式数字身份生成机制可以产生与传统技术中CA安全体系相类似的身份验证效果。
此处值得说明的是,区块链中还存储有数据需求方的身份信息。数据需求方的身份信息的生成方式与前述数据提供方的身份信息生成方式类似,此处不再赘述。
可选地,所述方法还可以包括以下步骤:
所述数据需求方向所述数据提供方发送数据获取请求,所述数据获取请求所请求的目标需求数据包括至少一个所述目标子数据;
所述数据提供方响应于接收到所述数据获取请求,根据所述数据获取请求中携带的用于表征所述数据需求方的唯一标识符从所述区块链获取所述数据需求方的公钥,其中,所述区块链存储有所述数据需求方的身份信息;
所述数据提供方根据所述数据需求方的公钥以及所述数据提供方的私钥生成代理重加密密钥,并至少根据所述代理重加密密钥以及所述目标需求数据的所述索引信息生成授权信息;
所述数据提供方将所述授权信息发送给所述链下存储代理中心,所述授权信息用于授权所述链下存储代理中心向所述数据需求方提供所述目标需求数据。
在具体实施时,数据需求方在需求数据提供方共享的共享数据的情况下,数据需求方可向数据提供方发送数据获取请求,该数据获取请求所请求的目标需求数据包括数据提供方共享的目标数据中的至少一个目标子数据。
进一步地,数据提供方响应于接收到数据需求方发送的数据获取请求,根据数据获取请求中携带的用于表征数据需求方的唯一标识符从区块链(存储的数据需求方的身份信息中)获取数据需求方的公钥。数据提供方在获取到数据需求方的公钥的情况下,根据获取到的数据需求方的公钥以及数据提供方自身的私钥生成代理重加密密钥,并至少根据代理重加密密钥以及目标需求数据的索引信息生成授权信息。并将授权信息发送给链下存储代理中心,以授权链下存储代理中心向数据需求方提供目标需求数据。
一种可能的实施方式,数据提供方在获取到数据需求方的公钥的情况下,根据获取到的数据需求方的公钥以及数据提供方自身的私钥生成代理重加密密钥,并根据代理重加密密钥、目标需求数据的索引信息、数据提供方的唯一标识符、以及数据需求方的唯一标识符生成授权信息。其中,数据提供方的唯一标识符、数据需求方的唯一标识符、以及目标需求数据的索引信息用于告知链下存储代理中心谁向谁授权哪些共享数据。
可选地,所述方法还可以包括以下步骤:
所述数据提供方向所述数据需求方发送数据授权通知;
所述数据需求方在接收到所述数据授权通知的情况下,向所述链下存储代理中心发送链下数据获取请求;
所述链下存储代理中心响应于接收到所述链下数据获取请求,从所述区块链获取所述数据需求方的公钥以验证所述数据需求方的身份,并在验证通过的情况下,将目标加密数据反馈给所述数据需求方,其中,所述目标加密数据是根据所述授权信息生成的。
在具体实施时,数据提供方将授权信息发送给链下存储代理中心之后,链下存储代理中心可响应于接收到数据提供方发送的授权信息,验证数据提供方的身份,以确定授权信息的可信性。
而数据提供方将授权信息发送给链下存储代理中心之后或同时,数据提供方可向数据需求方反馈数据授权通知,以通知数据需求方可以从链下存储代理中心获取到目标需求数据。
数据需求方在接收到数据提供方发送的数据授权通知的情况下,可向链下存储代理中心发送链下数据获取请求。链下存储代理中心响应于接收到数据需求方发送的链下数据获取请求,从区块链获取数据需求方的公钥以验证数据需求方的身份(签名验证),并在验证通过的情况下,将根据授权信息生成的目标加密数据反馈给数据需求方。
可选地,所述链下存储代理中心根据所述授权信息生成所述目标加密数据,包括:
根据所述授权信息中所述目标需求数据的所述索引信息,确定目标需求子数据密文;根据所述授权信息中所述代理重加密密钥对与所述目标需求子数据密文对应的目标对称密钥密文进行重加密,得到重加密密文,所述目标加密数据包括所述目标需求子数据密文和所述重加密密文。
一种可实现的实施方式,链下存储代理中心在接收到数据提供方发送的授权信息的情况下,或者链下存储代理中心在接收到数据需求方发送的链下数据获取请求的情况下,链下存储代理中心根据授权信息中目标需求数据的索引信息,确定目标需求子数据密文,其中目标需求子数据密文为一个或多个目标子数据密文。并根据授权信息中代理重加密密钥对与目标需求子数据密文对应的目标对称密钥密文进行重加密,得到重加密密文,其中目标对称密钥密文为一个或多个对称密钥密文。如此链下存储代理中心可生成包括目标需求子数据密文和重加密密文的目标加密数据。
可选地,所述方法还包括:
所述数据需求方响应于获取到所述目标加密数据,根据所述数据需求方的私钥对所述重加密密文进行解密,得到与所述目标需求子数据密文对应的目标对称密钥;所述数据需求方根据所述目标对称密钥对所述目标需求子数据密文进行解密,得到所述目标需求数据。
示例地,在数据需求方请求获取目标子数据M的情况下,数据提供方、数据需求方、以及链下存储代理中心对目标子数据M的加解密过程如下:
首先,数据提供方随机生成对称密钥kaes=KeyGenaes(rand),并根据随机生成的对称密钥kaes对目标子数据M进行加密,得到目标子数据密文C=Encaes(M,kaes)。同时,数据提供方根据自身私钥ska对对称密钥kaes进行加密,得到对称密钥密文Cak=Enc(kaes,ska)。数据提供方根据自身私钥ska与数据需求方的公钥pkb生成代理重加密密钥rka→b=ReKeyGen(pkb,ska)。
链下存储代理中心根据代理重加密密钥rka→b将对称密钥密文Cak重加密得到重加密密文Cbk=ReEnc(Cak,rka→b)。
数据需求方根据自身私钥skb将重加密密文Cbk解密为对称密钥kaes=Dec(Cbk,skb)。数据需求方使用kaes将目标子数据密文C解密为明文目标子数据M=Decaes(C,kaes)。
为了便于本领域普通技术人员更加容易理解本公开上述实施例,在图5中示出了数据提供方、数据需求方、区块链、以及链下存储代理中心之间的数据交互过程。其中各个步骤执行的具体操作,已经在前述实施例中进行了详细的说明,此处不再赘述。
基于同一发明构思,本公开实施例还提供一种数据共享装置,所述装置应用于区块链系统,如图6所示,该装置600包括:
拆分模块610,用于数据提供方对待共享的目标数据进行数据拆分,得到多个目标子数据,其中,每一所述目标子数据对应有索引信息;
第一加密模块620,用于所述数据提供方针对每一所述目标子数据,随机分配对称密钥,并根据随机分配的对称秘钥进行加密,得到目标子数据密文;
第二加密模块630,用于所述数据提供方根据所述数据提供方的私钥对各所述对称秘钥进行加密,得到相应地对称密钥密文;
共享模块640,用于所述数据提供方将包括各所述目标子数据密文、各所述对称密钥密文、各所述目标子数据的所述索引信息、以及用于表征所述数据提供方的唯一标识符的目标数据结构存储在链下存储代理中心,并将基于所述多个目标子数据计算得到的Merkle树存储在区块链,以完成所述目标数据的共享,其中,所述Merkle树用于数据需求方校验从所述链下存储代理中心获取到的数据。
采用这种装置,数据提供方通过对待共享的目标数据进行数据拆分,得到多个目标子数据。针对每一目标子数据,随机分配对称密钥,并根据随机分配的对称秘钥进行加密,得到目标子数据密文。根据数据提供方的私钥对各对称秘钥进行加密,得到相应地对称密钥密文。将包括各目标子数据密文、各对称密钥密文、各目标子数据的索引信息、以及用于表征数据提供方的唯一标识符的目标数据结构存储在链下存储代理中心,并将基于各目标子数据(目标数据)计算得到的Merkle树存储在区块链以完成目标数据的共享。本公开的这种将目标数据结构存储在链下存储代理中心的方式,可缓解区块链的网络带宽与存储能力不足的问题。而将基于各目标子数据计算得到的Merkle树存储在区块链的方式,可保障存储在链下存储代理中心的目标数据不被篡改。此外,由于存储在链下存储代理中心的共享数据是以目标子数据密文的形式存储的,因此可保障链下存储代理中心无法获取到解密后的共享数据,这进一步提升了共享数据的安全性。另外,由于目标数据被拆分为多个目标子数据,且加密这些目标子数据的对称密钥不尽相同,所以这能再进一步保障整个目标数据的安全性。
可选地,所述区块链上存储有所述数据提供方的身份信息,所述装置600还包括第一生成模块,用于通过如下方式生成所述数据提供方的身份信息:
所述数据提供方通过非对称密钥生成器生成所述数据提供方的公钥和私钥,并将所述数据提供方的私钥存储在所述数据提供方的终端设备;
所述数据提供方对所述数据提供方的公钥进行转码以得到用于表征所述数据提供方的唯一标识符;
所述数据提供方根据所述数据提供方的私钥对包括所述数据提供方的公钥和所述数据提供方的唯一标识符的基础信息进行数字签名,得到签名信息,将所述签名信息与所述基础信息组合得到所述数据提供方的身份信息。
可选地,所述装置600还包括:
第一请求模块,用于所述数据需求方向所述数据提供方发送数据获取请求,所述数据获取请求所请求的目标需求数据包括至少一个所述目标子数据;
第一获取模块,用于所述数据提供方响应于接收到所述数据获取请求,根据所述数据获取请求中携带的用于表征所述数据需求方的唯一标识符从所述区块链获取所述数据需求方的公钥,其中,所述区块链存储有所述数据需求方的身份信息;
第二生成模块,用于所述数据提供方根据所述数据需求方的公钥以及所述数据提供方的私钥生成代理重加密密钥,并至少根据所述代理重加密密钥以及所述目标需求数据的所述索引信息生成授权信息;
第一发送模块,用于所述数据提供方将所述授权信息发送给所述链下存储代理中心,所述授权信息用于授权所述链下存储代理中心向所述数据需求方提供所述目标需求数据。
可选地,所述装置600还包括:
第二发送模块,用于所述数据提供方向所述数据需求方发送数据授权通知;
第三发送模块,用于所述数据需求方在接收到所述数据授权通知的情况下,向所述链下存储代理中心发送链下数据获取请求;
反馈模块,用于所述链下存储代理中心响应于接收到所述链下数据获取请求,从所述区块链获取所述数据需求方的公钥以验证所述数据需求方的身份,并在验证通过的情况下,将目标加密数据反馈给所述数据需求方,其中,所述目标加密数据是根据所述授权信息生成的。
可选地,所述装置600还包括第三生成模块,用于所述链下存储代理中心根据所述授权信息通过如下方式生成所述目标加密数据:
根据所述授权信息中所述目标需求数据的所述索引信息,确定目标需求子数据密文;
根据所述授权信息中所述代理重加密密钥对与所述目标需求子数据密文对应的对称密钥密文进行重加密,得到重加密密文,所述目标加密数据包括所述目标需求子数据密文和所述重加密密文。
可选地,所述装置600还包括:
第一解密模块,用于所述数据需求方响应于获取到所述目标加密数据,根据所述数据需求方的私钥对所述重加密密文进行解密,得到与所述目标需求子数据密文对应的目标对称密钥;
第二解密模块,用于所述数据需求方根据所述目标对称密钥对所述目标需求子数据密文进行解密,得到所述目标需求数据。
可选地,所述装置600还包括:
校验模块,用于所述数据需求方从所述区块链获取所述Merkle树,以校验所述目标需求数据。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图7是根据一示例性实施例示出的一种电子设备700的框图。如图7所示,该电子设备700可以包括:处理器701,存储器702。该电子设备700还可以包括多媒体组件703,输入/输出(I/O)接口704,以及通信组件705中的一者或多者。
其中,处理器701用于控制该电子设备700的整体操作,以完成上述的数据共享方法中的数据需求方/数据提供方/链下存储代理中心/区块链的全部或部分步骤。存储器702用于存储各种类型的数据以支持在该电子设备700的操作,这些数据例如可以包括用于在该电子设备700上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器702可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random AccessMemory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable ProgrammableRead-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable ProgrammableRead-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件703可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器702或通过通信组件705发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口704为处理器701和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件705用于该电子设备700与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near Field Communication,简称NFC),2G、3G、4G、NB-IOT、eMTC、或其他5G等等,或它们中的一种或几种的组合,在此不做限定。因此相应的该通信组件705可以包括:Wi-Fi模块,蓝牙模块,NFC模块等等。
在一示例性实施例中,电子设备700可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的数据共享方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的数据共享方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器702,上述程序指令可由电子设备700的处理器701执行以完成上述的数据共享方法。
在另一示例性实施例中,还提供一种计算机程序产品,该计算机程序产品包含能够由可编程的装置执行的计算机程序,该计算机程序具有当由该可编程的装置执行时用于执行上述的数据共享方法的代码部分。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
Claims (10)
1.一种数据共享方法,其特征在于,所述方法应用于区块链系统,包括:
数据提供方对待共享的目标数据进行数据拆分,得到多个目标子数据,其中,每一所述目标子数据对应有索引信息;
所述数据提供方针对每一所述目标子数据,随机分配对称密钥,并根据随机分配的对称秘钥进行加密,得到目标子数据密文;
所述数据提供方根据所述数据提供方的私钥对各所述对称秘钥进行加密,得到相应地对称密钥密文;
所述数据提供方将包括各所述目标子数据密文、各所述对称密钥密文、各所述目标子数据的所述索引信息、以及用于表征所述数据提供方的唯一标识符的目标数据结构存储在链下存储代理中心,并将基于所述多个目标子数据计算得到的Merkle树存储在区块链,以完成所述目标数据的共享,其中,所述Merkle树用于数据需求方校验从所述链下存储代理中心获取到的数据。
2.根据权利要求1所述的方法,其特征在于,所述区块链上存储有所述数据提供方的身份信息,所述数据提供方的身份信息是通过如下方式生成的:
所述数据提供方通过非对称密钥生成器生成所述数据提供方的公钥和私钥,并将所述数据提供方的私钥存储在所述数据提供方的终端设备;
所述数据提供方对所述数据提供方的公钥进行转码以得到用于表征所述数据提供方的唯一标识符;
所述数据提供方根据所述数据提供方的私钥对包括所述数据提供方的公钥和所述数据提供方的唯一标识符的基础信息进行数字签名,得到签名信息,将所述签名信息与所述基础信息组合得到所述数据提供方的身份信息。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述数据需求方向所述数据提供方发送数据获取请求,所述数据获取请求所请求的目标需求数据包括至少一个所述目标子数据;
所述数据提供方响应于接收到所述数据获取请求,根据所述数据获取请求中携带的用于表征所述数据需求方的唯一标识符从所述区块链获取所述数据需求方的公钥,其中,所述区块链存储有所述数据需求方的身份信息;
所述数据提供方根据所述数据需求方的公钥以及所述数据提供方的私钥生成代理重加密密钥,并至少根据所述代理重加密密钥以及所述目标需求数据的所述索引信息生成授权信息;
所述数据提供方将所述授权信息发送给所述链下存储代理中心,所述授权信息用于授权所述链下存储代理中心向所述数据需求方提供所述目标需求数据。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
所述数据提供方向所述数据需求方发送数据授权通知;
所述数据需求方在接收到所述数据授权通知的情况下,向所述链下存储代理中心发送链下数据获取请求;
所述链下存储代理中心响应于接收到所述链下数据获取请求,从所述区块链获取所述数据需求方的公钥以验证所述数据需求方的身份,并在验证通过的情况下,将目标加密数据反馈给所述数据需求方,其中,所述目标加密数据是根据所述授权信息生成的。
5.根据权利要求4所述的方法,其特征在于,所述链下存储代理中心根据所述授权信息生成所述目标加密数据,包括:
根据所述授权信息中所述目标需求数据的所述索引信息,确定目标需求子数据密文;
根据所述授权信息中所述代理重加密密钥对与所述目标需求子数据密文对应的目标对称密钥密文进行重加密,得到重加密密文,所述目标加密数据包括所述目标需求子数据密文和所述重加密密文。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
所述数据需求方响应于获取到所述目标加密数据,根据所述数据需求方的私钥对所述重加密密文进行解密,得到与所述目标需求子数据密文对应的目标对称密钥;
所述数据需求方根据所述目标对称密钥对所述目标需求子数据密文进行解密,得到所述目标需求数据。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
所述数据需求方从所述区块链获取所述Merkle树,以校验所述目标需求数据。
8.一种数据共享装置,其特征在于,所述装置应用于区块链系统,包括:
拆分模块,用于数据提供方对待共享的目标数据进行数据拆分,得到多个目标子数据,其中,每一所述目标子数据对应有索引信息;
第一加密模块,用于所述数据提供方针对每一所述目标子数据,随机分配对称密钥,并根据随机分配的对称秘钥进行加密,得到目标子数据密文;
第二加密模块,用于所述数据提供方根据所述数据提供方的私钥对各所述对称秘钥进行加密,得到相应地对称密钥密文;
共享模块,用于所述数据提供方将包括各所述目标子数据密文、各所述对称密钥密文、各所述目标子数据的所述索引信息、以及用于表征所述数据提供方的唯一标识符的目标数据结构存储在链下存储代理中心,并将基于所述多个目标子数据计算得到的Merkle树存储在区块链,以完成所述目标数据的共享,其中,所述Merkle树用于数据需求方校验从所述链下存储代理中心获取到的数据。
9.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-7中任一项所述方法的步骤。
10.一种电子设备,其特征在于,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现权利要求1-7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111294905.0A CN113961645A (zh) | 2021-11-03 | 2021-11-03 | 数据共享方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111294905.0A CN113961645A (zh) | 2021-11-03 | 2021-11-03 | 数据共享方法、装置、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113961645A true CN113961645A (zh) | 2022-01-21 |
Family
ID=79469130
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111294905.0A Pending CN113961645A (zh) | 2021-11-03 | 2021-11-03 | 数据共享方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113961645A (zh) |
-
2021
- 2021-11-03 CN CN202111294905.0A patent/CN113961645A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111740828B (zh) | 一种密钥生成方法以及装置、设备、加解密方法 | |
CN110855671B (zh) | 一种可信计算方法和系统 | |
CN106464485B (zh) | 用于保护在清单文件中输送的内容密钥的系统和方法 | |
US20180013555A1 (en) | Data transmission method and apparatus | |
CN109246098B (zh) | 一种支持备份服务器同步密文比较的方法 | |
CN111191288A (zh) | 一种基于代理重加密的区块链数据访问权限控制方法 | |
US10880100B2 (en) | Apparatus and method for certificate enrollment | |
EP3476078B1 (en) | Systems and methods for authenticating communications using a single message exchange and symmetric key | |
US10937339B2 (en) | Digital cryptosystem with re-derivable hybrid keys | |
US11128452B2 (en) | Encrypted data sharing with a hierarchical key structure | |
CN106941404B (zh) | 密钥保护方法及装置 | |
CN112073467A (zh) | 基于区块链的数据传输方法、装置、存储介质及电子设备 | |
US20180063105A1 (en) | Management of enciphered data sharing | |
CN110688666B (zh) | 一种分布式存储中数据加密保存方法 | |
JP2016158189A (ja) | 鍵付替え方向制御システムおよび鍵付替え方向制御方法 | |
Zhu et al. | Fuzzy authorization for cloud storage | |
JP2020532177A (ja) | データの高度なセキュリティ、高速暗号化および、伝送のためのコンピュータ実装システムおよび方法 | |
CN113868684A (zh) | 一种签名方法、装置、服务端、介质以及签名系统 | |
CN111181944B (zh) | 通信系统及信息发布方法、装置、介质、设备 | |
CN113609522B (zh) | 数据授权及数据访问方法和装置 | |
CN114117406A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
US9473471B2 (en) | Method, apparatus and system for performing proxy transformation | |
CN112787822A (zh) | 一种大属性集下的基于sm9的属性加密方法及系统 | |
KR101812311B1 (ko) | 사용자 단말 및 속성 재암호 기반의 사용자 단말 데이터 공유 방법 | |
CN114710693A (zh) | 一种视频流分布式传输方法及装置 |
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 |