01. Introdunction to Zero Knowlege -- Alon Rosen[零知识介绍]

这节博客主要是对零知识证明(Zero-Knowledge)的介绍,内容按如下的部分展开。

01. Introduction to zero Knowledge【零知识简介】

这篇博客,是关于第九届BIU密码学冬令营上的内容,这篇博客是开篇,会持续更新。
可以在我之前的这篇博客中,去寻找一些关于其它知识点的博客,这篇博客是我整个内容的目录博客,如果有其它内容的需要,可以去翻阅,下面是博客地址。https://blog.csdn.net/qq_43479839/article/details/112946344
目录如下:

1、 zero-knowledge proofs

    零知识证明:它是指证明者prover能够在不向验证者verifier提供任何有用的信息的情况下,使验证者相信某个论断是正确的。
    零知识证明实质上是一种涉及俩方或更多方的协议,即俩方或更多方完成一项任务所需要采取的一系列步骤。零知识证明必须包括两个方面,一方位Prover证明者P,另一方为验证者V。证明者试图向验证者证明某个论断是正确的,或者证明者拥有某个知识,却不向验证者透露任何有用的消息。
【这部分有关零知识证明的介绍在很多地方都有描述,但是这里还是给予概括性的语言描述。】

在这里插入图片描述
    零知识有什么好处?

  • 能证明我知道一个秘密,但是却不揭露任何关于这个秘密的信息。

  • 身份认证:【扩展理解】
    在这里插入图片描述

  • 协议的设计: 1、能够针对遵循指示的当事人进行设计。2、使用ZK证明可以促成一些诚实的行为。
    (能够将可信任的第三方 变为协议。)

在这里插入图片描述
为什么要用零知识?
1、因为它是一个很好的定义的框架,是很多协议设计和分析的核心;给了很多关键的概念和想法。2、是一个很好的抽象level,很容易去学,具有灵活性以及限制。
ZK只是一种达到目的的方法:ZK is just a means to an end.
在这里插入图片描述

2、Proof Systems【证明系统】

传统的数学证明是严谨的、要么使用不证自明的陈述,要么使用事先验证的证明。
其中在我之前的博客中有说,关于language L的概念,如果不知道可以去之前的博客去翻阅。language L是正确的statement y的集合;在这里很多概念会直接使用。https://blog.csdn.net/qq_43479839/article/details/112986815
在这里插入图片描述
下面给出我们这里的零知识中的证明系统;但是我感觉下面的我觉得挺奇怪的。
其中:completeness(完备性):statement x声明
Soundness(可靠性);
在这里插入图片描述
在这里插入图片描述

2.1 NP证明系统:

在介绍NP证明系统之前,考虑一下P问题、NP问题、NP完全问题和NP难问题;在这篇博主的博客中有比较详细的介绍和比较,这里我只选取里面的部分概念。
https://blog.csdn.net/qq_21768483/article/details/80430590
P类问题:存在多项式时间算法的问题。(P:polynomial,多项式)
NP类问题:NP(Nondeterministic Polynomially,非确定性多项式)类问题是指一个复杂问题不能确定是否在多项式时间内找到答案,但是可以在多项式时间内验证答案是否正确。
在这里插入图片描述
NPC问题:(NP完全问题)NP中的某些问题的复杂性与整个类的复杂性相关联.这些问题中任何一个如果存在多项式时间的算法,那么所有NP问题都是多项式时间可解的.这些问题被称为NP-完全问题(NPC问题)。
在这里插入图片描述

在这里插入图片描述
Boolean Satisfiability【布尔可满足性问题SAT】
百度百科可查。不赘述,总之这个问题,很容易验证下面Φ(w)=1,但是很难真正把其中的wi都计算出来。
在这里插入图片描述
**SAT是一个NPC问题,**每一个属于NP的都可以归纳到SAT问题上。
在这里插入图片描述
线性等式:P问题,容易计算。
Structured:是一个结构化的问题。
在这里插入图片描述
the Class P:P类问题
poly-time(多项式时间)
P类问题:在多项式时间下有解。
NP类问题:在多项式时间下不能确定能找到答案,但可验证。
NPC类问题:NP类问题都可以归约到一个NPC类问题。
在这里插入图片描述
二次剩余Quadratic Residuosity
是一个NP问题,在多项式时间内不一定能解出来,但是一定能在多项式时间内能验证。
在这里插入图片描述
总结
有效的验证者 等价于 多项式时间的验证者,下面说明如果是下面的问题,则都是可以在多项式时间下可验证的问题,即说明是有效的验证。
在这里插入图片描述
证明非成员
用第三个为例:x不属于模N的二次剩余中的元素,则没有任何的wi能将其下面的式子验证通过,即x不是任意元素wi模N的二次剩余;
即没有任何witness能与之对应,即这个x∉QR_N;
在这里插入图片描述

