零知识证明:重要构造

news2024/12/29 10:37:33

文章目录

  • ZKP for NP
  • Blum's ZK PoK for HC
    • Completeness
    • Soundness
    • Zero Knowledge
    • WI of n-parallelized versions
    • Proof of Knowledge
    • Special Soundness
  • Constant Round ZKP
    • FLS Paradigm
    • GK Paradigm

在 零知识证明:安全定义 中介绍了 ZKP 的一些安全性定义,现在我们看一下具体构造以及它的安全性证明思路。

ZKP for NP

为了得到任意 N P NP NP 语言 L L L 的零知识证明系统,我们只需构造一个关于 N P C NPC NPC 语言的零知识证明系统(汉密尔顿图 H C HC HC 的 Blum 协议),然后将语言 L L L 归约到 H C HC HC 上即可。

有三种常见的归约方法,

在这里插入图片描述

其中 Cook 归约在安全性证明游戏中最常用。现在我们用的是 Karp-Levin 归约,将两个语言的 instance 以及对应 witness 之间做映射:

在这里插入图片描述

Blum’s ZK PoK for HC

Blum’s ZKP for HC 的思路是:为了零知识地证明 ∃ H , H ⊆ G \exists H, H \subseteq G H,HG P P P 随机选择一个图同构 π \pi π,计算出 H ′ ⊆ G ′ H' \subseteq G' HG,然后承诺 G ′ G' G,让 V V V 发起随机挑战 e e e,根据 e = 0 / 1 e=0/1 e=0/1 要么证明 G ≅ G ′ G \cong G' GG 要么证明 H ′ ⊆ G ′ H' \subseteq G' HG

在这里插入图片描述

注意,当 e = 1 e=1 e=1 时我们仅仅 Open 圈 H ′ H' H 所对应的承诺,绝对不可以 Open 整个图 G ′ G' G 并指出它的 H ′ H' H,这样的话只要 V ∗ V^* V 求解了图同构问题(我们认为 GI 应该属于 P P P)就立即获得了知识 H = π − 1 ( H ′ ) H = \pi^{-1}(H') H=π1(H)。因此,我们应当对于图 G G G 的每条边分别承诺:考虑图的邻接矩阵 [ c i j ] n × n ∈ { 0 , 1 } n × n [c_{ij}]_{n \times n} \in \{0,1\}^{n \times n} [cij]n×n{0,1}n×n,每个元素代表对应节点之间是否有边。对每个矩阵元素分别执行比特承诺。

在这里插入图片描述

当然, V V V 在检查两个图 G ′ , G G',G G,G H ′ , G ′ H',G' H,G 之间关系之前,需要先检查 Open 是否正确。承诺方案的存在性等价于零知识证明协议的存在性

Completeness

对于完备性,我们证明 ∀ G ∈ H C \forall G \in HC GHC
P r [ ⟨ P ( H ) , V ⟩ ( G ) = 1 ] = P r [ ⟨ P ( H ) , V ⟩ ( G ) = 1 , e = 0 ] + P r [ ⟨ P ( H ) , V ⟩ ( G ) = 1 , e = 1 ] = 1 2 ( P r [ G ′ = π ( G ) ∣ e = 0 ] + P r [ H ′  is a cycle ∣ e = 1 ] ) = 1 2 ( 1 + 1 ) = 1 \begin{aligned} Pr[\lang P(H),V \rang(G)=1] &= Pr[\lang P(H),V \rang(G)=1,e=0] + Pr[\lang P(H),V \rang(G)=1,e=1]\\ &= \dfrac{1}{2}(Pr[G'=\pi(G)|e=0] + Pr[H'\text{ is a cycle}|e=1])\\ &= \dfrac{1}{2}(1 + 1) = 1 \end{aligned} Pr[⟨P(H),V(G)=1]=Pr[⟨P(H),V(G)=1,e=0]+Pr[⟨P(H),V(G)=1,e=1]=21(Pr[G=π(G)e=0]+Pr[H is a cyclee=1])=21(1+1)=1

Soundness

对于可靠性,假如存在某 PTT 敌手 P ∗ P^* P,对于无限序列 { G ∉ H C : ∣ G ∣ = n } n \{G \notin HC:|G|=n\}_n {G/HC:G=n}n,使得
P r r P , r V [ ⟨ P ∗ , V ⟩ ( G ) = 1 ] ≥ 1 2 + 1 p o l y ( n ) \underset{r_P, r_V}{Pr}[\lang P^*,V \rang(G)=1] \ge \dfrac{1}{2} + \dfrac{1}{poly(n)} rP,rVPr[⟨P,V(G)=1]21+poly(n)1

