零知识证明系统:知识证明的深入解析与应用
1. 知识证明有效性的讨论
在知识证明的研究中,我们可以自由使用两种有效性的表述方式。定义 4.7.2 的表述在分析知识证明作为子协议的效果时通常更为方便,而定义 4.7.3 的表述在证明给定系统是知识证明时通常更为便利。即使关系 R 不是 NP 关系,命题 4.7.4 的变体也成立。
知识证明的概念,尤其是用于形式化它的知识提取器的概念,与模拟范式相关。在某些应用中,当知识验证者确信知识证明者知道知识 K 后采取行动 A,如果证明者确实知道 K,行动 A 不会对验证者造成伤害。按照模拟范式,如果验证者确信证明者知道 K 后采取行动 A,不会造成伤害,因为在某种意义上我们可以模拟证明者确实知道 K 的情况。利用知识提取器,我们可以模拟证明者在整个交互过程(即证明过程和验证者采取的后续行动)中的视角。若证明者失败,行动 A 不会被采取,整个交互很容易模拟;若证明者成功说服验证者,我们提取相关知识 K,使得行动 A 不会造成伤害。
关于可靠性,在之前的定义中,当知识验证者对不在语言 $L_R$ 中的公共输入进行验证时,我们未对其情况做出要求。自然的要求是,对于输入 $x \notin L_R$,验证者接受的概率至多为 $\kappa(|x|)$。在许多自然情况下这是成立的,但在命题 4.7.6 的结论中不成立。
两种有效性表述的一个关键特征是,它们以“统一”的方式处理 $p(x, y, r)$ 的所有可能值。这对于大多数将知识证明用作子协议(而非最终协议)的应用至关重要。通常,在这类应用中,要求知识误差函数可忽略(甚至为零)。在这种情况下,我们需要处理所有不可忽略的 $p(x, y, r)$ 值,但事先并不知道 $p(x,