一种适用于区块链的海量数据摘要生成系统和方法与流程

文档序号:16781468发布日期:2019-02-01 19:10阅读:160来源:国知局
一种适用于区块链的海量数据摘要生成系统和方法与流程

本发明属于数据摘要技术领域,具体来说涉及一种适用于区块链的海量数据摘要生成系统和方法。



背景技术:

随着大数据时代的来临,目前数据的共享与传播已经成为社会上各个行业关注的重点问题。大数据在人们生活与生产中产生了及其重要的影响,带来积极效应的同时,也给人们带来了一定的风险。大数据在共享与传播的过程中,都面临着一定的篡改风险和溯源述求,一旦共享与传播的数据产生了被篡改的情况,会对用户的使用数据的效果产生很大的影响。

随着互联网深入应用、云计算走向成熟,以及智能手机为代表的信息设备大量普及,中国社会初步形成了信息社会的雏形,为中国的产业升级、社会转型、改革创新奠定了基础,也对数据信息的安全与共享应用产生了强烈的需求。

目前为了应对数据篡改的问题,常见的技术手段有数据文件摘要技术,即在数据生成文件后,可以采用文件摘要生产技术,进而有效防止数据被篡改。通常摘要的方法有文件的哈希值、文件的md5值等。通过对文件进行摘要生产,可以在使用数据文件时对文件进行验证,保证文件没有被篡改过。

但是在对数据文件进行摘要时,由于摘要内容是针对整个文件生成的,在使用的过程中如果发现摘要与原始摘要不一致时,只能判断出数据被篡改过,但是无法定位到哪一条数据被篡改了。并且当数据本身并未被篡改,只是数据的顺序被改变了,这种文件摘要的方法也无法获知。



技术实现要素:

有鉴于现有技术中存在的上述问题,本发明给出了一种针对每一条记录进行摘要并最终汇总的技术方法。此方法可以在数据遭到篡改之后快速定位到被篡改的具体记录,同时数据的顺序变化不会影响判断的结果。同时,此方法可以与区块链技术相结合,应用于数据的开放共享领域,为每一条传播的数据提供防篡改的能力,同时对用户获取使用的每一条数据提供溯源的能力。

具体来说,本发明采用了以下技术方案:

一种适用于区块链的海量数据摘要生成系统,所述系统包括数据存储系统、全量数据摘要模块、单条记录摘要模块、摘要合并模块、摘要对比模块,数据存储系统用于存储原始数据集,全量数据摘要模块用于生成全量数据的整体摘要,单条记录摘要模块用于生成单条记录的摘要,摘要合并模块用于将所有单条记录的摘要进行合并,摘要对比模块用于发现数据是否被篡改,其特征在于,所述系统执行以下操作:步骤1)对原始数据集进行全量数据摘要生成,其中在全量数据摘要模块对原始数据集生成一个全量的数据摘要e作为全量数据的整体摘要并存储于数据存储系统;步骤2)对单条记录生成单条记录的摘要,其中在单条记录摘要模块针对每一条记录生成其数字摘要作为单条记录的数字摘要fi并存储于数据存储系统,其中i为数据集中具体单条记录的编号;步骤3)对所有单条记录的摘要进行合并,其中将每一条记录的数字摘要传递给摘要合并模块,摘要合并模块将单条记录的数字摘要散列到一个或者多个布隆过滤器中,最终生成一个或多个布隆过滤器并存储于数据存储系统;步骤4)判断数据是否被篡改,其中在使用数据的过程中,首先使用全量数据摘要模块计算所使用全量数据的摘要信息获得相应的全量的数据摘要e’,取出前面所生成的全量数据摘要e,在摘要对比模块将计算结果e’与前面所生成的全量数据摘要e进行对比,如果一致则表明数据未经篡改,可以直接使用。进一步,如果在全量数据摘要的对比中发现不一致则表明数据遭到了篡改,则进一步包含步骤5)定位篡改的数据,其中在单条记录摘要模块生成所使用数据对应的单条记录的数字摘要fi’,从存储系统取出前面所生成的布隆过滤器,使用摘要对比模块将单条记录的数字摘要fi’到布隆过滤器中进行查找匹配,直到发现不匹配的记录即为被篡改的记录。优选地,所述数据存储系统为分布式系统。另外,在一个实施方案中,全量数据摘要生成算法为sha-256算法或者md5算法。进一步,单条记录摘要生成算法为简单的哈希算法或者与全量数据摘要模块相同的算法,其中每一条记录的数字摘要都传递给摘要合并模块进行摘要的合并。