那么根据数学期望,
P r r P [ r P ← R : P r r V : = e [ ⟨ P ∗ , V ⟩ ( G ) = 1 ] ≥ 1 2 + 1 2 ⋅ p o l y ( n ) ] ≥ ( 1 2 + 1 p o l y ( n ) ) − ( 1 2 + 1 2 ⋅ p o l y ( n ) ) 1 − ( 1 2 + 1 2 ⋅ p o l y ( n ) ) = 1 p o l y ( n ) − 1 \begin{aligned} &\underset{r_P}{Pr}\left[r_P \leftarrow_R: \underset{r_V:=e}{Pr}[\lang P^*,V \rang(G)=1] \ge \dfrac{1}{2} + \dfrac{1}{2 \cdot poly(n)}\right]\\ &\ge \dfrac{(\dfrac{1}{2} + \dfrac{1}{poly(n)}) - (\dfrac{1}{2} + \dfrac{1}{2 \cdot poly(n)})}{1-(\dfrac{1}{2} + \dfrac{1}{2 \cdot poly(n)})}\\ &= \dfrac{1}{poly(n)-1} \end{aligned} rPPr[rPR:rV:=ePr[⟨P,V(G)=1]21+2poly(n)1]1(21+2poly(n)1)(21+poly(n)1)(21+2poly(n)1)=poly(n)11

由于 e ∈ { 0 , 1 } e \in \{0,1\} e{0,1} 是二值的,因此存在占比 1 p o l y ( n ) − 1 \dfrac{1}{poly(n)-1} poly(n)11 的 “好” 随机带 r P r_P rP 使得无论 e = 0 / 1 e=0/1 e=0/1 都有 ⟨ P ∗ , V ⟩ ( G ) = 1 \lang P^*,V \rang(G)=1 P,V(G)=1,把它们收集到一个集合里:
S : = { r P : P r e [ ⟨ P ∗ , V ⟩ ( G ) = 1 ] = 1 } S := \{r_P: \underset{e}{Pr}[\lang P^*,V \rang(G)=1]=1\} S:={rP:ePr[⟨P,V(G)=1]=1}

于是 # S # r P ≥ 1 p o l y ( n ) − 1 \dfrac{\#S}{\#r_P} \ge \dfrac{1}{poly(n)-1} #rP#Spoly(n)11 占比显著,我们随机挑选随机带 r P ∈ S r_P \in S rPS,于是确定性图灵机 P ∗ ( r P ) P^*(r_P) P(rP) 对于挑战 e = 0 e=0 e=0 e = 1 e=1 e=1 都可以给出 accepting 的副本 ( a , 0 , z 0 ) , ( a , 1 , z 1 ) (a,0,z_0),(a,1,z_1) (a,0,z0),(a,1,z1),这就说明 G ≅ G ′ G \cong G' GG ∃ H ′ , H ′ ∈ G ′ \exists H',H' \in G' H,HG,于是 G ∈ H C G \in HC GHC 与我们的假设矛盾。

因此 soundness error 至多为 1 2 + n e g l ( n ) \dfrac{1}{2}+negl(n) 21+negl(n)

Zero Knowledge

对于零知识性,我们构造如下的模拟器:

在这里插入图片描述

首先需要证明 S i m Sim SimExpected Poly-Time 的(这一步很重要!)。 S i m Sim Sim 仅当猜错了 e e e 才执行 rewind,我们证明猜对的概率 P r [ k = e ← V ∗ ] ≥ 1 2 − n e g l ( n ) Pr[k=e \leftarrow V^*] \ge \dfrac{1}{2}-negl(n) Pr[k=eV]21negl(n) 是显著的。假设存在某个 PPT 敌手 V ∗ V^* V,对于无限序列 { G ∈ H C : ∣ G ∣ = n } n \{G \in HC:|G|=n\}_n {GHC:G=n}n S i m Sim Sim 猜对的概率仅为
P r [ k = e ← V ∗ ] ≤ 1 2 − 1 p o l y ( n ) Pr[k=e \leftarrow V^*] \le \dfrac{1}{2}-\dfrac{1}{poly(n)} Pr[k=eV]21poly(n)1

等价地,
P r [ 1 = b ← V ∗ ∣ k = 0 ] − P r [ 1 = b ← V ∗ ∣ k = 1 ] ≥ 2 p o l y ( n ) Pr[1=b \leftarrow V^*|k=0] - Pr[1=b \leftarrow V^*|k=1] \ge \dfrac{2}{poly(n)} Pr[1=bVk=0]Pr[1=bVk=1]poly(n)2

则我们可以利用 V ∗ V^* V 区分随机图 G ′ = π ( G ) G'=\pi(G) G=π(G) 和随机环图 H ′ H' H 的承诺值的能力,我们利用一系列的 Hybird 实验(按字典序依次替换 G ′ , H ′ G',H' G,H 的邻接矩阵的不同边,共 n 2 n^2 n2 个邻接矩阵 H ( i , j ) H_{(i,j)} H(i,j)),必然存在一个位置 ( i ∗ , j ∗ ) (i^*,j^*) (i,j) 使得
P r [ 1 ← V ∗ ( c ← C o m ( H ( i ∗ , j ∗ ) ) ) ] − P r [ 1 ← V ∗ ( c ← C o m ( n e x t ( H ( i ∗ , j ∗ ) ) ) ) ] ≥ 2 n 2 ⋅ p o l y ( n ) Pr[1 \leftarrow V^*(c \leftarrow Com(H_{(i^*,j^*)}))] - Pr[1 \leftarrow V^*(c \leftarrow Com(next(H_{(i^*,j^*)})))] \ge \dfrac{2}{n^2 \cdot poly(n)} Pr[1V(cCom(H(i,j)))]Pr[1V(cCom(next(H(i,j))))]n2poly(n)2

