CN110163007B - 基于区块链的数据完整性验证方法、设备和存储介质 - Google Patents

基于区块链的数据完整性验证方法、设备和存储介质 Download PDF

Info

Publication number
CN110163007B
CN110163007B CN201910329009.XA CN201910329009A CN110163007B CN 110163007 B CN110163007 B CN 110163007B CN 201910329009 A CN201910329009 A CN 201910329009A CN 110163007 B CN110163007 B CN 110163007B
Authority
CN
China
Prior art keywords
digital asset
asset file
leaf node
file
nodes
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
Application number
CN201910329009.XA
Other languages
English (en)
Other versions
CN110163007A (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.)
Xi'an Qianxi Network Technology Co.,Ltd.
Original Assignee
Xian University of Posts and Telecommunications
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 Xian University of Posts and Telecommunications filed Critical Xian University of Posts and Telecommunications
Priority to CN201910329009.XA priority Critical patent/CN110163007B/zh
Publication of CN110163007A publication Critical patent/CN110163007A/zh
Application granted granted Critical
Publication of CN110163007B publication Critical patent/CN110163007B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/602Providing cryptographic facilities or services
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Bioethics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)

Abstract

本申请提供一种基于区块链的数据完整性验证方法。该方法包括:用户终端对数字资产文件进行加密和时间戳,分割为数据块,将分割的数据块作为Merkle树的叶子节点生成认证路径,并将根节点的哈希值保存到服务器端的区块链单元,并将带有时间戳的数字资产文件发送到服务器端保存,将待验证的叶子节点和标签发送到服务器端,服务器端将根据标签和叶子节点检索的该叶子节点的认证路径,在用户终端根据本地保存的叶子节点和服务器返回的认证路径生成数字签名,根据数据签名与区块链单元存储的数据段值对数字资产文件的完整性进行验证。本申请的方法,将用户终端的Merkle树的根节点的哈希值保存到区块链,实现了对用户私钥的无信任保护。

Description

