椭圆曲线形式下的Pedersen commitment——vector commitment和polynomial commitment

本文介绍了椭圆曲线下的Pedersen承诺机制及其向量扩展,包括其加法同态性及一系列向量的零知识证明过程。此外,还讨论了多项式插值在该过程中的应用。

1. 椭圆曲线下的Pedersen commitment

椭圆曲线下Pedersen commitment可用scalar multiplication of curve points来表示:
C=rH+aGC=rH+aGC=rH+aG
其中,CCC为椭圆曲线上的一个点curve point,作为commitment;aaa为commit to 的数值;rrr为随机数,可提供隐藏功能;GGG为所选择椭圆曲线广泛接受的generator;HHH为椭圆曲线上的另一个点,且保证无任何可推导qqq,使得H=qGH=qGH=qG,这个H与G直接无明确关系非常重要。

如需open commitment CCC,需要提供r值和a值。

Pedersen commitment具有加法同态性:
C(r1,a1)+C(r2,a2)=r1H+a1G+r2H+a2G=(r1+r2)H+(a1+a2)G=C(r1+r2,a1+a2)C(r_1,a_1)+C(r_2,a_2)=r_1H+a_1G+r_2H+a_2G=(r_1+r_2)H+(a_1+a_2)G=C(r_1+r_2,a_1+a_2)C(r1,a1)+C(r2,a2)=r1H+a1G+r2H+a2G=(r1+r2)H+(a1+a2)G=C(r1+r2,a1+a2)

2. Vector Pedersen Commitment 向量commitment

C=rH+(v1G1+v2G2+....+vnGn)=rH+v⃗G⃗C=rH+(v_1G_1+v_2G_2+....+v_nG_n)=rH+\vec v\vec GC=rH+(v1G1+v2G2+....+vnGn)=rH+vG
其中,各个GiG_iGi可由Hash(encode(G)∣∣i)Hash(encode(G)||i)Hash(encode(G)i)来获取。

如需open commitment CCC,需要提供随机数r值和向量值v⃗\vec vv

向量值v⃗\vec vv中可以有大量元素,但最终的commitment只为椭圆曲线上的一个点CCC

也可以同时对多个Vector进行commitment,如对v⃗,w⃗\vec v,\vec wv,w同时commitment:
C=rH+v⃗G⃗+w⃗H⃗C=rH+\vec v\vec G+\vec w\vec HC=rH+vG+wH
其中,各个HiH_iHi可由Hash(encode(H)∣∣i)Hash(encode(H)||i)Hash(encode(H)i)来获取,即curve point HHH不在vector H⃗\vec HH中。

3. A zero knowledge argument of knowledge of a set of vectors——一系列向量的零知识证明

假设有m个向量x⃗1,x⃗2,...,x⃗m\vec x_1,\vec x_2, ..., \vec x_mx1,x2,...,xm,且每个向量都有N个元素(N!=mN != mN!=m)。已知各个向量的commitment为:
C1=r1H+x⃗1G⃗C_1=r_1H+\vec x_1 \vec GC1=r1H+x1G
C2=r2H+x⃗2G⃗C_2=r_2H+\vec x_2 \vec GC2=r2H+x2G
.........
Cm=rmH+x⃗mG⃗C_m=r_mH+\vec x_m \vec GCm=rmH+xmG

以下PPP代表prover, VVV代表Verifier。
a) P→V:C0P \rightarrow V: C_0PV:C0 (a new commitment to a newly chosen random vector of dimension N)
b) V→P:eV \rightarrow P: eVP:e (a random scalar,也可称为challenge值。)
c) P→V:(z⃗,s)P \rightarrow V: (\vec z, s)PV:(z,s) (a single vector of dimension N, and another scalar)
其中:
z⃗=∑i=0meix⃗i,s=∑i=0meiri\vec z=\sum_{i=0}^{m}e^i\vec x_i, \quad s=\sum_{i=0}^{m}e^ir_iz=i=0meixi,s=i=0meiri

通过随机数eee,可很好的隐藏向量x⃗\vec xx,如取z⃗\vec zz向量的第二个元素——z2=x02+ex12+...+emxm2z_2=x_{02}+ex_{12}+...+e^mx_{m2}z2=x02+ex12+...+emxm2
有1*m维矩阵:
(1,e,e2,...,em)(1,e,e^2,...,e^m)(1,e,e2,...,em)
使得z值无法获取相应的x值。

