Interactive Proof
在本篇笔记中,笔者参考CS294课程详细记录了交互式证明的定义、性能等并自行补充了一些内容,主要分为以下几个部分,读者可以根据自己需要进行判断
- 交互式证明的定义、GNI的交互式证明协议、 P ⊆ P S P A C E \mathrm{P}\subseteq \mathrm{PSPACE} P⊆PSPACE
- Sumcheck协议、 c o − N P ⊆ I P \mathrm{co-NP}\subseteq \mathrm{IP} co−NP⊆IP、 P # P ⊆ I P \mathrm{P^{\#P}}\subseteq \mathrm{IP} P#P⊆IP
- QBF的定义、 P S P A C E ⊆ P \mathrm{PSPACE}\subseteq \mathrm{P} PSPACE⊆P、 TQBF ∈ P S P A C E − c o m p l e t e \text{TQBF}\in \mathrm{PSPACE-complete} TQBF∈PSPACE−complete
- Public coin、Arthur-Merlin、 G N I ∈ A M [ 2 ] \mathrm{GNI}\in \mathrm{AM[2]} GNI∈AM[2]、 I P [ k ] ∈ A M [ k + 2 ] \mathrm{IP[k]}\in \mathrm{AM[k+2]} IP[k]∈AM[k+2]
- 通信复杂度限制下的IP
- Doubly-efficient Interactive Proof
- 零知识交互式证明
Definition
我们还是首先从我们最熟悉的NP出发,NP指确定型图灵机可以在多项式时间内验证(decidable)的判定问题集合。
形式化定义如下:
L
∈
N
P
⟺
∃
polynomial-time
d
e
c
i
d
e
r
D
s.t.
(1)
∀
instance
x
∈
L
,
∃
witness
ω
D
(
x
,
ω
)
=
1
(2)
∀
instance
x
∉
L
,
∀
witness
ω
D
(
x
,
ω
)
=
0
\begin{align*} L &\in \mathrm{NP} \iff \exists \text{ polynomial-time } \mathrm{decider \,D} \text{ s.t.}\\ \text{(1) } &\forall \text{ instance } x\in L, \, \exists \text{ witness } \omega \quad D(x,\omega)=1\\ \text{(2) } &\forall \text{ instance } x\notin L, \, \forall \text{ witness } \omega \quad D(x,\omega)=0 \end{align*}
L(1) (2) ∈NP⟺∃ polynomial-time deciderD s.t.∀ instance x∈L,∃ witness ωD(x,ω)=1∀ instance x∈/L,∀ witness ωD(x,ω)=0
我们对首先仔细观察一下NP的定义,对于某一个实例(或论述,statement),我们生成一个证据(或赋值,assignment),判定者可以在多项式时间内,根据实例和证据验证实例是否属于语言
L
L
L。
这种表述与数学证明十分相似(Mathematical Proof),给定一个定理,我们生成一个证明,验证者可以十分高效的根据我们的证明判定定理是否正确。
我们可以进一步思考定义中隐含的一些信息:
- NP问题只要求给定一个证据,我们能够高效地验证证据的正确性,而不考虑获取证据的难度。因此,我们对于Prover的计算资源是没有限制的,对于Verifier的计算资源,我们要求是多项式时间的
- 由于Verifier是多项式时间的,所以证据的大小也应为多项式大小,否则仅仅是读取就已经超出了Verifier的能力。
- 在这样的证明系统中,Verifier和Prover之间没有交互,Verifier只读取了Prover给出的证据
- Verifier和Prover都没有使用Randomness,然而Randomness是一个非常强大的工具,在实际情况下这个限制貌似没有那么必要。
因此,我们可以对NP进行一些改变,提高NP的能力:
- 允许Verifier和Prover之间进行交互;
- 允许Verifier和Prover使用Randomness。
从而我们就得到了交互式证明(Interactive Proof,IP)
形式化定义如下:
语言 L L L的IP是一个二元组 ( P , V ) (P,V) (P,V) ,满足以下性质:
- 完备性(Completeness): ∀ x ∈ L , Pr r [ < P ( x ) , V ( x , r ) > = 1 ] = 1 \forall x\in L,\, \text{Pr}_r[<P(x),V(x,r)>=1]=1 ∀x∈L,Prr[<P(x),V(x,r)>=1]=1
- 稳健性(Soundness): ∀ x ∉ L , Pr r [ < P ~ , V ( x , r ) > = 1 ] ≤ 1 / 2 \forall x\notin L,\, \text{Pr}_r[<\widetilde{P},V(x,r)>=1]\leq1/2 ∀x∈/L,Prr[<P ,V(x,r)>=1]≤1/2
其中, P P P为unbounded honest Prover, V V V为efficient honest Verifier, 1 1 1和 1 / 2 1/2 1/2可以被其他值代替,允许一定的error存在,只需要完备性和稳健性之间具有明显的差别(gap)即可。
在提出IP的定义之后,我们首先想到的问题就是IP的能力相对于NP怎么样?有什么样的提升?
笔者在看到IP的定义之后想到的是一方面,IP本身就是从NP定义上拓展来的,所以IP肯定能力会比NP强,另一方面,允许一定的error存在和BPP比较类似,所以应该也会包含BPP
我们首先给出来一个非NP问题GNI的交互式证明,来熟悉一下交互式证明到底是什么样的
IP for Graph Non-Isomorphism
我们首先对**图同构问题(Graph Isomorphism,GI)**给出定义:
假设
G
0
(
V
,
E
0
)
G_0(V,E_0)
G0(V,E0)和
G
1
(
V
,
E
1
)
G_1(V,E_1)
G1(V,E1)为关于点集
V
V
V的两个图(Graph),如果存在一个置换
π
:
V
→
V
s
.
t
.
(
u
,
v
)
∈
E
0
↔
(
π
(
u
)
,
π
(
v
)
)
∈
E
1
\pi:V\rightarrow V s.t.\\ (u,v)\in E_0 \leftrightarrow (\pi(u),\pi(v))\in E_1
π:V→Vs.t.(u,v)∈E0↔(π(u),π(v))∈E1
我们有
G
0
≡
G
1
G_0\equiv G_1
G0≡G1(
G
0
G_0
G0和
G
1
G_1
G1同构),写作
G
0
=
π
(
G
1
)
G_0=\pi(G_1)
G0=π(G1)
我们定义:图同构问题 G I : = { ( G 0 , G 1 ) ∣ G 0 ≡ G 1 } \mathrm{GI}:=\{(G_0,G_1)\mid G_0\equiv G_1\} GI:={(G0,G1)∣G0≡G1},图非同构问题(Graph Non-Isomorphism,GNI) G N I : = { ( G 0 , G 1 ) ∣ G 0 ≢ G 1 } \mathrm{GNI}:=\{(G_0,G_1)\mid G_0\not\equiv G_1\} GNI:={(G0,G1)∣G0≡G1}
对于GI和GNI问题,我们有以下结论:
- G I ∈ N P \mathrm{GI}\in \mathrm{NP} GI∈NP
- G N I ∈ c o N P \mathrm{GNI}\in\mathrm{coNP} GNI∈coNP
接下来,我们通过给出GNI问题的交互式证明来说明 G N I ∈ I P \mathrm{GNI}\in\mathrm{IP} GNI∈IP:
[!NOTE]
- 我们忽略Prover生成 b ~ \widetilde{b} b 的时间
- b b b的机密性对于该协议至关重要
我们对于协议的完备性和稳健性进行分析:
Completeness: ( G 0 , G 1 ) ∈ G N I , [ G 0 ≢ G 1 ] (G_0,G_1)\in \mathrm{GNI},\, [G_0\not\equiv G_1] (G0,G1)∈GNI,[G0≡G1], G 0 , G 1 G_0,G_1 G0,G1位于不同的同构等价类,因此Prover可以轻松地区分 H H H与 G 0 , G 1 G_0,G_1 G0,G1中的哪一个同构,从而给出正确的 b ~ = b \widetilde{b}=b b =b, P r [ b ~ = b ] = 1 Pr[\widetilde{b}=b]=1 Pr[b =b]=1
Soundness: ( G 0 , G 1 ) ∉ G N I , [ G 0 ≡ G 1 ] (G_0,G_1)\notin \mathrm{GNI},\, [G_0\equiv G_1] (G0,G1)∈/GNI,[G0≡G1], G 0 , G 1 G_0,G_1 G0,G1位于同一个同构等价类,因此对于任何Prover都无法区分 H H H由 G 0 , G 1 G_0,G_1 G0,G1中的哪一个推出,在Prover看来两者是相同的,只能给出一个随机的的 b ~ \widetilde{b} b , P r [ b ~ = b ] = 1 / 2 Pr[\widetilde{b}=b]=1/2 Pr[b =b]=1/2
综上,我们给出了一个coNP问题GNI的交互式证明,在此过程中,我们也熟悉了交互式证明到底是什么样的,接下来我们将给出IP的上界
An Upper Bound on IP
我们首先给出结论: I P ⊆ P S P A C E \mathrm{IP}\subseteq \mathrm{PSPACE} IP⊆PSPACE
PSPACE是计算复杂度理论中能被确定型图灵机利用多项式空间解决的判定问题集合,包含所有能用多项式大小内存解决的问题,在PSAPCE类的问题中,你不在乎时间,只关心算法所需的内存空间。
接下来我们给出证明,这个证明十分有趣:
证明:
令 L ∈ I P {L}\in \mathrm{IP} L∈IP,且 ( P , V ) (P,V) (P,V)是一个关于 L L L的 I P \mathrm{IP} IP,我们现在需要证明 L ∈ P S P A C E L\in \mathrm{PSPACE} L∈PSPACE,我们假设具有一个实例 x x x,并且定义 q x : = max P ~ Pr r [ < P ~ , V ( x ) > = 1 ] q_x :=\max\limits_{\widetilde{\text{P}}}\text{Pr}_r[<\widetilde{\text{P}},V(x)>=1] qx:=P maxPrr[<P ,V(x)>=1],我们有
- 如果 x ∈ L x\in L x∈L,有 q x = 1 q_x=1 qx=1
- 如果 x ∉ L x\notin L x∈/L,有 q x ≤ 1 / 2 q_x\leq 1/2 qx≤1/2
现在我们可以将原有的证明 L ∈ P S P A C E L\in \mathrm{PSPACE} L∈PSPACE的问题规约为证明 q x q_x qx可以在多项式空间内运算的问题,但是仍然存在一个问题:我们不能遍历所有的Prover,因为有一些Prover并不是 P S P A C E \mathrm{PSPACE} PSPACE的。
我们考虑到由于所有的Verifier一定是 P \mathrm{P} P的,因此所有Prover与Verifier交互的transcript一定是polynomial size的(Verifier需要在polynomial time的情况下读取它),因此我们可以不考虑遍历所有的Prover,而是遍历所有的transcript。由此最优Prover就可以在 P S P A C E \mathrm{PSPACE} PSPACE下进行运算,从而 q x q_x qx也可以。
我们假设transcript可以写作元组(tuple)的形式 ( a 1 , b 1 , a 2 , b 2 , … , a i , b i ) (a_1,b_1,a_2,b_2,\dots,a_i,b_i) (a1,b1,a2,b2,…,ai,bi)
我们定义算法 P ∗ ( x , ( a 1 , b 1 , … , a i , b i ) ) P^*(x,(a_1,b_1,\dots,a_i,b_i)) P∗(x,(a1,b1,…,ai,bi))输出使得Verifier 接受概率最大的下一条消息 a i + 1 a_{i+1} ai+1,我们首先假设 P ∗ ∈ P S P A C E P^*\in \mathrm{PSPACE} P∗∈PSPACE,由此我们可以证明 q x ∈ P S P A C E q_x \in \mathrm{PSPACE} qx∈PSPACE,证明如下:
由于 P ∗ P^* P∗是使Verifier接受概率最大的算法,因此我们可以得到 q x = ∑ r ∈ R d ( x , r ) ∣ R ∣ q_x=\frac{\sum_{r\in R}d(x,r)}{|R|} qx=∣R∣∑r∈Rd(x,r),其中 d ( x , r ) d(x,r) d(x,r)为Verifier在输入为 ( x , r ) (x,r) (x,r)时,与使用 P ∗ P^* P∗的Prover交互的结果。
因为Prover为多项式空间,Verifier为多项式时间,因此对于任意一个指定的 r r r,我们可以在 P S P A C E \mathrm{PSPACE} PSPACE内计算 d ( x , r ) d(x,r) d(x,r)
综上所述,如果可以得到如果 P ∗ ∈ P S P A C E P^*\in \mathrm{PSPACE} P∗∈PSPACE,我们就得到了 q x ∈ P S P A C E q_x \in \mathrm{PSPACE} qx∈PSPACE,也就是 P ∈ P S P A C E \mathrm{P}\in \mathrm{PSPACE} P∈PSPACE
接下来,我们来证明 P ∗ ∈ P S P A C E P^*\in \mathrm{PSPACE} P∗∈PSPACE
我们定义 t r = ( a 1 , b 1 , … , a i , b i ) tr = (a_1,b_1,\dots,a_i,b_i) tr=(a1,b1,…,ai,bi)为第 i i i轮的transcript, R [ x , t r ] R[x,tr] R[x,tr]是和 ( x , t r ) (x,tr) (x,tr)保持一致的随机数 r r r的集合
R ( x , t r ) R(x,tr) R(x,tr)的意思是,在Verifier已知 ( x , t r ) (x,tr) (x,tr)的情况下,所能选取的随机数的集合,已知知识越多,可选取的随机性越小
我们通过数学归纳法证明:
-
i = k − 1 i=k-1 i=k−1
P ∗ ( x , t r ) = arg max a k E r ∈ R [ x , t r ] [ V ( x , r , a 1 , … , a k − 1 , a k ) ] P^*(x,tr)=\mathop{\arg\max}\limits_{a_k} \mathop{E}\limits_{r\in R[x,tr]}[V(x,r,a_1,\dots,a_{k-1},a_k)] P∗(x,tr)=akargmaxr∈R[x,tr]E[V(x,r,a1,…,ak−1,ak)]
我们可以在 P S P A C E \mathrm{PSPACE} PSPACE情况下,两层循环遍历所有的消息 a k a_k ak和随机数 r r r。
-
i < k − 1 i<k-1 i<k−1(假设当 ∣ t r ∣ > i |tr|>i ∣tr∣>i时, P ∗ ∈ P S P A C E P^*\in \mathrm{PSPACE} P∗∈PSPACE)
P ∗ ( x , t r ) = arg max a i + 1 E r ∈ R [ x , t r ] [ V ( x , r , a 1 , … , a : a i + 1 , a i + 2 ∗ , … , a k ∗ ) ] P^*(x,tr)=\mathop{\arg\max}\limits_{a_{i+1}} \mathop{E}\limits_{r\in R[x,tr]}[V(x,r,a_1,\dots,a:a_{i+1},a_{i+2}^*,\dots,a_k^*)] P∗(x,tr)=ai+1argmaxr∈R[x,tr]E[V(x,r,a1,…,a:ai+1,ai+2∗,…,ak∗)]
因为当 ∣ t r ∣ > i |tr|>i ∣tr∣>i时, P ∗ ∈ P S P A C E P^*\in \mathrm{PSPACE} P∗∈PSPACE,给定 a i + 1 a_{i+1} ai+1,我们可以在多项式空间内计算出 a i + 2 ∗ , b i + 2 ∗ , … , a k ∗ a_{i+2}^*,b_{i+2}^*,\dots,a_{k}^* ai+2∗,bi+2∗,…,ak∗,之后我们可以遍历 a i + 1 ∗ a_{i+1}^* ai+1∗,在多项式空间内计算出最优的 a i + 1 ∗ a_{i+1}^* ai+1∗。( P S P A C E \mathrm{PSPACE} PSPACE真是太美妙了!)
由此我们可以推导出任意情况下的 P ∗ ∈ P S P A C E P^*\in \mathrm{PSPACE} P∗∈PSPACE。
综上,我们就得到了 I P ⊆ P S P A C E \mathrm{IP}\subseteq \mathrm{PSPACE} IP⊆PSPACE,证毕
一些小思考
笔者后来又思考了一下,总觉得计算 q x q_x qx并不完全等价于 I P \mathrm{IP} IP, I P \mathrm{IP} IP的最终目的也不是计算 q x q_x qx,笔者的理解是如果 I P ⊆ P S P A C E \mathrm{IP}\subseteq\mathrm{PSPACE} IP⊆PSPACE,那么 I P \mathrm{IP} IP能做到的一些事情,在 P S P A C E \mathrm{PSPACE} PSPACE的条件下,应该也能做到。就类似于 N P ⊆ P S P A C E \mathrm{NP}\subseteq\mathrm{PSPACE} NP⊆PSPACE,多项式空间图灵机一定是能做到多项式时间图灵机所能做到的事情的(空间取为 log ∣ x ∣ \log |x| log∣x∣即可, x x x为多项式时间图灵机的输入),对于NP来说证明是十分简单的,因为NP问题从定义上来看可以只涉及到多项式时间(多项式时间内可验证,只考虑Verifier即可),然而 I P \mathrm{IP} IP涉及到交互的问题,要考虑Prover的回复,Prover是具备无限计算资源的,所以我们就要考虑如何在 P S P A C E \mathrm{PSPACE} PSPACE条件下模拟Prover的行为,通过transcript即可,对于 I P \mathrm{IP} IP中的Verifier本身就是高效的,因此我们不需要担心。
Sumcheck Protocol
Sumcheck协议可谓是交互式证明和零知识证明的基石,在本文中,笔者将无比详尽的介绍Sumcheck协议,帮助理解。
我们首先要理解Sumcheck的由来:
从前面一部分中,我们已经了解到了GNI的交互式证明方法,但是GNI并非一个coNP-complete问题。(如果GNI是coNP-complete问题,PH会collapse到2nd level)
在这一节中,我们将进一步拓展,证明$\mathrm{coNP}\subseteq \mathrm{IP} $和 P # P ⊆ I P \mathrm{P^{\#P}}\subseteq \mathrm{IP} P#P⊆IP
P # P = \mathrm{P^{\#P}}= P#P= languages decidable in polynomial time via a machine with a # S A T \mathrm{\#SAT} #SAT oracle
要证明一个复杂度类属于另一个复杂度类,我们只需要证明前者的完全问题属于后者即可,因此我们需要证明 U N S A T ∈ I P \mathrm{UNSAT}\in \mathrm{IP} UNSAT∈IP和 # S A T ∈ I P \mathrm{\#SAT}\in \mathrm{IP} #SAT∈IP。
然后这两种问题并不具备GNI问题所具备的等价类性质,无法使用之前的方法进行解决,这是我们就想用一种更通用的方法,能够证明一系列类似的问题。
我们现在唯一能够知道的就是电路对我们来说很复杂,但是我们对多项式是十分熟悉的,我们首先尝试将问题进行算术化,转化为多项式的形式。
Arithmetization of a Boolean Formula
布尔公式 ϕ ( x 1 , … , x n ) \phi(x_1,\dots,x_n) ϕ(x1,…,xn)可以被视作一个树:
- 每一个叶节点都是一个变量 x i x_i xi
- 每一个非终端节点都是其子节点的一个运算符( ∧ , ∨ , ¬ \land,\vee,\neg ∧,∨,¬)
布尔公式(电路)的算术化非常简单,总的来说就是把三种逻辑运算符用算术运算符替换:
- ¬ x ↦ 1 − x \neg x \mapsto {1-x} ¬x↦1−x
- x ∧ y ↦ x ⋅ y x\land y \mapsto x\cdot y x∧y↦x⋅y
- x ∨ y ↦ x + y x \vee y \mapsto x+y x∨y↦x+y
因此,我们可以将一个布尔公式 ϕ ( x 1 , … , x n ) \phi(x_1,\dots,x_n) ϕ(x1,…,xn)转化为一个多项式 p ( x 1 , … , x n ) p(x_1,\dots,x_n) p(x1,…,xn),且该多项式的度 deg t o t ( p ) ≤ ∣ ϕ ∣ \deg_{tot}(p)\leq |\phi| degtot(p)≤∣ϕ∣,我们可以声明一下两个性质:
- ϕ ∈ U N S A T ⇒ ∑ a 1 , … , a n ∈ { 0 , 1 } p ( a 1 , … , a n ) = 0 \phi \in \mathrm{UNSAT} \Rightarrow \sum_{a_1,\dots,a_n\in \{0,1\}}p(a_1,\dots,a_n)=0 ϕ∈UNSAT⇒∑a1,…,an∈{0,1}p(a1,…,an)=0
- ϕ ∉ U N S A T ⇒ 0 ≤ ∑ a 1 , … , a n ∈ { 0 , 1 } p ( a 1 , … , a n ) ≤ 2 n 3 m \phi \not\in \mathrm{UNSAT} \Rightarrow 0 \leq \sum_{a_1,\dots,a_n\in \{0,1\}}p(a_1,\dots,a_n) \leq 2^n3^m ϕ∈UNSAT⇒0≤∑a1,…,an∈{0,1}p(a1,…,an)≤2n3m(以3CNF表示, n n n为变量数,m为三元合取范式的数目)
我们有以下推论:
∀
prime
q
>
2
n
3
m
,
ϕ
∈
U
N
S
A
T
⇕
∑
a
1
,
…
,
a
n
∈
{
0
,
1
}
p
(
a
1
,
…
,
a
n
)
=
0
m
o
d
q
\forall \,\text{prime} \, q>2^n3^m,\phi \in \mathrm{UNSAT} \\ \Updownarrow\\ \sum_{a_1,\dots,a_n\in \{0,1\}}p(a_1,\dots,a_n)=0 \mod q
∀primeq>2n3m,ϕ∈UNSAT⇕a1,…,an∈{0,1}∑p(a1,…,an)=0modq
Sumcheck Protocol
该协议以 ℓ \ell ℓ回合进行。
- 在第1轮中, P \mathcal{P} P发送一个单变量多项式
F 1 ( x 1 ) = def ∑ b 2 , … , b ℓ ∈ { 0 , 1 } f ( x 1 , b 2 , … , b ℓ ) , F_1\left(x_1\right) \stackrel{\text { def }}{=} \sum_{b_2, \ldots, b_{\ell} \in\{0,1\}} f\left(x_1, b_2, \ldots, b_{\ell}\right), F1(x1)= def b2,…,bℓ∈{0,1}∑f(x1,b2,…,bℓ),
V \mathcal{V} V检查 H = f 1 ( 0 ) + f 1 ( 1 ) H=f_1(0)+f_1(1) H=f1(0)+f1(1)。然后 V \mathcal{V} V将随机挑战 r 1 ∈ F r_1 \in \mathbb{F} r1∈F发送到 P \mathcal{P} P。
- 在第 i i i轮中,其中 2 ≤ i ≤ ℓ − 1 , P 2 \leq i \leq \ell-1,\mathcal{P} 2≤i≤ℓ−1,P发送一个单变量多项式
F i ( x i ) = def ∑ b i + 1 , … , b ℓ ∈ { 0 , 1 } f ( r 1 , … , r i − 1 , x i , b i + 1 , … , b ℓ ) , F_i\left(x_i\right) \stackrel{\text { def }}{=} \sum_{b_{i+1}, \ldots, b_{\ell} \in\{0,1\}} f\left(r_1, \ldots, r_{i-1}, x_i, b_{i+1}, \ldots, b_{\ell}\right) \text {, } Fi(xi)= def bi+1,…,bℓ∈{0,1}∑f(r1,…,ri−1,xi,bi+1,…,bℓ),
V \mathcal{V} V检查 f i − 1 ( r i − 1 ) = f i ( 0 ) + f i ( 1 ) f_{i-1}\left(r_{i-1}\right)=f_i(0)+f_i(1) fi−1(ri−1)=fi(0)+fi(1),并发送随机挑战 r i ∈ F r_i \in \mathbb{F} ri∈F到 P \mathcal{P} P。
- 在第 ℓ \ell ℓ轮中, P \mathcal{P} P发送一个单变量多项式
F ℓ ( x ℓ ) = def f ( r 1 , r 2 , … , r l − 1 , x ℓ ) , F_{\ell}\left(x_{\ell}\right) \stackrel{\text { def }}{=} f\left(r_1, r_2, \ldots, r_{l-1}, x_{\ell}\right), Fℓ(xℓ)= def f(r1,r2,…,rl−1,xℓ),
V \mathcal{V} V检查 f ℓ − 1 ( r ℓ − 1 ) = f ℓ ( 0 ) + f ℓ ( 1 ) f_{\ell-1}\left(r_{\ell-1}\right)=f_{\ell}(0)+f_{\ell}(1) fℓ−1(rℓ−1)=fℓ(0)+fℓ(1)。验证器生成随机挑战 r ℓ ∈ F r_{\ell} \in \mathbb{F} rℓ∈F。给定Oracle,访问 f ( r 1 , r 2 , … , r ℓ ) f\left(r_1, r_2, \ldots, r_{\ell}\right) f(r1,r2,…,rℓ), V \mathcal{V} V将接受当且仅当 f ℓ ( r ℓ ) = f ( r 1 , r 2 , … , r ℓ ) f_{\ell}\left(r_{\ell}\right)=f\left(r_1, r_2, \ldots, r_{\ell}\right) fℓ(rℓ)=f(r1,r2,…,rℓ)。Oracle访问的实例化取决于Sumcheck协议的应用。
Completeness
Completeness的证明相对比较简单,如果
∑
α
1
,
…
,
α
n
∈
H
p
(
α
1
,
…
,
α
n
)
=
γ
\sum_{\alpha_1,\dots,\alpha_n\in H}p(\alpha_1,\dots,\alpha_n)=\gamma
∑α1,…,αn∈Hp(α1,…,αn)=γ,那么一定能够通过Verifier的每一次验证,即以概率为1接受。
if
∑
α
1
,
…
,
α
n
∈
H
p
(
α
1
,
…
,
α
n
)
=
γ
,
then
Pr
[
Verifier accept
]
=
1
\text{if} \,\sum_{\alpha_1,\dots,\alpha_n\in H}p(\alpha_1,\dots,\alpha_n)=\gamma,\text{then }\Pr[\text{Verifier accept}]=1
ifα1,…,αn∈H∑p(α1,…,αn)=γ,then Pr[Verifier accept]=1
Soundness
Soundness的证明相对来说就比较复杂,不过有一个直观的想法:如果恶意Prover能够骗过Verifier,那么一定是在存在某一个单变量多项式不同的情况下,使得等式成立了,也就是SZDL,我们单独对于每一个变量使用一次SZDL即可。
对于域 F \mathbb{F} F 上的每一个阶最多为 d d d 的 n n n 变元非零多项式, 对于任意有限集合 S ⊆ F S \subseteq F S⊆F ,
Pr r 1 , … , r n ← S [ f ( r 1 , … , r n ) = 0 ] ≤ d ∣ S ∣ \operatorname{Pr}_{r_1, \ldots, r_n \leftarrow S}\left[f\left(r_1, \ldots, r_n\right)=0\right] \leq \frac{d}{|S|} Prr1,…,rn←S[f(r1,…,rn)=0]≤∣S∣d
笔者最开始十分不理解为什么是每一个多项式的SZDL之和,而不是之积,毕竟每一次都要骗过Verifier才行,后来才想明白,是因为并不一定是每一个多项式都不相等,所以我们只需要单独考虑每一个多项式不相等的情况,然后逐渐往后推进,即 p 1 ≠ p 1 ∗ p_1\not=p_1^* p1=p1∗, p 2 ≠ p 2 ∗ ∣ p 1 = p 1 ∗ p_2\not=p_2^*|p_1=p_1^* p2=p2∗∣p1=p1∗就可以覆盖所有 p ≠ p ∗ p\not=p^* p=p∗,但能够欺骗Verifier的情况
接下来我们给出严谨的数学证明:
if
∑
α
1
,
…
,
α
n
∈
H
p
(
α
1
,
…
,
α
n
)
≠
γ
,
then
Pr
[
Verifier accept
]
≤
n
⋅
deg
ind
(
p
)
∣
F
∣
\text{if} \,\sum_{\alpha_1,\dots,\alpha_n\in H}p(\alpha_1,\dots,\alpha_n)\not=\gamma,\text{then }\Pr[\text{Verifier accept}]\leq \frac{n\cdot \deg_{\text{ind}}(p)}{|\mathbb{F}|}
ifα1,…,αn∈H∑p(α1,…,αn)=γ,then Pr[Verifier accept]≤∣F∣n⋅degind(p)
**Proof:**假设有一个恶意的Prover,拥有n个多项式 p ~ 1 , … , p ~ n ∈ F ( x ) \widetilde{p}_1,\dots,\widetilde{p}_n\in \mathbb{F}(x) p 1,…,p n∈F(x),并且每一个多项式 p ~ i \widetilde{p}_i p i取决于之前Verifier的消息 w 1 , … , w i − 1 ∈ F w_1,\dots,w_{i-1}\in \mathbb{F} w1,…,wi−1∈F
我们定义: ∀ i ∈ [ n ] , E i : = "event that p ~ i = p i " , W = "event that Verifier accepts" \forall i\in[n], E_i:=\text{"event that } \widetilde{p}_i=p_i\text{"},W=\text{"event that Verifier accepts"} ∀i∈[n],Ei:="event that p i=pi",W="event that Verifier accepts"
提出以下引理: For j = n , n − 1 , … , 1 Pr [ W ] ≤ ( n − j + 1 ) ⋅ deg ind ( p ) ∣ F ∣ + Pr [ W ∣ E j ∧ ⋯ ∧ E n ] \text{For } j=n,n-1,\dots,1 \,\, \Pr[W]\leq \frac{(n-j+1)\cdot\deg_{\text{ind}}(p)}{|\mathbb{F}|}+\Pr[W|E_j \land \dots\land E_n] For j=n,n−1,…,1Pr[W]≤∣F∣(n−j+1)⋅degind(p)+Pr[W∣Ej∧⋯∧En]
如果上述引理成立,我们可以轻易地证明我们的结论:我们令
j
=
1
j=1
j=1
KaTeX parse error: Undefined control sequence: \and at position 98: …race{\Pr[W|E_1 \̲a̲n̲d̲ ̲\dots\and E_n]}…
接下来我们通过数学归纳法来证明这个引理:
当
j
=
n
j=n
j=n时:
Pr
[
W
]
≤
Pr
[
W
∣
E
n
‾
]
+
Pr
[
W
∣
E
n
]
=
Pr
[
V accepts
∣
p
~
n
≢
p
n
]
+
Pr
[
W
∣
E
n
]
≤
Pr
[
p
~
n
(
w
n
)
=
p
(
w
1
,
…
,
w
n
)
∣
p
~
n
≢
p
n
]
+
Pr
[
W
∣
E
n
]
=
Pr
[
p
~
n
(
w
n
)
=
p
n
(
w
n
)
∣
p
~
n
≢
p
n
]
+
Pr
[
W
∣
E
n
]
≤
deg
ind
(
p
)
∣
F
∣
+
Pr
[
W
∣
E
n
]
\begin{align} \Pr[W]&\leq \Pr[W|\overline{E_n}]+\Pr[W|{E}_n]\\ &= \Pr[\text{V accepts }| \widetilde{p}_n \not\equiv p_n]+\Pr[W|{E}_n]\\ &\leq \Pr[\widetilde{p}_n(w_n)=p(w_1,\dots,w_n)| \widetilde{p}_n \not\equiv p_n]+\Pr[W|{E}_n]\\ &= \Pr[\widetilde{p}_n(w_n)=p_n(w_n)| \widetilde{p}_n \not\equiv p_n]+\Pr[W|{E}_n]\\ &\leq \frac{\deg_{\text{ind}}(p)}{|\mathbb{F}|} +\Pr[W|{E}_n] \end{align}
Pr[W]≤Pr[W∣En]+Pr[W∣En]=Pr[V accepts ∣p
n≡pn]+Pr[W∣En]≤Pr[p
n(wn)=p(w1,…,wn)∣p
n≡pn]+Pr[W∣En]=Pr[p
n(wn)=pn(wn)∣p
n≡pn]+Pr[W∣En]≤∣F∣degind(p)+Pr[W∣En]
假设引理在
j
∈
{
2
,
3
,
…
,
n
}
j\in \{2,3,\dots,n\}
j∈{2,3,…,n}时成立,我们在
j
−
1
j-1
j−1时也成立:
KaTeX parse error: Undefined control sequence: \and at position 92: …F}|}+\Pr[W|E_j \̲a̲n̲d̲ ̲\dots\and E_n]\…
证毕
Interactive Proof of U N S A T \mathrm{UNSAT} UNSAT
上述协议证明了$\mathrm{coNP}\subseteq \mathrm{IP} $
Arithmetization for # S A T \mathrm{\#SAT} #SAT
在上文中我们提出算术化的方法无法适用于
#
S
A
T
\mathrm{\#SAT}
#SAT问题:
∀
(
a
1
,
…
,
a
n
)
∈
{
0
,
1
}
n
,
ϕ
(
a
1
,
…
,
a
n
)
=
true
→
0
<
p
(
a
1
,
…
,
a
n
)
≤
3
m
\forall (a_1,\dots,a_n)\in \{0,1\}^n,\phi(a_1,\dots,a_n)=\text{true}\rightarrow 0<p(a_1,\dots,a_n)\leq 3^m
∀(a1,…,an)∈{0,1}n,ϕ(a1,…,an)=true→0<p(a1,…,an)≤3m
这样会导致我们无法判断满足
S
A
T
\mathrm{SAT}
SAT的具体的赋值的数量,因此我们对算术化方法进行以下更改:
- ¬ x ↦ 1 − x \neg x \mapsto {1-x} ¬x↦1−x
- x ∧ y ↦ x ⋅ y x\land y \mapsto x\cdot y x∧y↦x⋅y
- x ∨ y ↦ x + y − x ⋅ y x \vee y \mapsto x+y-x\cdot y x∨y↦x+y−x⋅y
该方法也可适用于 U N S A T \mathrm{UNSAT} UNSAT问题,但是有一个微不足道的缺点就是会引入 x y xy xy,增加多项式的次数
使用新的算术化方法,我们有:
∀
(
a
1
,
…
,
a
n
)
∈
{
0
,
1
}
n
,
ϕ
(
a
1
,
…
,
a
n
)
=
true
→
p
(
a
1
,
…
,
a
n
)
=
1
\forall (a_1,\dots,a_n)\in \{0,1\}^n,\phi(a_1,\dots,a_n)=\text{true}\rightarrow p(a_1,\dots,a_n)=1
∀(a1,…,an)∈{0,1}n,ϕ(a1,…,an)=true→p(a1,…,an)=1
接下来,我们可以将
#
S
A
T
\mathrm{\#SAT}
#SAT规约为以下Sumcheck问题:
∀
prime
q
>
2
n
,
#
ϕ
=
c
⟺
∑
(
a
1
,
…
,
a
n
)
∈
{
0
,
1
}
n
p
(
a
1
,
…
,
a
n
)
=
c
m
o
d
q
\forall \text{prime } q>2^n,\#\phi=c \Longleftrightarrow \sum_{(a_1,\dots,a_n)\in \{0,1\}^n}p(a_1,\dots,a_n)=c \mod q
∀prime q>2n,#ϕ=c⟺(a1,…,an)∈{0,1}n∑p(a1,…,an)=cmodq
Interactive Proof for # S A T \mathrm{\#SAT} #SAT
上述协议证明了$\mathrm{P^{#P}}\subseteq \mathrm{IP} $
现在基础已经十分完备了,接下来我们尝试证明 I P \mathrm{IP} IP的下界。
IP=PSPACE
与之前的方法一样,我们还是首先找到一个完全问题,之后将其算术化,最后找到一个IP协议将其解决的方式来证明 P S P A C E ⊆ I P \mathrm{PSPACE}\subseteq \mathrm{IP} PSPACE⊆IP
步骤 | last lecture | today |
---|---|---|
选择“完全”(complete)问题 | U N S A T / # S A T \mathrm{UNSAT/\#SAT} UNSAT/#SAT | T Q B F \mathrm{TQBF} TQBF |
算术化 | 归约为sumcheck问题 | 归约为sum-product问题 |
算术问题的协议 | Sumcheck协议 | Shamir’s协议 |
Quantified Boolean Formulas
完全量化的布尔公式(Fully Quantified Boolean Formulas)的逻辑表达如下:
∀
x
1
∃
x
2
∃
x
3
(
x
1
∧
x
2
)
∨
x
3
∀
x
1
∃
x
2
∀
x
3
⏟
每一个变量都通过
∀
,
∃
量化
(
x
1
∧
x
2
)
∨
x
3
⏟
布尔公式
\forall x_1 \exists x_2\exists x_3\,\, (x_1\land x_2)\vee x_3\\ \underbrace{\forall x_1 \exists x_2\forall x_3}_{\text{每一个变量都通过 }\forall,\exists\text{ 量化}} \,\, \underbrace{(x_1\land x_2)\vee x_3}_{布尔公式}
∀x1∃x2∃x3(x1∧x2)∨x3每一个变量都通过 ∀,∃ 量化
∀x1∃x2∀x3布尔公式
(x1∧x2)∨x3
Note:
N
P
∼
{
ϕ
∣
∃
x
1
∃
x
2
…
∃
x
n
,
ϕ
(
x
1
,
…
,
x
n
)
=
1
}
\mathrm{NP}\sim \{\phi|\exists x_1\exists x_2\dots\exists x_n,\phi(x_1,\dots,x_n)=1\}
NP∼{ϕ∣∃x1∃x2…∃xn,ϕ(x1,…,xn)=1}
c o N P ∼ { ϕ ∣ ∀ x 1 ∀ x 2 … ∀ x n , ϕ ( x 1 , … , x n ) ≠ 1 } \mathrm{coNP}\sim \{\phi|\forall x_1\forall x_2\dots\forall x_n,\,\phi(x_1,\dots,x_n)\not=1\} coNP∼{ϕ∣∀x1∀x2…∀xn,ϕ(x1,…,xn)=1}
T Q B F \mathrm{TQBF} TQBF即为True Quantified Boolean Formulas,即 T Q B F = { ϕ ( x 1 , … , x n ) s.t. ∀ x 1 ∃ x 2 ∀ x 3 … , ϕ ( x 1 , … , x n ) = 1 } \mathrm{TQBF}=\{\phi(x_1,\dots,x_n) \text{s.t. }\forall x_1\exists x_2\forall x_3\dots,\,\phi(x_1,\dots,x_n)=1\} TQBF={ϕ(x1,…,xn)s.t. ∀x1∃x2∀x3…,ϕ(x1,…,xn)=1}, T Q B F \mathrm{TQBF} TQBF是一个 P S P A C E \mathrm{PSPACE} PSPACE完全问题。
Arithmetization for TQBF
参考之前算术化 # S A T \mathrm{\#SAT} #SAT问题的方法,我们可以将公式和量词分别进行量化:
- 公式(formula):我们使用算术化 # S A T \mathrm{\#SAT} #SAT的方法: ϕ ( x 1 , … , x n ) ↦ p ( x 1 , … , x n ) s.t. p ∣ { 0 , 1 } n ≡ ϕ & deg ind ≤ ∣ ϕ ∣ \phi(x_1,\dots,x_n)\mapsto p(x_1,\dots,x_n) \text{ s.t. } p|{}_{\{0,1\}^n}\equiv \phi \,\&\, \deg_{\text{ind}}\leq|\phi| ϕ(x1,…,xn)↦p(x1,…,xn) s.t. p∣{0,1}n≡ϕ°ind≤∣ϕ∣
-
∀
\forall
∀ :类似于合取,
(
∀
x
i
,
ϕ
(
…
,
x
i
,
…
)
=
ϕ
(
…
,
0
,
…
)
∧
ϕ
(
…
,
1
,
…
)
(\forall x_i,\phi(\dots,x_i,\dots)=\phi(\dots,0,\dots)\land\phi(\dots,1,\dots)
(∀xi,ϕ(…,xi,…)=ϕ(…,0,…)∧ϕ(…,1,…)
- 我们定义 Π x i p ( … , x i , … ) = p ( … , 0 , … ) ⋅ p ( … , 1 , … ) \Pi_{x_i}p(\dots,x_i,\dots)=p(\dots,0,\dots)\cdot p(\dots,1,\dots) Πxip(…,xi,…)=p(…,0,…)⋅p(…,1,…)
-
∨
\vee
∨:类似于析取,
(
∃
x
i
,
ϕ
(
…
,
x
i
,
…
)
=
ϕ
(
…
,
0
,
…
)
∨
ϕ
(
…
,
1
,
…
)
(\exists x_i,\phi(\dots,x_i,\dots)=\phi(\dots,0,\dots)\vee\phi(\dots,1,\dots)
(∃xi,ϕ(…,xi,…)=ϕ(…,0,…)∨ϕ(…,1,…)
- 我们定义 ∐ x i p ( … , x i , … ) : = 1 − ( 1 − p ( … , 0 , … ) ⋅ p ( … , 1 , … ) ) \coprod_{x_i}p(\dots,x_i,\dots):=1-(1-p(\dots,0,\dots)\cdot p(\dots,1,\dots)) ∐xip(…,xi,…):=1−(1−p(…,0,…)⋅p(…,1,…))
p ∣ { 0 , 1 } n ≡ ϕ p|{}_{\{0,1\}^n}\equiv \phi p∣{0,1}n≡ϕ,并且我们得到的多项式可以扩展到任何有限域。
Degree Reduction
现在我们需要一个协议能够验证我们算术化出来的多项式,我们借鉴Sumcheck protocol的方法,每次剥离掉一个变量
p
1
(
x
1
)
=
∐
x
2
∏
x
3
p
(
x
1
,
x
2
,
…
,
x
n
)
p_1(x_1)=\coprod_{x_2}\prod_{x_3}p(x_1,x_2,\dots,x_n)
p1(x1)=x2∐x3∏p(x1,x2,…,xn)
然而,该方法也会引入一个问题,因为存在大量的合取和析取,每次都会导致多项式的次数上升,会导致最后的
p
1
p_1
p1的次数达到
2
n
−
1
2^{n-1}
2n−1,是一个无法接受的次数,如果我们想发送这个多项式,需要发送
2
n
−
1
+
1
2^{n-1}+1
2n−1+1个系数,对通信带来了巨大的开销,因此我们需要进行Degree Reduction。
每次合取或析取都会使次数翻倍,因此是 2 n − 1 2^{n-1} 2n−1
但是我们可以通过观察发现,只能取布尔值的变量有一个特点
x
n
=
x
,
x
∈
{
0
,
1
}
x^n=x,x\in\{0,1\}
xn=x,x∈{0,1},因此我们可以直接将所有的次数化为1。我们定义一个新的符号
∇
\nabla
∇
∇
x
x
n
=
x
\nabla_{x}x^n=x
∇xxn=x
因此原来的算术化多项式可以转化为:
∏
x
1
∇
x
1
∐
x
2
∇
x
1
∇
x
2
∏
x
2
∇
x
1
∇
x
2
∇
x
3
⋯
∏
x
n
∇
x
1
∇
x
2
…
∇
x
n
p
(
x
1
,
x
2
,
…
,
x
3
)
\prod_{x_1}\nabla_{x_1}\coprod_{x_2}\nabla_{x_1}\nabla_{x_2}\prod_{x_2}\nabla_{x_1}\nabla_{x_2}\nabla_{x_3}\dots\prod_{x_n}\nabla_{x_1}\nabla_{x_2}\dots\nabla_{x_n}p(x_1,x_2,\dots,x_3)
x1∏∇x1x2∐∇x1∇x2x2∏∇x1∇x2∇x3⋯xn∏∇x1∇x2…∇xnp(x1,x2,…,x3)
Shamir’s Protocol
对于
T
Q
B
F
\mathrm{TQBF}
TQBF问题,我们需要验证
∏
x
1
∇
x
1
∐
x
2
∇
x
1
∇
x
2
∏
x
2
∇
x
1
∇
x
2
∇
x
3
⋯
∏
x
n
∇
x
1
∇
x
2
…
∇
x
n
p
(
x
1
,
x
2
,
…
,
x
3
)
=
γ
\prod_{x_1}\nabla_{x_1}\coprod_{x_2}\nabla_{x_1}\nabla_{x_2}\prod_{x_2}\nabla_{x_1}\nabla_{x_2}\nabla_{x_3}\dots\prod_{x_n}\nabla_{x_1}\nabla_{x_2}\dots\nabla_{x_n}p(x_1,x_2,\dots,x_3)=\gamma
x1∏∇x1x2∐∇x1∇x2x2∏∇x1∇x2∇x3⋯xn∏∇x1∇x2…∇xnp(x1,x2,…,x3)=γ
其中共有运算符
k
=
n
+
(
1
+
n
)
∗
n
2
=
(
3
+
n
)
∗
n
2
k=n+\frac{(1+n)*n}{2}=\frac{(3+n)*n}{2}
k=n+2(1+n)∗n=2(3+n)∗n,我们每次消去一个,可以得到与Sumcheck十分相似的协议
for j=1,...,k in round j:
Prover
Verifier
O
j
…
O
k
p
=
?
γ
j
−
1
———
p
j
~
∈
F
[
x
]
⟶
i
j
∈
[
n
]
is var of
O
j
check
p
j
~
vs
γ
j
−
1
⟵
w
i
j
∈
F
[
x
]
———
w
i
j
←
F
γ
j
:
=
p
j
~
(
w
i
j
)
&
w
i
j
:
=
w
i
after k rounds, verifier check
p
(
w
1
,
w
2
,
…
,
w
n
)
=
?
γ
k
\begin{align*} &\text{for j=1,...,k in round j:}\\ &\quad\text{Prover}\quad\quad\quad\quad\quad\quad\quad\quad\quad \text{Verifier}\\ &\quad\quad\quad\quad\quad O_j\dots O_k\,p\overset{?}{=}\gamma_{j-1}\\ &\quad———\widetilde{p_j}\in\mathbb{F}[x]\longrightarrow i_j\in[n] \text{ is var of }O_j \\ &\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad \text{check }\widetilde{p_j}\text{ vs }\gamma_{j-1}\\ &\quad\longleftarrow w_{i_j}\in\mathbb{F}[x]———\quad\quad w_{i_j}\leftarrow\mathbb{F}\quad\quad\\ &\quad\quad\quad\quad\quad\quad\quad\quad\quad\gamma_{j}:=\widetilde{p_j}(w_{i_j})\,\&\,w_{i_j}:=w_i\\ &\text{after k rounds, verifier check } p(w_1,w_2,\dots,w_n)\overset{?}{=}\gamma_k\\ \end{align*}
for j=1,...,k in round j:ProverVerifierOj…Okp=?γj−1———pj
∈F[x]⟶ij∈[n] is var of Ojcheck pj
vs γj−1⟵wij∈F[x]———wij←Fγj:=pj
(wij)&wij:=wiafter k rounds, verifier check p(w1,w2,…,wn)=?γk
该协议共交互k轮,对于不同的符号有不同的check方式:
- 如果 O j = ∏ x i j O_j=\prod_{x_{i_j}} Oj=∏xij,那么验证 p j ~ ( 0 ) ⋅ p j ~ ( 1 ) = ? γ j − 1 \widetilde{p_j}(0)\cdot\widetilde{p_j}(1)\overset{?}{=}\gamma_{j-1} pj (0)⋅pj (1)=?γj−1
- 如果 O j = ∐ x i j O_j=\coprod_{x_{i_j}} Oj=∐xij,那么验证 1 − ( 1 − p j ~ ( 0 ) ) ⋅ ( 1 − p j ~ ( 1 ) ) = ? γ j − 1 1-(1-\widetilde{p_j}(0))\cdot(1-\widetilde{p_j}(1))\overset{?}{=}\gamma_{j-1} 1−(1−pj (0))⋅(1−pj (1))=?γj−1
- 如果 O j = ∇ x i j O_j=\nabla_{x_{i_j}} Oj=∇xij,那么验证 ∇ x i p j ~ ( w o l d ) = ? γ j − 1 \nabla_{x_i}\widetilde{p_j}(w^{old})\overset{?}{=}\gamma_{j-1} ∇xipj (wold)=?γj−1