基于区块链的数据完整性验证方法、设备和存储介质
技术领域
本发明涉及数据处理,更为具体而言,涉及一种基于区块链的数据完整性验证方法、设备和存储介质。
背景技术
伴随着信息通信和处理技术的高速发展,进入了云计算时代。网络会计、办公自动化、电子支付系统平台等使数字资产的应用愈加广泛。数字资产是具有开创性的、依托磁性介质而存在的一连串“0”和“1”的代码。它们虽是数字化商品,却体现出资产的性质,因此称为数字资产。数字资产的出现,颠覆了传统资产的观念,使得企业结构和个人能够方便快捷地通过网络享受到数字化时代的服务,极大地减少了资产所占用的空间,节约了大量人力物力。数字资产在带给人们便捷的同时也带来了一些安全问题。原来局限在自己统辖范围内的财产现在暴露在互联网上,并且这些资源和数据放到了第三方云存储提供商所在的共享公共网络上,不再被本地用户拥有。用户通过网络支配自己的财产,有可能在存储和通信过程中遭到未授权的第三方篡改。怎样让用户确信他们的数据完整的存放在云端以及保证拒绝第三方访问是数字资产保护必须要解决的一个问题。
发明内容
本申请提供了一种基于区块链的数据完整性验证方法、设备和存储介质,基于编号寻径的Merkle树数据完整性检测算法来求解节点的数据完整性证明信息,能够提高认证路径求解的效率,降低求解的运算量;目前用户缺乏行之有效的存储私钥的方法,将用户的数字签名存储到云端区块链上,实现了对用户私钥的无信任保护。
本申请实施方式的第一方面,提供一种基于区块链的数据完整性验证方法,包括:用户终端对数字资产文件进行加密,将当前时间保存到加密后的数字资产文件的预定位置,然后将修改后的数字资产文件进行对称加密,得到密文,将所述数字资产文件的预定位置的时间信息和所述数字资产文件的文件名称作为所述数字资产文件的标签保存;将所述密文分割为九个加密文件块,将所述九个加密文件块根据预定算法生成Merkle树的叶子节点,生成叶子节点的认证路径,将Merkle树的根节点root的哈希值发送到服务器端作为数据段值保存到所述服务器端的区块链单元;将修改后的数字资产文件发送到所述服务器端,以便所述服务器端读取所述修改后的数字资产文件的所述预定位置中的时间信息,以从所述预定位置中获取的时间信息和所述修改后的数字资产文件的文件名称作为标签存储到所述服务器端的数据库;将本地保存的所述Merkle树的叶子节点中的第一叶子节点信息和所述数字资产文件的标签发送到所述服务器端,以便所述服务器端根据所述标签检索所述数据库得到对应的数字资产文件,将检索得到的数字资产文件根据所述预定算法生成Merkle树的叶子节点,并根据所述第一叶子节点信息在所述服务器端生成的Merkle树的叶子节点中确定对应的叶子节点的认证路径;接收所述服务器端返回的对应的叶子节点的认证路径,根据所述对应的叶子节点的认证路径与从所述区块链单元检索的数据段值确定所述数字资产文件的完整性。
在一些实施方式中,所述将所述九个加密文件块根据预定算法生成Merkle树的叶子节点,生成叶子节点的认证路径包括:
a,记录Merkle树叶子节点的总数目和要求解认证路径的叶子节点的编号;
b,初始化叶子节点编号k,令k等于要求解认证路径的叶子节点的编号;初始化记录Merkle树中每一层的开始的编号startIndex,令startIndex=0;初始化节点总数count,令其等于Merkle树中所有叶子节点的数目;初始化存储叶子节点认证路径的数组certifyPath,令为空;
c,判断节点总数count是否为1,若是,结束寻径,保存叶子节点认证路径的数组certifyPath;
d,判断节点编号k是否为奇数,若是,进一步判断节点编号k是否等于节点总数count,若是,返回步骤c,否则将编号startIndex+k+1存储到叶子节点认证路径的数组certifyPath中,令k=k/2+1;startIndex=startIndex+count;count=count/2+(count)mod2,返回步骤c;
e,如果k不是奇数,将编号startIndex+k-1存储到叶子节点认证路径的数组certifyPath中,令k=k/2;startIndex=startIndex+count;count=count/2+(count)mod2,返回步骤c。
在一些实施方式中,所述根据所述对应的叶子节点的认证路径与从所述区块链单元检索的数据段值确定所述数字资产文件的完整性包括:将用户终端本地保存的所述数字资产文件的第一叶子节点与所述对应的叶子节点的认证路径进行哈希运算得到数字签名;确定所述数字签名与从所述区块链单元检索的数据段值是否相等,若相等,则确定从所述服务器端获取的数字资产文件完整,否则,确定从所述服务器获取的数字资产文件不完整。
在一些实施方式中,所述服务器端的数据库所在的网络地址与所述区块链单元所在的网络地址不同。
在一些实施方式中,所述用户终端对数字资产文件进行加密包括:采用高级加密标准AES算法对数字资产文件进行加密,保存所述AES算法的密钥。
在一些实施方式中,所述方法还包括:记录各叶子节点的哈希值。
在一些实施方式中,所述将用户终端本地保存的所述数字资产文件的第一叶子节点与所述对应的叶子节点的认证路径进行哈希运算得到数字签名包括:将本地保存的所述数字资产文件的第一叶子节点与所述对应的叶子节点的认证路径进行哈希运算Hash(Hash(Hash(Hash(n||H)||I)||E)||C)得到数字签名,其中,n为第一叶子节点的编号,H,I,E,C为所述对应的叶子节点的哈希值。
在一些实施方式中,所述数字资产文件包括MHTML文件。
本申请实施方式的第二方面,提供一种终端设备,包括存储器和处理器,其中,所述存储器,存储有计算机指令;所述处理器,配置为运行所述计算机指令以使所述终端设备执行上述第一方面所述的方法。
本申请实施方式的第三方面,提供一种机器可读的非易失性存储介质,所述存储介质存储有计算机指令,所述计算机指令被处理器执行时实现上述第一方面所述的方法。
附图说明
图1示出了根据本发明实施方式的基于区块链的数据完整性验证方法的流程示意图。
图2示出了根据本发明实施方式的Merkle树的架构示意图。
图3示出了根据本发明实施方式的终端设备的架构示意图。
具体实施方式
以下结合附图和具体实施方式对本发明的各个方面进行详细阐述。其中,众所周知的模块、单元及其相互之间的连接、链接、通信或操作没有示出或未作详细说明。并且,所描述的特征、架构或功能可在一个或一个以上实施方式中以任何方式组合。本领域技术人员应当理解,下述的各种实施方式只用于举例说明,而非用于限制本发明的保护范围。还可以容易理解,本文所述和附图所示的各实施方式中的模块或单元或处理方式可以按各种不同配置进行组合和设计。
参见图1,图1示出了根据本发明实施方式的基于区块链的数据完整性验证方法的流程示意图,该方法可包括:步骤S101、步骤S102、步骤S103、步骤S104和步骤S105。下面结合具体的实施例对上述步骤进行说明。
步骤S101,用户终端对数字资产文件进行加密,将当前时间保存到加密后的数字资产文件的预定位置,然后将修改后的数字资产文件进行对称加密,得到密文,将所述数字资产文件的预定位置的时间信息和所述数字资产文件的文件名称作为所述数字资产文件的标签保存。
本申请的实施方式中,用户终端可包括诸如电脑、手机、平板电脑等之类的终端设备。这些终端设备配备有处理器和存储器,能够对各种类型和格式的数据进行各种处理,例如,加密、修改、查询等。除此之外,这些终端设备还配置有数据库,可以将数据存储到数据库,按照数据的标签检索数据库,查找到对应的数据。
在一些实施方式中,数字资产文件可以是MHTML(MIME Encapsulation ofAggregate HTML Documents),又称单一档案网页或网页封存档案。在其他实施方式中,数字资产文件可以是其他格式的文件,本申请实施方式对此不做限定。为了确保数据传输的安全性,用户终端可以采用高级加密标准AES(Advanced Encryption Standard)对数字资产文件进行加密,在用户终端保存AES算法的密钥。
在对数字资产文件进行AES加密之后,对加密后的数字资产文件加盖时间戳。在一种具体的实施方式中,将用户终端的当前时间保存到加密后的数字资产文件的预定位置,例如,可以放在数字资产文件的第一行。在其他实施方式中,时间信息可以保存在数字资产文件的其他位置。保存到预定位置的时间信息可以作为该数字资产文件的时间戳。
在一些实施方式中,覆盖后时间戳修改后的数字资产文件可以进行加密,例如,可以采用对称加密算法,得到密文。需要说明的是,本领域技术人员可以采用已知的任何一种对称加密算法,本申请实施方式对此不在限定。
在用户终端上,数字资产文件的预定位置的时间信息和该数字资产文件的文件名称可以作为该数字资产文件的标签保存,例如,可以保存到该终端的数据库。通过该标签可以在数据库中查询到该数字资产文件。
步骤S102,将所述密文分割为九个加密文件块,将所述九个加密文件块根据预定算法生成Merkle树的叶子节点,生成叶子节点的认证路径,将Merkle树的根root值发送到服务器端作为数据段值保存到所述服务器端的区块链单元。
在本申请的实施方式中,将对称加密后的密文分割为9个加密文件块,这些加密文件块的大小相同。这些加密文件块根据预定算法生成Merkle树的叶子节点,生成叶子节点的认证路径。生成Merkle树的预定算法可以是本领域技术人员已知的任何一种Merkle树的生成算法,本申请实施方式对此不做限定。
Merkle树(又叫哈希树)是一种二叉树,由一个根节点、一组中间节点和一组叶节点组成。最下面的叶节点包含存储数据或其哈希值,每个中间节点是它的两个孩子节点内容的哈希值,根节点也是由它的两个子节点内容的哈希值组成。在一种具体的实施例中,Merkle树的结构如图2所示。
在一些实施方式中,本申请提供了一种采用编号寻径法生成认证路径。在对编号寻径法进行描述之前,对该方法中涉及的概念进行简要描述。
求解认证路径的叶子节点编号:用k来表示要求解的叶子节点的编号,其中,k为整数;
Merkle树中每一层开始的编号:用startIndex来表示Merkle树中每一层中第一个节点的编号;
节点总数:用count来表示整个Merkle树中节点的总数目;
遍历路径:用数据结构为数组的变量certifyPath来保存认证路径上的节点编号。
在终端设备的采用计算机程序实现时,编号寻径法确定叶子节点的认证路径的方法可包括:
a,记录Merkle树叶子节点的总数目和要求解认证路径的叶子节点的编号,在本实施方式中,叶子节点的总数目为9个,叶子节点的编号可以为1到9。
b,初始化叶子节点编号k,令k等于要求解认证路径的叶子节点的编号;初始化记录Merkle树中每一层的开始的编号startIndex,令startIndex=0;初始化节点总数count,令其等于Merkle树中所有叶子节点的数目,在本实施例中,叶子节点的数目为9;初始化存储叶子节点认证路径的数组certifyPath,令为空;
c,判断节点总数count是否为1,若是,结束寻径,保存叶子节点认证路径的数组certifyPath;
d,判断节点编号k是否为奇数,若是,进一步判断节点编号k是否等于节点总数count,若是,返回步骤c,否则将编号startIndex+k+1存储到叶子节点认证路径的数组certifyPath中,令k=k/2+1;startIndex=startIndex+count;count=count/2+(count)mod2,返回步骤c;
e,如果k不是奇数,将编号startIndex+k-1存储到叶子节点认证路径的数组certifyPath中,令k=k/2;startIndex=startIndex+count;count=count/2+(count)mod2,返回步骤c。
在一种具体的实施例中,编号寻径法的方法可包括:
第一步,记录Merkle树叶子节点的总数目和要求解认证路径的叶子节点的编号;
第二步,初始化叶子节点编号k,令k等于要求解认证路径的叶子节点的编号;初始化记录Merkle树中每一层的开始的编号startIndex,令startIndex=0;初始化节点总数count,令其等于Merkle树中所有叶子节点的数目;初始化存储叶子节点认证路径的数组certifyPath,令为空;
第三步,如果count=1,结束寻径,保存certifyPath;
第四步,如果k是奇数,若k=count,返回第三步,否则将编号startIndex+k+1存储到certifyPath中,令k=k/2+1;startIndex=startIndex+count;count=count/2+(count)mod2;返回第三步;
第五步,如果k是偶数,将编号startIndex+k-1存储到certifyPath中,令k=k/2;startIndex=startIndex+count;count=count/2+(count)mod2;返回第三步。
在一种具体的实施例中,Merkle树的9个叶子节点和对应的叶子节点的认证路径上的节点编号,如表1所示。表1的左侧一栏为叶子节点的编号,表1的右侧一栏为叶子节点的认证路径上的节点编号,即叶子节点哈希值,上述的数组certifyPath中存储的编号值。在用户终端上,记录各个叶子节点的哈希值,与对应的叶子节点编号关联保存在终端的数据库。
表1
各叶子节点编号 认证路径上节点编号
1 2,11,16,19
2 1,11,16,19
3 4,10,16,19
4 3,10,16,19
5 6,13,15,19
6 5,13,15,19
7 8,12,15,19
8 7,12,15,19
9 18
需要说明的是,上述的编号寻径法可以适用于满二叉树或类满二叉树(缺一个叶子节点)。本发明实施方式提供的编号寻径方法的算法复杂度为O(log2n),与其他的认证路径求解方式相比,具有较低的算法复杂度,因而能够具有较高的运算效率。
在本申请的另外一些实施方式中,可以采用双栈寻径方法,该方法可以适用于非完全二叉树。下面对双栈寻径法中涉及的一些用语进行简要说明。
遍历路径:在树的遍历过程中利用栈的性质保存访问过的节点,用stackNode表示;
认证路径:在树的遍历过程中可以利用栈或者数组来保存认证路径上的节点,用变量stackAuth表示;
树的节点:树中用n_(h,j)表示纵向从下到上第h层横向从左向右第j的节点。
节点键值:节点利用键值使二叉哈希树变成一颗有序二叉哈希树,即所有叶节点按键值大小从左向右排序。中间节点的键值则取自它左右孩子键值的中间值。
节点状态:表示二叉哈希树节点的当前状态用flag表示,状态为0,表示该节点未被访问,否则状态为1。
节点层数:二叉哈希树节点的当前层数。
第一个叶节点的遍历路径节点和认证节点会相应的压到对应栈中即stackNode和stackAuth中。以下说明的是如何通过双栈存储的节点以及节点之间的关系求解其他叶节点的认证路径。
首先,判断遍历栈stackNode栈顶节点是叶节点还是中间节点。如果是中间节点,再判断其标志位flag。如果flag,这意味它的孩子未被访问,其左右孩子应压入对应遍历栈stackNode和认证路径栈stackAuth中。如果flag=1,意味它的孩子已经被访问并且其左右孩子己经压入对应的栈中,要做的操作是根据两栈栈顶节点之间的关系或者将两栈栈顶节点交换或者两栈栈顶均弹出。如果是叶子节点,认证路径栈中的节点全部输出,因为这些节点为当前叶节点的认证路径。之后需要继续判断该叶节点是否有右兄弟。如果当前叶节点的右兄弟是认证路径栈的栈顶节点,两栈栈顶节点交换,否则两栈栈顶节点均弹出。
算法具体可包括如下步骤:
如果遍历栈的栈顶节点是中间节点;
如果遍历栈栈顶节点的flag==0,意味着遍历栈栈顶节点的孩子节点还未访问,应将其左右孩子压入对应的遍历栈和认证路径栈。之后将其节点的flag设置成1,标识该节点以被访问(情况1)。
如果遍历栈栈顶节点的flag==1,则意味其孩子己经压入对应的栈中,此时需根据两栈的栈顶节点之间的关系进行具体操作.
如果遍历栈栈顶节点的右兄弟是认证栈的栈顶节点,则两栈的栈顶节点交换(情况2)。
如果遍历栈栈顶节点的右兄弟不是认证栈的栈顶节点,则两栈栈顶节点均弹出(情况3)。
如果遍历栈的栈顶节点是叶子节点,认证栈中所有节点即为当前节点的认证路径,输出认证栈中所有节点即可。
如果遍历栈的栈顶节点没有右兄弟,则两栈栈顶节点均弹出。其实是先序遍历中向上回退(情况4)。
如果遍历栈栈顶节点的右兄弟是认证栈的栈顶节点,则两栈的栈顶节点交换(情况5)。
在一些实施方式中,Merkle树的根节点root的哈希值发送到服务器端,作为数据段值保存到服务器端的区块链单元。需要说明的是,本申请实施方式中的区块链单元的网络地址(例如,IP地址)与服务器端的数据库所在的网络地址不同。也就是说,将用户终端的Merkle树的根节点的哈希值保存到云端的单独的区块链单元,不与数字资产文件一起存储,对用户私钥的实现无信任保护。目前用户终端一侧没有切实有效的私钥存储方法,将用户的哈希树的根节点的哈希值存储到云端区块链单元,实现了对用户私钥的无信任保护。
步骤S103,将修改后的数字资产文件发送到所述服务器端,以便所述服务器端读取所述修改后的数字资产文件的所述预定位置中的时间信息,以从所述预定位置中获取的时间信息和所述修改后的数字资产文件的文件名称作为标签存储到所述服务器端的数据库。
在本申请的实施方式中,用户终端一侧的数据拥有者(即数字资产文件的拥有者)修改后的数字资产文件发送到服务器端,服务器接收用户终端发送的修改后数字资产文件,并且读取该修改后数字资产文件预定位置的时间信息,即时间戳,并且将时间戳和文件名称作为标签存储到服务器端的数据库。
步骤S104,将本地保存的所述Merkle树的叶子节点中的第一叶子节点信息和所述数字资产文件的标签发送到所述服务器端,以便所述服务器端根据所述标签检索所述数据库得到对应的数字资产文件,将检索得到的数字资产文件根据所述预定算法生成Merkle树的叶子节点,并根据所述第一叶子节点信息在所述服务器端生成的Merkle树的叶子节点中确定对应的叶子节点的认证路径。
在本申请的实施方式中,用户终端将本地保存的所述Merkle树的叶子节点中的第一叶子节点信息(例如,编号信息)和所述数字资产文件的标签发送到所述服务器端,其中,第一叶子节点可以是指本地生成的Merkle树的任意一个需要验证的叶子节点。本文中使用第一叶子节点仅是为了描述方便。
在一些实施方式中,实施步骤S104的用户终端可以是与上述步骤中描述的拥有数字资产文件的用户终端是同一用户终端。在另外一些实施方式中,发出验证的用户终端和拥有数字资产文件的用户终端不是同一用户终端,而是数据拥有者之外的另外的需要验证数字资产文件的用户终端。
服务器端收到用户终端发送的叶子节点信息和数字资产文件的标签,该标签包括数字资产文件的时间戳和文件名称,根据该标签在数据库中检索,得到对应的数字资产文件。然后,将检索得到的数字资产文件根据与用户终端一侧相同的算法生成Merkle树的叶子节点。根据上面描述的用户终端一侧的Merkle树生成算法可知,生成9个叶子节点。如果服务器端或云端存储的数字资产文件没有被篡改,那么在服务器端生成的9个叶子节点,与用户终端一侧生成的9个叶子节点是相同的。在服务器端生成的9个叶子节点中,查找与第一叶子节点信息(例如,编号)对应的叶子节点,例如,第一叶子节点为编号为1的叶子节点,那么在服务器端生成的叶子节点中查找编号为1的叶子节点。将在服务器端查到到的对应的叶子节点的认证路径返回给用户终端。
步骤S105,接收所述服务器端返回的对应的叶子节点的认证路径,根据所述对应的叶子节点的认证路径与从所述区块链单元检索的数据段值确定所述数字资产文件的完整性。
在一些实施方式中,发出验证请求的用户终端接收服务器端返回的对应的叶子节点的认证路径,然后将用户终端保存的该数字资产文件的第一叶子节点和服务器端返回的对应的叶子节点的认证路径进行哈希运算得到数字签名。在一种具体的实施例中,将用户终端本地保存的所述数字资产文件的第一叶子节点与所述对应的叶子节点的认证路径进行哈希运算得到数字签名包括:将本地保存的所述数字资产文件的叶子节点与所述对应的叶子节点的认证路径进行Hash(Hash(Hash(Hash(1||2)||11)||16)||19)哈希运算得到数字签名,其中,1为叶子节点的编号,2、11、16和19为叶子节点的哈希值。
然后,向区块链单元发送请求,检索区块链的数据段区域,获取在先存储的Merkle树的根节点的哈希值。确定所得到的数字签名与从所述区块链单元检索的某一数据段值是否相等,若相等,则确定从所述服务器端获取的数字资产文件完整,也就是说,服务器端的数字资产文件没有被篡改。否则,确定从所述服务器获取的数字资产文件不完整,服务器端的数字资产文件可能被篡改。
在一种具体的实施例中,用户终端一侧对数字资产文件的验证可包括下述步骤:
第一步,用户终端将本地的Merkle树的叶子节点编号以及资产信息文件的标签值发送到云端,并记录进行验证的叶子节点,准备接收来自云端返回的认证路径,例如用户终端发送的是Merkle树中编号为1的叶子节点;
第二步,云端服务器接收到来自用户终端的叶子节点和标签值,以标签值为索引在数据库中检索资产信息,得到对应的数字资产文件;将对应的数字资产文件按固定大小分割后生成Merkle树,并保存各叶子节点的认证路径;以来自客户端的叶子节点(编号为1)为索引,检索认证路径,将检索到的编号为1的叶子节点的认证路径发送到用户终端;
第三步、用户终端收到来自云端的反馈,即服务器端一侧的编号为1的叶子节点的认证路径,将本地保存的叶子节点的编号与来自服务器端的认证路径信息进行类似Hash(Hash(Hash(Hash(1||2)||11)||16)||19)的运算得到数字签名;
第四步、检索云端区块链单元各区块的数据段区域,如果数字签名与某数据段存储的值相等,则得到可靠结果,云端数据库中存储的数据完整且未被篡改;若数字签名与所有区块数据段存储的信息均不匹配,则说明云端存储数据不完整或已被篡改。
本申请实施方式还提供一种终端设备,其可以是个人电脑、智能手机或者具有数据处理功能的其他终端设备。如图3所示,终端设备300可包括存储器301和处理器302,其中,所述存储器301,存储有计算机指令;所述处理器302,配置为运行所述计算机指令以使所述终端设备执行上述第一方面所述的方法。
本申请实施方式还提供一种系统,该系统可包括服务器端和用户终端,其中,服务器端可包括云服务提供单元和云端区块链单元,云服务器提供单元提供上述的服务器端的相关的数据处理,例如,数字资产文件的存储和检索等,接收用户终端发起的验证请求,向用户终端返回对应叶子节点的认证路径,具体请参见上面的相关描述,在此不再赘述。区块链单元提供用户终端的私钥的存储操作等,例如,接收用户终端的数字签名检索请求,向用户终端返回数字签名,即根节点的哈希值,以便对服务器端的数字资产文件进行验证,具体请参见上面的相关描述,在此不再赘述。
本申请实施方式的第三方面,提供一种机器可读的非易失性存储介质,所述存储介质存储有计算机指令,所述计算机指令被处理器执行时实现上述用户终端一侧所述的方法,以及实现上述的服务器端一侧所述的方法,以及区块链单元一侧所述的方法。
通过以上实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件结合硬件平台的方式来实现。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,智能手机或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本发明说明书中使用的术语和措辞仅仅为了举例说明,并不意味构成限定。本领域技术人员应当理解,在不脱离所公开的实施方式的基本原理的前提下,对上述实施方式中的各细节可进行各种变化。因此,本发明的范围只由权利要求确定,在权利要求中,除非另有说明,所有的术语应按最宽泛合理的意思进行理解。

