Lecture 1.1: Introduction to Zero Knowledge

2019年BIU密码学冬令营Zero Knowledge, lecture by Alon Rosen recorded by Yu-sheng Zhao

Lecture 1.1: Introduction to Zero KnowledgeZero-knowledge proofsZK的一个经典例子: 如何让色盲相信两个小球的颜色不同(color non-blindness)ZK的初步应用WHY zero-knowledge?Proof Systemproof(证明)的定义/意味Proof Systems(证明系统)证明系统的定义NP证明系统例子1:布尔可满足性(Boolean Satisfiability)例子2:线性方程组的求解(Linear Equations)P类问题例子3:二次剩余问题(Quadratic Residuosity)

Zero-knowledge proofs

下列粗犷的给出了零知识证明的定义

ZKP可以表示为两个实体之间的互动(an interaction between the two entities)

ZKP的非互动的形式:

If proposition is true,any might as well have generated(simulated) the interaction on his own

任一都可以和自己进行交互,从而获得某一真(true)断言。(没有从互动中学习到任何额外的信息)

ZKP的高明之处在于通过定义“zero knowledge”,回避了“what is knowledge?”这个问题,后者显而易见是一个不好回答的哲学问题。zero knowledge的定义可以表述为:it means for knowledge not to be leaked without defining what knowledge is(没有知识的定义就没有知识的泄露)

ZK的一个经典例子: 如何让色盲相信两个小球的颜色不同(color non-blindness)

验证方即色盲,证明方试图说服其手上的两个球颜色是不同的。假设左右手分别持有绿色球和红色球:

image-20220722164617434

每次交互,选择是否交换(swap)手中的球,然后询问是否交换

image-20220722164803036

如果完全信任的回复,则理想状态下每次都能回复正确答案。

image-20220722164959308

证明方告知验证方轮询结果,这也是交互过程的一部分。在这个过程中每一次质询反馈结果验证方都能即时判断证明方回答是否正确。

image-20220722165206932

通常情况下,不应当信任。即假设的回答是随机的,每一轮质询都有概率回答正确。经过轮质询后,回答正确的概率等于,当质询次数足够多,证明方每次都猜对,的置信度趋近于1,这时可以完成针对该断言的零知识证明。在整个过程中,证明方未向验证方透露出除该断言判断(是否交换)以外的信息。

的视角:a random bit that equals his “swap or not” bit——通过随机选择比特位(0 or 1)来自行模拟该过程

ZK的初步应用

ZK可以证实我所知晓的一个secret而不暴露(reveal)它。它可以用于以下两个方面:

如果我们的视野够长远,所有application的knowledge都fall into在整个框架中。我们可以从一个假设:“我们有一个trusted party”出发,去构建一个比零知识更普适的通用密码学框架,其能够执行所有我们预设的操作,然后基于ZK来获取一个完整的加密协议。总而言之,ZK可以让我们从一个信任的环境走向(更广阔的)不信任的环境。

trusted party
protocol

WHY zero-knowledge?

综上所述,ZK非常简洁,不仅足够inclusive,而且也展示了ZK的可行性(feasibility)。同时,ZK可以表达“零知识”,即“things are impossible is knowledge”,也将会贯彻到(carry through)Crypto Dust。

迷糊 解释Crypto Dust待拔草

ZK虽然处于一种Right level of abstraction,但并不像图灵机,它仅仅是一种手段(mean to an end),只是一个工具(tool),它也有无能为力的时候。There is nothing holy about ZERO!:)

Proof System

proof(证明)的定义/意味

proof是一种建立真相(truth)的方法(methods)。证明或者这种方法具体的意味取决于证明所使用的环境。

proof可以是(e.g.)法律、权威、科学方法、哲学方法、数学方法…

image-20220814130533363

上图描述了一个经典的论证过程:从公理出发,经过一系列推导验证,得到一个命题,这个命题往往非真即假。为了不从正确的假设推导出错误的断言,我们在证明的概念增加了两个要素:probabilistic以及interactive

Proof Systems(证明系统)

给出一例子:在特定环境下,证明一些输入或实例行为()属于一种语言()。形式化描述如下

image-20220814131708706

在这个过程中,证明者无关紧要,而验证者(verifier)则是证明过程中最重要的实体(entity),这条结论同样适用于设计并实现协议的个体。如果从证据的可靠性出发,这条结论也是显而易见的。

证明系统的定义

我们给定表示所有字符串行为的集合,验证者给定,经过证明系统(一系列操作抑或证明方法)得出输出,要求该输出为真(即accept)。我们可以记作

抽象化以上过程,我们给出对于中所有成员的证明系统是一个算法使得对任意的成员(或断言),满足

以上是证明(proof)的两个主要性质。

NP证明系统

观点:只在我们有生之年可以被验证的断言是有价值/意义的

因此,一个有效的验证(efficient verification)等价于一个可以在多项式时间内完成的验证(poly-time verification)。显然地,时间复杂度越低,验证效率越高。

image-20220814214938299

给出NP证明系统的定义如下:

我们给出对于中所有成员的NP证明系统是一个算法使得对任意的成员(或断言),满足

关于第三条性质,附加一些解释:算法的运行时间由(即的尺寸)来衡量;满足,其中为常数,不随变化而变化;证明方法的尺寸应当等于多项式时间。综上,相比证明系统的定义,NP证明系统的定义更强,给出了在算法效率方面的限制。

例子1:布尔可满足性(Boolean Satisfiability)

布尔可满足性:对于某个布尔公式,是否存在一组布尔值的输入,使得这个布尔公式的结果为 True。如果存在,则称这个布尔公式为布尔可满足的。

是布尔可满足公式的集合,表示为。那么如何证明该集合是合法的呢?只需要将赋值发送给验证者,然后验证者将公式代入值,对其进行评估,判断结果是真或假。

image-20220814211144057

只有有证据(witness),验证方就可以轻易验证该证明。

例子2:线性方程组的求解(Linear Equations)

是在上有解的线性方程组的集合,记作。类似例子1,发送一个解给验证方,然后做矩阵向量乘法看看其是否满足线性方程组。

image-20220814214731917

P类问题

如上所述,我们用多项式时间(poly-time)复杂度的算法来确定该算法的高效程度,即

P问题的定义:在多项式时间(poly-time)复杂度的算法下,有,使得

 

image-20220815000728387

如上图所示,例子1中的问题,例子2的是一个问题

涉及到三类问题:P、NP、NPC这三者的定义和区别👇

Alon这里也提及了BPP类问题,这是一类在多项式时间内被概率图灵机(即概率的多项式时间「probabilistic poly-time (𝑃𝑃𝑇) 」算法)解出的问题,并且对所有的输入,输出结果有错误的概率差不多是1/3。P类问题是错误概率为0时的BPP类问题。BBP类问题当作是P类问题的概率化扩展。以下例子3就是一类BPP问题。

例子3:二次剩余问题(Quadratic Residuosity)

是模的二次剩余类的集合,记作。需证明问题如下

image-20220815004638740

这是一个NP问题,我们只需要发送平方根给验证者,让其验证

 

image-20220815005346493

 

 

 

 

 

 

第一节听的稀里糊涂的::😔

 

 

name