1.本公开涉及计算机技术领域,尤其涉及区块链技术,可用于云计算和云服务。
背景技术:2.随着技术的进步,海量隐私、高价值数据需要安全存储。数据拥有方面临巨大的存储压力,需要一种存储服务,利用闲置的存储资源,对数据拥有方所生成的数据进行存储。其中,如何保证数据存储方真正对数据拥有方的数据进行了存储至关重要。
技术实现要素:3.本公开提供了一种基于区块链的数据验证方法、装置、设备及存储介质。
4.根据本公开的一方面,提供了一种基于区块链的数据验证方法,该方法包括:获取数据拥有方发起的数据验证事务请求;所述数据验证事务请求中包括当前验证轮次、所述当前验证轮次对应的辅助验证值、以及所述当前验证轮次对应的待验证数据块的标识信息和有效校验值;根据所述数据验证事务请求,生成所述当前验证轮次下的应答签名值;向区块链网络发送所述应答签名值;所述应答签名值用于指示区块链网络验证所述数据存储方中是否存储有所述待验证数据块。
5.根据本公开的另一方面,提供了一种基于区块链的数据验证方法,该方法包括:在确定具有数据验证需求的情况下,获取当前验证轮次对应的辅助验证值;从已向数据存储方分发的目标文件的关联数据块中选择当前验证轮次对应的待验证数据块;生成所述待验证数据块的有效性校验值;向区块链网络发起数据验证事务请求;所述数据验证事务请求用于指示区块链网络验证所述数据存储方中是否存储有所述待验证数据块;其中,所述数据验证事务请求中包括当前验证轮次、所述当前验证轮次对应的辅助验证值、以及所述当前验证轮次对应的待验证数据块的标识信息和有效校验值。
6.根据本公开的另一方面,提供了一种电子设备,该电子设备包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本公开任一实施例所述的基于区块链的数据验证方法。
7.根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使计算机执行本公开任一实施例所述的基于区块链的数据验证方法。
8.根据本公开的技术方案,能够在不需要提供数据本身的情况下,精准验证数据存
储方是否真正存储了数据拥有方的数据。
9.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
10.附图用于更好地理解本方案,不构成对本公开的限定。其中:图1是根据本公开实施例提供的一种基于区块链的数据验证方法的流程图;图2是根据本公开实施例提供的另一种基于区块链的数据验证方法的流程图;图3是根据本公开实施例提供的又一种基于区块链的数据验证方法的流程图;图4是根据本公开实施例提供的又一种基于区块链的数据验证方法的流程图;图5是根据本公开实施例提供的又一种基于区块链的数据验证方法的流程图;图6是根据本公开实施例提供的又一种基于区块链的数据验证方法的流程图;图7是根据本公开实施例提供的再一种基于区块链的数据验证方法的流程图;图8是根据本公开实施例提供的一种基于区块链的数据验证的实现过程示意图;图9是根据本公开实施例提供的一种基于区块链的数据验证装置的结构示意图;图10是根据本公开实施例提供的又一种基于区块链的数据验证装置的结构示意图;图11是用来实现本公开实施例的基于区块链的数据验证方法的电子设备的框图。
具体实施方式
11.以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
12.图1是根据本公开实施例提供的一种基于区块链的数据验证方法的流程图。本公开实施例适用于基于区块链技术对数据进行验证的情况,尤其适用于数据拥有方已向数据存储方分发文件的至少两个数据块的情况下,如何基于第一点群和第二点群之间的双线性映射关系,验证数据存储方是否存储了数据拥有方数据的情况。
13.其中,双线性映射,即由两个点群中的点,生成第三个点群中的点的函数,该函数对每个参数都是线性的。也就是说,若e:v
×w→
x是一个双线性映射,则v固定,w可变时,w到x的映射是线性的;w固定,v可变时,v到x的映射也是线性的;即保持双线性映射中的任意一个参数固定,另一个参数对x的映射都是线性的。需要说明的是,本实施例中具有两个点群,可以将这两个点群中任意一个点群作为第一点群,另一个作为第二点群。
14.进一步的,第一点群和第二点群之间的双线性映射关系,即为第一点群中的点和第二点群中的点,生成第三点群中的点的函数关系,该函数对第一点群和第二点群中的点都是线性的。其中,第一点群和第二点群均为使用一种椭圆曲线构造的点群;进一步的,构造第一点群的椭圆曲线和构造第二点群的椭圆曲线不同。
15.整套基于区块链的数据验证方法由数据拥有方、数据存储方、以及区块链网络中的节点相互配合来执行。其中,所谓数据拥有方即为借助数据存储方来存储其所拥有的数
据的一方;数据存储方即为具有丰富存储资源的一方,可专门用于存储数据;进一步的,区块链网络中的节点能够与数据拥有方和数据存储方交互。
16.本实施例中基于区块链的数据验证方法可以由数据存储方执行,可选的,数据存储方可以是区块链网络中的节点,也可以不是区块链网络中的节点。该方法可以由基于区块链的数据验证装置来执行,该装置可以采用软件和/或硬件的方式实现,并可集成于数据存储方的计算设备中。
17.需要说明的是,数据拥有方为确保数据存储方真正存储了其数据,可以发起多轮次验证。数据拥有方每发起一轮次验证(即数据验证事务请求),数据存储方均会生成该轮次对应的应答签名值。针对每一验证轮次生成其对应的应答签名值的过程可以通过如下方式实现。
18.如图1所示,本实施例提供的基于区块链的数据验证方法可以包括:s101,获取数据拥有方发起的数据验证事务请求。
19.本实施例中,数据验证事务请求可以是数据拥有方在具有数据验证需求时所发起的请求。具体可以是,针对每一验证轮次,数据拥有方均基于租赁智能合约发起该验证轮次对应的数据验证事务请求。其中,租赁智能合约可以是基于插件机制所编写的代码段,专门用于处理数据拥有方和数据存储方之间数据存储交易等的相关事宜。
20.可选的,数据验证事务请求中可以包括当前验证轮次、当前验证轮次对应的辅助验证值、以及当前验证轮次对应的待验证数据块的标识信息和有效校验值。需要说明的是,不同验证轮次对应的辅助验证值、对应的待验证数据块的标识信息和有效校验值均不同。
21.其中,当前验证轮次为数据拥有方当前发起的数据验证事务请求的轮次。所谓辅助验证值用于辅助后续数据验证,不同的验证轮次对应不同的辅助验证值;可选的,可以根据当前验证轮次、数据拥有方的私钥、以及第一点群的基点,生成当前验证轮次对应的辅助验证值。
22.所谓数据拥有方的标识信息可用于唯一表征数据拥有方的身份,例如可以是数据拥有方的id。数据验证事务请求中还可以包括待验证数据块的标识信息和有效性校验值。
23.所谓待验证数据块的标识信息用于唯一表征待验证数据块,例如可以是待验证数据块的编号。
24.所谓有效性校验值可以是具有唯一性作用的数值或者字符串,能够用于后续验证数据存储方中是否存储有待验证数据块。示例性的,有效性校验值可以为随机值,具体可以是数据拥有方在发起数据验证事务请求前,预先随机生成的,或者通过执行某一智能合约后生成的。可选的,有效性校验值与待验证数据块一一对应,待验证数据块具有唯一的标识信息,即有效性验证值与标识信息一一对应。该有效性校验值具有唯一性,该唯一性可以是全局唯一的,也可以是局部唯一的。
25.此外,数据验证事务请求中还可以包括待验证数据块的至少一个数据存储方的标识信息。其中,数据存储方的标识信息可用于唯一表征数据存储方的身份,例如可以是数据存储方的id。数据验证事务请求中还可以包括其他信息,比如待验证数据块的数据结构等。
26.在本实施例中,若数据存储方不是区块链网络中的节点,则数据存储方可以从与其交互的区块链网络中的节点获取数据拥有方发起的数据验证事务请求。
27.若数据存储方是区块链网络中的节点,则数据存储方可从区块链网络中获取数据
拥有方发起的数据验证事务请求。
28.具体的,数据拥有方在需要数据验证需求时,可以基于租赁智能合约,向数据存储方发起当前验证轮次对应的数据验证事务请求,进而数据存储方可以获取数据拥有方发起的数据验证事务请求,并响应。
29.s102,根据数据验证事务请求,生成当前验证轮次下的应答签名值。
30.本实施例中,应答签名值是指数据存储方对数据验证事务请求应答的签名值。可选的,一个数据验证事务请求对应一个应答签名值。
31.一种可选方式,可以基于租赁智能合约中约定的应答签名值生成逻辑,根据当前验证轮次、当前验证轮次对应的辅助验证值、以及当前验证轮次对应的待验证数据块的标识信息和有效校验值,生成当前验证轮次的应答签名值。例如,对当前验证轮次、当前验证轮次对应的辅助验证值、以及当前验证轮次对应的待验证数据块的标识信息和有效校验值进行哈希运算,得到当前验证轮次的应答签名值。
32.s103,向区块链网络发送应答签名值。
33.其中,应答签名值用于指示区块链网络验证数据存储方中是否存储有待验证数据块。
34.具体的,数据存储方向区块链网络发送应答签名值;相应的,区块链网络接收应答签名值,并基于第一点群和第二点群之间的双线性映射关系,根据当前验证轮次、当前验证轮次对应的标识信息、有效性校验值、应答签名值和数据拥有方的公钥等,验证数据存储方中是否存储有待验证数据块;其中,应答签名值属于第一点群,数据拥有方的公钥属于第二点群。
35.本公开实施例的技术方案,通过获取数据拥有方发起的数据验证事务请求,数据验证事务请求中包括当前验证轮次、当前验证轮次对应的辅助验证值、以及当前验证轮次对应的待验证数据块的标识信息和有效校验值;之后根据数据验证事务请求,生成应答签名值,进而向区块链网络发送应答签名值,应答签名值用于指示区块链网络验证数据存储方中是否存储有待验证数据块。上述技术方案,在基于双线性映射验证场景下,可以基于验证轮次和其对应的辅助验证值等生成更为有效的应答签名值,进而保证了验证结果的可靠性;另外,本方案还可以实现在不需要提供数据本身的情况下,精准验证数据存储方是否真正存储了数据拥有方的数据。
36.图2是根据本公开实施例提供的另一种基于区块链的数据验证方法的流程图,在上述实施例的基础上,对“根据数据验证事务请求,生成当前验证轮次下的应答签名值”进一步优化,提供一种可选实施方案。如图2所示,本实施例提供的基于区块链的数据验证方法可以包括:s201,获取数据拥有方发起的数据验证事务请求。
37.s202,根据标识信息,从本地存储的文件数据中获取待验证数据块的数据内容。
38.具体可以是,以当前验证轮次对应的待验证数据块的标识信息为索引,从本地存储的文件数据中进行查找,以确定待验证数据块,并获取待验证数据块的数据内容。
39.s203,根据辅助验证值,对数据内容进行压缩处理,得到处理结果。
40.可选的,可以基于租赁智能合约中约定的应答签名值生成逻辑中规定的对数据内容的处理方式,采用辅助验证值,对数据内容进行压缩处理,得到处理结果。比如,可以待验
证数据块的数据内容进行处理,得到一个数值,将辅助验证值和所得到的数值输入至设定函数,以得到处理结果。
41.或者,可以采用设定的数据压缩算法,对辅助验证值和数据内容进行压缩,以得到处理结果。
42.s204,根据处理结果、当前验证轮次、以及有效性校验值,生成当前验证轮次下的应答签名值。
43.一种可选方式,可以基于租赁智能合约中约定的应答签名值生成逻辑,根据当前验证轮次、处理结果、以及有效校验值,生成当前验证轮次的应答签名值。例如,对当前验证轮次、处理结果、以及有效校验值进行哈希运算,得到当前验证轮次下的应答签名值。
44.s205,向区块链网络发送应答签名值。
45.其中,应答签名值用于指示区块链网络验证数据存储方中是否存储有待验证数据块。
46.具体的,数据存储方向区块链网络发送应答签名值;相应的,区块链网络接收应答签名值,并基于第一点群和第二点群之间的双线性映射关系,根据当前验证轮次、当前验证轮次对应的标识信息、有效性校验值、应答签名值和数据拥有方的公钥等,验证数据存储方中是否存储有待验证数据块;其中,应答签名值属于第一点群,数据拥有方的公钥属于第二点群。
47.需要说明的是,在基于椭圆双线性映射的场景下,现有技术在对大文件进行存储时,由于在椭圆曲线群g1上,m
si
*g1 = (m
si mod n)*g1,其中,m
si
表示在第j次下第s个待验证数据块的数据内容,n为g1的阶数(即第一点群中点的总数量)。所以如果m
si
的大小超过了n,数据存储方实际上存储m
si mod n就可以了,而无需实际存储m
si
,仍然有能力给出有效的存储保持证明,完成零知识证明挑战,显然存在存储漏洞,无法真正证明数据存储方存储了数据拥有方的数据。
48.然而,本公开引入验证轮次概念,并为每验证轮次引入对应的变量rj(即辅助验证值),使数据存储方基于所引入的变量rj对数据块的数据内容进行压缩处理,可降低数据块的数据量,避免了数据块的大小超过第一点群阶数而带来的存储漏洞,从而支持了针对大文件依然给出有效的存储保持证明。
49.本公开实施例的技术方案,通过获取数据拥有方发起的数据验证事务请求,之后根据标识信息,从本地存储的文件数据中获取待验证数据块的数据内容,并根据辅助验证值,对数据内容进行压缩处理,得到处理结果,进而根据处理结果、当前验证轮次、以及有效性校验值,生成当前验证轮次下的应答签名值,并向区块链网络发送应答签名值,应答签名值用于指示区块链网络验证数据存储方中是否存储有待验证数据块。上述技术方案,在基于双线性映射验证场景下,无论数据块的大小是否超过第一点群的阶数,均可以基于验证轮次和其对应的辅助验证值等生成更为有效的应答签名值,进而避免了存储漏洞,保证了验证结果的可靠性;另外,本方案还可以实现在不需要提供数据本身的情况下,精准验证数据存储方是否真正存储了数据拥有方的数据。
50.在上述实施例的基础上,作为本公开的一种可选方式,根据标识信息,从本地存储的文件数据中获取待验证数据块的数据内容还可以是,确定待验证数据块所属文件数据的开始位置;根据标识信息、数据偏移量、以及开始位置,确定待验证数据块的起始位置;根据
起始位置,从本地存储的文件数据中获取待验证数据块的数据内容。
51.其中,待验证数据块所属文件数据的开始位置是指数据拥有方的文件数据在数据存储方的存储空间中的开始位置。数据偏移量是指每个数据块存储时所占用的字节长度。所谓待验证数据块的起始位置是指待验证数据块在数据存储方的存储空间中的起始位置(包括开始位置和结束位置)。
52.具体的,可以根据数据拥有方的标识信息确定其所属文件数据,进而根据所属文件数据的标识信息,从本地存储的文件数据中,确定所属文件数据的开始位置。
53.在确定待验证数据块所属文件数据的开始位置后,可以将待验证数据块的标识信息减去1后,再乘以数据偏移量,将相乘后的结果与开始位置相加,并将相加后的结果,作为待验证数据块的开始位置。同时,将待验证数据块的标识信息乘以数据偏移量,将相乘后的结果与开始位置相加,并将相加后的结果作为待验证数据块的结束位置。
54.在确定待验证数据块的起始位置后,根据起始位置,从数据存储方的存储空间中获取待验证数据块的数据内容。
55.可以理解的是,通过结合待验证数据块的标识信息、数据偏移量、以及待验证数据块所属文件数据的开始位置等,可快速定位待验证数据的起始位置,为快速且精准获取到待验证数据块的数据内容提供了数据支撑。
56.在上述实施例的基础上,作为本公开的一种可选方式,根据辅助验证值,对数据内容进行压缩处理,得到处理结果还可以是,对数据内容和辅助验证值进行哈希运算,得到第一哈希值;根据第一哈希值、确定处理结果。
57.具体的,对于每个待验证数据块,可以对该待验证数据块的数据内容进行处理,得到一个数值;之后将辅助验证值与基于数据内容所得到的数值进行哈希运算,例如先对辅助验证值与基于数据内容所得到的数值进行拼接,将拼接后的结果进行哈希运算,得到第一哈希值;并可以将该第一哈希值,作为该待验证数据块的处理结果。
58.可以理解的是,通过对数据内容和辅助验证值进行哈希运算,进一步降低了数据块的数据量。
59.图3是根据本公开实施例提供的又一种基于区块链的数据验证方法的流程图,在上述实施例的基础上,对“根据数据验证事务请求,生成应答签名值”进一步优化,提供一种可选实施方案。如图3所示,本实施例提供的基于区块链的数据验证方法可以包括:s301,获取数据拥有方发起的数据验证事务请求。
60.s302,根据标识信息,从本地存储的文件数据中获取待验证数据块的数据内容。
61.s303,根据辅助验证值,对数据内容进行压缩处理,得到处理结果。
62.s304,根据当前验证轮次,获取待验证数据块在当前验证轮次下的数据签名值。
63.具体可以是,在获取待验证数据块的数据内容的同时,可以基于预先存储的数据块、验证轮次与数据签名值之间的关联关系,根据当前验证轮次,获取待验证数据块在当前验证轮次下的数据签名值。
64.s305,根据处理结果、数据签名值、第一点群的基点、以及有效性校验值,生成当前验证轮次下的应答签名值。
65.所谓第一点群的基点是指第一点群的生成元,第一点群中的其他点可以基于基点生成。
66.一种可实施方式,可以将数据处理结果、数据签名值、第一点群的基点、以及有效性校验值一并输入签名值计算模型中,由签名值计算模型输出应答签名值。
67.又一种可实施方式,可以基于设定公式或设定规则,根据数据处理结果、数据签名值、第一点群的基点、以及有效性校验值,生成应答签名值。
68.s306,向区块链网络发送应答签名值。
69.其中,应答签名值用于指示区块链网络基于第一点群和第二点群之间的双线性映射关系,根据数据验证事务请求和应答签名值,验证数据存储方中是否存储有待验证数据块。
70.本公开实施例的技术方案,通过获取数据拥有方发起的数据验证事务请求,之后根据标识信息,从本地存储的文件数据中获取待验证数据块的数据内容,并根据辅助验证值,对数据内容进行压缩处理,得到处理结果,同时根据当前验证轮次,获取待验证数据块在当前验证轮次下的数据签名值,进而根据处理结果、数据签名值、第一点群的基点、以及有效性校验值,生成当前验证轮次下的应答签名值,并向区块链网络发送应答签名值。上述技术方案,引入验证轮次和数据签名值之间的对应关系,为每一验证轮次确定唯一有效的数据签名值,为后续得到可靠验证结果提供了保障。
71.图4是根据本公开实施例提供的又一种基于区块链的数据验证方法的流程图,在上述实施例的基础上,对“根据数据内容、数据签名值、辅助验证值、第一点群的基点、以及有效性校验值,生成应答签名值”进一步优化,提供一种可选实施方案。如图4所示,本实施例提供的基于区块链的数据验证方法可以包括:s401,获取数据拥有方发起的数据验证事务请求。
72.s402,根据标识信息,从本地存储的文件数据中获取待验证数据块的数据内容。
73.s403,根据辅助验证值,对数据内容进行压缩处理,得到处理结果。
74.s404,根据当前验证轮次,获取待验证数据块在当前验证轮次下的数据签名值。
75.s405,根据有效性校验值、处理结果、以及第一点群的基点,生成当前验证轮次下的应答签名值中的第一签名值。
76.一种可实施方式,可以将有效性校验值、处理结果、以及第一点群的基点一并输入第一签名值计算模型中,由第一签名值计算模型输出第一签名值。
77.又一种可选方式,可以基于预设公式或者预设规则,根据有效性校验值、处理结果、以及第一点群的基点,生成应答签名值中的第一签名值。例如,对于每一待验证数据块,计算该待验证数据块对应的处理结果和有效性校验值之间的乘积;进而将各个待验证数据块对应的乘积相加,并将相加后的结果与第一点群的基点相乘后的结果,作为应答签名值中的第一签名值。
78.s406,根据数据签名值和有效性校验值,生成当前验证轮次下的应答签名值中的第二签名值。
79.具体的,对于每个待验证数据块,计算在当前验证轮次下该待验证数据块的数据签名值和有效性校验值的乘积,之后将各个待验证数据块对应的乘积相加后的结果作为当前验证轮次下的应答签名值中的第二签名值。
80.s407,向区块链网络发送应答签名值。
81.应答签名值用于指示区块链网络基于第一点群和第二点群之间的双线性映射关
系,根据数据验证事务请求和应答签名值,验证数据存储方中是否存储有待验证数据块。
82.本公开实施例的技术方案,通过获取数据拥有方发起的数据验证事务请求,之后根据标识信息,从本地存储的文件数据中获取待验证数据块的数据内容,并根据辅助验证值,对数据内容进行压缩处理,得到处理结果,同时根据当前验证轮次,获取待验证数据块在当前验证轮次下的数据签名值,进而根据有效性校验值、处理结果、以及第一点群的基点,生成当前验证轮次下的应答签名值中的第一签名值,并根据数据签名值和有效性校验值,生成应答签名值中的第二签名值;向区块链网络发送应答签名值。上述技术方案,提供了一种应答签名值的优选计算方式,可进一步提高应答签名值的有效性,为后续区块链网络无需数据存储方提供数据本身,即可验证数据存储方是否真正存储了数据拥有方的数据奠定了基础。
83.图5是根据本公开实施例提供的又一种基于区块链的数据验证方法的流程图。本公开实施例适用于基于区块链技术对数据进行验证的情况,尤其适用于如何验证数据存储方是否存储了数据拥有方数据的情况。整套基于区块链的数据验证方法由数据拥有方、数据存储方、以及区块链网络中的节点相互配合来执行。
84.本实施例中基于区块链的数据验证方法可以由数据拥有方执行,可选的,数据拥有方可以是区块链网络中的节点,也可以不是区块链网络中的节点。该方法可以由基于区块链的数据验证装置来执行,该装置可以采用软件和/或硬件的方式实现,并可集成于数据拥有方的计算设备中。如图5所示,本实施例提供的基于区块链的数据验证方法可以包括:s501,在确定具有数据验证需求的情况下,获取当前验证轮次对应的辅助验证值。
85.本实施例中,辅助验证值可以是预先生成的,与验证轮次一一对应。需要说明的是,验证轮次也可以预先设定。例如可以对某一数据的验证轮次设置为10次;进一步的,还可以设定为每一次验证轮次分配验证时间,即在不同的设定时间进行不同轮次的数据验证,进而将验证时间、验证轮次和辅助验证值进行关联存储在本地。
86.一种可选方式,在确定具有数据验证需求的情况下,根据当前验证时间,确定当前轮次对应的辅助验证值。具体可以是,可以基于验证时间、验证轮次和辅助验证值之间的关联关系,根据当前验证时间,从本地获取与当前验证时间对应的验证轮次,即当前验证轮次,之后从本地获取与当前验证轮次对应的辅助验证值。
87.另一种可选方式,在确定具有数据验证需求的情况下,还可以根据历史验证轮次中的最新的验证轮次,确定当前验证轮次对应的辅助验证值。具体可以是,将历史验证轮次中的最新的验证轮次加1,即为当前验证轮次,之后获取当前验证轮次对应的辅助验证值。
88.s502,从已向数据存储方分发的目标文件的关联数据块中选择当前验证轮次对应的待验证数据块。
89.本实施例中,目标文件是指已经向数据存储方分发的要存储的文件数据。进一步的,在向数据存储方分发之前,将目标文件拆分为至少两个数据块。
90.具体的,数据拥有方在具有数据验证需求时,可从已向数据存储方分发的目标文件的至少两个数据块中随机选择一个或一些数据块,作为待验证数据块。
91.s503,生成待验证数据块的有效性校验值。
92.可选的,有效性校验值为随机值,随机值小于第一点群的阶数。
93.具体的,对于每一待验证数据块,随机生成一个数,作为该待验证数据块的有效性
校验值,或者通过执行某一智能合约后生成一个数值,作为该待验证数据块的有效性校验值。
94.s504,向区块链网络发起数据验证事务请求。
95.具体的,数据拥有方可基于租赁智能合约向区块链网络发起数据验证事务请求。
96.进一步的,区块链网络中的节点获取数据拥有方的数据验证事务请求,并响应。具体可以是区块链网络中的节点基于第一点群和第二点群之间的双线性映射关系,根据数据验证事务请求和数据存储方对数据验证事务请求的应答签名值,验证数据存储方中是否存储有待验证数据块;其中,数据验证事务请求中包括当前验证轮次、当前验证轮次对应的辅助验证值、以及当前验证轮次对应的待验证数据块的标识信息和有效校验值。
97.本公开实施例的技术方案,通过在确定具有数据验证需求的情况下,获取当前验证轮次对应的辅助验证值,之后从已向数据存储方分发的目标文件的关联数据块中选择当前验证轮次对应的待验证数据块,进而生成待验证数据块的有效性校验值,并向区块链网络发起数据验证事务请求。上述技术方案,数据拥有方在具有验证数据是否存储于数据存储方的需求时,不需要提供待验证数据块本身,仅需要向区块链网络提供当前验证轮次对应的辅助验证值,以及当前验证轮次下待验证数据块的有效性校验值和标识信息即可借助区块链网络实现此验证,保证了数据的私密性;同时引入验证轮次和其对应的辅助验证值,可保证能够对数据存储方是否存储数据进行有效验证。
98.在上述实施例的基础上,作为本公开的一种可选方式,获取当前验证轮次对应的辅助验证值可以是,根据当前验证轮次、数据拥有方的私钥、以及第一点群的基点,生成当前验证轮次对应的辅助验证值。
99.具体的,可以计算当前验证轮次、数据拥有方的私钥、以及第一点群的基点三者的乘积,将得到的乘积作为当前验证轮次对应的辅助验证值。
100.进一步的,还就可以对得到的乘积进行独特哈希运算,将哈希运算后的结果作为当前验证轮次对应的辅助验证值。例如可以通过如下公式确定:rj=h2(j*sk*g1)其中,rj表示第j验证轮次对应的辅助验证值,j表示第j验证轮次,sk表示数据拥有方的私钥,g1表示第一点群的基点。
101.可以理解的是,基于验证轮次来生成辅助验证值,使得每一轮次的辅助验证值均不同,从而为后续数据验证提供了保障。
102.图6是根据本公开实施例提供的又一种基于区块链的数据验证方法的流程图,进一步优化,提供一种可选实施方案,如图6所示,本实施例提供的基于区块链的数据验证方法可以包括:s601,根据当前验证轮次对应的辅助验证值、辅助签名值、关联数据块的数据信息、数据拥有方的私钥、以及第一点群的基点,生成关联数据块在当前验证轮次下的数据签名值。
103.其中,辅助签名值是指数据拥有方对数据块进行签名时所使用的辅助值;可选的,辅助签名值可以包括第一辅助值和第二辅助值;进一步的,第一辅助值和第二辅助值可以是不同的随机值。更进一步的,第一辅助值和第二辅助值也小于第一点群的阶数。
104.s601中的关联数据块即为数据拥有方对目标文件所拆分的每一数据块。关联数据
块的数据信息包括但不限于数据块的标识信息和数据内容。数据内容即为数据块所包含的内容。
105.可选的,所谓数据签名值即为数据拥有方对关联数据块的签名;进一步的,每一关联数据块在不同的验证轮次下对应一个数据签名值,即每一关联数据块对应于一个数据签名集。此外,数据签名值属于第一点群。
106.一种可实施方式,对于每一关联数据块,可以将当前验证轮次对应的辅助验证值、辅助签名值、关联数据块的数据信息、数据拥有方的私钥、以及第一点群的基点相乘后的结果作为该关联数据块当前验证轮次下的数据签名值。
107.s602,在确定具有数据验证需求的情况下,获取当前验证轮次对应的辅助验证值。
108.s603,从已向数据存储方分发的目标文件的关联数据块中选择当前验证轮次对应的待验证数据块。
109.s604,生成待验证数据块的有效性校验值。
110.s605,向区块链网络发起数据验证事务请求。
111.本公开实施例的技术方案,通过在确定具有数据验证需求的情况下,获取当前验证轮次对应的辅助验证值,之后从已向数据存储方分发的目标文件的关联数据块中选择当前验证轮次对应的待验证数据块,进而生成待验证数据块的有效性校验值,向区块链网络发起数据验证事务请求;还可以根据当前验证轮次对应的辅助验证值、辅助签名值、关联数据块的数据信息、数据拥有方的私钥、以及第一点群的基点,生成关联数据块在当前验证轮次下的数据签名值。上述技术方案,通过结合当前验证轮次下对应的辅助验证值、辅助签名值、关联数据块的数据信息、数据拥有方的私钥、以及第一点群的基点等来生成关联数据块的数据签名值,为后续无需提供待验证数据块本身且无需关注数据的大小,均可有效验证数据存储方是否真正存储有数据拥有方的数据奠定了基础。
112.在上述实施例的基础上,作为本公开的一种可选方式,根据当前验证轮次对应的辅助验证值、辅助签名值、关联数据块的数据信息、数据拥有方的私钥、以及第一点群的基点,生成关联数据块在当前验证轮次下的数据签名值还可以是,根据辅助签名值中的第一辅助值,以及关联数据块的数据信息中的标识信息,生成第一数值;根据数据信息中的数据内容、辅助签名值中的第二辅助值、当前验证轮次对应的辅助验证值、以及第一点群的基点,生成第二数值;根据数据拥有方的私钥、第一数值、以及第二数值,生成关联数据块在当前验证轮次下的数据签名值。
113.具体的,对于每一关联数据块,可以将辅助签名值中的第一辅助值、以及该关联数据块的数据信息中的标识信息相加后的结果作为第一数值。或者,还可以将辅助签名值中的第一辅助值、以及该关联数据块的数据信息中的标识信息相乘后的结果作为第二数值。
114.进一步的,还可以对辅助签名值中的第一辅助值,以及该关联数据块的数据信息中的标识信息进行哈希运算,将得到的结果作为第三数值。具体的,可以采用独特哈希函数,对辅助签名值中的第一辅助值,以及该关联数据块的数据信息中的标识信息进行哈希运算,将得到的结果作为第三数值。
115.同时,可以将数据信息中的数据内容、辅助签名值中的第二辅助值、当前验证轮次对应的辅助验证值、以及第一点群的基点相加后的结果作为第二数值。或者还可以对数据信息中的数据内容进行处理,得到一个数值;将所得到的数值、辅助签名值中的第二辅助
值、当前验证轮次对应的辅助验证值、以及第一点群的基点相乘后的结果作为第二数值。
116.在确定第一数值和第二数值之后,可以先计算第一数值和第二数值的和,将得到的和与数据拥有方的私钥相乘,再将相乘后的结果作为该关联数据块在当前验证轮次下的数据签名值。
117.可以理解的是,本实施例引入第一数值和第二数值,为关联数据块在当前验证轮次下的数据签名值提供了一种可选方式。
118.示例性的,作为本公开的一种可选方式,根据数据信息中的数据内容、辅助签名值中的第二辅助值、当前验证轮次对应的辅助验证值、以及第一点群的基点,生成第二数值还可以是,对当前验证轮次对应的辅助验证值和数据信息中的数据内容进行哈希运算,得到第二哈希值;根据第二哈希值、辅助签名值中的第二辅助值、以及第一点群的基点,生成第二数值。
119.具体的,对当前验证轮次对应的辅助验证值和数据信息中的数据内容进行拼接,将拼接后的结果进行哈希运算,得到第二哈希值,之后将第二哈希值、辅助签名值中的第二辅助值、以及第一点群的基点相乘后的结果作为第二数值。
120.可以理解的是,当前验证轮次对应的辅助验证值和数据信息中的数据内容进行哈希运算,可以避免由于数据内容过大时导致得到的第二数值的阶数超过第一点群的阶数的问题,从而为后续数据验证提供保障。
121.进一步的,在上述实施例的基础上,还可以通过如下公式确定关联数据块在当前验证轮次下的数据签名值:σ
ji
=sk*(h(v||i)+ doublesha256(mi||rj)* u * g1);其中,σ
ji
表示第i个关联数据块在第j轮验证轮次下的数据签名值,sk表示数据拥有方的私钥,v表示辅助签名值中的第一辅助值,i表示关联数据块的数据信息中的标识信息,mi表示数据信息中的数据内容,rj表示第j轮验证轮次对应的辅助验证值,u表示辅助签名值中的第二辅助值,g1表示第一点群的基点。
122.示例性的,作为本公共的一种可选方式,还可以将关联数据块和关联数据块的数据签名集分发至数据存储方;其中,数据签名集包括关联数据块在各验证轮次下的数据签名值。
123.具体的,可以将联数据块和关联数据块的数据签名集分发至数据存储方。其中,数据签名集包括关联数据块在各验证轮次下的数据签名值。
124.需要说明的是,本实施例在向数据存储方发送数据块的同时,将数据签名值也一并发送至数据存储方,用于供数据存储方在响应数据拥有方的数据验证事务请求时,计算应答签名值时使用。
125.可以理解的是,将关联数据块和关联数据块的数据签名集分发至数据存储方,为后续数据验证奠定了基础。
126.图7是根据本公开实施例提供的再一种基于区块链的数据验证方法的流程图。本公开实施例适用于基于区块链技术对数据进行验证的情况,尤其适用于如何验证数据存储方是否存储了数据拥有方数据的情况。整套基于区块链的数据验证方法由数据拥有方、数据存储方、以及区块链网络中的节点相互配合来执行。
127.本实施例中基于区块链的数据验证方法可以由区块链网络中的节点执行,具体可
以由区块链网络中的区块生成节点来执行。该方法可以由基于区块链的数据验证装置来执行,该装置可以采用软件和/或硬件的方式实现,并可集成于承载基于区块链的数据验证功能的区块链节点的计算设备中。如图7所示,本实施例提供的基于区块链的数据验证方法可以包括:s701,响应于数据拥有方发起的数据验证事务请求,获取数据存储方对数据验证事务请求的应答签名值。
128.本实施例中,数据验证事务请求中包括当前验证轮次、当前验证轮次对应的辅助验证值、以及当前验证轮次对应的待验证数据块的标识信息和有效校验值;应答签名值根据数据验证事务请求生成。
129.具体的,数据拥有方在具有数据验证需求时,可以基于租赁智能合约,向区块链网络发起数据验证事务请求。进而区块链网络中的节点可以从区块链网络中获取数据拥有方发起的数据验证事务请求,并响应,同时获取数据存储方对数据验证事务请求的应答签名值。
130.在一可实施方式中,若数据存储方不是区块链网络中的节点,则区块链网络中的节点在获取到数据拥有方发起的数据验证事务请求后,可以将数据拥有方的数据验证事务请求告知数据存储方,由数据存储方等决定是否对数据拥有方的数据验证事务请求进行应答。可选的,对于决定对数据拥有方的数据验证事务请求进行应答的数据存储方,可以向区块链网络中的节点进行反馈,进而区块链网络中的节点可以获取数据存储方对数据验证事务请求的应答签名值。
131.在又一可实施方式中,若数据存储方是区块链网络中的节点,则数据存储方也可以从区块链网络中获取到数据拥有方发起的数据验证事务请求。此时数据存储方可以决定是否对数据拥有方的数据验证事务请求进行应答。可选的,对于决定对数据拥有方的数据验证事务请求进行应答的数据存储方,可以向区块链生成节点即本机节点进行反馈,进而本机节点可以获取数据存储方对数据验证事务请求的应答签名值。
132.s702,基于第一点群和第二点群之间的双线性映射关系,根据数据验证事务请求和应答签名值,验证数据存储方中是否存储有待验证数据块。
133.具体的,可以根据基于第一点群和第二点群之间的双线性映射关系,根据数据验证事务请求中的当前验证轮次、当前验证轮次对应的辅助验证值、以及当前验证轮次对应的待验证数据块的标识信息和有效性校验值,应答签名值,以及数据拥有方的公钥,验证数据存储方中是否存储有待验证数据块。
134.其中,应答签名值和数据拥有方的公钥属于不同点群。可选的,应答签名值属于第一点群,可以基于第一点群的基点生成;数据拥有方的公钥属于第二点群;示例性的,数据拥有方的公钥基于数据拥有方的私钥和第二点群的基点确定。所谓第一点群的基点是指第一点群的生成元,第一点群中的其他点可以基于基点生成;对应的,第二点群的基点是指第二点群的生成元,第二点群中的其他点可以基于基点生成。
135.更进一步的,在应答签名值属于第一点群,数据拥有方的公钥属于第二点群的情况下,有效性校验值小于第一点群的阶数;其中,第一点群的阶数是指第一点群中点的总数量。
136.一种可选方式,可以基于第一点群和第二点群之间的双线性映射关系,将待数据
验证事务请求中的当前验证轮次、当前验证轮次对应的辅助验证值、以及当前验证轮次对应的待验证数据块的标识信息和有效性校验值,应答签名值,以及数据拥有方的公钥等,输入至双线性验证模型中,以验证数据存储方中是否存储有待验证数据块。
137.又一种可选方式,还可以调用租赁智能合约,基于第一点群和第二点群之间的双线性映射关系,将数据验证事务请求中的当前验证轮次、当前验证轮次对应的辅助验证值、以及当前验证轮次对应的待验证数据块的标识信息和有效性校验值,应答签名值,以及数据拥有方的公钥等,验证数据存储方中是否存储有待验证数据块。
138.再一种可选方式,还可以基于第一点群和第二点群之间的双线性映射关系,根据数据验证事务请求中的当前验证轮次、当前验证轮次对应的辅助验证值、以及当前验证轮次对应的待验证数据块的标识信息和有效性校验值,应答签名值,数据拥有方的公钥,以及第二点群中的基点,验证数据存储方中是否存储有待验证数据块。
139.例如可以是,可以基于第一点群和第二点群之间的双线性映射关系,将数据验证事务请求中的当前验证轮次、当前验证轮次对应的辅助验证值、以及当前验证轮次对应的待验证数据块的标识信息和有效性校验值,应答签名值,数据拥有方的公钥,以及第二点群中的基点,一并输入至双线性验证模型中,以验证数据存储方中是否存储有待验证数据块。
140.还可以是,根据第一点群和第二点群之间的双线性映射关系所构建的公式,将数据验证事务请求中的当前验证轮次、当前验证轮次对应的辅助验证值、以及当前验证轮次对应的待验证数据块的标识信息和有效性校验值,应答签名值,数据拥有方的公钥,以及第二点群中的基点,一并输入至该公式,验证该公式是否成立,来验证数据存储方中是否存储有待验证数据块。
141.可以理解的是,本实施例基于双线性映射关系,结合标识信息、有效性校验值、应答签名值、辅助签名值、数据拥有方的公钥和第二点群中的基点等多种数据来验证数据存储方中是否存储有待验证数据块,提高了验证结果的准确度。
142.本公开实施例的技术方案,通过响应于数据拥有方发起的数据验证事务请求,获取数据存储方对数据验证事务请求的应答签名值,之后基于第一点群和第二点群之间的双线性映射关系,根据数据验证事务请求和应答签名值,验证数据存储方中是否存储有待验证数据块。上述技术方案,引入双线性映射关系,在不需要提供数据且无论数据块是否超过第一点群的阶数的情况下,均可以有效的验证了数据存储方是否真正存储了数据拥有方的数据。
143.在上述实施例的基础上,作为本公开的一种可选方式,基于第一点群和第二点群之间的双线性映射关系,根据数据验证事务请求和应答签名值,验证数据存储方中是否存储有待验证数据块还可以是,基于第一点群和第二点群之间的双线性映射关系,根据当前验证轮次下对应的待验证数据块的有效性校验值和标识信息,当前验证轮次对应的辅助签名值,数据拥有方的公钥,以及应答签名值中的第一签名值,确定第三点群中的第一点值;基于第一点群和第二点群之间的双线性映射关系,根据应答签名值中的第二签名值和第二点群中的基点,确定第三点群中的第二点值;根据第一点值和第二点值,验证数据存储方中是否存储有待验证数据块。
144.其中,第三点群中的第一点值是指第二点群中的点和第一点群中的点基于第一点群和第二点群的双线性映射关系,得到的第三点群中的点的数值。
145.首先,基于第一点群和第二点群之间的双线性映射关系,根据当前验证轮次下对应的待验证数据块的有效性校验值和标识信息,当前验证轮次对应的辅助签名值,数据拥有方的公钥,以及应答签名值中的第一签名值,确定第三点群中的第一点值。
146.例如,可以是根据当前验证轮次对应的有效性校验值、标识信息、辅助签名值以及应答签名值中的第一签名值等,基于设定计算公式,确定第一点群中的一个点;将数据拥有方的公钥作为第二点群中的一个点;之后基于第一点群和第二点群之间的双线性映射关系,可确定第三点群中的第一点值。
147.还可以是,根据租赁智能合约中的处理逻辑,基于第一点群和第二点群之间的双线性映射关系,根据有效性校验值、标识信息、辅助签名值、数据拥有方的公钥、以及应答签名值中的第一签名值,确定第三点群中的第一点值。
148.具体可以通过如下方式确定:第一步,根据当前验证轮次对应的有效性校验值、标识信息和辅助签名值中的第一辅助值,确定第一数值。
149.一种可实施方式,可以将有效性校验值、标识信息和辅助签名值中的第一辅助值相加后的结果作为第一数值。或者,还可以将有效性校验值、标识信息和辅助签名值中的第一辅助值相乘后的结果作为第一数值。
150.又一种可实施方式,还可以对标识信息和辅助签名值中的第一辅助值进行哈希运算,得到哈希点值;根据哈希点值和有效性校验值,确定第一数值。具体的,可以采用独特哈希函数,对标识信息和辅助签名值中的第一辅助值进行哈希运算,得到哈希点值;将哈希点值和有效性校验值相乘后的结果作为第一数值。其中,独特哈希函数可以将一段内容编码成一个点。
151.进一步的,在待验证数据块的数量为多个的情况下,每一待验证数据块具有一个标识信息,且对应一个有效性校验值。进而具体可以是,对于每一待验证数据块,对该待验证数据块的标识信息和辅助签名值中的第一辅助值进行哈希运算,得到哈希点值,并将哈希点值和该待验证数据块关联的有效性校验值相乘,作为该待验证数据块对应的第一数值。之后,将各个待验证数据块对应的第一数值相加,得到最终的第一数值。
152.可以理解的是,采用哈希编码,将标识信息第一辅助值转换为一个点值,降低了计算的复杂度,为后续的基于第一点群和第二点群的映射关系确定第三点群中的第一点值奠定了基础。
153.第二步,根据辅助签名值中的第二辅助值和应答签名值中第一签名值,确定第二数值。
154.一种可实施方式,可以将辅助签名值中的第二辅助值和应答签名值中第一签名值相加的结果,作为第二数值。
155.又一种可实施方式,可以将辅助签名值中的第二辅助值和应答签名值中第一签名值相乘的结果,作为第二数值。
156.第三步,根据第一数值和第二数值,确定第三数值。
157.示例性的,可以将第一数值和第二数值相乘后的结果作为第三数值;示例性的,可以将第一数值和第二数值相加后的结果作为第三数值;其中,第三数值属于第一点群。
158.第四步,基于第一点群和第二点群之间的双线性映射关系,根据第三数值和数据拥有方的公钥,确定第三点群中的第一点值。
159.本实施例中,可以基于第一点群和第二点群之间的双线性映射关系,即映射函数,将第三数值代入映射函数中第一点群位置处,将数据拥有方的公钥代入映射函数中第二点群位置处,得到第三点群的第一点值。
160.在确定第三点群的第一点值后,基于第一点群和第二点群之间的双线性映射关系,根据应答签名值中的第二签名值和第二点群中的基点,确定第三点群中的第二点值。
161.具体的,基于第一点群的第二点群之间的双线性映射关系,即映射函数,将应答签名值中的第二签名值代入映射函数中第一点群位置处,将第二点群中的基点代入至映射函数中第二点群位置处,得到第三点群中的第二点值。
162.在确定第三点群的第一点值和第二点值后,根据第一点值和第二点值,验证数据存储方中是否存储有待验证数据块。
163.具体的,若第一点值和第二点值相等,则说明数据存储方中存储有待验证数据块。若第一点值和第二点值不相等,则说明数据存储方中没有存储有待验证数据块,或者数据存储方中没有完整存储有待验证数据块。
164.在上述任一实施例的基础上,作为本公开的一种可选方式,在验证数据存储方中是否存储有待验证数据块的情况下,还可根据验证结果,确定数据存储方是否对数据拥有方的文件数据进行存储。
165.示例性的,若验证结果为数据存储方对数据拥有的待验证数据块进行了存储,则确定数据存储方对数据拥有方的文件数据进行了存储,即数据存储方对数据拥有方所分发的所有数据块均进行了存储。
166.示例性的,若验证结果为数据存储方没有对数据拥有的待验证数据块进行存储,则确定数据存储方没有对数据拥有方的文件数据进行存储。
167.可以理解的是,本实施例在验证数据存储方是否存储数据拥有方的文件数据的场景下,无需验证数据拥有方分发给数据存储方的所有数据块,只需对一部分数据块即待验证数据块进行验证即可,提高了验证效率,为验证数据存储方是否真正存储了数据拥有方的文件数据提供了一种解决方案。
168.图8是根据本公开实施例提供的一种基于区块链的数据验证的实现过程示意图。在上述实施例的基础上,提供一种优选实施方案。如图8所示,本实施例提供的基于区块链的数据验证实现过程如下:数据拥有方在对目标文件进行存储时,首先将目标文件拆分为n个关联数据块,其中n为大于1自然数,并为所有关联数据块生成一个统一的辅助签名值,并为每一关联数据生成在各验证轮次下的辅助验证值。之后根据辅助验证值、辅助签名值、数据拥有方的私钥、数据块的数据信息和第一点群的基点,为每一关联数据块生成在每一验证轮次下的唯一的一个数据签名值,之后将关联数据块及关联数据块的数据签名值分发至一个或多个数据存储方进行存储,即存储文件。
169.同时数据拥有方向区块链网络发送包括辅助签名值和数据拥有方的公钥的数据存储事务请求,以使区块链网络将本地公钥和辅助签名值进行关联存储。
170.数据拥有方在具有验证数据是否真正存储于数据存储方时,从已向数据存储方分
发的目标文件的数据块中选择待验证数据块,并生成待验证数据块的有效性校验值;向区块链网络发起包括数据验证事务请求,即发起挑战。
171.数据存储方获取数据拥有方发起的数据验证事务请求,之后根据标识信息,从本地存储的文件数据中获取验证轮次对应的待验证数据块的数据内容和数据签名值,进而根据验证轮次对应的数据内容、数据签名值、辅助验证值和有效性校验值,生成应答签名值,并向区块链网络发送应答签名值,即应对挑战。
172.区块链节点响应于数据拥有方发起的包括待验证数据块的标识信息和有效性校验值的数据验证事务请求,获取数据存储方对数据验证事务请求的应答签名值;之后调用租赁智能合约,基于第一点群和第二点群之间的双线性映射关系,根据当前验证轮次、当前验证轮次对应的标识信息、有效性校验值、应答签名值、数据拥有方的公钥、第二点群中的基点、辅助验证值以及辅助签名值等,验证数据存储方中是否存储有待验证数据块,即验证挑战。
173.所谓挑战即为数据拥有方为判断数据存储方是否真正存储了其数据的一种方式,可以以多种形式呈现,比如可以以事务请求形式呈现,如挑战可以是数据验证事务请求。
174.图9是根据本公开实施例提供的一种基于区块链的数据验证装置的结构示意图。本公开实施例适用于基于区块链技术对数据进行验证的情况,尤其适用于数据拥有方已向数据存储方分发文件的至少两个数据块的情况下,如何基于第一点群和第二点群之间的双线性映射关系,验证数据存储方是否存储了数据拥有方数据的情况。整套基于区块链的数据验证方法由数据拥有方、数据存储方、以及区块链网络中的节点相互配合来执行。其中,所谓数据拥有方即为借助数据存储方来存储其所拥有的数据的一方;数据存储方即为具有丰富存储资源的一方,可专门用于存储数据;进一步的,区块链网络中的节点能够与数据拥有方和数据存储方交互。
175.本实施例中基于区块链的数据验证方法可以由数据存储方执行,可选的,数据存储方可以是区块链网络中的节点,也可以不是区块链网络中的节点。该装置可以采用软件和/或硬件的方式实现,并可集成于数据存储方的计算设备中。如图9所示,本实施例提供的基于区块链的数据验证装置900可以包括:事务请求获取模块901,用于获取数据拥有方发起的数据验证事务请求;数据验证事务请求中包括当前验证轮次、当前验证轮次对应的辅助验证值、以及当前验证轮次对应的待验证数据块的标识信息和有效校验值;应答签名值生成模块902,用于根据数据验证事务请求,生成当前验证轮次下的应答签名值;应答签名值发送模块903,用于向区块链网络发送应答签名值;应答签名值用于指示区块链网络验证数据存储方中是否存储有待验证数据块。
176.本公开实施例的技术方案,通过获取数据拥有方发起的数据验证事务请求,数据验证事务请求中包括当前验证轮次、当前验证轮次对应的辅助验证值、以及当前验证轮次对应的待验证数据块的标识信息和有效校验值;之后根据数据验证事务请求,生成应答签名值,进而向区块链网络发送应答签名值,应答签名值用于指示区块链网络验证数据存储方中是否存储有待验证数据块。上述技术方案,在基于双线性映射验证场景下,可以基于验证轮次和其对应的辅助验证值等生成更为有效的应答签名值,进而保证了验证结果的可靠
性;另外,本方案还可以实现在不需要提供数据本身的情况下,精准验证数据存储方是否真正存储了数据拥有方的数据。
177.进一步地,应答签名值生成模块902包括:数据内容获取单元,用于根据标识信息,从本地存储的文件数据中获取待验证数据块的数据内容;处理结果确定单元,用于根据辅助验证值,对数据内容进行压缩处理,得到处理结果;应答签名值生成单元,用于根据处理结果、当前验证轮次、以及有效性校验值,生成当前验证轮次下的应答签名值;进一步地,处理结果确定单元具体用于:对数据内容和辅助验证值进行哈希运算,得到第一哈希值;根据第一哈希值,确定处理结果。
178.进一步地,应答签名值生成单元包括:数据签名值确定子单元,用于根据当前验证轮次,获取待验证数据块的数据内容和待验证数据块在当前验证轮次下的数据签名值;应答签名值生成子单元,用于根据数据处理结果、数据签名值、第一点群的基点、以及有效性校验值,生成应答签名值。
179.进一步地,应答签名值生成子单元具体用于:根据有效性校验值、处理结果、以及第一点群的基点,生成当前验证轮次下的应答签名值中的第一签名值;根据数据签名值和有效性校验值,生成当前验证轮次下的应答签名值中的第二签名值。
180.进一步地,数据内容获取单元具体用于:确定待验证数据块所属文件数据的开始位置;根据标识信息、数据偏移量、以及开始位置,确定待验证数据块的起始位置;根据起始位置,从本地存储的文件数据中获取待验证数据块的数据内容。
181.图10是根据本公开实施例提供的又一种基于区块链的数据验证装置的结构示意图。本公开实施例适用于基于区块链技术对数据进行验证的情况,尤其适用于如何验证数据存储方是否存储了数据拥有方数据的情况。整套基于区块链的数据验证方法由数据拥有方、数据存储方、以及区块链网络中的节点相互配合来执行。
182.本实施例中基于区块链的数据验证方法可以由区块链网络中的节点执行,具体可以由区块链网络中的区块生成节点来执行。该方法可以由基于区块链的数据验证装置来执行,该装置可以采用软件和/或硬件的方式实现,并可集成于承载基于区块链的数据验证功能的区块链节点的计算设备中。如图10所示,本实施例提供的基于区块链的数据验证装置1000可以包括:辅助验证值获取模块1001,用于在确定具有数据验证需求的情况下,获取当前验证轮次对应的辅助验证值;待验证数据块确定模块1002,用于从已向数据存储方分发的目标文件的关联数据块中选择当前验证轮次对应的待验证数据块;
有效性校验值生成模块1003,用于生成待验证数据块的有效性校验值;事务请求发起模块1004,用于向区块链网络发起数据验证事务请求;数据验证事务请求用于指示区块链网络验证数据存储方中是否存储有待验证数据块;其中,数据验证事务请求中包括当前验证轮次、当前验证轮次对应的辅助验证值、以及当前验证轮次对应的待验证数据块的标识信息和有效校验值。
183.本公开实施例的技术方案,通过在确定具有数据验证需求的情况下,获取当前验证轮次对应的辅助验证值,之后从已向数据存储方分发的目标文件的关联数据块中选择当前验证轮次对应的待验证数据块,进而生成待验证数据块的有效性校验值,并向区块链网络发起数据验证事务请求。上述技术方案,数据拥有方在具有验证数据是否存储于数据存储方的需求时,不需要提供待验证数据块本身,仅需要向区块链网络提供当前验证轮次对应的辅助验证值,以及当前验证轮次下待验证数据块的有效性校验值和标识信息即可借助区块链网络实现此验证,保证了数据的私密性;同时无论验证数据块的大小是否超过第一点群的阶数,均可保证对数据存储方是否存储数据进行有效验证。
184.进一步地,辅助验证值获取模块1001具体用于:根据当前验证轮次、数据拥有方的私钥、以及第一点群的基点,生成当前验证轮次对应的辅助验证值。
185.进一步地,该装置还包括:数据签名值生成模块,用于根据当前验证轮次对应的辅助验证值、辅助签名值、关联数据块的数据信息、数据拥有方的私钥、以及第一点群的基点,生成关联数据块在当前验证轮次下的数据签名值。
186.进一步地,数据签名值生成模块包括:第一数值生成单元,用于根据辅助签名值中的第一辅助值,以及关联数据块的数据信息中的标识信息,生成第一数值;第二数值生成单元,用于根据数据信息中的数据内容、辅助签名值中的第二辅助值、当前验证轮次对应的辅助验证值、以及第一点群的基点,生成第二数值;数据签名值生成单元,用于根据数据拥有方的私钥、第一数值、以及第二数值,生成关联数据块在当前验证轮次下的数据签名值。
187.进一步地,第二数值生成单元具体用于:对当前验证轮次对应的辅助验证值和数据信息中的数据内容进行哈希运算,得到第二哈希值;根据第二哈希值、辅助签名值中的第二辅助值、以及第一点群的基点,生成第二数值。
188.进一步地,该装置还包括:数据分发模块,用于将关联数据块和关联数据块的数据签名集分发至数据存储方;其中,数据签名集包括关联数据块在各验证轮次下的数据签名值。
189.本公开的技术方案中,所涉及的数据拥有方和数据存储方的数据等的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
190.根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
191.图11是用来实现本公开实施例的基于区块链的数据验证方法的电子设备的框图。图11示出了可以用来实施本公开的实施例的示例电子设备1100的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
192.如图11所示,电子设备1100包括计算单元1101,其可以根据存储在只读存储器(rom)1102中的计算机程序或者从存储单元1108加载到随机访问存储器(ram)1103中的计算机程序,来执行各种适当的动作和处理。在ram 1103中,还可存储电子设备1100操作所需的各种程序和数据。计算单元1101、rom 1102以及ram 1103通过总线1104彼此相连。输入/输出(i/o)接口1105也连接至总线1104。
193.电子设备1100中的多个部件连接至i/o接口1105,包括:输入单元1106,例如键盘、鼠标等;输出单元1107,例如各种类型的显示器、扬声器等;存储单元1108,例如磁盘、光盘等;以及通信单元1109,例如网卡、调制解调器、无线通信收发机等。通信单元1109允许电子设备1100通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
194.计算单元1101可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1101的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元1101执行上文所描述的各个方法和处理,例如基于区块链的数据验证方法。例如,在一些实施例中,基于区块链的数据验证方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1108。在一些实施例中,计算机程序的部分或者全部可以经由rom 1102和/或通信单元1109而被载入和/或安装到电子设备1100上。当计算机程序加载到ram 1103并由计算单元1101执行时,可以执行上文描述的基于区块链的数据验证方法的一个或多个步骤。备选地,在其他实施例中,计算单元1101可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行基于区块链的数据验证方法。
195.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、复杂可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
196.用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件
包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
197.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
198.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
199.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
200.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
201.人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科,既有硬件层面的技术也有软件层面的技术。人工智能硬件技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理等技术;人工智能软件技术主要包括计算机视觉技术、语音识别技术、自然语言处理技术及机器学习/深度学习技术、大数据处理技术、知识图谱技术等几大方向。
202.云计算(cloud computing),指的是通过网络接入弹性可扩展的共享物理或虚拟资源池,资源可以包括服务器、操作系统、网络、软件、应用和存储设备等,并可以按需、自服务的方式对资源进行部署和管理的技术体系。通过云计算技术,可以为人工智能、区块链等技术应用、模型训练提供高效强大的数据处理能力。
203.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
204.上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明
白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。