由于图 H ( i ∗ , j ∗ ) H_{(i^*,j^*)} H(i,j) n e x t ( H ( i ∗ , j ∗ ) ) next(H_{(i^*,j^*)}) next(H(i,j)) 之间仅仅在 ( i ∗ , j ∗ ) (i^*,j^*) (i,j) 位置上的消息不同,因此这就打破了比特承诺方案的 Computational Hiding 性质。与安全假设矛盾,于是 S i m Sim Sim 能够以至少 1 2 − n e g l ( n ) \dfrac{1}{2} - negl(n) 21negl(n) 的显著概率猜对。

根据 r = 1 , p = 1 2 − n e g l ( n ) r=1, p=\dfrac{1}{2} - negl(n) r=1,p=21negl(n) 的帕斯卡分布,期望的 rewind 次数为:
E ( t ) = r p = 2 + n e g l ( n ) \mathbb E(t) = \dfrac{r}{p} = 2+negl(n) E(t)=pr=2+negl(n)

这就证明了 S i m Sim Sim 期望上多项式时间内停机。

接下来,我们再证明 S i m Sim Sim 模拟出来的视图与真实的 V i e w V ∗ P ( H ) ( G ) View_{V^*}^{P(H)}(G) ViewVP(H)(G) 计算不可区分。与上边的证明类似,我们构造一系列的 Hybird 实验(按字典序依次替换 G ′ , H ′ G',H' G,H 的邻接矩阵的不同边,邻接矩阵为 H ( i , j ) H_{(i,j)} H(i,j)),它们两两之间是不可区分的,否则将打破比特承诺方案的 Computational Hiding 性质。连续多项式个计算不可区分的分布间传递,第一个 Hybrid 实验 H 1 , 1 H_{1,1} H1,1,(就是 S i m V ∗ Sim_{V^*} SimV)和最后一个 Hybrid 实验 H n + 1 , n H_{n+1,n} Hn+1,n(就是 V i e w V ∗ View_{V^*} ViewV)也是不可区分的。

因此, S i m Sim Sim 可以在期望多项式时间内模拟出计算不可区分的视图,这说明 proof 消息中包含的信息(对于 PPT 敌手来说)并不比 R L ( x , w ) = 1 R_L(x,w)=1 RL(x,w)=1 更多,这是对于 w w w 零知识的。

WI of n-parallelized versions

为了降低 soundness error,我们独立执行 n n n 个副本。为了保持 round complexity 不变,我们实行 n n n 路并行。ZK 性质不一定保持,但是 WI 性质会保持。

在这里插入图片描述

假设并行不保持 WI,那么存在某 PPT 敌手 ( V ∗ , D ) (V^*,D) (V,D),对于无限序列 { ( x , w 0 , w 1 ) : ∣ x ∣ = n , ( x , w 0 ) , ( x , w 1 ) ∈ R L } n \{(x,w_0,w_1):|x|=n,(x,w_0),(x,w_1) \in R_L\}_n {(x,w0,w1):x=n,(x,w0),(x,w1)RL}n,使得
P r [ D ( V i e w V ∗ P ( w 0 ) ( x ) ) = 1 ] − P r [ D ( V i e w V ∗ P ( w 1 ) ( x ) ) = 1 ] ≥ 1 p o l y ( n ) Pr[D(View_{V^*}^{P(w_0)}(x))=1] - Pr[D(View_{V^*}^{P(w_1)}(x))=1] \ge \dfrac{1}{poly(n)} Pr[D(ViewVP(w0)(x))=1]Pr[D(ViewVP(w1)(x))=1]poly(n)1

那么考虑 Hybrid 证明者 P i ( w 0 , w 1 ) P_i(w_0,w_1) Pi(w0,w1),它的前 i i i 个副本使用 w 1 w_1 w1,其他副本使用 w 0 w_0 w0,易知 P 0 ( w 0 , w 1 ) P_0(w_0,w_1) P0(w0,w1) 就是 P ( w 0 ) P(w_0) P(w0) P n ( w 0 , w 1 ) P_n(w_0,w_1) Pn(w0,w1) 就是 P ( w 1 ) P(w_1) P(w1)。由于 D D D 可以区分 P 0 ( w 0 , w 1 ) P_0(w_0,w_1) P0(w0,w1) P n ( w 0 , w 1 ) P_n(w_0,w_1) Pn(w0,w1),因此它必然存在位置 i ∗ i^* i,使得
P r [ D ( V i e w V ∗ P i ∗ ( w 0 , w 1 ) ( x ) ) = 1 ] − P r [ D ( V i e w V ∗ P i ∗ + 1 ( w 0 , w 1 ) ( x ) ) = 1 ] ≥ 1 n ⋅ p o l y ( n ) Pr[D(View_{V^*}^{P_{i^*}(w_0,w_1)}(x))=1] - Pr[D(View_{V^*}^{P_{i^*+1}(w_0,w_1)}(x))=1] \ge \dfrac{1}{n \cdot poly(n)} Pr[D(ViewVPi(w0,w1)(x))=1]Pr[D(ViewVPi+1(w0,w1)(x))=1]npoly(n)1