对于Verifier,只需验证:
∑i=0meiCi=?sH+z⃗G⃗\sum_{i=0}^{m}e^iC_i=?sH+\vec z\vec Gi=0meiCi=?sH+zG

证明过程如下:
sH+z⃗G⃗=∑i=0mei(riH)+∑i=0meix⃗iG⃗=∑i=0mei(riH+x⃗iG⃗)=∑i=0meiCisH+\vec z\vec G=\sum_{i=0}^{m}e^i(r_iH)+\sum_{i=0}^{m}e^i\vec x_i\vec G=\sum_{i=0}^{m}e^i(r_iH+\vec x_i\vec G)=\sum_{i=0}^{m}e^iC_isH+zG=i=0mei(riH)+i=0meixiG=i=0mei(riH+xiG)=i=0meiCi

由以上证明可知,Verifer可根据信息(C0,e,(z⃗,s))(C_0,e,(\vec z, s))(C0,e,(z,s)),可信服honest prover的proof (z⃗,s)(\vec z, s)(z,s)

但是对于不诚信的prover,他可以随机选择e,(z⃗,s)e,(\vec z, s)e,(z,s)值,并根据之前已生成的C1,C2,...,CmC_1,C_2,...,C_mC1,C2,...,Cm值,推导出C0=(sH+z⃗G⃗)−(∑i=1meiCi)C_0=(sH+\vec z\vec G)-(\sum_{i=1}^{m}e^{i}C_i)C0=(sH+zG)(i=1meiCi)
使得∑i=0meiCi=C0+∑i=1meiCi=(sH+z⃗G⃗)−(∑i=1meiCi)+∑i=1meiCi=sH+z⃗G⃗\sum_{i=0}^{m}e^iC_i=C_0+\sum_{i=1}^{m}e^{i}C_i=(sH+\vec z\vec G)-(\sum_{i=1}^{m}e^{i}C_i)+\sum_{i=1}^{m}e^{i}C_i=sH+\vec z\vec Gi=0meiCi=C0+i=1meiCi=(sH+zG)(i=1meiCi)+i=1meiCi=sH+zG恒成立,因此,对于此种情况,不诚信的prover可伪造相应的证明。

若需要open此种情况下的commitment,需要提供C1,C2,...CmC_1,C_2,...C_mC1,C2,...Cm对应的共m个scalar数r1,r2,...,rmr_1,r_2,...,r_mr1,r2,...,rm,以及m∗Nm*NmN个向量元素x11,x12,...,xmNx_{11},x_{12},...,x_{mN}x11,x12,...,xmN

3.1 一系列向量的零知识证明的soundness验证

修改上面的流程,重复a)b)c)步骤m+1次,每次均为scalar e提供不同的随机值eje_jej
(C0,0,e0,(z⃗0,s0))(C_{0,0},e_0,(\vec z_0,s_0))(C0,0,e0,(z0,s0))
(C0,1,e1,(z⃗1,s1))(C_{0,1},e_1,(\vec z_1,s_1))(C0,1,e1,(z1,s1))
(C0,2,e2,(z⃗2,s2))(C_{0,2},e_2,(\vec z_2,s_2))(C0,2,e2,(z2,s2))
.........
(C0,m,em,(z⃗m,sm))(C_{0,m},e_m,(\vec z_m,s_m))(C0,m,em,(zm,sm))

相应地:
z⃗j=∑i=0mejix⃗i,sj=∑i=0mejiri,其中j∈[0,m]\vec z_j=\sum_{i=0}^{m}e_j^i\vec x_i, \quad s_j=\sum_{i=0}^{m}e_j^ir_i, \quad 其中j\in [0,m]zj=i=0mejixi,sj=i=0mejiri,j[0,m]