Claims (9)

1.一种基于区块链的数据完整性验证方法,其特征在于,包括:
用户终端对数字资产文件进行加密,将当前时间保存到加密后的数字资产文件的预定位置,然后将修改后的数字资产文件进行对称加密,得到密文,将所述数字资产文件的预定位置的时间信息和所述数字资产文件的文件名称作为所述数字资产文件的标签保存;
将所述密文分割为九个加密文件块,将所述九个加密文件块根据预定算法生成Merkle树的叶子节点,生成叶子节点的认证路径,将Merkle树的根节点root的哈希值发送到服务器端作为数据段值保存到所述服务器端的区块链单元;其中,所述将所述九个加密文件块根据预定算法生成Merkle树的叶子节点,生成叶子节点的认证路径包括:
a,记录Merkle树叶子节点的总数目和要求解认证路径的叶子节点的编号;
b,初始化叶子节点编号k,令k等于要求解认证路径的叶子节点的编号;初始化记录Merkle树中每一层的开始的编号startIndex,令startIndex=0;初始化节点总数count,令其等于Merkle树中所有叶子节点的数目;初始化存储叶子节点认证路径的数组certifyPath,令为空;
c,判断节点总数count是否为1,若是,结束寻径,保存叶子节点认证路径的数组certifyPath;
d,判断节点编号k是否为奇数,若是,进一步判断节点编号k是否等于节点总数count,若是,返回步骤c,否则将编号startIndex+k+1存储到叶子节点认证路径的数组certifyPath中,令k=k/2+1;startIndex=startIndex+count;count=count/2+(count)mod2,返回步骤c;
e,如果k不是奇数,将编号startIndex+k-1存储到叶子节点认证路径的数组certifyPath中,令k=k/2;startIndex=startIndex+count;count=count/2+(count)mod2,返回步骤c;
将修改后的数字资产文件发送到所述服务器端,以便所述服务器端读取所述修改后的数字资产文件的所述预定位置中的时间信息,以从所述预定位置中获取的时间信息和所述修改后的数字资产文件的文件名称作为标签存储到所述服务器端的数据库;
将本地保存的所述Merkle树的叶子节点中的第一叶子节点信息和所述数字资产文件的标签发送到所述服务器端,以便所述服务器端根据所述标签检索所述数据库得到对应的数字资产文件,将检索得到的数字资产文件根据所述预定算法生成Merkle树的叶子节点,并根据所述第一叶子节点信息在所述服务器端生成的Merkle树的叶子节点中确定对应的叶子节点的认证路径;
接收所述服务器端返回的对应的叶子节点的认证路径,根据所述对应的叶子节点的认证路径与从所述区块链单元检索的数据段值确定所述数字资产文件的完整性。
2.根据权利要求1所述的方法,其特征在于,所述根据所述对应的叶子节点的认证路径与从所述区块链单元检索的数据段值确定所述数字资产文件的完整性包括:
将用户终端本地保存的所述数字资产文件的第一叶子节点与所述对应的叶子节点的认证路径进行哈希运算得到数字签名;
确定所述数字签名与从所述区块链单元检索的数据段值是否相等,若相等,则确定从所述服务器端获取的数字资产文件完整,否则,确定从所述服务器获取的数字资产文件不完整。
3.根据权利要求1所述的方法,其特征在于,所述服务器端的数据库所在的网络地址与所述区块链单元所在的网络地址不同。
4.根据权利要求1所述的方法,其特征在于,所述用户终端对数字资产文件进行加密包括:
采用高级加密标准AES算法对数字资产文件进行加密,保存所述AES算法的密钥。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
记录各叶子节点的哈希值。
6.根据权利要求5所述的方法,其特征在于,所述将用户终端本地保存的所述数字资产文件的第一叶子节点与所述对应的叶子节点的认证路径进行哈希运算得到数字签名包括:
将本地保存的所述数字资产文件的第一叶子节点与所述对应的叶子节点的认证路径进行哈希运算Hash(Hash(Hash(Hash(n||H)||I)||E)||C)得到数字签名,其中,n为第一叶子节点的编号,H,I,E,C为所述对应的叶子节点的哈希值。
7.根据权利要求1所述的方法,其特征在于,所述数字资产文件包括MHTML文件。
8.一种终端设备,包括存储器和处理器,其中,
所述存储器,存储有计算机指令;
所述处理器,配置为运行所述计算机指令以使所述终端设备执行权利要求1到7所述的方法。
9.一种机器可读的非易失性存储介质,所述存储介质存储有计算机指令,所述计算机指令被处理器执行时实现权利要求1到7所述的方法。
CN201910329009.XA 2019-04-23 2019-04-23 基于区块链的数据完整性验证方法、设备和存储介质 Active CN110163007B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910329009.XA CN110163007B (zh) 2019-04-23 2019-04-23 基于区块链的数据完整性验证方法、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910329009.XA CN110163007B (zh) 2019-04-23 2019-04-23 基于区块链的数据完整性验证方法、设备和存储介质

