TCS Lec13总结

1. 交互式证明系统 (IP)

核心思想

突破传统NP验证模型(证明者一次性发送“书面证明”,验证者确定性验证)。允许证明者(Prover, P)和验证者(Verifier, V)进行多轮交互,验证者可使用随机性。

定义 (Formal Definition)

  • 语言 AIP[]A \in \text{IP}[\ell] 当存在交互算法 (P,V)(P, V)
    • VV 为 PPT 算法(输入 xx 时运行时间 poly(x)\text{poly}(|x|))。
    • 完备性 (Completeness)

      xA:Pr[P,V(x)=1]=1(1negl(n))\forall x \in A: \quad \Pr \left[ \langle P, V \rangle(x) = 1 \right] = 1 \quad (\text{或} \geq 1 - \text{negl}(n))

    • 可靠性 (Soundness)

      xA,P:Pr[P,V(x)=1]12(negl(n))\forall x \notin A, \forall P^*: \quad \Pr \left[ \langle P^*, V \rangle(x) = 1 \right] \leq \frac{1}{2} \quad (\text{或} \leq \text{negl}(n))

    • \ell 为交互轮数(消息数)。

直观理解
传统NP验证中(如数学证明),验证者被动检查"书面证明"。但若验证者加入随机提问(如随机抽查证明步骤),并允许证明者动态回应,可处理更复杂问题——例如验证"两个图不同构"这种没有简短书面证明的问题。随机性防止证明者预计算所有答案,交互使其能动态应对验证者的挑战。