则 有(m+1)*(m+1)维矩阵:
A−1=(1e0e02...e0m1e1e12...e1m1e2e22...e2m...1emem2...emm)A^{-1}=\begin{pmatrix} 1& e_0& e_0^2 &... &e_0^m \\ 1& e_1& e_1^2 &... &e_1^m\\ 1& e_2& e_2^2 &... &e_2^m\\ ...& & & & \\ 1& e_m& e_m^2 &... &e_m^m \end{pmatrix}A1=111...1e0e1e2eme02e12e22em2............e0me1me2memm
使得z值无法获取相应的x值。该矩阵为Vandermonde 矩阵。
e0,e1,...,eme_0,e_1,...,e_me0,e1,...,em互异,则存在对应的逆矩阵为:
A=(a00a01a02...a0ma10a11a12...a1ma20a21a22...a2m...am0am1am2...amm)A=\begin{pmatrix} a_{00}& a_{01}& a_{02}&... &a_{0m} \\ a_{10}& a_{11}& a_{12}&... &a_{1m} \\ a_{20}& a_{21}& a_{22}&... &a_{2m} \\ ...& & & & \\ a_{m0}& a_{m1}& a_{m2}&... &a_{mm} \end{pmatrix}A=a00a10a20...am0a01a11a21am1a02a12a22am2............a0ma1ma2mamm

相应的Z也为矩阵,满足:
Z=A−1X=(1e0e02...e0m1e1e12...e1m1e2e22...e2m...1emem2...emm)(x⃗0x⃗1x⃗2...x⃗m)=(∑i=0me0ix⃗i∑i=0me1ix⃗i∑i=0me2ix⃗i...∑i=0memix⃗i)=(z⃗0z⃗1z⃗2...z⃗m)Z=A^{-1}X=\begin{pmatrix} 1& e_0& e_0^2 &... &e_0^m \\ 1& e_1& e_1^2 &... &e_1^m\\ 1& e_2& e_2^2 &... &e_2^m\\ ...& & & & \\ 1& e_m& e_m^2 &... &e_m^m \end{pmatrix}\begin{pmatrix} \vec x_0\\ \vec x_1\\ \vec x_2\\ ... \\ \vec x_m \end{pmatrix}=\begin{pmatrix} \sum_{i=0}^{m}e_0^i\vec x_i\\ \sum_{i=0}^{m}e_1^i\vec x_i\\ \sum_{i=0}^{m}e_2^i\vec x_i\\ ... \\ \sum_{i=0}^{m}e_m^i\vec x_i \end{pmatrix}=\begin{pmatrix} \vec z_0\\ \vec z_1\\ \vec z_2\\ ... \\ \vec z_m \end{pmatrix}Z=A1X=111...1e0e1e2eme02e12e22em2............e0me1me2memmx0x1x2...xm=i=0me0ixii=0me1ixii=0me2ixi...i=0memixi=z0z1z2...zm

即相当于求m+1个方程式,存在唯一解(x⃗0,x⃗1,...,x⃗m)(\vec x_0, \vec x_1,..., \vec x_m)(x0,x1,...,xm)。即可保证soundness。

e0,e1,...,eme_0,e_1,...,e_me0,e1,...,em不互异,则可逆矩阵A不存在,也不能保证解的唯一性。

