CN111585770B - 分布式获取零知识证明的方法、设备、介质和系统 - Google Patents

分布式获取零知识证明的方法、设备、介质和系统 Download PDF

Info

Publication number
CN111585770B
CN111585770B CN202010427977.7A CN202010427977A CN111585770B CN 111585770 B CN111585770 B CN 111585770B CN 202010427977 A CN202010427977 A CN 202010427977A CN 111585770 B CN111585770 B CN 111585770B
Authority
CN
China
Prior art keywords
data
zero knowledge
knowledge proof
node
processing
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
CN202010427977.7A
Other languages
English (en)
Other versions
CN111585770A (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.)
Shanghai Zhiju Information Technology Co ltd
Original Assignee
Shanghai Zhiju Information Technology Co ltd
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 Shanghai Zhiju Information Technology Co ltd filed Critical Shanghai Zhiju Information Technology Co ltd
Publication of CN111585770A publication Critical patent/CN111585770A/zh
Application granted granted Critical
Publication of CN111585770B publication Critical patent/CN111585770B/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
    • 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/3218Cryptographic 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
    • 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/50Cryptographic 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)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提供了一种基于分布式处理获取零知识证明的方法、设备、计算机可读存储介质和在区块链中存储数据的系统。该方法包括:证明节点将输入信息发送给多个处理节点;第一处理节点基于输入信息执行零知识证明的FFT计算,并且确定零知识证明的第一至第四分量的一份;多个处理节点中除了第一节点之外的其他处理节点并行地确定零知识证明的第一至第四分量的一份;多个处理节点中的每一个分别基于FFT计算的结果确定零知识证明的第五分量的一份;以及证明节点基于所述多个处理节点的零知识证明的第一至第五分量的各个份确定该第一至第五分量,从而获得零知识证明。

Description

