当掌握了以上知识点后,我们进入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,G∈Gn,H∈G,Fp),其中, G \pmb{G} G是指 ( G 0 , G 1 , … , G n − 1 ) (G_0,G_1,\dots,G_{n-1}) (G0,G1,…,Gn−1), 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+⋯+an−1Xn−1,系数表示为 a = ( a 0 , a 1 , ⋯ , a n − 1 ) \pmb{a}=(a_0,a_1,\cdots,a_{n-1}) a=(a0,a1,⋯,an−1),采用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+⋯+mn−1Gn−1+rH=<a,G>+rH -
O p e n : Open: Open:
- 验证方选择一个随机评估点 z z z,发送给证明者。
- 证明方计算多项式值 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,⋯,zn−1)。发送证明 a , r \pmb{a},r a,r和评估 f ( z ) f(z) f(z)给验证者。
- 验证者将验证以下等式来确保 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 U∈G,采用随机线性化组合将两个验证等式合并成一个等式。即
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,