Publications (2)

Publication Number Publication Date
CN110163007A CN110163007A (zh) 2019-08-23
CN110163007B true CN110163007B (zh) 2021-05-04

Family

ID=67638673

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910329009.XA Active CN110163007B (zh) 2019-04-23 2019-04-23 基于区块链的数据完整性验证方法、设备和存储介质

Country Status (1)

Country Link
CN (1) CN110163007B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112241514A (zh) * 2019-07-19 2021-01-19 傲为信息技术(江苏)有限公司 一种数字资产认证处理平台及方法
CN110955909B (zh) * 2019-10-12 2022-08-05 四川九洲电器集团有限责任公司 个人数据保护方法及区块链节点
CN110768786A (zh) * 2019-10-29 2020-02-07 上海交通大学 基于aes算法的信息分割加密及解密合并系统和方法
WO2020180365A1 (en) * 2019-12-05 2020-09-10 Futurewei Technologies, Inc. System and method of establishing a trusted relationship in a distributed system
CN111898164B (zh) * 2020-07-02 2024-03-29 武汉纺织大学 一种支持标签区块链存储和查询的数据完整性审计方法
CN112015734B (zh) * 2020-08-06 2021-05-07 华东师范大学 一种面向区块链的紧凑Merkle多值证明并行生成及验证方法
CN112100144A (zh) * 2020-08-20 2020-12-18 东软集团股份有限公司 区块链文件共享方法、装置、存储介质及电子设备
CN112035890B (zh) * 2020-09-04 2022-08-05 北京邮电大学 一种数据完整性验证方法及装置
CN112435026B (zh) * 2020-11-27 2023-03-28 从法信息科技有限公司 用零知识证明保护文件交易信息的方法、装置和电子设备
CN112989405A (zh) * 2021-02-05 2021-06-18 武汉北大高科软件股份有限公司 一种数据存证的可信化存储方法、装置、设备和存储介质
CN113570194A (zh) * 2021-06-28 2021-10-29 北京电链科技有限公司 一种基于区块链的电力施工业务数据处理方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106295406A (zh) * 2016-08-13 2017-01-04 深圳市樊溪电子有限公司 一种用于区块链自安全存储系统及其方法
CN107770154A (zh) * 2017-09-22 2018-03-06 中国科学院信息工程研究所 基于云存储的区块链可靠数据存储方法、终端及系统
CN108595720A (zh) * 2018-07-12 2018-09-28 中国科学院深圳先进技术研究院 一种区块链时空数据查询方法、系统及电子设备
CN108876370A (zh) * 2018-06-12 2018-11-23 北京航空航天大学 一种异构多链架构下跨区块链共享开放数据的体系架构
CN109003099A (zh) * 2018-06-19 2018-12-14 西安邮电大学 区块链节点数据处理方法、设备和存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10460118B2 (en) * 2016-08-30 2019-10-29 Workday, Inc. Secure storage audit verification system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106295406A (zh) * 2016-08-13 2017-01-04 深圳市樊溪电子有限公司 一种用于区块链自安全存储系统及其方法
CN107770154A (zh) * 2017-09-22 2018-03-06 中国科学院信息工程研究所 基于云存储的区块链可靠数据存储方法、终端及系统
CN108876370A (zh) * 2018-06-12 2018-11-23 北京航空航天大学 一种异构多链架构下跨区块链共享开放数据的体系架构
CN109003099A (zh) * 2018-06-19 2018-12-14 西安邮电大学 区块链节点数据处理方法、设备和存储介质
CN108595720A (zh) * 2018-07-12 2018-09-28 中国科学院深圳先进技术研究院 一种区块链时空数据查询方法、系统及电子设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
一种基于区块链的身份识别技术;苏宣瑞等;《中兴通讯技术》;20190220;第24卷(第6期);第61-67页 *
区块链中的密码学技术;王化群等;《南京邮电大学学报(自然科学版)》;20180205;第37卷(第6期);第41-48页 *