本发明也公开了一种适用于区块链的海量数据摘要生成方法,其特征在于,所述方法包括如下步骤:步骤1)对原始数据集进行全量数据摘要生成,其中使用数据摘要算法对原始数据集生成一个全量的数据摘要e作为全量数据的整体摘要并进行存储;步骤2)对单条记录生成单条记录的摘要,其中使用数据摘要算法针对每一条记录生成其数字摘要作为单条记录的数字摘要fi并进行存储,其中i为数据集中具体单条记录的编号;步骤3)对所有单条记录的摘要进行合并,其中将针对每一条记录所生成的单条记录的数字摘要散列到一个或者多个布隆过滤器中,最终生成一个或多个布隆过滤器并进行存储;步骤4)判断数据是否被篡改,其中在使用数据的过程中,首先使用数据摘要算法计算所使用全量数据的摘要信息获得相应的全量的数据摘要e’,取出前面所生成的全量数据摘要e进行对比,如果一致则表明数据未经篡改,可以直接使用。进一步,如果在全量数据摘要的对比中发现不一致则表明数据遭到了篡改,则进一步包含步骤5)定位篡改的数据,其中使用数据摘要算法生成所使用数据对应的单条记录的数字摘要fi’,取出存储的前面所生成的布隆过滤器,将单条记录的数字摘要fi’到布隆过滤器中进行查找匹配,直到发现不匹配的记录即为被篡改的记录。其中,所述存储过程使用分布式系统。在一个实施方案中,全量数据摘要生成所使用的算法为sha-256算法或者md5算法。另外,单条记录摘要生成所使用的算法为简单的哈希算法或者与全量数据摘要算法相同的算法,其中所生成的每一条记录的数字摘要都进行摘要的合并。

本发明给出了一种适用于区块链的快速防篡改的数据摘要生成系统,利用该系统可以快速发现数据是否遭到篡改,同时在数据遭到篡改的情况下可以快速定位到被篡改的具体数据内容,并且由于不用存储全量的原始数据或者每条数据的摘要信息,大大减少了存储的数据量,使得该系统可以将摘要信息存储于区块链这种分布式防篡改的数据存储系统中,极大地提升了数据的安全性和可信度。

附图说明

图1是本发明使用的方法流程的示意图。

具体实施方式

本发明旨在给出一种适用于区块链的快速防篡改的数据摘要生成方法,可以快速的发现数据是否被篡改,同时在数据被篡改时可以快速定位到被篡改的具体数据,而无需存储全量的数据或每条数据的单独摘要。如今传统的数据摘要技术在数据发生被篡改时,无法在没有原始数据的情况下定位到具体的被篡改内容,而原始数据的存储往往会占用大量的存储资源,无法存在区块链中,并且对原始数据的全量比对将耗费大量的计算资源,性能比较低。

本发明的技术方案大致描述如下:

一种适用于区块链的快速防篡改的数据摘要生成系统,所述系统包括数据存储系统、全量数据摘要模块、单条记录摘要模块、摘要合并模块、摘要对比模块,数据存储系统用于存储原始数据集,全量数据摘要模块用于生成全量数据的整体摘要,单条记录摘要模块用于生成单条记录的摘要,摘要合并模块用于将所有单条记录的摘要进行合并,摘要对比模块用于发现数据是否被篡改,其特征在于,所述系统执行以下操作:步骤1)对原始数据集进行全量数据摘要生成,其中全量数据摘要模块生成一个全量的数据摘要e,其中可以使用sha-256算法或者md5等算法进行摘要生成,生成的摘要可以记录在区块链这种分布式防篡改系统中;步骤2)再通过单条记录摘要模块针对每一条记录生成其数字摘要,其可以使用简单的哈希算法或者与全量数据摘要模块相同的算法,然后每一条记录的数字摘要都会传递给摘要合并模块进行摘要的合并;步骤3)将每一条记录的数字摘要传递给摘要合并模块,摘要合并模块会将单条记录的数字摘要散列到一个或者多个布隆过滤器中,最终生成一个或多个布隆过滤器,这些布隆过滤器也可以记录在区块链中,至此数据的摘要生成过程完成;步骤4)使用数据的过程中,首先使用全量数据摘要模块计算全量数据的摘要信息,将计算结果与区块链中存储的全量数据摘要信息进行对比,如果一致则表明数据未经篡改,可以直接使用。步骤5)假如上一步中全量数据摘要不一致则表明数据遭到了篡改,此时使用摘要对比模块将数据中的每一条记录到布隆过滤器中进行查找匹配,直到发现不匹配的记录即为被篡改的记录。

为了使数据摘要技术与区块链技术相结合,我们提出一套数据摘要技术方法,具体步骤如下:

首先我们拥有一个原始的数据集t,假设t的记录数为n条,此时我们需要对t进行整体摘要计算,算法为m(t),m()为摘要算法,可选算法有md5、sha-256等;

此时我们先要通过摘要算法生成全量数据的数字摘要e,然后将该数字摘要e存储于区块链中

e=m(t)

然后我们再通过数据摘要模块对每一条记录生成一个数字摘要fi,其中i为第i条记录,s()为摘要算法,可选算法有md5、sha-256等,datai为第i条记录本身,即

fi=s(datai)

接着我们将每一条记录的摘要fi都传递给摘要合并模块进行摘要的合并,摘要合并模块使用布隆过滤器算法bloom()来映射每一条记录的摘要,最终生成一个布隆过滤器bf,其中fi为第i条记录的摘要,n为记录数,即

bf=bloom(f1,f2,…fi,…fn)

此时我们已经完成了数据摘要的生成,可以将e以及bf存储在区块链中,在用户使用数据时进行数据核对。

