一种通用非交互式零知识证明方法及系统

文档序号:34162269发布日期:2023-05-14 21:19阅读:137来源:国知局
一种通用非交互式零知识证明方法及系统

本发明属于密码,具体涉及一种基于多方安全计算和同态承诺的通用非交互式零知识证明方法及系统。


背景技术:

1、多方安全计算:多个参与方在不泄露各自输入的情况下共同计算某个函数。

2、同态承诺:满足com(a)+com(b)=com(a+b)的承诺方案。

3、非交互式零知识证明:证明者在不需要交互和不泄露证据的情况下证明某一命题的正确性。

4、零知识(zk)证明及其非交互的变体是理论和实践中最基本和最通用的密码原语之一。零知识证明允许证明者在不透露任何其他信息的情况下说服验证者一个陈述的有效性,而非交互零知识(nizk)证明系统要求在没有验证者参与的情况下生成证明。nizk证明可以用任意的验证器进行验证,而不需要指定特殊的验证器。nizk证明系统将是非常有用的,它可以对于任意的算术电路,甚至np语言类进行证明。具体的,其应用场景包括用于构建ind-cca安全公钥加密方案、签名方案、区块链等。

5、人们已经广泛研究了可以从因式分解和具有双线性映射的群等标准假设出发构建nizk。最近一项研究也表明,用于对任意np语言进行证明的nizk也可以由基于格的假设构建。这种协议是特别可取的,因为基于格的假设被认为是困难的,即使是在量子计算机模型下的平均情况下的困难性。虽然这一方面的工作已经令人兴奋地实现了基于格假设的新的可行性,但我们对如何优化这种结构效率的理解仍处于初级阶段。

6、目前主要有两种可能的方法获得对通用算数电路的nizks。第一种方法主要是理论上的。在crypto 2019中,peikert和sheiehan展示了如何通过相关哈希族(ci-hash)将针对任意np语言类的基于σ协议范式的零知识证明系统转换为非交互式系统。构建通用非交互式零知识证明的另一种巧妙方法来自ishai等人提出的安全多方计算(mpc),称为mpc-in-the-head范式。mpc协议允许多个参与方联合计算n方函数(输入的函数),同时保持输入的私密性和输出的正确性。

7、在crypto 2019中,peikert和sheiehan展示的利用相关哈希族(ci-hash)将针对任意np语言类的基于σ协议范式的零知识证明系统转换为非交互式系统。然而,正如他们文章所指出的,这样的变换需要并行重复运行σ协议o(λ)次,这导致了证明尺寸的显著膨胀。此外,该方法中使用的∑协议是专门为特定的np完全问题设计的。将一个特定的算术电路,例如用密文加密的消息,转换为这个特定的np完全问题通常是不方便的。

8、构建通用非交互式零知识证明的一种巧妙方法来自ishai等人提出的安全多方计算(mpc),称为mpc-in-the-head范式。目前现有的基于mpcith范式构造零知识证明均是基于半诚实模型下安全的mpc协议。当从n方具有半诚实安全性的mpc构造nizks时,由于违反稳健性需要作弊的证明者产生至少一对不一致的副本,通过随机揭示两个参与人的副本来检测作弊行为的概率可能为1/n。为了使完整性误差的概率达到可忽略值,nizks证明器需要重复运行所需证明陈述对应的mpc协议o(λ)次,其中λ为安全参数。最近,一系列漂亮的工作显示出从各种应用中半诚实的安全mpc协议构建高效nizks的巨大潜力,但是仍然无法解决其重绕次数过多的问题。

9、因此,如何构造一个高效的、只需要运行所证明问题电路一次、可以抵抗量子计算机攻击、不依赖于任何的代数结构的基于多方安全计算的通用非交互式零知识证明系统仍然是一个开放问题。


技术实现思路

1、针对现有技术中存在的问题,本发明的目的在于提供一种基于多方安全计算和同态承诺的通用非交互式零知识证明方法及系统。本发明是一种高效的、只需要运行所证明问题对应的电路一次、可以抵抗量子计算机攻击、不依赖于任何的代数结构的通用非交互式零知识证明方法。

2、本发明基于多方安全计算和同态承诺的通用非交互式零知识证明方法,其步骤包括:

