一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于区块链隐私保护的多用户异构数据合并存证方法与流程

2022-03-04 23:53:08 来源:中国专利 TAG:


1.本发明属于区块链隐私保护领域,具体涉及一种基于区块链的隐私保护的多用户异构数据合并存证、独立验证的方法。


背景技术:

2.随着互联网的不断发展,传统的纸质文件正在不断数字化,电子数据易于存储、便于携带、存储成本低,为人们的生活和工作带来了极大地便利。但是电子数据容易丢失、容易被篡改,因此电子数据在存储和保存过程中的安全性变得尤为重要。传统的数据产权服务,确权耗时长,成本较高,流程复杂,并且维权效率低,例如数字版权行业举证十分困难。
3.数据存证首先要对数据按数据类型进行很好的存储保存,并且还要对数据的可信性,完整性要有很好的保障。区块链的不可篡改和时间戳等特性可以很好的保证电子数据证据的完整性和法律效力,因此将数据存储至区块链是一种很好的电子数据存证方式。
4.然而,目前基于区块链的电子数据存证技术存在以下一些问题:
5.1.没有对数据进行聚合,导致存证成本较高。文献【侯义斌,梁勋,占小瑜. 基于区块链的电子证据系统架构模型[j].计算机科学,2018,045(0z1):348-351.】中,采集用户存证数据的哈希值并加钙时间戳后取哈希值,不断生成一个链式数据结构,该电子证据系统架构对用户的数据进行哈希两次,隐藏了用户的真实数据,保护用户隐私,但是该方法没有对存证数据进行聚合,导致如果有大量数据要上链存证的话成本将会很高。文献【路成业,王凌,孙耀普,等.基于区块链的电子证据处理方法,装置及可读介质】中提出了一种基于区块链的电子证据处理方法,监管部门通过哈希值比对来验证审计企业的电子证据真实性,此发明将每条数据单独上链存证,没有进行数据聚合,因此如果如果数据量大那么整个系统的效率、成本将大大提升。
[0006]
2.聚合存证但是没有考虑隐私安全。例如文献【杨无鬼,马恒,李发健.一种基于区块链的电子证据存证和验证方法及装置。】提出的电子证据存证和验证方法,它将每个电子证据对应的哈希值一起聚合成默克尔树,当验证时需要其他电子证据的哈希值作为验证参数,从而会导致其他用户的隐私泄露,同时该文献如果某一存证将原始数据交给某个验证者进行验证完毕后,该验证者可以保存该数据并可恶意宣传他是该数据的拥有者,并且他可以向别人展示存证者发他的验证数据,导致隐私安全无法得到保证。


技术实现要素:

[0007]
本发明针对现有的数据存证系统易篡改、数据隐私性较差、可信度较低等问题,利用区块链的去中心化、数据不可篡改、可追溯等特性,针对数据量较大、存证时间要求较快的数字存证场景,提出一个数据聚合存证模型,将多用户的异构存证数据进行聚合处理,提高证据上链的效率并节省上链成本;在此基础之上,本发明设计了一个隐私保护方案,对上链证据进行杂凑(又称哈希,散列,hash)处理,实现一个基于区块链的隐私保护的多用户异构数据合并存证、独立验证的方法,在将数据聚合存证的同时又考虑到用户的隐私安全。
[0008]
本发明的技术方案:
[0009]
一种基于区块链隐私保护的多用户异构数据合并存证方法,具体如下:
[0010]
所述的方法包括三个参与角色和三个模块,三个参与角色包括存证者、聚合者和验证者;三个模块包括数据预处理模块、数据聚合模块以及数据验证模块。
[0011]
所述的存证者是为希望对其产生的电子数据在区块链中作为证据留存,存证的数据无法被第三方以及聚合者获取。
[0012]
所述的聚合者能够在某段存证时长内为多个存证者提供数据聚合服务,并将其根据存证者需求上链至不同的区块链平台进行保存,同时返回给存证者对应“存证树”上的验证参数。
[0013]
所述的验证者是对存证者提供的验证参数集进行验证,证明数据的真实性和完整性以及存证者的身份认证。
[0014]
所述的数据预处理模块中,存证者首先对异构数据经过安全的哈希函数处理得到统一长度的哈希值字符串,即数据摘要。一个安全的哈希函数可以抗第二原像攻击,即通过数字摘要无法得知原来的数据,因此能够对存证者的原始数据进行隐私保护。接着存证者利用数字签名技术中的签名算法对数据摘要签名,并将数据摘要和数据摘要的签名一起发送给聚合者,此时完成数据的预处理。
[0015]
所述的数据聚合模块中,聚合者根据不同的聚合模式将某一时间段内的不同存证者发送来的数据动态构建一个“存证树”,“存证树”是一个完全二叉树(类似于merkle tree数据结构)。构建过程为:先将存证者发送来的数据摘要和数据摘要签名作为叶子结点进行哈希计算得到对应的哈希值,然后将所有的存证者的数据哈希值两两不断进行哈希计算向上聚合,最终得到“存证树”的根节点哈希值,然后将根节点哈希值上链保存,完成多个存证者数据聚合存证。同时发送给每个存证者的存证数据对应的验证参数集。
[0016]
所述的数据验证模块中,一共要进行三次验证,从而完成对存证数据的真实性验证、数据身份认证以及数据完整性验证。
[0017]
step 1:验证者首先对存证者发来的验证数据以及验证参数集经过算法计算得出一个哈希值,并将该哈希值与区块链上存证的哈希值进行对比,如果一致即可证明数据摘要以及数据摘要签名真实未被篡改,区块链上的时间戳可证明数据上链的时间。
[0018]
step 2:验证者使用数字签名技术中的验证算法输入验证者公钥、数据摘要、数据摘要的签名来完成对数据摘要签名真实性的验证,如果验证通过则证明该数据摘要属于存证者,完成身份认证,防止冒充或者抵赖行为。
[0019]
step 3:验证者对原始数据经过哈希函数计算后得到的哈希值如果和数据摘要相同则完成数据的完整性证明。
[0020]
进一步的,所述的数据预处理模块中,安全的哈希函数包括但不仅限于 sha256、sha1、md5、sm3。
[0021]
进一步的,所述的数据预处理模块中,数字签名技术包括但不仅限于rsa、 dsa、ecdsa、sm2。
[0022]
进一步的,所述的数据聚合模块中,根据“存证树”的层数决定验证参数的个数,具体关系为验证参数的个数=“存证树”的高度-2。
[0023]
进一步的,所述的数据验证模块中,step 1的具体步骤为:
[0024]
验证者需要输入验证参数集,具体包括:原始数据文件f、数据摘要h、数据摘要签名h
signed
、“存证树”验证参数集params、存证交易tx、存证者的公钥pubkey。其中数据摘要、数据摘要签名、存证者公钥用来身份认证,确认数据的归属人;原始数据文件和数据摘要用来对数据的完整性进行验证,确保数据没有被篡改;“存证树”验证参数集、数据摘要、数据摘要签名用来对数据的真实性进行验证,确认数据存证的时间;存证交易用于验证计算出来的存证数与哈希值的真实性;
[0025]
验证者输入完验证参数集后进行计算对比,具体步骤如下:
[0026]
第一步:将待验证的原始数据文件f进行哈希函数计算,并得到结果哈希值h


[0027]h′
=hash(f)
[0028]
第二步:将h

与h进行对比,如果结果相等则跳转至第三步,否则数据已被篡改,不满足数据完整性验证。
[0029]
第三步:使用数字签名的验证算法verk()对pubkey、h
signed
进行运算,得到结果h


[0030]h″
=ver
pubkey
(h
signed
)
[0031]
第四步:将h

和h

