CN109586896B - 一种基于哈希前缀树的数据完整性验证方法 - Google Patents
一种基于哈希前缀树的数据完整性验证方法 Download PDFInfo
- Publication number
- CN109586896B CN109586896B CN201811351086.7A CN201811351086A CN109586896B CN 109586896 B CN109586896 B CN 109586896B CN 201811351086 A CN201811351086 A CN 201811351086A CN 109586896 B CN109586896 B CN 109586896B
- Authority
- CN
- China
- Prior art keywords
- file
- block
- server
- client
- hash
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0863—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Power Engineering (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
本发明属于云存储技术领域,公开了一种基于哈希前缀树的数据完整性验证方法,包括:服务器基于哈希前缀树来判断该文件块是否为重复数据块,当服务器在哈希前缀树中找到一条路径与该文件块编码对应,则说明服务器已存储了相同的文件块,该文件块为重复块,并通知客户端。客户端在得知该文件块为重复块之后,将不再对该文件块进行打标签以及上传操作,从而避免数据冗余。本发明能够少解决现有技术存在的数据冗余、浪费存储空间的问题,在实现数据完成性验证的同时,能够对数据进行去重,避免存储空间的浪费。
Description
技术领域
本发明涉及云存储技术领域,尤其涉及一种基于哈希前缀树的数据完整性验证方法。
背景技术
云存储是一种在线的存储模式,即用户(客户端)与服务器(云端) 通过一定的协议,将自己的外包数据存储于云端,这种新兴的存储方式,具有云计算的灵活性、低成本性、可扩展性的特点。用户可以随时随地接入云端,获取自己的数据,并根据实际使用的存储空间付费,降低了数据的维护和存储设备的成本,并且能够按照存储的需要进行扩展。
与此同时,云存储也存在许多安全问题,其中,云端数据的完整性是用户关注的热点问题之一。用户将数据存储于云端,在物理上失去了对数据的控制。由于网络的攻击,服务器机器故障等原因,存储于云端的数据可能被篡改,删除等,而用户在将数据上传到云端后,本地通常并没有存储副本,这就会使得用户利益受到损害。为此,有人提出了若干用于验证数据完整性的方法,基于此类方法,用户能够对存储在云端的数据进行高效、安全的完整性校验,以及时监控和检测存储在云端的数据。
在现有的数据完整性验证方法中,为达到完整性验证的目的,通常需要将文件分割为较小的若干数据块进行上传,并基于所分数据块来验证文件是否完整。但在上传数据块的过程中并不对数据块进行重复性检测,因而同一文件以及不同文件之间在分割时会得到相同的文件块。倘若按照现有方法将这些文件块全部上传至服务器,就会使得服务器出现数据冗余,造成存储空间浪费的问题。
发明内容
有鉴于此,本发明提供一种基于哈希前缀树的数据完整性验证方法,以至少解决现有技术存在的数据冗余、浪费存储空间的问题,在实现数据完成性验证的同时,能够对数据进行去重,避免存储空间的浪费。
为达到上述目的,本发明采用如下技术方案:
提供一种基于哈希前缀树的数据完整性验证方法,所述哈希前缀树包括:一个根节点以及若干分支节点、中间节点和叶子节点;其中,分支节点和中间节点由编码部分和指针部分构成,分支节点的编码部分包含n个字符,指针部分包含与所述n个字符分别对应的n个节点指针,每个节点指针指向空或分支节点的后继节点;中间节点的编码部分包含一字符串,指针部分包含1个指针,该指针指向中间节点的后继节点;叶子节点由编码部分和哈希值部分构成,叶子节点的编码部分包含一字符串;每个叶子节点对应存储于服务器的一个文件块,从根节点到每个叶子节点均存在唯一一条路径,路径上所有节点的编码部分按照从上到下的顺序排列而成所得的字符串即为对应文件块的编码字符串,叶子节点的哈希值部分即为所述文件块的存储位置哈希值;
所述方法包括:
客户端生成私钥及公钥,将待上传文件文件F分割为N个大小相同的文件块,并使用哈希加密算法计算各文件块的数据指纹,对数据指纹进行十六进制编码,进而将编码得到的数据作为各文件块对应的编码字符串,向所述服务器发送各文件块对应的编码字符串;N为整数且N≥2;
所述服务器接收各文件块对应的编码字符串,并根据所述编码字符串查询所述哈希前缀树,确定其中的非重复块和重复块;
对于所述文件F的各非重复块:
所述服务器向所述客户端发送上传指示消息,所述上传指示消息中携带有各非重复块的逻辑块号;所述客户端接收到所述上传指示消息后,根据生成的私钥为各非重复块生成对应的同态认证标签,并向所述服务器发送各非重复块及对应的同态认证标签;所述服务器接收各非重复块及对应的同态认证标签,存储各非重复块及对应的同态认证标签,并在所述哈希前缀树中增加各非重复块对应的路径,将各非重复块的存储位置哈希值写入所述文件F的存储索引表;其中,各非重复块的存储位置与其对应的同态认证标签的存储位置相隔固定存储空间Δ,Δ为单个文件块占用的存储空间;
对于所述文件F的各重复块:
所述服务器查询所述哈希前缀树以确定各重复块的存储位置哈希值,将各重复块的存储位置哈希值写入所述文件F的存储索引表;
所述客户端生成挑战请求,向所述服务器发送所述挑战请求,请求对所述文件F进行完整性验证;
所述服务器接收所述挑战请求,并根据所述挑战请求以及所述文件F的存储索引表,生成对应的证据,向所述客户端发送所述证据;
所述客户端接收所述证据,根据所述证据以及生成的公钥进行验证,判定所述服务器是否完整地持有所述文件F。
基于本发明上述方法,服务器在接收到文件块编码之后,借助哈希前缀树来判断该文件块是否为重复数据块。当服务器在哈希前缀树中找到一条路径与该文件块编码对应,则说明服务器已存储了相同的文件块,该文件块为重复块,同时通知客户端。客户端在得知该文件块为重复块之后,将不再对该文件块进行打标签以及上传操作,从而避免数据冗余;而当服务器在整个前缀树中查找某一个文件块编码失败时,则说明前缀树中无该编码,即该文件块为非重复块,同时通知客户端,客户端在得知该文件块为非重复块之后,将该文件块上传至服务器,服务器通过哈希计算出该文件块的存储位置进行存储,服务器将非重复块的编码序列添加到前缀树上,当整个序列添加到前缀树中后,将查找该文件块存储位置所用的哈希值写入新添加的查找路径末端的叶子节点之中。因此,基于本发明实施例提供的基于哈希前缀树的数据完整性验证方法,能够少解决现有技术存在的数据冗余、浪费存储空间的问题,在实现数据完成性验证的同时,能够对数据进行去重,避免存储空间的浪费。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种示意性的哈希前缀树的结构示意图;
图2为图1所示哈希前缀树的具体结构示意图;
图3为本发明实施例提供的一种基于哈希前缀树的数据完整性验证方法的流程示意图;
图4为本发明实施例提供的另一种基于哈希前缀树的数据完整性验证方法的流程示意图;
图5为默克尔哈希树构造方法示意图;
图6为本发明实施例提供的又一种基于哈希前缀树的数据完整性验证方法的流程示意图;
图7为本发明实施例提供的一种示意性的默克尔哈希树的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为便于理解本发明实施例方案,首先本发明实施例中的哈希前缀树进行介绍如下:
本发明实施例提供了一种哈希前缀树,所述哈希前缀树包括:一个根节点以及若干分支节点、中间节点和叶子节点。其中,分支节点有至少两个后继节点(可以是叶子节点或中间节点),中间节点只有一个后继节点(可以是叶子节点或分支节点),叶子节点不存在后继节点。
示例性的,给出一种示意性的哈希前缀树的结构,如图1所示。图中,节点R即根节点,节点A、C、F为分支节点,节点E为中间节点,节点B、D、G、H为叶子节点。
具体的,在本发明实施例提供的哈希前缀树中,分支节点和中间节点由编码部分和指针部分构成,分支节点的编码部分包含n个字符,指针部分包含与所述n个字符分别对应的n个节点指针,每个节点指针指向空或分支节点的后继节点;中间节点的编码部分包含一字符串,指针部分包含1个指针,该指针指向中间节点的后继节点;叶子节点由编码部分和哈希值部分构成,叶子节点的编码部分包含一字符串;每个叶子节点对应存储于服务器的一个文件块,从根节点到每个叶子节点均存在唯一一条路径,路径上所有节点的编码部分按照从上到下的顺序排列而成所得的字符串即为对应文件块的编码字符串,叶子节点的哈希值部分即为所述文件块的存储位置哈希值。
需要说明的是,所述从上到下的顺序是指从哈希前缀树的根节点到叶子节点的顺序。
示例性的,接上一示例,给出图1中分支节点A、中间节点E以及叶子节点B的具体结构如图2所示。参见图2,分支节点A的编码部分包含16个字符,依次为0、1、2、3、4、5、6、7、8、9、a、b、 c、d、e、f,分支节点A的指针部分包含对应的16个节点指针(即n 取16),其中字符1对应的节点指针指向叶子节点B,字符3对应的节点指针指向分支节点C,其余节点指针则指向空。中间节点E的编码部分包含一字符串“2e”,指针部分包含1个指针,该指针指向中间节点E的后继节点——分支节点F。叶子节点D的编码部分包含一字符串“1c752a4”,哈希值部分包含文件块m的存储位置哈希值“f480e276”,从根节点到叶子节点D存在唯一一条路径:分支节点A →分支节点C→叶子节点D,该路径上所有节点的编码部分按照从上到下的顺序排列所得的字符串“351c752a4”即为文件块m的编码字符串。
基于上述哈希前缀树,本发明实施例提供了一种基于哈希前缀树的数据完整性验证方法,如图3所示。
参见图3,本发明实施例提供的基于哈希前缀树的数据完整性验证方法包括以下步骤:
S101、客户端生成私钥及公钥,将待上传文件文件F分割为N个大小相同的文件块,并使用哈希加密算法计算各文件块的数据指纹,对数据指纹进行十六进制编码,进而将编码得到的数据作为各文件块对应的编码字符串。
其中,N为整数且N≥2。
一种具体的实现方式中,步骤S101具体可以包括:
定义双线性映射e:G×G=GT,其中G是一个迪菲-赫尔曼群, GT是一个素阶数乘法循环群,定义g是G的生成元;
客户端从GT中随机选取素数α作为私钥,并根据私钥计算得到对应的公钥v=gα。
S102、客户端向服务器发送各文件块对应的编码字符串。
S103、服务器接收各文件块对应的编码字符串,并根据编码字符串查询哈希前缀树,确定其中的非重复块和重复块,对于非重复块执行步骤S103a1-S103a4,对于非重复块,执行步骤S103b:
S103a1、服务器向客户端发送上传指示消息,上传指示消息中携带有各非重复块的逻辑块号。
S103a2、客户端接收到上传指示消息后,根据生成的私钥为各非重复块生成对应的同态认证标签。
其中,客户端根据生成的私钥为各非重复块生成对应的同态认证标签,具体可以包括:
客户端在迪菲-赫尔曼群G中随机选取元素u作为辅助变量;
其中,H()表示哈希函数,α表示客户端生成的私钥,u表示辅助变量,mi表示将文件块Fi通过特定函数转换所得的整数,i表示文件块序号,i为整数且1≤i≤N。
S103a3、客户端向服务器发送各非重复块及对应的同态认证标签。
S103a4、服务器接收各非重复块及对应的同态认证标签,存储各非重复块及对应的同态认证标签,并在哈希前缀树中增加各非重复块对应的路径,将各非重复块的存储位置哈希值写入文件F的存储索引表。
其中,各非重复块的存储位置与其对应的同态认证标签的存储位置相隔固定存储空间Δ,Δ为单个文件块占用的存储空间。
容易理解,每个文件都有唯一的一张存储索引表与之对应,该索引表中按照逻辑顺序记录了该文件被分割后的所有文件子块的存储位置,系统在相应用户的下载操作时,可以使用该索引表对文件进行组织。即,存储索引表由逻辑块号以及存储位置哈希两部分组成,当用户向服务器请求云服务器上的数据时,云服务器则按照存储索引表内的存储信息,组织文件返回给用户。在将所有文件块重新组织成文件的过程中,系统按照逻辑块号递增的顺序遍历索引表,使用索引表中存储的文件块存储地址取回文件块,按顺序重新组合成文件F。
S103b、服务器查询哈希前缀树以确定各重复块的存储位置哈希值,将各重复块的存储位置哈希值写入文件F的存储索引表。
S104、客户端生成挑战请求。
一种具体的实现方式中,步骤S104具体可以包括:
S1043、利用C个文件块的索引及对应的随机整数,组成对应的挑战请求chal={sj,vj},j取1到C之间的所有整数。
其中,s1,s2,…sj…sC分别表示C个文件块的索引,sj表示C个文件块中第j个文件块的索引,1≤j≤C,C为整数且1≤C≤N。
S105、客户端向服务器发送挑战请求,请求对文件F进行完整性验证。
S106、服务器接收挑战请求,并根据挑战请求以及文件F的存储索引表,生成对应的证据。
本发明实施例的一种具体实现方式中,步骤S106中,服务器根据挑战请求以及文件F的存储索引表生成证据,具体可以包括:
S1061、服务器确定挑战请求中C个文件块的索引,并根据C个文件块的索引查询文件F的存储索引表,确定C个文件块的存储位置哈希值,进而在C个文件块的存储位置哈希值的基础上得到对应的同态认证标签的存储位置,读取C个文件块对应的同态认证标签。
S1062、根据C个文件块对应的同态认证标签以及挑战请求中C 个文件块对应的随机整数,利用预设公式,生成证据P={σ,μ}.
S107、服务器向客户端发送证据。
S108、客户端接收证据,根据证据以及生成的公钥进行验证,判定服务器是否完整地持有文件F。
一种具体的实现方式中,步骤S108中,客户端根据证据以及生成的公钥进行验证,判定服务器是否完整地持有文件F,具体可以包括:
其中,e()表示双线性映射运算。
如前所述,在现有的数据完整性验证方法中,为达到完整性验证的目的,通常需要将文件分割为较小的若干数据块进行上传,并基于所分数据块来验证文件是否完整。但在上传数据块的过程中并不对数据块进行重复性检测,因而同一文件以及不同文件之间在分割时会得到相同的文件块。倘若按照现有方法将这些文件块全部上传至服务器,就会使得服务器出现数据冗余,造成存储空间浪费的问题。
而基于本发明上述方法,服务器在接收到文件块编码之后,借助哈希前缀树来判断该文件块是否为重复数据块。当服务器在哈希前缀树中找到一条路径与该文件块编码对应,则说明服务器已存储了相同的文件块,该文件块为重复块,同时通知客户端。客户端在得知该文件块为重复块之后,将不再对该文件块进行打标签以及上传操作,从而避免数据冗余;而当服务器在整个前缀树中查找某一个文件块编码失败时,则说明前缀树中无该编码,即该文件块为非重复块,同时通知客户端,客户端在得知该文件块为非重复块之后,将该文件块上传至服务器,服务器通过哈希计算出该文件块的存储位置进行存储,服务器将非重复块的编码序列添加到前缀树上,当整个序列添加到前缀树中后,将查找该文件块存储位置所用的哈希值写入新添加的查找路径末端的叶子节点之中。因此,基于本发明实施例提供的基于哈希前缀树的数据完整性验证方法,能够少解决现有技术存在的数据冗余、浪费存储空间的问题,在实现数据完成性验证的同时,能够对数据进行去重,避免存储空间的浪费。
优选的,如图4所示,本发明实施例提供的基于哈希前缀树的数据完整性验证方法,在服务器获得文件F的存储索引表(即步骤S103) 之后,还可以包括:
S109、服务器根据存储索引表中各文件块的存储位置哈希值构造对应的默克尔哈希树,得到根节点R。
S110、服务器向客户端发送根节点R。
S111、客户端接收根节点R,并计算根节点R的签名Sig(H(R))。
其中,H()表示哈希函数,Sig()表示签名函数,Sig()=()α,α表示客户端生成的私钥。
S112、客户端向服务器发送签名Sig(H(R))。
S113、服务器接收并存储签名Sig(H(R))。
需要说明的是,在本发明实施例中,每一个文件都唯一的对应一颗默克尔哈希树,默克尔哈希树的作用是利用根节点中的签名快速校验整棵树所代表文件是否完整。默克尔哈希树由根节点、中间节点以及叶子节点构成。叶子节点中存放着数据块的签名,而中间节点则是指除了叶子节点和根节点之外的所有节点。中间节点中所存放的数据签名的计算过程如下:先获取该中间节点的左孩子以及右孩子中存放的签名,分别记为left_hash以及right_hash,然后对left_hash以及 right_hash进行拼接操作,组成新的字符串,然后对新字符串进行哈希操作,生成该中间节点的签名。如图5所示。在构造默克尔哈希树的过程中,首先利用对文件F进行分割操作得到的文件块集合(即图中的Block1至Block4)生成相应的叶子节点,然后按照前述规则由底向上计算,最后即可得到根节点签名。
当用户对云服务器上的数据进行动态操作(删除操作、更新操作以及添加操作)时,同样需要确定新文件块是否为重复块,并在动态操作之后再次验证文件的完整性。
即,如图6所示,在步骤S113之后,本发明实施例提供的验证方法还进一步包括:
S114、客户端向服务器发送动态更新请求。
其中,所述动态更新请求中携带有此次动态更新对应的操作类型及操作位置,操作类型包括删除操作、更新操作以及添加操作,当操作类型为更新操作或添加操作时,动态更新请求中还携带有新文件块 m′的编码字符串。新文件块m′的编码字符串由客户端使用哈希加密算法计算文件块的数据指纹,并对数据指纹进行十六进制编码得到。
S115、服务器接收动态更新请求,根据动态更新请求对文件F进行动态更新,同时更新默克尔哈希树得到根节点R1。
S116、服务器向客户端发送根节点R1、签名Sig(H(R))以及被修改文件块的辅助信息。
其中,被修改文件块的辅助信息包括被修改文件块对应的叶子节点信息以及被修改文件块对应的辅助路径上的所有节点信息集合。此处所述的叶子节点指的是默克尔哈希树中的叶子节点,被修改文件块对应的辅助路径上的所有节点信息集合为生成默克尔哈希树根节点所需要的节点信息的集合,此处所述的默克尔哈希树为更新前的默克尔哈希树,即步骤S109中生成的默克尔哈希树。
示例性的,假设更新前的默尔克哈希树如图7所示,被修改文件块对应的叶子节点为节点8,则节点8到根节点路径上所有节点的兄弟节点的集合,节点8到根节点经过的路径为节点8→节点4→节点2,利用这几个节点的兄弟节点,即节点9、节点5、节点3,就可以与8号节点进行相应计算最终得出根节点,也就是说辅助路径上的节点集合即节点9、节点5、节点3。
S117、客户端接收根节点R1、签名Sig(H(R))以及被修改文件块的辅助信息,并利用辅助信息计算得到根节点R′,对根节点R′进行签名得到签名Sig(H(R′)),判断签名Sig(H(R))和签名Sig(H(R′))是否相等:若不相等,则执行步骤S118a;若相等,则执行步骤S118b1-S118b3。
S118a、客户端判定服务器未完整地持有文件F。
S118b1、客户端判定服务器完整地持有文件F,并根据此次动态更新对应的操作类型和操作位置以及接收到的辅助信息,计算得到新的根节点R1′;根据根节点R1′和根节点R1,判定此次动态更新操作是否成功,并在判定此次动态更新操作成功后,对根节点R1′进行签名得到签名Sig(H(R1′))。
其中,客户端根据根节点R1′和根节点R1,判定此次动态更新操作是否成功,具体包括:
客户端判断根节点R1和根节点R1′是否相等:若相等,则判定对此次动态更新操作成功;若不相等,则判定此次动态更新操作失败。
S118b2、客户端向服务器发送签名Sig(H(R1′))。
S118b3、服务器接收签名Sig(H(R1′)),并使用签名Sig(H(R1′))替换签名Sig(H(R))。
优选的,在步骤S118b1中,服务器根据所述动态更新请求对所述文件F进行动态更新,具体包括以下三种情况:
(1)若动态更新请求中携带的操作类型为删除操作,服务器根据动态更新请求中携带的操作位置,确定对应的删除文件,将存储索引表中删除文件块对应的存储位置哈希值更改为-1,以表示该文件块已被删除。
(2)若动态更新请求中携带的操作类型为更新操作,服务器根据动态更新请求中携带的新文件块m′的编码字符串查询哈希前缀树,确定新文件块m′是否为重复块:
若为重复块,服务器查询哈希前缀树确定新文件块m′的存储位置哈希值,将文件F的存储索引表中待更新文件块m的存储位置哈希值更新为新文件块m′的存储位置哈希值;
若为非重复块,服务器向客户端发送上传指示消息;客户端接收到上传指示消息后,生成新文件块m′对应的同态认证标签,并向服务器发送新文件块m′及对应的同态认证标签;服务器接收同态认证标签,存储新文件块m′及对应的同态认证标签,并在哈希前缀树中增加新文件块m′对应的路径,将文件F的存储索引表中待更新文件块m的存储位置哈希值更新为新文件块m′的存储位置哈希值.
(3)若动态更新请求中携带的操作类型为添加操作,服务器根据动态更新请求中携带的新文件块m′的编码字符串查询哈希前缀树,确定新文件块m′是否为重复块:
若新文件块m′为重复块,服务器查询哈希前缀树以确定新文件块m′的存储位置哈希值,将新文件块m′的逻辑块号及存储位置哈希值对应写入文件F的存储索引表;
若新文件块m′为非重复块,服务器向客户端发送上传指示消息;客户端接收到上传指示消息后,生成新文件块m′对应的同态认证标签,并向服务器发送新文件块m′及对应的同态认证标签;服务器接收新文件块m′及对应的同态认证标签,存储新文件块m′及对应的同态认证标签,并在哈希前缀树中增加新文件块m′对应的路径,将新文件块m′的逻辑块号及存储位置哈希值对应写入文件F的存储索引表。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种基于哈希前缀树的数据完整性验证方法,其特征在于,所述哈希前缀树包括:一个根节点以及若干分支节点、中间节点和叶子节点;其中,分支节点和中间节点由编码部分和指针部分构成,分支节点的编码部分包含n个字符,指针部分包含与所述n个字符分别对应的n个节点指针,每个节点指针指向空或分支节点的后继节点;中间节点的编码部分包含一字符串,指针部分包含1个指针,该指针指向中间节点的后继节点;叶子节点由编码部分和哈希值部分构成,叶子节点的编码部分包含一字符串;每个叶子节点对应存储于服务器的一个文件块,从根节点到每个叶子节点均存在唯一一条路径,路径上所有节点的编码部分按照从上到下的顺序排列而成所得的字符串即为对应文件块的编码字符串,叶子节点的哈希值部分即为所述文件块的存储位置哈希值;
所述方法包括:
客户端生成私钥及公钥,将待上传文件文件F分割为N个大小相同的文件块,并使用哈希加密算法计算各文件块的数据指纹,对数据指纹进行十六进制编码,进而将编码得到的数据作为各文件块对应的编码字符串,向所述服务器发送各文件块对应的编码字符串;N为整数且N≥2;
所述服务器接收各文件块对应的编码字符串,并根据所述编码字符串查询所述哈希前缀树,确定其中的非重复块和重复块;
对于所述文件F的各非重复块:所述服务器向所述客户端发送上传指示消息,所述上传指示消息中携带有各非重复块的逻辑块号;所述客户端接收到所述上传指示消息后,根据生成的私钥为各非重复块生成对应的同态认证标签,并向所述服务器发送各非重复块及对应的同态认证标签;所述服务器接收各非重复块及对应的同态认证标签,存储各非重复块及对应的同态认证标签,并在所述哈希前缀树中增加各非重复块对应的路径,将各非重复块的存储位置哈希值写入所述文件F的存储索引表;其中,各非重复块的存储位置与其对应的同态认证标签的存储位置相隔固定存储空间Δ,Δ为单个文件块占用的存储空间;
对于所述文件F的各重复块:所述服务器查询所述哈希前缀树以确定各重复块的存储位置哈希值,将各重复块的存储位置哈希值写入所述文件F的存储索引表;
所述客户端生成挑战请求,向所述服务器发送所述挑战请求,请求对所述文件F进行完整性验证;
所述服务器接收所述挑战请求,并根据所述挑战请求以及所述文件F的存储索引表,生成对应的证据,向所述客户端发送所述证据;
所述客户端接收所述证据,根据所述证据以及生成的公钥进行验证,判定所述服务器是否完整地持有所述文件F。
2.根据权利要求1所述的方法,其特征在于,在所述服务器得到所述文件F的存储索引表之后,所述方法还包括:
所述服务器根据所述存储索引表中各文件块的存储位置哈希值构造对应的默克尔哈希树,得到根节点R,向所述客户端发送所述根节点R;
所述客户端接收所述根节点R,并计算所述根节点R的签名Sig(H(R)),并向所述服务器发送签名Sig(H(R));其中,H()表示哈希函数,Sig()表示签名函数,Sig()=()α,α表示客户端生成的私钥;
所述服务器接收并存储签名Sig(H(R))。
3.根据权利要求2所述的方法,其特征在于,在所述服务器接收并存储签名Sig(H(R))之后,所述方法还包括:
所述客户端向所述服务器发送动态更新请求,所述动态更新请求中携带有此次动态更新对应的操作类型及操作位置,所述操作类型包括删除操作、更新操作以及添加操作,当所述操作类型为更新操作或添加操作时,所述动态更新请求中还携带有新文件块m′的编码字符串;
所述服务器接收所述动态更新请求,根据所述动态更新请求对所述文件F进行动态更新,同时更新默克尔哈希树得到根节点R1,并向所述客户端发送根节点R1、签名Sig(H(R))以及被修改文件块的辅助信息;其中,所述被修改文件块的辅助信息包括被修改文件块对应的叶子节点信息以及被修改文件块对应的辅助路径上的所有节点信息集合;
所述客户端接收所述根节点R1、签名Sig(H(R))以及被修改文件块的辅助信息,并利用所述辅助信息计算得到根节点R′,对所述根节点R′进行签名得到签名Sig(H(R′)),判断签名Sig(H(R))和签名Sig(H(R′))是否相等:
若不相等,则判定所述服务器未完整地持有所述文件F;
若相等,则判定服务器完整地持有所述文件F,并根据此次动态更新对应的操作类型和操作位置以及接收到的所述辅助信息,计算得到新的根节点R1′;根据根节点R1′和根节点R1,判定此次动态更新操作是否成功,并在判定此次动态更新操作成功后,对根节点R1′进行签名得到签名Sig(H(R1′)),向所述服务器发送签名Sig(H(R1′));
所述服务器接收签名Sig(H(R1′)),并使用签名Sig(H(R1′))替换签名Sig(H(R))。
4.根据权利要求3所述的方法,其特征在于,所述服务器根据所述动态更新请求对所述文件F进行动态更新,具体包括:
若所述动态更新请求中携带的操作类型为删除操作,所述服务器根据所述动态更新请求中携带的操作位置,确定对应的删除文件,将所述存储索引表中所述删除文件块对应的存储位置哈希值更改为-1,以表示该文件块已被删除;
若所述动态更新请求中携带的操作类型为更新操作,所述服务器根据所述动态更新请求中携带的所述新文件块m′的编码字符串查询所述哈希前缀树,确定所述新文件块m′是否为重复块:
若为重复块,所述服务器查询所述哈希前缀树确定所述新文件块m′的存储位置哈希值,将所述文件F的存储索引表中待更新文件块m的存储位置哈希值更新为所述新文件块m′的存储位置哈希值;
若为非重复块,所述服务器向所述客户端发送上传指示消息;所述客户端接收到所述上传指示消息后,生成所述新文件块m′对应的同态认证标签,并向所述服务器发送所述新文件块m′及对应的同态认证标签;所述服务器接收所述同态认证标签,存储所述新文件块m′及对应的同态认证标签,并在所述哈希前缀树中增加所述新文件块m′对应的路径,将所述文件F的存储索引表中待更新文件块m的存储位置哈希值更新为所述新文件块m′的存储位置哈希值;
若所述动态更新请求中携带的操作类型为添加操作,所述服务器根据所述动态更新请求中携带的所述新文件块m′的编码字符串查询所述哈希前缀树,确定所述新文件块m′是否为重复块:
若所述新文件块m′为重复块,所述服务器查询所述哈希前缀树以确定所述新文件块m′的存储位置哈希值,将所述新文件块m′的逻辑块号及存储位置哈希值对应写入所述文件F的存储索引表;
若所述新文件块m′为非重复块,所述服务器向所述客户端发送上传指示消息;所述客户端接收到所述上传指示消息后,生成所述新文件块m′对应的同态认证标签,并向所述服务器发送所述新文件块m′及对应的同态认证标签;所述服务器接收所述新文件块m′及对应的同态认证标签,存储所述新文件块m′及对应的同态认证标签,并在所述哈希前缀树中增加所述新文件块m′对应的路径,将所述新文件块m′的逻辑块号及存储位置哈希值对应写入所述文件F的存储索引表。
5.根据权利要求3所述的方法,其特征在于,所述客户端根据根节点R1′和根节点R1,判定此次动态更新操作是否成功,具体包括:
所述客户端判断根节点R1和根节点R1′是否相等:若相等,则判定对此次动态更新操作成功;若不相等,则判定此次动态更新操作失败。
6.根据权利要求1所述的方法,其特征在于,所述客户端生成私钥及公钥,具体包括:
定义双线性映射e:G×G=GT,其中G是一个迪菲-赫尔曼群,GT是一个素阶数乘法循环群,定义g是G的生成元;
所述客户端从GT中随机选取素数α作为私钥,并根据私钥计算得到对应的公钥v=gα。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811351086.7A CN109586896B (zh) | 2018-11-14 | 2018-11-14 | 一种基于哈希前缀树的数据完整性验证方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811351086.7A CN109586896B (zh) | 2018-11-14 | 2018-11-14 | 一种基于哈希前缀树的数据完整性验证方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109586896A CN109586896A (zh) | 2019-04-05 |
CN109586896B true CN109586896B (zh) | 2021-09-03 |
Family
ID=65922383
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811351086.7A Active CN109586896B (zh) | 2018-11-14 | 2018-11-14 | 一种基于哈希前缀树的数据完整性验证方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109586896B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110837505B (zh) * | 2019-11-06 | 2022-07-19 | 杭州复杂美科技有限公司 | 状态数据存储方法、状态数据同步方法、设备和存储介质 |
CN112989430A (zh) * | 2019-12-13 | 2021-06-18 | 华为技术有限公司 | 完整性校验方法、装置、终端设备及验证服务器 |
CN111318012B (zh) * | 2020-02-24 | 2023-04-25 | 网易(杭州)网络有限公司 | 游戏数据的传输方法及装置 |
CN111526146B (zh) * | 2020-04-24 | 2022-05-17 | 天津易维数科信息科技有限公司 | 数据持有验证方法、数据搜索方法及相应的系统 |
CN112182662A (zh) * | 2020-09-09 | 2021-01-05 | 北京科技大学 | 一种面向敏捷开发云平台的数据完整性验证方法及系统 |
CN112187760B (zh) * | 2020-09-22 | 2022-11-08 | 宏图智能物流股份有限公司 | 一种基于数据拆分的网络请求防篡改方法 |
US11991290B2 (en) * | 2021-04-20 | 2024-05-21 | Gsi Technology Inc. | Associative hash tree |
CN114915624B (zh) * | 2022-07-13 | 2022-12-13 | 飞狐信息技术(天津)有限公司 | 一种文件处理方法、系统及电子设备 |
CN115499135B (zh) * | 2022-09-14 | 2024-04-12 | 山东大学 | 一种基于对称密码的环签名方法及系统 |
CN117081726B (zh) * | 2023-09-13 | 2024-03-19 | 浪潮数字(山东)建设运营有限公司 | 一种文件的分块分级传输方法和装置 |
CN117094037B (zh) * | 2023-10-16 | 2024-01-05 | 湘江实验室 | 基于Path+ORAM的多路径缓存写回方法、装置及相关设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104902027A (zh) * | 2015-06-12 | 2015-09-09 | 电子科技大学 | 面向云存储服务的动态数据完整性审计方案 |
CN105787389A (zh) * | 2016-03-02 | 2016-07-20 | 四川师范大学 | 云文件完整性公开审计证据生成方法及公开审计方法 |
CN106301789A (zh) * | 2016-08-16 | 2017-01-04 | 电子科技大学 | 应用基于格的线性同态签名的云存储数据的动态验证方法 |
CN106845280A (zh) * | 2017-03-14 | 2017-06-13 | 广东工业大学 | 一种Merkle哈希树云数据完整性审计方法及系统 |
CN107172071A (zh) * | 2017-06-19 | 2017-09-15 | 陕西师范大学 | 一种基于属性的云数据审计方法及系统 |
CN108600163A (zh) * | 2018-03-13 | 2018-09-28 | 南京邮电大学 | 一种云环境分布式哈希链架构及云数据完整性验证方法 |
-
2018
- 2018-11-14 CN CN201811351086.7A patent/CN109586896B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104902027A (zh) * | 2015-06-12 | 2015-09-09 | 电子科技大学 | 面向云存储服务的动态数据完整性审计方案 |
CN105787389A (zh) * | 2016-03-02 | 2016-07-20 | 四川师范大学 | 云文件完整性公开审计证据生成方法及公开审计方法 |
CN106301789A (zh) * | 2016-08-16 | 2017-01-04 | 电子科技大学 | 应用基于格的线性同态签名的云存储数据的动态验证方法 |
CN106845280A (zh) * | 2017-03-14 | 2017-06-13 | 广东工业大学 | 一种Merkle哈希树云数据完整性审计方法及系统 |
CN107172071A (zh) * | 2017-06-19 | 2017-09-15 | 陕西师范大学 | 一种基于属性的云数据审计方法及系统 |
CN108600163A (zh) * | 2018-03-13 | 2018-09-28 | 南京邮电大学 | 一种云环境分布式哈希链架构及云数据完整性验证方法 |
Non-Patent Citations (2)
Title |
---|
Research on Civil Airborne Task Scheduling Test Platform Supporting Provable Data Possession;Gaobo Sun et al.;《2018 SSIC》;20181019;全文 * |
SPORT: Sharing Proofs of Retrievability across Tenants;Frederik Armknecht et al.;《2017 ACM》;20170430;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109586896A (zh) | 2019-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109586896B (zh) | 一种基于哈希前缀树的数据完整性验证方法 | |
CA2731954C (en) | Apparatus, methods, and computer program products providing dynamic provable data possession | |
CN113329031A (zh) | 一种区块的状态树的生成方法及装置 | |
JP4961126B2 (ja) | リモート差分圧縮のための候補オブジェクトを見つける効率のよいアルゴリズム | |
CN110647503A (zh) | 一种分布式存储方法及装置 | |
CN102170455B (zh) | 用于在本地装置和远程装置间更新对象的方法和系统 | |
CN105868305A (zh) | 一种支持模糊匹配的云存储数据去重复方法 | |
WO2019233614A1 (en) | A method for registration of data in a blockchain database and a method for verifying data | |
WO2016131473A1 (en) | Method and system for verifying information of a data item in a plurality of different data items | |
US20140222770A1 (en) | De-duplication data bank | |
CN109492049B (zh) | 用于区块链网络的数据处理、区块生成及同步方法 | |
CN107094075B (zh) | 一种基于收敛加密的数据块动态操作方法 | |
CN115225409B (zh) | 基于多备份联合验证的云数据安全去重方法 | |
CN114127724A (zh) | 针对多副本存储的完整性审计 | |
CN111984732A (zh) | 在区块链上实现去中心化检索的方法、节点及区块链网络 | |
US8234413B2 (en) | Partitioning a data stream using embedded anchors | |
CN112671712A (zh) | 一种支持高效动态更新的云数据完整性验证方法及系统 | |
CN111866134A (zh) | 区块链交易哈希值和地址的生成方法、系统及存储介质 | |
KR102231257B1 (ko) | 채굴 장치, 및 채굴 장치 동작 방법 | |
CN109063513B (zh) | 一种基于Hadoop平台的动态数据完整性验证方法 | |
CN110618989A (zh) | 信息处理方法、信息处理装置及相关产品 | |
CN115842633A (zh) | 基于区块链数据共享中的高效溯源方法 | |
CN112948847B (zh) | 基于区块链的数据共享系统及数据正确性验证方法 | |
CN112527808A (zh) | 一种云存储服务中支持动态更新的数据完整性验证方法 | |
CN112182662A (zh) | 一种面向敏捷开发云平台的数据完整性验证方法及系统 |
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 |