3、(1)提出了新的证明框架。算法框架主要分为:预计算阶段、证明阶段和验证阶段三个部分。对于任意的np语言类其中为陈述为x、证据为w的公知的np问题对应的描述。假设其对应的算术电路记为c(x,w)=1,乘法门个数为k。首先证明者和验证者交互地运行第一阶段:预计算阶段,产生第二阶段证明阶段所需的材料,即后续步骤(2)中所阐述的n个beaver三元组中剩余未打开的beaver三元组。第二阶段证明阶段由证明者运行,证明者根据证据w,随机选取随机数rw,调用同态承诺算法com计算证据w的承诺值cw=com(w;rw)发送给验证者,其中com算法输入证据w和随机数rw,计算结果为对证据w的承诺。然后,证明者根据证据w和陈述x以及预计算阶段产生的材料,运行电路c(w,x),得到算数电路c(x,w)中计算每个乘法门的副本以及副本对应的承诺的随机数并输出,该结果供验证者验证电路运行的正确性。最后,证明者根据对证据w承诺时的随机数rw,计算最终结果对应的承诺的打开值rresult,即rresult=c(rw)。最终,证明者输出证明,证明为证明者计算算数电路c(x,w)中的副本信息,其包含:电路乘法门的副本、副本承诺对应的随机数、rresult。将证明最终发送给验证者。第三阶段验证阶段由验证者运行。验证者根据证据w的同态承诺值cw=com(w;rw)和陈述x,运行电路c(cw,x),得到相同的算数电路c关于输入为(cw,x)的每一个乘法门副本对应的承诺,根据证明中包含的乘法门副本及其承诺的随机性验证乘法门执行的正确性,验证过程为众所周知的承诺打开算法。

4、进一步,验证者根据rresult对电路c(cw,x)运行的结果进行承诺的打开,验证证明通过与否。其中,com为满足加法同态的承诺算法,本发明cw=com(w;rw)表示使用随机数rw对w进行承诺,承诺打开为公布随机性rw,根据rw和cw可以恢复出w验证承诺值的正确性。

5、进一步地,本发明不依赖于任何的代数结构,可以基于任意的群、环及其对应的代数假设构造。大量的关于同态承诺算法的相关研究表明,目前已有高效的满足加法同态的承诺算法。

6、(2)提出了新的零知识证明预计算阶段。由证明者和验证者共同运行预计算算法,在预计算阶段可以在不需要知道证明电路的情况下产生证明所需要的某些材料。具体的讲,预计算阶段证明者和验证者通过gentriple协议产生一系列的beaver三元组,其中beaver为发明该三元组的作者名字。具体的讲,证明者随机选取n个beaver三元组(ai,bi,ci)i∈[n],其中满足ci=ai×bi,同时独立的随机选取三元组其中i为第i个随机的三元组用于对beaver三元组进行承诺。利用同态承诺算法com将产生的n个beaver三元组分别计算其承诺值其中为使用随机数对ai进行承诺,为使用随机数对bi进行承诺,为使用随机数对ci进行承诺。证明者输出beaver三元组的承诺值,发送给验证者,验证者收到n个beaver三元组的承诺后,随机选择集合c={i1,i2,…,it},其中it∈{1,2,...,n},发送给证明者,其中i1,i2,…,it为从n个beaver三元组中随机抽取t个beaver三元组对应的承诺值的索引。证明者根据收到的挑战集合c,打开对应的承诺值,即证明者将承诺中使用的随机性发送给验证者。验证者验证:验证者根据收到的随机性和承诺恢复出承诺对应的beaver三元组(ai,bi,ci)i∈[c]。如果恢复出承诺对应的beaver三元组均满足ci=ai×bi,则验证通过。证明者利用剩余未打开的n\c个beaver triples进入第二步在线阶段的算法,在这里我们记为k=|n|-|c|,即k为未打开的beaver三元组的个数,用于第二阶段证明算法中。其中beaver三元组是一个三元组(a,b,c)满足c=a×b,同态承诺算法是指满足加法同态性的承诺算法,即com(a,ra)+com(b,rb)=com(a+b,ra+rb)。

7、进一步地,在预计算阶段,本发明使用的gentriple协议涵盖采用任何方法产生所需的beaver triples的协议。大量的关于同态承诺算法的相关研究表明,目前已有高效的gentriple协议。本发明说明书只以”cut-and-choose”方法产生相应的beaver triples为例,介绍本发明的方法。

