CN109063513A - 一种基于Hadoop平台的动态数据完整性验证方法 - Google Patents

一种基于Hadoop平台的动态数据完整性验证方法 Download PDF

Info

Publication number
CN109063513A
CN109063513A CN201810635131.5A CN201810635131A CN109063513A CN 109063513 A CN109063513 A CN 109063513A CN 201810635131 A CN201810635131 A CN 201810635131A CN 109063513 A CN109063513 A CN 109063513A
Authority
CN
China
Prior art keywords
data
hadoop platform
blocks
files
file
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.)
Granted
Application number
CN201810635131.5A
Other languages
English (en)
Other versions
CN109063513B (zh
Inventor
尚涛
陈星月
庄浩霖
杨英
赵铮
刘建伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beihang University
Original Assignee
Beihang University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beihang University filed Critical Beihang University
Priority to CN201810635131.5A priority Critical patent/CN109063513B/zh
Publication of CN109063513A publication Critical patent/CN109063513A/zh
Application granted granted Critical
Publication of CN109063513B publication Critical patent/CN109063513B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures

Abstract

本发明公开一种基于Hadoop平台的动态数据完整性验证方法、1、构建系统模型;2、数据拥有者产生一对密钥,包括私钥与公钥;3、数据拥有者将文件分块,为每个文件块生成文件块标签,将公钥(g,N)、文件块标签与文件上传至Hadoop平台;数据拥有者将公钥(g,N)与文件块标签发送给审计者;4、审计者生成挑战值,并发送给Hadoop平台;5、Hadoop平台根据挑战值生成证明值,并发送给审计者;6、审计者检查证明值,并将审计报告返回给数据拥有者;7、数据拥有者远程地对Hadoop平台上的数据进行更新,步骤7结束后,跳转到步骤4,重复执行步骤4至步骤6。本发明节省了文件传输的通信开销,提高了数据完整性验证的效率。

Description

一种基于Hadoop平台的动态数据完整性验证方法
技术领域
本发明涉及一种基于Hadoop平台的动态数据完整性验证方法,属于网络 安全技术领域。
背景技术
随着大数据远程存储技术的出现和发展,如何保护远程数据的完整性成为 当前大数据技术面临的重大挑战。数据完整性验证作为一种数据保护技术,能 够在本地无数据备份的情况下远程地对数据进行完整性验证。Hadoop平台是当 前最为通用的开源大数据平台,研究适用于Hadoop平台的远程数据完整性验 证方法,有利于保护大数据安全,促进大数据技术的应用。
远程数据完整性验证在2008年被提出,此后众多学者陆续研发出许多远程 数据完整性验证方案。Ateniese等人提出了第一个远程数据完整性验证方案, 该方案适用于单个服务器中静态数据完整性验证,随后,他们将方案改进为可 支持对追加操作的数据完整性验证。Juels等人提出了可恢复数据完整性验证方 案。该方案不仅能够验证远程数据的完整性,当数据遭到损坏时还可以以一定 的概率恢复数据。Erway等人提出第一个支持全动态操作的远程数据审计方案。 在该方案中,用户不用下载数据,可以远程地对数据进行插入、删除、修改、 追加等动态操作。Wang等人提出一个有第三方审计者的存储安全模型,第三方 审计者代替数据拥有者对存储在服务器中的数据进行完整性验证,在数据完整 性验证过程中,利用同态密钥随机掩码技术保证第三方审计者不能获得任何有 用信息。Wang等人又提出一个数据完整性验证方案,使用Merkle哈希树来实 现高效的动态数据完整性验证。针对Hadoop平台,Zhu等人提出一种协作的 数据完整性验证方案来验证分布式存储中数据的完整性。通过实验证明当有多 个服务器共同存储用户数据时,使用该方案,用户进行数据完整性验证所需计 算量和通信量非常少。该方案实现了对Hadoop平台中静态数据的完整性验证。
在当前Hadoop平台中的远程数据完整性验证方案中,远程静态数据完整 性验证被大量研究和普遍应用。但是,这些远程数据完整性验证方案存在一个 主要问题:无法对Hadoop平台上的动态数据进行远程完整性验证。目前缺少 Hadoop平台中动态数据完整性验证方法。
研究Hadoop平台上的动态数据完整性验证方法,着重于Hadoop平台中 数据的动态操作,包括插入、追加、修改、删除,设计方案验证Hadoop平台 中动态数据的完整性,并将其实施于Hadoop平台中,保证动态数据完整性验 证的效率与安全性。
发明内容
本发明的技术解决问题:在动态数据完整性验证中,需要将文件分割为多 个数据块,文件中的单个数据块可以在不下载整个文件的情况下进行更新。单 个文件块进行更新,要求文件系统本身支持随机读写,并支持在文件的任何位 置进行插入、删除、修改操作。但是Hadoop平台中的文件系统HDFS不支持 随机读写,只支持文件追加操作。针对Hadoop平台现有缺陷,提供一种基于 Hadoop平台的动态数据完整性验证方法,支持对插入、追加、删除、修改操 作的完整性验证,以解决Hadoop平台中动态数据完整性验证的问题。
本发明采取的技术方案是:一种基于Hadoop平台的动态数据完整性验证方 法,它包含以下步骤,如图1所示。
步骤1:构建系统模型,共包括4个实体,包括Hadoop平台、数据拥有者、 数据使用者和审计者,系统模型如图2所示。Hadoop平台提供存储服务;数 据拥有者将数据存储在Hadoop平台上,并授权给数据使用者使用;数据拥有 者授权审计者对文件进行完整性验证,审计者定期对数据进行完整性验证;数 据拥有者与数据使用者可随时向审计者请求返回数据完整性验证报告。
步骤2:数据拥有者产生一对密钥,包括私钥与公钥。数据拥有者选择两个 安全质数p,q,p=2p'+1,q=2q'+1,p',q'为两个质数。数据拥有者计算N=p*q。 设QRN是模N的乘法循环群,数据拥有者选择QRN的一个生成元g,(p,q)为 私钥,(g,N)为公钥。
步骤3:数据拥有者将文件分块,使用步骤2产生的公钥(g,N)为每个文件 块生成文件块标签,将公钥(g,N)、文件块标签与文件上传至Hadoop平台。然 后,数据拥有者将公钥(g,N)与文件块标签发送给审计者。
数据拥有者选择文件F,将文件划分为n个大小相同的文件块, 设F=[m1,m2,...,mn]。数据拥有者初始化数据块索引表,然后使用步骤2产生的 公钥(g,N)为每个文件块mi,i∈[1,...,n]计算文件块标签T(ti),
计算公式为ti=mi||Ri||Li||Vi,Ri,Li,Vi表示数据块索引表中每 个文件块mi关联的物理索引、逻辑索引、版本信息,||为字符串连接符号。计 算完所有文件块的标签后,数据拥有者将n个文件块与n个文件块标签上传到 Hadoop平台,然后,数据拥有者将公钥(g,N)与文件块标签发送给审计者。
步骤4:审计者生成挑战值,并将挑战值发送给Hadoop平台。
数据拥有者授权审计者验证文件完整性,并请求返回结果。首先,审计者 选择一个随机密钥r和一个随机的群元素s∈ZN\{0},ZN\{0}表示小于N的正 整数集合。然后,审计者根据步骤3里得到的公钥(g,N)计算文件挑战信息gs, gs=gsmodN。设挑战值为chal,审计者将挑战值chal=<r,gs>发送给Hadoop 平台。
步骤5:Hadoop平台根据步骤4中审计者发送的挑战值生成证明值,并将 证明值发送给审计者。
Hadoop平台接收步骤4中审计者发送的挑战值chal=<r,gs>后,根据挑战 值中的r调用函数f(r,n)得到一串随机数[a1,a2,...an],f(r,n)是一个生成一串随 机数的函数,输入r为步骤4中生成挑战值的一部分,输入n为文件数据块的 个数。Hadoop平台根据步骤3中得到的公钥(g,N)中的N与步骤4中得到的文 件挑战信息gs计算证明值R,Hadoop平台将证明值R发送 给审计者。
步骤6:审计者检查步骤5中Hadoop平台生成的证明值,并将审计报告返 回给数据拥有者。
审计者接收到步骤5中Hadoop平台发送的证明值R之后,也调用步骤5 中Hadoop平台使用的随机数生成函数f(r,n),得到一串与步骤5中相同的随机 数[a1,a2,...an]。首先,审计者使用步骤3里得到的公钥(g,N)与所有文件块标签, 计算一个中间值P,其中T(ti)为第i个文件块标签, ai为第i个随机数。然后,审计者使用计算出的中间值P、步骤4里生成的挑 战值<s,gs>中的s与步骤3中得到的公钥(g,N)中的N计算验证值R', R'=Ps mod N。最后,审计者判断计算出的验证值R'是否与步骤5中生成的证 明值R相等。如果R'与R相等,输出“成功”,继续执行步骤7,反之,输出“失败”,执行结束。审计者将结果返回给数据拥有者。
步骤7:数据拥有者远程地对Hadoop平台上的数据进行更新。数据更新一 共包括四种操作:插入、追加、修改、删除。数据拥有者可以对单个文件块进 行这四种操作。每种操作对应不同的更新算法。
当数据拥有者进行插入操作时,即数据拥有者在当前文件中插入一个新的 数据块,数据拥有者执行插入操作更新算法,执行步骤7.1,包括以下步骤:
步骤7.1.1:在数据块索引表中定位插入数据块的位置;
步骤7.1.2:在数据块索引表末尾中增加新的一行;
步骤7.1.3:修改数据块索引表中受增加行影响的数据;
步骤7.1.4:对插入的文件块生成文件块标签;
步骤7.1.5:将新的数据块追加至文件末尾;
步骤7.1.6:准备好更新的信息,包括新的文件块、文件插入位置、文件 块标签,然后发送给Hadoop平台。
当数据拥有者进行追加操作时,即数据拥有者在当前文件末尾追加一个新 的数据块,数据拥有者执行追加操作更新算法,执行步骤7.2,包括以下步骤:
步骤7.2.1:在数据块索引表中定位追加数据块的位置;
步骤7.2.2:在数据块索引表末尾中增加新的一行;
步骤7.2.3:修改数据块索引表中受增加行影响的数据;
步骤7.2.4:对追加的文件块生成文件块标签;
步骤7.2.5:将新的数据块追加至文件末尾;
步骤7.2.6:准备好更新的信息,包括新的文件块、文件块标签,然后发 送给Hadoop平台。
当数据拥有者进行修改操作时,即数据拥有者在当前文件中修改一个数据 块,数据拥有者执行修改操作更新算法,执行步骤7.3,包括以下步骤:
步骤7.3.1:在数据块索引表中定位修改数据块的位置;
步骤7.3.2:在数据块索引表末尾中增加新的一行;
步骤7.3.3:对修改的文件块生成文件块标签;
步骤7.3.4:将新的数据块追加至文件末尾;
步骤7.3.5:准备好更新的信息,包括新的文件块、文件修改位置,然后 发送给Hadoop平台。
当数据拥有者进行删除操作时,即数据拥有者在当前文件中删除一个数据 块,数据拥有者执行删除操作更新算法,执行步骤7.4,包括以下步骤:
步骤7.4.1:在数据块索引表中定位删除数据块的位置;
步骤7.4.2:在数据块索引表末尾增加一行;
步骤7.4.3:准备好更新的信息,包括数据块删除位置,然后发送给 Hadoop平台。
步骤7结束后,跳转到步骤4,重复执行步骤4至步骤6。
本发明与现有技术相比的优点在于:
现有技术只能实现Hadoop平台上静态数据的验证,当用户对Hadoop平 台上存储的数据进行更新时,必须从Hadoop平台上下载整个文件到本地,进 行更新后再上传到Hadoop平台。本发明实现了对Hadoop平台上的动态数据 完整性验证,即用户对数据进行更新时,不用将整个文件从Hadoop平台下载 到本地,就可对Hadoop平台上的文件进行更新,节省了文件传输的通信开销, 提高了数据完整性验证的效率。
附图说明
图1为本发明的系统流程图。
图2为本发明的系统模型示意图。
图3为本发明的关于插入操作的更新算法示意图。
图4为本发明的关于追加操作的更新算法示意图。
图5为本发明的关于修改操作的更新算法示意图。
图6为本发明的关于删除操作的更新算法示意图。
图中符号说明如下:
RI表示数据块的物理位置;
LI表示数据块的逻辑位置;
VI表示数据块的版本信息。
具体实施方式
本发明具体方法如下:
步骤1:构建系统模型,共包括4个实体,包括Hadoop平台、数据拥有者、 数据使用者和审计者,系统模型如图2所示,Hadoop平台提供存储服务;数 据拥有者将数据存储在Hadoop平台上,并授权给数据使用者使用;数据拥有 者授权审计者对文件进行完整性验证,审计者定期对数据进行完整性验证;数 据拥有者与数据使用者可随时向审计者请求返回完整性验证的报告。
审计者作为可信第三方,如实地向数据拥有者和数据使用者返回数据完整 性验证报告。数据存储在Hadoop平台上,可能受到恶意攻击者的篡改,所以 对数据进行完整性验证非常必要。数据拥有者授权第三方对数据进行验证,具 有如下两个优点:第一,数据拥有者不用消耗存储与计算资源验证数据的完整 性。第二,审计者作为中立的第三方,可以避免Hadoop平台与数据拥有者伪 造验证报告。
步骤2:数据拥有者产生一对密钥,包括私钥与公钥。数据拥有者选择两个 安全质数p,q,p=2p'+1,q=2q'+1。p',q'为两个质数。数据拥有者计算N=p*q。 设QRN是模N的乘法循环群,数据拥有者选择QRN的一个生成元g,(p,q)为 私钥,(g,N)为公钥。
安全质数是满足2m+1形式的一类数,m为质数。之所以叫“安全”质数, 是因为它们在加密算法中的运用:某些因子分解的算法的计算时间部份取决于 被分解数的质因子减去1的因子大小,而若被分解的数以一个安全质数2m+1作 为因子,那么此质数减去1有一个大质数m作为因子,计算时间将会变多。为 了保证安全性,二进制的N一般为1024位。
步骤3:数据拥有者将文件分块,使用步骤2产生的公钥(g,N)为每个文件 块生成文件块标签。数据拥有者选择文件F,将文件划分为n个大小相同的文 件块,最后一个文件块大小不足末尾补0。设F=[m1,m2,...,mn],mi表示文件中 第i个数据块。数据拥有者初始化数据块索引表,然后使用步骤2产生的公钥 (g,N)为每个文件块mi,i∈[1,...,n]计算文件块标签T(ti),
计算公式为ti=mi||Ri||Li||Vi,Ri,Li,Vi表示数据块索引表中每 个文件块mi关联的物理索引、逻辑索引、版本信息,||为字符串连接符号。数 据拥有者先将数据块mi,物理索引Ri,逻辑索引Li,版本信息Vi连接成ti, 然后使用步骤2产生的公钥(g,N)为每个文件块计算文件块标签数据拥有者计算完所有文件块的标签后,将n个文件块与n个文件块标签上传 至Hadoop平台。然后,数据拥有者将公钥(g,N)与n个文件块标签发送给审计
将文件划分成文件块,每个文件块取值通常为4KB、16KB、32KB或者64KB。此处计算文件块标签,用到了密码学原理,大整数因子分解的困难问题, 即给出两个大质数,很容易就能将它们两个相乘,但是给出它们的乘积,找出 质数因子就非常困难。此处计算文件块标签,利用步骤2里由质数p,q相乘得到 的大整数N。由p,q得到N非常容易,但是由N计算p,q非常困难。基于这个原 理,本发明采用标签生成算法由大整数因子分解的困难问题保 证该标签生成算法的安全性。
数据块索引表存储有每个文件块关联的物理索引、逻辑索引、版本信息, 当数据拥有者初始化数据块索引表时,物理索引初始化为数据块在文件中的顺 序值,第i个文件块的物理索引为i,逻辑索引也初始化为数据块在文件中的顺 序值,第i个文件块的逻辑索引也为i,版本信息初始化为1。
步骤4:审计者生成挑战值,并将挑战值发送给Hadoop平台。数据拥有者 授权审计者验证文件完整性,审计者定期审计数据,数据拥有者可随时向审 计者请求文件验证结果。首先,审计者选择一个随机密钥r和一个随机的群元 素s∈ZN\{0}。ZN\{0}表示小于N的正整数集合。然后,审计者根据步骤3里 得到的公钥(g,N)与随机群元素s计算文件挑战信息gs,gs=gs mod N。设挑战 值为chal,挑战值包括两部分,一个随机密钥r与通过一个随机的群元素s计 算出的文件挑战信息gs。随后,审计者将挑战值chal=<r,gs>发送给Hadoop平 台。
为了保证远程数据验证方案的安全性,审计者每次生成的挑战值必须是不同 的,否则在步骤5中Hadoop平台可以篡改数据,并根据之前的生成的证明值 来应答审计者的挑战值。为了保证每次生成的挑战值不同,审计者每次需要随 机选择一个随机的群元素s∈ZN\{0}来生成挑战值。审计者选择的随机密钥r则 是为了步骤5、6中生成验证过程的一串随机数。在验证过程中,这串随机数与 数据块的值相乘,可防止审计者通过证明值获取到数据块的值。
步骤5:Hadoop平台根据步骤4中审计者发送的挑战值来生成证明值,并 将证明值发送给审计者。Hadoop平台接收步骤4中审计者发送的挑战值chal=<r,gs>后,调用函数f(r,n)得到一串随机数[a1,a2,...an],f(r,n)是一个生 成一串随机数的函数,输入r为步骤4中生成挑战值的一部分,输入n为文件 数据块的个数。函数f(r,n)输出n个随机数,当r,n唯一,输出的随机数串唯一, f(r,n)是一个公开的函数。Hadoop平台根据步骤3得到的公钥(g,N)中的N与步 骤4中得到的gs计算证明值R,计算完证明值后,Hadoop 平台将证明值R发送给审计者。
Hadoop平台与审计者持有相同的随机数生成函数,当输入相同的密钥r, 与相同的整数n时,生成相同的随机数串。在这个步骤中,Hadoop平台根据 挑战值与存储在平台中的数据块来生成一个证明值,如果Hadoop平台试图使 用之前的证明值应答审计者生成的挑战值,或者数据的完整性被破坏,那么在 步骤6中,审计者将输出“失败”。在本步骤中,证明值R是一个跟步骤2中产 生的公钥(g,N)中的N位数相同的字符串,利用这个字符串,可以验证一个文件 的完整性,相比与下载整个文件来验证完整性,此方法节省了通信资源,提高 了验证效率。
步骤6:审计者检查步骤5中Hadoop平台生成的证明值,并将审计报告返 回给数据拥有者。审计者接收到步骤5中Hadoop平台发送的证明值R之后, 也调用步骤5中Hadoop平台使用的随机数生成函数f(r,n),得到一串与步骤5 中相同的随机数[a1,a2,...an]。首先,审计者使用步骤3里得到的公钥(g,N)与所有 文件块标签,计算一个中间值P,其中T(ti)为第i个 文件块标签,ai为第i个随机数。然后,审计者使用计算出的中间值P、步骤 4里生成的挑战值<s,gs>中的s与步骤3中得到的公钥(g,N)中的N计算验证 值R',R'=PsmodN。最后,审计者判断计算出的R'是否与步骤5中生成的R 相等。如果R'与R相等,输出“成功”,继续执行步骤7,反之,输出“失败”, 执行结束。审计者将结果返回给数据拥有者。
在步骤6中,审计者首先根据文件块标签与一串随机数生成P,然后计算 最后的验证值R'。在步骤5中,Hadoop平台根据数据块的值生成证明值R。 如果文件完整性被破坏,那么,步骤5中Hadoop平台中通过文件块计算出的 证明值R与步骤6中审计者计算出的验证值R'不相等。审计者根据Hadoop 平台生成的证明值如实地生成审计报告,如果Hadoop平台中的文件被篡改或 者丢失,审计者输出“失败”,如果Hadoop平台中的文件完整,审计者输出“成 功”。
步骤7:数据拥有者远程地对Hadoop平台上的数据进行更新。数据更新一 共包括四种操作,插入、追加、修改、删除。数据拥有者可以对单个文件块进 行这四种操作。每种操作有对应的更新算法。当数据拥有者进行步骤7的数据 更新之后,步骤7结束后,跳转到步骤4,重复执行步骤4至步骤6,验证更新 后的数据完整性。
数据动态更新是数据完整性验证的一个重要方面,允许数据拥有者更新数 据,并且不需要下载数据修改后上传。由于Hadoop平台中的HDFS不支持随 机写入的操作,只支持文件追加操作,本发明在HDFS文件系统的基础上进行 设计,使其支持在文件任意位置的读写操作,从而支持动态数据的完整性验证。 本发明引入了一种数据结构——数据块索引表,来记录动态更新的相关信息。
数据块索引表记录了每个数据块的信息,包括三个部分:
(1)RI(Real index):表示数据块的实际位置
(2)LI(Logic index):表示数据块的逻辑位置
(3)VI(Version information):表示数据块的版本信息。
在数据块索引表中,每个数据块都有自己的物理位置和逻辑位置,以及版本 信息。初始化时,数据拥有者构建一个数据块索引表,每个数据块的物理位置 与逻辑位置相同。当存储的数据被更新时,数据块索引表也进行更新,而这个 数据块索引表是由数据拥有者本身或授权给审计者来维护的。假设数据拥有者 将文件分块并计算所有文件块标签。然后,数据拥有者将这些块和标签发送到 Hadoop平台。如果想要更新数据,数据拥有者必须执行更新算法。数据更新包 括插入、追加、修改、删除操作。下面将具体展示针对四种操作的更新算法。
(1)数据插入
假设文件F共有Fn个数据块,文件F对应一个数据块索引表,那么数 据块索引表共有Fn行。在文件的第i-th个数据块后插入新的数据块m*,在 数据块索引表中,m*的实际索引值为R*,逻辑索引值为L*,版本信息为V*, 更新步骤如下:
步骤1:在数据块索引表中定位与第i个数据块关联的一行;
步骤2:在数据块索引表末尾中增加一行,R*等于N+1,L*等于i+1,V*等于1;
步骤3:在数据块索引表中,修改受新增行影响的数据,LI大于等于L*的 行,LI加1;
步骤4:对插入的文件块生成文件块标签
步骤5:将新的数据块追加至文件末尾;
步骤6:准备好更新的信息,包括新的文件块、文件插入位置、文件块标 签,然后发送给Hadoop平台。
采用一个示例说明如何对数据块索引表进行更新。如图3所示,在LI=2的 数据块后插入新的数据块,此数据块的实际位置位于文件末尾,数据块索引 表增加一行,RI为5,LI为3,VI为1。对于RI为3的数据块,LI加1,变 为4,对于RI为4的数据块,LI加1,变为5。
(2)数据追加
假设文件F共有Fn个数据块,文件F对应一个数据块索引表,那么数 据块索引表共有Fn行。在文件的第i-th个数据块后追加新的数据块m*,在数 据块索引表中,m*的实际索引值为R*,逻辑索引值为L*,版本信息为V*
更新步骤如下:
步骤1:在数据块索引表中定位与第i个数据块关联的一行;
步骤2:在数据块索引表中末尾增加一行,R*等于i+1,L*等于i+1,V*等 于1;
步骤3:在数据块索引表中,修改受增加行影响的数据,LI大于等于L*的 行,LI加1;
步骤4:对追加的文件块生成文件块标签
步骤5:将新的数据块追加至文件末尾;
步骤6:准备好更新的信息,包括新的文件块、文件块标签,然后发送给 Hadoop平台。
采用一个示例说明如何对数据块索引表进行更新。如图4所示,在文件末 尾追加数据块,数据块索引表增加一行,RI为6,LI为6,VI为1,其他 部分不变。
(3)数据修改
假设文件F共有Fn个数据块,文件F对应一个数据块索引表,那么数 据块索引表共有Fn行。修改文件中的第i-th个数据块,原有数据块m修改 后为新的数据块m*,向文件末尾追加新的数据块m*,在数据块索引表中,原 有数据块m的实际索引值为R,逻辑索引值为L,版本信息为V,m*的实际 索引值为R*,逻辑索引值为L*,版本信息为V*。
更新步骤如下:
步骤1:在数据块索引表中定位与第i个数据块关联的一行;
步骤2:在数据块索引表末尾中增加一行,R*等于N+1,L*等于L,V*等于V加1;
步骤3:对修改的文件块生成文件块标签
步骤4:将新的数据块追加至文件末尾;
步骤5:准备好更新的信息,包括新的文件块、文件修改位置,然后发送 给Hadoop平台。
采用一个示例说明如何对数据块索引表进行更新。如图5所示,修改LI=5 的数据块,向文件末尾追加新的数据块,数据块索引表增加一行,原有数据 块,RI为4,LI为5,VI为1,新增数据块RI为7,LI不变,VI加1变成 2。
(4)数据删除
假设文件F共有Fn个数据块,文件F对应一个数据块索引表,那么数 据块索引表共有Fn行。删除文件中的第i-th个数据块,在数据块索引表中, 原有数据块m的实际索引值为R,逻辑索引值为L,版本信息为V,m*的 实际索引值为R*,逻辑索引值为L*,版本信息为V*。
更新步骤如下:
步骤1:在数据块索引表中定位与第i个数据块关联的一行;
步骤2:在数据块索引表末尾增加一行,R*等于R,L*等于L,V*等 于-1;
步骤3:准备好更新的信息,包括数据块删除位置,然后发送给Hadoop 平台。
采用一个示例说明如何对数据块索引表进行更新。如图6所示,删除 LI=3的数据块。数据块索引表此行进行修改,VI由1变成-1。
下面分析一下方案的存储开销、通信开销、计算开销与数据动态更新操 作的复杂度。
首先分析方案的存储开销。因为文件块标签在步骤3中被公开,文件块 标签可以存储在数据拥有者、审计者或者Hadoop平台处。文件块标签的存 储开销的上限为n|N比特,n表示数据块的个数。如果文件块标签存储在 Hadoop平台处,当进行验证时,审计者需要从Hadoop平台处取回文件块标 签,将产生通信开销O(n),如果文件块标签存储在审计者处,将产生O(n)的 存储开销,但是不需要审计者与Hadoop平台间产生通信开销。
通信开销发生在步骤3与步骤4。在步骤3中,从审计者到Hadoop平台 之间的通信量为O(1)。在步骤4中,从Hadoop平台到审计者的通信量为O(1)。 总的通信代价为O(1)。
计算开销包括步骤3中数据拥有者计算文件标签的开销、步骤5中 Hadoop平台生成证明值的开销、与步骤6中审计者进行验证的开销三部分。 数据拥有者产生密钥,对文件进行分块处理,然后计算每个文件块的标签。 计算文件块的标签使用模幂运算,复杂度为O(log n)。在Hadoop平台生成 证明值的过程中,Hadoop平台计算此处包括n次乘法、n-1 次加法、1次模幂运算,复杂度为O(n)。审计者计算与R'=PsmodN。此处包括n+1次模幂运算,n-1次乘法,1次模运算,复杂 度为O(n)。
最后分析数据动态更新操作的复杂度。数据块索引表存储在数据拥有者 处,当文件未进行更新时,设文件有n个数据块,数据块索引表的长度为 O(n)。当进行插入、追加、修改、删除等操作时,数据块索引表末尾增加一 行。当进行删除操作时,数据块索引表内容修改,长度不变。当进行数据插 入、追加、删除操作时,由于都是在文件末尾追加内容,操作文件复杂度为 O(1),对数据块索引表操作的复杂度为O(1)。当进行数据删除操作时,不需 要对文件进行操作,对数据块索引表操作的复杂度为O(1)。
通过以上分析,可以看出,本发明的存储开销、通信开销、计算开销小, 并且动态更新的复杂度低。
以上所述仅是本发明一种基于Hadoop平台的动态数据完整性验证方法优 选的实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本 发明一种基于Hadoop平台的动态数据完整性验证方法原理的前提下,还可以 做出若干改进和润饰,这些改进和润饰也应视为本发明一种基于Hadoop平台 的动态数据完整性验证方法的保护范围。

Claims (9)

1.一种基于Hadoop平台的动态数据完整性验证方法,其特征在于:该方法包含以下步骤:
步骤1:构建系统模型,共包括4个实体,包括Hadoop平台、数据拥有者、数据使用者和审计者;Hadoop平台提供存储服务;数据拥有者将数据存储在Hadoop平台上,并授权给数据使用者使用;数据拥有者授权审计者对文件进行完整性验证,审计者定期对数据进行完整性验证;数据拥有者与数据使用者可随时向审计者请求返回数据完整性验证报告;
步骤2:数据拥有者产生一对密钥,包括私钥与公钥;数据拥有者选择两个安全质数p,q,p=2p'+1,q=2q'+1,p',q'为两个质数;数据拥有者计算N=p*q;设QRN是模N的乘法循环群,数据拥有者选择QRN的一个生成元g,(p,q)为私钥,(g,N)为公钥;
步骤3:数据拥有者将文件分块,使用步骤2产生的公钥(g,N)为每个文件块生成文件块标签,将公钥(g,N)、文件块标签与文件上传至Hadoop平台;然后,数据拥有者将公钥(g,N)与文件块标签发送给审计者;
步骤4:审计者生成挑战值,并将挑战值发送给Hadoop平台;
步骤5:Hadoop平台根据步骤4中审计者发送的挑战值生成证明值,并将证明值发送给审计者;
步骤6:审计者检查步骤5中Hadoop平台生成的证明值,并将审计报告返回给数据拥有者;
步骤7:数据拥有者远程地对Hadoop平台上的数据进行更新;数据更新一共包括四种操作:插入、追加、修改、删除;数据拥有者可以对单个文件块进行这四种操作;每种操作对应不同的更新算法;步骤7结束后,跳转到步骤4,重复执行步骤4至步骤6。
2.根据权利要求1所述的一种基于Hadoop平台的动态数据完整性验证方法,其特征在于:所述步骤3的具体过程如下:数据拥有者选择文件F,将文件划分为n个大小相同的文件块,设F=[m1,m2,...,mn];数据拥有者初始化数据块索引表,然后使用步骤2产生的公钥(g,N)为每个文件块mi,i∈[1,...,n]计算文件块标签T(ti),计算公式为ti=mi||Ri||Li||Vi,Ri,Li,Vi表示数据块索引表中每个文件块mi关联的物理索引、逻辑索引、版本信息,||为字符串连接符号;计算完所有文件块的标签后,数据拥有者将n个文件块与n个文件块标签上传到Hadoop平台,然后,数据拥有者将公钥(g,N)与文件块标签发送给审计者。
3.根据权利要求1所述的一种基于Hadoop平台的动态数据完整性验证方法,其特征在于:所述步骤4的具体过程如下:数据拥有者授权审计者验证文件完整性,并请求返回结果;首先,审计者选择一个随机密钥r和一个随机的群元素s∈ZN\{0},ZN\{0}表示小于N的正整数集合;然后,审计者根据步骤3里得到的公钥(g,N)计算文件挑战信息gs,gs=gsmodN;设挑战值为chal,审计者将挑战值chal=<r,gs>发送给Hadoop平台。
4.根据权利要求1所述的一种基于Hadoop平台的动态数据完整性验证方法,其特征在于:所述步骤5的具体过程如下:Hadoop平台接收步骤4中审计者发送的挑战值chal=<r,gs>后,根据挑战值中的r调用函数f(r,n)得到一串随机数[a1,a2,...an],f(r,n)是一个生成一串随机数的函数,输入r为步骤4中生成挑战值的一部分,输入n为文件数据块的个数;Hadoop平台根据步骤3中得到的公钥(g,N)中的N与步骤4中得到的文件挑战信息gs计算证明值R,Hadoop平台将证明值R发送给审计者。
5.根据权利要求1所述的一种基于Hadoop平台的动态数据完整性验证方法,其特征在于:所述步骤6的具体过程如下:审计者接收到步骤5中Hadoop平台发送的证明值R之后,也调用步骤5中Hadoop平台使用的随机数生成函数f(r,n),得到一串与步骤5中相同的随机数[a1,a2,...an];首先,审计者使用步骤3里得到的公钥(g,N)与所有文件块标签,计算一个中间值P,其中T(ti)为第i个文件块标签,ai为第i个随机数;然后,审计者使用计算出的中间值P、步骤4里生成的挑战值<s,gs>中的s与步骤3中得到的公钥(g,N)中的N计算验证值R',R'=PsmodN;最后,审计者判断计算出的验证值R'是否与步骤5中生成的证明值R相等;如果R'与R相等,输出“成功”,继续执行步骤7,反之,输出“失败”,执行结束;审计者将结果返回给数据拥有者。
6.根据权利要求1所述的一种基于Hadoop平台的动态数据完整性验证方法,其特征在于:所述的插入操作,即数据拥有者在当前文件中插入一个新的数据块,数据拥有者执行插入操作更新算法,包括以下步骤:
步骤7.1.1:在数据块索引表中定位插入数据块的位置;
步骤7.1.2:在数据块索引表末尾中增加新的一行;
步骤7.1.3:修改数据块索引表中受增加行影响的数据;
步骤7.1.4:对插入的文件块生成文件块标签;
步骤7.1.5:将新的数据块追加至文件末尾;
步骤7.1.6:准备好更新的信息,包括新的文件块、文件插入位置、文件块标签,然后发送给Hadoop平台。
7.根据权利要求1所述的一种基于Hadoop平台的动态数据完整性验证方法,其特征在于:所述的追加操作,即数据拥有者在当前文件末尾追加一个新的数据块,数据拥有者执行追加操作更新算法,包括以下步骤:
步骤7.2.1:在数据块索引表中定位追加数据块的位置;
步骤7.2.2:在数据块索引表末尾中增加新的一行;
步骤7.2.3:修改数据块索引表中受增加行影响的数据;
步骤7.2.4:对追加的文件块生成文件块标签;
步骤7.2.5:将新的数据块追加至文件末尾;
步骤7.2.6:准备好更新的信息,包括新的文件块、文件块标签,然后发送给Hadoop平台。
8.根据权利要求1所述的一种基于Hadoop平台的动态数据完整性验证方法,其特征在于:所述的修改操作,即数据拥有者在当前文件中修改一个数据块,数据拥有者执行修改操作更新算法,包括以下步骤:
步骤7.3.1:在数据块索引表中定位修改数据块的位置;
步骤7.3.2:在数据块索引表末尾中增加新的一行;
步骤7.3.3:对修改的文件块生成文件块标签;
步骤7.3.4:将新的数据块追加至文件末尾;
步骤7.3.5:准备好更新的信息,包括新的文件块、文件修改位置,然后发送给Hadoop平台。
9.根据权利要求1所述的一种基于Hadoop平台的动态数据完整性验证方法,其特征在于:所述的删除操作,即数据拥有者在当前文件中删除一个数据块,数据拥有者执行删除操作更新算法,包括以下步骤:
步骤7.4.1:在数据块索引表中定位删除数据块的位置;
步骤7.4.2:在数据块索引表末尾增加一行;
步骤7.4.3:准备好更新的信息,包括数据块删除位置,然后发送给Hadoop平台。
CN201810635131.5A 2018-06-20 2018-06-20 一种基于Hadoop平台的动态数据完整性验证方法 Active CN109063513B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810635131.5A CN109063513B (zh) 2018-06-20 2018-06-20 一种基于Hadoop平台的动态数据完整性验证方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810635131.5A CN109063513B (zh) 2018-06-20 2018-06-20 一种基于Hadoop平台的动态数据完整性验证方法

Publications (2)

Publication Number Publication Date
CN109063513A true CN109063513A (zh) 2018-12-21
CN109063513B CN109063513B (zh) 2022-05-17

Family

ID=64820660

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810635131.5A Active CN109063513B (zh) 2018-06-20 2018-06-20 一种基于Hadoop平台的动态数据完整性验证方法

Country Status (1)

Country Link
CN (1) CN109063513B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110619231A (zh) * 2019-08-26 2019-12-27 北京航空航天大学 一种基于MapReduce的差分可辨性k原型聚类方法
CN116418580A (zh) * 2023-04-10 2023-07-11 广东粤密技术服务有限公司 用于局域网的数据完整性保护检测方法、装置及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090171878A1 (en) * 2007-12-29 2009-07-02 Nec (China) Co., Ltd. Provable data integrity verifying method, apparatuses and system
CN102647433A (zh) * 2012-05-21 2012-08-22 北京航空航天大学 一种高效的云存储数据持有性验证方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090171878A1 (en) * 2007-12-29 2009-07-02 Nec (China) Co., Ltd. Provable data integrity verifying method, apparatuses and system
CN102647433A (zh) * 2012-05-21 2012-08-22 北京航空航天大学 一种高效的云存储数据持有性验证方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
XINGYUE CHEN 等: "A Remote Data Integrity Checking Scheme for Big Data Storage", 《2017 IEEE SECOND INTERNATIONAL CONFERENCE ON DATA SCIENCE IN CYBERSPACE》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110619231A (zh) * 2019-08-26 2019-12-27 北京航空航天大学 一种基于MapReduce的差分可辨性k原型聚类方法
CN110619231B (zh) * 2019-08-26 2021-06-18 北京航空航天大学 一种基于MapReduce的差分可辨性k原型聚类方法
CN116418580A (zh) * 2023-04-10 2023-07-11 广东粤密技术服务有限公司 用于局域网的数据完整性保护检测方法、装置及电子设备
CN116418580B (zh) * 2023-04-10 2023-11-24 广东粤密技术服务有限公司 用于局域网的数据完整性保护检测方法、装置及电子设备

Also Published As

Publication number Publication date
CN109063513B (zh) 2022-05-17

Similar Documents

Publication Publication Date Title
CN110033243B (zh) 基于区块链智能合约的主链存证方法、系统及存储介质
CN111355705B (zh) 一种基于区块链的数据审计与安全去重云存储系统、方法
Xie et al. zkbridge: Trustless cross-chain bridges made practical
CN107171812A (zh) 一种基于区块链的无密钥签名基础设施构建方法
CN102170440B (zh) 适用于存储云间数据安全迁移的方法
CN108200208B (zh) 基于云计算的物流区块链共识算法
KR20200106000A (ko) 블록체인-기반 디지털 인증서를 구현하기 위한 시스템 및 방법
CN108965258A (zh) 一种基于全同态加密的云环境数据完整性验证方法
KR20200105999A (ko) 디지털 마크를 생성하기 위한 시스템 및 방법
CN110096903B (zh) 基于区块链的资产验证方法及区块链网络系统
Wang et al. Public auditing of log integrity for cloud storage systems via blockchain
CN108009445A (zh) 一种半中心化的可信数据管理系统
Tian et al. Enabling public auditability for operation behaviors in cloud storage
CN109639436A (zh) 基于盐值的数据持有性验证方法及终端设备
CN112149073B (zh) 一种锥体区块链管理方法及系统
CN115208628B (zh) 基于区块链的数据完整性验证方法
He et al. Public integrity auditing for dynamic regenerating code based cloud storage
CN109447630A (zh) 一种支持多行业多应用的区块链构建方法及系统
CN115659417A (zh) 审计日志存储方法、验证方法、装置和计算机设备
CN109063513A (zh) 一种基于Hadoop平台的动态数据完整性验证方法
Swarnkar et al. Security, privacy, trust management and performance optimization of blockchain technology
Chen et al. A remote data integrity checking scheme for big data storage
WO2018219425A1 (en) Method for validating and/or authenticating online curriculum vitae using blockchain distributed ledger technology
Li et al. Blockchain-Based Data Integrity Verification Scheme in AIoT Cloud–Edge Computing Environment
Qi et al. Blockchain-Based Privacy-Preserving Public Auditing for Group Shared Data.

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
GR01 Patent grant
GR01 Patent grant