3、交互证明Interactive Proof

3.1 对于二次非剩余的交互证明:

在这个里面,我只详细说明,首先是因为这和我之前介绍的不一样,不是先给出Relation,然后向后走;其次因为这个不是经典的交互式证明,不是我之前经常给出的(t,c,z)这样的交互对话。
1、首先我们要先说明这整个交互是在干什么?要解决什么问题,然后再向后展开,很显然是在这中间statement x不属于二次剩余这个声明,属于(P,V)的公共输入;之后证明者P要向V证明他知道这个x不属于QR_N的证明过程
2、之后就展开了后面的过程,这下面所显示的,很显然和我之前所给出的经典交互系统有一点区别,这里相当于直接由V给出了challange c的东西;
这里说一下这个过程,由于P想告诉V他知道x不属于QR的证明过程,但是又不能将这个证明过程告诉V,所以用下面的方式让V相信P知道;就是下面的过程;V随机选择的过程是为了让P不能提前准备答案,这样就不可信了;

  • V随机选择b和y,可知y是二次剩余的。将选择的b和y发送给P
  • 如果P知道x不属于QR_N的证明过程的话,就可以知道z是否是QR_N;然后根据z回复b’给V;
  • 然后V进行验证b’=b;

3、Completeness(完备性):
4、Soudness(可靠性):是说如果P不知道x不属于QR_N的证明过程,但是P还是通过随便猜而给出一个结果,则诚实的验证者每轮拒绝的概率为1/2;
在这里插入图片描述
交互证明
V is PPT(probabilistic polynomial time)
其中,x属于L,是对于(P,V)公共的输入,是其中的一个声明statement;
在这里插入图片描述
在这里插入图片描述

3.2 Interactive Proof Systems交互证明系统

交互证明系统的定义:一个对于L【L是正确的statement的集合】的交互证明系统是,PPT[probabilistic poly-time概率性并且多项式时间]算法V和一个函数P对于所有的x:满足下面的性质:
1)Completeness【完备性】:对于任何公共输入x∈L,即对于正确的声明(statement),(P,V)接受x的概率是大于2/3。
2)Soundness【可靠性】:对于所有公共输入x∉L,和不论是任意无限计算能力的证明者P* 还是任意的多项式时间计算能力P*,验证者V接受(P*,V)(x)的概率不大于1/3。
关于BPP(Bounded-error Probabilistic Polynomial time)的介绍:
BPP内容来自博客:https://blog.csdn.net/dadongwudi/article/details/107395174

  • P 是一类能在多项式时间内被可确定的图灵机判定的问题.
  • NP是一类能在多项式时间内被非确定的图灵机判定的问题.
  • BPP(Bounded-error Probabilistic Polynomial time)是一类在多项式时间内被**概率图灵机(probabilistic turing machine)**解出的问题,并且对所有的输入,输出结果有错误的概率在1/3之内.
  • P类问题是BPP类问题的特例,错误概率为0;
    概率图灵机(probabilistic turing machine) 概念:
    在这里插入图片描述
    BPP的定义:注意这个错误概率能在0到1/2之间的任何值,因为一个被叫做扩增定理(amplification lemma)。
    在这里插入图片描述
    completeness=c(|x|):其中这个2/3只要大于1/2即可,soundness=s(|x|)中只需要小于1/2;在多次n交互后,completeness会趋近于1.
    其中NP问题是一个很特殊的例子,其完备性c(|x|)=1,但s(|x|)=0;
    在这里插入图片描述
3.3 The Power of IP:交互证明的能力