分布式获取零知识证明的方法、设备、介质和系统
技术领域
本发明涉及数据处理领域,更具体地,涉及一种基于分布式处理获取零知识证明的方法、实现这种方法的设备、计算机可读存储介质以及在区块链中存储数据的系统。
背景技术
零知识证明是指证明者能够在不透露任何有用信息的前提下,使验证者相信某个论断是正确的。在典型的零知识证明过程中,证明者声称某些公开参数符合某个论断,并且根据这些公开参数和某些私有参数,以某种算法生成零知识证明(ZKP)。验证者可以根据相应的算法,基于公开参数来验证该零知识证明,验证通过即认为证明者的该论断为真。
当前,零知识证明方法已广泛应用于区块链技术、数字货币、多方计算、安全计算等领域。然而,对于很多零知识证明方法,如zk-SNARK(zero knowledge Succinct Non-interactive ARgument of Knowledge,零知识简洁非交互式知识证明),在大电路情况下,证明生成时间很长,这将严重影响依赖于零知识证明的应用的实施。
ZCash是最早广泛应用zk-SNARK的数字货币。ZCash采用zk-SNARK技术,目的是彻底解决交易被追踪从而暴露用户隐私的问题。
发明内容
针对上述问题,本发明提供了一种基于分布式处理获取零知识证明的方案,该方法通过分布式地执行部分零知识证明过程能够加快零知识证明的产生。
根据本发明的一个方面,提供了一种基于分布式处理获取零知识证明的方法。该方法包括:证明节点将输入信息发送给多个处理节点;第一处理节点基于输入信息执行零知识证明的FFT计算,并且确定零知识证明的第一至第四分量的一份;多个处理节点中除了第一节点之外的其他处理节点并行地确定零知识证明的第一至第四分量的一份;多个处理节点中的每一个分别基于FFT计算的结果确定零知识证明的第五分量的一份;以及证明节点基于所述多个处理节点的零知识证明的第一至第五分量的各个份确定该第一至第五分量,从而获得零知识证明。
根据本发明的另一个方面,提供了一种的设备。该设备包括:存储器,其上存储有计算机程序代码;以及处理器,其被配置为运行所述计算机程序代码,以执行如上所述的方法。
根据本发明的再一个方面,提供了一种计算机可读存储介质。该计算机可读存储介质上存储有计算机程序代码,该计算机程序代码在被运行时执行如上所述的方法。
根据本发明的又一个方面,提供了一种用于在区块链中存储数据的系统。该系统包括:区块链逻辑模块、接口模块和存储处理和证明模块,所述接口模块是所述区块链逻辑模块和所述存储处理和证明模块之间的接口,其中所述存储处理和证明模块被配置为:将要存储的原始数据分为多个数据块,对所述原始数据的每个数据块分别进行标签计算以生成多层标签数据的对应数据块,对所述多层标签数据的对应数据块进行哈希计算,以产生对应的哈希数据块,对所述多层标签数据中的最后一层标签数据和所述原始数据进行编码计算以产生编码数据,将所述原始数据、所述哈希数据和所述编码数据分别构造Merkle树以产生原始数据Merkle树、哈希数据Merkle树和编码数据Merkle树,并且将原始数据Merkle树、哈希数据Merkle树和编码数据Merkle树的树根分别通过所述接口模块提交给所述区块链逻辑模块以存储在区块链节点上。
利用本发明的方案,通过拆分零知识证明过程并将其一部分并行处理,加快了零知识证明的产生。
附图说明
图1示出了根据本发明实施例的Multiexp计算部分的示意图;
图2示出了根据本发明实施例的基于分布式处理获取零知识证明的过程的数据流向图;
图3示出了根据本发明实施例的基于分布式处理获取零知识证明的方法的流程图;
图4示出了利用根据本发明的实施例的基于分布式处理获取零知识证明的方法在区块链中存储数据的应用系统的示意图;
图5示出了图4的应用系统400中的数据处理流程的示意图;以及
图6示出了可以用来实施本发明的实施例的示例设备的示意性框图。
具体实施方式
以下将结合附图对本发明的各实施例进行详细说明,以便更清楚理解本发明的目的、特点和优点。应理解的是,附图所示的实施例并不是对本发明范围的限制,而只是为了说明本发明技术方案的实质精神。
在下文的描述中,出于说明各种发明的实施例的目的阐述了某些具体细节以提供对各种发明实施例的透彻理解。但是,相关领域技术人员将认识到可在无这些具体细节中的一个或多个细节的情况来实践实施例。在其它情形下,与本申请相关联的熟知的装置、结构和技术可能并未详细地示出或描述从而避免不必要地混淆实施例的描述。
除非语境有其它需要,在整个说明书和权利要求中,词语“包括”和其变型,诸如“包含”和“具有”应被理解为开放的、包含的含义,即应解释为“包括,但不限于”。
在整个说明书中对“一个实施例”或“一实施例”的提及表示结合实施例所描述的特定特点、结构或特征包括于至少一个实施例中。因此,在整个说明书的各个位置“在一个实施例中”或“在一实施例”中的出现不一定全都指相同实施例。另外,特定特点、结构或特征可在一个或多个实施例中以任何方式组合。
说明书和所附权利要求中所用的单数形式“一”和“所述”包括复数指代物,除非文中清楚地另外规定。应当指出的是术语“或”通常以其包括“和/或”的含义使用,除非文中清楚地另外规定。
如前所述,现有的零知识证明方法有多种多样,包括交互式证明方法和非交互式证明方法,其中非交互式证明方法不需要借助证明者和验证者之间的交互来产生证明,相对于交互式证明方法具有显著的优点。zk-SNARK(zero knowledge Succinct Non-interactive ARgument of Knowledge,零知识简洁非交互式知识证明)是当前常用的一类非交互式零知识证明方法,以下,本文中以Groth16这种zk-SNARK方法为例来对本发明的方案进行描述。然而,本领域技术人员可以理解,本发明的思想可以容易地扩展到其他零知识证明方法,只要该方法的整个过程或其一部分能够拆分为适合分布式处理的子过程。
Groth16是Jens Groth设计的一种有效的zk-SNARK零知识证明方法。Groth16产生的证明更小并且验证更加快速。Groth16证明系统使用QAP(Quadratic Assignmentproblem,二次分配问题)表示R1CS实例的可满足性。一个QAP实例可以用如下关系式(1)表示:
其中,表示一个有限域,l表示输入的公开信息中的元素的个数,ui(x),vi(x),wi(x)代表多项式,个数分别为m个,t(x)表示特定根组成的一个多项式。
用QAP问题表示,上述关系式(1)定义了公开信息和隐私信息满足:
从表达式(2)可以看出,已知ai,ui(x),vi(x),wi(x)和t(x)的情况下,可以计算出h(x)。
这里,a0=1,h(x)的阶数比t(x)的阶数小2。
完整的Groth16证明系统包括三个过程,分别对应着三种算法:设置、证明和验证。其中设置算法创建证明密钥和验证密钥,验证算法使用验证密钥检查一个证明,以决定是接受还是拒绝该证明。对于一个QAP实例,设置算法仅运行一次,所创建的证明密钥和验证密钥对证明者和验证者公开,而验证算法的计算速度非常快。因此决定整个Groth16证明系统速度的关键因素在于其中的证明部分(证明算法)的执行速度。
Groth16算法的证明部分的计算可以分为以下两部分:
第一部分:计算h(x)多项式(FFT计算)
对于一个QAP实例,可以选择一个域。根据上述的表达式(2),在选定域S上,已知ui(x),vi(x),wi(x)的值的情况下,可以通过反傅立叶变换获得ui(x),vi(x),wi(x)多项式,而在另外一个域T上,已知ui(x),vi(x),wi(x)多项式的情况下,可以由傅立叶变换获得ui(x),vi(x),wi(x)的值。
在域T上,h(x)的值可以通过如下的公式(3)计算出:
在已知域T以及相应的h(x)的值的情况下,可以通过反傅立叶变换计算出h(x)多项式。也就是说,计算h(x)多项式需要4次反傅立叶变换(iFFT)和3次傅立叶变换(FFT)。在下文中也将这部分的计算过程称为“FFT计算”。
第二部分:多分量计算(也称为Multiexp计算)
证明者选择两个随机数r,s,并计算证明π=([A]1,[C]1,[B]2)
其中,
α、β、δ分别为随机数,
[]1和[]2指的是不同生成元(h和g)生成的椭圆曲线上的点。
可以看出,证明π=([A]1,[C]1,[B]2)的产生可以分解为如下5个分量(Multiexp)的计算:
第一分量
第二分量MultiexpB1和第三分量Multiexp B2:
其中MultiexpB1和Multiexp B2可以统称为Multiexp B,B1是因为证明[C]1中包括了B的计算部分。也就是说,B的计算部分需要在不同生成元(h和g)计算两次。
第四分量MultiexpL:
第五分量Multiexp H:
从上述描述可以看出,零知识证明(Groth16)的计算主要包括两部分:FFT计算和Multiexp计算。在分布式环境下,可以设计FFT算子和分布式Multiexp算子来分别实现这两部分的计算。并且,根据上述公式(3)至(7)可以看出,只有第五分量Multiexp H的计算(公式(7))依赖于h(x)的计算(公式(3))。
对于每个Multiexp分量(第一分量至第五分量)的计算,可以将其计算分成n份,表示为下面的表达式(8):
其中gi是椭圆曲线上的点。
进一步地,根据计算切分原理可以将上述表达式(8)进一步转换为下面的表达式(9):
其中m·k=n.
图1示出了根据本发明实施例的Multiexp计算部分的示意图。如图1所示,可以将每个Multiexp分量的计算分成n份(n个部分),每个矩形框代表n份中的1份,可以并行计算每个Multiexp分量的n个部分,然后通过ECC(椭圆曲线算法)加法组合n个部分的结果以得到该Multiexp分量。
基于上述分析,可以如下设计零知识证明的确定过程,以加快证明的产生。图2示出了根据本发明实施例的基于分布式处理获取零知识证明的过程的数据流向图,图3示出了根据本发明实施例的基于分布式处理获取零知识证明的方法300的流程图。以下结合图2和图3详细描述根据本发明实施例的方法300。图3的方法300可以由证明者(即证明节点210)及其多个处理节点2201、2202......220n(统称为处理节点220)分布式执行。
如图3中所示,在步骤310,证明节点210将输入信息发送给多个处理节点220。这里,输入信息可以包括输入的公开信息和隐私信息
这里,如前所述,由于FFT计算部分(h(x)多项式)的计算量相对较小,因此可以仅由一个处理节点(如图2中示例性地为第一处理节点2201)执行,而多分量计算部分(Multiexp计算)的计算量很大,可由多个处理节点(如图2中的所有处理节点220)分布式执行。此外,如上述公式(8)和(9)所示,假设将每个Multiexp分量的计算分成n个部分,因此在步骤310中,证明节点210可以将输入信息发送给n个处理节点220。
接下来,在步骤320,第一处理节点2201基于输入信息执行零知识证明的FFT计算,以获得h(x)多项式系数作为FFT计算的结果。此外,由于FFT计算的计算量较小,第一处理节点2201同时还承担Multiexp计算的n份中的一份,因此在步骤320,第一处理节点2201在FFT计算之后、之前或者同时地,还可以用来确定零知识证明的第一至第四分量(Multiexp A、B1、B2、L)的一份。
与步骤320同时,在步骤330,多个处理节点220中除了第一节点2201之外的其他处理节点2202......220n并行地确定零知识证明的第一至第四分量(Multiexp A、B1、B2、L)的一份。
在步骤320中,第一处理节点2201获取FFT计算的结果之后,可以将该FFT计算的结果(h(x)多项式系数)发送给其他处理节点2202......220n。接下来,在步骤340,所有n个处理节点220中的每一个分别基于FFT计算的结果确定零知识证明的第五分量(Multiexp H)的一份。
最后,在步骤350,证明节点210从每个处理节点220获取零知识证明的第一至第五分量的各个份,并通过ECC加法组合n份以得到第一至第五分量(Multiexp A、B1、B2、L、H),从而获得证明π=([A]1,[C]1,[B]2)。
如果分布式的处理节点220的数量为n,则上述图2和图3所示的证明过程的性能可以用如下的公式进行估算:
其中:t表示图2和图3所示的证明生成过程所需的时间,
td表示输入信息的传输时间,
th表示第一处理节点完成FFT计算后将h(x)多项式传输给其他处理节点所需的时间,
tA表示第一分量Multiexp A的计算时间,
tB1表示第二分量MultiexpB1的计算时间,
tB2表示第三分量Multiexp B2的计算时间,
tL表示第四分量Multiexp L的计算时间,
tH表示第五分量Multiexp H的计算时间。
可以看出,td和th相对较小的情况下,根据本发明的分布式零知识证明的时间和处理节点的个数基本上成反比。
根据本发明的基于分布式处理获取零知识证明的方法300可以用于基于零知识证明的多个应用领域和多种应用场景中,如区块链、多方计算、安全计算等。图4示出了利用根据本发明的实施例的基于分布式处理获取零知识证明的方法300在区块链中进行数据存储证明的的应用系统400的示意图。图5示出了图4的应用系统400中的数据处理流程的示意图。该应用系统400例如是一个项目Filecoin Blockchain。
项目Filecoin采用PoRep以及PoSt协议,保证存储节点正确存储了用户数据。PoRep代表Proof of Replicate(复制证明)。PoSt代表Proof of Space time(时空证明)。这两部分协议的计算都需要通过零知识证明计算生成证明并提交到区块链上,因此可以利用本发明的零知识证明方法300来加快零知识证明的产生。以下,结合图4和图5对利用本发明的方法300的应用系统400进行描述。为了简洁起见,该描述主要集中于PoRep协议的数据计算过程以及对所存储数据的零知识证明的计算过程。本领域技术人员可以理解,该描述也可以容易地应用于PoSt协议的情况。
如图4中所示,该应用系统400包括区块链逻辑模块410、存储处理和证明模块430、作为区块链逻辑模块410和存储处理和证明模块430之间的接口模块420、以及证明模块440。区块链逻辑模块410是用于实现区块链的底层逻辑的模块,其是代码层面的,部署在多个区块链节点上。例如对于Filecoin区块链来说,模块410可以是go语言实现的FilecoinBlockchain代码模块。存储处理和证明模块430用来对区块链的数据以及证明进行存储和管理。例如对于Filecoin区块链来说,模块430可以是rust语言实现的Rust-fil-proofs代码模块,用于将数据存储为Mercle树形式。接口模块420是模块410和430之间的接口。例如对于Filecoin区块链来说,模块420可以是go语言实现的FFI代码模块。证明模块440是用于进行零知识证明的代码库。例如对于Filecoin区块链来说,其是Groth16的证明系统的实现,可以由rust语言实现,称为Bellman。
此外,应用系统400还包括多个分布式处理节点450和证明节点460。分布式处理节点450例如对应于上文结合图2和图3所描述的处理节点220,证明节点460例如对应于上文结合图2和图3所描述的证明节点210,其上的代码可以利用rust语言实现。处理节点450和460用于实现根据本发明的基于分布式处理获取零知识证明的方法300。
对于一次数据存储操作来说,存储处理和证明模块430利用PoRep协议将要存储的原始数据进行VDF(Verifiable Delay Function,可验证延迟函数)计算并通过接口模块420提交给区块链逻辑模块410,由所有或部分区块链节点进行存储。此外,每个进行了数据存储的节点(如节点460)还调用证明模块440对其存储的数据进行证明,这一部分可以采用如上所述的本发明的零知识证明方法300。
参考图5,存储处理和证明模块430将数据分成多个Sector(单个存储单元),每个Sector进行独立的处理和存储。对于Filecoin应用来说,Sector的大小默认为32G。以下以单个Sector为例进行描述。
一个sector的数据称为原始数据,图中以标号510指示。原始数据510被分为多个数据块501。例如每个数据块可以包含32个字节。存储处理和证明模块430对原始数据510进行标签(Labeling)计算,生成多层标签数据5201、5202、……、520L(统称为标签数据520)。具体地,存储处理和证明模块430可以对原始数据510的每个数据块501进行标签计算以生成多层标签数据5201、5202、……、520L的对应数据块521、522、……52L。这里,L是大于1的正整数。在一个典型的Filecoin应用中,L=11。每层标签数据的计算依赖于上一层标签数据的计算。具体的标签计算方法例如可以参见Filecoin白皮书,在此不展开描述。接下来,可以对多层标签数据520进行Hash计算,从而将多层标签数据520“压缩”为对应的哈希(hash)数据530。具体地,多层标签数据5201、5202、……、520L的对应数据块521、522、……52L被分别进行哈希计算,以产生对应的哈希数据块531。
进一步地,存储处理和证明模块430还对多层标签数据520中的最后一层标签数据(例如第11层的标签数据)520L和原始数据510进行编码计算以产生编码数据(图中未示出)。这里,编码计算(encode)的具体方法例如可以参见Filecoin白皮书,在此不展开描述。
存储处理和证明模块430将原始数据510、哈希数据530和编码数据分别构造Merkle树以产生原始数据Merkle树、哈希数据Merkle树和编码数据Merkle树,并将这些Merkle树的Merkle树根分别通过接口模块420提交给区块链逻辑模块410以存储在区块链节点上。在一些实施例中,存储处理和证明模块430不是存储哈希数据Merkle树根和编码数据Merkle树根二者,而是将这二者进行哈希计算的哈希值存储到区块链节点上以进一步节省存储空间。
在一个区块链节点存储了上述信息之后,其应当提交零知识证明以证明其确实存储了相应的原始数据,此时该节点称为证明节点(图4中的节点460)。
具体地,证明节点460随机选择其所存储的原始数据510中的至少一个数据块501作为输入信息,将该输入信息发送给多个处理节点450以执行如上所述的方法300以获得零知识证明。
在根据本发明的一些实施例中,例如在Filecoin区块链中,证明节点460可以从原始数据510中随机选择144个数据块作为输入信息来执行方法300。这是因为,将一个Sector的所有计算过程都进行零知识证明不太现实,电路规模太大。
验证节点(图中未示出)的证明模块440对至少一个数据块501分别进行如上所述的标签计算、哈希计算和编码计算以生成相应的标签数据块521、522、……52L、哈希数据块531和编码数据块(图中未示出),并且根据该至少一个数据块501的位置确定对应的标签数据Merkle树、哈希数据Merkle树和编码数据Merkle树的树根,从而验证证明节点460是否存储了相应的原始数据。
整个PoRep的电路规模比较大,在亿级别。PoRep证明的计算过程比较长,在一般的服务器CPU上以小时计。与常规计算以小时计的commit时间相比,利用本发明的分布式的零知识证明能够显著提升commit部分的计算性能。
图6示出了可以用来实施本发明的实施例的示例设备600的示意性框图。设备600例如可以是上述证明节点210或460,其包含多个处理器610,也可以是上述处理节点220或450。如图所示,设备600可以包括一个或多个中央处理单元(CPU)610(图中仅示意性地示出了一个),其可以根据存储在只读存储器(ROM)620中的计算机程序指令或者从存储单元680加载到随机访问存储器(RAM)630中的计算机程序指令,来执行各种适当的动作和处理。在RAM 630中,还可存储设备600操作所需的各种程序和数据。CPU 610、ROM 620以及RAM 630通过总线640彼此相连。输入/输出(I/O)接口650也连接至总线640。
设备600中的多个部件连接至I/O接口650,包括:输入单元660,例如键盘、鼠标等;输出单元670,例如各种类型的显示器、扬声器等;存储单元680,例如磁盘、光盘等;以及通信单元690,例如网卡、调制解调器、无线通信收发机等。通信单元690允许设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的方法300例如可由设备600的处理单元610执行。例如,在一些实施例中,方法300可被实现为计算机软件程序,其被有形地包括于机器可读介质,例如存储单元680。在一些实施例中,计算机程序的部分或者全部可以经由ROM 620和/或通信单元690而被载入和/或安装到设备600上。当计算机程序被加载到RAM 630并由CPU 610执行时,可以执行上文描述的方法300的一个或多个操作。此外,通信单元690可以支持有线或无线通信功能。
以上结合附图对根据本发明的基于分布式处理获取零知识证明的方法300和设备600以及这种方法的一种应用系统400进行了描述。然而本领域技术人员可以理解,方法300的步骤的执行并不局限于图中所示和以上所述的顺序,而是可以以任何其他合理的顺序来执行。此外,设备600也不必须包括图6中所示的所有组件,其可以仅仅包括执行本发明中所述的功能所必须的其中一些组件,并且这些组件的连接方式也不局限于图中所示的形式。例如,在设备600是诸如手机之类的便携式设备的情况下,设备600可以具有与图6中相比不同的结构。
本发明可以是方法、装置、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言-诸如Smalltalk、C++等,以及常规的过程式编程语言-诸如"C"语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络-包括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包括一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (6)

