CN115277668B - 一种基于以太坊和星际文件***的云文件动态完整性保护和验证方法 - Google Patents
一种基于以太坊和星际文件***的云文件动态完整性保护和验证方法 Download PDFInfo
- Publication number
- CN115277668B CN115277668B CN202110471409.1A CN202110471409A CN115277668B CN 115277668 B CN115277668 B CN 115277668B CN 202110471409 A CN202110471409 A CN 202110471409A CN 115277668 B CN115277668 B CN 115277668B
- Authority
- CN
- China
- Prior art keywords
- file
- block
- ethernet
- hash value
- 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.)
- Active
Links
- 238000012795 verification Methods 0.000 title claims abstract description 72
- 238000000034 method Methods 0.000 title claims abstract description 54
- 230000003068 static effect Effects 0.000 claims abstract description 23
- 238000005192 partition Methods 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 11
- 238000013475 authorization Methods 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 6
- 238000011084 recovery Methods 0.000 claims description 6
- 238000012856 packing Methods 0.000 claims description 3
- 230000008439 repair process Effects 0.000 claims description 3
- 238000007781 pre-processing Methods 0.000 claims description 2
- 230000005540 biological transmission Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 241000282376 Panthera tigris Species 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013496 data integrity verification Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- 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
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols 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]
-
- 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/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
-
- 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/32—Cryptographic 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/3236—Cryptographic 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
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (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,比较的结果:若相等,则返回文件完整;
若不相等,则云存储服务器根据各分块辅助路径找到损坏块的位置,向本地用户重新请求新的未损坏块进行恢复,用户重新上传相应损坏块到云存储服务器,成功后返回步骤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,计算文件分割后的总块数
步骤1-2、设置缓冲区为buffersize=1KB大小用于保存当前读取的文件对象,并将个数的缓冲区文件内容写入一个新的分割块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方法生成交易获得交易哈希具体实现代码为:
交易完成后返回交易相关信息具体实现代码为:
步骤2-4,本地将源文件分块和各分块辅助路径上传至云存储服务器。
步骤3,本地发出验证请求,云存储服务器端和以太坊区块链端利用反馈的验证信息与智能合约对文件进行静态或动态完整性验证并返回结果,同时对已被损坏的云文件进行恢复;
具体包括文件静态完整性验证和文件动态完整性验证
结合图3,文件静态完整性验证具体流程为:
A:文件静态完整性验证,判断以太坊区块链端中所存IPFS哈希是否与云存储服务器端中所计算得到的IPFS哈希相等;
若相等,则返回文件完整;若不相等,则找出相应的损坏块进行重上传修复,具体过程为:
A-1:云存储服务器根据步骤2中获得的源文件分块计算出新的根哈希值roothash1;
A-2:云存储服务器获得roothash1在IPFS星际文件***端返回的新IPFS哈希ipfshash1;
A-3:根据步骤2所保存的区块交易信息查询相对应的区块交易内容,得到原IPFS哈希ipfshash,比较的结果:若相等,则返回文件完整;
若不相等,则云存储服务器根据各分块辅助路径找到损坏块的位置,向本地用户重新请求新的未损坏块进行恢复。
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 (7)
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的文件哈希值blockihask并保存;
步骤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哈希ipfshash;
步骤2-3:编写智能合约,其中包括将步骤2-2中获得的IPFS哈希写入以太坊区块链中的setHash方法;
根据生成的智能合约地址smartcontract_address和ABI通过以太坊账户在区块链中进行部署,并通过ETH-API调用setHash方法将IPFS哈希写入以太坊交易中,打包成区块记录下来,如若成功,则返回相关的区块交易信息,若包括智能合约地址smartcontract_address,区块编号ethblocknum,交易哈希值transactionhash;
若不成功,则返回报错信息,并重新申请区块写入;
步骤2-4,本地将源文件分块和各分块辅助路径上传至云存储服务器;
步骤3,本地发出验证请求,云存储服务器端和以太坊区块链端利用反馈的验证信息与智能合约对文件进行静态或动态完整性验证并返回结果,同时对已被损坏的云文件进行恢复。
2.根据权利要求1所述的基于以太坊和星际文件***的云文件动态完整性保护和验证方法,其特征在于,所述步骤3中的本地发出验证请求,云存储服务器端和以太坊区块链端利用反馈的验证信息与智能合约对文件进行静态或动态完整性验证并返回结果,具体包括文件静态完整性验证和文件动态完整性验证:
A:文件静态完整性验证,判断以太坊区块链端中所存IPFS哈希是否与云存储服务器端中所计算得到的IPFS哈希相等;
若相等,则返回文件完整;若不相等,则找出相应的损坏块进行重上传修复;
B:文件动态完整性验证,当需要对文件进行修改时,采用动态完整性验证;
用户对文件进行修改,重新计算新的根哈希值,存到IPFS星际文件***上并返回新的IPFS哈希;智能合约对用户当前的以太坊地址进行验证,若相同则写入以太坊区块链中,返回信息予以验证。
3.根据权利要求2所述的基于以太坊和星际文件***的云文件动态完整性保护和验证方法,其特征在于,所述文件静态完整性验证具体过程包括:
A-1:云存储服务器根据步骤2中获得的源文件分块计算出新的根哈希值roothash1;
A-2:云存储服务器获得roothash1在IPFS星际文件***端返回的新IPFS哈希ipfshash1;
A-3:根据步骤2中所保存的区块交易信息查询相对应的区块交易内容,得到原IPFS哈希ipfshash,比较的结果:若相等,则返回文件完整;
若不相等,则云存储服务器根据各分块辅助路径找到损坏块的位置,向本地重新请求新的未损坏块进行恢复。
4.根据权利要求3所述的基于以太坊和星际文件***的云文件动态完整性保护和验证方法,其特征在于,所述文件动态完整性验证具体过程包括:
B-1:本地对文件进行修改,按照步骤1的方法生成新的根哈希值,按照步骤2的方法生成新的IPFS哈希值;
B-2:在本地将B-1生成的IPFS哈希值存入以太坊区块链以前,先通过智能合约对用户的以太坊地址进行验证,若与原用户地址相同则授权成功,用新的有效IPFS哈希更新旧IPFS哈希,重写入区块链中,返回必要的交易信息;若不同,则授权失败,不进行更新;
B-3:本地将新的文件分块与辅助路径信息上传到云存储服务器上,进行文件静态完整性验证过程,并返回文件完整性结果。
5.一种基于以太坊和星际文件***的云文件动态完整性保护和验证***,其特征在于,包括以下模块:
文件预处理模块:用于将文件组织成一颗MerkleTree,获得文件的root哈希值:
设定文件sourcefile所在位置的绝对路径Absolute_path_soourcefile,并设定好将文件分割后进行保存的块文件目录Absolute_path_blocks;设置文件分割块的固定大小blocksize,计算文件sourcefile分割后的总块数:
blocknum=sourceFileleng/blocksize
设置大小为buffersize的缓冲区用于保存当前读取的文件对象,并将blocksize/buffersize的个数的缓冲区文件内容写入一个分割块blocki,其中0≤i≤blocknum-1,存入Absolute_path_block目录中;
分别读取分割好的块文件blocki,其中0≤i≤blocknum-1,计算blocki的文件哈希值blockihash并保存;
以blocknum个文件哈希值作为叶子节点的哈希值,按顺序两两配对组合成新的哈希值blockihash||blocki+1hash,其中0≤i≤blocknum-2且i为偶数,将新的哈希值作为父节点哈希值,这样循环下去,组织成一颗Merkle Tree,并获得唯一的root哈希值roothash;
写入与上传模块:用于将文件的root哈希值以文件的形式存储到星际文件***并将返回的哈希写入以太坊区块链中,同时将相关信息上传到云存储服务器端:
将获得的root哈希值roothash转换为字节流的形式写入一个新的文件rootfile中,并指定相应的目录位置Abosolute_path_rootfile进行保存;
通过IPFS-JS-API抓取Absolute_path_rootfile位置的文件,以缓存区的形式上传至IPFS星际文件***中,并获得该文件基于内容的IPFS哈希ipfshash;
编写智能合约,其中包括将获得的IPFS哈希写入以太坊区块链中的setHash方法;
根据生成的智能合约地址smartcontract_address和ABI通过以太坊账户在区块链中进行部署,并通过ETH-API调用setHash方法将IPFS哈希写入以太坊交易中,打包成区块记录下来,如若成功,则返回相关的区块交易信息,若包括智能合约地址smartcontract_address,区块编号ethblocknum,交易哈希值transactionhash;
若不成功,则返回报错信息,并重新申请区块写入;
本地将源文件分块和各分块辅助路径上传至云存储服务器;
验证与恢复模块:用于发出验证请求,云存储服务器端和以太坊区块链端利用反馈的验证信息与智能合约对文件进行静态或动态完整性验证并返回结果,同时对已被损坏的云文件进行恢复。
6.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1-4中任一项所述方法的步骤。
7.一种计算机可存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-4中任一项所述的方法的步骤。
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 CN115277668A (zh) | 2022-11-01 |
CN115277668B true 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) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117708898A (zh) * | 2023-12-19 | 2024-03-15 | 中联国际工程管理有限公司 | 一种工程数字化信息存储*** |
Citations (4)
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 기반의 암호화 데이터 공유 시스템 |
-
2021
- 2021-04-29 CN CN202110471409.1A patent/CN115277668B/zh active Active
Patent Citations (4)
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)
Title |
---|
一种病人可控的电子病历安全访问方案;潘恒;潘磊;姚中原;斯雪明;;应用科学学报;20200130(第01期);第1-12页 * |
基于区块链的溯源***研究设计;陈飞;叶春明;;物流科技;20200110(第01期);第1-4页 * |
Also Published As
Publication number | Publication date |
---|---|
CN115277668A (zh) | 2022-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4991283B2 (ja) | コンテンツベースのアドレシングにおける追加ハッシュ関数 | |
CN1322449C (zh) | 无服务器的分布式文件*** | |
US7478113B1 (en) | Boundaries | |
US6807632B1 (en) | Content addressable information encapsulation, representation, and transfer | |
CA3072719C (en) | Immutable datastore for low-latency reading and writing of large data sets | |
EP3776250B1 (en) | Performing map iterations in blockchain-based system | |
US20130297658A1 (en) | Method and system for synchronizing a virtual file system at a computing device with a storage device | |
EP3485421A1 (en) | Fragmenting data for the purposes of persistent storage across multiple immutable data structures | |
CN106302720B (zh) | 一种用于区块链可生存存储***及其方法 | |
WO2020237874A1 (zh) | 项目数据验证方法、装置、计算机设备及存储介质 | |
CN104866394A (zh) | 一种分布式文件备份方法和*** | |
US11934674B2 (en) | Method, electronic device, and computer program product for storing and accessing data across multiple servers utilizing metadata of a distributed hash table | |
CN106611135A (zh) | 一种存储数据完整性验证及恢复方法 | |
CN109101360B (zh) | 一种基于布隆过滤器和交叉编码的数据完整性保护方法 | |
CN112699123A (zh) | 一种数据存储***中数据存在性和完整性校验方法及*** | |
CN115277668B (zh) | 一种基于以太坊和星际文件***的云文件动态完整性保护和验证方法 | |
Mo et al. | Enabling non-repudiable data possession verification in cloud storage systems | |
CN114218595A (zh) | 一种云计算平台中文件保护方法及*** | |
CN111291001B (zh) | 计算机文件的读取方法、装置、计算机***及存储介质 | |
Yatskiv et al. | Protected Distributed Data Storage Based on Residue Number System and Cloud Services | |
Thakur et al. | Data integrity techniques in cloud computing: an analysis | |
US11580091B2 (en) | Method of ensuring confidentiality and integrity of stored data and metadata in an untrusted environment | |
CN115098893A (zh) | 基于区块链的数据存储方法及装置 | |
US20220237156A1 (en) | Storing digital data in storage devices using smart contract and blockchain technology | |
Moreaux et al. | Blockchain assisted near-duplicated content detection |
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 |