CN115277668A - 一种基于以太坊和星际文件系统的云文件动态完整性保护和验证方法 - Google Patents

一种基于以太坊和星际文件系统的云文件动态完整性保护和验证方法 Download PDF

Info

Publication number
CN115277668A
CN115277668A CN202110471409.1A CN202110471409A CN115277668A CN 115277668 A CN115277668 A CN 115277668A CN 202110471409 A CN202110471409 A CN 202110471409A CN 115277668 A CN115277668 A CN 115277668A
Authority
CN
China
Prior art keywords
file
hash value
block
files
ipfs
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
CN202110471409.1A
Other languages
English (en)
Other versions
CN115277668B (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.)
Nanjing University of Science and Technology
Original Assignee
Nanjing University of Science and Technology
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 Nanjing University of Science and Technology filed Critical Nanjing University of Science and Technology
Priority to CN202110471409.1A priority Critical patent/CN115277668B/zh
Publication of CN115277668A publication Critical patent/CN115277668A/zh
Application granted granted Critical
Publication of CN115277668B publication Critical patent/CN115277668B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Bioethics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提出了一种基于以太坊和星际文件系统的云文件动态完整性保护和验证方法,首先本地准备文件并将文件组织成一颗MerkleTree,获得文件的root哈希值;随后本地将获得的root哈希值以文件的形式存储到星际文件系统并将返回的哈希写入以太坊区块链中,同时将相关信息上传到云存储服务器端;最后本地发出验证请求,云存储服务器端和以太坊区块链端利用反馈的验证信息与智能合约对文件进行静态或动态完整性验证并返回结果,同时对已被损坏的云文件进行恢复。本发明可以快速定位损坏文件块的位置,并且避免了将整个文件重新传到云上的开销,在保证完整性、隐私性的同时有效地解决了大文件存储和传输开销过大的问题。

Description