进行对比,如果结果相等则跳转至第五步,否则代表此数据不属于该存证者,身份认证失败。
[0032]
第五步:先使用params{t0,t1,t2,t3,t4,t5,

,tn}、h、h
signed
完成“存证树”的某一“枝干”计算,具体步骤如下:
[0033]
h1=hash(t0,t1)
[0034]
h2=hash(h1,t
t
)
[0035]
h3=hash(h2,t3)
[0036]
h4=hash(h3,t4)
[0037]
……
[0038]hn
=hash(h
n-1
,tn)
[0039]
其中,对于一个高度为n 2的存证树,“存证树”验证参数集params共有n项,其中t1为“存证树”中数据摘要h、数据摘要签名h
signed
的父节点的兄弟节点的值,t2为数据摘要h、数据摘要签名h
signed
的父节点的父节点的兄弟节点的值,t3为数据摘要h、数据摘要签名h
signed
的父节点的父节点的父节点的兄弟节点的值,依次类推,最后tn为存证树根节点的左孩子的值(如果存证者的数据摘要和数据摘要签名在存证树的根节点的右子树上)或存证树根节点的右孩子的值(如果存证者的数据摘要和数据摘要签名在存证树的根节点的左子树上)。
[0040]
第六步:将hn与区块链中存证交易tx中存证的值进行对比,如果相等则跳至第七步,否则不满足数据的真实性。
[0041]
第七步:验证成功。
[0042]
本发明的有益效果:
[0043]
1.防伪保存:本方法利用了区块链的两大基本特性实现了数字证据的防伪保存的功能。一是利用区块链上的数据无法篡改的特性,即证据一旦写入区块链就无法篡改。二是利用区块链的时间戳功能,区块链上所有的数据都有其上链的时间戳,因此上链的数字证据的产生的时间也就不可能晚于其对应的时间戳。
[0044]
2.聚合:本方法将同一时刻,不同用户、不同种类的数字证据通过哈希函数聚合为
一条数据。最终只需将这条数据上链。这样,这些聚合了的数字证据上链只需要支付一笔手续费,大大降低了成本。(这种方式的优点是将大量数据上链的同时,节约了成本。)
[0045]
3.隐私保护:本方法中,各用户提交给聚合者的数据为原始数据经过哈希计算后数据摘要以及数据摘要签名,根据哈希函数的隐藏特性,哈希函数的计算过程是不可逆的,因此如果用户不主动提供原始数据,那么任何人包括聚合者都无法根据存证者的数据摘要推断出真实数据。另外在验证过程中,验证者无需借助第三方平台即可完成验证,从而保护用户数据隐私。
[0046]
4.快速验证:本方法借助哈希函数单向计算较快的特点,结合merkle tree 的快速验证算法,减少了验证过程中的数据传输,验证速度较快,时间复杂度为o(n)。本发明可以提供数据真实性、数据身份认证以及数据完整性三种不同程度的数据验证,从而可以完成“哪些数据是在何时由何人产生的”这一验证目标。
[0047]
5.数据细粒度存证:传统的基于区块链存证方法,都是将整个文件或者几个文件何在一起上链存证,那么当验证时需要提供所有的文件内容,一方面会造成较高的数据传输量,另一方面也会泄露无需验证的部分内容。使用本方法可以某个文件拆分为若干个原子数据,再将它们合并存证,当需要验证时仅需提供验证数据和对应的验证参数集,实现数据细粒度的存证。
[0048]
本发明的创新之处在于以上5点技术复合,在保护用户隐私的情况下,可以低开销地实现多用户异构数据细粒度存证、快速独立验证的功能。
附图说明
[0049]
图1参与主体关系图。
[0050]
图2本发明方法的系统结构图。
[0051]
图3数据聚合图。
[0052]
图4验证参数图。
[0053]
图5数据验证图。
具体实施方式
[0054]
以下根据附图和实施例对本发明的技术方案进行进一步说明。
[0055]
实施例:
[0056]
(1)选择4个测试文件,分别通过sha-256哈希函数得到对应的哈希值
[0057]
(2)每一个测试文件经过哈希处理后得到数据摘要以及配对数据摘要签名,一共得到8个值分别对应8个叶子结点。
[0058]
(3)执行函数,得到一个存证树,并返回每个用户对应的验证参数集。用户0将验证参数集从上至下进行哈希运算即可得到根哈希值,其中验证参数集第一个为真实数据对应的数据摘要。详细过程如下所述:
[0059]
本发明的参与角色如下:存证者、聚合者、验证者。三个角色的关系如图1 所示,他们各自的业务需求以及安全需求如下所述:
[0060]
1.存证者:存证者为希望对其产生的电子数据在区块链中作为证据留存,方便日后如果发生侵权行为或者产生法律纠纷时可以作为有效证据维护自己的权益。存证者的业
务需求有:可低成本、高效率地对大量数据完成可信的存证,同时存证者的安全需求有:希望自己存证的数据无法被第三方以及聚合者获取。
[0061]
2.聚合者:聚合者为存证者提供数据聚合上链存证服务,聚合者为一个半可信的第三方,它的业务需求为在某段存证时长内为多用户提供数据聚合服务,并将其根据用户需求上链至不同的区块链平台进行保存,同时返回给用户对应“存证树”上的验证参数。聚合者可以为第三方提供聚合服务的商业公司或机构。
[0062]
3.验证者:验证者对用户提供的验证参数集进行验证,例如在法律纠纷时司法机构作为验证者对诉讼者提供的证据进行验证。验证者的业务需求为能快速、高效地对存证者提供的数据进行验证,证明数据的真实性和完整性以及数据拥有者的身份认证。
[0063]
本发明提供一种基于区块链的隐私保护的多用户异构数据合并存证、独立验证的方法。本方法涉及的系统主要分为数据预处理模块、数据聚合模块以及数据验证模块,图2为本发明的系统结构图,下面对它们进行详细阐述。
[0064]
(一)数据预处理模块
[0065]
数据预处理模块主要对存证者异构数据进行同构化处理、隐私处理以及签名处理。
[0066]
如图2中的数据预处理部分所示,存证者首先将需要存证的数据输入至数据预处理模块。由于不同的用户输入的数据类型与数据大小不同,录入模块首先对他们进行同构化。具体方法为将存证者输入的任意一个数据f,采用一个安全哈希函数(如sha256)对x进行哈希运算,得到一串定长为n的二进制串。这个二进制串为数据摘要h,可以用来唯一的识别数据f,所以也相当于该数据的数字指纹,此时完成异构数据同构化步骤。(注意:摘要文件发生任意改动,经过单向哈希函数处理后得到的摘要都会不一样,因此数据和数字指纹之间有很强的对应关系)。因为哈希函数的单向性可以隐藏用户的原始数据,从而实现用户的数据隐私保护。
[0067]
然后,存证者使用签名算法sigk()以及存证者的私钥prikey对数据摘要签名 h,得到数据摘要的签名h
signed