根据矩阵基础知识,矩阵B存在可逆矩阵的充分必要条件为B的判别式不为零,即det|B|!=0。
A的可逆矩阵A-1之间的关系有:AA−1=I,I为单位矩阵AA^{-1}=I,I为单位矩阵AA1=I,I,即:
AA−1=(a00a01a02...a0ma10a11a12...a1ma20a21a22...a2m...am0am1am2...amm)(1e0e02...e0m1e1e12...e1m1e2e22...e2m...1emem2...emm)=(100...0010...0001...0...000...1)=(δ00δ01δ02...δ0mδ10δ11δ12...δ1mδ20δ21δ22...δ2m...δm0δm1δm2...δmm)AA^{-1}=\begin{pmatrix} a_{00}& a_{01}& a_{02}&... &a_{0m} \\ a_{10}& a_{11}& a_{12}&... &a_{1m} \\ a_{20}& a_{21}& a_{22}&... &a_{2m} \\ ...& & & & \\ a_{m0}& a_{m1}& a_{m2}&... &a_{mm} \end{pmatrix}\begin{pmatrix} 1& e_0& e_0^2 &... &e_0^m \\ 1& e_1& e_1^2 &... &e_1^m\\ 1& e_2& e_2^2 &... &e_2^m\\ ...& & & & \\ 1& e_m& e_m^2 &... &e_m^m \end{pmatrix}=\begin{pmatrix} 1& 0& 0 &... &0 \\ 0& 1& 0 &... &0 \\ 0& 0& 1 &... &0 \\ ...& & & & \\ 0& 0& 0 &... &1 \end{pmatrix}=\begin{pmatrix} \delta _{00}& \delta _{01}& \delta _{02} &... &\delta _{0m} \\ \delta _{10}& \delta _{11}& \delta _{12} &... &\delta _{1m} \\ \delta _{20}& \delta _{21}& \delta _{22} &... &\delta _{2m} \\ ...& & & & \\ \delta _{m0}& \delta _{m1}& \delta _{m2} &... &\delta _{mm} \end{pmatrix}AA1=a00a10a20...am0a01a11a21am1a02a12a22am2............a0ma1ma2mamm111...1e0e1e2eme02e12e22em2............e0me1me2memm=100...001000010............0001=δ00δ10δ20...δm0δ01δ11δ21δm1δ02δ12δ22δm2............δ0mδ1mδ2mδmm

上面公式中,eje_jej为challenge值,有:
δhi=∑j=0mahjeji\delta _{hi}=\sum_{j=0}^{m}a_{hj}e_j^iδhi=j=0mahjeji

h==ih==ih==i时,有δhi=1\delta _{hi}=1δhi=1;当h!=ih!=ih!=i时,有δhi=0\delta _{hi}=0δhi=0。也可称δhi\delta _{hi}δhi为Kronecker delta函数。

基于δhi\delta _{hi}δhi的特性,有:
Ch=∑i=0mδhiCiC_h=\sum_{i=0}^{m}\delta _{hi}C_iCh=i=0mδhiCi
⇔Ch=∑i=0mδhiCi=∑i=0m(∑j=0mahjeji)Ci\Leftrightarrow C_h=\sum_{i=0}^{m}\delta _{hi}C_i=\sum_{i=0}^{m}(\sum_{j=0}^{m}a_{hj}e_j^i)C_iCh=i=0mδhiCi=i=0m(j=0mahjeji)Ci
⇔根据加法交换律有:Ch=∑i=0m(∑j=0mahjeji)Ci=∑j=0mahj(∑i=0mejiCi)\Leftrightarrow 根据加法交换律有: \quad C_h=\sum_{i=0}^{m}(\sum_{j=0}^{m}a_{hj}e_j^i)C_i=\sum_{j=0}^{m}a_{hj}(\sum_{i=0}^{m}e_j^iC_i):Ch=i=0m(j=0mahjeji)Ci=j=0mahj(i=0mejiCi)
∵Ci=riH+x⃗iG⃗,z⃗j=∑i=0mejix⃗i,sj=∑i=0mejiri,以及加法结合律\because C_i=r_iH+\vec x_i\vec G, \quad \vec z_j=\sum_{i=0}^{m}e_j^i\vec x_i, \quad s_j=\sum_{i=0}^{m}e_j^ir_i, \quad 以及加法结合律Ci=riH+xiG,zj=i=0mejixi,sj=i=0mejiri,
∴Ch=∑j=0mahj(∑i=0meji(riH+x⃗iG⃗))=∑j=0mahj(∑i=0mejiriH)+∑j=0mahj(∑i=0mejix⃗iG⃗)=∑j=0mahjsjH+∑j=0mahjz⃗jG⃗\therefore C_h=\sum_{j=0}^{m}a_{hj}(\sum_{i=0}^{m}e_j^i(r_iH+\vec x_i\vec G))=\sum_{j=0}^{m}a_{hj}(\sum_{i=0}^{m}e_j^ir_iH)+\sum_{j=0}^{m}a_{hj}(\sum_{i=0}^{m}e_j^i\vec x_i\vec G)=\sum_{j=0}^{m}a_{hj}s_jH+\sum_{j=0}^{m}a_{hj}\vec z_j\vec GCh=j=0mahj(i=0meji(riH+xiG))=j=0mahj(i=0mejiriH)+j=0mahj(i=0mejixiG)=j=0mahjsjH+j=0mahjzjG
⇒Ch\Rightarrow C_hChis a commitment to ∑j=0mahjz⃗j\sum_{j=0}^{m}a_{hj}\vec z_jj=0mahjzj with randomness ∑j=0mahjsj\sum_{j=0}^{m}a_{hj}s_jj=0mahjsj
∵Ch=rhH+x⃗hG⃗,以及有且仅有一个值对应一个commitment\because C_h=r_hH+\vec x_h\vec G,\quad以及有且仅有一个值对应一个commitmentCh=rhH+xhGcommitment
⇒x⃗h=∑j=0mahjz⃗j\Rightarrow \vec x_h=\sum_{j=0}^{m}a_{hj}\vec z_jxh=j=0mahjzj