1.一种基于分布式处理获取零知识证明的方法,以应用于区块链中存储数据,所述方法包括:
证明节点将输入信息发送给多个处理节点;
第一处理节点基于输入信息执行零知识证明的FFT计算,并且确定零知识证明的第一至第四分量n份中的一份;
多个处理节点中除了第一节点之外的其他处理节点并行地确定零知识证明的第一至第四分量的n份中的一份;
所述多个处理节点中的每一个分别基于FFT计算的结果确定零知识证明的第五分量的n份中的一份;以及
证明节点基于所述多个处理节点的零知识证明的第一至第五分量的各个份确定该第一至第五分量,从而获得零知识证明,
其中零知识证明π=([A]1,[C]1,[B]2),
第一分量:
Figure FDA0004103722690000011
第二分量和第三分量:不同生成元下的
Figure FDA0004103722690000012
第四分量:
Figure FDA0004103722690000013
第五分量:
Figure FDA0004103722690000014
其中α、β、δ分别为随机数,[]1和[]2表示不同生成元下生成的椭圆曲线上的点,(a1,...,al)表示公开信息,(al+1,...,am)表示隐私信息,ui(x),vi(x),wi(x)代表多项式,个数分别为m个,t(x)表示特定根组成的一个多项式,h(x)多项式为
Figure FDA0004103722690000015
并且其中第一至第五分量中的每一个的一份可以如下确定:
Figure FDA0004103722690000016
其中m·k=n,gi是椭圆曲线上的点。
2.一种基于分布式处理获取零知识证明的设备,包括:
存储器,其上存储有计算机程序代码;以及
处理器,其被配置为运行所述计算机程序代码,以执行如权利要求1所述的方法。
3.一种计算机可读存储介质,其上存储有计算机程序代码,所述计算机程序代码在被运行时执行如权利要求1所述的方法。
4.一种用于在区块链中存储数据的系统,包括:
区块链逻辑模块(410)、接口模块(420)和存储处理和证明模块(430),所述接口模块(420)是所述区块链逻辑模块(410)和所述存储处理和证明模块(430)之间的接口,其中所述存储处理和证明模块(430)被配置为:
将要存储的原始数据分为多个数据块,
对所述原始数据的每个数据块分别进行标签计算以生成多层标签数据的对应数据块,
对所述多层标签数据的对应数据块进行哈希计算,以产生对应的哈希数据块,
对所述多层标签数据中的最后一层标签数据和所述原始数据进行编码计算以产生编码数据,
将所述原始数据、所述哈希数据和所述编码数据分别构造Merkle树以产生原始数据Merkle树、哈希数据Merkle树和编码数据Merkle树,并且
将原始数据Merkle树、哈希数据Merkle树和编码数据Merkle树的树根分别通过所述接口模块(420)提交给所述区块链逻辑模块(410)以存储在区块链节点上,
所述系统还包括多个分布式处理节点(450)和证明节点(460),其中所述证明节点(460)存储有所述原始数据,所述证明节点(460)被配置为:
随机选择其所存储的原始数据中的至少一个数据块作为输入信息,将其发送给所述多个分布式处理节点(450),以执行如权利要求1所述的方法以获得零知识证明。
5.如权利要求4所述的系统,其中所述多层标签数据包括11层。
6.如权利要求4所述的系统,其中所述至少一个数据块包括144个数据块。
CN202010427977.7A 2020-01-21 2020-05-20 分布式获取零知识证明的方法、设备、介质和系统 Active CN111585770B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202010071236 2020-01-21
CN202010071236X 2020-01-21