8、(3)提出了新的证据承诺方式。对于任意的np语言类在证明阶段中:证明者手中拥有证据w、np问题的陈述x、在预计算阶段(如(2)所示)产生的k个、未被打开的beaver三元组以及对应的承诺的随机性,验证者仅仅拥有np问题的陈述x和预计算阶段产生的k个、未被打开的beaver三元组的承诺(如(2)所示)。证明算法中证明者随机选取随机数rw,利用同态承诺算法com对证据w计算其承诺值cw=com(w;rw)并将承诺cw发送给验证者,证明者将rw作为承诺的打开保存不发送。其中,cw=com(w;rw)是使用随机rw数对证据w进行承诺。同态承诺算法是指满足加法同态性的承诺算法,即com(a,ra)+com(b,rb)=com(a+b,ra+rb)。

9、(4)提出了新的证明算法。证明者根据证据w以及对应的承诺的随机性rw,预计算阶段产生的、未被打开的k个beaver三元组(ai,bi,ci)i∈[k](如(2)所示)以及对应的承诺的随机性运行证明算法:

10、·证明者计算关于np语言对应的算术电路c(x,w)=1:

11、1)加法门add(e,f):对于代数电路中任意两个需要进行加法门操作的元素e,f∈fq:证明者计算加法门为d=e+f,其中,fq元素取自于{0,1,...,q-1}之间的集合;

12、2)乘法门multi(gi,hi,ai,bi,ci):对于电路的第i个乘法门需要计算元素gi,hi对应的乘法结果。证明者利用预计算阶段(如(2)预计算阶段所示)产生的第i个beaver三元组(ai,bi,ci),计算:εi=gi-ai∈fq,δi=hi-bi∈fq,最终计算乘法结果:z=ci+εiai+δibi+εiδi∈fq。通过引入beaver三元组,可以将乘法门的非线性运算转换为线性运算,其中,εi,δi表示第i个乘法门的计算副本,ai和bi和ci为预计算阶段产生的第i个beaver三元组,gi,hi为第i个乘法门需要进行乘法的两个元素,表示fq为元素取自于{0,1,...,q-1}之间的集合,i表示乘法门的索引。

13、·为了保证证明者不能够伪造证明,我们需要给出每个乘法门运行的正确性,即证明者是诚实运行算术电路c(x,w)=1。具体的讲,对于每一个乘法门,验证者根据证据的承诺cw=com(w,rw)和预计算阶段得到的beaver triples的承诺计算com(gi)-com(ai)=com(εi)和com(hi)-com(bi)=com(δi)。进一步,证明者需要给出εi和δi的承诺的打开值和即证明者计算和并加入证明π中-起发送给验证者,其中,fq为元素取自于{0,1,...,q-1}之间的集合。和为对εi和δi承诺中使用的随机性,εi和δi为第i个乘法门的副本。和为对gi和hi承诺中使用的随机性,gi和hi为第i个乘法门需要进行乘法运算的元素。和为对ai和bi承诺中使用的随机性,ai和bi为预计算阶段产生的第i个beaver三元组。

14、·为了验证最终输出的正确性,证明者需要给出最终计算结果承诺的打开值,即证明者需要计算:其中,为第k个beaver三元组对应承诺的随机性,εk和δk为第k个乘法门的副本。终证明者输出证明:

15、·进一步,根据通用的fiat-shamir变换,我们可以将上述通用交互式零知识证明协议转换为非交互式零知识证明协议。

16、(5)提出了新的验证算法。验证者根据收到的证明π和预计算得到的beavertriples的承诺和证据的承诺值cw=com(w,rw),运行验证算法:

17、·首先验证者验证乘法门运行的正确性:对于每一个乘法门,验证者根据和验证:和其中,为使用随机数对gi进行的承诺,为使用随机数对hi进行的承诺,gi和hi为第i个乘法门需要进行乘法操作的元素;为使用随机数对ai进行的承诺,为使用随机数对bi进行的承诺,ai和bi为第i个乘法门需要进行乘法操作时使用的beaver三元组;为使用随机数对εi进行的承诺,为使用随机数对δi进行的承诺,εi和δi为第i个乘法门需要进行乘法操作时产生的副本;

18、·验证输出结果的正确性:对于最终输出的结果,验证者验证:其中,为使用随机数对result进行的承诺,result为电路运行的结果,即为使用随机数对ck进行的承诺,为使用随机数对ak进行的承诺。为使用随机数对bk进行的承诺;ak、bk、ck为第k个乘法门所使用的的beaver三元组,εkδk为第k个乘法门产生的副本。

19、本发明的优点如下:

20、本发明的零知识证明系统是高效的,与类似的基于多方安全计算的非交互零知识证明相比,本发明只需要运行所证明问题电路一次,可以抵抗量子计算机攻击,同时本发明框架不依赖于任何的代数结构。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1