Inner Product点积的零知识证明

1 引言

Inner product具有如下特征:
在这里插入图片描述
例子一:Prover声称其有某公钥 P X P_X PX的私钥 x x x P X = x G P_X=xG PX=xG。典型的Schnoor’s身份协议。
Prover以零知识证明方式来证明他知道 x x x,证明过程如下:
a) P → V : R P \rightarrow V:R PV:R (P选择随机数k,该值对V保密, R = k G R=kG R=kG。R为a new random curve point。)
b) V → P : e V \rightarrow P: e VP:e (a random scalar,也可称为challenge值。)
c) P → V : s P \rightarrow V: s PV:s, 其中 s = k + e x s=k+ex s=k+ex

对于Verifier,只需验证:
s G = ? R + e P X sG=?R+eP_X sG=?R+ePX

例子二
a) P → V : C 0 P \rightarrow V: C_0 PV:C0 (a new commitment to a newly chosen random vector of dimension N)
b) V → P : e V \rightarrow P: e VP: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 = 0 m e i x ⃗ i , s = ∑ i = 0 m e i r i \vec z=\sum_{i=0}^{m}e^i\vec x_i, \quad s=\sum_{i=0}^{m}e^ir_i z =i=0meix i,s=i=0meiri**
对于Verifier,只需验证:
∑ i = 0 m e i C i = ? s H + z ⃗ G ⃗ \sum_{i=0}^{m}e^iC_i=?sH+\vec z\vec G i=0meiCi=?sH+z G

根据以上两个例子,都满足Sigma protocol。整个流程可抽象为:
a) P → V : c o m m i t m e n t P \rightarrow V: commitment PV:commitment
b) V → P : c h a l l e n g e V \rightarrow P: challenge VP:challenge
c) P → V : r e s p o n s e ( p r o o f ) P \rightarrow V: response(proof) PV:response(proof)

2. Inner Product的零知识证明

Inner Product点积表示为: &lt; x ⃗ , y ⃗ &gt; = ∑ i = 1 n x i y i &lt;\vec x, \vec y&gt;=\sum_{i=1}^{n}x_iy_i <x ,y >=i=1nxiyi
如需零知识证明 z = &lt; x ⃗ , y ⃗ &gt; z=&lt;\vec x, \vec y&gt; z=<x ,y >,则在a)b)c)步骤前,以下三个commitment C x , C y , C z C_x, C_y,C_z Cx,Cy,Cz为已知:
C z = t H + z G C_z=tH+zG Cz=tH+zG
C x = r H + x ⃗ G ⃗ = r H + ( x 1 G 1 + x 2 G 2 + . . . + x n G n ) C_x=rH+\vec x\vec G=rH+(x_1G_1+x_2G_2+...+x_nG_n) Cx=rH+x G =rH+(x1G1+x2G2+...+xnGn)
C y = s H + y ⃗ G ⃗ = s H + ( y 1 G 1 + y 2 G 2 + . . . + y n G n ) C_y=sH+\vec y\vec G=sH+(y_1G_1+y_2G_2+...+y_nG_n) Cy=sH+y G =sH+(y1G1+y2G2+...+ynGn)

以下将类比例子一来构建相应的a)b)c)step。

2.1 a)step P → V : c o m m i t m e n t P \rightarrow V: commitment PV:commitment

在本阶段,分别为 x ⃗ , y ⃗ \vec x, \vec y x ,y 选择相应的随机向量 d ⃗ x , d ⃗ y \vec d_x, \vec d_y d x,d y和随机值 r d , s d r_d,s_d rd,sd,计算:
A d = r d H + d ⃗ x G ⃗ A_d=r_dH+\vec d_x\vec G Ad=rdH+d xG
B d = s d H + d ⃗ y G ⃗ B_d=s_dH+\vec d_y\vec G Bd=sdH+d yG

同时参考例子中c)步骤中计算 e x + k ex+k ex+k的方式来构建 &lt; e x ⃗ + d ⃗ x , e y ⃗ + d ⃗ y &gt; = &lt; x ⃗ , y ⃗ &gt; e 2 + ( &lt; x ⃗ , d ⃗ y &gt; + &lt; d ⃗ x , y ⃗ &gt; ) e + &lt; d ⃗ x , d ⃗ y &gt; &lt;e\vec x+\vec d_x,e\vec y+\vec d_y&gt;=&lt;\vec x,\vec y&gt;e^2+(&lt;\vec x,\vec d_y&gt;+&lt;\vec d_x,\vec y&gt;)e+&lt;\vec d_x, \vec d_y&gt; <ex +d x,ey +d y>=<x ,y >e2+(<x ,d y>+<d x,y >)e+<d x,d y>,对该多项式的三个系数提供相应的commitment,其中 &lt; x ⃗ , y ⃗ &gt; &lt;\vec x,\vec y&gt; <x ,y >的commitment即为 C z C_z Cz。另外两个系数的commitment为:【注意此处的三个系数均为scalars,而不是vectors。所以用的是G而不是 G ⃗ \vec G G
C 1 = t 1 H + ( &lt; x ⃗ , d ⃗ y &gt; + &lt; d ⃗ x , y ⃗ &gt; ) G C_1=t_1H+(&lt;\vec x,\vec d_y&gt;+&lt;\vec d_x,\vec y&gt;)G C1=t1H+(<x ,d y>+<d x,y >)G
C 0 = t 0 H + ( &lt; d ⃗ x , d ⃗ y &gt; ) G C_0=t_0H+(&lt;\vec d_x, \vec d_y&gt;)G C0=t0H+(<d x,d y>)G