Publications (2)

Publication Number Publication Date
CN111585770A CN111585770A (zh) 2020-08-25
CN111585770B true CN111585770B (zh) 2023-04-07

Family

ID=72110973

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010427977.7A Active CN111585770B (zh) 2020-01-21 2020-05-20 分布式获取零知识证明的方法、设备、介质和系统

Country Status (1)

Country Link
CN (1) CN111585770B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113806059B (zh) * 2021-11-19 2022-06-03 杭州字节方舟科技有限公司 用于零知识证明的证明方法、系统、电子设备和存储介质
CN114880109B (zh) * 2021-12-15 2023-04-14 中国科学院深圳先进技术研究院 基于cpu-gpu异构架构的数据处理方法、设备以及存储介质
CN114880108B (zh) * 2021-12-15 2023-01-03 中国科学院深圳先进技术研究院 基于cpu-gpu异构架构的性能分析方法、设备以及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9009089B1 (en) * 2011-06-27 2015-04-14 Hrl Laboratories, Llc Secure pattern matching
CN107274184A (zh) * 2017-05-11 2017-10-20 上海点融信息科技有限责任公司 基于零知识证明的区块链数据处理
CN108898490A (zh) * 2018-06-25 2018-11-27 北京奇虎科技有限公司 智能合约的执行方法、节点、系统、电子设备及存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9009089B1 (en) * 2011-06-27 2015-04-14 Hrl Laboratories, Llc Secure pattern matching
CN107274184A (zh) * 2017-05-11 2017-10-20 上海点融信息科技有限责任公司 基于零知识证明的区块链数据处理
CN108898490A (zh) * 2018-06-25 2018-11-27 北京奇虎科技有限公司 智能合约的执行方法、节点、系统、电子设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
李康 ; 孙毅 ; 张 ; 李军 ; 周继华 ; 李忠诚 ; .零知识证明应用到区块链中的技术挑战.大数据.2018,(第01期),全文. *
李铮.基于零知识证明的跨域认证方案.计算机与数字工程.2014,全文. *

