参考书籍:

  1. Boneh D, Shoup V. A graduate course in applied cryptography[J]. Recuperado de https://crypto. stanford. edu/~dabo/cryptobook/BonehShoup_0_4. pdf, 2017.
  2. Lindell Y. How to simulate it–a tutorial on the simulation proof technique[J]. Tutorials on the Foundations of Cryptography, 2017: 277-346.

Zero-Knowledge Proof

一些术语

证据(Witness):the value being proven knowledge of。仅Prover知道,不对Verifier泄露。
实例(Instance):描述关系中除witness外的所有其它元素,均统称为instance。它是公开信息,对于Prover和Verifier均已知。
证明者(Prover): the entity proving the knowledge of the witness
验证者(Verifier):the other party that the prover needs to convince of the knowledge of witness
模拟器(Simulator):提供“模拟”,它在理想世界(ideal world)中驻留,得到与真实世界(real world)相同的视图(view)分布

有效关系:令 X , Y X,Y X,Y是可有效识别有限集( efficiently recognizable finite sets),有效关系是二元关系: R ⊆ X × Y R\subseteq X \times Y RX×Y,其中 y ∈ Y y \in Y yY叫做声明(statement),如果 ( x , y ) ∈ R (x,y) \in R (x,y)R那么 x x x叫做 y y y证据(witness)

关系的语言(Language)
在这里插入图片描述

证明系统

一个证明系统,它需要满足两个条件:
1.完备性(Compeleness):语言 L L L,对于诚实的 P P P,给定公共输入 x ∈ L x \in L xL,那么 V V V需要确信 x ∈ L x \in L xL(除了可忽略的概率)
2.可靠性(Soundness):语言 L L L,对于任意的(恶意) P P P,给定公共输入 x ∉ L x \notin L x/L,那么 V V V需要相信 x ∈ L x \in L xL的概率可忽略

我们说一个证明是零知识的,如果存在一个模拟器 S S S,它可以仅根据公开信息就获得相同的验证者视图。

诚实验证者零知识(HVZK)

在这里插入图片描述

Sigma Protocol

Sigma协议

R R R是一个有效关系,那么sigma协议是关于 R R R的二元组 ( P , V ) (P,V) (P,V)
协议如下:
在这里插入图片描述
执行过程为:
在这里插入图片描述

Schnorr’s Identification Protocol

Schnorr协议是Sigma协议的实例化,基于离散对数问题。
X = Z q X=Z_q X=Zq Y = G Y=G Y=G R = { ( α , u ) ∈ X × Y ∣ g α = u } R=\{(\alpha,u) \in X \times Y | g^\alpha = u\} R={(α,u)X×Ygα=u},协议如下:
在这里插入图片描述
执行过程为:
在这里插入图片描述
首先, P P P选择一个随机数 α t \alpha_t αt,将承诺 u t u_t ut发送给 V V V。然后, V V V选择一个挑战 c c c P P P生成对这个挑战的响应 α z \alpha_z αz(随机的,与 α t \alpha_t αt相关,但是与 c c c独立)。最后, V V V验证确实满足 α z = α t + α c \alpha_z = \alpha_t + \alpha c αz=αt+αc,所以相信 P P P确实拥有 α \alpha α

协议安全性:Schnorr身份认证协议是 HVZK 的。

Zero-Knowledge Proof for 3-Coloring

方案

图的着色问题是NP问题。下面利用承诺协议,给出三着色的零知识证明方案:
在这里插入图片描述
上述协议也符合Sigma协议的范式。

安全性

由于图 G G G包含 ∣ E ∣ |E| E条边,任意不知道着色方案的PPT敌手只能随机着色,且图中至少有一条边的两个端点被分配了相同的颜色。因此重复 n ⋅ ∣ E ∣ n\cdot |E| nE次后,敌手成功的概率至多为 ( 1 − 1 ∣ E ∣ ) n ⋅ ∣ E ∣ ≤ e − n (1-\dfrac{1}{|E|})^{n\cdot |E|} \le e^{-n} (1E1)nEen,可以忽略。

然而上述证明是不够的,我们需要构建一个模拟器 S S S,它可以只根据公开信息获得相同的对话记录。模拟器构建如下:

  1. 模拟器调用验证者,猜测验证者想要请求的边,给这条边端点涂上不同色其他随意。然后发送染色的承诺。
  2. 如果猜对了,那么模拟器成功。如果猜错了,模拟器就回滚(rewinding,技术上利用虚拟机快照实现)验证者,重新猜测,直到猜对。
  3. 最终,模拟器中的验证者视图和真实世界的会话没有区别。

注意,真实世界中,证明者 P P P和验证者 V V V是独立实体,因此恶意证明者 A A A没有回滚 V V V的能力。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