Also Published As

Publication number Publication date
CN110163007A (zh) 2019-08-23

Similar Documents

Publication Publication Date Title
CN110163007B (zh) 基于区块链的数据完整性验证方法、设备和存储介质
AU2017269736B2 (en) Multiple-link cryptologic blockchain
Li et al. FADB: A fine-grained access control scheme for VANET data based on blockchain
Venkatesh et al. Improving public auditability, data possession in data storage security for cloud computing
KR20210092802A (ko) 블록체인 네트워크를 통한 데이터의 효율적이고 안전한 처리, 접근 및 전송을 위한 시스템 및 방법
Garg et al. RITS-MHT: Relative indexed and time stamped Merkle hash tree based data auditing protocol for cloud computing
US10635824B1 (en) Methods and apparatus for private set membership using aggregation for reduced communications
CN112131227A (zh) 一种基于联盟链的数据查询方法及装置
Azraoui et al. Publicly verifiable conjunctive keyword search in outsourced databases
Guo et al. Dynamic proof of data possession and replication with tree sharing and batch verification in the cloud
CN111988149B (zh) 一种工业互联网中的数据共享方法、装置及系统
Shao et al. Achieve efficient and verifiable conjunctive and fuzzy queries over encrypted data in cloud
CN114826703A (zh) 基于区块链的数据搜索细粒度访问控制方法及系统
CN115208628B (zh) 基于区块链的数据完整性验证方法
CN111190959A (zh) 一种区块链去中心化存储基于数据的加密方法及系统
Li et al. Blockchain-based fair and decentralized data trading model
CN115098893A (zh) 基于区块链的数据存储方法及装置
Nagesh et al. Modeling an efficient authentic provable data possession model using legacy filter model for IOT and cloud environment
Bergers et al. Dwh-dim: a blockchain based decentralized integrity verification model for data warehouses
Vyas et al. Design of an efficient verification scheme for correctness of outsourced computations in cloud computing
CN111222170B (zh) 基于公链的区块链电子版证书系统及其存证流程和验证方法
CN113438080B (zh) 一种基于区块链的二手车信息共享方法
Li et al. Verifiable range query processing for cloud computing
Wu et al. Using Smart Contracts to Improve Searchable Symmetric Encryption
Naveed et al. The Adaptive Security of Cloud Information Management Encrypted with Cryptographic Network Coding

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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210622

Address after: 712000 Room 802, 8 / F, building 14, West Yungu phase I, Fengxi new town, Xixian New District, Xi'an City, Shaanxi Province

Patentee after: Xi'an Qianxi Network Technology Co.,Ltd.

Address before: No. 618, Weiguo Road, Chang'an District, Xi'an City, Shaanxi Province, 710121

Patentee before: XI'AN University OF POSTS & TELECOMMUNICATIONS

PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Blockchain based Data integrity verification methods, devices and storage media

Effective date of registration: 20230629

Granted publication date: 20210504

Pledgee: Xi'an Caijin Financing Guarantee Co.,Ltd.

Pledgor: Xi'an Qianxi Network Technology Co.,Ltd.

Registration number: Y2023610000503