当用户需要使用数据时,其首先获取到全量的数据t’,通过数据摘要模块对全量数据进行摘要计算,得到该份数据的全量摘要e’,即

e’=m(t’)

得到全量摘要e’后将该摘要与区块链中存储的原始数据摘要e进行比对,如果相同则表明数据未遭篡改,可以使用,如果不同则表明数据遭到了篡改,需要继续定位具体的篡改内容。

从区块链中把存储的布隆过滤器bf取出,将数据集t’中的每一条数据datai’通过数据摘要模块生成摘要fi’,然后将fi’到布隆过滤器bf中进行查找匹配,直到找到不匹配的记录,即为被篡改的数据记录。

对于未被篡改的数据集只需要一次全量数据摘要的计算和比对即可得出结果,而结果为被篡改的情况下,只需要将每条记录的摘要信息到布隆过滤器中进行查找即可定位到被篡改的内容,既降低了数据存储量又提升了定位的速度。

现在将参照本文的技术方案对其实施方式进行详细描述。为了将其思想传达给本领域的普通技术人员,提供此后引入的这些实施方式作为案例。因此,这些实施方式可以以不同的形式实施,从而并不限于这里所述的这些实施方式。而且,在任何可能的地方,在整个说明书和附图中将使用相同的附图标记表示相同或相似的部件。

图1是根据本文提出的技术方案实现的一种摘要生成与比对流程,在该流程中,我们拥有存储原始与传播的数据集的数据存储系统,还有一个摘要生成模块,有一个摘要合并模块,同时还有一个摘要对比模块,另外还有一个区块链存储模块。

首先我们会有一个需要进行摘要的原始数据集文件存储在数据存储系统中,该系统可以为分布式文件系统例如hdfs等,可以为普通的单机文件系统,可以为远程文件系统例如ftp等。

为了快速判断整个文件是否存在篡改操作,我们需要对原始数据文件进行数据摘要处理,此时我们将通过摘要生成模块对原始数据文件生成一个整体的数字摘要e,具体的摘要生成算法由摘要生成模块去实现,摘要生成算法可以使用各种哈希算法进行计算,例如使用crc算法、sha算法、md5算法等等,通过数据摘要算法生成整个文件的数字摘要e,该摘要e生成以后我们将把该摘要存储在区块链中,防止恶意用户对摘要e的篡改。

至此我们已经完成了对原始数据集文件的数字摘要生成过程,接下来我们将对数据集中的每一条记录进行数字摘要生成处理,可以在后续数据被篡改的情况下快速定位到被篡改的数据内容。

我们需要通过摘要生成模块对原始数据集中的每一条数据进行摘要计算,生成每一条数据的数字摘要fi,具体的摘要算法由摘要生成模块去实现,摘要生成算法可以使用各种哈希算法进行计算,例如使用crc算法、sha算法、md5算法等等,通过数据摘要算法生成每一条记录的数字摘要fi,这些摘要生成以后会传递给摘要合并模块进行摘要的合并,降低存储的空间占用。

摘要合并模块会依次收到每一条记录的数字摘要fi,此时摘要合并模块会根据数据量的大小生成大小不一的布隆过滤器,布隆过滤器的大小根据数据量的大小不同而有所差异,目的是为了保证将误判概率降到可以接受的范围,同时一般情况下会生成多个布隆过滤器,每个布隆过滤器采用不同的哈希算法去散列摘要,目的也是为了保证将误判概率降到最低。当所有记录的数字摘要都被摘要合并模块进行合并之后,我们将所有的布隆过滤器存储在区块链中,防止恶意用户对布隆过滤器进行篡改。

目前为止我们已经完成了原始数据的整体摘要生成以及每一条记录的摘要生成和合并,并且存储在了区块链中,接下来本文将描述数据使用的处理过程。

当我们获取到一份已经在区块链中声名过的数据集时,为了验证获取到的数据集未被恶意篡改,我们会从区块链中取出数据集的整体数字摘要e,然后我们会通过摘要生成模块对数据集进行整体摘要计算,得到一个新的整体数字摘要e’,接下来将e’与我们从区块链中获取的摘要e进行比对,如果相等则表示记录集未遭恶意篡改,可以直接使用。如果发现e和e’不相同,则表明数据集遭到了恶意篡改,我们需要判断具体篡改了哪些记录。

这时我们从区块链中取出数据集对应的布隆过滤器,然后我们通过摘要生成模块依次对记录集中的每一条记录进行摘要计算,得到每一条记录的数字摘要fi’,接着我们通过摘要对比模块对fi’于布隆过滤器进行对比查找,如果在布隆过滤器中可以查找到这条记录的数字摘要,则表明这条记录未遭恶意篡改,我们将继续下一条记录的对比,而如果我们在布隆过滤器中无法查找到这条记录的数字摘要,则表明这条记录遭到了恶意篡改,此时我们应该把遭到篡改的记录存储下来,后续作为篡改证据交给数据提供者进行处理。

至此整个数据的数据摘要生成过程以及数据使用过程中的验证过程全部完成。

上面结合附图对本发明的实施方式作了详细的说明,但是本发明不限于上述实施方式,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。

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