IP 在多项式时间内可验证。
在这里插入图片描述
交互证明的Power:
1、一个命题:
在这里插入图片描述
为什么说这个命题∈IP。首先对于非二次剩余这个NP证明不是self-evident,即需要交互。也给出进一步推理说,NP包含于IP中;然后。。
在这里插入图片描述
在这里插入图片描述
在维基百科中对PSPACE(polynomial space)的解释:
In computational complexity theory, PSPACE is the set of all decision problems that can be solved by a Turing machine using a polynomial amount of space

4、Zero-Knowledge【零知识】

零知识证明协议:除了公共输入的信息之外,不希望泄露任何信息;这里有一点值得注意,不是泄露witness的信息,这个千万不要混淆。【因为有可能在这个协议开始之前这个witness就有可能泄露了】,这个协议主要是为了不希望Verifier在经过交互之后不汲取额外任何的信息,而不只是witness,这是为了保护Prover,因为它不希望泄露希望任何信息给Verifier;–>这是零知识性
soundness是为了保护Verifier,因为确定Prover有这个witness,不能让Prover给欺骗l了。

在开始介绍零知识之前,我们给出一个假设:一个证明的确泄露了信息。在下面的证明当中,给出的声明statemet是x是模N上的二次剩余;现在要向V证明我们确实知道x∈QR_N【二次剩余问题是NP问题】;所以我们给出其对应的w【是关键信息】,
下面给出产生π花费的时间以及验证花费的时间。
当V看到所给出的π之后,V会知道一些东西;但是V可能还是不能自己找出一个w。
在这里插入图片描述

4.1 定义“没有知识泄露”:–> zk的定义

保证知识不泄露可以做的一些努力:

  • V不知道w。
  • V不知道关于w的任何符号
  • V不知道关于w的任何信息
  • V不知道任何信息(除了x∈L)
    给出零知识zk的定义:即不需要信息本身的条件下,仍可以证明信息存在。即相当于一个Simulator
    在这里插入图片描述
    到目前零知识:
    在V的视角来看=V随机选择coins、然后根据随机选择而收到其对应的信息;
    即对于任何x∈L,在V看来都能被有效的模仿。
    这意味着什么?
    在哲学来看:V给了信息x∈L之后,V可以很好的与自己交互。
    在技术上来看:V(view)等价于V(simulation);即对于与P交互的对话,V可以自己模拟,任何与自己进行交互。
    在这里插入图片描述
    在这里插入图片描述
4.2 HVZK:诚实的验证者的ZK

在这里插入图片描述
即HVZK只能模拟出P与V之间真实的对话。即HVZK中的Sim的输出与(P,V)之前的输出分布是相同的。
在这里插入图片描述

在这里插入图片描述

4.3 零知识证明定义

交互式零知识证明中有一个很经典的思想,就是允许犯错,然后这个错可能比较小,然后通过很多次的交互,使得这个犯错的概率在多次交互下成指数级的缩小。
在这里插入图片描述

对于QR_N的零知识证明
这个和之前交互证明那里有点不一样,因为之前并不用保证零知识,所以V是知道x=w^2 mod N这个式子的;
给出这个零知识证明的前提:x∈QR_N是公共输入,也是statement;即Prover要向V证明自己知道x是QR_N;但是不能告诉V任何关于x的其他信息,也就是说x=w^2 mod N这个式子是不想让V知道的;可以看出下面是传统的交互模型(t,c,z),这里不过多赘述;自己验算completeness和soundness。
在这里插入图片描述
在这里插入图片描述

4.4 Simulating V’s view

下面simulator的过程是清楚,HVZK就是有一个Sim,这里不在赘述。
在这里插入图片描述
对于一个恶意的验证者V*:按照下面的,多次重复simulator的过程,知道与原本交互的分布一致就行。
在这里插入图片描述

4.5 :computationsl ZK、statistical ZK、PZK(perfect Zero-knowledge)

在这里插入图片描述
在这里插入图片描述
零知识性能防止证明者向验证者泄露不必要的信息,PZK中,Sim模拟器输出的分布与<P,V*>(x)之前的关系是同分布的。PZK能抵御恶意的验证者。
在这里插入图片描述