[0068]hsigned
=sig
prikey
(h)
[0069]
然后将数据摘要和数字摘要签名提交给聚合者。此步骤的目的是对数据摘要信息真实性的一个有效证明,可以完成数据的身份认证,避免以下这种情况:如果存证者向某个验证者提供了原始数据和验证参数集,完成验证后如果该验证者存在恶意行为,凭借拥有的这些数据和验证参数集可以谎称其为该数据的拥有者。
[0070]
(二)数据聚合模块
[0071]
在数据聚合模块中,聚合者负责将数据摘要聚合成一个“存证树”,“存证树”的构造过程如图3所示。首先“存证树”是一个完全二叉树结构,叶子结点为数据摘要和数据摘要签名。非叶子结点为左孩子和右孩子的数据进行字符串拼接,然后再进行哈希运算得到对应的哈希值,例如哈希值 1=hash(数据摘要1,时间戳1)。按照此算法从下往上逐层计算,并最终得到一个根哈希值,以此完成对数据的聚合。
[0072]
在实际应用中,聚合者根据设定的存证时长(例如每5分钟进行一次数据存证),对该时间内的所有需要存证的数据摘要进行动态构建“存证树”。数据聚合模块每次收到数据存证者收到的数据摘要和数据摘要签名,就立即获取此时的时间戳,并立即进行哈希运算
向上构建一层分支结点
[0073]
例如在图3中,设定存证时长为h,存证开始时间为t。在t时,存证者a提交数据摘要x1和数据摘要签名s1。聚合者立即计算出哈希值1=hash(x1,s1);在 t 1时,存证者b提交数据摘要x2和数据摘要签名s2。聚合者立即计算哈希值 2=hash(x2,s2);在t h,存证者d提交的数据摘要4,称为x4。聚合者立即计算哈希值4=hash(x4,s4)。因为存证时长已经达到,于是停止接受数据,开始对聚合池中的4组数据进行两两逐层向上哈希运算,最终聚合成根结点即哈希值 7=hash(hash(哈希值1,哈希值2),hash(哈希值3,哈希值4))。
[0074]
数据聚合完毕后,聚合者将聚合后的数据即“存证树”根哈希值上链至区块链中保存。根据不同的区块链平台有不同的数据上链方式,在以太坊中使用solidity 语言编写一个智能合约,将聚合的根哈希值保存至区块连中。
[0075]
证据上链完毕后聚合者需要将“存证树”上对应的验证参数返回给各个存证者,便于数据验证时使用。以图3为例,输出给四个存证者的验证参数如图4所示。根据“存证树”的层数决定验证参数的个数,具体关系为验证参数的个数=“存证树”的高度-2。图3对应的“存证树”共有4层,那么产生3个“存证树”验证参数,具体如下:
[0076]
1.第一个验证参数为存证者的数据和存证时间戳生成的哈希值1的兄弟结点的数据哈希值2。
[0077]
2.第二个验证参数为结点数据为哈希值1和结点数据为哈希值2进行哈希计算后得到的结点数据为哈希值5的兄弟结点的数据哈希值6。
[0078]
3.第三个验证参数为结点数据为哈希值5和结点数据为哈希值6进行哈希计算后得到的结点数据为哈希值7的结点,因为该结点为根节点,因此验证参数生成完毕。
[0079]
(三)数据验证模块
[0080]
在数据验证模块中,验证者可根据存证者提供的数据和验证参数对数据的真实性、完整性以及数据归属性进行验证。
[0081]
首先验证者需要输入验证参数集,具体如表1所示:
[0082]
表1验证参数集合
[0083][0084]
其中数据摘要、数据摘要签名、存证者公钥用来身份认证,确认数据的归属人;原
始数据文件和数据摘要用来对数据的完整性进行验证,确保数据没有被篡改;“存证树”验证参数集、数据摘要、数据摘要签名用来对数据的真实性进行验证,确认数据存证的时间。存证交易用于验证计算出来的存证数与哈希值的真实性。如图5所示,验证者输入完验证参数集后进行计算对比,具体步骤如下:
[0085]
第一步:将待验证的原始数据文件f进行哈希函数计算,并得到结果哈希值h


[0086]h′
=hash(f)
[0087]
第二步:将h

与h进行对比,如果结果相等则跳转至第三步,否则数据已被篡改,不满足数据完整性验证。
[0088]
第三步:使用数字签名的验证算法verk()对pubkey、h
signed
进行运算,得到结果h


[0089]h″
=ver
pubkey
(h
signed
)
[0090]
第四步:将h

和h

进行对比,如果结果相等则跳转至第五步,否则代表此数据不属于该存证者,身份认证失败。
[0091]
第五步:先使用params{t0,t1,t2,t3,t4,t5,

,tn}、h、h
signed
完成“存证树”的某一“枝干”计算,具体步骤如下:
[0092]
h1=hash(t0,t1)
[0093]
h2=hash(h1,t
t
)
[0094]
h3=hash(h2,t3)
[0095]
h4=hash(h3,t4)
[0096]
……
[0097]hn
=hash(h
n-1
,tn)
[0098]
第六步:将hn与区块链中tx交易中存证的值进行对比,如果相等则跳至第七步,否则不满足数据的真实性。
[0099]
第七步:验证成功。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献