但是 V i e w V ∗ P i ∗ ( w 0 , w 1 ) ( x ) View_{V^*}^{P_{i^*}(w_0,w_1)}(x) ViewVPi(w0,w1)(x) V i e w V ∗ P i ∗ + 1 ( w 0 , w 1 ) ( x ) View_{V^*}^{P_{i^*+1}(w_0,w_1)}(x) ViewVPi+1(w0,w1)(x) 仅仅在第 i ∗ − 1 i^*-1 i1 个副本使用了不同的证据,其他相对应的副本都是同分布的。于是我们就构造出了打破原始 IP 系统的 WI 性质的 PPT 敌手,与基本假设矛盾。

Proof of Knowledge

对于知识的证明,我们构造如下的两种知识提取器:

在这里插入图片描述

一、容易看出 Initial Ext \text{Initial Ext} Initial Ext 的运行时间是 PPT 的。如果 PPT 敌手 P ∗ P^* P 使得 P r [ ⟨ P ∗ , V ⟩ ( G ) ] = p Pr[\lang P^*,V \rang(G)]=p Pr[⟨P,V(G)]=p,我们证明
P r [ Initial Ext succ ] = p 2 Pr[\text{Initial Ext succ}] = p^2 Pr[Initial Ext succ]=p2

因为 E x t Ext Ext 是对于固定的 r r r 重复了两次挑战 e , e ′ e,e' e,e,因此 P ∗ P^* P 给出 accepting 副本的概率不是独立的。对于 P ∗ P^* P 的某个随机带 r r r,我们考虑 “好” 的 V V V 的随机带的收集:
S r : = { e : ⟨ P ∗ ( r ) , V ( e ) ⟩ ( G ) = 1 } S_r := \{e: \lang P^*(r),V(e) \rang(G)=1\} Sr:={e:P(r),V(e)⟩(G)=1}