Also Published As

Publication number Publication date
CN111585770A (zh) 2020-08-25

Similar Documents

Publication Publication Date Title
CN111585770B (zh) 分布式获取零知识证明的方法、设备、介质和系统
JP7208989B2 (ja) ブロックチェーン上に検証鍵を記録するためのシステム
Yue et al. Blockchain based data integrity verification in P2P cloud storage
CN108683669B (zh) 数据验证方法和安全多方计算系统
JP2023106528A (ja) プルーフ検証に基づいてオフ・チェーン・データを認証するシステム及び方法
EP3394848B1 (en) Method for storing data on a storage entity
CN113489584B (zh) 一种区块链中随机数的处理方法、装置和电子设备
US20200005173A1 (en) Method for performing a disjunctive proof for two relations
US20220263663A1 (en) Digital Signature Method, Signature Information Authentication Method, And Relevant Electronic Devices
CN109274504B (zh) 一种基于云平台的多用户大数据存储分享方法及系统
CN112434269A (zh) 文件的零知识证明方法、验证方法、计算设备和存储介质
CN111949737A (zh) 基于区块链的数据完整性验证方法、终端设备和存储介质
EP3395032B1 (en) Method for providing a proof-of-retrievability
Zheng et al. A new design of online/offline signatures based on lattice
CN112182108A (zh) 基于区块链的分布式数据存储更新方法和电子设备
KR102070061B1 (ko) 묶음 검증 방법 및 장치
CN111400270A (zh) 一种基于区块链的文件授时的方法和装置
CN111949738A (zh) 基于区块链的数据存储去重方法、终端设备和存储介质
CN112632888A (zh) 电路合成方法、设备、介质和数据存储证明系统
CN112732789A (zh) 基于区块链的可搜索加密方法和电子设备
WO2017177758A1 (zh) 数据信号的处理方法及装置
CN117035776B (zh) 一种数据共享方法、装置、电子设备和存储介质
US11962562B2 (en) Anonymous message board server verification
KR20190041203A (ko) 내재적 인증서를 사용하는 전자서명에 대한 효율적인 서명 검증 방법
CN117240438B (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