零知识证明区块链实现
㈠ 区块链使用安全如何来保证呢
区块链本身解决的就是陌生人之间大规模协作问题,即陌生人在不需要彼此信任的情况下就可以相互协作。那么如何保证陌生人之间的信任来实现彼此的共识机制呢?中心化的系统利用的是可信的第三方背书,比如银行,银行在老百姓看来是可靠的值得信任的机构,老百姓可以信赖银行,由银行解决现实中的纠纷问题。但是,去中心化的区块链是如何保证信任的呢?
实际上,区块链是利用现代密码学的基础原理来确保其安全机制的。密码学和安全领域所涉及的知识体系十分繁杂,我这里只介绍与区块链相关的密码学基础知识,包括Hash算法、加密算法、信息摘要和数字签名、零知识证明、量子密码学等。您可以通过这节课来了解运用密码学技术下的区块链如何保证其机密性、完整性、认证性和不可抵赖性。
基础课程第七课 区块链安全基础知识
一、哈希算法(Hash算法)
哈希函数(Hash),又称为散列函数。哈希函数:Hash(原始信息) = 摘要信息,哈希函数能将任意长度的二进制明文串映射为较短的(一般是固定长度的)二进制串(Hash值)。
一个好的哈希算法具备以下4个特点:
1、 一一对应:同样的明文输入和哈希算法,总能得到相同的摘要信息输出。
2、 输入敏感:明文输入哪怕发生任何最微小的变化,新产生的摘要信息都会发生较大变化,与原来的输出差异巨大。
3、 易于验证:明文输入和哈希算法都是公开的,任何人都可以自行计算,输出的哈希值是否正确。
4、 不可逆:如果只有输出的哈希值,由哈希算法是绝对无法反推出明文的。
5、 冲突避免:很难找到两段内容不同的明文,而它们的Hash值一致(发生碰撞)。
举例说明:
Hash(张三借给李四10万,借期6个月) = 123456789012
账本上记录了123456789012这样一条记录。
可以看出哈希函数有4个作用:
简化信息
很好理解,哈希后的信息变短了。
标识信息
可以使用123456789012来标识原始信息,摘要信息也称为原始信息的id。
隐匿信息
账本是123456789012这样一条记录,原始信息被隐匿。
验证信息
假如李四在还款时欺骗说,张三只借给李四5万,双方可以用哈希取值后与之前记录的哈希值123456789012来验证原始信息
Hash(张三借给李四5万,借期6个月)=987654321098
987654321098与123456789012完全不同,则证明李四说谎了,则成功的保证了信息的不可篡改性。
常见的Hash算法包括MD4、MD5、SHA系列算法,现在主流领域使用的基本都是SHA系列算法。SHA(Secure Hash Algorithm)并非一个算法,而是一组hash算法。最初是SHA-1系列,现在主流应用的是SHA-224、SHA-256、SHA-384、SHA-512算法(通称SHA-2),最近也提出了SHA-3相关算法,如以太坊所使用的KECCAK-256就是属于这种算法。
MD5是一个非常经典的Hash算法,不过可惜的是它和SHA-1算法都已经被破解,被业内认为其安全性不足以应用于商业场景,一般推荐至少是SHA2-256或者更安全的算法。
哈希算法在区块链中得到广泛使用,例如区块中,后一个区块均会包含前一个区块的哈希值,并且以后一个区块的内容+前一个区块的哈希值共同计算后一个区块的哈希值,保证了链的连续性和不可篡改性。
二、加解密算法
加解密算法是密码学的核心技术,从设计理念上可以分为两大基础类型:对称加密算法与非对称加密算法。根据加解密过程中所使用的密钥是否相同来加以区分,两种模式适用于不同的需求,恰好形成互补关系,有时也可以组合使用,形成混合加密机制。
对称加密算法(symmetric cryptography,又称公共密钥加密,common-key cryptography),加解密的密钥都是相同的,其优势是计算效率高,加密强度高;其缺点是需要提前共享密钥,容易泄露丢失密钥。常见的算法有DES、3DES、AES等。
非对称加密算法(asymmetric cryptography,又称公钥加密,public-key cryptography),与加解密的密钥是不同的,其优势是无需提前共享密钥;其缺点在于计算效率低,只能加密篇幅较短的内容。常见的算法有RSA、SM2、ElGamal和椭圆曲线系列算法等。 对称加密算法,适用于大量数据的加解密过程;不能用于签名场景:并且往往需要提前分发好密钥。非对称加密算法一般适用于签名场景或密钥协商,但是不适于大量数据的加解密。
三、信息摘要和数字签名
顾名思义,信息摘要是对信息内容进行Hash运算,获取唯一的摘要值来替代原始完整的信息内容。信息摘要是Hash算法最重要的一个用途。利用Hash函数的抗碰撞性特点,信息摘要可以解决内容未被篡改过的问题。
数字签名与在纸质合同上签名确认合同内容和证明身份类似,数字签名基于非对称加密,既可以用于证明某数字内容的完整性,同时又可以确认来源(或不可抵赖)。
我们对数字签名有两个特性要求,使其与我们对手写签名的预期一致。第一,只有你自己可以制作本人的签名,但是任何看到它的人都可以验证其有效性;第二,我们希望签名只与某一特定文件有关,而不支持其他文件。这些都可以通过我们上面的非对称加密算法来实现数字签名。
在实践中,我们一般都是对信息的哈希值进行签名,而不是对信息本身进行签名,这是由非对称加密算法的效率所决定的。相对应于区块链中,则是对哈希指针进行签名,如果用这种方式,前面的是整个结构,而非仅仅哈希指针本身。
四 、零知识证明(Zero Knowledge proof)
零知识证明是指证明者在不向验证者提供任何额外信息的前提下,使验证者相信某个论断是正确的。
零知识证明一般满足三个条件:
1、 完整性(Complteness):真实的证明可以让验证者成功验证;
2、 可靠性(Soundness):虚假的证明无法让验证者通过验证;
3、 零知识(Zero-Knowledge):如果得到证明,无法从证明过程中获知证明信息之外的任何信息。
五、量子密码学(Quantum cryptography)
随着量子计算和量子通信的研究受到越来越多的关注,未来量子密码学将对密码学信息安全产生巨大冲击。
量子计算的核心原理就是利用量子比特可以同时处于多个相干叠加态,理论上可以通过少量量子比特来表达大量信息,同时进行处理,大大提高计算速度。
这样的话,目前的大量加密算法,从理论上来说都是不可靠的,是可被破解的,那么使得加密算法不得不升级换代,否则就会被量子计算所攻破。
众所周知,量子计算现在还仅停留在理论阶段,距离大规模商用还有较远的距离。不过新一代的加密算法,都要考虑到这种情况存在的可能性。
㈡ 区块链项目中的币类都包含哪些项目
第一类是币类项目,也是最早的区块链项目。币类项目主要包括比特币和莱特币等项目。
此外,还有一类资产具有匿名的特点,主要功能包括实现支付的同时可以保护支付双方的隐私,比较知名的有达世币(Dash)、门罗币(Monero)及采用零知识证明的大零币(Zcash)等。
币类主要充当区块链资产领域的“交换媒介”,交换媒介就是你用来换取商品的一般等价物,比如以前黄金、白银、银票可以作为交换媒介。
目前全球的数字资产种类超过1000个品种,币类区块链项目数量增长不快,截止2018年1月市值最大的依旧是比特币。比特币大家已经很熟悉了,接下来几集火小币将详细介绍一下莱特币、新经币、达世币、门罗币、Zcash。
㈢ 区块链技术真正解决了交易互信问题了吗
是的。
区块链可以解决交易互信的问题。
智能合约解决交易互信问题
从比特币开始,区块链技术就在不断发展,以太坊在2014年进一步衍生出一个多种新功能的智能合约技术,智能合约以数字化的形式上链,"而区块链记录的信息一旦生成将永久记录,并无法篡改,"可以解决“陌生信任”信任问题。
Ulord具有智能合约属性,引入了gas的设计理念,但不同于以太gas每一个操作都会消耗gas。相比以太的gas概念,Ulord中采用了更简化抽象的方法。用户发布在Ulord上的资源和站点都是消耗Ulord网络上资源,因此用户发布资源或者站点时候,需要绑定一定量UlordToken。随着区块高度的增长,UlordToken会逐渐地消耗掉,用户需要在消耗掉之前往站点对应的地址充入新的UlordToken,才能确保拥有该域名的所有权。同时通过侧链技术,可以兼容以太虚拟机,发布智能合约,允许用户发布自己的代币,代币与UlordToken存在一定比例的兑换关系。Ulord允许用户自定义的发布自己站点服务,而通过发行自己的代币,可以运营自己的站点。
zk-SNARK技术保护交易隐私
Ulord将采用目前最主流的隐私保护zk-SNARK技术保护交易隐私。在Ulord区块链中,创建一笔有效的交易包括以下三件事:
1.保证地址中的货币没有在之前的交易中花费出去;
2.发送者通过授权签名的方式证明他自己是这笔货币的“持有者”;
3.交易的输入与它的输出相等。
证明货币在此之前没有被花费出去的工作是由账本本身完成的,它不需要发送者作出任何工作。发送者仅需证明他是这些货币的持有者,并且他希望通过地址对应的私钥进行电子签名的方式将这些货币发送出去。为了让这个签名得到验证,发送者的地址必须是公开的。与之相对应的,接收者也必须公开接收地址才能完成交易过程。在Ulord的使用中,验证交易的输入与输出相等是简单的,因为传输的数量被完全地揭露了出来。
㈣ 最近的明星区块链项目AOS隐私公链,有啥硬核之处
好像还是有不少的
转述下AOS官网的介绍:
AOS开创和引领隐私区块链3.0时代,相较于Monero、ZCash、Dash等隐私货币,AOS支持用户自主发行隐私资产,实现了隐私资产发行层面的图灵完备。
相较于其他普通的隐私智能合约平台,AOS首创性的支持零知识证明编程,实现了隐私应用编程层面的图灵完备,即支持用户轻松便捷的自主开发隐私应用。
AOS是全球范围内性能最强的支持智能合约的隐私公链,支持用户发行隐私代币,被称为“隐私版的EOS”;
AOS也是全球首个支持零知识证明编程的隐私公链,也被称为“隐私版的小程序开发平台”。
㈤ 区块链密码算法是怎样的
区块链作为新兴技术受到越来越广泛的关注,是一种传统技术在互联网时代下的新的应用,这其中包括分布式数据存储技术、共识机制和密码学等。随着各种区块链研究联盟的创建,相关研究得到了越来越多的资金和人员支持。区块链使用的Hash算法、零知识证明、环签名等密码算法:
Hash算法
哈希算法作为区块链基础技术,Hash函数的本质是将任意长度(有限)的一组数据映射到一组已定义长度的数据流中。若此函数同时满足:
(1)对任意输入的一组数据Hash值的计算都特别简单;
(2)想要找到2个不同的拥有相同Hash值的数据是计算困难的。
满足上述两条性质的Hash函数也被称为加密Hash函数,不引起矛盾的情况下,Hash函数通常指的是加密Hash函数。对于Hash函数,找到使得被称为一次碰撞。当前流行的Hash函数有MD5,SHA1,SHA2,SHA3。
比特币使用的是SHA256,大多区块链系统使用的都是SHA256算法。所以这里先介绍一下SHA256。
1、 SHA256算法步骤
STEP1:附加填充比特。对报文进行填充使报文长度与448模512同余(长度=448mod512),填充的比特数范围是1到512,填充比特串的最高位为1,其余位为0。
STEP2:附加长度值。将用64-bit表示的初始报文(填充前)的位长度附加在步骤1的结果后(低位字节优先)。
STEP3:初始化缓存。使用一个256-bit的缓存来存放该散列函数的中间及最终结果。
STEP4:处理512-bit(16个字)报文分组序列。该算法使用了六种基本逻辑函数,由64 步迭代运算组成。每步都以256-bit缓存值为输入,然后更新缓存内容。每步使用一个32-bit 常数值Kt和一个32-bit Wt。其中Wt是分组之后的报文,t=1,2,...,16 。
STEP5:所有的512-bit分组处理完毕后,对于SHA256算法最后一个分组产生的输出便是256-bit的报文。
2、环签名
2001年,Rivest, shamir和Tauman三位密码学家首次提出了环签名。是一种简化的群签名,只有环成员没有管理者,不需要环成员间的合作。环签名方案中签名者首先选定一个临时的签名者集合,集合中包括签名者。然后签名者利用自己的私钥和签名集合中其他人的公钥就可以独立的产生签名,而无需他人的帮助。签名者集合中的成员可能并不知道自己被包含在其中。
环签名方案由以下几部分构成:
(1)密钥生成。为环中每个成员产生一个密钥对(公钥PKi,私钥SKi)。
(2)签名。签名者用自己的私钥和任意n个环成员(包括自己)的公钥为消息m生成签名a。
(3)签名验证。验证者根据环签名和消息m,验证签名是否为环中成员所签,如果有效就接收,否则丢弃。
环签名满足的性质:
(1)无条件匿名性:攻击者无法确定签名是由环中哪个成员生成,即使在获得环成员私钥的情况下,概率也不超过1/n。
(2)正确性:签名必需能被所有其他人验证。
(3)不可伪造性:环中其他成员不能伪造真实签名者签名,外部攻击者即使在获得某个有效环签名的基础上,也不能为消息m伪造一个签名。
3、环签名和群签名的比较
(1)匿名性。都是一种个体代表群体签名的体制,验证者能验证签名为群体中某个成员所签,但并不能知道为哪个成员,以达到签名者匿名的作用。
(2)可追踪性。群签名中,群管理员的存在保证了签名的可追踪性。群管理员可以撤销签名,揭露真正的签名者。环签名本身无法揭示签名者,除非签名者本身想暴露或者在签名中添加额外的信息。提出了一个可验证的环签名方案,方案中真实签名者希望验证者知道自己的身份,此时真实签名者可以通过透露自己掌握的秘密信息来证实自己的身份。
(3)管理系统。群签名由群管理员管理,环签名不需要管理,签名者只有选择一个可能的签名者集合,获得其公钥,然后公布这个集合即可,所有成员平等。
链乔教育在线旗下学硕创新区块链技术工作站是中国教育部学校规划建设发展中心开展的“智慧学习工场2020-学硕创新工作站 ”唯一获准的“区块链技术专业”试点工作站。专业站立足为学生提供多样化成长路径,推进专业学位研究生产学研结合培养模式改革,构建应用型、复合型人才培养体系。
㈥ 区块链中的零知识证明是什么
如何不给你看我妈但是仍然证明我妈是我妈?
零知识证明是指证明者能够在不向验证者提供信息本身内容的情况下,使验证者相信某个论断是真实可信的一种技术。目前匿名性非常突出的数字资产ZCash的匿名交易就是依靠“零知识证明”实现的。
举个例子,A要向B证明自己拥有某个房间的钥匙,假设该房间只能用钥匙打开锁,而其他任何方法都打不开。这时候,A可以选择把钥匙交给B,B用这把钥匙打开该房间的锁,从而证明A拥有该房间的正确的钥匙。
或者A自己用钥匙打开房间,从房间里拿出来一个物体出示给B,B知道这个物体确实只有房间里有。方法二的原理就是零知识证明。
零知识证明可以在不泄漏信息本身内容的情况下,证明我知道这个秘,可以有效解决许多验证问题。
㈦ 什么是零知识证明有什么用
在没有足够(甚至是根本没有)依据的情况下,猜出一个事件(密码反译)的计算方法,虽然是没有任何依据的猜,但是这个猜出的计算法方被证明是正确的,这就是零知识证明。
在Goldwasser等人提出的零知识证明中,证明者和验证者之间必须进行交互,这样的零知识证明被称为“交互零知识证明”。80年代末,Blum等人进一步提出了“非交互零知识证明”的概念,用一个短随机串代替交互过程并实现了零知识证明。非交互零知识证明的一个重要应用场合是需要执行大量密码协议的大型网络。
在零知识证明中,一个人(或器件)可以在不泄漏任何秘密的情况下,证明他知道这个秘密..如果能够将零知识证明用于验证,将可以有效解决许多问题..
证明材料
附相关零知识证明材料:
零知识证明不是证明在条款的数学感觉因为有一个固定的可能性 p 在任一零知识证明Peggy 能提供对挑战的正确反应即使她不知道钥匙。但是如果测试被重覆 n 计时欺诈被减少Peggy 的可能性 p n , 和由增加测试胜者的数字可能使Peggy 的可能性降低欺诈到一个任意水平。
例子战略
Peggy 的公开密钥是一张大图表, 我们将称 G。Peggy 被组建的 G 某时从前, 和广泛然后出版它。由于她特别地制造了它为目的, Peggy 知道一个汉密尔顿的周期。Peggy 将对胜者证明她的身份, 她知道一个汉密尔顿的周期在 G。即使 G 是公开信息, 没人能做到, 因为没人知道G 的一个汉密尔顿周期 , 并且发现汉密尔顿的周期在图表是一个困难的问题(参见NP 完整性) 。
但是, Peggy 不能简单地告诉胜者汉密尔顿的周期,因为这样胜者(或偷听者)就可以装作是Peggy 。Peggy 不能在任何周期显露任何信息, 因为偷听者也许能在几个不同场合收集信息并整合,使偷听者有足够的信息能扮演Peggy 。
要证明她的身份, Peggy 和胜者扮演以下比赛的几个圆:
Peggy 标记G 端点 以随机号。边缘可能然后代表作为一对这些数字。她列出G 边缘 , 和编成密码各个边缘以一个另外密钥。她然后寄发被编成密码的边缘到胜者。
胜者翻转硬币。
* 如果硬币过来头, Peggy 向随机号投降密钥和测绘从端点。胜者解码边缘和然后核实, 被编成密码的边缘被派在步骤1 实际上做 graph.g 和没有某一其它图表。
* 如果硬币过来尾巴, Peggy 投降密钥只为实际上形成汉密尔顿的周期的边缘。胜者解码这些边缘和核实, 他们的确形成正确长度的周期。
冒名顶替者(' Pamela ') 能设法扮演Peggy, 和有成功地唬弄胜者的50% 机会在任何尤其圆。有二个可能的扮演战略。Pamela 能派Peggy 的graph.g 的编成密码 。在这种情况下, 她逃脱侦查如果胜者投掷头; 她显露编成密码, 并且胜者核实图表的确是 G。但如果胜者投掷尾巴, Pamela 被捉住。她被要求显露的一套的钥匙组成一个汉密尔顿的周期G 边缘, 并且她无法做那, 因为她不认识一。
Pamela 能跟随的另一战略是准备某一其它图表她 知道一个汉密尔顿的周期的H编成密码。她在这种情况下是安全的如果胜者投掷尾巴; 她显露周期, 并且, 因为胜者从未看边缘的剩余, 他从未获悉图表是 H 和不是 G。但如果胜者投掷头, Pamela 被要求显露整个图表, 并且胜者看见这不是 G。
由扮演这场游戏二十回合, 胜者能使由Pamela 被唬弄的可能性降低到一仅仅为1/2。由扮演更多圆, 胜者能减少可能性就渴望。
信息由Peggy 显露提供胜者任何信息在所有不G 的汉密尔顿的周期 。看这, 注意胜者能制造比赛的抄本没有谈话与Peggy 根本。他能选择序列头和尾巴, 和然后准备假定回复从Peggy, 没有曾经知道汉密尔顿的周期, 由从事适当的冒名顶替者战略在每个圆。抄本, 和它不遏制, 有线索关于Peggy 的身份合法的信息。Peggy 证明她的身份不是因为她能基于正确的答复, 但因为她能基于正确的答复没有知道将是什么问题。
所谓零知识证明,指的是示证者在证明自己身份时不泄露任何信息,验证者得不到示证者的任何私有信息,但又能有效证明对方身份的一种方法。看起来有点别扭,我给2个例子,也许好明白一些。
零知识证明的几个例子[原创]
证明举例
1)A要向B证明自己拥有某个房间的钥匙,假设该房间只能用钥匙打开锁,而其他任何方法都打不开。这时有2个方法:
①A把钥匙出示给B,B用这把钥匙打开该房间的锁,从而证明A拥有该房间的正确的钥匙。
②B确定该房间内有某一物体,A用自己拥有的钥匙打开该房间的门,然后把物体拿出来出示给B,从而证明自己确实拥有该房间的钥匙。
后面的②方法属于零知识证明。好处在于在整个证明的过程中,B始终不能看到钥匙的样子,从而避免了钥匙的泄露。
2)A拥有B的公钥,A没有见过B,而B见过A的照片,偶然一天2人见面了,B认出了A,但A不能确定面前的人是否是B,这时B要向A证明自己是B,也有2个方法。
①B把自己的私钥给A,A用这个私钥对某个数据加密,然后用B的公钥解密,如果正确,则证明对方确实是B。
②A给出一个随机值,B用自己的私钥对其加密,然后把加密后的数据交给A,A用B的公钥解密,如果能够得到原来的随机值,则证明对方是B。
后面的方法属于零知识证明。
3)有一个缺口环形的长廊 ,出口和入口距离非常近(在目距之内),但走廊中间某处有一道只能用钥匙打开的门,A要向B证明自己拥有该门的钥匙。采用零知识证明,则B看着A从入口进入走廊,然后又从出口走出走廊,这时B没有得到任何关于这个钥匙的信息,但是完全可以证明A拥有钥匙。
㈧ 区块链+即时通讯是怎样的
区块链特点之一就是通过分布式账本技术实现不可逆,同时采用各种技术,比如环签名、零知识证明等实现匿名、保护隐私等。社交网络由Facebook垄断、即时通讯由WhatsApp等中心化产品垄断,它们给用户带来了无与伦比的沟通方便,大大提高了人们之间沟通的频次和效率,给全世界几十亿人带来便利。
通过区块链,通讯服务可以不采用中心企业的模式来组织通讯服务的运行,区块链未来要对现实生活产生真正影响,不能光靠概念和炒作,而是要有真正落地的产品。什么叫真正落地的产品,就是能够满足用户需求的产品。如果现有的中心化产品能够很好地满足用户的需求,那么去中心化的产品就没有足够的替代效应,也就无法真正落地性。
区块链协议层就有主要包括:网络编程、分布式算法、加密签名、数据存储技术等4个方面。
网络编程能力是大家选择编程语言的主要考虑因素,因为分布式算法基本上属于业务逻辑上的实现,什么语言都可以做到。其中加密签名技术是直接简单的使用,数据库技术也主要在使用层面,只有点对点网络的实现和并发处理才是开发的难点。所以对于那些网络编程能力强,对并发处理简单的语言,人们就特别偏爱。
用户免费获得初始数量的token。它的一些实际使用场景:
1. 加密视频聊天:跨国用户想要进行视频聊天,只有双方都持有一定数量的SKM才能实现加密视频聊天。
2. 大容量文件加密传输:一位用户向另外一位用户传输的文件超过了大小限制,传输者必须持有一定的token来实现加密传输。
3. 对话信息保存:只要双方认可就可保存对话记录,双方需要持有一定量的token。
4. 再次传输提醒:如果一位用户给另外一位用户发送了一份文件,但他不希望对方进行分享,用户可以通过使用一定的token,当文件被再次传输时会获得通知提醒。
5. 秘钥解锁文件:一位用户给另外一位传输秘钥文件,只允许对方查看。发送的用户可以通过使用token,让对方收到的是碎片化的文件,只有通过发送者那里得到秘钥才能解锁文件。
链乔教育在线旗下学硕创新区块链技术工作站是中国教育部学校规划建设发展中心开展的“智慧学习工场2020-学硕创新工作站 ”唯一获准的“区块链技术专业”试点工作站。专业站立足为学生提供多样化成长路径,推进专业学位研究生产学研结合培养模式改革,构建应用型、复合型人才培养体系。
㈨ 什么是零知识证明
80年代初,Goldwasser等人提出了零知识证明这一概念.从本质上讲,零知识证明是一种协议.所谓协议(Protocol),就是两个或两个以上的参与者为完成某项特定的任务而采取的一系列步骤,包括以下三个特征:1.协议自始至终是有序的过程,每一步骤必须依次执行,在前一步骤没有执行完之前,后面的步骤不可能执行.2.协议至少需要两个参与者,一个人可以通过执行一系列的步骤来完成某项任务,但它不构成协议.3.通过执行协议必须能够完成某项任务.零知识证明必须包括两个方面,一方为证明者,另一方为验证者.证明者试图向验证者证明某个论断是正确的,或者证明者拥有某个知识,却不向验证者透露任何有用的消息.零知识证明目前在密码学中得到了广泛的应用,尤其是在认证协议、数字签名方面,人们利用数字签名设计出了大量优良的算法.用一个关于洞穴的故事来解释零知识.洞穴中有一个秘密,知道咒语的人能打开 C 和D之间的密门,对其它人来说,两条通道都是死胡同.Peggy 知道这个洞穴的秘密.她想对 Victor 证明这一点,但也不想泄露咒语.下面是她如何使 Victor 相信的过程:(1) Victor 站在A点.(2) Peggy 一直走进洞穴,到达C点或者D点.(3) 在 Peggy 消失在洞穴中后,Victor 走到B点.(4) Victor 向 Peggy 喊叫,要她:从左通道出来,或者从右通道出来.(5) Peggy 答应了,如果有必要她就用咒语打开密门.Peggy 和 Victor 重复第(1)至第(5)步 n 次.假设 Victor 有一个摄像机能记录下他所看到的一切.他记录下 Peggy 消失在洞中情景,记录下他喊叫 Peggy 从他选择的地方出来的时间,记录下 Peggy 走出来.他记录下所有的 n 次试验.如果他把这些记录给 Carol 看,她会相信 Peggy知道打开密门的咒语吗?在不知道咒语的情况下,如果Peggy和Victor事先商定好 Victor 喊叫什么,那将如何呢?Peggy 会确信也走进 Victor 叫她出来那条路,然后她就可以在不知道咒语的情况下在 Victor 每次要她出来的那条路上出来.或许他们不那么做,Peggy 走进其中一条通道,Victor 发出一条随机的要求.如果 Victor 猜对了,好极了.如果他猜错了,他们会从录像中删除这个试验.总之,Victor 能获得一个记录,它准确显示与实际证明 Peggy 知道咒语的相同的事件顺序.这说明了两件事.其一是 Victor 不可能使第三方相信这个证明的有效性;其二,它证明了这个协议是零知识的.在 Peggy 不知道咒语的情况下,Victor 显然是不能从记录中获悉任何信息.但是,因为无法区分一个真实的记录和一个伪造的记录,所以 Victor 不能从实际证明中了解任何信息-它必是零知识.也就是说,Peggy 在向 Victor 证明的过程中没有泄露任何有关秘密的知识,称为零知识.