CN115758477A - 一种新型的数据完整性验证方法 - Google Patents
一种新型的数据完整性验证方法 Download PDFInfo
- Publication number
- CN115758477A CN115758477A CN202211447775.4A CN202211447775A CN115758477A CN 115758477 A CN115758477 A CN 115758477A CN 202211447775 A CN202211447775 A CN 202211447775A CN 115758477 A CN115758477 A CN 115758477A
- Authority
- CN
- China
- Prior art keywords
- data
- merkle
- node
- binary tree
- value
- 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.)
- Pending
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种新型的数据完整性验证方法。该方法所应用的系统包括云服务器、至少一个用户端;所述方法包括全局参数生成流程、构造Merkle二叉树流程、数据完整性验证流程。本发明的比现有方法具有更少的通信开销。
Description
技术领域:
本发明涉及数据安全技术领域,具体而言,涉及一种新型的数据完整性验证方法。
背景技术:
随着互联网信息技术发展已经深入到人们的生活的方方面面,以及大数据时代的到来,用户端之间的联系也更加密切,由此产生的用户端数据激增,但近些年的移动存储技术上面并未取得等比的巨大进展,用户端本地终端设备已经不能够满足基本的存储需求。同时,由于当前移动存储设备中的存储单元的数据易失性(固态硬盘本身设计缺陷,长时间不通电导致数据丢失),重要数据备份的需求问题也日益凸显。为了面对上述存在的问题,云存储产品应运而生。用户将本地的数据上传至云服务器,借此节约本地存储资源。但是用户端业务数据通常放于云服务器中,这些数据可能会被不诚实的云服务器篡改,用户可能希望监控他们的数据,并且可以检测未经授权的攻击者是否篡改了数据库,以及云服务器是否丢失了原有数据。
数据完整性是现有许多软件系统的一个重要属性,它在云计算中尤其重要。在传统的数据完整性验证方法中,用户端需要保存每一个文件数据进行哈希运算的哈希值,然后制定一张哈希表包含所有存储的文件数据的哈希值,并将哈希表存储在本地的授信环境中。当需要对云存储文件进行更新操作时,需同步更新授信环境中的哈希表对应的文件哈希值。当需要对云存储中的文件数据进行完整性验证时,需将云存储的文件数据进行传输到用户端本地终端,对传输的数据进行哈希运算后与哈希表中的原本哈希值进行匹配,通过判断匹配结果判断数据完整性是否破坏。
上述传统数据完整性验证方法通过计算每一个文件的哈希值,通过本地授信机制保存哈希值的方式存在以下不足:1、文件数据的每次验证需要将云存储的文件数据进行传输到本地终端才能进行匹配,需要占用本地的大量的数据带宽,且不能够准确的检测出在哪个具体的节点出现问题。2、随着文件数据量逐渐增加,本地授信机制中需保存的哈希值数量等比增加,对哈希值数据的管理复杂难度却是不等比的上升。3、方案过于复杂,消耗云服务器的算力对验证数据进行计算。
由于上述的三个关键问题没有良好的解决,以至于传统的数据完整性验证效率低下,导致数据完整性技术并未得到大范围的实际应用。
因此,需要研究一种高效且方便管理的云存储数据的数据完整性方法,既能够高效率地对完成数据的完整性验证请求,还能够保证数据验证结果的正确性和不可篡改性。同时,能够保证文件数据的激增,不会影响用户端对数据完整性验证的效率。这对用户端数据的管理有着重要意义。
发明内容:
为解决上述问题,本发明提供了一种新型的数据完整性验证方法。该方法所应用的系统包括云服务器、至少一个用户端;所述方法包括全局参数生成流程、构造Merkle二叉树流程、数据完整性验证流程;
所述全局参数生成流程,即云服务器选择一个非碰撞哈希函数h(·),并公布给用户端作为全局参数;
所述构造Merkle二叉树流程中,即对Merkle二叉树各个节点进行赋值;
所述数据完整性验证流程,即从Merkle二叉树根节点开始自上而下构造一个从根节点到待验证数据最邻近父节点的路径,该路径只包括Merkle二叉树中对于待验证数据最邻近的父节点、最邻近的父节点的父节点,及上推的所有父节点;该流程迭代计算该路径上所有节点的值,直到计算得出待验证数据最邻近父节点的值,并将该父节点的值与构造Merkle二叉树流程中得到的相同节点的数据进行对比,如果相同,则证明数据完整,否则证明被篡改。
进一步的,构造Merkle二叉树流程包括第二层赋值步骤、第一层赋值步骤、第三层至t层赋值步骤;
第二层赋值步骤具体为:云服务器生成两个随机数r1,r2,赋值给Merkle二叉树结构中的第二层节点;其中,r1→h0,r2→h1,并将h0和h1的值发送给用户端;
第一层赋值步骤具体为:用户端在本地生成私钥mk,作为非碰撞哈希函数h(·)的参数,计算的结果赋值给Merkle二叉树结构中的根节点,赋值公式为:
rootφ=h(mk,h0,h1);
第三层至t层赋值步骤具体为:
用户端在本地计算出二叉树第三层至t层节点的值:
进一步的,第一层赋值步骤中,用户端保存根节点的值。
进一步的,用户端将整个Merkle二叉树树的除根节点之外的所有节点值和数据上传至云服务器进行存储。
进一步的,用户下载某一个数据,来验证其数据是否被篡改时,数据完整性验证流程具体包括如下步骤:
S31:假定待验证数据为mk,云服务器将Merkle二叉树第二层两个数据h0和h1的值发送给用户端;
S32:用户端使用非碰撞哈希函数h(·)验证h0和h1值是否被篡改,如果h0和h1值未被篡改,进行步骤S33,否则为验证不通过;
使用非碰撞哈希函数h(·)验证的公式为
rootφ=h(mk,h0,h1)
如果上式成立,则证明h0和h1值未被篡改;
S33:用户端从h0或h1开始,自上而下构造出从根节点到分支层方向的一条路径;该路径只包括数据mk对应的最邻近父节点、该父节点的父节点,及及往上的所有父节点,迭代计算该路径上所有节点的值;
迭代计算式如下:
S34:将S33中计算得到的数据mk最邻近父节点的数据与构造Merkle二叉树的流程中得到的该节点的数据进行对比,如果相同,则可证明该数据mk数据完整,没有被篡改,否则验证失败,mk已被篡改。
进一步的,所述方法还包括用户端上传数据的流程,即用户端发送指令,将数据m发送至云服务器,同时将数据m在Merkle二叉树中最邻近的父节点的值计算出来和数据m一同上传。
进一步的,所述方法还包括用户端更新数据的流程,即用户端发送数据更新指令,用新数据替换云服务器中对应位置处的数据,同时将新数据在Merkle二叉树中最邻近的父节点的值重新计算出来和新数据一同上传。
进一步的,所述方法还包括用户端下载数据的流程,即用户端发送数据下载指令,云服务器将对应位置处的数据和该数据在Merkle二叉树中最邻近的父节点的值一同返回给用户端。
本发明的有益效果为:
本发明提出了一种可信的、减少较低通信量的云端数据完整性验证方案。引入一种特殊的Merkle二叉树的数据结构来实现对云端数据的完整性验证。并且当一些数据频繁变动时,更新Merkle二叉树也是十分高效的。主要效果如下:
1.本地用户端能够对存储在云服务器上的数据进行迅速高效的数据完整性验证,降低了验证过程中的通信量,同时降低了云服务器的计算量,并且实现了验证所需数据的防篡改,断绝云服务器上存储的数据丢失改变时用户无法验证的可能。
2.通过使用基于特殊Merkle树的加密技术,用户需要进行验证某一数据是否被篡改时,只需要以更小的通信开销和计算开销即可完成验证。
3.在数据上传或更新阶段,用户只需将数据及数据对应的父节点的值发送到云服务器,更新工作由云服务器完成。
附图说明:
图1为本方法应用的系统模型图。
图2为Merkle二叉树和数据键值的关系图。
图3为本申请所述特殊的Merkle二叉树的结构图。
具体实施方式:
以下结合图1-3对本发明的具体实施方式进行详细的说明,应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
本发明的设计构思为:基于现有Merkle二叉树改进的特殊二叉树的数据结构,使用自上至下的方式来计算任意数据节点。此外引入了一种新的完整性检查方式,通过统一处理数据库记录和Merkle二叉树节点进行完整性验证。本发明的比现有方法具有更少的通信开销。
如图1所示,本发明所应用的系统包括云服务器、至少一个用户端。用户端对数据具有绝对的拥有权,对数据进行上传、更新、读取和完整性验证,数据被要求存放在云服务器的指定位置。
在对本发明进行说明之前,先对Merkle二叉树数据结构进行说明。
定义Merkle二叉树的根节点的键值为φ,Merkle二叉树上每个节点(包括根节点φ)的左子节点为其父节点的键值后加一个0,右子节点为其父节点的键值后加一个1,直至某一层t,本实施例举例t=257,该Merkle二叉树涵盖的最底层叶子节点个数即是2257-1≈1.1579208923732×1077,这里用该Merkle二叉树的最底层叶子节点表示对数据的键值编码,其他节点作为Merkle二叉树的键值编码,针对一般的云服务器,2257-1个键值编码足以标记(编号)所有的存储数据。当然,t值可以根据需要设置。
需要说明的是,本申请所述的第一层是根节点,第二层是根节点的两个分支所在层,第三层是第二层的四个分支所在层,第四层是第三层的8个分支所在层.......依次类推。所述从上而下是指从根节点方向到分支层方向。
下面对本方法进行说明:
如图2所示,本方法主要包括三个流程,分别是构造全局参数生成流程、Merkle二叉树的流程,数据完整性验证流程。下面对各个流程进行说明。
(一)全局参数生成流程
云服务器选择一个非碰撞哈希函数h(·),并公布给所有用户端作为全局参数。
(二)构造Merkle二叉树的流程
该流程是利用由云服务器生成的两个随机数、用户端生成的私钥、非碰撞哈希函数h(·)来对Merkle二叉树各个节点进行赋值。更具体的,该流程包括第二层赋值步骤、第一层赋值步骤、第三层至t层赋值步骤。
第二层赋值步骤:
云服务器生成两个随机数r1,r2,赋值给Merkle二叉树结构中的第二层节点。其中,r1→h0,r2→h1,并将h0和h1的值发送给用户端。
第一层赋值步骤:
用户端在本地生成私钥mk,用以防止数据被云端数据伪造数据的证明,作为非碰撞哈希函数h(·)的参数,计算的结果赋值给Merkle二叉树结构中的根节点:rootφ=h(mk,h0,h1),用户端只保存根节点的值rootφ;
第三层至t层赋值步骤:
用户端在本地计算出Merkle二叉树第三层至t层各节点的值:
这里k表示Merkle二叉树中的键值:k∈{{0,1}2,{0,1}3,…,{0,1}t-1};表示k的父节点键值,表示第i层键值为k的Merkle二叉树的节点值,,t为Merkle二叉树层数。t是根据用户端所需要存储的数据量,以及根据云服务器的存储能力来进行设置的
进一步的,本流程还包括用户端将整个Merkle二叉树树的除根节点之外的所有节点值和数据上传至云服务器进行存储的步骤。
(三)数据完整性验证流程
该流程的创新点在于从Merkle二叉树根节点开始自上而下构造一个从根节点到待验证数据最邻近父节点的一条路径,该路径只包括Merkle二叉树中对于待验证数据mk最邻近父节点、父节点的父节点,及依次类推的所有父节点。该流程迭代计算该路径上所有节点的值,直到计算得出待验证数据最邻近的节点的值,如果与构造Merkle二叉树的流程中得到的相同节点的数据进行对比,如果相同,则证明数据完整,否则证明被篡改。
当用户端请求对下载访问的数据mk进行完整性验证时,包括如下步骤:
S31:云服务器将Merkle二叉树第二层数据h0和h1的值发送给用户端。
S32:用户端使用非碰撞哈希函数h(·)验证h0和h1值是否被篡改,如果未被篡改,则验证成功,进行步骤S33,否则为验证不通过。
使用非碰撞哈希函数h(·)验证的公式为
rootφ=h(mk,h0,h1)
即,用户端用私钥mk、h0和h1作为非碰撞哈希函数h(·)的参数进行计算,查看是否等于构造Merkle二叉树的流程中所保存的根节点的值,如果成立,则意味着h0和h1值没有被篡改,进行步骤S33,否则验证失败,不再进行下一步;
S33:用户端从h0或h1开始,自上而下构造出从根节点φ到待验证数据最邻近的父节点k∈{0,1}t的一条路径,该路径只包括Merkle二叉树中对于数据mk的父节点、父节点的父节点,及往上的所有父节点,计算该路径上所有节点的值;
计算式如下:
上述计算过程是重新从Merkle二叉树点沿着一条主树干能够反向迭代计算出待验证数据最邻近的父节点,由于根节点的数据一直掌握在用户端,云服务器假设篡改任一节点值都能够被验证检测到。如果即可证明该数据mk是完整的,没有被篡改。否则验证失败,mk已被篡改。
Merkle二叉树中不位于上述路径的其它节点不用计算。上述计算方式是由根生叶产生子节点,再重新由根沿着主树干路径产生待验证数据最邻近的父节点进行验证。
S34:将S33中计算得到的数据mk最邻近节点的数据与构造Merkle二叉树的流程中得到的相同节点的数据进行对比,如果相同,则可证明该数据mk数据完整,没有被篡改。否则验证失败,mk被篡改。
Merkle二叉树的流程中得到的相同节点的数据是由云服务器发送给用户端。
优选的,在迭代计算过程中,中间结果不会保存,以节约用户端存储资源。
上述流程在保障安全防恶意篡改的前提下,实现了降低通信量,减小云服务器计算量,准确定位错误数据节点。同时,在存储的数据发生改变时,云服务器不必再大量的改变验证所需数据。用户验证结果的计算快速高效。
进一步的,还包括上传数据、更新数据、下载数据的流程、
(四)上传数据的流程
用户端发送指令,将数据m发送至云端位置k处,同时将数据m在Merkle二叉树中对应的父节点的值计算出来和数据m一同上传,该操作是云端数据刚开放时进行的操作。
(五)更新数据的流程
用户端发送数据更新指令,将数据m′替换云端位置k处的数据,同时将数据m′在Merkle二叉树中对应的父节点的值重新计算出来和数据m′一同上传。
(二)下载数据的流程
用户端发送数据下载指令,云服务器将云端位置k处的数据和数据在Merkle二叉树中对应的父节点的值一同返回给用户端。
Claims (8)
1.一种新型的数据完整性验证方法,其特征在于,该方法所应用的系统包括云服务器、至少一个用户端;所述方法包括全局参数生成流程、构造Merkle二叉树流程、数据完整性验证流程;
所述全局参数生成流程,即云服务器选择一个非碰撞哈希函数h(·),并公布给用户端作为全局参数;
所述构造Merkle二叉树流程中,即对Merkle二叉树各个节点进行赋值;
所述数据完整性验证流程,即从Merkle二叉树根节点开始自上而下构造一个从根节点层到分支节点层方向的路径,该路径只包括Merkle二叉树中对于待验证数据最邻近的父节点、最邻近的父节点的父节点,及上推的所有父节点;该流程迭代计算该路径上所有节点的值,直到计算得出待验证数据最邻近父节点的值,并将该父节点的值与构造Merkle二叉树流程中得到的相同节点的数据进行对比,如果相同,则证明数据完整,否则证明被篡改。
2.如权利要求1所述的新型的数据完整性验证方法,其特征在于,构造Merkle二叉树流程包括第二层赋值步骤、第一层赋值步骤、第三层至第t层赋值步骤;
第二层赋值步骤具体为:云服务器生成两个随机数r1,r2,赋值给Merkle二叉树结构中的第二层节点h0和h1;其中,r1→h0,r2→h1,并将h0和h1的值发送给用户端;
第一层赋值步骤具体为:用户端在本地生成私钥mk,作为非碰撞哈希函数h(·)的参数,计算的结果赋值给Merkle二叉树结构中的根节点,赋值公式为:
rootφ=h(mk,h0,h1);
第三层至t层赋值步骤具体为:
用户端在本地计算出Merkle二叉树第三层至t层节点的值:
3.如权利要求2所述的新型的数据完整性验证方法,其特征在于,第一层赋值步骤中,用户端保存根节点的值。
4.如权利要求2所述的新型的数据完整性验证方法,其特征在于,构造Merkle二叉树流程中,还包括用户端将整个Merkle二叉树的除根节点之外的所有节点值和数据上传至云服务器进行存储的步骤。
5.如权利要求2所述的新型的数据完整性验证方法,其特征在于,数据完整性验证流程具体包括如下步骤:
S31:假定用户端下载了数据mk,欲验证其是否被篡改,云服务器将Merkle二叉树第二层两个数据h0和h1的值发送给用户端;
S32:用户端使用非碰撞哈希函数h(·)验证h0和h1值是否被篡改,如果h0和h1值未被篡改,进行步骤S33,否则为验证不通过;
使用非碰撞哈希函数h(·)验证的公式为
rootφ=h(mk,h0,h1)
如果上式成立,则证明h0和h1值未被篡改;
S33:用户端从h0或h1开始,自上而下构造出从根节点层到分支节点层的一条路径;该路径只包括数据mk对应的最邻近父节点、该父节点的父节点,及及往上的所有父节点,迭代计算该路径上所有节点的值;
迭代计算式如下:
S34:将S33中计算得到的数据mk最邻近父节点的数据与构造Merkle二叉树的流程中得到的该节点的数据进行对比,如果相同,则可证明该数据mk数据完整,没有被篡改,否则验证失败,mk已被篡改。
6.如权利要求1~5任一项所述的新型的数据完整性验证方法,其特征在于,所述方法还包括用户端上传数据的流程,即用户端发送指令,将数据m发送至云服务器,同时将数据m在Merkle二叉树中最邻近的父节点的值计算出来和数据m一同上传。
7.如权利要求1~5任一项所述的新型的数据完整性验证方法,其特征在于,所述方法还包括用户端更新数据的流程,即用户端发送数据更新指令,用新数据替换云服务器中对应位置处的数据,同时将新数据在Merkle二叉树中最邻近的父节点的值重新计算出来和新数据一同上传。
8.如权利要求1~5任一项所述的新型的数据完整性验证方法,其特征在于,所述方法还包括用户端下载数据的流程,即用户端发送数据下载指令,云服务器将对应位置处的数据和该数据在Merkle二叉树中最邻近的父节点的值一同返回给用户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211447775.4A CN115758477A (zh) | 2022-11-18 | 2022-11-18 | 一种新型的数据完整性验证方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211447775.4A CN115758477A (zh) | 2022-11-18 | 2022-11-18 | 一种新型的数据完整性验证方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115758477A true CN115758477A (zh) | 2023-03-07 |
Family
ID=85373428
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211447775.4A Pending CN115758477A (zh) | 2022-11-18 | 2022-11-18 | 一种新型的数据完整性验证方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115758477A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117893139A (zh) * | 2024-03-15 | 2024-04-16 | 山东未来网络研究院(紫金山实验室工业互联网创新应用基地) | 一种基于产业链的物料配比方法 |
-
2022
- 2022-11-18 CN CN202211447775.4A patent/CN115758477A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117893139A (zh) * | 2024-03-15 | 2024-04-16 | 山东未来网络研究院(紫金山实验室工业互联网创新应用基地) | 一种基于产业链的物料配比方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107193490B (zh) | 一种基于区块链的分布式数据存储系统及方法 | |
CN110278462B (zh) | 一种基于区块链的流动放映授权管理方法 | |
US20230316273A1 (en) | Data processing method and apparatus, computer device, and storage medium | |
CN110912707A (zh) | 基于区块链的数字证书处理方法、装置、设备及存储介质 | |
CN112101942B (zh) | 基于区块链的交易请求处理方法、系统、装置及设备 | |
US10282461B2 (en) | Structure-based entity analysis | |
US20210297269A1 (en) | Token node locking with fingerprints authenticated by digital certificates | |
CN115758477A (zh) | 一种新型的数据完整性验证方法 | |
CN110910110B (zh) | 一种数据处理方法、装置及计算机存储介质 | |
CN115733763A (zh) | 一种关联网络的标签传播方法、装置及计算机可读存储介质 | |
CN116091245A (zh) | 一种基于区块链的移动端保险管理方法 | |
CN113746684B (zh) | 一种网络设备纳管方法、装置、计算机设备及存储介质 | |
CN113129008B (zh) | 数据处理方法、装置、计算机可读介质及电子设备 | |
CN109450636B (zh) | 一种云存储中群组数据的完整性验证方法 | |
CN110555783A (zh) | 一种基于区块链的电力营销数据保护方法及系统 | |
Xiao et al. | Blockchain‐based reliable image copyright protection | |
EP3349416B1 (en) | Relationship chain processing method and system, and storage medium | |
CN113011960A (zh) | 基于区块链的数据访问方法、装置、介质及电子设备 | |
CN112529102A (zh) | 特征拓展方法、设备、介质及计算机程序产品 | |
CN115955489A (zh) | 一种面向云存储的机载软件持有性证明方法 | |
Zhang et al. | A Blockchain‐Based Microgrid Data Disaster Backup Scheme in Edge Computing | |
CN113722728B (zh) | 基于区块链的智慧政务信息管理方法 | |
CN115098893A (zh) | 基于区块链的数据存储方法及装置 | |
Wang et al. | A lightweight data integrity verification with data dynamics for mobile edge computing | |
CN115202955A (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 |