CN111698092B - 基于零知识证明和区块链的文件存储证明方法、系统及介质 - Google Patents
基于零知识证明和区块链的文件存储证明方法、系统及介质 Download PDFInfo
- Publication number
- CN111698092B CN111698092B CN202010476577.5A CN202010476577A CN111698092B CN 111698092 B CN111698092 B CN 111698092B CN 202010476577 A CN202010476577 A CN 202010476577A CN 111698092 B CN111698092 B CN 111698092B
- Authority
- CN
- China
- Prior art keywords
- file
- proof
- leaf node
- verification
- proving
- 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
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/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/3218—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 proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
- H04L9/3221—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 proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs interactive zero-knowledge proofs
-
- 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/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/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- 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
-
- 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/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于零知识证明和区块链的文件存储证明方法、系统及介质,本发明方法分别包括,包括证明方在接收目标文件后包括针对目标文件基于指定的证明周期进行主动自证的步骤,验证方对证明方主动自证生成的证明文件进行验证的步骤,验证方上传目标文件的默克尔树的根、所有的叶子节点路径的步骤,以及验证方针对目标文件发起主动验证的步骤。本发明实现了基于零知识证明的文件存储证明,能够在不下载原始文件情况下检查存储方是否存储了验证者的文件,具有安全性高、计算资源消耗低、验证可信度高、验证过程不泄露任何相关信息、验证过程简单的优点。
Description
技术领域
本发明涉及分布式数据存储领域,具体涉及一种基于零知识证明和区块链的文件存储证明方法、系统及介质。
背景技术
分布式存储是现在存储系统的趋势,中心化的分布式存储,数据安全是通过备份实现。在基于p2p的分布式存储系统里,数据安全可通过同时备份多个节点实现,但是另外的问题是如何保证数据内容正确性。以及对方确实存储了文件。既“我的文件确实被完整的存储在某个机器上”。传统的数据内容验证是通过文件哈希。通过比对哈希结果的变化识别文件是否被修改。在验证方和证明方是同一人的时,此验证结果是可信的。但是在分布式存储的语境下,验证方和证明方是不同人时此方法不可行、不可靠的。因此,需要一种方式既不用看文件内容又可以证明文件确实完好存在的方法、实现对文件存储的证明。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种基于零知识证明和区块链的文件存储证明方法、系统及介质,本发明实现了基于零知识证明的文件存储证明,能够在不下载原始文件情况下检查存储方是否存储了验证者的文件,具有安全性高、计算资源消耗低、验证可信度高、验证过程简单的优点。
为了解决上述技术问题,本发明采用的技术方案为:
一种基于零知识证明和区块链的文件存储证明方法,包括证明方在接收目标文件后包括针对目标文件基于指定的证明周期进行主动自证的下述步骤:
A1)针对本地存储的目标文件采用默克尔树算法生成默克尔树的根及叶子节点路径;
A2)从所有的叶子节点路径中选择N个证明周期内不重复的叶子节点路径;
A3)根据默克尔树的根、选择的叶子节点路径采用指定的零知识证明算法生成证明文件;
A4)将证明文件上传至区块链。
可选地,还包括验证方对证明方主动自证生成的证明文件进行验证的下述步骤:
B1)检索区块链查找是否存在未验证的证明文件,如果存在未验证的证明文件则跳转执行下一步;否则结束并退出;
B2)从区块链中下载目标文件的默克尔树的根、所有的叶子节点路径以及未验证的证明文件;
B3)从所有的未验证的证明文件中遍历选择一个证明文件作为当前证明文件,如果尚未遍历完毕则跳转执行下一步,否则跳转执行步骤B8);
B4)从下载得到的所有的叶子节点路径中遍历选择一条叶子节点路径作为当前叶子节点路径,如果尚未遍历完毕则跳转执行下一步,否则,判定当前证明文件验证失败;跳转执行步骤B3);
B5)根据默克尔树的根、当前叶子节点路径对当前证明文件采用指定的零知识证明算法进行零知识证明验证,若验证通过则跳转执行步骤B6);否则,判定当前证明文件验证失败;跳转执行步骤B3);
B6)判断当前叶子节点路径是否在本次验证前N次验证中已经被使用,如果已经被使用则判定当前证明文件验证失败;否则,判定当前证明文件验证成功,并记录当前叶子节点路径;跳转执行步骤B3);
B7)判定当前证明文件没有能够通过零知识证明验证的叶子节点路径,判定当前证明文件验证失败;跳转执行步骤B3);
B8)将所有的证明文件验证结果上传至区块链,若有验证失败的证明文件则输出报警。
可选地,步骤B1)中检索区块链具体是指采用目标文件内容哈希值作为目标文件的ID来检索区块链查找是否存在未验证的证明文件。
可选地,步骤B2)之前还包括验证方上传目标文件的默克尔树的根、所有的叶子节点路径的下述步骤:
C1)生成目标文件的内容哈希值,并采用默克尔树算法生成默克尔树的根及叶子节点路径;
C2)将目标文件的默克尔树的根及所有的叶子节点路径上传至区块链,且以目标文件的内容哈希值作为目标文件的索引。
可选地,还包括验证方针对目标文件发起主动验证的下述步骤:
D1)以目标文件的内容哈希值作为目标文件的索引检索区块链,判断证明方针对目标文件生成的最近N个证明文件是否存在,如果存在则跳转执行下一步;否则判定主动验证结果为证明方当前未存储目标文件,跳转执行步骤D7);
D2)检索区块链查找最近N个证明文件的证明文件验证结果是否存在,如果最近N个证明文件的证明文件验证结果存在则跳转执行下一步;否则验证方分别对最近N个证明文件进行验证获得最近N个证明文件的证明文件验证结果;
D3)判断最近N个证明文件的证明文件验证结果是否全部为证明文件验证成功,如果是则跳转执行下一步;否则判定主动验证结果为证明方存储的目标文件不正确,跳转执行步骤D7);
D4)从区块链中下载目标文件的默克尔树的根、所有的叶子节点路径,并从所有的叶子节点路径中随机选择一条叶子节点路径生成对应的叶子节点索引;
D5)向证明方发送指定的叶子节点索引,并等待证明方返回证明文件,如果收到证明方返回的证明文件则跳转执行下一步;如果超时则判定主动验证结果为和证明方通讯失败,跳转执行步骤D7);
D6)根据默克尔树的根、指定叶子节点路径对证明方返回的证明文件采用指定的零知识证明算法进行零知识证明验证,若验证通过则判定主动验证结果为验证成功,否则判定主动验证结果为验证失败;
D7)将主动验证结果输出并上传至区块链。
可选地,步骤D5)中向证明方发送指定的叶子节点索引后还包括证明方的下述响应步骤:
D5.1)针对本地存储的目标文件采用默克尔树算法生成默克尔树的根及叶子节点路径;
D5.2)根据叶子节点索引在所有的叶子节点路径中找到匹配的叶子节点路径;
D5.3)根据默克尔树的根、匹配的叶子节点路径生成证明文件;
D5.4)将证明文件返回给验证方。
可选地,N的取值为3。
此外,本发明还提供一种基于零知识证明和区块链的文件存储证明系统,包括计算机设备,该计算机设备被编程或配置以执行所述基于零知识证明和区块链的文件存储证明方法的步骤,或者该计算机设备的存储器上存储有被编程或配置以执行所述基于零知识证明和区块链的文件存储证明方法的计算机程序。
此外,本发明还提供一种分布式存储系统,包括用于分别作为证明方或验证方的计算机设备,该计算机设备被编程或配置以执行所述基于零知识证明和区块链的文件存储证明方法的步骤,或者该计算机设备的存储器上存储有被编程或配置以执行所述基于零知识证明和区块链的文件存储证明方法的计算机程序。
此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质上存储有被编程或配置以执行所述基于零知识证明和区块链的文件存储证明方法的计算机程序。
和现有技术相比,本发明具有下述优点:
1、安全性高:由于验证过程交互少,被截风险降低,使用零知识证明不会泄露文件信息。
2、计算要求低:验证方的计算消耗非常少且快速,可以在树莓派等低功耗设备运行。
3、验证可信度高:以往使用文件hash验证,虽然每个文件对应一个hash件,但是hash容易拷贝,在分布式环境下容易作假。而使用零知识证明和默克尔树每次证明都不相同,有效检验文件内容。所有过程和数据在区块链上存证。
4、验证过程简单:无需下载文件,很容易便检测存储的文件是否存在或者损坏。
附图说明
图1为本发明实施例中证明方进行主动自证的流程示意图。
图2为本发明实施例中验证方将目标文件的相关信息上链的流程示意图。
图3为本发明实施例中验证方对证明文件进行验证的流程示意图。
图4为本发明实施例中验证方针对目标文件发起主动验证的流程示意图。
具体实施方式
本实施例基于零知识证明和区块链的文件存储证明方法基于以下前提:1)基于分布式网络存储;2)用户包含存储方和验证方。存储环境是分布式网络,存储方和验证方皆为不同节点。存储方是承担存储任务的机器节点,验证方是委托存储文件的文件所有者。验证方委托存储方存储文件。为了防止存储方未履行存储。需要验证文件是否存在,如果每次验证需要下载原文件进行比对,那么委托存储的效果就会打折扣。因此需要一种不用下载文件,依然可以比对文件内容且难以伪造的方式,传统的数据内容验证是通过文件hash。通过比对hash的变化识别文件是否被修改。在验证方和证明方是同一人的时,此验证结果是可信的。而验证方和证明方是不同人时此方法不可行。本发明基于零知识证明和区块链的文件存储证明方法即用于解决上述难题。需要说明的是,本发明基于零知识证明和区块链的文件存储证明方法只要存储方和验证方皆为不同节点即可实现,其分布式网络存储可以为局域网中的不同节点,也可以是互联网中的不同节点;而且,本发明的验证方所执行的不同步骤也可以采用不同的主体来分开执行。
如图1所示,本实施例基于零知识证明和区块链的文件存储证明方法包括证明方在接收目标文件后包括针对目标文件基于指定的证明周期进行主动自证的下述步骤:
A1)针对本地存储的目标文件采用默克尔树算法生成默克尔树(Merkle Tree)的根(Root)及叶子节点路径;
A2)从所有的叶子节点路径中选择N个证明周期内不重复的叶子节点路径;
A3)根据默克尔树的根、选择的叶子节点路径采用指定的零知识证明算法生成证明文件;
A4)将证明文件上传至区块链。
需要说明的是:1、默克尔树算法为现有算法,其基本原理为将目标文件分片,计算每一个分片的哈希值作为叶子节点,然后将每两个叶子节点的哈希值再生成一个新的哈希值作为共同的父节点,再将每两个父节点的哈希值再生成一个新的哈希值作为共同的祖父节点,依次类推,最终得到一个唯一的节点即为默克尔树的根。从每一个叶子节点到默克尔树的根之间的路径即为叶子节点路径,且每一个叶子节点路径具有一个唯一的索引号,例如第1个分块对应的叶子节点路径可将索引号记为1。本实施例中生成默克尔树采用的函数为ToMerkle,在通过函数ToMerkle生成默克尔树merkle以后,即可利用对象属性的方法获取默克尔树的根以及指定的叶子节点路径,例如merkle.root()即为默克尔树merkle的根,merkle.gen_proof(9)即为获取默克尔树merkle中索引编号为9的叶子节点路径。
2、本实施例中仅仅涉及零知识证明算法的应用,零知识证明算法是一种已知的证明/验证算法。本实施例中指定的零知识证明算法具体是采用Groth16算法实现,Groth16算法是一种典型的zk-SNARK(zero-knowledge succint non-interactive arguments ofknowledge)算法,此外也可以根据需要采用其他类型零知识证明算法或zk-SNARK算法的其他语言库实现。
本实施例中,证明环节中调用的函数为
groth16::create_random_proof(c, ¶ms, &mut OsRng),其中参数c为默克尔树的根,
上式中,groth16::create_random_proof表示Groth16算法的create_random_proof函数,&表示参数,c表示构建的电路,params表示构建的参数,mut OsRng表示一个随机数。
参数params为电路MyCircuit生成的随机公共参数,叶子节点路径和默克尔的根是用于验证的内容证明内容在证明过程需要使用参数params的准备验证的密钥pvk。
其中,参数params的构建方式如下:
let params = {
let c = MyCircuit{ preimage: None };
groth16::generate_random_parameters::<Bls12, _, _>(c, &mut OsRng).unwrap()
};
上式中,MyCircuit{preimage: None}表示使用None值初始化,c表示初始化的电路对象。groth16::generate_random_parameters为Groth16算法的随机参数生成器,Bls12表示椭圆曲线的建造和实现方法。
构建电路的方式如下:
let preimage = [1; 32]; //#原始数据
let c = MyCircuit {
preimage: Some(preimage),
};
上式中,MyCircuit表示自定义的电路对象,preimage: Some表示待验证待值。
本实施例中,验证环节中调用的函数为:
groth16::verify_proof(&pvk, &proof, &inputs)。
上式中,groth16::verify_proof表示Groth16算法的verify_proof函数,&表示引用,pvk表示准备验证的密钥,proof表示证明文件,inputs表示打包的hash输入值(待验证)。
准备验证的密钥pvk的生成方式为:
let pvk = groth16::prepare_verifying_key(¶ms.vk);
上式中,groth16::prepare_verifying_key表示Groth16算法的prepare_verifying_key函数,¶ms.vk表示验证密钥。
打包的hash输入值inputs的生成方式为:根据目标文件的原始数据进行哈希计算得到的哈希值hash,再将哈希值hash利用bellman库函数multipack::bytes_to_bits_le转true false类型(true代表1,false代表0)得到哈希位hash_bits,再将哈希位hash_bits通过bellman库函数multipack::compute_multipacking::<Bls12>(&hash_bits)进行转 Fr(bellman库定义的数据模型,转化为此类型的数据才能使用)处理得到。
作为一种可选的实施方式,为了持续地获取证明方对目标文件的持有状态信息。如图3所示,本实施例还包括验证方对证明方主动自证生成的证明文件进行验证的下述步骤:
B1)检索区块链查找是否存在未验证的证明文件,如果存在未验证的证明文件则跳转执行下一步;否则结束并退出;
B2)从区块链中下载目标文件的默克尔树的根、所有的叶子节点路径以及未验证的证明文件;
B3)从所有的未验证的证明文件中遍历选择一个证明文件作为当前证明文件,如果尚未遍历完毕则跳转执行下一步,否则跳转执行步骤B8);
B4)从下载得到的所有的叶子节点路径中遍历选择一条叶子节点路径作为当前叶子节点路径,如果尚未遍历完毕则跳转执行下一步,否则,判定当前证明文件验证失败;跳转执行步骤B3);
B5)根据默克尔树的根、当前叶子节点路径对当前证明文件采用指定的零知识证明算法进行零知识证明验证,若验证通过则跳转执行步骤B6);否则,判定当前证明文件验证失败;跳转执行步骤B3);
B6)判断当前叶子节点路径是否在本次验证前N次验证中已经被使用,如果已经被使用则判定当前证明文件验证失败;否则,判定当前证明文件验证成功,并记录当前叶子节点路径;跳转执行步骤B3);
B7)判定当前证明文件没有能够通过零知识证明验证的叶子节点路径,判定当前证明文件验证失败;跳转执行步骤B3);
B8)将所有的证明文件验证结果上传至区块链,若有验证失败的证明文件则输出报警。
作为一种可选的实施方式,本实施例中验证方对证明方主动自证生成的证明文件进行验证为采用定期运行的方式。此外也可以采用不定期运行的方式,甚至在不需要持续地获取证明方对目标文件的持有状态信息的条件下还可以选择不对证明方主动自证生成的证明文件进行定期验证的方式(参见下文,仅在主动验证时才进行验证)。
为了简化目标文件的ID生成方式,本实施例步骤B1)中检索区块链具体是指采用目标文件内容哈希值作为目标文件的ID来检索区块链查找是否存在未验证的证明文件。
如图2所示,本实施例步骤B2)之前还包括验证方上传目标文件的默克尔树的根、所有的叶子节点路径的下述步骤:
C1)生成目标文件的内容哈希值,并采用默克尔树算法生成默克尔树的根及叶子节点路径;
C2)将目标文件的默克尔树的根及所有的叶子节点路径上传至区块链,且以目标文件的内容哈希值作为目标文件的索引。
验证方上传目标文件的默克尔树的根、所有的叶子节点路径,能够确保从区块链中下载得到的目标文件的默克尔树的根、所有的叶子节点路径的可信度,而且为了实现区块链中目标文件的默克尔树的根、所有的叶子节点路径的安全,可以根据需要采用安全措施进行保护,例如账户权限和/或加密处理等。
此外,考虑到前文证明文件生成是采用的是证明方自己选择的叶子节点路径,而且验证方和证明方之间基于区块链交互的时间比较慢,作为前述方式的一种补充,如图4所示,本实施例中还包括验证方针对目标文件发起主动验证的下述步骤:
D1)以目标文件的内容哈希值作为目标文件的索引检索区块链,判断证明方针对目标文件生成的最近N个证明文件是否存在,如果存在则跳转执行下一步;否则判定主动验证结果为证明方当前未存储目标文件,跳转执行步骤D7);
D2)检索区块链查找最近N个证明文件的证明文件验证结果是否存在,如果最近N个证明文件的证明文件验证结果存在则跳转执行下一步;否则验证方分别对最近N个证明文件进行验证获得最近N个证明文件的证明文件验证结果;
D3)判断最近N个证明文件的证明文件验证结果是否全部为证明文件验证成功,如果是则跳转执行下一步;否则判定主动验证结果为证明方存储的目标文件不正确,跳转执行步骤D7);
D4)从区块链中下载目标文件的默克尔树的根、所有的叶子节点路径,并从所有的叶子节点路径中随机选择一条叶子节点路径生成对应的叶子节点索引(通过对叶子路径的随机挑选,迫使证明方必须持有原文件才能应对随机的挑战);
D5)向证明方发送指定的叶子节点索引,并等待证明方返回证明文件,如果收到证明方返回的证明文件则跳转执行下一步;如果超时则判定主动验证结果为和证明方通讯失败,跳转执行步骤D7);
D6)根据默克尔树的根、指定叶子节点路径对证明方返回的证明文件采用指定的零知识证明算法进行零知识证明验证,若验证通过则判定主动验证结果为验证成功,否则判定主动验证结果为验证失败;
D7)将主动验证结果输出并上传至区块链。
参见上述步骤可知,步骤D1)~D7)一方面实现了多个层级的验证,而且还通过向证明方发送指定的叶子节点索引以获取实时的返回的证明文件采用指定的零知识证明算法进行零知识证明验证,一方面使得主动验证结果更加完整和可靠,另一方面上述方式能够快速获取主动验证结果,而且还包括在最近N个证明文件存在、而证明文件验证结果不存在时分别对最近N个证明文件进行验证获得最近N个证明文件的证明文件验证结果,能够实现对验证方对证明方主动自证生成的证明文件进行验证的容错处理。
本实施例步骤D5)中向证明方发送指定的叶子节点索引后还包括证明方的下述响应步骤:
D5.1)针对本地存储的目标文件采用默克尔树算法生成默克尔树的根及叶子节点路径;
D5.2)根据叶子节点索引在所有的叶子节点路径中找到匹配的叶子节点路径;
D5.3)根据默克尔树的根、匹配的叶子节点路径生成证明文件;
D5.4)将证明文件返回给验证方。
需要说明的是,N的取值涉及可靠性和计算资源的均衡,N取值越大则可靠性越高,但是涉及证明文件以及叶子节点路径的处理则需要消耗更多的资源资源,因此N的取值可以根据需要进行配置和指定。作为一种可选的实施方式,本实施例中N的取值为3。
综上所述,本实施例中基于零知识证明和区块链的文件存储证明方法通过证明方在接收目标文件后包括针对目标文件基于指定的证明周期进行主动自证的步骤,实现了基于零知识证明的文件存储证明,能够在不下载原始文件情况下检查存储方是否存储了验证者的文件,具有安全性高、计算资源消耗低、验证可信度高、验证过程简单的优点;本实施例中基于零知识证明和区块链的文件存储证明方法中证明方在接收目标文件后包括针对目标文件基于指定的证明周期进行主动自证时,从所有的叶子节点路径中选择N个证明周期内不重复的叶子节点路径,因此能够确保N个证明周期内的证明文件各不相同,安全性更好。
此外,本实施例还提供一种基于零知识证明和区块链的文件存储证明系统,包括计算机设备,该计算机设备被编程或配置以执行前述基于零知识证明和区块链的文件存储证明方法的步骤,或者该计算机设备的存储器上存储有被编程或配置以执行前述基于零知识证明和区块链的文件存储证明方法的计算机程序。
此外,本实施例还提供一种分布式存储系统,包括用于分别作为证明方或验证方的计算机设备,该计算机设备被编程或配置以执行前述基于零知识证明和区块链的文件存储证明方法的步骤,或者该计算机设备的存储器上存储有被编程或配置以执行前述基于零知识证明和区块链的文件存储证明方法的计算机程序。
此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有被编程或配置以执行前述基于零知识证明和区块链的文件存储证明方法的计算机程序。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (9)
1.一种基于零知识证明和区块链的文件存储证明方法,其特征在于,包括证明方在接收目标文件后包括针对目标文件基于指定的证明周期进行主动自证的下述步骤:
A1)针对本地存储的目标文件采用默克尔树算法生成默克尔树的根及叶子节点路径;
A2)从所有的叶子节点路径中选择N个证明周期内不重复的叶子节点路径;
A3)根据默克尔树的根、选择的叶子节点路径采用指定的零知识证明算法生成证明文件;
A4)将证明文件上传至区块链;
还包括验证方对证明方主动自证生成的证明文件进行验证的下述步骤:
B1)检索区块链查找是否存在未验证的证明文件,如果存在未验证的证明文件则跳转执行下一步;否则结束并退出;
B2)从区块链中下载目标文件的默克尔树的根、所有的叶子节点路径以及未验证的证明文件;
B3)从所有的未验证的证明文件中遍历选择一个证明文件作为当前证明文件,如果尚未遍历完毕则跳转执行下一步,否则跳转执行步骤B8);
B4)从下载得到的所有的叶子节点路径中遍历选择一条叶子节点路径作为当前叶子节点路径,如果尚未遍历完毕则跳转执行下一步,否则,判定当前证明文件验证失败;跳转执行步骤B3);
B5)根据默克尔树的根、当前叶子节点路径对当前证明文件采用指定的零知识证明算法进行零知识证明验证,若验证通过则跳转执行步骤B6);否则,判定当前证明文件验证失败;跳转执行步骤B3);
B6)判断当前叶子节点路径是否在本次验证前N次验证中已经被使用,如果已经被使用则判定当前证明文件验证失败;否则,判定当前证明文件验证成功,并记录当前叶子节点路径;跳转执行步骤B3);
B7)判定当前证明文件没有能够通过零知识证明验证的叶子节点路径,判定当前证明文件验证失败;跳转执行步骤B3);
B8)将所有的证明文件验证结果上传至区块链,若有验证失败的证明文件则输出报警。
2.根据权利要求1所述的基于零知识证明和区块链的文件存储证明方法,其特征在于,步骤B1)中检索区块链具体是指采用目标文件内容哈希值作为目标文件的ID来检索区块链查找是否存在未验证的证明文件。
3.根据权利要求1所述的基于零知识证明和区块链的文件存储证明方法,其特征在于,步骤B2)之前还包括验证方上传目标文件的默克尔树的根、所有的叶子节点路径的下述步骤:
C1)生成目标文件的内容哈希值,并采用默克尔树算法生成默克尔树的根及叶子节点路径;
C2)将目标文件的默克尔树的根及所有的叶子节点路径上传至区块链,且以目标文件的内容哈希值作为目标文件的索引。
4.根据权利要求1~3中任意一项所述的基于零知识证明和区块链的文件存储证明方法,其特征在于,还包括验证方针对目标文件发起主动验证的下述步骤:
D1)以目标文件的内容哈希值作为目标文件的索引检索区块链,判断证明方针对目标文件生成的最近N个证明文件是否存在,如果存在则跳转执行下一步;否则判定主动验证结果为证明方当前未存储目标文件,跳转执行步骤D7);
D2)检索区块链查找最近N个证明文件的证明文件验证结果是否存在,如果最近N个证明文件的证明文件验证结果存在则跳转执行下一步;否则验证方分别对最近N个证明文件进行验证获得最近N个证明文件的证明文件验证结果;
D3)判断最近N个证明文件的证明文件验证结果是否全部为证明文件验证成功,如果是则跳转执行下一步;否则判定主动验证结果为证明方存储的目标文件不正确,跳转执行步骤D7);
D4)从区块链中下载目标文件的默克尔树的根、所有的叶子节点路径,并从所有的叶子节点路径中随机选择一条叶子节点路径生成对应的叶子节点索引;
D5)向证明方发送指定的叶子节点索引,并等待证明方返回证明文件,如果收到证明方返回的证明文件则跳转执行下一步;如果超时则判定主动验证结果为和证明方通讯失败,跳转执行步骤D7);
D6)根据默克尔树的根、指定叶子节点路径对证明方返回的证明文件采用指定的零知识证明算法进行零知识证明验证,若验证通过则判定主动验证结果为验证成功,否则判定主动验证结果为验证失败;
D7)将主动验证结果输出并上传至区块链。
5.根据权利要求4所述的基于零知识证明和区块链的文件存储证明方法,其特征在于,步骤D5)中向证明方发送指定的叶子节点索引后还包括证明方的下述响应步骤:
D5.1)针对本地存储的目标文件采用默克尔树算法生成默克尔树的根及叶子节点路径;
D5.2)根据叶子节点索引在所有的叶子节点路径中找到匹配的叶子节点路径;
D5.3)根据默克尔树的根、匹配的叶子节点路径生成证明文件;
D5.4)将证明文件返回给验证方。
6.根据权利要求1所述的基于零知识证明和区块链的文件存储证明方法,其特征在于,N的取值为3。
7.一种基于零知识证明和区块链的文件存储证明系统,包括计算机设备,其特征在于,该计算机设备被编程或配置以执行权利要求1~6中任意一项所述基于零知识证明和区块链的文件存储证明方法的步骤,或者该计算机设备的存储器上存储有被编程或配置以执行权利要求1~6中任意一项所述基于零知识证明和区块链的文件存储证明方法的计算机程序。
8.一种分布式存储系统,包括用于分别作为证明方或验证方的计算机设备,其特征在于,该计算机设备被编程或配置以执行权利要求1~6中任意一项所述基于零知识证明和区块链的文件存储证明方法的步骤,或者该计算机设备的存储器上存储有被编程或配置以执行权利要求1~6中任意一项所述基于零知识证明和区块链的文件存储证明方法的计算机程序。
9.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有被编程或配置以执行权利要求1~6中任意一项所述基于零知识证明和区块链的文件存储证明方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010476577.5A CN111698092B (zh) | 2020-05-29 | 2020-05-29 | 基于零知识证明和区块链的文件存储证明方法、系统及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010476577.5A CN111698092B (zh) | 2020-05-29 | 2020-05-29 | 基于零知识证明和区块链的文件存储证明方法、系统及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111698092A CN111698092A (zh) | 2020-09-22 |
CN111698092B true CN111698092B (zh) | 2023-07-21 |
Family
ID=72478916
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010476577.5A Active CN111698092B (zh) | 2020-05-29 | 2020-05-29 | 基于零知识证明和区块链的文件存储证明方法、系统及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111698092B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114362953B (zh) * | 2020-10-13 | 2023-12-12 | 北京泛融科技有限公司 | 一种基于零知识证明的文档内容快速抽取验证方法 |
CN112328565A (zh) * | 2020-11-06 | 2021-02-05 | 中国银联股份有限公司 | 一种基于区块链的资源共享的方法及装置 |
CN113177225B (zh) * | 2021-03-16 | 2022-03-18 | 深圳市名竹科技有限公司 | 基于区块链的数据存储证明方法、装置、设备和存储介质 |
CN113411189B (zh) * | 2021-06-16 | 2022-12-02 | 北京沃东天骏信息技术有限公司 | 数据处理方法及装置、溯源方法及装置、电子设备 |
CN113746638B (zh) * | 2021-09-03 | 2023-04-07 | 杭州复杂美科技有限公司 | Nft存储方法、nft还原方法、计算机设备和存储介质 |
CN117272293B (zh) * | 2023-11-20 | 2024-02-13 | 北京信安世纪科技股份有限公司 | 零知识证明中公共参数生成方法、系统、设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9679276B1 (en) * | 2016-01-26 | 2017-06-13 | Stampery, Inc. | Systems and methods for using a block chain to certify the existence, integrity, and/or ownership of a file or communication |
WO2018119930A1 (zh) * | 2016-12-29 | 2018-07-05 | 深圳前海达闼云端智能科技有限公司 | 交易验证处理方法、装置及节点设备 |
WO2019093574A1 (ko) * | 2017-11-10 | 2019-05-16 | 부산대학교 산학협력단 | 해시 기반 서명 기법을 적용한 블록체인 시스템 및 방법 |
CN109847365A (zh) * | 2019-01-24 | 2019-06-07 | 湖南天河国云科技有限公司 | 一种面向区块链应用的防作弊方法及系统 |
CN110311782A (zh) * | 2019-04-29 | 2019-10-08 | 山东工商学院 | 个人信息的零知识证明方法、系统及存储介质 |
CN110855631A (zh) * | 2019-10-24 | 2020-02-28 | 南京可信区块链与算法经济研究院有限公司 | 一种区块链中可监管的零知识验证方法、系统及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10157295B2 (en) * | 2016-10-07 | 2018-12-18 | Acronis International Gmbh | System and method for file authenticity certification using blockchain network |
CN108681583A (zh) * | 2018-05-11 | 2018-10-19 | 北京奇虎科技有限公司 | 基于区块链的数据持有证明方法、装置及可读存储介质 |
CN108664221B (zh) * | 2018-05-11 | 2022-04-01 | 北京奇虎科技有限公司 | 一种数据持有证明方法、装置及可读存储介质 |
CN108737109A (zh) * | 2018-05-11 | 2018-11-02 | 北京奇虎科技有限公司 | 数据持有证明方法、装置及系统 |
CN108897760A (zh) * | 2018-05-22 | 2018-11-27 | 贵阳信息技术研究院(中科院软件所贵阳分部) | 基于默克尔树的电子证据链完整性验证方法 |
-
2020
- 2020-05-29 CN CN202010476577.5A patent/CN111698092B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9679276B1 (en) * | 2016-01-26 | 2017-06-13 | Stampery, Inc. | Systems and methods for using a block chain to certify the existence, integrity, and/or ownership of a file or communication |
WO2018119930A1 (zh) * | 2016-12-29 | 2018-07-05 | 深圳前海达闼云端智能科技有限公司 | 交易验证处理方法、装置及节点设备 |
WO2019093574A1 (ko) * | 2017-11-10 | 2019-05-16 | 부산대학교 산학협력단 | 해시 기반 서명 기법을 적용한 블록체인 시스템 및 방법 |
CN109847365A (zh) * | 2019-01-24 | 2019-06-07 | 湖南天河国云科技有限公司 | 一种面向区块链应用的防作弊方法及系统 |
CN110311782A (zh) * | 2019-04-29 | 2019-10-08 | 山东工商学院 | 个人信息的零知识证明方法、系统及存储介质 |
CN110855631A (zh) * | 2019-10-24 | 2020-02-28 | 南京可信区块链与算法经济研究院有限公司 | 一种区块链中可监管的零知识验证方法、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111698092A (zh) | 2020-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111698092B (zh) | 基于零知识证明和区块链的文件存储证明方法、系统及介质 | |
US10630463B2 (en) | Meta block chain | |
CN109542888B (zh) | 区块链的数据修改和同步方法、装置、设备及存储介质 | |
US10389518B2 (en) | Blockchain hash value recomputation | |
US7428749B2 (en) | Secure delegation using public key authorization | |
US9419804B2 (en) | Data authenticity assurance method, management computer, and storage medium | |
US20200076827A1 (en) | Systems and methods for hybrid blockchain control | |
KR101937220B1 (ko) | 키 관리가 필요없는 블록체인을 기반한 전자서명 또는 메시지 인증 코드를 생성 및 검증 방법 | |
CN107483509A (zh) | 一种身份验证方法、服务器及可读存储介质 | |
CN113301114B (zh) | 区块链共识节点选择方法、装置、计算机设备和存储介质 | |
CN108965342B (zh) | 数据请求方访问数据源的鉴权方法及系统 | |
CN111555860B (zh) | 一种区块链节点共识方法、装置、电子设备及存储介质 | |
CN113708935A (zh) | 基于区块链和puf的物联网设备统一认证方法及系统 | |
US11416821B1 (en) | Apparatuses and methods for determining and processing dormant user data in a job resume immutable sequential listing | |
CN110851848A (zh) | 对称可搜索加密的隐私保护方法 | |
JP6911231B1 (ja) | デジタル資産データパケットの信頼性検証システム | |
CN108664814B (zh) | 一种基于代理的群组数据完整性验证方法 | |
CN109960512B (zh) | 一种软件部署方法及系统 | |
CN112020849A (zh) | 用于验证节点的方法 | |
CN112926983A (zh) | 一种基于区块链的存证交易加密系统及方法 | |
WO2018219425A1 (en) | Method for validating and/or authenticating online curriculum vitae using blockchain distributed ledger technology | |
CN109274674B (zh) | 一种具有高安全性的区块链异构共识方法及终端 | |
Zou et al. | Dynamic provable data possession based on ranked merkle hash tree | |
CN110851804A (zh) | 一种基于电子合同的联盟链身份认证方式 | |
CN115550060A (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 |