增强可靠性
1、Sequentially Repeat,下面这个是串行重复,串行会造成轮数的增加。
keep state of partial view:保存他们目前所产生的状态,
由于预期的线性性,其预期运行时间=V的预期运行时间的俩倍。
在多次的重复的情况下,QR这个问题的soundness会降到error【误差】为下面的误差值。但是这个是以多轮互动为代价的。
在这里插入图片描述

2、Parallel repetition:并行重复【增强可靠性soundness】
这里有一个关于如何提高它们自身复杂性的想法;下面你确实增加了K倍的通信复杂度。
但是现在有一个问题;问题是:当你想要提前去猜测由验证者引发的挑战c这时就不在是只成功地猜测一个bit。
在这时,我们预测了这个试着提前去猜测c的模拟器的运行时间,运行时间如下:
在这里插入图片描述

5、Auxiliary input and Composition of ZK【对于零知识的辅助输入和构造】

这个核心思想是说:如果Verifier V从外界得到了一个辅助信息输入的话,则会是原本是ZK的可能不在是ZK。
wrt:with regard to
下面下介绍一下,关于知识定义的扩展,以便允许协议执行的上下文。如果在P,V交互之前他们可能从外部世界得到了一些辅助输入,但是一旦你使用了这个auxiliary input,那么这个可能不再会是zero knowledge,所以要进行一些辨认。
在这里插入图片描述
但是为什么我们要关系辅助输入呢?我们非常关心辅助输入,是因为它能给我们早期执行提供上下文构建。
我们同时有很多事情在进行,该协议正在运行,各方在协议中引入很多上下文,其中很多信息都和他们交互的内容有关。我们必须再理论层面上建立模型,这就是辅助输入能让我们做的,我们可以在任何情况下引入量化,将实际的这些在意问题变成一个可量化的分布。这将使我们保证你在面对这些情境时的知识,你会提前知道一些信息。模拟器也得到了辅助输入,因为当进入交互时,很公平确实有辅助输入。但是我们并不允许一个巨大的辅助输入以允许类似一个更多的,其底线是,从理论的角度来看,是否有变量输入,这是称为构建零知识的关键,
下面给了有了辅助输入之后,其ZK的描述

  • 其中z所描述在协议执行中的一些内容:
    比如一些其他协议执行的环境;又或者是一些优先信息,特别是关于w的。
  • Simulator也会给定辅助信息z
  • Simulator的运行时间在多项式内
  • 辅助信息z也是构造的重要部分。

在这里插入图片描述

5.1 Sequential composition of ZK

在我们讲顺序之前,当且仅当只有当Verifier接受所有的交互时,Verifier会输出accept。就Prover而言,和一个Verifier进行交互,那就是观察整个过程并试图从中学到一些东西;
模拟整个视图来保护证明者。

在这里插入图片描述
ZK的串行构造,使用辅助输入并且把它也给到模拟器,如下:
其中第一个S中的辅助输入是z,但随着我们的进步和我们执行越来越多的协议,我们将使用额外的信息命令辅助输入,这个额外的信息时来自前一个协议的消息,它是不断增强的环境,我们会陆陆续续执行,然后有z1,z2,…等等,因为每个单独的原子协议在零知识中都是辅助信息,即我们已经量化了所有可能的辅助输入。
结果是一个分布在整个相互作用中都是相同的,如下:
Theorem:在序列合成【Sequential composition】时,零知识具有封闭性。
在这里插入图片描述

6、Summary总结

在这里插入图片描述

7、Food for Thought[引人深思的事],一些思考

不应该把很多话当作理所当然,

  1. 其中需要指出的是,如果P等于NP,任何可以有效验证的问题都可以有效地解决,特别的是这些都可以在完备零知识(PZK)下被证明。但是这样来说,所有的知识都会变得微不足道,没有意义,因为Verifier自己就可以自己计算,它不用和任何人交互就能说服自己【所以到目前为止我们所讨论的所有重要内容都取决于P不等于NP的这个事实,即存在Verifier本身无法解决的难题】
  2. 但是当有时候,即使P等于NP,也会有一些有意思的地方。

一个练习:看看你是否理解了零知识利用线性方程的线性性来建立二次时间的零知识。
在这里插入图片描述

在这里插入图片描述

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值