CN115694822A - 基于零知识证明的验证方法、装置和系统、设备及介质 - Google Patents
基于零知识证明的验证方法、装置和系统、设备及介质 Download PDFInfo
- Publication number
- CN115694822A CN115694822A CN202110844836.XA CN202110844836A CN115694822A CN 115694822 A CN115694822 A CN 115694822A CN 202110844836 A CN202110844836 A CN 202110844836A CN 115694822 A CN115694822 A CN 115694822A
- Authority
- CN
- China
- Prior art keywords
- verification
- rho
- modulus
- response
- multiplication
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 162
- 238000012795 verification Methods 0.000 title claims abstract description 154
- 230000004044 response Effects 0.000 claims abstract description 157
- 239000002131 composite material Substances 0.000 claims abstract description 20
- 230000006870 function Effects 0.000 claims description 51
- 230000015654 memory Effects 0.000 claims description 46
- 230000008569 process Effects 0.000 description 44
- 125000004122 cyclic group Chemical group 0.000 description 28
- 238000004422 calculation algorithm Methods 0.000 description 21
- 238000004364 calculation method Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 16
- 230000002452 interceptive effect Effects 0.000 description 15
- 238000004891 communication Methods 0.000 description 14
- 238000012545 processing Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 6
- 238000013459 approach Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000008094 contradictory effect Effects 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 235000019800 disodium phosphate Nutrition 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000000205 computational method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 230000008450 motivation Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000004549 pulsed laser deposition Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Landscapes
- Storage Device Security (AREA)
Abstract
Description
技术领域
本申请涉及信息安全技术领域,特别涉及一种基于零知识证明(zero knowledgeproof,ZKP)的验证方法、装置和系统、设备及介质。
背景技术
ZKP是密码学中的一项常见技术,可应用于多方云计算、数据加密、数字签名、秘密数据比较等多个领域。ZKP主要用于证明“证明者知道秘密数据”这一事实,但是在证明过程中,不泄露与秘密数据相关的信息。
相关技术中,基于ZKP的验证过程包括:证明设备从ZB中选择随机数r,并且根据随机数r计算至少一个证明(witness)发送给验证设备,验证设备选择长度为L比特(bit)的挑战(chanllenge)c发送给证明设备。证明设备根据随机数r、秘密数据x和挑战c采用关于x的一元一次多项式计算响应(response)s,并将响应s发送给验证设备。验证设备基于响应s完成验证。
该验证过程的安全度取决于安全参数A、B和L的设置。2LA/B的值越小,响应s泄露秘密数据x的可能性越小。但是,由于响应s是通过一元一次多项式计算,且随机数r和挑战c是公开的,所以该验证过程中响应s会泄露秘密数据x相关的信息,不能达到完全的零知识证明,对秘密数据的保护程度有待提高。
发明内容
本申请实施例提供了一种基于ZKP的验证方法、装置和系统、设备及介质,能够提高对秘密数据的保护程度。
第一方面,本申请提供了一种基于ZKP的验证方法。该方法可以由证明设备执行。该方法包括:获取公开信息,所述公开信息包括:公开数据y、乘法循环群的根g和乘法循环群的模数p,所述乘法循环群的阶为无法分解的合数;确定验证信息,所述验证信息包括:证明a、第一响应w和第二响应v,其中,所述a根据所述g、第一随机数r、第二随机数t和第一挑战ρ采用模p的乘法运算得到,所述w根据所述r、第二挑战c和秘密数据x采用模ρ的加法运算得到,所述v根据所述t、所述g、所述r、所述c、所述x和所述ρ采用模p的乘法运算得到,所述ρ为素数,所述r为属于Zρ的随机数,Zρ表示小于ρ的整数集合,所述t为属于的随机数,表示小于p且与p互质的整数集合;以及将所述验证信息发送给验证设备,以使所述验证设备根据所述公开信息和所述验证信息对所述证明设备的承诺进行验证,所述承诺为:所述y是采用所述x计算的,且所述x为关于所述y的离散对数。也即是,该验证方法是基于离散对数的ZKP的。
在该验证方法中,第一响应和第二响应均由模运算得到,因此,第一响应和第二响应的统计分布符合同一分布,且与秘密数据无关(即独立于秘密数据)。即使第一响应和第二响应被公开,也不会泄露秘密数据的相关信息,能够实现完全零知识证明。
此外,由于第一响应通过模ρ的加法运算得到,所以第一响应小于ρ,而第二响应通过模p的乘法运算得到,所以第二响应小于p,从而可以限制第一响应和第二响应的大小,避免由于第一响应和第二响应过大而导致验证过程中的幂计算效率降低以及计算精度下降。
在一些示例中,所述确定验证信息,包括:根据所述r、所述g、所述t、所述ρ进行模p的乘法运算,得到所述a;根据包含所述r、所述c和所述x的一元一次多项式,得到第一数值;对所述第一数值进行模ρ运算,得到所述w;将所述第一数值与所述ρ之商向下取整,得到第二数值;以及根据所述t、所述g和所述第二数值进行模p的乘法运算,得到所述v。这样,能够实现通过模运算得到响应。
在一些示例中,所述方法还包括:接收所述验证设备发送的所述ρ,所述ρ是选自Zρ′的随机数,所述ρ′大于0且小于所述p,且所述ρ′为整数。该方式适用于交互式ZKP。
在另一些示例中,所述方法还包括:将所述g、所述y输入哈希函数,得到至少一个第一哈希值,所述ρ为所述至少一个第一哈希值中的素数。该方式适用于非交互式ZKP。并且,利用哈希函数的单向性和防碰撞性,能够选取出合适的ρ。
在一些示例中,所述方法还包括:接收所述验证设备发送的所述c,所述c为选自Zp′的随机数,p′为小于或者等于p的正整数。该方式适用于交互式ZKP。
在另一些示例中,所述确定验证信息,还包括:将所述ρ、所述g、所述y和所述a输入哈希函数,得到第二哈希值,所述第二哈希值即为所述c。该方式适用于非交互式ZKP。并且,利用哈希函数的单向性和防碰撞性,能够选取出合适的c。
第二方面,本申请提供了一种基于ZKP的验证方法,该方法可以由证明设备执行。该方法包括:获取公开信息,所述公开信息包括:公开数据y、乘法循环群的根g和乘法循环群的模数p,所述乘法循环群的阶为无法分解的合数;接收证明设备发送的验证信息,所述验证信息包括:证明a、第一响应w和第二响应v,其中,所述a是证明设备根据所述g、第一随机数r、第二随机数t和第一挑战ρ采用模p的乘法运算得到的,所述w是所述证明设备根据所述r、第二挑战c和秘密数据x采用模ρ的加法运算得到的,所述v是所述证明设备根据所述t、所述g、所述r、所述c、所述x和所述ρ采用模p的乘法运算得到的,所述ρ为素数,所述r为属于Zρ的随机数,Zρ表示小于ρ的整数集合,所述t为属于的随机数,表示小于p且与p互质的整数集合;以及根据所述公开信息和所述验证信息,对所述证明设备的承诺进行验证,所述承诺为:所述y是采用所述x计算的,且所述x为关于所述y的离散对数。
在一些示例中,所述根据所述公开信息和所述验证信息,对所述证明设备的承诺进行验证,包括:根据所述g、所述w、所述v、所述ρ、所述y和所述c,计算校验值;响应于所述校验值与所述a模所述p的结果相等,确定所述证明设备的承诺通过验证;或者,响应于所述校验值与所述a模所述p的结果不相等,确定所述证明设备的承诺未通过验证。
在一些示例中,所述方法还包括:从Zρ′中随机选择一个素数作为所述ρ,所述ρ′大于0且小于所述p,且所述ρ′为整数;以及将所述ρ发送给所述证明设备。
在另一些示例中,所述方法还包括:接收所述证明设备发送的所述ρ,所述ρ是所述证明设备将所述g、所述y输入哈希函数,得到的至少一个第一哈希值中的素数。
在一些示例中,所述方法还包括:从Zρ′中随机选择一个整数作为所述c,其中,p′为小于或者等于所述p的正整数;以及将所述c发送给证明设备。
在另一些示例中,所述方法还包括:接收所述证明设备发送的所述c,所述c是所述证明设备将所述ρ、所述g、所述y和所述a输入哈希函数得到的。
可选地,所述y的个数大于或者等于1,所述v的个数等于所述y的个数。
在一些示例中,结合第一方面和第二方面的任一实现方式,零知识证明是离散对数的零知识证明。秘密数据和公开数据的数量均为1个。根、模数、第二随机数、证明和第二响应的数量也为1个。
在另一些示例中,结合第一方面和第二方面的任一实现方式,零知识证明是离散对数相等的零知识证明。秘密数据的数量为1个,公开数据的数量不小于2个,根、模数、第二随机数、证明和第二响应的数量均与公开数据的数量相同。
无论是离散对数的零知识证明,还是离散对数相等的零知识证明,均可以是交互式的零知识证明或者是非交互式的零知识证明。其中,交互式是指在零知识证明的过程中证明设备和验证设备需要进行多次信息交互,也即是,ρ和c均由验证设备选择并发送给证明设备。非交互式是指在零知识证明的过程中证明设备和验证设备之间没有交互,也即是,ρ和c均由证明设备自己生成,并作为验证信息发送给验证设备。
第三方面,本申请提供了一种基于ZKP的验证装置,所述装置包括:获取模块、确定模块和发送模块。其中,获取模块用于获取公开信息,所述公开信息包括:公开数据y、乘法循环群的根g和乘法循环群的模数p,所述乘法循环群的阶为无法分解的合数;确定模块用于确定验证信息,所述验证信息包括:证明a、第一响应w和第二响应v,其中,所述a根据所述g、第一随机数r、第二随机数t和第一挑战ρ采用模p的乘法运算得到,所述w根据所述r、第二挑战c和秘密数据x采用模ρ的加法运算得到,所述v根据所述t、所述g、所述r、所述c、所述x和所述ρ采用模p的乘法运算得到,所述ρ为素数,所述r为属于Zρ的随机数,Zρ表示小于ρ的整数集合,所述t为属于的随机数,表示小于p且与p互质的整数集合;发送模块用于将所述验证信息发送给验证设备,以使所述验证设备根据所述公开信息和所述验证信息对所述证明设备的承诺进行验证,所述承诺为:所述y是采用所述x计算的,且所述x为关于所述y的离散对数。
第四方面,本申请提供了一种基于ZKP的验证装置,所述装置包括:获取模块、接收模块和验证模块。其中,获取模块用于获取公开信息,所述公开信息包括:公开数据y、乘法循环群的根g和乘法循环群的模数p,所述乘法循环群的阶为无法分解的合数;接收模块用于接收证明设备发送的验证信息,所述验证信息包括:证明a、第一响应w和第二响应v,其中,所述a是证明设备根据所述g、第一随机数r、第二随机数t和第一挑战ρ采用模p的乘法运算得到的,所述w是所述证明设备根据所述r、第二挑战c和秘密数据x采用模ρ的加法运算得到的,所述v是所述证明设备根据所述t、所述g、所述r、所述c、所述x和所述ρ采用模p的乘法运算得到的,所述ρ为素数,所述r为属于Zρ的随机数,Zρ表示小于ρ的整数集合,所述t为属于的随机数,表示小于p且与p互质的整数集合;验证模块用于根据所述公开信息和所述验证信息,对所述证明设备的承诺进行验证,所述承诺为:所述y是采用所述x计算的,且所述x为关于所述y的离散对数。
第五方面,本申请提供了一种计算机设备,所述计算机设备包括处理器和存储器;所述存储器用于存储软件程序,所述处理器通过执行存储在所述存储器内的软件程序,以使得所述网络设备实现第一方面的任一种可能的实施方式的方法,或者,执行第二方面的任一种可能的实施方式的方法。
第六方面,提供了一种基于ZKP的验证系统,包括:证明设备和验证设备。证明设备用于执行第一方面的任一种可能的实施方式的方法。验证设备用于执行第二方面的任一种可能的实施方式的方法。
第七方面,提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,当计算机可读存储介质中的计算机指令被计算机设备执行时,使得计算机设备执行第一方面或第二方面的任一种可能的实施方式的方法。
第八方面,提供了一种包含指令的计算机程序产品,当其在计算机设备上运行时,使得计算机设备执行上述第一方面或第二方面的任一种可能的实施方式的方法。
第九方面,提供了一种芯片,包括处理器,处理器用于从存储器中调用并运行所述存储器中存储的指令,使得安装有所述芯片的通信设备执行上述第一方面或第二方面的任一种可能的实施方式中的方法。
第十方面,提供另一种芯片,包括:输入接口、输出接口、处理器和存储器,所述输入接口、输出接口、所述处理器以及所述存储器之间通过内部连接通路相连,所述处理器用于执行所述存储器中的代码,当所述代码被执行时,所述处理器用于执行上述第一方面或第二方面的任一种可能的实施方式中的方法。
附图说明
图1是本申请一个示例性实施例提供的基于ZKP的验证系统的结构示意图;
图2是本申请一个示例性实施例提供的一种基于ZKP的验证方法的流程示意图;
图3是本申请一个示例性实施例提供的另一种基于ZKP的验证方法的流程示意图;
图4是本申请一个示例性实施例提供的另一种基于ZKP的验证方法的流程示意图;
图5是本申请一个示例性实施例提供的另一种基于ZKP的验证方法的流程示意图;
图6是本申请一个示例性实施例提供的另一种基于ZKP的验证方法的流程示意图;
图7是本申请一个示例性实施例提供的另一种基于ZKP的验证方法的流程示意图;
图8是本申请一个示例性实施例提供的另一种基于ZKP的验证方法的流程示意图;
图9是本申请一个示例性实施例提供的一种应用场景的架构示意图;
图10是本申请一个示例性实施例提供的一种基于ZKP的验证装置的结构示意图;
图11是本申请一个示例性实施例提供的另一种基于ZKP的验证装置的结构示意图;
图12是本申请一个示例性实施例提供的计算机设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
为了便于理解本申请实施例,下面对本申请涉及的一些专业术语进行解释。
群(group):由一种集合以及一个二元运算所组成的代数结构,并且符合“群公理”。群公理包含四个性质:封闭性、结合律、单位元和集合中所有元素均存在逆元素。二元运算例如加法运算和乘法运算等。
循环群(cyclic group):能由单个元素所生成的群。
乘法循环群:由单个元素生成的群,且群对应的二元运算为乘法运算。
循环群的阶(order):循环群中包含的元素数量。例如,对于由元素g生成的循环群,g,g2,……gq mod p正好覆盖这个群,其中,g是该循环群的根(generator),q为循环群的阶。
大小未知的循环群:群中的基本计算都是明确的,但是现有计算方法不能在线性(polynomial)时间内求解循环群的阶。
无法分解的合数:指该合数包含的素数因子较大,无法在线性时间内分解质因数。
ZKP:证明者知道问题的答案,他需要向验证者证明“他知道答案”这一事实,但是要求验证者不能获得答案的任何信息。
完全零知识证明(perfect zero knowledge proof,PZK proof):除了“他知道答案”这一事实之外,零知识证明中不泄露任何其他信息。
统计零知识证明(statistical zero knowledge proof,SZK proof):与PZKproof相对,在零知识明过程中,只能保证泄露的其他信息在统计意义上是可忽略的,相较于PZK proof对私密信息的保护强度较低。
单向哈希函数(one way hash function):一种能把任意长的输入串变化成固定长的输出串且由输出串难以得到输入串的函数,例如SHA256等。
图1是本申请一个示例性实施例提供的基于零知识证明的验证系统的结构示意图。如图1所示,该验证系统100包括证明设备101和验证设备102。
证明设备101对秘密数据加密后得到公开数据,将该公开数据发送给证明设备102,并且证明设备101向验证设备102承诺该公开数据是采用对应的秘密数据计算的,但是不能泄露该秘密数据的相关信息。此时,证明设备101发起基于ZKP的验证过程。在该验证过程中,证明设备101会将相关信息发送给验证设备102,验证设备102根据接收到的相关信息,对证明设备101的承诺进行验证,以确保证明设备101的承诺的真实性和可靠性。
在本申请实施例中,证明设备101为证明者使用的计算机设备,证明者通过该证明设备101向验证者发起验证过程。验证设备102是验证者使用的计算机设备,验证者通过验证设备102验证证明者的承诺是否真实。
示例性地,证明设备101包括但不限于终端或者服务器等;验证设备102包括但不限于终端或者服务器等。其中,终端包括但不限于个人计算机(personal computer,PC)、移动终端(例如手机、笔记本电脑等);服务器为云端设备,可以为单台设备,或者由多台设备组成的服务器集群。
图2是本申请一个示例性实施例提供的一种基于零知识证明的验证方法的流程示意图。
该方法由图1中的证明设备101执行。如图2所示,该方法包括以下过程:
201:获取公开信息,公开信息包括:公开数据y、乘法循环群的根g和乘法循环群的模数p,乘法循环群的阶为无法分解的合数;
202:确定验证信息,验证信息包括:证明a、第一响应w和第二响应v,其中,a根据g、第一随机数r、第二随机数t和第一挑战ρ采用模p的乘法运算得到,w根据r、第二挑战c和秘密数据x采用模ρ的加法运算得到,v根据t、g、r、c、x和ρ采用模p的乘法运算得到,ρ为素数,r为属于Zρ的随机数,Zρ表示小于ρ的整数集合,t为属于的随机数,表示小于p且与p互质的整数集合;
203:将验证信息发送给验证设备,以使验证设备根据公开信息和验证信息对证明设备的承诺进行验证,承诺为:y是采用x计算的,且x为关于y的离散对数。
在该验证方法中,第一响应和第二响应均由模运算得到,因此,第一响应和第二响应的统计分布符合同一分布,且与秘密数据无关(即独立于秘密数据)。因此,即使第一响应和第二响应被公开,也不会泄露秘密数据的相关信息,能够实现完全零知识证明。
此外,由于第一响应通过模ρ的加法运算得到,所以第一响应小于ρ,而第二响应通过模p的乘法运算得到,所以第二响应小于p,从而可以限制第一响应和第二响应的大小,避免由于第一响应和第二响应过大而导致验证过程中的幂计算效率降低以及计算精度下降。
图3是本申请一个示例性实施例提供的一种基于零知识证明的验证方法的流程示意图。
该方法由图1中的验证设备102执行。如图3所示,该方法包括以下过程:
301:获取公开信息,公开信息包括:公开数据y、乘法循环群的根g和乘法循环群的模数p,乘法循环群的阶为无法分解的合数;
302:接收证明设备发送的验证信息,验证信息包括:证明a、第一响应w和第二响应v,其中,a是证明设备根据g、第一随机数r、第二随机数t和第一挑战ρ采用模p的乘法运算得到的,w是证明设备根据r、第二挑战c和秘密数据x采用模ρ的加法运算得到的,v是证明设备根据t、g、r、c、x和ρ采用模p的乘法运算得到的,ρ为素数,r为属于Zρ的随机数,Zρ表示小于ρ的整数集合,t为属于的随机数,表示小于p且与p互质的整数集合;
303:根据公开信息和验证信息,对证明设备的承诺进行验证,承诺为y是采用x计算的,且x为关于y的离散对数。
在该验证方法中,第一响应和第二响应均由模运算得到,因此,第一响应和第二响应的统计分布符合同一分布,且与秘密数据无关(即独立于秘密数据)。因此,即使第一响应和第二响应被公开,也不会泄露秘密数据的相关信息,能够实现完全零知识证明。
此外,由于第一响应通过模ρ的加法运算得到,所以第一响应小于ρ,而第二响应通过模p的乘法运算得到,所以第二响应小于p,从而可以限制第一响应和第二响应的大小,避免由于第一响应和第二响应过大而导致验证过程中的幂计算效率降低以及计算精度下降。
图4是本申请一个示例性实施例提供的一种基于零知识证明的验证方法的流程示意图。由证明设备101和验证设备102共同执行。图4中的零知识证明为交互式零知识证明,用于证明离散对数问题。即,在图4所示方法中,证明设备的承诺为y是基于x计算的,且满足y=gxmod p,即x是关于y的离散对数。
401:证明设备公开一个整数y。
该整数y即为公开数据。整数y基于秘密数据x计算得到,且满足y=gxmod p,则y为循环子群G中的整数。
402:验证设备从Zp′中随机选择一个素数作为第一挑战ρ。
其中,Zρ′表示小于ρ′的整数集合。ρ′大于0且小于p,且ρ′为整数。在一些示例中,ρ′等于p/2。
403:验证设备将ρ发送给证明设备。
相应地,证明设备接收ρ。
405:证明设备根据g、r、t和ρ进行模p的乘法运算,得到证明a。
示例性地,根据以下公式计算得到证明a:
a=grtρmod p。
406:证明设备将证明a发送给验证设备。
相应地,验证设备接收该证明a。
407:验证设备从Zp中随机选择一个第二挑战c。
其中,Zp表示小于p的整数集合。该第二挑战c的长度为L比特,L为设定值,通常设置地较大,例如L为128等,以满足ZKP的可靠性要求。当L为128时,证明设备在不知道离散对数却可以通过验证的概率不超过2-128。
需要说明的是,如果对验证方法的可靠性要求没有那么高而需要提升效率的情况下,Zp可以替换为Zp的子集,例如Zp′,p′为小于p的正整数。
408:验证设备将第二挑战c发送给证明设备。
相应地,证明设备接收该第二挑战c。
409:证明设备根据r、c、x、ρ、t、g、p计算第一响应w和第二响应v。
在一些示例中,409包括:第一步、根据包含r、c和x的一元一次多项式,得到第一数值;第二步、对第一数值进行模ρ运算,得到w;第三步、将第一数值与ρ之商向下取整,得到第二数值;根据t、g和所述第二数值进行模p的乘法运算,得到v。
410:证明设备将第一响应w和第二响应v发送给验证设备。
相应地,验证设备接收第一响应w和第二响应v。
411:验证设备基于第一响应w和第二响应v对证明设备的承诺进行验证。
在411中,验证设备根据g、w、v、ρ、y和c,计算校验值;根据校验值确定证明设备的承诺是否通过验证。例如,响应于校验值与a模p的结果相等,确定证明设备的承诺通过验证;或者,响应于校验值与a模p的结果不相等,确定证明设备的承诺未通过验证。
当w=r-cx mod ρ时,验证设备根据公式gwvρyc计算校验值,即校验值等于gwvρyc。则验证设备通过验证等式gwvρyc=a mod p是否成立,来确定证明设备的承诺是否通过验证。
当w=r+cx mod ρ时,验证设备根据公式gwvρ/yc计算校验值,即校验值等于gwvρ/yc。则验证设备通过验证等式gwvρ/yc=a mod p是否成立,来确定证明设备的承诺是否通过验证。
下面以一元一次多项式为r-cx为例,对通过验证等式gwvρyc=a mod p(1)是否成立,来确定证明设备的承诺是否通过验证的有效性进行说明。
理论1、如果证明者能够以大于1/ρ的概率通过图4中的验证,那么他能够在线性时间内计算一个整数x,使得gx=y mod p。
要证明该理论1,需要先证明两个前提。
前提1:如果证明者能够以大于1/ρ的概率通过图4中的验证,那么他能够在线性时间内计算整数x’和z满足gx′zρ=y mod p。
证明:证明者能够以大于1/ρ的概率通过图4中的验证,表示该证明者能够在相同的ρ和a的前提下正确响应两个不同的第二挑战c和c’,使得c-c′≠0 mod ρ。否则,给定任何固定的ρ和a,证明者只能正确响应一些模ρ后具有相同余数的挑战,并且他通过图4所示验证的概率不大于1/ρ,这是相互矛盾的。
更准确地,证明者能够在线性时间内计算出两组验证信息,包括在相同的a和ρ的前提下针对两个不同的第二挑战c和c’的两个响应(w,v)和(w’,v’),使得c-c′≠0 mod ρ且两个证明实例(ρ,a,c,w,v)和(ρ,a,c’,w’,v’)分别通过验证。这两个证明实例通过验证表示:
a=gwvρycmod p (2);
a=gw′v′ρyc′mod p (3)。
将式(2)除以式(3)得到:
1=gw-w′(v/v′)ρyc-c′mod p (4)。
证明者能够使用欧几里得算法在线性时间内计算α和β使得β(c′-c)=αρ+GCD(ρ,c′-c)=1。值得注意的是,ρ是一个素数,且c-c′≠0 mod ρ,进而GCD(ρ,c′-c)=1。
所以,由公式(4)可以得到:
因此,证明者能够在线性时间内计算整数x′=β(w-w′)和z=(v/v′)β/yαnod p,满足gx′zρ=y mod p。
前提2:对于任意y∈G,不知道p的质因数分解的多项式方最多能够计算(或者非正式地来说是他知道)一个整数x满足y=gxmod p。
证明:如果该多项式方知道两个不同的整数x1和x2满足:
将式(5)除以式(6)得到:
这违反了阶未知的循环群中离散对数知识证明的动机、出发点和部分环境,即阶及其倍数未知且无法在ZK证明中用作模数。
理论1的证明:
根据前提1,给定一个随机的大素数ρ,证明者能够在线性时间内计算整数x′和z满足gx′zρ=y mod p。因此,如果ρ被作为对证明者声明的知识loggy的一个挑战,并且证明者在接收到ρ之后的证明被作为对于挑战ρ的一个响应(以未公开的整数x′和z的形式),那么证明者必须能够在线性时间内计算两组验证信息,验证信息包括在相同的承诺y下对两个不同的挑战的正确响应。否则,他能正确响应随机挑战ρ的概率极低,这是矛盾的。
假设被正确响应的挑战为ρ1和ρ2,那么证明者能够在线性时间内计算x1′、x2′和z1、z2,使得其中i=1、2。假设在所有满足y=gx mod p的正整数X中,最小的是x,那么其中i=1、2。也即是,
如果x-xi′是ρi(i=1,2)的倍数,那么xi′=x mod ρi(i=1,2),进而x能够使用中国余数定理作为x mod ρ1ρ2在线性时间内被计算出来,因为ρ1ρ2不小于G的阶且x小于G的阶。如果x-xi′不是ρi(对于任意i)的倍数,那么证明者必须能够在线性时间内计算出一个整数以满足否则在将x提供给证明者的后续游戏中将出现矛盾:
一方面,在给定x之前,证明者不能在线性时间内计算任何整数x″以满足y=gx″modp。在给定x之后,根据前提2,证明者在线性时间内仅能计算一个整数x″=x,以满足y=gx″nod p。
另一方面,在给定x之后,证明者使用欧几里得算法能够在线性时间内计算整数α′和β′,使得β′(x-xi′)=α′ρi+GCD(ρi,x-xi′)。因为ρi是一个素数,且x-xi′不是的ρi的倍数,所以GCD(ρi,x-xi′)=1。
因此,在给定x之后,证明者能够在线性时间内计算g的第ρi个根。根据质因数分解假设(在不知道p的分解质因数的情况下,很难计算g的第ρi个根),证明者能在线性时间内计算p的质因数分解。因此,他能够在线性时间内计算G的阶和多个不同的整数x″以满足y=gx″nod p。
图5是本申请一个示例性实施例提供的一种基于零知识证明的验证方法的流程示意图。由证明设备和验证设备共同执行。图5中的零知识证明为交互式零知识证明,用于证明离散对数相等的问题。即,在图5所示方法中,证明设备的承诺为:y1和y2均是基于x计算的,且满足即x为关于y1的离散对数且x为关于y2的离散对数。
假设G1和G2是两个分别具有阶q1和q2的乘法循环群,其中乘法运算的模数分别为p1和p2。因为p1和p2是无法分解的合数,所以q1和q2是未知的。令g1和g2分别是群G1和G2的根。注意q1和q2可以相等,在一些情况下,设G1和G2可以是相同的群,因此p1=p2。如图5所示,该方法包括以下几个过程:
501:证明设备公开两个整数y1和y2。
y1和y2即为公开数据。整数y1和y2均基于秘密数据x计算得到,且满足y1=g1 x modp1和y2=g2 x mod p2。y1和y2为循环子群G中的整数。
502:验证设备从Zp′随机选择一个素数ρ。
其中,Zp′表示小于ρ′的整数集合。ρ′大于0且小于p,且ρ′为整数。在一些示例中,ρ′等于p/2。
503:验证设备将ρ发送给证明设备。
相应地,证明设备接收ρ。
505:证明设备根据g1、g2、r、t1、t2、ρ进行模p的乘法运算,得到证明a1和a2。
示例性地,证明设备根据以下公式计算证明a1:a1=g1 rt1 ρmod p1;
证明设备根据以下公式计算证明a2:a2=g2 rt2 ρmod p2。
506:证明设备将证明a1和a2发送给验证设备。
相应地,验证设备接收该证明a1和a2。
507:验证设备从Zρ′中随机选择一个第二挑战c。
其中,p′是p1和p2中较小的整数。c的长度为L比特,L为设定值,通常设置地较大,例如L为128,以满足ZKP的可靠性要求。
需要说明的是,如果对验证方法的可靠性要求没有那么高且需要提升效率,Zρ′可以替换为Zρ′的子集。
508:验证设备将c发送给证明设备。
相应地,证明设备接收该c。
509:证明设备根据r、c、x、ρ、t1、t2、g、p1和p2,计算第一响应w和第二响应v1、v2。
在一些示例中,509包括:第一步、根据包含r、c和x的一元一次多项式,得到第一数值;第二步、对第一数值进行模ρ运算,得到w;第三步、将第一数值与ρ之商向下取整,得到第二数值;根据t1、g1和第二数值进行模p1的乘法运算,得到v1;以及根据t2、g2和第二数值进行模p2的乘法运算,得到v2。
510:证明设备将第一响应w和第二响应v1、v2发送给验证设备。
相应地,验证设备接收第一响应w和第二响应v1和v2。
511:验证设备基于第一响应w和第二响应v1和v2对证明设备的承诺进行验证。
在511中,验证设备根据g1、w、v1、ρ、y1和c,计算证明a1对应的校验值;根据g2、w、v2、ρ、y2和c,计算证明a2对应的校验值;根据校验值确定证明设备的承诺是否通过验证。例如,响应于a1对应的校验值与a1模p的结果相等且a2对应的校验值与a2模p的结果相等,确定证明设备的承诺通过验证;或者,响应于a1对应的校验值与a1模p的结果不相等或者响应于a2对应的校验值与a2模p的结果不相等,确定证明设备的承诺未通过验证。
当w=r-cx mod ρ时,a1对应的校验值为g1 wv1 ρy1 c,a2对应的校验值为g2 wv2 ρ/y2 c。即验证设备通过验证等式g1 wv1 ρy1 c=a1 mod p1,和g2 wv2 ρy2 c=a2 mod p2是否成立,来确定证明设备的承诺是否通过验证。
当w=r+cx mod ρ时,a1对应的校验值为g1 wv1 ρ/y1 c,a2对应的校验值为g2 wv2 ρ/y2 c。即验证设备通过验证等式g1 wv1 ρ/y1 c=a1 mod p1,和g2 wv2 ρ/y2 c=a2 mod p2是否成立,来确定证明设备的承诺是否通过验证。
理论2、如果证明者能够以不可忽略的概率通过图5所示的验证,那么他能够在线性时间内计算一个整数x使得g1 x=y1 mod p1和g2 x=y2mod p2。
为了证明理论2,需要先证明前提3。前提3的证明与前提1的证明相似,所以在此省略详细描述。
前提3、如果证明者能够以不可忽略的概率通过图5所示的验证,那么他能够在线性时间内计算整数x′,z1和z2满足g1 x′z1 ρ=y1 mod p1和g2 x′z2 ρ=y2 mod p2。
理论2的证明:图5中的证明过程可以被认为是图4所示的证明过程的两个同步实例,这两个同步实例共享相同的多个第二挑战和一个相同的响应。所以根据理论1,证明者能够在线性时间内计算整数x1和x2,满足:
注意根据前提2,x1和x2是唯一的,并且证明者不能在线性时间内计算其他整数x1′和x2′满足和虽然其他整数x1′和x2′是存在的。因此如果x1≠x2,那么x1≠x2 mod ρ的概率为1-1/ρ,其中ρ是一个随机选取的素数,ρ2>q1且ρ2>q2。由于q1和q2较大,使得G1和G2中的离散对数问题难以解决,1-1/ρ是一个非常大的概率。也即是,如果x1≠x2,那么x1≠x2 mod ρ的概率是一个不可忽略的大概率。下文中将发现与该结论矛盾的地方。
因此,x1-x′必须是ρ的倍数。否则,当ρ为素数,且x1-x′不是ρ的倍数时,证明者能够使用欧几里得算法在线性时间内计算出整数α和β满足β(x1-x′)=αρ+GCD(ρ,x1-x′)=αρ+1,这表示
因此(z1 β/g1 α)ρ=g1;
这意味着证明者能够在线性时间内计算出g1的第ρ个根,这与质因数分解的假设相矛盾。
因此,x1=x′modρ (7)。
基于相同的理由,x2=x′modρ (8)。
式(7)和式(8)表示x1=x2 mod ρ。
可见,在假设x1≠x2时发现了矛盾。因此,假设x1≠x2是错误的,且x1=x2。
图6是本申请一个示例性实施例提供的一种基于零知识证明的验证方法的流程示意图。由证明设备和验证设备共同执行。图6中的零知识证明为非交互式零知识证明,图6中证明设备的承诺与图4中证明设备的承诺相同。与图4所示过程相比,区别在于图4中的402~403被替换为由证明设备生成ρ,407~408被替换为由证明设备生成c。
601:证明设备公开一个整数y。
该整数y即为公开数据。整数y基于秘密数据x计算得到,且满足y=gxmod p,则y为循环子群G中的整数。
602:证明设备根据g、y生成一个素数作为第一挑战ρ。
示例性地,602包括:将g、y输入哈希函数,得到至少一个第一哈希值;将该至少一个第一哈希值中的一个素数作为ρ。
在一些示例中,将g、y输入该哈希函数,得到第一个第一哈希值,判断该第一个第一哈希值是否为素数,如果第一个第一哈希值为素数,则将该第一个第一哈希值作为ρ;如果第一个第一哈希值不为素数,则将g、y输入该哈希函数,得到第二个第一哈希值;继续判断第二个哈希值是否为素数,重复前述过程,直至将一个是素数的第一哈希值作为ρ。
在本申请实施例中,该哈希函数为单向(one-way)防碰撞(collision-free)哈希函数,例如SHA256等。
该过程可以采用以下函数表示:ρ=H-P(g,y),其中,H()表示一个单向防碰撞哈希函数;H-P()表示从单向防碰撞哈希函数的结果中挑选素数,如果不是素数,就重新计算哈希值直到找到素数。
604:证明设备根据g、r、t和ρ进行模p的乘法运算,得到证明a。
相关内容参见405,在此省略详细描述。
605:证明设备根据ρ、g、y、a生成一个第二挑战c。
示例性地,将ρ、g、y和a输入哈希函数,得到第二哈希值,该第二哈希值即为c。
在本申请实施例中,该哈希函数为单向防碰撞哈希函数。单向防碰撞哈希函数包括但不限于SHA256等。
606:证明设备根据r、c、x、ρ、t、g、p计算第一响应w和第二响应v。
相关内容参见409,在此省略详细描述。
607:证明设备将第一挑战ρ、证明a、第二挑战c、第一响应w和第二响应v发送给验证设备。
相应地,验证设备接收第一挑战ρ、证明a、第二挑战c、第一响应w和第二响应v。
608:验证设备基于第一挑战ρ、证明a、第二挑战c、第一响应w和第二响应v对证明设备的承诺进行验证。
608中的验证过程参见前述过程411,在此不再赘述。
从图6所示方法可以看出,601~607均由证明设备执行,验证设备只需要根据证明设备提供的验证信息对证明设备的承诺进行验证,在验证设备得到验证结果之前证明设备不需要与验证设备交互,因此,被称为非交互式ZKP。非交互式ZKP不需要在线实时通信,具有更广的适用性。
图7是本申请一个示例性实施例提供的一种基于零知识证明的验证方法的流程示意图。由证明设备和验证设备共同执行。图7中的零知识证明为非交互式零知识证明,用于证明离散对数相等的问题。图7中证明设备的承诺与图5中证明设备的承诺相同。与图5所示过程相比,区别在于图5中的502~508被替换为由证明设备生成ρ,508~509被替换为由证明设备生成c。
假设G1和G2是两个分别具有阶q1和q2的乘法循环群,其中乘法运算的模数分别为p1和p2。因为p1和p2是无法分解的合数,所以q1和q2是未知的。令g1和g2分别是群G1和G2的根。注意q1和q2可以相等,在一些情况下,G1和G2可以是相同的群,因此p1=p2。如图7所示,该方法包括以下几个过程:
701:证明设备公开两个整数y1和y2。
y1和y2即为公开数据。整数y1和y2均基于秘密数据x计算得到,且满足y1=g1 x modp1和y2=g2 x mod p2。y1和y2为循环子群G中的整数。
702:证明设备根据g1、g2、y1、y2生成一个素数作为第一挑战ρ。
示例性地,将g1、g2、y1、y2输入哈希函数,得到至少一个第一哈希值,所述ρ为所述至少一个第一哈希值中的素数。
相关内容参见602,在此省略详细描述。
704:证明设备根据g1、g2、r、t1、t2、ρ进行模p的乘法运算,得到证明a1和a2。
相关内容参见505,在此省略详细描述。
705:证明设备根据ρ、g1、g2、y1、y2、a1和a2生成一个第二挑战c。
示例性地,将ρ、g1、g2、y1、y2、a1和a2输入哈希函数,得到第二哈希值,所述第二哈希值为第二挑战c。
706:证明设备根据r、c、x、ρ、t1、t2、g、p1和p2,计算第一响应w和第二响应v1和v2。
相关内容参见509,在此省略详细描述。
707:证明设备将ρ、证明a1和a2、第二挑战c、第一响应w和第二响应v1和v2发送给验证设备。
相应地,验证设备接收ρ、证明a1和a2、第二挑战c、第一响应w和第二响应v1和v2。
708:验证设备基于ρ、证明a1和a2、第二挑战c、第一响应w和第二响应v1和v2对证明设备的承诺进行验证。
708中的验证过程参见前述过程511,在此不再赘述。
从图7所示方法可以看出,在验证设备得到验证结果之前,证明设备与验证设备之间没有交互,因此,也被称为非交互式ZKP。
需要说明的是,在图7所示实施例中,公开数据的数量为2,根、模数、第二随机数、证明和第二响应的数量均与公开数据的数量相同,即均为2,第一挑战和第二挑战均为1个。在其他实施例中,公开数据的数量可以大于2,只要保证公开数据的数量与需要证明相等的离散对数的数量相同,且根、模数、第二随机数、证明和第二响应的数量均与公开数据的数量相同即可,第一挑战和第二挑战均为1。
图8是本申请一个示例性实施例提供的一种基于零知识证明的验证方法的流程示意图。由证明设备和验证设备共同执行。图8中的零知识证明为非交互式零知识证明。在图8所示方法中,证明设备的承诺为:y1和y2均是基于x计算的,且满足y1=g1 xhρ mod N2和y2=g2 xhρmod N2,中g2=y1,ρ=N。
假设G1和G2是两个分别具有阶q1和q2的乘法循环群,其中乘法运算的模数分别为p1和p2。因为p1和p2是无法分解的合数,所以q1和q2是未知的。令g1和g2分别是群G1和G2的根。注意q1和q2可以相等,在一些情况下,G1和G2可以是相同的群,因此p1=p2=N2。如图8所示,该方法包括以下几个过程:
801:证明设备公开基于秘密数据x计算的y1和y2。y1和y2为循环子群G中的整数。
803:证明设备根据g1、g2、r、t1、t2、N进行模p的乘法运算,得到证明a1和a2。
示例性地,a=g1 rt1 Nmod N2;b=g2 rt2 Nmod N2。
804:证明设备根据g、y1、g2、y2、a1和a2计算第二挑战c。
例如,c=H(g,y1,g2,y2,a1,a2)。
805:证明设备根据r、c、x、ρ、t1、t2、g、p1和p2,计算第一响应w和第二响应v1和v2。
其中,h为证明设备从ZN中随选取的一个随机数。
806:证明设备将第一响应w和第二响应v1和v2发送给验证设备。
相应地,验证设备接收第一响应w和第二响应v1和v2。
807:验证设备基于第一响应w和第二响应v1和v2对证明设备的承诺进行验证。
在807中,验证设备根据g1、w、v1、ρ、y1和c,计算证明a1对应的校验值;根据g2、w、v2、ρ、y2和c,计算证明a2对应的校验值;根据校验值确定证明设备的承诺是否通过验证。例如,响应于a1对应的校验值与a1模N2的结果相等且a2对应的校验值与a2模N2的结果相等,确定证明设备的承诺通过验证;或者,响应于a1对应的校验值与a1模N2的结果不相等或者响应于a2对应的校验值与a2模N2的结果不相等,确定证明设备的承诺未通过验证。
详细过程参见511,在此省略详细描述。
在图4至图8所示方法中,g、p和y在验证开始之前处于公开状态,所以可以被称为公开信息。而在验证过程中产生的信息被称为验证信息。
此外,在本申请实施例中,交互是指证明设备向验证设备发送至少一次信息,且验证设备向证明设备发送至少一次信息。
本申请实施例提供的基于ZKP的验证方法适用的场景包括但不限于多方安全计算、数字签名、身份鉴别和数据加密等。下面对这几种场景分别进行介绍。
在多方安全计算中,当PAILLIER加密算法被用来加密时,一个密文c时常被转换为c’=ck以利用它的同态特性。其中,同态特性是指,在没有对密文进行解密的情况下,对两份输入信息的密文进行求值,获得两份输入信息的求值结果的密文。例如,假设C1和C2分别为明文m1和m2的密文,使用同态加密,通过直接对C1和C2进行求值而无需将C1和C2解密,即可获得某些函数(例如m1+m2或者m1*m2)的密文。同态特征可以表示为D(c’)=kD(c),这里D()代表解密。当k不能泄露时,这个操作的证明依赖于对于离散对数k的零知识证明。由于PAILLIER的密文空间不是一个已知阶的循环群,则可以通过完全零知识证明来进行验证,即图4或者图6所示的方法来进行验证。
当RSA被用来加密的时候,其密文空间同样不是一个已知阶的循环群。例如,当RSA公钥为3的时候一个明文m被加密为e=m3。同时,在许多安全计算中(比如可公开认证密钥共享(publicly verifiable secret sharing)),m同时被置于一个基于离散对数的承诺中,比如d=gm。当需要证明同一个明文被加密在e中并被置于d中时,虽然很直观,但还需要证明ge和d中有相同的m。通常证明的方法是先公开然后证明logdd′=logd′ge。这个离散对数相等的零知识证明通过图5或图7所示的方法即可实现基于完全零知识证明来进行验证。
下面以多方云计算采用PAILLIER加密算法为例,结合图9对前述验证方法的应用过程进行示例性说明。
图9是本申请一个示例性实施例提供的多方安全计算的网络架构示意图。如图9所示,n个客户端将自己的私密数据加密后公开,例如,发送给服务器,服务器根据各个客户端发送的加密后的数据合力计算一个函数值,并将该函数值返回给这n个客户端。由这n个客户端联合对该函数值进行解密。该函数值是目标函数基于n个客户端的加密后的数据得到的计算结果,示例性地,目标函数是AI分析,联邦学习,或者电子商务金融等实际应用。
这里,每个客户端都是一个证明设备,服务器为验证设备。在其他场景中,验证设备也可以是证明设备之外的客户端。
多方安全计算过程如下:
一、多个参与者P1,P2,……Pn,每个参与者有一个私密数据m1,m2……mn。需要合力计算一个函数F(m1,m2,…mn),但不能泄露任何输入。
二、P1,P2,……Pn共同建立同态加密算法。
示例性地,在本申请实施例中,同态加密算法包括但不限于PAILLIER加密算法。
满足D(c1c2)=D(c1)+D(c2)和D(ck)=kD(c)。P1,P2,……Pn公开密钥并分享私钥,只有他们全部合作才能完成解密操作。
PAILLIER加密算法中,明文m被加密为c=gmrN mod N2,其中N是一个不可分解的合数,g的乘法产生的循环群的阶不可知,r是ZN *中的随机数。
安全计算中,另一个密文c’使用c中的m的计算c″=c′mr′N mod N2。
三、P1,P2,……Pn对各自的私密数据进行加密c1=C(m1),c2=C(m2),…cn=C(mn),并公布加密结果,用于安全计算。
五、对于j=1,2,…n,计算每一个Fj的密文:
a)P1公布m1 2对应的密文并使用ZK3(m1,r1,r1,1,c1,c1,c1,1)证明密文计算的正确性;P1公布m1 3对应的密文并使用ZK3(m1,r1,r1,2,c1,c1,1,c1,2)证明密文计算的正确性;以此类推,直到得到m1 k1对应的密文Cj,1,共k1-1次调用图8所示过程。
b)P2公布m1 k1m2对应的密文并使用ZK3(m2,r1,r2,1,c2,Cj,1,c2,1)证明密文计算的正确性;P2公布m1 k1m22对应的密文并使用ZK3(m2,r1,r2,2,c2,c2,1,c2,2)证明密文计算的正确性;以此类推,直到得到m1k1 m2k2对应的密文Cj,2,共k2次调用图8所示过程。
c)……
d)Pn公布m1k1 m2k2…mn对应的密文并使用ZK3(mn,r1,rn,1,cn,Cj,n-1,cn,1)证明密文计算的正确性;Pn公布对应的密文并使用ZK3(mn,r1,rn,2,cn,cn,1,cn,2)证明密文计算的正确性;以此类推,直到得到对应的密文Cj=Cj,n,共kn次调用图8所示过程。为了证明Cj的正确性,总共k1+k2+…+kn-1次调用图8所示过程。
六、每一个C1,C2,…Cn都算好后,C=C1C2…Cn就是F的密文。最后P1,P2,…Pn合力解密C得到F。
数字签名,是指信息的发送方产生别人无法伪造的一个数字串,该数字串是对信息的发送者发送信息真实性的一个有效证明。
数字签名的过程如下:发送方在发送信息时,发送方用一个哈希函数从信息中生成信息摘要,然后用发送方的私钥对这个摘要进行加密,以及将加密后的摘要将作为该信息的数字签名和信息一起发送给接收方。接收方接收到该信息以及对应的数字签名后,用与发送方一样的哈希函数从接收到的信息中计算出信息摘要,接着再用公钥来对信息附加的数字签名进行解密,如果这两个摘要相同,那么接收方就能确认该报文是发送方的。
数字签名有两种功效:一是能确定消息确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名。二是数字签名能确定消息的完整性。因为数字签名的特点是它代表了文件的特征,文件如果发生改变,数字摘要的值也将发生变化,不同的文件将得到不同的数字摘要。
数字签名的算法包括但不限于RSA算法、ELGAMAL算法、Fiat-Shamir算法、Schnorr算法等等。本申请实施例适用于以离散对数(即x=loggy)为私钥的数字签名算法。
下面以Schnorr算法为例对本申请实施例提供的ZKP的验证方法应用于数字签名为例,进行说明。
基于Schnorr算法的数字签名的过程包括:从未知阶的乘法循环群中随机选择一个整数作为私钥k;计算L=gkmod p;计算第二挑战c=H(L||M),其中,c=H()表示哈希函数,||表示将L和M拼接;根据第二挑战生成响应w和v;此时签名即为响应w和v。采用签名对密文M进行签名,然后将签名后的密文发送给接收方。接收方根据对签名进行验证。详细过程参见图6相关内容,在此省略详细内容。
本申请实施例同样适用于以离散对数(即x=loggy)为私钥的加密算法,包括但不限于RSA算法、PALLIER算法、ELGAMAL算法等等。
下面以ELGAMAL算法为例对本申请实施例提供的ZKP的验证方法应用于数据加密为例,进行说明。
一个明文m被加密为密文e=(f,h)=(gz mod p,myz mod p),其中,g和y是ELGAMAL公钥,x=loggy是ELGAMAL私钥,z是g产生的循环群中的随机数。需要证明m被加密在e中,此时可以通过图5和图7所示的方法对loggf=logy(h/m)进行证明。
需要说明的是,在证明过程中,g相当于图5和图7中的g1,f相当于图5和图7中的y1,y相当于图5和图7中的g2,h/m相当于图5和图7中的y2。
本申请实施例还适用于秘密数据的大小比较和排序。假设g在模p的乘法运算下产生一个未知阶的循环群。当两个秘密数据存在于和中时,可以通过比较它们的大小。如果y=Y1Y2…Yk,且每一个Yk(对于k=1,2,…K)中的离散对数都是一个平方数,则能够保证当m1-m2≥0时,m1≥m2成立。因此,需要证明其中的离散对数为一个平方数。
秘密数据的排序相当于该过程的重复。秘密数据的比较和排序可以应用在电子商务应用(例如电子拍卖)中。
图10是本申请实施例提供的基于ZKP的验证装置的结构图。该装置可以通过软件、硬件或者两者的结合实现成为装置中的部分或者全部。本申请实施例提供的装置能够实现本申请实施例图2的流程,如图10所示,该装置包括:获取模块1001、确定模块1002和发送模块1003。
其中,获取模块1001用于获取公开信息,公开信息包括:公开数据y、乘法循环群的根g和乘法循环群的模数p,乘法循环群的阶为无法分解的合数;确定模块1002用于确定验证信息,验证信息包括:证明a、第一响应w和第二响应v,其中,a根据g、第一随机数r、第二随机数t和第一挑战ρ采用模p的乘法运算得到,w根据r、第二挑战c和秘密数据x采用模ρ的加法运算得到,v根据t、g、r、c、x和ρ采用模p的乘法运算得到,ρ为素数,r为属于Zρ的随机数,Zρ表示小于ρ的整数集合,t为属于的随机数,表示小于p且与p互质的整数集合;发送模块1003用于将验证信息发送给验证设备,以使验证设备根据公开信息和验证信息对证明设备的承诺进行验证,承诺为:y是采用x计算的,且x为关于y的离散对数。
在一些示例中,确定模块1002,用于根据所述r、所述g、所述t、所述ρ进行模p的乘法运算,得到所述a;根据包含所述r、所述c和所述x的一元一次多项式,得到第一数值;对所述第一数值进行模ρ运算,得到所述w;将所述第一数值与所述ρ之商向下取整,得到第二数值;以及根据所述t、所述g和所述第二数值进行模p的乘法运算,得到所述v。
在一些示例中,所述确定模块1002,还用于接收所述验证设备发送的所述ρ,所述ρ是选自Zp′的随机数,所述ρ′大于0且小于所述p,且所述ρ′为整数。
在另一些示例中,所述确定模块1002,还用于将所述g、所述y输入哈希函数,得到至少一个第一哈希值,将所述至少一个第一哈希值中的一个素数作为所述ρ。
在一些示例中,所述确定模块1002,还用于接收所述验证设备发送的所述c,所述c为选自Zp′的随机数,p′为小于或者等于p的正整数。
在另一些示例中,所述确定模块1002,还用于将所述ρ、所述g、所述y和所述a输入哈希函数,得到所述c。
可选地,所述y的个数大于或者等于1,所述v的个数等于所述y的个数。
图11是本申请实施例提供的基于ZKP的验证装置的结构图。该装置可以通过软件、硬件或者两者的结合实现成为装置中的部分或者全部。本申请实施例提供的装置能够实现本申请实施例图3的流程,如图11所示,该装置包括:获取模块1101、接收模块1102和验证模块1103。
其中,获取模块1101用于获取公开信息,所述公开信息包括:公开数据y、乘法循环群的根g和乘法循环群的模数p,所述乘法循环群的阶为无法分解的合数;接收模块1102用于接收证明设备发送的验证信息,所述验证信息包括:证明a、第一响应w和第二响应v,其中,所述a是证明设备根据所述g、第一随机数r、第二随机数t和第一挑战ρ采用模p的乘法运算得到的,所述w是所述证明设备根据所述r、第二挑战c和秘密数据x采用模ρ的加法运算得到的,所述v是所述证明设备根据所述t、所述g、所述r、所述c、所述x和所述ρ采用模p的乘法运算得到的,所述ρ为素数,所述r为属于Zρ的随机数,Zρ表示小于ρ的整数集合,所述t为属于的随机数,表示小于p且与p互质的整数集合;验证模块1103用于根据所述公开信息和所述验证信息,对所述证明设备的承诺进行验证,所述承诺为:所述y是采用所述x计算的,且x是关于y的离散对数。
在一些示例中,所述验证模块1102,用于根据所述g、所述w、所述v、所述ρ、所述y和所述c,计算校验值;响应于所述校验值与所述a模所述p的结果相等,确定所述证明设备的承诺通过验证;或者,响应于所述校验值与所述a模所述p的结果不相等,确定所述证明设备的承诺未通过验证。
在另一些示例中,所述a采用以下公式得到:a=grtρ mod p;所述第一响应w根据以下公式得到:w=r+cx mod ρ;所述第二响应v根据以下公式得到:验证模块1102用于根据公式gwvρ/yc计算所述校验值。
在一些示例中,所述装置还包括发送模块1104,发送模块1104用于从Zρ′中随机选择一个素数作为所述ρ,所述ρ′大于0且小于所述p,且所述ρ′为整数;以及将所述ρ发送给所述证明设备。
在另一些示例中,所述接收模块1102还用于接收证明设备发送的所述ρ,所述ρ是所述证明设备将所述g、所述y输入哈希函数,得到的至少一个第一哈希值中的素数。
在一些示例中,所述装置还包括发送模块1104,发送模块1104用于从Zp′中随机选择一个整数作为所述c,其中,p′为小于或者等于所述p的正整数;以及将所述c发送给证明设备。
在另一些示例中,接收模块1102还用于接收证明设备发送的所述c,所述c是所述证明设备将所述ρ、所述g、所述y和所述a输入哈希函数得到的。
可选地,所述y的个数大于或者等于1,所述v的个数等于所述y的个数。
本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时也可以有另外的划分方式,另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成为一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
该集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是个人计算机,手机,或者网络设备等)或处理器(processor)执行本申请各个实施例该方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-onlymemory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是:上述实施例提供的基于ZKP的验证装置在基于ZKP进行验证时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的基于ZKP的验证装置与基于ZKP的验证方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
参见图12,图12示出了本申请一个示例性实施例提供的计算机设备2000的结构示意图。图12所示的计算机设备2000用于执行上述图2至图8任一幅所示的基于ZKP的验证方法所涉及的操作。该计算机设备2000例如是终端或者服务器等,该计算机设备2000可以由一般性的总线体系结构来实现。
如图12所示,计算机设备2000包括至少一个处理器2001、存储器2003以及至少一个通信接口2004。
处理器2001例如是通用中央处理器(central processing unit,CPU)、数字信号处理器(digital signal processor,DSP)、网络处理器(network processer,NP)、图形处理器(Graphics Processing Unit,GPU)、神经网络处理器(neural-network processingunits,NPU)、数据处理单元(Data Processing Unit,DPU)、微处理器或者一个或多个用于实现本申请方案的集成电路。例如,处理器2001包括专用集成电路(application-specificintegrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。PLD例如是复杂可编程逻辑器件(complex programmable logic device,CPLD)、现场可编程逻辑门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合。其可以实现或执行结合本发明实施例公开内容所描述的各种逻辑方框、模块和电路。所述处理器也可以是实现计算功能的组合,例如包括一个或多个微处理器组合,DSP和微处理器的组合等等。
可选的,计算机设备2000还包括总线。总线用于在计算机设备2000的各组件之间传送信息。总线可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图12中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器2003例如是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,又如是随机存取存储器(random access memory,RAM)或者可存储信息和指令的其它类型的动态存储设备,又如是电可擦可编程只读存储器(electrically erasable programmable read-only Memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备,或者是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器2003例如是独立存在,并通过总线与处理器2001相连接。存储器2003也可以和处理器2001集成在一起。
通信接口2004使用任何收发器一类的装置,用于与其它设备或通信网络通信,通信网络可以为以太网、无线接入网(RAN)或无线局域网(wireless local area networks,WLAN)等。通信接口2004可以包括有线通信接口,还可以包括无线通信接口。具体的,通信接口2004可以为以太(Ethernet)接口、快速以太(Fast Ethernet,FE)接口、千兆以太(Gigabit Ethernet,GE)接口,异步传输模式(Asynchronous Transfer Mode,ATM)接口,无线局域网(wireless local area networks,WLAN)接口,蜂窝网络通信接口或其组合。以太网接口可以是光接口,电接口或其组合。在本申请实施例中,通信接口2004可以用于计算机设备2000与其他设备进行通信。
在具体实现中,作为一种实施例,处理器2001可以包括一个或多个CPU,如图12中所示的CPU0和CPU1。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,计算机设备2000可以包括多个处理器,如图12中所示的处理器2001和处理器2005。这些处理器中的每一个可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,计算机设备2000还可以包括输出设备和输入设备。输出设备和处理器2001通信,可以以多种方式来显示信息。例如,输出设备可以是液晶显示器(liquid crystal display,LCD)、发光二极管(light emitting diode,LED)显示设备、阴极射线管(cathode ray tube,CRT)显示设备或投影仪(projector)等。输入设备和处理器2001通信,可以以多种方式接收用户的输入。例如,输入设备可以是鼠标、键盘、触摸屏设备或传感设备等。
在一些实施例中,存储器2003用于存储执行本申请方案的程序代码2010,处理器2001可以执行存储器2003中存储的程序代码2010。也即是,计算机设备2000可以通过处理器2001以及存储器2003中的程序代码2010,来实现方法实施例提供的基于ZKP的验证方法。程序代码2010中可以包括一个或多个软件模块。可选地,处理器2001自身也可以存储执行本申请方案的程序代码或指令。
在具体实施例中,本申请实施例的计算机设备2000可对应于上述各个方法实施例中的证明设备,计算机设备2000中的处理器2001读取存储器2003中的指令,使图12所示的计算机设备2000能够执行证明设备所执行的全部或部分操作。
具体的,处理器2001用于获取公开信息,公开信息包括:公开数据y、乘法循环群的根g和乘法循环群的模数p,乘法循环群的阶为无法分解的合数;确定验证信息,验证信息包括:第一挑战ρ、证明a、第二挑战c、第一响应w、第二响应v,其中,所述ρ为素数,所述a根据所述g、第一随机数r、第二随机数t和所述ρ采用模p的乘法运算得到,所述第一响应w根据所述r、所述c和秘密数据x采用模ρ的加法运算得到,所述第二响应v根据所述t、所述g、所述r、所述c、所述x和所述ρ采用模p的乘法运算得到,所述r为属于Zρ的随机数,所述t为属于的随机数;以及通过通信接口将验证信息中的至少部分信息发送给验证设备,以使验证设备根据至少部分信息对证明设备的承诺进行验证,承诺为y是采用x计算的,且x是关于y的离散对数。
其他可选的实施方式,为了简洁,在此不再赘述。
又例如,本申请实施例的计算机设备2000可对应于上述各个方法实施例中的验证设备,计算机设备2000中的处理器2001读取存储器2003中的指令,使图12所示的计算机设备2000能够执行验证设备所执行的全部或部分操作。
具体的,处理器2001用于获取公开信息,公开信息包括:公开数据y、乘法循环群的根g和乘法循环群的模数p,乘法循环群的阶为无法分解的合数;通过通信接口接收证明设备发送的验证信息,验证信息至少包括:证明a、第一响应w和第二响应v,其中,a是证明设备根据g、第一挑战ρ、第一随机数r和第二随机数t采用模p的乘法运算得到的,第一响应w是证明设备根据第一随机数r、第二挑战c和秘密数据x采用模ρ的加法运算得到的,第二响应v是证明设备根据g、ρ、r、t、c和x采用模p的乘法运算得到的,ρ为素数,r为属于Zρ的随机数,t为属于的随机数;以及基于公开信息和验证信息,对证明设备的承诺进行验证,承诺为y是采用x计算的,且x是关于y的离散对数。
其他可选的实施方式,为了简洁,在此不再赘述。
计算机设备2000还可以对应于上述图10-11所示的基于ZKP的验证装置,基于ZKP的验证装置中的每个功能模块采用计算机设备2000的软件实现。换句话说,资源调度装置包括的功能模块为计算机设备2000的处理器2001读取存储器2003中存储的程序代码2010后生成的。
其中,图2-8所示的基于ZKP的验证方法的各步骤通过计算机设备2000的处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤,为避免重复,这里不再详细描述。
本申请实施例还提供了一种芯片,包括处理器,处理器用于从存储器中调用并运行存储器中存储的指令,使得安装有芯片的通信设备执行本申请提供的任一种的基于ZKP的验证方法。
本申请实施例还提供了一种芯片,包括:输入接口、输出接口、处理器和存储器,输入接口、输出接口、处理器以及存储器之间通过内部连接通路相连,处理器用于执行存储器中的代码,当代码被执行时,处理器用于执行上述任一种的基于ZKP的验证方法。
应理解的是,上述处理器可以是CPU,还可以是其他通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。值得说明的是,处理器可以是支持ARM架构的处理器。
进一步地,在一种可选的实施例中,上述处理器为一个或多个,存储器为一个或多个。可选地,存储器可以与处理器集成在一起,或者存储器与处理器分离设置。上述存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器还可以包括非易失性随机存取存储器。例如,存储器还可以存储参考块和目标块。
该存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是ROM、PROM、EPROM、EEPROM或闪存。易失性存储器可以是RAM,其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用。例如,SRAM、DRAM、SDRAM、DDR SDRAM、ESDRAM、SLDRAM和DR RAM。
本申请实施例中,还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,当计算机可读存储介质中存储的计算机指令被计算机设备执行时,使得计算机设备执行上述所提供的基于ZKP的验证方法。
本申请实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机设备上运行时,使得计算机设备执行上述所提供的基于ZKP的验证方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现,当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令,在服务器或终端上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴光缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是服务器或终端能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(如软盘、硬盘和磁带等),也可以是光介质(如数字视盘(Digital Video Disk,DVD)等),或者半导体介质(如固态硬盘等)。
Claims (23)
1.一种基于零知识证明的验证方法,其特征在于,所述方法应用于证明设备,所述方法包括:
获取公开信息,所述公开信息包括:公开数据y、乘法循环群的根g和乘法循环群的模数p,所述乘法循环群的阶为无法分解的合数;
确定验证信息,所述验证信息包括:证明a、第一响应w和第二响应v,其中,所述a根据所述g、第一随机数r、第二随机数t和第一挑战ρ采用模p的乘法运算得到,所述w根据所述r、第二挑战c和秘密数据x采用模ρ的加法运算得到,所述v根据所述t、所述g、所述r、所述c、所述x和所述ρ采用模p的乘法运算得到,所述ρ为素数,所述r为属于Zρ的随机数,Zp表示小于ρ的整数集合,所述t为属于的随机数,表示小于p且与p互质的整数集合;以及
将所述验证信息发送给验证设备,以使所述验证设备根据所述公开信息和所述验证信息对所述证明设备的承诺进行验证,所述承诺为:所述y是采用所述x计算的,且所述x为关于所述y的离散对数。
2.根据权利要求1所述的方法,其特征在于,所述确定验证信息,包括:
根据所述r、所述g、所述t、所述ρ进行模p的乘法运算,得到所述a;
根据包含所述r、所述c和所述x的一元一次多项式,得到第一数值;
对所述第一数值进行模ρ运算,得到所述w;
将所述第一数值与所述ρ之商向下取整,得到第二数值;以及
根据所述t、所述g和所述第二数值进行模p的乘法运算,得到所述v。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:
接收所述验证设备发送的所述ρ,所述ρ是选自Zρ′的随机数,所述ρ′大于0且小于所述p,且所述ρ′为整数。
6.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:
将所述g、所述y输入哈希函数,得到至少一个第一哈希值;
将所述至少一个第一哈希值中的一个素数作为所述ρ。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述方法还包括:
接收所述验证设备发送的所述c,所述c为选自Zp′的随机数,p′为小于或者等于p的正整数。
8.根据权利要求1至6任一项所述的方法,其特征在于,所述方法还包括:
将所述ρ、所述g、所述y和所述a输入哈希函数,得到所述c。
9.根据权利要求1至8任一项所述的方法,其特征在于,所述y的个数大于或者等于1,所述v的个数等于所述y的个数。
10.一种基于零知识证明的验证方法,其特征在于,所述方法包括:
获取公开信息,所述公开信息包括:公开数据y、乘法循环群的根g和乘法循环群的模数p,所述乘法循环群的阶为无法分解的合数;
接收证明设备发送的验证信息,所述验证信息包括:证明a、第一响应w和第二响应v,其中,所述a是证明设备根据所述g、第一随机数r、第二随机数t和第一挑战ρ采用模p的乘法运算得到的,所述w是所述证明设备根据所述r、第二挑战c和秘密数据x采用模ρ的加法运算得到的,所述v是所述证明设备根据所述t、所述g、所述r、所述c、所述x和所述ρ采用模p的乘法运算得到的,所述ρ为素数,所述r为属于Zρ的随机数,Zρ表示小于ρ的整数集合,所述t为属于的随机数,表示小于p且与p互质的整数集合;以及
根据所述公开信息和所述验证信息,对所述证明设备的承诺进行验证,所述承诺为:所述y是采用所述x计算的,且所述x为关于所述y的离散对数。
11.根据权利要求10所述的方法,其特征在于,所述根据所述公开信息和所述验证信息,对所述证明设备的承诺进行验证,包括:
根据所述g、所述w、所述v、所述ρ、所述y和所述c,计算校验值;
响应于所述校验值与所述a模所述p的结果相等,确定所述证明设备的承诺通过验证;或者,
响应于所述校验值与所述a模所述p的结果不相等,确定所述证明设备的承诺未通过验证。
14.根据权利要求10至13任一项所述的方法,其特征在于,所述方法还包括:
从zρ′中随机选择一个素数作为所述ρ,所述ρ′大于0且小于所述p,且所述ρ′为整数;以及
将所述ρ发送给所述证明设备。
15.根据权利要求10至13任一项所述的方法,其特征在于,所述方法还包括:
接收所述证明设备发送的所述ρ,所述ρ是所述证明设备将所述g、所述y输入哈希函数,得到的至少一个第一哈希值中的素数。
16.根据权利要求10至15任一项所述的方法,其特征在于,所述方法还包括:
从Zp′中随机选择一个整数作为所述c,其中,p′为小于或者等于所述p的正整数;以及
将所述c发送给所述证明设备。
17.根据权利要求10至15任一项所述的方法,其特征在于,所述方法还包括:
接收所述证明设备发送的所述c,所述c是所述证明设备将所述ρ、所述g、所述y和所述a输入哈希函数得到的。
18.根据权利要求10至17任一项所述的方法,其特征在于,所述y的个数大于或者等于1,所述v的个数等于所述y的个数。
19.一种基于零知识证明的验证装置,其特征在于,所述装置包括:
获取模块,用于获取公开信息,所述公开信息包括:公开数据y、乘法循环群的根g和乘法循环群的模数p,所述乘法循环群的阶为无法分解的合数;
确定模块,用于确定验证信息,所述验证信息包括:证明a、第一响应w和第二响应v,其中,所述a根据所述g、第一随机数r、第二随机数t和第一挑战ρ采用模p的乘法运算得到,所述w根据所述r、第二挑战c和秘密数据x采用模ρ的加法运算得到,所述v根据所述t、所述g、所述r、所述c、所述x和所述ρ采用模p的乘法运算得到,所述ρ为素数,所述r为属于Zρ的随机数,Zρ表示小于ρ的整数集合,所述t为属于的随机数,表示小于p且与p互质的整数集合;
发送模块,用于将所述验证信息发送给验证设备,以使所述验证设备根据所述公开信息和所述验证信息对所述证明设备的承诺进行验证,所述承诺为:所述y是采用所述x计算的,且所述x为关于所述y的离散对数。
20.一种基于零知识证明的验证装置,其特征在于,所述装置包括:
获取模块,用于获取公开信息,所述公开信息包括:公开数据y、乘法循环群的根g和乘法循环群的模数p,所述乘法循环群的阶为无法分解的合数;
接收模块,用于接收证明设备发送的验证信息,所述验证信息包括:证明a、第一响应w和第二响应v,其中,所述a是证明设备根据所述g、第一随机数r、第二随机数t和第一挑战ρ采用模p的乘法运算得到的,所述w是所述证明设备根据所述r、第二挑战c和秘密数据x采用模ρ的加法运算得到的,所述v是所述证明设备根据所述t、所述g、所述r、所述c、所述x和所述ρ采用模p的乘法运算得到的,所述ρ为素数,所述r为属于Zρ的随机数,Zρ表示小于ρ的整数集合,所述t为属于的随机数,表示小于p且与p互质的整数集合;
验证模块,用于根据所述公开信息和所述验证信息,对所述证明设备的承诺进行验证,所述承诺为:所述y是采用所述x计算的,且所述x为关于所述y的离散对数。
21.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器;所述存储器用于存储软件程序,所述处理器通过执行存储在所述存储器内的软件程序,以使得所述网络设备实现如权利要求1至9任一项所述的方法,或者,执行所述权利要求10至18任一项所述的方法。
22.一种基于零知识证明的验证系统,其特征在于,所述系统包括证明设备和验证设备,所述证明设备用于执行如权利要求1至9任一项所述的方法,或者,执行所述权利要求10至18任一项所述的方法。
23.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机可读存储介质中的计算机指令被计算机设备执行时,使得所述计算机设备执行所述权利要求1至9中任一项所述的方法,或者,权利要求10至18中任一项权利要求所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110844836.XA CN115694822A (zh) | 2021-07-26 | 2021-07-26 | 基于零知识证明的验证方法、装置和系统、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110844836.XA CN115694822A (zh) | 2021-07-26 | 2021-07-26 | 基于零知识证明的验证方法、装置和系统、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115694822A true CN115694822A (zh) | 2023-02-03 |
Family
ID=85044314
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110844836.XA Pending CN115694822A (zh) | 2021-07-26 | 2021-07-26 | 基于零知识证明的验证方法、装置和系统、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115694822A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117240438A (zh) * | 2023-11-10 | 2023-12-15 | 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) | 基于零知识证明的神经网络输出结果产权证明方法及装置 |
CN117278213A (zh) * | 2023-10-31 | 2023-12-22 | 杭州趣链科技有限公司 | 基于多项式承诺的方法、电子设备及可读存储介质 |
-
2021
- 2021-07-26 CN CN202110844836.XA patent/CN115694822A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117278213A (zh) * | 2023-10-31 | 2023-12-22 | 杭州趣链科技有限公司 | 基于多项式承诺的方法、电子设备及可读存储介质 |
CN117278213B (zh) * | 2023-10-31 | 2024-02-09 | 杭州趣链科技有限公司 | 基于多项式承诺的方法、电子设备及可读存储介质 |
CN117240438A (zh) * | 2023-11-10 | 2023-12-15 | 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) | 基于零知识证明的神经网络输出结果产权证明方法及装置 |
CN117240438B (zh) * | 2023-11-10 | 2024-04-26 | 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) | 基于零知识证明的神经网络输出结果产权证明方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108370317B (zh) | 向标准的凭证添加隐私 | |
CN112152794A (zh) | 具有基于签名加入协议和无限签名的有效后量子匿名证明 | |
CN116561789B (zh) | 隐私数据的处理方法、装置、电子设备及可读存储介质 | |
CN109818730B (zh) | 盲签名的获取方法、装置和服务器 | |
CN102318260A (zh) | 密钥协商协议的加速 | |
JP5099003B2 (ja) | グループ署名システムおよび情報処理方法 | |
CN113424492B (zh) | 用以验证数字签名的系统和方法 | |
US9356783B2 (en) | Method for ciphering and deciphering, corresponding electronic device and computer program product | |
CN115694822A (zh) | 基于零知识证明的验证方法、装置和系统、设备及介质 | |
Lizama-Pérez et al. | Public hash signature for mobile network devices | |
CN110602190A (zh) | 区块链共识的方法及区块链节点和存储装置 | |
US9577828B2 (en) | Batch verification method and apparatus thereof | |
US8582761B2 (en) | Cryptographic method with elliptical curves | |
CN112541197B (zh) | 一种结果验证方法及装置 | |
Qin et al. | Certificate-free ad hoc anonymous authentication | |
Kim et al. | An efficient public key functional encryption for inner product evaluations | |
CN116975935B (zh) | 数据比较方法、存储介质及电子设备 | |
Lee | Cryptanalysis of Zhu et al.’s Identity-Based Encryption with Equality Test without Random Oracles | |
CN113972984B (zh) | ElGamal密文等价判断方法及装置 | |
Kansal et al. | Construction for a nominative signature scheme from lattice with enhanced security | |
Bichsel et al. | Cryptographic protocols underlying privacy-abcs | |
US20230040203A1 (en) | Method for deriving a partial signature with partial verification | |
Zhang et al. | A new non-interactive deniable authentication protocol based on generalized ElGamal signature scheme | |
Hsu | A group digital signature technique for authentication | |
Zhang et al. | Efficient Non-Interactive Polynomial Commitment Scheme in the Discrete Logarithm Setting |
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 |