IPA多项式承诺方案(3)--完整框架

在阅读本节之前建议先阅读前序文章(1)(2)

当掌握了以上知识点后,我们进入IPA方案的具体流程,验证者拥有一个IPA方案包含三个算法 ( S e t u p , C o m m i t , O p e n ) (Setup,Commit,Open) (Setup,Commit,Open)

IPA多项式承诺方案采用Pedersden向量承诺来承诺多项式。因此,IPA的 S e t u p Setup Setup算法与Pedersden向量承诺一致。

  • S e t u p : Setup: Setup:验证者生成参数 p p = ( G , G ∈ G n , H ∈ G , F p ) pp=(G,\pmb{G}\in G^n,H\in G,F_p ) pp=(G,GGn,HG,Fp),其中, G \pmb{G} G是指 ( G 0 , G 1 , … , G n − 1 ) (G_0,G_1,\dots,G_{n-1}) (G0,G1,,Gn1) G , H \pmb{G},H G,H是随机选取的群元素。

  • C o m m i t : Commit: Commit:证明方拥有多项式 f ( X ) = a 0 + a 1 X + ⋯ + a n − 1 X n − 1 f(X)=a_0+a_1X+\dots+a_{n-1}X^{n-1} f(X)=a0+a1X++an1Xn1,系数表示为 a = ( a 0 , a 1 , ⋯   , a n − 1 ) \pmb{a}=(a_0,a_1,\cdots,a_{n-1}) a=(a0,a1,,an1),采用Pedersden向量承诺对多项式进行承诺,计算如下:
    c m = a 0 G 0 + a 1 G 1 + ⋯ + m n − 1 G n − 1 + r H = < a , G > + r H cm=a_0G_0+a_1G_1+\dots+m_{n-1}G_{n-1}+rH\\ =<\bm{a},\bm{G}>+rH cm=a0G0+a1G1++mn1Gn1+rH=<a,G>+rH

  • O p e n : Open: Open:

    1. 验证方选择一个随机评估点 z z z,发送给证明者。
    2. 证明方计算多项式值 f ( z ) = < a , b > f(z)=<\pmb{a},\pmb{b}> f(z)=<a,b>,其中 b \pmb{b} b ( 1 , z , z 2 , ⋯   , z n − 1 ) (1,z,z^2,\cdots ,z^{n-1}) (1,z,z2,,zn1)。发送证明 a , r \pmb{a},r a,r和评估 f ( z ) f(z) f(z)给验证者。
    3. 验证者将验证以下等式来确保 f ( z ) f(z) f(z)是证明者承诺的多项式在 z z z点的值。
      c m = < a , G > + r H f ( z ) = < a , b > cm=<\bm{a},\bm{G}>+rH\\ f(z)=<\bm{a},\bm{b}> cm=<a,G>+rHf(z)=<a,b>

此时方案流程如下图所示。
在这里插入图片描述

注意,此时并未考虑零知识,既先不考虑多项式承诺方案的hiding属性。

若验证者选择一个随机数 U ∈ G U\in G UG,采用随机线性化组合将两个验证等式合并成一个等式。即

c m + f ( z ) U = < a , G > + r H + < a , b > U cm+f(z)U=<\bm{a},\bm{G}>+rH+<\bm{a},\bm{b}>U cm+f(z)U=<a,G>+rH+<a,b>U

若设置 P = c m + f ( z ) U P=cm+f(z)U P=cm+f(z)U,验证等式为 P = < a , G > + r H + < a , b > U P=<\pmb{a},\pmb{G}>+rH+<\pmb{a},\pmb{b}>U P=<a,G>+rH+<a,b>U,考虑采用分配律来合并缩小证明 a \pmb{a} a的大小。此时证明方需要计算辅助验证等式的值。

K 1 = < a L , G R > + < a L , b R > U K 2 = < a R , G L > + < a R , b L > U K_1=<\bm{a_L},\bm{G_R}>+<\bm{a_L},\bm{b_R}>U\\ K_2=<\bm{a_R},\bm{G_L}>+<\bm{a_R},\bm{b_L}>U\\ K1=<aL,GR>+<aL,bR>UK2=<aR,GL>+<aR,bL>U

验证者的验证等式为

P = < a , G > + r H + < a , b > U K 1 = < a L , G R > + < a L , b R > U K 2 = < a R , G L > + < a R , b L > U P=<\bm{a},\bm{G}>+rH+<\bm{a},\bm{b}>U\\ K_1=<\bm{a_L},\bm{G_R}>+<\bm{a_L},\bm{b_R}>U\\ K_2=<\bm{a_R},\bm{G_L}>+<\bm{a_R},\bm{b_L}>U\\ P=<a,G>+rH+<a,b>UK1=<aL,GR>+<aL,bR>UK2=<aR,GL>+<aR,bL>U
流程如下。
在这里插入图片描述