一种基于以太坊和星际文件系统的云文件动态完整性保护和 验证方法
技术领域
本发明属于云存储领域,特别涉及一种基于以太坊和星际文件系统的云文件动态完整性保护和验证方法。
背景技术
在云计算出现以前,用户的数据通常都是保存于本地主机。如果用户想要确定自己的数据是否完整,最简单的办法便是亲自检查一下数据,就可以知道数据是否完整,这种方法适用于数据量并不大的时候。如果数据量变得非常大,一种解决办法是采用哈希的方式通过比较数据标签以检查数据完整性。但是以上方法都需要人为检查数据相关信息,总会存在一定的纰漏。
随着互联网的广泛普及、发展和应用,数据爆发式的增长,云计算应运而生。它是一种新的运作模式,通过优化资源分配,将计算资源以服务的方式提供给用户,实现网络可访问、弹性扩展的共享资源池。云存储就是将储存资源放到云上供人存取的一种新兴方案。用户可以在任何时间、任何地方、通过任何可联网的设备连接到云上方便地存取数据。为节约本地空间,越来越多的用户倾向于将自身数据放在云服务器上。在云环境下,用户为了知道保存在云端的数据是否完整,可以将存在云端的数据下载下来,然后自己查看,但是这种方式浪费了大量的网络传输资源,且依然受限于云端数据量过大的问题。另一方面,从用户的角度考虑,云数据特有的集中式存储方式造成了用户所有权和管理权的分离。云服务提供商并不完全可信,因为他们有可能出于自身利益的考虑,将一些用户很少使用的数据私自删除或者隐瞒意外的数据破坏和更改。
为解决以上问题,很多研究提出了一系列完整性校验模型,可以分为云租户与云服务商交互验证(私有校验)和用户授权可信第三方(委托校验)进行验证两类。
前一类需要用户具有足够强大的计算能力与存储空间,这在某些情况下不太现实;而后一类存在泄露用户数据隐私和绑定第三方导致的可扩展性不好的问题。传统的完整性校验方法大致上有数据持有性证明(PDP)和数据恢复性证明(POR)两种,但是它们在不完全可信的环境下并不可靠。所以能否以一种去中心化的方式进行云存储和实现数据完整性验证,以规避上述模型和方法带来的问题,成为了目前研究的一大热点和挑战。
自Satoshi Nakamoto在2008年提出的比特币白皮书起,区块链作为一种共享、分布式和容错的数据库引起了大家广泛的兴趣和关注。区块链网络本质上是一个分布式公共分类帐,其中任何单个交易都由网络节点见证和验证。它的去中心化架构不仅可以为云计算环境提供可信、受保护的数据来源,也能一定程度上维护用户的隐私。同时,区块链的透明性、不可篡改性使得用户和云服务提供商之间的信任可以轻易建立起来。可以说,区块链技术可以很好地满足和解决当前云存储以及完整性校验存在的一些需求和问题。
发明内容
本发明的目的在于提供一种基于以太坊和星际文件系统的云文件动态完整性保护和验证方法。
本发明为解决其技术问题采用如下技术方案,具体包括如下步骤:
步骤1:本地准备文件并将文件组织成一颗MerkleTree,获得文件的root哈希值;
步骤2,本地将获得的root哈希值以文件的形式存储到星际文件系统并将返回的哈希写入以太坊区块链中,同时将相关信息上传到云存储服务器端;
步骤3,本地发出验证请求,云存储服务器端和以太坊区块链端利用反馈的验证信息与智能合约对文件进行静态或动态完整性验证并返回结果,同时对已被损坏的云文件进行恢复。
本发明与现有技术相比,其显著优点在于:
1)在本地将文件分割成固定大小的块,并组织成一颗Merkle Tree,不仅可以通过比较根哈希值快速地验证云上文件内容是否被篡改或损坏,也可以根据辅助路径准确地定位到损坏文件块的位置,在后续的内容恢复中只需替换掉相应的块即可,减少了将整个文件重新传到云上进行恢复的开销。
2)鉴于IPFS带宽与容量的限制,将整个云文件直接存入IPFS中以获得基于内容的哈希开销过大,时间过长。而采用将整个文件存于更廉价又快速的普通云服务器上,只将文件生成根哈希值存入IPFS中的方式,可以有效地解决大文件存储与传输开销过大的问题。
3)以太坊区块链上存储数据是非常昂贵的,而利用IPFS与以太坊的API接口,只需将星际文件系统生成的基于内容的哈希写入以太坊区块链中,可以极大地减少交易的gas花费。同时,以太坊作为一种公有链,交易是公开透明的,通过IPFS对根哈希值的再加密再写入区块链中,保证了一定的隐私性。
4)通过编写智能合约,可以在数据写入区块链时进行以太坊地址的验证,以实现授权修改文件内容、IPFS哈希和写入区块链的功能,防止其他人员篡改完整性验证数据,并支持文件动态完整性验证。
5)针对不同的外部计算环境,在本地和云服务器上生成MerkleTree时可以采用不同的加密算法。例如在较为可信的环境下,采用Adler32可以有效减轻运算负担;而在不可信的环境中,采用SHA-256、Tiger等加密算法更为安全。
下面结合附图和具体实施方式对本发明作进一步详细描述。
附图说明
图1为本发明的系统模型图。
图2为本发明中的文件准备流程图。
图3为本发明中的文件静态完整性验证流程图。
图4为本发明中的文件动态完整性验证流程图。
图5为本发明的步骤流程图。
具体实施方式
一种基于以太坊和星际文件系统的云文件动态完整性保护和验证方法,包含四类实体:本地用户(Client,C),云存储服务器(Cloud Storage Server,CSS),星际文件系统端(Inter-Planetary File system,IPFS),以太坊区块链端(Ethereum Blockchain,EBC)。
如图1所示,首先本地对文件数据进行分割处理,组织成一颗Merkle Tree。通过星际文件系统生成的基于内容的哈希与区块链这一去中心化分布式不可篡改的账本记录对源文件完整性进行保证,再经过所设计的完整性验证流程对上传至云存储服务器CSS的文件进行静态验证或是修改文件后的动态验证,在验证文件完整性的同时可以对云上被损坏的文件进行恢复。
如图5所示,具体包括以下步骤:
步骤1:本地准备文件并将文件组织成一颗MerkleTree,获得文件的root哈希值,具体为:
步骤1-1:设定文件sourcefile所在位置的绝对路径Absolute_path_sourcefile,并设定好将文件分割后进行保存的块文件目录Absolute_path_blocks;设置文件分割块的固定大小blocksize,计算文件sourcefile分割后的总块数:
blocknum=sourceFileleng/blocksize
步骤1-2:设置大小为buffersize的缓冲区用于保存当前读取的文件对象,并将blocksize/buffersize的个数的缓冲区文件内容写入一个分割块blocki(0≤i≤blocknum-1),存入Absolute_path_blocks目录中;
步骤1-3:分别读取分割好的块文件blocki(0≤i≤blocknum-1),计算blocki的文件哈希值blockihash并保存;
步骤1-4:以blocknum个文件哈希值作为叶子节点的哈希值,按顺序两两配对组合成新的哈希值blockihash||blocki+1hash(0≤i≤blocknum-2且i为偶数),将新的哈希值作为父节点哈希值,这样循环下去,组织成一颗Merkle Tree,并获得唯一的root哈希值roothash。
步骤2,本地将获得的root哈希值以文件的形式存储到星际文件系统并将返回的哈希写入以太坊区块链中,同时将相关信息上传到云存储服务器端,具体为:
步骤2-1:将步骤1获得的root哈希值roothash转换为字节流的形式写入一个新的文件rootfile中,并指定相应的目录位置Absolute_path_rootfile进行保存;
步骤2-2:通过IPFS-JS-API抓取Absolute_path_rootfile位置的文件,以缓存区的形式上传至IPFS星际文件系统中,并获得该文件基于内容的IPFS哈希ipf shash;
步骤2-3:编写智能合约,其中包括将步骤2-2中获得的IPFS哈希写入以太坊区块链中的setHash方法;
根据生成的智能合约地址smartcontract_address和ABI通过以太坊账户在区块链中进行部署,并通过ETH-API调用setHash方法将IPFS哈希写入以太坊交易中,打包成区块记录下来,如若成功,则返回相关的区块交易信息,若包括智能合约地址smartcontract_address,区块编号ethblocknum,交易哈希值transactionhash;
若不成功,则返回报错信息,并重新申请区块写入;
步骤2-4,本地将源文件分块和各分块辅助路径上传至云存储服务器。
步骤3,本地发出验证请求,云存储服务器端和以太坊区块链端利用反馈的验证信息与智能合约对文件进行静态或动态完整性验证并返回结果,同时对已被损坏的云文件进行恢复。
进一步的,所述步骤3中的本地发出验证请求,具体包括文件静态完整性验证和文件动态完整性验证:
A:文件静态完整性验证,判断以太坊区块链端中所存IPFS哈希是否与云存储服务器端中所计算得到的IPFS哈希相等;
若相等,则返回文件完整;若不相等,则找出相应的损坏块进行重上传修复,具体过程为:
A-1:云存储服务器根据步骤2中获得的源文件分块计算出新的根哈希值roothash1
A-2:云存储服务器获得roothash1在IPFS星际文件系统端返回的新IPFS哈希ipfshash1
A-3:根据步骤2所保存的区块交易信息查询相对应的区块交易内容,得到原IPFS哈希ipfshash,比较
Figure BDA0003045476380000051
的结果:若相等,则返回文件完整;
若不相等,则云存储服务器根据各分块辅助路径找到损坏块的位置,向本地用户重新请求新的未损坏块进行恢复,用户重新上传相应损坏块到云存储服务器,成功后返回步骤A-1。
B:文件动态完整性验证,当需要对文件进行修改时,采用动态完整性验证;
用户对文件进行修改,重新计算新的根哈希值,存到IPFS星际文件系统上并返回新的IPFS哈希。智能合约对用户当前的以太坊地址进行验证,若相同则写入以太坊区块链中,返回信息予以验证,具体为:
B-1:本地对文件进行修改,按照步骤1的方法生成新的根哈希值,按照步骤2的方法生成新的IPFS哈希值;
B-2:在本地将B-1生成的IPFS哈希值存入以太坊区块链以前,先通过智能合约对用户的以太坊地址进行验证,若与原用户地址相同则授权成功,用新的有效IPFS哈希更新旧IPFS哈希,重写入区块链中,返回必要的交易信息;若不同,则授权失败,不进行更新。
B-3本地将新的文件分块与辅助路径信息上传到云存储服务器上,进行文件静态完整性验证过程,并返回文件完整性结果。
一种基于以太坊和星际文件系统的云文件动态完整性保护和验证系统,包括以下模块:
文件预处理模块:用于将文件组织成一颗MerkleTree,获得文件的root哈希值;
写入与上传模块:用于将文件的root哈希值以文件的形式存储到星际文件系统并将返回的哈希写入以太坊区块链中,同时将相关信息上传到云存储服务器端;
验证与恢复模块:用于发出验证请求,云存储服务器端和以太坊区块链端利用反馈的验证信息与智能合约对文件进行静态或动态完整性验证并返回结果,同时对已被损坏的云文件进行恢复。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
步骤1:本地准备文件并将文件组织成一颗MerkleTree,获得文件的root哈希值;
步骤2,本地将获得的root哈希值以文件的形式存储到星际文件系统并将返回的哈希写入以太坊区块链中,同时将相关信息上传到云存储服务器端;
步骤3,本地发出验证请求,云存储服务器端和以太坊区块链端利用反馈的验证信息与智能合约对文件进行静态或动态完整性验证并返回结果,同时对已被损坏的云文件进行恢复。
一种计算机可存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
步骤1:本地准备文件并将文件组织成一颗MerkleTree,获得文件的root哈希值;
步骤2,本地将获得的root哈希值以文件的形式存储到星际文件系统并将返回的哈希写入以太坊区块链中,同时将相关信息上传到云存储服务器端;
步骤3,本地发出验证请求,云存储服务器端和以太坊区块链端利用反馈的验证信息与智能合约对文件进行静态或动态完整性验证并返回结果,同时对已被损坏的云文件进行恢复。
实施例
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
结合图2,在本地准备实验文件并进行相关验证前的准备工作,具体过程包括:
步骤1-1,设定好实验文件(大小为4MB)testfile所在位置的绝对路径E:\data\testfile,并预先设定好将文件分割后进行保存的块文件目录E:\data\blocks;设置分割块的固定大小blocksize=1MB,计算文件分割后的总块数
Figure BDA0003045476380000061
Figure BDA0003045476380000062
步骤1-2、设置缓冲区为buffersize=1KB大小用于保存当前读取的文件对象,并将
Figure BDA0003045476380000071
个数的缓冲区文件内容写入一个新的分割块blocki(0≤i≤3),存入E:\data\blocks目录中。
步骤1-3,分别读取分割好的块文件blocki(0≤i≤3),计算blocki的文件哈希值blockihash并保存。这里选取SHA-256加密哈希算法,生成的16进制64位字符串哈希值分别为:
block0hash
=f71cbcef48edac604b3614ac0bcd84d6cf48af117b131af3a474f6258f0e4d41
block1hash
=08c9e8eb1900c5f2c98bb3feb3a2fcbdabe1729c3c4952005d84484c82d5d937
block2hash
=a0687fe4fca348cff398350ea90199c1ae01243d7f094cdc404782d6c2c02504
block3hash
=f023f88c217694b0bcbeaaedadf500e48fc9b818be8aa36ffa4acf9f91892e52
步骤1-4,以上述各哈希值作为叶子节点的哈希值,按顺序两两配对组合成新的哈希值blockihash||blocki+1hash(0≤i≤blocknum-2且i为偶数),再次哈希作为父节点哈希值,这样循环下去,组织成一颗Merkle Tree,并获得唯一的根节点值roothash。这里中间节点加密算法同样选择SHA-256,最终得到的根哈希值为:
roothash
=db3409e8ff156b3e7b1875dce0d490698c9ba36389a7dbce29e9f538818c7332
步骤2:结合图2,本地将获得的root哈希值以文件的形式存储到星际文件系统并将返回的哈希写入以太坊区块链中,同时将相关信息上传到云存储服务器端,具体为:
步骤2-1,将步骤1获得的根节点值roothash转换为字节流的形式写入一个新的文件rootfile中,并指定相应的目录位置E:\data\outputrootfile进行保存;
步骤2-2,通过IPFS-JS-API抓取E:\data\outputrootfile位置的文件,以缓存区的形式上传至IPFS星际文件系统中,并获得该文件基于内容的IPFS哈希ipfshash。
这里获得的为
ipfshash=QmNnrJoFd1g1yaoiyQorxEx4W5vdmRcWFCVa2aDmtMsjvM
具体实现代码为:
await ipfs.add(this.state.ipfsBuffer,(err,returnHash)=>{
console.log(err,returnHash);
this.setState({ipfsHash:returnHash[0].hash});
步骤2-3,编写智能合约,其中包含将步骤2-2中获得的IPFS哈希写入以太坊区块链中的setHash方法。
根据生成的智能合约地址smartcontract_address和ABI通过以太坊账户在区块链中进行部署,并通过ETH-API调用setHash方法将IPFS哈希写入以太坊交易中,打包成区块记录下来,返回相关的区块交易信息(智能合约地址smartcontract_address,区块编号ethblocknum,交易哈希值transactionhash等)。
这里生成的智能合约地址为
smartcontract_address=0x9272757Eff971FA2CFF1958fEb65669b74d75Fd1将IPFS哈希写入以太坊区块链(公用测试链)交易后,获得的区块编号、交易哈希值以及所花费的gas消耗如下:
transactionhash
=0xc4b78252b95c418db9273348cc319567729deac774359bb659f35d5da91c13a0
ethblocknum=9932872
gas=89303
通过Eth-Api调用智能合约setHash方法生成交易获得交易哈希具体实现代码为:
Figure BDA0003045476380000081
交易完成后返回交易相关信息具体实现代码为:
Figure BDA0003045476380000082
步骤2-4,本地将源文件分块和各分块辅助路径上传至云存储服务器。
步骤3,本地发出验证请求,云存储服务器端和以太坊区块链端利用反馈的验证信息与智能合约对文件进行静态或动态完整性验证并返回结果,同时对已被损坏的云文件进行恢复;
具体包括文件静态完整性验证和文件动态完整性验证
结合图3,文件静态完整性验证具体流程为:
A:文件静态完整性验证,判断以太坊区块链端中所存IPFS哈希是否与云存储服务器端中所计算得到的IPFS哈希相等;
若相等,则返回文件完整;若不相等,则找出相应的损坏块进行重上传修复,具体过程为:
A-1:云存储服务器根据步骤2中获得的源文件分块计算出新的根哈希值roothash1
A-2:云存储服务器获得roothash1在IPFS星际文件系统端返回的新IPFS哈希ipfshash1
A-3:根据步骤2所保存的区块交易信息查询相对应的区块交易内容,得到原IPFS哈希ipfshash,比较
Figure BDA0003045476380000091
的结果:若相等,则返回文件完整;
若不相等,则云存储服务器根据各分块辅助路径找到损坏块的位置,向本地用户重新请求新的未损坏块进行恢复。
B:文件动态完整性验证,当需要对文件进行修改时,采用动态完整性验证,如图4所示;
用户对文件进行修改,重新计算新的根哈希值,存到IPFS星际文件系统上并返回新的IPFS哈希。智能合约对用户当前的以太坊地址进行验证,若相同则写入以太坊区块链中,返回信息予以验证,具体为:
B-1:本地对文件进行修改,按照步骤1的方法生成新的根哈希值,按照步骤2-1和步骤2-2生成新的IPFS哈希值;
B-2:在本地将步骤3-2-1生成的IPFS哈希值存入以太坊区块链以前,先通过智能合约对用户的以太坊地址进行验证,若与原用户地址相同则授权成功,用新的有效IPFS哈希更新旧IPFS哈希,重写入区块链中,返回必要的交易信息;若不同,则授权失败,不进行更新。
B-3:本地将新的文件分块与辅助路径信息上传到云存储服务器上,进行文件静态完整性验证过程,并返回文件完整性结果。
综上,本发明提出了一种基于以太坊和星际文件系统的云文件动态完整性保护和验证方法,本发明采用MerkleTree的结构来处理并记录文件的特征信息,不仅可以通过比较根哈希值快速地验证云上文件内容是否被篡改或损坏,也可以根据辅助路径准确地定位到损坏文件块的位置,在后续的内容恢复中只需替换掉相应的块即可,避免了将整个文件重新传到云上的开销。同时,只需将文件根哈希值存入星际文件系统中,而不是传统地将整个文件的副本存入其中,有效地解决了大文件存储和传输开销过大的问题。此外,利用IPFS与以太坊的API接口,将星际文件系统生成的基于内容的哈希写入以太坊区块链中,在保证完整性、隐私性的同时,减轻了区块链上存储数据非常昂贵的负担。最后,使用以太坊提供的智能合约,设计更新IPFS上文件根哈希值的机制,通过授权实现针对文件修改等动态操作的动态完整性验证。
以上显示和描述了本发明的基本原理、主要特征及优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。

Claims (9)

1.一种基于以太坊和星际文件系统的云文件动态完整性保护和验证方法,其特征在于,包括以下步骤:
步骤1:本地准备文件并将文件组织成一颗MerkleTree,获得文件的root哈希值;
步骤2,本地将获得的root哈希值以文件的形式存储到星际文件系统并将返回的哈希写入以太坊区块链中,同时将相关信息上传到云存储服务器端;
步骤3,本地发出验证请求,云存储服务器端和以太坊区块链端利用反馈的验证信息与智能合约对文件进行静态或动态完整性验证并返回结果,同时对已被损坏的云文件进行恢复。
2.根据权利要求1所述的基于以太坊和星际文件系统的云文件动态完整性保护和验证方法,其特征在于,所述步骤1中本地准备文件并将文件组织成一颗MerkleTree,获得文件的root哈希值,具体包括以下步骤:
步骤1-1:设定文件sourcefile所在位置的绝对路径Absolute_path_sourcefile,并设定好将文件分割后进行保存的块文件目录Absolute_path_blocks;设置文件分割块的固定大小blocksize,计算文件sourcefile分割后的总块数:
blocknum=sourceFilelength/blocksize
步骤1-2:设置大小为buffersize的缓冲区用于保存当前读取的文件对象,并将blocksize/buffersize的个数的缓冲区文件内容写入一个分割块blocki(0≤i≤blocknum-1),存入Absolute_path_blocks目录中;
步骤1-3:分别读取分割好的块文件blocki(0≤i≤blocknum-1),计算blocki的文件哈希值blockihash并保存;
步骤1-4:以blocknum个文件哈希值作为叶子节点的哈希值,按顺序两两配对组合成新的哈希值blockihash||blocki+1hash(0≤i≤blocknum-2且i为偶数),将新的哈希值作为父节点哈希值,这样循环下去,组织成一颗Merkle Tree,并获得唯一的root哈希值roothash。
3.根据权利要求1所述的基于以太坊和星际文件系统的云文件动态完整性保护和验证方法,其特征在于,所述步骤2中本地将获得的root哈希值以文件的形式存储到星际文件系统并将返回的哈希写入以太坊区块链中,同时将相关信息上传到云存储服务器端,具体过程包括:
步骤2-1:将步骤1获得的root哈希值roothash转换为字节流的形式写入一个新的文件rootfile中,并指定相应的目录位置Absolute_path_rootfile进行保存;
步骤2-2:通过IPFS-JS-API抓取Absolute_path_rootfile位置的文件,以缓存区的形式上传至IPFS星际文件系统中,并获得该文件基于内容的IPFS哈希ipfshash;
步骤2-3:编写智能合约,其中包括将步骤2-2中获得的IPFS哈希写入以太坊区块链中的setHash方法;
根据生成的智能合约地址smartcontract_address和ABI通过以太坊账户在区块链中进行部署,并通过ETH-API调用setHash方法将IPFS哈希写入以太坊交易中,打包成区块记录下来,如若成功,则返回相关的区块交易信息,若包括智能合约地址smartcontract_address,区块编号ethblocknum,交易哈希值transactionhash;
若不成功,则返回报错信息,并重新申请区块写入;
步骤2-4,本地将源文件分块和各分块辅助路径上传至云存储服务器。
4.根据权利要求1所述的基于以太坊和星际文件系统的云文件动态完整性保护和验证方法,其特征在于,所述步骤3中的本地发出验证请求,云存储服务器端和以太坊区块链端利用反馈的验证信息与智能合约对文件进行静态或动态完整性验证并返回结果,具体包括文件静态完整性验证和文件动态完整性验证:
A:文件静态完整性验证,判断以太坊区块链端中所存IPFS哈希是否与云存储服务器端中所计算得到的IPFS哈希相等;
若相等,则返回文件完整;若不相等,则找出相应的损坏块进行重上传修复;
B:文件动态完整性验证,当需要对文件进行修改时,采用动态完整性验证;
用户对文件进行修改,重新计算新的根哈希值,存到IPFS星际文件系统上并返回新的IPFS哈希;智能合约对用户当前的以太坊地址进行验证,若相同则写入以太坊区块链中,返回信息予以验证。
5.根据权利要求4所述的基于以太坊和星际文件系统的云文件动态完整性保护和验证方法,其特征在于,所述文件静态完整性验证具体过程包括:
A-1:云存储服务器根据步骤2中获得的源文件分块计算出新的根哈希值roothash1
A-2:云存储服务器获得roothash1在IPFS星际文件系统端返回的新IPFS哈希ipfshash1
A-3:根据步骤2中所保存的区块交易信息查询相对应的区块交易内容,得到原IPFS哈希ipfshash,比较
Figure FDA0003045476370000021
的结果:若相等,则返回文件完整;
若不相等,则云存储服务器根据各分块辅助路径找到损坏块的位置,向本地重新请求新的未损坏块进行恢复。
6.根据权利要求5所述的基于以太坊和星际文件系统的云文件动态完整性保护和验证方法,其特征在于,所述文件动态完整性验证具体过程包括:
B-1:本地对文件进行修改,按照步骤1的方法生成新的根哈希值,按照步骤2的方法生成新的IPFS哈希值;
B-2:在本地将B-1生成的IPFS哈希值存入以太坊区块链以前,先通过智能合约对用户的以太坊地址进行验证,若与原用户地址相同则授权成功,用新的有效IPFS哈希更新旧IPFS哈希,重写入区块链中,返回必要的交易信息;若不同,则授权失败,不进行更新。
B-3:本地将新的文件分块与辅助路径信息上传到云存储服务器上,进行文件静态完整性验证过程,并返回文件完整性结果。
7.一种基于以太坊和星际文件系统的云文件动态完整性保护和验证系统,其特征在于,包括以下模块:
文件预处理模块:用于将文件组织成一颗MerkleTree,获得文件的root哈希值;
写入与上传模块:用于将文件的root哈希值以文件的形式存储到星际文件系统并将返回的哈希写入以太坊区块链中,同时将相关信息上传到云存储服务器端;
验证与恢复模块:用于发出验证请求,云存储服务器端和以太坊区块链端利用反馈的验证信息与智能合约对文件进行静态或动态完整性验证并返回结果,同时对已被损坏的云文件进行恢复。
8.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1-6中任一项所述方法的步骤。
9.一种计算机可存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-6中任一项所述的方法的步骤。
CN202110471409.1A 2021-04-29 2021-04-29 一种基于以太坊和星际文件系统的云文件动态完整性保护和验证方法 Active CN115277668B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110471409.1A CN115277668B (zh) 2021-04-29 2021-04-29 一种基于以太坊和星际文件系统的云文件动态完整性保护和验证方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110471409.1A CN115277668B (zh) 2021-04-29 2021-04-29 一种基于以太坊和星际文件系统的云文件动态完整性保护和验证方法

Publications (2)

Publication Number Publication Date
CN115277668A true CN115277668A (zh) 2022-11-01
CN115277668B CN115277668B (zh) 2024-04-23

Family

ID=83745863

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110471409.1A Active CN115277668B (zh) 2021-04-29 2021-04-29 一种基于以太坊和星际文件系统的云文件动态完整性保护和验证方法

Country Status (1)

Country Link
CN (1) CN115277668B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111104385A (zh) * 2018-10-25 2020-05-05 财团法人资讯工业策进会 用于物联网系统的数据处理装置及数据处理方法
CN111177080A (zh) * 2019-12-31 2020-05-19 西安理工大学 一种基于区块链和ipfs的知识图谱存储与验证方法
CN111177107A (zh) * 2019-12-31 2020-05-19 百度在线网络技术(北京)有限公司 基于区块链的文件处理方法、装置、设备和存储介质
KR20210041459A (ko) * 2019-10-07 2021-04-15 주식회사 블록체인기술연구소 블록체인과 ipfs 기반의 암호화 데이터 공유 시스템

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111104385A (zh) * 2018-10-25 2020-05-05 财团法人资讯工业策进会 用于物联网系统的数据处理装置及数据处理方法
KR20210041459A (ko) * 2019-10-07 2021-04-15 주식회사 블록체인기술연구소 블록체인과 ipfs 기반의 암호화 데이터 공유 시스템
CN111177080A (zh) * 2019-12-31 2020-05-19 西安理工大学 一种基于区块链和ipfs的知识图谱存储与验证方法
CN111177107A (zh) * 2019-12-31 2020-05-19 百度在线网络技术(北京)有限公司 基于区块链的文件处理方法、装置、设备和存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
潘恒;潘磊;姚中原;斯雪明;: "一种病人可控的电子病历安全访问方案", 应用科学学报, no. 01, 30 January 2020 (2020-01-30), pages 1 - 12 *
陈飞;叶春明;: "基于区块链的溯源系统研究设计", 物流科技, no. 01, 10 January 2020 (2020-01-10), pages 1 - 4 *

Also Published As

Publication number Publication date
CN115277668B (zh) 2024-04-23

Similar Documents

Publication Publication Date Title
US11461485B2 (en) Immutable bootloader and firmware validator
US11934550B2 (en) Replacing distinct data in a relational database with a distinct reference to that data and distinct de-referencing of database data
US10366247B2 (en) Replacing distinct data in a relational database with a distinct reference to that data and distinct de-referencing of database data
US10242219B2 (en) Fragmenting data for the purposes of persistent storage across multiple immutable data structures
US10042782B2 (en) Immutable datastore for low-latency reading and writing of large data sets
EP3485421B1 (en) Fragmenting data for the purposes of persistent storage across multiple immutable data structures
US10075298B2 (en) Generation of hash values within a blockchain
US10121019B2 (en) Storing differentials of files in a distributed blockchain
AU762283B2 (en) Content addressable information encapsulation, representation, and transfer
US6807632B1 (en) Content addressable information encapsulation, representation, and transfer
CA3072719C (en) Immutable datastore for low-latency reading and writing of large data sets
US9600486B2 (en) File system directory attribute correction
US11934674B2 (en) Method, electronic device, and computer program product for storing and accessing data across multiple servers utilizing metadata of a distributed hash table
US20230153292A1 (en) Ensuring consistent metadata across computing devices
CN115277668B (zh) 一种基于以太坊和星际文件系统的云文件动态完整性保护和验证方法
US20240184908A1 (en) Replacing distinct data in a relational database with a distinct reference to that data and distinct de-referencing of database data
Xu et al. An Authentication Data Structure of Provable Data Possession with Dynamic Data Operation in Cloud Computing

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