关键协议与证明

  1. BPP ⊆ IP[1] (完美完备性)
    • 构造:对 ABPPA \in \text{BPP},设 V(x,r)V(x,r) 是 BPP 验证器(错误率 1/4\leq 1/4)。
      • Prover 发送 s1,,s2m{0,1}rs_1, \dots, s_{2m} \in \{0,1\}^{|r|} 满足:

        Prr[j=12mV(x,sjr)=1]={1if xA12if xA\Pr_r \left[ \bigvee_{j=1}^{2m} V(x, s_j \oplus r) = 1 \right] = \begin{cases} 1 & \text{if } x \in A \\ \leq \frac{1}{2} & \text{if } x \notin A \end{cases}

    • 完备性:当 xAx \in A,存在 sjs_j 使析取式恒真。
    • 可靠性:当 xAx \notin A,析取式成立的概率 1/2\leq 1/2(Chernoff 界)。

设计动机
BPP问题已有高效概率算法,但需向他人"证明"答案正确。本协议巧妙转化:证明者发送一组"魔改随机数" sjs_j,使得无论验证者用哪个随机数 rr,总有一个 sjrs_j \oplus r 能通过验证。真命题时所有 rr 被覆盖;假命题时多数 rr 会失败。本质:用空间换证明,将概率验证压缩为单轮交互证明。

  1. GNI ∈ IP (图非同构)
    • 协议 (Coke vs. Pepsi)
      1. Verifier 选随机比特 b{0,1}b \leftarrow \{0,1\} 和置换 π\pi,发送 G=π(Gb)G' = \pi(G_b)
      2. Prover 计算 bb' 使得 GGbG' \sim G_{b'},发送 bb'
      3. Verifier 接受 iff b=bb' = b
    • 完备性:若 G0≁G1G_0 \not\sim G_1,Prover 可正确计算 b=bb' = b(因 supp(π(G0))supp(π(G1))=\text{supp}(\pi(G_0)) \cap \text{supp}(\pi(G_1)) = \emptyset)。
    • 可靠性:若 G0G1G_0 \sim G_1,则 π(Gb)\pi(G_b) 的分布与 bb 独立,故 Pr[b=b]=12\Pr[b' = b] = \frac{1}{2}

      Pr[accept]=Pr[b=b]=12错误率12.\Pr[\text{accept}] = \Pr[b' = b] = \frac{1}{2} \quad \Rightarrow \quad \text{错误率} \leq \frac{1}{2}.

为何随机置换图?
验证者将随机选中的图 GbG_b 用随机置换π\pi加密后发送 GG',要求证明者指认原始图。若两图不同构(如可乐与百事),GG' 必然只像其中一个,诚实证明者总能答对;若同构(如两杯可乐),GG' 可能来自任一杯,证明者只能瞎猜。核心思想:用"同构混淆"制造不确定性,区分问题答案。

  1. GNI ∈ AM (Goldwasser-Sipser 集合下界协议)
    • 定义集合 S={(H,π)HG0 或 HG1}S = \{ (H, \pi) \mid H \sim G_0 \text{ 或 } H \sim G_1 \},则:

      S={n!if G0G12n!otherwise|S| = \begin{cases} n! & \text{if } G_0 \sim G_1 \\ 2n! & \text{otherwise} \end{cases}

    • 协议
      1. Arthur 发送随机哈希 (h,y)(h, y)h:{0,1}m{0,1}kh: \{0,1\}^m \to \{0,1\}^ky{0,1}ky \leftarrow \{0,1\}^k)。
      2. Merlin 找到 xSx \in S 满足 h(x)=yh(x) = y,并发送 xx 及证明。
      3. Arthur 验证 h(x)=yh(x)=yxSx \in S
    • 完备性分析
      • S=N|S| = N(即 G0≁G1G_0 \not\sim G_1),则:

        Prh,y[xS:h(x)=y]S2kS2222kpN2k+1p3p4(p=N/2k)\Pr_{h,y} [\exists x \in S: h(x)=y] \geq \frac{|S|}{2^k} - \frac{|S|^2}{2 \cdot 2^{2k}} \geq p - \frac{N}{2^{k+1}}p \geq \frac{3p}{4} \quad (p = N/2^k)

      • S=N/2|S| = N/2(即 G0G1G_0 \sim G_1),则:

        Prh,y[xS:h(x)=y]S2k=p2\Pr_{h,y} [\exists x \in S: h(x)=y] \leq \frac{|S|}{2^k} = \frac{p}{2}

    • 区分间隙 3p4>p2\frac{3p}{4} > \frac{p}{2},故协议可靠。

2. 比特承诺 (Bit Commitment)

核心问题

如何在“先公开承诺,后揭示信息”的过程中,防止任何一方的欺诈行为?发送方希望承诺后不能反悔,接收方希望在揭示前无法窥探承诺内容。

形式化定义

  • 承诺方案 Com\mathrm{Com} 是两阶段协议:
    1. Commit 阶段:发送者输出承诺值 c=Com(x;r)c = \mathrm{Com}(x; r)
    2. Reveal 阶段:发送者输出 (x,r)(x, r),验证者检查 c=?Com(x;r)c \overset{?}{=} \mathrm{Com}(x; r)
  • 安全性质
    • 计算隐藏性 (Hiding)

      x0x1,{Com(x0)}c{Com(x1)}\forall x_0 \neq x_1, \quad \{\mathrm{Com}(x_0)\} \approx_c \{\mathrm{Com}(x_1)\}

    • 统计绑定性 (Binding)

      Pr[xx:Com(x;r)=Com(x;r)]negl(n)\Pr\left[ \exists x' \neq x: \mathrm{Com}(x; r) = \mathrm{Com}(x'; r') \right] \leq \text{negl}(n)

为何需隐藏 + 绑定?
想象"密封信封":发送者将消息封入信封(隐藏:看不见内容),接收者持有信封但发送者无法篡改内容(绑定:打开时必须是原消息)。

Naor 承诺方案 (基于 PRG)

  • 构造
    1. Receiver 发送随机 x{0,1}3nx \leftarrow \{0,1\}^{3n}
    2. Sender 选 m{0,1}m \leftarrow \{0,1\}, z{0,1}nz \leftarrow \{0,1\}^n,计算:

      y=G(z){xif m=103nif m=0y = G(z) \oplus \begin{cases} x & \text{if } m=1 \\ 0^{3n} & \text{if } m=0 \end{cases}

    发送 yy
  • 证明
    • 隐藏性:若 GG 是 PRG,则 G(z)G(z) 伪随机 y\Rightarrow y 隐藏 mm
    • 绑定性:Sender 想作弊需找到 z,zz, z' 使:

      G(z)G(z)=xG(z)G(z)=x03n=x.G(z) \oplus G(z') = x \quad \text{或} \quad G(z) \oplus G(z') = x \oplus 0^{3n} = x.

      对随机 xx,解存在的概率 22n23n=2n\leq \frac{2^{2n}}{2^{3n}} = 2^{-n}(因方程数 dom(G)2=22n\leq |\text{dom}(G)|^2 = 2^{2n})。

为何用PRG和随机串 xx
接收者先发随机串 xx(如公开信封编号),发送者用PRG生成"伪随机密钥" G(z)G(z),将 xx 与密钥异或后作为承诺值。

  • 隐藏G(z)G(z) 像真随机数,掩盖了消息 mm
  • 绑定:想作弊需找到另一密钥 G(z)G(z') 使得 G(z)G(z)=xG(z) \oplus G(z') = x,但随机 xx 几乎无解。本质:用伪随机性实现信息论安全绑定 + 计算安全隐藏。

公平抛币协议 (From Commitment)

  • 协议
    1. Alice 发送 c=Com(a;r)c = \mathrm{Com}(a; r)a{0,1}a \leftarrow \{0,1\})。
    2. Bob 发送 b{0,1}b \leftarrow \{0,1\}
    3. Alice 打开 cc 揭示 aa
    4. 输出 R=abR = a \oplus b.
  • 抗恶意 Bob

    Pr[R=0]=Pr[a=b]12+negl(n)(由隐藏性保证)\Pr[R=0] = \Pr[a = b] \leq \frac{1}{2} + \text{negl}(n) \quad (\text{由隐藏性保证})

为何Alice先承诺,Bob先亮出?
Alice用承诺锁住比特 aa(Bob无法窥探),Bob被迫先亮出 bb(此时 aa 仍隐藏),Alice再揭晓 aa。这样:

  • 恶意Bob选 bb 时不知 aa,无法控制 aba \oplus b
  • 恶意Alice虽知 bb,但承诺绑定了 aa,无法更改。核心:承诺的"延迟揭晓"特性强制双方公平。

3. 零知识证明 (ZK Proofs)

形式化定义

  • 计算零知识 (CZK):对任意 PPT VV^*,存在 PPT 模拟器 SS 使得:

    xA:{viewVP,V(x)}c{S(x)}\forall x \in A: \quad \left\{ \text{view}_{V^*}\langle P, V^* \rangle(x) \right\} \approx_c \left\{ S(x) \right\}

    其中 viewV\text{view}_{V^*} 包含消息序列和 VV^* 的随机带。

为何要求模拟器?
"不泄露知识"难直接定义。Goldwasser等提出:若能模拟出与真实对话不可区分的假对话,则真实对话必然未泄露知识(因假对话由模拟器生成,不含任何知识)。恶意验证者 VV^* 的加入确保即使对方作弊,也无法榨取额外信息。

图同构 (GRAPH-ISO) 的 PZK 协议

  • 协议
    1. Prover 发送 H=π(G0)H = \pi(G_0)π\pi 随机置换)。
    2. Verifier 发送挑战 b{0,1}b \leftarrow \{0,1\}
    3. Prover 发送 τ=πσb\tau = \pi \circ \sigma^b(其中 σ\sigma 满足 σ(G1)=G0\sigma(G_1) = G_0)。
    4. Verifier 接受 iff τ(Gb)=H\tau(G_b) = H.
  • 模拟器构造
    1. 随机选 a{0,1}a \leftarrow \{0,1\},生成 H=π(Ga)H = \pi(G_a)
    2. 运行 VV^* 输入 HH 得挑战 bb.
    3. b=ab = a,输出 (H,b,τ=π)(H, b, \tau=\pi);否则 回退重试 (Rewind)
  • 期望运行时间E[steps]=2poly(n)\mathbb{E}[\text{steps}] = 2 \cdot \text{poly}(n)(因 Pr[b=a]=12\Pr[b=a] = \frac{1}{2})。

为何随机化图 + 挑战响应?
证明者先发送 G0G_0 的随机置换版本 HH(隐藏原图结构),验证者随机要求证明 HHG0G_0G1G_1 同构。证明者用置换 τ\tau 回应。

  • 零知识:恶意 VV^* 可能故意选 bb 想套取信息(如问 HH 是否与某秘密图同构),但模拟器通过"重放"技巧:反复试错直到 VV^* 的挑战匹配预设,输出合法对话而不需知识。本质:随机化 + 重放机制"骗过"验证者。

3-染色问题的 ZK 协议 (Goldreich-Micali-Wigderson)

  • 协议
    1. Prover 对随机置换染色 ψ(v)=π(ϕ(v))\psi(v) = \pi(\phi(v)) 承诺 {cv=Com(ψ(v))}vV\{c_v = \mathrm{Com}(\psi(v))\}_{v \in V}
    2. Verifier 挑战随机边 e=(u,v)Ee = (u,v) \leftarrow E.
    3. Prover 打开 cu,cvc_u, c_v.
    4. Verifier 检查 ψ(u)ψ(v)\psi(u) \neq \psi(v) 且承诺有效。
  • 可靠性错误率:若图非 3-可染色,则:

    Pr[accept]Pr[承诺绑定失败]+Pr[未抓到非法边绑定]negl(n)+(11E)\Pr[\text{accept}] \leq \Pr[\text{承诺绑定失败}] + \Pr[\text{未抓到非法边} \mid \text{绑定}] \leq \text{negl}(n) + \left(1 - \frac{1}{|E|}\right)

  • 零知识模拟器
    1. 预选随机边 e=(u,v)Ee' = (u',v') \leftarrow E.
    2. u,vu',v' 承诺随机不同颜色 cu,cvc_{u'}, c_{v'};其余顶点承诺 00.
    3. 接收 VV^* 的挑战 e=(u,v)e = (u,v).
    4. e=ee = e',打开 cu,cvc_u, c_v;否则 回退重试
  • 混合论证 (Hybrid Argument)
    定义混合分布 H0H_0(真实协议), H1H_1(使用真染色但预选边), H2H_2(仅对挑战边承诺真染色), H3H_3(模拟器)。
    • H0H1H_0 \equiv H_1:因 ee' 独立。
    • H1cH2H_1 \approx_c H_2:由承诺的隐藏性保证(非挑战边的承诺不可区分)。
    • H2H3H_2 \equiv H_3:挑战边的颜色在随机置换下分布相同。

为何承诺所有点颜色,但只揭晓一条边?
证明者对随机染色方案承诺(隐藏真实颜色),验证者随机抽查一条边要求揭晓。

  • 真染色时边两点颜色必不同。
  • 模拟器"作弊":预判一条边 (u,v)(u',v') 承诺随机不同颜色,其余点承诺假颜色;若验证者恰好抽查该边,则过关;否则重试。关键:承诺的隐藏性掩护了非抽查点的假颜色,重放将成功概率提升至可行。

4. 关键结论与扩展

  1. 复杂度类关系
    • IP=PSPACE\text{IP} = \text{PSPACE}(Shamir 1990)。
    • 对常数 k2k \geq 2,有 IP[k]=AM[k]=AM\text{IP}[k] = \text{AM}[k] = \text{AM}(Goldwasser-Sipser)。
  2. 零知识证明的存在性
    • 若存在单向函数,则所有 NP 语言有 CZK 证明(基于承诺方案)。
    • 统计零知识 (SZK) 类包含 GNIQuadratic Residuosity 等。
  3. 现代密码学扩展
    • 公钥加密:基于陷门置换或格问题。
    • 多方计算 (MPC):Yao’s Garbled Circuit, GMW 协议。
    • 全同态加密 (FHE):Gentry 构造(基于 LWE)。

TCS Lec13总结
https://xiao-ao-jiang-hu.github.io/2025/05/28/tcs/tcs-13/
作者
wst
发布于
2025年5月28日
许可协议