选择随机数 x ∈ F q x \in F_q xFq,合并验证等式为

P + x K 2 + x − 1 K 1 = < x − 1 a L + a R , x G L + G R > + r H + < x − 1 a L + a R , x b L + b R > U P+xK_2+x^{-1}K_1=<x^{-1}\bm{a_L}+\bm{a_R},x\bm{G_L}+\bm{G_R}>+rH+<x^{-1}\bm{a_L}+\bm{a_R},x\bm{b_L}+\bm{b_R}>U P+xK2+x1K1=<x1aL+aR,xGL+GR>+rH+<x1aL+aR,xbL+bR>U

此时,验证者仅需验证以上等式成立则可证明 P = < a , G > + r H + < a , b > U P=<\pmb{a},\pmb{G}>+rH+<\pmb{a},\pmb{b}>U P=<a,G>+rH+<a,b>U成立。此时证明为 x − 1 a L + a R x^{-1}\pmb{a_L}+\pmb{a_R} x1aL+aR r r r,证明 a \pmb{a} a的大小仅为原本的一半。如下图所示。
在这里插入图片描述

若设置 P = P + x K 2 + x − 1 K 1 , a = x − 1 a L + a R , G = x G L + G R , b = x b L + b R P=P+xK_2+x^{-1}K_1,\pmb{a}=x^{-1}\pmb{a_L}+\pmb{a_R},\pmb{G}=x\pmb{G_L}+\pmb{G_R},\pmb{b}=x\pmb{b_L}+\pmb{b_R} P=P+xK2+x1K1,a=x1aL+aRG=xGL+GR,b=xbL+bR,此时验证等式形式依然是 P = < a , G > + r H + < a , b > U P=<\pmb{a},\pmb{G}>+rH+<\pmb{a},\pmb{b}>U P=<a,G>+rH+<a,b>U,可以重复以上缩减证明的操作,直达证明 a \pmb{a} a的大小仅为一个元素。

此时的 O p e n Open Open具体步骤如下:

  1. 验证方选择一个随机评估点 z z z,发送给证明者。

  2. 证明方计算多项式值 f ( z ) = < a , b > f(z)=<\pmb{a},\pmb{b}> f(z)=<a,b>,其中 b \pmb{b} b ( 1 , z , z 2 , ⋯   , z n − 1 ) (1,z,z^2,\cdots ,z^{n-1}) (1,z,z2,,zn1)。发送评估 f ( z ) f(z) f(z)给验证者。

  3. 验证者选择选择一个随机群元素 U ∈ G U\in G UG,并发送给证明者。

  4. 证明者计算并发送辅助验证等式的值给验证者

    K 1 = < a L , G R > + < a L , b R > U K 2 = < a R , G L > + < a R , b L > U K_1=<\bm{a_L},\bm{G_R}>+<\bm{a_L},\bm{b_R}>U\\ K_2=<\bm{a_R},\bm{G_L}>+<\bm{a_R},\bm{b_L}>U\\ K1=<aL,GR>+<aL,bR>UK2=<aR,GL>+<aR,bL>U

  5. 验证者选择随机数 x ∈ F q x \in F_q xFq,并发送给证明者。

  6. 证明者计算下一轮的 a , G , b \pmb{a},\pmb{G},\pmb{b} a,G,b

    a = x − 1 a L + a R G = x G L + G R b = x b L + b R \bm{a}=x^{-1}\bm{a_L}+\bm{a_R}\\ \bm{G}=x\bm{G_L}+\bm{G_R}\\ \bm{b}=x\bm{b_L}+\bm{b_R}\\ a=x1aL+aRG=xGL+GRb=xbL+bR

    重复以上步骤(重复 l o g 2 n log_2n log2n轮),直至 a \pmb{a} a的元素个数为1,停止,并发送 a , r \pmb{a},r a,r给验证者。

  7. 假设第 j j j轮的 K 1 , K 2 , x , a , G , b K_1,K_2,x,\pmb{a},\pmb{G},\pmb{b} K1,K2,x,a,G,b表示为 K 1 j , K 2 j , x j , a j , G j , b j K_1^j,K_2^j,x_j,\pmb{a_j},\pmb{G_j},\pmb{b_j} K1j,K2j,xj,aj,Gj,bj,验证者首先计算 P = P + ∑ i = 1 l o g 2 n x i K 1 i + ∑ i = 1 l o g 2 n x i − 1 K 2 i P=P+\sum^{log_2n}_{i=1}x_iK_1^i+\sum^{log_2n}_{i=1}x_i^{-1}K_2^i P=P+i=1log2nxiK1i+i=1log2nxi1K2i,然后计算最后的 G l o g 2 n , b l o g 2 n G_{log_2n},b_{log_2n} Glog2n,blog2n,验证等式 P = < a l o g 2 n , G l o g 2 n > + r H + < a l o g 2 n , b l o g 2 n > U P=<a_{log_2n},G_{log_2n}>+rH+<a_{log_2n},b_{log_2n}>U P=<alog2n,Glog2n>+rH+<alog2n,blog2n>U,注意此时 a l o g 2 n , G l o g 2 n , b l o g 2 n a_{log_2n},G_{log_2n},b_{log_2n} alog2n,Glog2n,blog2n的长度均为1。