虽然 ( r , e ) , ( r , e ′ ) (r,e),(r,e') (r,e),(r,e) 不独立,但是 r , e r,e r,e 独立并且 r , e ′ r,e' r,e 独立,于是
P r r , e [ ⟨ P ∗ ( r ) , V ( e ) ⟩ ( G ) = 1 ] = ∑ r ∣ S r ∣ # ( r , e ) = ∑ r ∗ P r [ S r ∗ ] # ( r ) = p \underset{r,e}{Pr}[\lang P^*(r),V(e) \rang(G)=1] = \dfrac{\sum_r |S_r|}{\#(r,e)} = \dfrac{\sum_{r^*}Pr[S_{r^*}]}{\#(r)}= p r,ePr[⟨P(r),V(e)⟩(G)=1]=#(r,e)rSr=#(r)rPr[Sr]=p

那么,
     P r [ Initial Ext succ ] = ∑ r ∗ P r r , e , e ′ [ r = r ∗ , ⟨ P ∗ ( r ) , V ( e ) ⟩ ( G ) = 1 , ⟨ P ∗ ( r ) , V ( e ′ ) ⟩ ( G ) = 1 ] = ∑ r ∗ P r r , e , e ′ [ r = r ∗ , e ∈ S r ∗ , e ′ ∈ S r ∗ ] = ∑ r ∗ ( P r [ S r ∗ ] ) 2 # ( r ) \begin{aligned} &\ \ \ \ Pr[\text{Initial Ext succ}]\\ &= \sum_{r^*} \underset{r,e,e'}{Pr}[r=r^*, \lang P^*(r),V(e) \rang(G)=1, \lang P^*(r),V(e') \rang(G)=1]\\ &= \sum_{r^*} \underset{r,e,e'}{Pr}[r=r^*, e \in S_{r^*}, e' \in S_{r^*}]\\ &= \sum_{r^*}\dfrac{(Pr[S_{r^*}])^2}{\#(r)} \end{aligned}     Pr[Initial Ext succ]=rr,e,ePr[r=r,P(r),V(e)⟩(G)=1,P(r),V(e)⟩(G)=1]=rr,e,ePr[r=r,eSr,eSr]=r#(r)(Pr[Sr])2

利用 Cauchy 不等式 ( ∑ i a i 2 ) ( ∑ i b i 2 ) ≥ ( ∑ i a i b i ) 2 (\sum_i a_i^2)(\sum_i b_i^2) \ge (\sum_ia_ib_i)^2 (iai2)(ibi2)(iaibi)2,设 ∀ i , a i = 1 \forall i,a_i=1 i,ai=1 得到:
P r [ Initial Ext succ ] ≥ ( ∑ r ∗ P r [ S r ∗ ] ) 2 ( # ( r ) ) 2 = p 2 Pr[\text{Initial Ext succ}] \ge \dfrac{(\sum_{r^*}Pr[S_{r^*}])^2}{(\#(r))^2} = p^2 Pr[Initial Ext succ](#(r))2(rPr[Sr])2=p2

等号成立当仅当 ∀ r ∗ , P r [ S r ∗ ] \forall r^*, Pr[S_{r^*}] r,Pr[Sr] 都相等(敌手成功率 ∀ r , P r e [ ⟨ P ∗ ( r ) , V ⟩ ( G ) ] = p \forall r, \underset{e}{Pr}[\lang P^*(r),V \rang(G)]=p r,ePr[⟨P(r),V(G)]=p),而这种敌手 P ∗ P^* P 是可以存在的。

二、另一个知识提取器 E x t Ext Ext 容易看出它的成功率是 p p p(step1 以及 step 3 中独立的随机变量 ( r , e ) (r,e) (r,e) 落入 S = ⋃ r S r S=\bigcup_r S_r S=rSr 的概率),但是还需要证明它可以在期望多项式时间内结束。

我们简记 r r r 是 step 1 的随机带, e e e 是 step 3 的随机带, r ′ = e 1 ∥ ⋯ ∥ e p o l y ( n ) r'=e_1\|\cdots\|e_{poly(n)} r=e1epoly(n) 是 step 4 的随机带。我们依然针对每一个 r r r 考虑 “好” 随机带的收集,
S r : = { e : ⟨ P ∗ ( r ) , V ( e ) ⟩ ( G ) = 1 } S_r := \{e: \lang P^*(r),V(e) \rang(G)=1\} Sr:={e:P(r),V(e)⟩(G)=1}

简记 δ r = P r [ S r ∗ ] = ∣ S r ∣ / # ( r ) \delta_r = Pr[S_{r^*}] = |S_r|/\#(r) δr=Pr[Sr]=Sr∣/#(r),令 T r , e , r ′ T_{r,e,r'} Tr,e,r 是设置好三个随机带后 E x t Ext Ext 的运行时间,令 t 3 t_3 t3 表示一轮 step 3 的执行时间,则期望的运行时间为
E ( t ) = ∑ r , e , r ′ T r , e , r ′ ⋅ P r [ r ← R , e ← R , r ′ ← R ] = ∑ r P r [ r ] ⋅ ( ∑ e ∈ S r P r [ e ] ( ∑ r ′ T r , e , r ′ ⋅ P r [ r ′ ] ) + ∑ e ∉ S r P r [ e ] ( ∑ r ′ T r , e , r ′ ⋅ P r [ r ′ ] ) ) = ∑ r P r [ r ] ⋅ ( ( t 3 + t 3 δ r ) ⋅ ∑ e ∈ S r P r [ e ] + t 3 ⋅ ∑ e ∉ S r P r [ e ] ) ≤ ∑ r P r [ r ] ⋅ ( ( t 3 + t 3 δ r ) ⋅ δ r + t 3 ⋅ ( 1 − δ r ) ) = 2 ⋅ t 3 \begin{aligned} \mathbb E(t) &= \sum_{r,e,r'} T_{r,e,r'} \cdot Pr[r\leftarrow_R, e\leftarrow_R, r'\leftarrow_R]\\ &= \sum_{r} Pr[r] \cdot \left(\sum_{e \in S_r} Pr[e] \left(\sum_{r'} T_{r,e,r'} \cdot Pr[r']\right) + \sum_{e \notin S_r} Pr[e] \left(\sum_{r'} T_{r,e,r'} \cdot Pr[r']\right) \right)\\ &= \sum_{r} Pr[r] \cdot \left(\left(t_3+\dfrac{t_3}{\delta_r}\right) \cdot \sum_{e \in S_r} Pr[e] + t_3 \cdot \sum_{e \notin S_r} Pr[e]\right)\\ &\le \sum_{r} Pr[r] \cdot \left(\left(t_3+\dfrac{t_3}{\delta_r}\right) \cdot \delta_r + t_3 \cdot (1-\delta_r)\right)\\ &= 2 \cdot t_3 \end{aligned} E(t)=r,e,rTr,e,rPr[rR,eR,rR]=rPr[r] eSrPr[e](rTr,e,rPr[r])+e/SrPr[e](rTr,e,rPr[r]) =rPr[r] (t3+δrt3)eSrPr[e]+t3e/SrPr[e] rPr[r]((t3+δrt3)δr+t3(1δr))=2t3

因此这个知识提取器在期望多项式时间内结束。

但要注意的是,即使 ∣ δ − δ ′ ∣ = n e g l ( n ) |\delta-\delta'| = negl(n) δδ=negl(n),也不一定使得 δ ⋅ 1 δ ′ \delta \cdot \dfrac{1}{\delta'} δδ1 有界(可能会无穷大)。在上述的证明中,因为 r r r 固定了,因此独立随机地选取 r ′ r' r 它落在 S r S_r Sr 中的概率恰好为 δ r \delta_r δr 而没有任何损失。

Special Soundness

如果给定了两个 accepting 副本 ( a , e , z ) , ( a , e ′ , z ′ ) (a,e,z),(a,e',z') (a,e,z),(a,e,z),其中 e ≠ e ′ e \neq e' e=e,那么不失一般性地 e = 0 , e ′ = 1 e=0,e'=1 e=0,e=1,于是从 z z z 中我们获得了 G ′ ≅ G G' \cong G GG,从 z ′ z' z 中我们获取了 H ′ ⊆ G ′ H' \subseteq G' HG。只需做一个逆映射,就得到了证据 H = π − 1 ( H ′ ) ⊆ G H = \pi^{-1}(H') \subseteq G H=π1(H)G,这里的算法描述就是一个 E x t Ext Ext 的实际构造。

Constant Round ZKP

对于常数轮的 IP 系统,由于是通过 n n n 路并行来实现的 soundness error 的降低,因此在证明 ZK 性质时,按照之前的模拟思路,模拟器必须同时猜对全部的 n n n 个挑战 e ⃗ = e 1 ∥ ⋯ ∥ e n \vec e=e_1\|\cdots\|e_n e =e1en,这导致 rewinding 的次数是指数级!

有两个构造 s . e . = n e g l ( n ) s.e.=negl(n) s.e.=negl(n) 的常数轮 ZK 协议的方法:第一个是 FLS 技术 [Feige, Lapidot, Shamir, 91],第二个是 GK 技术 [Goldreich, khan, 96]。

FLS Paradigm

[FLS91] 从 [FS89] 中提取出了关键思想:在 first phase 中,使用 WI PoK,为模拟器创建一个 trapdoor,从而可证明安全

下面,我们描述下 Feige-Shamir Protocol 的工作流程。令 WIPoK 是一个并行版本的 public-coin IP 系统,它的 knowledge error 是可忽略的。令 f f f 是一个 OWF。

  1. 在第一阶段, V V V 创造一个 “或” 语言 L 2 : = { ( y 0 , y 1 ) : ∃ r b , b ∈ { 0 , 1 } , y b = f ( r b ) } L^2:=\{(y_0,y_1): \exists r_b, b \in \{0,1\}, y_b=f(r_b)\} L2:={(y0,y1):rb,b{0,1},yb=f(rb)} 的实例和证据 ( ( y 0 , y 1 ) , r b ) ((y_0,y_1),r_b) ((y0,y1),rb),接着作为证明者利用 WIPoK 向 P P P 证明自己 “知道” 证据 r b r_b rb
  2. 在第二阶段, P P P 利用 WIPoK 向 V V V 证明自己知道 ( x , y 0 , y 1 ) (x,y_0,y_1) (x,y0,y1) 三者中某一个的证据。在 Real World 中诚实的 P ( w ) P(w) P(w) 实际使用了 x x x 的证据 w w w 来执行此阶段;但在证明 ZK 性质时模拟器 S i m Sim Sim 可以作为第一阶段中的验证者(作为 P P P),通过 rewinding 提取出 V ∗ V^* V 的知识 r b r_b rb(因为是 PoK),从而在第二阶段使用这个证据来为 V ∗ V^* V 模拟出不可区分的视图(我们给 S i m Sim Sim 提供了一个 Trapdoor)。

在这里插入图片描述

FS 协议中第一阶段和第二阶段同向的消息传递可以被放在一起,因此它是

  • 4-round CZK argument under OWP:虽然此时存在 perfect-binding 的无交互承诺协议,但是由于 L 2 L^2 L2 基于 OWF 尽可以抵御 PPT 敌手,因此它不是 proof
  • 5-round CZK argument under OWF:虽然此时存在 statistical-binding 的 2-round 承诺协议,但一样由于 OWF 仅仅是 argument
  • 5-round PZK argument under DL:此时存在 perfect-hiding 的 2-round 承诺协议

FS 协议的 Completeness 是显然的。我们证明它是 argument of knowledge。构造如下的知识提取器,它与前一节中 PoK 的提取器的唯一区别就是多了 step 2 的第一阶段 WIPoK 的诚实执行。

在这里插入图片描述

首先,要证明 E x t Ext Ext 的运行时间是期望多项式的,过程与前一节的 PoK 中的第二个提取器的证明完全相同。其次,我们证明 E x t Ext Ext 有着显著的概率可以提取出知识(就是 step 3 中 e e e 落入 S r S_r Sr 的概率,其中 r r r 是随机的,于是概率就是 p p p)。

最后,我们还需要证明 E x t Ext Ext 提取出来的知识有显著概率是 x x x 的证据 w w w(如果提取出是 r b , r 1 − b r_b,r_{1-b} rb,r1b,这对于 V ∗ V^* V 来说根本不是知识)。假如提取出的证据满足 y b = f ( w ) , b ∈ { 0 , 1 } y_b = f(w),b \in \{0,1\} yb=f(w),b{0,1}(这儿符号滥用了,读者注意分辨),

  1. 假如总是有 w = r b w=r_b w=rb,这儿的 r b r_b rb E x t Ext Ext 自己持有的关于 ( y 0 , y 1 ) (y_0,y_1) (y0,y1) 的证据,那么说明 P ∗ P^* P 打破了第一阶段 PoK 的 WI 性质
  2. 假如以 1 2 + n e g l ( n ) \dfrac{1}{2}+negl(n) 21+negl(n) 的概率有 w = r 1 − b w=r_{1-b} w=r1b,那么说明 P ∗ P^* P 打破了 OWF

从而假设不成立,于是 E x t Ext Ext 提取出的证据就是 x x x 的证据 w w w(除了 n e g l ( n ) negl(n) negl(n) 的概率)。实际上针对 L 2 L^2 L2 的 WIPoK,就是一个针对 L 2 L^2 L2 上困难分布的 WHPoK,如果 P ∗ P^* P 持有了 ( y 0 , y 1 ) (y_0,y_1) (y0,y1) 的证据 r b r_b rb,这就打破了 WH 性质。

我们证明它是 zero knowledge。构造如下的模拟器,它包含了一个针对第一阶段 WIPoK 的知识提取器,通过 rewinding 抓取出陷门 r b r_b rb,然后再用这个陷门为 V ∗ V^* V 模拟出第二阶段的视图。

在这里插入图片描述

这个 S i m Sim Sim 本质上是一个 E x t Ext Ext,这与上一节中证明 ZK 性质的构造思路完全不同:那个模拟器使用 rewinding 技术直到 “猜对”(从而模拟视图与真实视图不可区分),而这个模拟器使用 rewinding 技术直到 “提取” 出陷门 r b r_b rb,接下来自然地可以给出一个第二阶段的与真实视图不可区分的模拟视图。

一样的,我们可以证明这个 S i m Sim Sim 执行时间是期望多项式的(与上一节中的 PoK 里的 E x t Ext Ext 完全相同),并证明模拟视图与真实视图不可区分(这很自然)。

GK Paradigm

Goldreich- khan 范式中,使用了两个不同的承诺协议。

  1. 用一个 Perfect Binding 承诺协议,实现一个 s . e . = n e g l ( n ) s.e.=negl(n) s.e.=negl(n) 的三轮 proof 系统
  2. 在执行 proof 之前,用一个 2-round Perfect Hiding 承诺协议(回顾下,不存在无交互的 Perfect Hiding 承诺协议),将之后要执行的随机挑战 e ⃗ \vec e e 做一个承诺

在这里插入图片描述

其 completeness 是容易证明的。由于我们使用 Perfect Binding 承诺协议实现了基础的 3-round proof 系统,因此 GS 协议自然也是个 proof with s . e . = n e g l ( n ) s.e.=negl(n) s.e.=negl(n),否则这就打破了 Perfect Binding。

对于 zero knowledge,GS 范式依然是使用通常的 “猜测” 加上 rewinding 技术,但是限制了 S i m Sim Sim 的最大执行时间(超时 abort),并且出现了 ∣ δ − δ ′ ∣ = n e g l ( n ) |\delta-\delta'|=negl(n) δδ=negl(n) 的情形(导致 δ δ ′ \dfrac{\delta}{\delta'} δδ 不一定有界)。[Goldreich, Kahan, 96] 使用了统计测试技术,来测量 δ \delta δ 的数值(原始论文我没看过,可能有说的不对的地方)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/530472.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TFT驱动ST7789使用总结

最近在使用一款TFT驱动芯片ST7789,在阅读芯片数据手册和液晶屏数据手册时,发现总是对不上,芯片手册中,有好几个引脚,一会儿是这个作用,一会儿又变成另一种作用,实在是让人感到混淆。网上找了好久…

第三十六天学习记录:C语言进阶:指针详解Ⅳ

指向函数指针数组的指针 指向函数指针数组的指针是一个指针,指针指向一个数组,数组的元素都是函数指针。 int(*pfArr[4])(int, int);//pfArr是一个数组-函数指针的数组int(*(*ppfArr)[4])(int, int) &pfArr;//ppfArr是一个数组指针,指针…

网络进阶学习:重要网络协议(tcp协议,udp协议,http协议)

重要网络协议(tcp协议,udp协议,http协议) 网络协议是什么?TCP协议UDP协议HTTP协议TCP与UDP的职能区别⭐TCP职能⭐就TCP原理层面说应该分为三部分建立连接数据传输断开连接 ⭐UDP职能⭐就UDP原理层面说应该分为三部分发送数据数据…

单链表(增、删、查、改)的详细介绍 必看!!!

文章目录 链表介绍单链表初始化单链表打印增加节点单链表的头插单链表的尾插在给定位置之后插入在给定位置之前插入 删除节点单链表的头删单链表的尾删删除给定位置之后的节点删除给定位置处的节点 查找节点修改节点单链表销毁 链表介绍 链表是一种物理存储单元上非连续、非顺序…

【Mybatis】如何实现ORM映射-二

唠嗑部分 上篇文章我们说了Mybatis基本的CRUD操作及工具类的封装,相关文章: 【Mybatis】简单入门及工具类封装-一 大家都知道,Mybatis是半自动化的ORM框架,那么它到底是如何帮我们完成ORM映射的呢? 这就是本篇文章和…

SpringBoot整合Dubbo+Zookeeper

第一步、使用IDE创建一个SpringBoot项目 第二步、启动一个Zookeeper服务(如果是第一次安装且没有配置zoo.cfg,此时会报出zookeeper服务器会提示缺少zoo.cfg文件) 在zookeeper安装目录下的conf文件夹内有一个名为zoo_sample.cfg的配置文件&a…

[深度学习思想] ControlNet 工作原理

Stable Diffusion (2021 https://arxiv.org/abs/2112.10752) 带领了vision领域,具体是AI绘画领域达到了一个新高度。但是可控性成为使用的一个大瓶颈。Controlnet (2023 https://arxiv.org/abs/2302.05543) 提出一个深度学习模型框架,很好解决这个问题&a…

Liunx基础命令 - touch命令

touch命令 – 创建空文件与修改时间戳 touch命令的功能是用于创建空文件与修改时间戳。如果文件不存在,则会创建出一个空内容的文本文件;如果文件已经存在,则会对文件的Atime(访问时间)和Ctime(修改时间&a…

带头双向循环链表(增、删 、查、改)基本操作详细介绍 必看!!!

文章目录 链表介绍链表初始化链表打印查找元素增加节点头插尾插在指定位置插入 删除节点头删尾删删除指定位置节点 链表判空获取链表中元素的个数链表销毁 链表介绍 前面说到,链表的结构一共有八种:带头单向循环链表、带头单向非循环链表、带头双向循环…

渗透测试--3.2捕获和监听网络数据

目录 1.监听捕获数据方法 2.kali监听捕获工具介绍 arpspoof driftnet 1.监听捕获数据方法 渗透测试中,捕获和监听网络数据是非常重要的一项任务,可以帮助我们发现潜在的漏洞和攻击面。以下是一些常见的捕获和监听网络数据的方法: 抓包工…

Liunx基础命令 - cp复制命令

cp命令 – 复制文件或目录 cp命令来自英文单词“copy”的缩写,中文译为“复制”,其功能是用于复制文件或目录。cp命令能够将一个或多个文件或目录复制到指定位置,亦常用于文件的备份工作。-r参数用于递归操作,复制目录时若忘记添…

网络编程——UDP编程

UDP编程 UDP编程步骤通信流程serverclient 函数接口socketbindrecvfromsendto 举例UDP客户端UDP服务器 UDP编程步骤 在C语言中进行UDP编程的一般步骤如下: (1)包含头文件: 在代码中包含必要的头文件,以便使用UDP编程所…

借助国内ChatGPT平替+剪映/百度AIGC平台快速制作短视频

系列文章目录 借助国内ChatGPT平替MindShow,飞速制作PPT 借助国内ChatGPT平替markmap/Xmind飞速生成思维导图 文章目录 系列文章目录前言一、科大讯飞“星火”认知大模型二、使用步骤1.借助讯飞星火生成短视频的文案2.选择剪映生成短视频3.选择百度AIGC平台生成短…

redis复制机制

文章目录 1. Redis 复制机制2. 基本命令3. 修改配置文件4. 代码案例4.1 一主二仆4.2 薪火相传4.3 反客为主 5. Redis复制工作流程6. Redis 复制的缺点 1. Redis 复制机制 概念 : Redis 复制机制 能干的活 : 读写分离 : 写 就找 主机 master , 读就找从机…

Centos7离线安装Docker

在我们部署Docker镜像时,难免会遇到服务器没有网络情况,这时候我们就需要离线安装Docker 参考文档:https://docs.docker.com/engine/install/binaries 下载Docker安装包 下载地址:https://download.docker.com/linux/static/st…

玩转Google开源C++单元测试框架Google Test系列(gtest)之六 - 运行参数

一、前言 使用gtest编写的测试案例通常本身就是一个可执行文件,因此运行起来非常方便。同时,gtest也为我们提供了一系列的运行参数(环境变量、命令行参数或代码里指定),使得我们可以对案例的执行进行一些有效的控制。…

OpenCL编程指南-4.3类型转换

隐式类型转换 隐式类型转换是一种自动的类型转换,只要混合使用不同的类型,编译器就会完成这种隐式类型转换。这里支持表4-1中定义的标量类型(除void、double和half以外)的隐式转换。完成隐式转换时,并不只是重新解释一…

c/c++中的数据内存分布

c/c中的数据内存分布 1. C/C内存分布2. C语言中动态内存管理方式3. C中动态内存管理4. operator new与operator delete函数5. new和delete的实现原理6. malloc/free和new/delete的区别7.内存泄漏**什么是内存泄漏,内存泄漏的危害****内存泄漏分类(了解&a…

练习时长两年半的扫雷

目录 设计思路 游戏运行效果 函数的声明 头文件game.h 游戏主体(源文件) 1.game.c 2.test.c 各文件的阐述 各部分设计心得 1.打印菜单 2.初始化雷池 3.打印雷池以及玩家界面 打印效果 如何改变雷的数量与雷池大小 4.生成随机雷 5.排雷与对局判断 对于越界的看法 设计…

Pruning 系列 (五)Dropout、Dropconnect剪枝

环境 python 3.9numpy 1.24.1pytorch 2.0.0+cu117一、Dropout dropout在全连接层使用。 假设丢弃概率是P,有两种实现方式,不管是在《测试阶段》还是《训练阶段》对每层的输出做缩放,都是为了保持伯努利分布的期望np。《测试阶段》没dropout 而是全量神经元参与运算,不然预…