以上公式推导可知,当有m+1个不同的方程式时,可以通过(z⃗0,z⃗1,z⃗2,...,z⃗m)(\vec z_0, \vec z_1, \vec z_2,...,\vec z_m)(z0,z1,z2,...,zm)一一对应的提取出所有的witness向量值(x⃗0,x⃗1,x⃗2,...,x⃗m)(\vec x_0, \vec x_1, \vec x_2,...,\vec x_m)(x0,x1,x2,...,xm)

通过本算法,根据proof信息,可提取witness信息,且为唯一解,即保证了“knowledge-soundness”。由于解的唯一性,当Prover不知道解的情况下,无法提供可验证通过的proof。

3.2 Polynomial Interpolation多项式插值

Z=A−1X=(1e0e02...e0m1e1e12...e1m1e2e22...e2m...1emem2...emm)(x⃗0x⃗1x⃗2...x⃗m)=(∑i=0me0ix⃗i∑i=0me1ix⃗i∑i=0me2ix⃗i...∑i=0memix⃗i)=(z⃗0z⃗1z⃗2...z⃗m)Z=A^{-1}X=\begin{pmatrix} 1& e_0& e_0^2 &... &e_0^m \\ 1& e_1& e_1^2 &... &e_1^m\\ 1& e_2& e_2^2 &... &e_2^m\\ ...& & & & \\ 1& e_m& e_m^2 &... &e_m^m \end{pmatrix}\begin{pmatrix} \vec x_0\\ \vec x_1\\ \vec x_2\\ ... \\ \vec x_m \end{pmatrix}=\begin{pmatrix} \sum_{i=0}^{m}e_0^i\vec x_i\\ \sum_{i=0}^{m}e_1^i\vec x_i\\ \sum_{i=0}^{m}e_2^i\vec x_i\\ ... \\ \sum_{i=0}^{m}e_m^i\vec x_i \end{pmatrix}=\begin{pmatrix} \vec z_0\\ \vec z_1\\ \vec z_2\\ ... \\ \vec z_m \end{pmatrix}Z=A1X=111...1e0e1e2eme02e12e22em2............e0me1me2memmx0x1x2...xm=i=0me0ixii=0me1ixii=0me2ixi...i=0memixi=z0z1z2...zm
以上公式,可抽象为一个多项式,该多项式的变量为e,系数分别为x⃗0,x⃗1,x⃗2,...,x⃗m\vec x_0, \vec x_1, \vec x_2,...,\vec x_mx0,x1,x2,...,xm
Z(e)=x⃗0+x⃗1e+x⃗2e2+...+x⃗memZ(e)=\vec x_0+\vec x_1e+\vec x_2e^2+...+\vec x_me^mZ(e)=x0+x1e+x2e2+...+xmem

Z(e)Z(e)Z(e)多项式的变量eee分别取m+1不同的值e0,e1,e2,...,eme_0,e_1, e_2,...,e_me0,e1,e2,...,em,可通过Lagrange interpolation来唯一确定Z(e)Z(e)Z(e)多项式的系数x⃗0,x⃗1,x⃗2,...,x⃗m\vec x_0, \vec x_1, \vec x_2,...,\vec x_mx0,x1,x2,...,xm

参考资料:
[1] http://www0.cs.ucl.ac.uk/staff/J.Groth/MatrixZK.pdf
[2] https://joinmarket.me/static/FromZK2BPs_v1.pdf

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值