但本方案目前未考虑零知识性,思考那些元素会泄漏与隐私 a , r \pmb{a},r a,r相关的信息。

首先考虑到每轮辅助验证等式的值 K 1 , K 2 K_1,K_2 K1,K2,其次还有最后发送的信息 a l o g 2 n , r a_{log_2n},r alog2n,r。因为Pedersen向量承诺增加了随机项 r H rH rH具有隐藏属性,因此 P P P不会泄漏信息。

  • 对于第 j j j K 1 j , K 2 j K_1^j,K_2^j K1j,K2j,可以增加两项随机项 l j H , r j H l_jH,r_jH ljH,rjH,使其变为Pedersen向量承诺形式,具有隐藏属性,则 K 1 j , K 2 j K_1^j,K_2^j K1j,K2j的计算过程如下:

    K 1 j = < a L j , G R j > + l j H + < a L j , b R j > U K 2 j = < a R j , G L j > + r j H + < a R j , b L j > U K_1^j=<\bm{a_L^j},\bm{G_R^j}>+l_jH+<\bm{a_L^j},\bm{b_R^j}>U\\ K_2^j=<\bm{a_R^j},\bm{G_L^j}>+r_jH+<\bm{a_R^j},\bm{b_L^j}>U\\ K1j=<aLj,GRj>+ljH+<aLj,bRj>UK2j=<aRj,GLj>+rjH+<aRj,bLj>U

    最后证明者发送 r ′ = r + ∑ i = 1 l o g 2 n x i l i + ∑ i = 1 l o g 2 n x i − 1 r i r'=r+\sum^{log_2n}_{i=1}x_il_i+\sum^{log_2n}_{i=1}x_i^{-1}r_i r=r+i=1log2nxili+i=1log2nxi1ri a l o g 2 n a_{log_2n} alog2n。验证者验证等式为 P = < a l o g 2 n , G l o g 2 n > + r ′ H + < a l o g 2 n , b l o g 2 n > U P=<a_{log_2n},G_{log_2n}>+r'H+<a_{log_2n},b_{log_2n}>U P=<alog2n,Glog2n>+rH+<alog2n,blog2n>U

  • 对于最后发送的信息 a l o g 2 n , r ′ a_{log_2n},r' alog2n,r,采用 Σ \Sigma Σ 协议实现零知识。此时的论证是 P = < a l o g 2 n , G l o g 2 n > + r ′ H + < a l o g 2 n , b l o g 2 n > U P=<a_{log_2n},G_{log_2n}>+r'H+<a_{log_2n},b_{log_2n}>U P=<alog2n,Glog2n>+rH+<alog2n,blog2n>U

    首先生成同形式的随机项,此时有两个隐私信息,选择随机数 s , d s,d s,d,计算如下。

    R = < s , G l o g 2 n > + d H + < s , b l o g 2 n > U R=<s,G_{log_2n}>+dH+<s,b_{log_2n}>U R=<s,Glog2n>+dH+<s,blog2n>U

    发送R给验证方,验证方返回一个随机挑战值 c c c,证明者计算并返回证明 z 1 , z 2 z_1,z_2 z1,z2,其中

    z 1 = s + c a l o g 2 n z 2 = d + c r ′ z_1=s+ca_{log_2n}\\ z_2=d+cr' z1=s+calog2nz2=d+cr

    验证者验证如下等式。

    R + c P = < z 1 , G l o g 2 n > + z 2 H + < z 1 , b l o g 2 n > U R+cP=<z_1,G_{log_2n}>+z_2H+<z_1,b_{log_2n}>U R+cP=<z1,Glog2n>+z2H+<z1,blog2n>U

    以上措施实现IPA方案的零知识性。

    思考: r ′ r' r并不泄漏 r r r的相关信息,为何也需要零知识?

恭喜你,你已经掌握了IPA多项式承诺了。

思考:怎么构建一个多项式在多个点打开、多个多项式在一个点打开、多个多项式在多个点打开的情况下的IPA多项式承诺方案,即批量IPA多项式承诺方案,其证明的有什么变化,验证等式有什么变化?

如果有笔误或者叙述错误,欢迎留言指正。

  • 21
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值