
本发明涉及到区块链技术,具体涉及一种基于区块链的可信的数据溯源方法及系统。
背景技术:
:安全可信的数据为科学研究、智能服务等提供了强大的支撑,而数据共享过程中存在的安全可信来源问题也日益受到关注。为解决该类问题,越来越多有关于数据溯源的方案提出。专利[1]在数据溯源过程中,依据溯源信息中的数据操作以及源数据的标识信息,追踪结果记录的来源以及演变过程。专利[2]基于数据仓库的数据溯源方法及装置,根据用户标识或属性进行溯源,定位单元格,并获取单元格中的信息,以及单元格所关联存储的信息来源和更新时间。区块链的提出,为数据溯源提供了更多可能,专利[3]公开了一种基于区块链的数据溯源系统,设计了多个模块,通过智能合约等实现数据的自动采集、自动上链。专利[4]通过配置、采集业务流程,将业务流程相关数据存储在区块链中,实现数据不可篡改。由于区块链不可篡改等特性,基于区块链的数据溯源也广泛应用到各个领域[5][6]。传统数据溯源方案基于中心化的平台,不再适用于分布式的环境,并且一旦中心节点被攻击,就难以实现安全可信的溯源。很多基于区块链技术的方案,区块链数据溯源系统,但未考虑采集数据的正确性,错误的数据会导致错误的溯源结果或者无意义的溯源,一些方案针对于具体的场景提出,更适合特定场景的应用,较难应用到其他领域。[1]桂耀伟,王梅,张圆.一种数据溯源方法以及相应的数据溯源装置[p].上海市:cn109657110b,2019-11-05.[2]黎仁全,唐明辉,李邱林,贾西贝.基于数据仓库的数据溯源方法及装置[p].广东:cn107609171a,2018-01-19.[3]陈曦娟.一种基于区块链的数据溯源系统及其方法[p].浙江省:cn111127042a,2020-05-08..[4]郑晓红,刘永明,赵金彪,白鑫磊,陈依成,韩玉.基于区块链的数据溯源方法、系统及装置[p].北京市:cn110069937a,2019-07-30..[5]郝淼,张成梅,于杰,黄伟,王福贵,秦先进,辛方建,杨鑫,杨红,张明龙.一种基于区块链的食品数据溯源方法[p].贵州省:cn112035469a,2020-12-04..[6]计雄昆.一种基于学生数据溯源的信息分析系统[p].云南省:cn111640049a,2020-09-08.。技术实现要素:本发明的目的在于提供一种基于区块链的可信的数据溯源方法及系统,解决现有的数据溯源方式存在的易篡改、数据来源不可信的问题。为实现上述目的,本发明的技术方案是:一种基于区块链的可信的数据溯源方法,包括:数据上传验证:数据上传前,由验证者验证数据本身的完整性、合法性,验证后的数据上传到区块链附属链;数据可信溯源:对上传至区块链附属链上的数据做溯源操作,构建出数据安全完整可信的生命周期;数据权限控制:设置用户身份,验证身份通过后,针对不同的身份赋予不同的权利与责任;用户行为管控:用户所有行为会在区块链中留存,一旦有恶意行为被发现,可以进行追溯及追责,用户无法否认自己的行为。在本发明一实施例中,所述对上传至区块链附属链上的数据做溯源操作,构建出数据安全完整可信的生命周期的具体实现过程为:对上传至区块链附属链上的数据,自动调用智能合约,验证数据的整个生命流程,若其具有合法的来源,则数据可以存储到区块链中,否则,停留在区块链附属链,操作者的所有记录都会存在区块链附属链中。在本发明一实施例中,所述方法基于provchain实现,provchain由联盟主链和多条联盟附属链组成;包含三个参与方:验证者(verifier,v)、发布者(publisher,p)和请求者(requester,r);所述联盟主链由多个验证者管理的节点构成,每个验证者会管理独立的联盟附属链。在本发明一实施例中,所述方法具体实现如下:首先,p和r需要在区块链中提交自己的信息,生成自己的身份标识pid和rid,系统随机发送给个v,v得到相关的信息做初步的验证;身份验证通过后,p可以发布自己的数据d的相关信息到联盟附属链,数据d的相关信息di={d,abs,own,pre,acpo},其中,d表示用户的数据;abs表示数据摘要;own表示用户所有权,具体内容为用户所有者的身份标识;pre表示p的数据前驱,即p从该集合中的所有用户中获得过该数据,若数据d的所有者为p,则该集合为空集;acpo为数据的访问策略;v通过验证算法验证p提交的数据;每个v验证得到结果后,将所有结果提交,若通过的总数超过k/2,则验证通过;验证通过后,合约会自动调用联盟主链上的相关数据做数据的溯源;确认无误,会将数据上传到联盟主链,并将数据摘要公开,以方便其他用户查询;并将数据hash一起存到数据块结构中,用于数据完整性验证:r通过查询数据摘要,对联盟主链上的数据感兴趣,则需要提交自己的信息,以获取联盟主链的信息;v验证r提交的信息,如果信息合法,则将信息提交到联盟主链,系统调用合约验证p提供的访问权限,如果r满足访问权限,则v将相关数据发送给r,否则v拒绝r的数据请求;v获得数据后,验证数据完整性,如果无误,则交易结束。在本发明一实施例中,验证用户身份由验证者执行,且非法验证者v的个数t不超过验证者总数n的1/3,即3t+1≤n。本发明还提供了一种基于区块链的可信的数据溯源系统,包括:系统结构模块,provchain由联盟主链和多条联盟附属链组成;包含三个参与方:验证者(verifier,v)、发布者(publisher,p)和请求者(requester,r);数据操作模块,负责采集与存储数据,生成并记录数据相关信息;验证模块,用于验证参与方身份、数据的合法性以及用户操作请求;可信溯源模块,用于对即将上传到联盟主链的数据进行溯源操作,来检验数据的生命流程;接口服务模块,用于实现不同模块之间的数据传输,以及不同参与方之间的交互。在本发明一实施例中,所述系联盟主链由多个验证者管理的节点构成,每个验证者会管理独立的联盟附属链。在本发明一实施例中,对于采集数据在上传阶段需执行如下过程:通过验证模块对发布者的身份信息进行验证;当发布者的身份信息通过验证的情况下,提交其数据集访问权限,并通过验证模块进行验证;当数据通过验证后,调用可信溯源模块验证数据的生命流程是否完整,若通过验证,则将数据上传至联盟主链,并生成数据相关信息。在本发明一实施例中,存储在联盟主链的数据至少包括:数据本身及数据访问权限,数据的发布者和验证者,数据相关的重要时间,数据的摘要,数据的hash。相较于现有技术,本发明具有以下有益效果:本发明方法解决现有的数据溯源方式存在的易篡改、数据来源不可信的问题,具体实现如下目的:首先,在防篡改方面,传统的溯源方案不支持防篡改的功能,基于区块链的方案支持防篡改功能,在我们的方案中,我们也特别提出防篡改的方式。在分布式方面,基于区块链的方案,数据是分布式存储的,安全性更好,也能更好地支持可信溯源。中心化的方案容易被攻击,并且对于中心可信机构依赖性太高。在验证方面,我们提出了用户身份验证和数据可信验证、数据完整性验证等,其他方案只考虑数据的追溯,没有考虑到数据的可信验证。在拓展方面,专利[1]受限制于其中心化平台,难以拓展到去中心化的项目中;专利[2]受限制于其针对的数据仓库领域;专利[5][6]针对具体的场景,提出更为具体的方案,方案本身难以拓展到其他应用领域。附图说明图1为provchain结构图。图2为provchain参与方。图3为数据块结构。具体实施方式下面结合附图,对本发明的技术方案进行具体说明。本发明一种基于区块链的可信的数据溯源方法,包括:数据上传验证:数据上传前,由验证者验证数据本身的完整性、合法性,验证后的数据上传到区块链附属链;数据可信溯源:对上传至区块链附属链上的数据做溯源操作,构建出数据安全完整可信的生命周期;数据权限控制:设置用户身份,验证身份通过后,针对不同的身份赋予不同的权利与责任;用户行为管控:用户所有行为会在区块链中留存,一旦有恶意行为被发现,可以进行追溯及追责,用户无法否认自己的行为。在本实施例中,所述对上传至区块链附属链上的数据做溯源操作,构建出数据安全完整可信的生命周期的具体实现过程为:对上传至区块链附属链上的数据,自动调用智能合约,验证数据的整个生命流程,若其具有合法的来源,则数据可以存储到区块链中,否则,停留在区块链附属链,操作者的所有记录都会存在区块链附属链中。在本实施例中,所述方法基于provchain实现,provchain由联盟主链和多条联盟附属链组成;包含三个参与方:验证者(verifier,v)、发布者(publisher,p)和请求者(requester,r);所述联盟主链由多个验证者管理的节点构成,每个验证者会管理独立的联盟附属链。在本实施例中,验证用户身份由验证者执行。本发明还提供了一种基于区块链的可信的数据溯源系统,包括:系统结构模块,provchain由联盟主链和多条联盟附属链组成;包含三个参与方:验证者(verifier,v)、发布者(publisher,p)和请求者(requester,r);数据操作模块,负责采集与存储数据,生成并记录数据相关信息;验证模块,用于验证参与方身份、数据的合法性以及用户操作请求;可信溯源模块,用于对即将上传到联盟主链的数据进行溯源操作,来检验数据的生命流程;接口服务模块,用于实现不同模块之间的数据传输,以及不同参与方之间的交互。在本实施例中,所述系联盟主链由多个验证者管理的节点构成,每个验证者会管理独立的联盟附属链。在本实施例中,对于采集数据在上传阶段需执行如下过程:通过验证模块对发布者的身份信息进行验证;当发布者的身份信息通过验证的情况下,提交其数据集访问权限,并通过验证模块进行验证;当数据通过验证后,调用可信溯源模块验证数据的生命流程是否完整,若通过验证,则将数据上传至联盟主链,并生成数据相关信息。在本实施例中,存储在联盟主链的数据至少包括:数据本身及数据访问权限,数据的发布者和验证者,数据相关的重要时间,数据的摘要,数据的hash。以下为本发明的具体实现过程。本发明提出了provchain,系统的简要结构如图1所示。provchain由联盟主链和多条联盟附属链组成,联盟主链由多个验证者管理的节点构成,每个验证者会管理独立的联盟附属链。联盟主链负责存储和管理拥有合法来源和生命流程的数据、数据摘要和参与方操作记录,联盟附属链负责暂存用户发布的数据,只有经过验证的数据,才能上传到联盟主链,在规定时间内未通过验证的数据,会被系统自动清除。如图2所示,provchain包含三个参与方:验证者(verifier,v)、发布者(publisher,p)和请求者(requester,r)。每个用户的所有行为都会保留在联盟链中并发布给所有用户,其他用户可以监控用户行为。验证者v具有最高权限,可以直接访问联盟主链上的数据、多个验证者(达到系统设定阈值)可以联合修改联盟主链上数据。发布者p可以在provchain中共享数据或提供其所需提供的数据并设定数据的访问权限,用以获取回报或者应用其服务。例如p可以共享其他用户需要的资料以获取报酬或者运营商发布商品信息以监控商品生命流程。请求者r可以访问联盟主链存储数据的摘要,通过验证后根据要求执行操作(如支付费用)可以获取相应的数据。注意,联盟主链中的数据只针对验证者公开,由验证者将联盟主链上的数据分发给合法的数据请求者;联盟主链中的数据摘要和参与方行为记录针对所有参与方公开。为保证provchain运行,我们做如下合理假设:假设1:存在验证函数ownver()验证p是否正确声明数据所有权。不同的具体应用场景有不同的验证函数,如论文的相似度检测也属于验证函数的范围。假设2:非法验证者v的个数t不超过验证者总数n的1/3,即3t+1≤n。这是基于联盟链的合理假设,该假设同样适用于我们的方案。具体流程如下:首先,p和r需要在区块链中提交自己的信息,生成自己的身份标识pid和rid,系统随机发送给个v,v得到相关的信息做初步的验证。身份验证通过后,p可以发布自己的数据d的相关信息到联盟附属链,数据信息di={d,abs,own,pre,acpo}、其中d表示用户的数据;abs表示数据摘要;own表示用户所有权,具体内容为用户所有者的身份标识;pre表示p的数据前驱,即p从该集合中的所有用户中获得过该数据,若数据d的所有者为p,则该集合为空集;acpo为数据的访问策略。v会验证p提交的数据。每个v的验证算法如算法1所示。每个v验证得到结果后,将所有结果提交,若通过的总数超过k/2,则验证通过。验证通过后,合约会自动调用联盟主链上的相关数据做数据的溯源。确认无误,会将数据上传到联盟主链,并将数据摘要公开,以方便其他用户查询。并将数据hash一起存到数据块结构中,用于数据完整性验证,完整的数据块结构如图3所示。r通过查询数据摘要,对联盟主链上的数据感兴趣,则需要提交自己的信息,以获取联盟主链的信息。v验证r提交的信息,如果信息合法,则将信息提交到联盟主链,系统调用合约验证p提供的访问权限,如果r满足访问权限,则v将相关数据发送给r,否则v拒绝r的数据请求。v获得数据后,验证数据完整性,如果无误,则交易结束。将本发明的方案provchain与另外几个专利的方案做了比较。针对于本发明前面提到的几个问题,本发明的方法在如下几个方面具有更好地效果,表1为方案对比结果。首先,在防篡改方面,传统的溯源方案不支持防篡改的功能,基于区块链的方案支持防篡改功能,在我们的方案中,我们也特别提出防篡改的方式。在分布式方面,基于区块链的方案,数据是分布式存储的,安全性更好,也能更好地支持可信溯源。中心化的方案容易被攻击,并且对于中心可信机构依赖性太高。在验证方面,我们提出了用户身份验证和数据可信验证、数据完整性验证等,其他方案只考虑数据的追溯,没有考虑到数据的可信验证。在拓展方面,专利[1]受限制于其中心化平台,难以拓展到去中心化的项目中;专利[2]受限制于其针对的数据仓库领域;专利[5][6]针对具体的场景,提出更为具体的方案,方案本身难以拓展到其他应用领域。表1方案对比方案追溯防篡改分布式可验证数据权限可拓展专利[1]√×××××专利[2]√×××××专利[3]√√√××√专利[4]√√√××√专利[5]√√√×××专利[6]√√√×××provchain√√√√√√以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。当前第1页12