综上,在a)commitment 阶段:
a) P → V : ( r d , s d , t 1 , t 0 ) P \rightarrow V:(r_d,s_d,t_1,t_0) PV:(rd,sd,t1,t0) (为4个salar随机数,对V保密), ( d ⃗ x , d ⃗ y ) (\vec d_x, \vec d_y) (d x,d y) (为2个随机数向量,对V保密),以及4个Pedersen commitments ( A d , B d , C 1 , C 0 ) (A_d,B_d,C_1,C_0) (Ad,Bd,C1,C0)(对V公开)。

2.2 b)step V → P : c h a l l e n g e V \rightarrow P: challenge VP:challenge

V → P : e V \rightarrow P: e VP:e (单个的scalar随机数)

2.3 c)step P → V : r e s p o n s e ( p r o o f ) P \rightarrow V: response(proof) PV:response(proof)

在本阶段,Prover需提供如下值:
f ⃗ x = e x ⃗ + d ⃗ x \vec f_x =e\vec x+\vec d_x f x=ex +d x
f ⃗ y = e y ⃗ + d ⃗ y \vec f_y =e\vec y+\vec d_y f y=ey +d y
r x = e r + r d r_x=er+r_d rx=er+rd
s y = e s + s d s_y=es+s_d sy=es+sd
t z = e 2 t + e t 1 + t 0 t_z=e^2t+et_1+t_0 tz=e2t+et1+t0

对于Verifier来说,仅需做如下三个验证:

  1. e C x + A d = ? r x H + f ⃗ x G ⃗ eC_x+A_d=?r_xH+\vec f_x\vec G eCx+Ad=?rxH+f xG
  2. e C y + B d = ? s y H + f ⃗ y G ⃗ eC_y+B_d=?s_yH+\vec f_y\vec G eCy+Bd=?syH+f yG
  3. t z H + ( &lt; f ⃗ x , f ⃗ y &gt; ) G = ? e 2 C z + e C 1 + C 0 t_zH+(&lt;\vec f_x,\vec f_y&gt;)G=?e^2C_z+eC_1+C_0 tzH+(<f x,f y>)G=?e2Cz+eC1+C0

证明过程如下:

  1. e C x + A d = e ( r H + x ⃗ G ⃗ ) + ( r d H + d ⃗ x G ⃗ ) = ( e r + r d ) H + ( e x ⃗ + d ⃗ x ) G ⃗ = r x H + f ⃗ x G ⃗ eC_x+A_d=e(rH+\vec x\vec G)+(r_dH+\vec d_x\vec G)=(er+r_d)H+(e\vec x+\vec d_x)\vec G=r_xH+\vec f_x\vec G eCx+Ad=e(rH+x G )+(rdH+d xG )=(er+rd)H+(ex +d x)G =rxH+f xG
  2. 同理有 e C y + B d = s y H + f ⃗ y G ⃗ eC_y+B_d=s_yH+\vec f_y\vec G eCy+Bd=syH+f yG
  3. t z H + ( &lt; f ⃗ x , f ⃗ y &gt; ) G = ( e 2 t + e t 1 + t 0 ) H + ( &lt; e x ⃗ + d ⃗ x , e y ⃗ + d ⃗ y &gt; ) G = e 2 C z + e C 1 + C 0 t_zH+(&lt;\vec f_x,\vec f_y&gt;)G=(e^2t+et_1+t_0)H+(&lt;e\vec x+\vec d_x,e\vec y+\vec d_y&gt;)G=e^2C_z+eC_1+C_0 tzH+(<f x,f y>)G=(e2t+et1+t0)H+(<ex +d x,ey +d y>)G=e2Cz+eC1+C0

由此完成整个Inner Product的零知识证明。
完整的proof信息为 ( ( A d , B d , C 1 , C 0 ) , e , ( f ⃗ x , f ⃗ y , r x , s y , t z ) ) ((A_d,B_d,C_1,C_0),e,(\vec f_x, \vec f_y, r_x,s_y,t_z)) ((Ad,Bd,C1,C0),e,(f x,f y,rx,sy,tz))

同样地,对于不honest的prover,他仍然可以伪造proof信息,使得以上的三个验证均能通过,如: ( ( A d = ( x x H + f ⃗ x G ⃗ ) − e C x , B d = ( s y H + f ⃗ y G ⃗ ) − e C y , C 1 = t 1 H + 0 G , C 0 = t z H + ( &lt; f ⃗ x , f ⃗ y &gt; ) G − e C 1 − e 2 C z ) , e , ( f ⃗ x , f ⃗ y , r x , s y , t z ) ) ((A_d=(x_xH+\vec f_x\vec G)-eC_x,B_d=(s_yH+\vec f_y\vec G)-eC_y,C_1=t_1H+0G,C_0=t_zH+(&lt;\vec f_x,\vec f_y&gt;)G-eC_1-e^2C_z),e,(\vec f_x, \vec f_y, r_x,s_y,t_z)) ((Ad=(xxH+f xG )eCx,Bd=(syH+f yG )eCy,C1=t1H+0G,C0=tzH+(<f x,f y>)GeC1e2Cz),e,(f x,f y,rx,sy,tz))

3. 更紧凑的Inner Product零知识证明

完整的proof信息为 ( ( A d , B d , C 1 , C 0 ) , e , ( f ⃗ x , f ⃗ y , r x , s y , t z ) ) ((A_d,B_d,C_1,C_0),e,(\vec f_x, \vec f_y, r_x,s_y,t_z)) ((Ad,Bd,C1,C0),e,(f x,f y,rx,sy,tz)),如何进一步减小proof呢?
答案是:使用递归!!!

使用递归可减少proof的大小,同时若基于Fiat Shamir heuristic可切换为非交互式零知识证明,可生成更紧凑的proof。

参考资料:
[1] https://joinmarket.me/static/FromZK2BPs_v1.pdf

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值