神奇的零知识证明和zkSNARK究竟是什么


所谓零知识证明(zero-knowledge proofs),最初是由麻省理工教授Shafi Goldwasser、Silvio Micali(注:两人都是图灵奖得主)以及另一位密码学大牛Charles Rackoff于20世纪80年代初共同提出的[1]。有了零知识证明,就允许一方(证明者)说服另一方(验证者),一个给定的论断是真实的,而不会泄露任何超过论断本身有效性的信息。

由于这一话题确实艰涩难懂,这里便以著名的《阿里巴巴洞穴》[2]为例,以便让读者更好地了解零知识证明的概念:

“很久以前,在东部城市巴格达有一位名为阿里巴巴的老人,每天阿里巴巴都会跑去集市买卖东西。某一天在巴格达集市,一名小偷从阿里巴巴的手中抢走了一个钱包。阿里巴巴追赶这名小偷,而小偷则逃进了一个洞穴,这个神秘的洞穴有两个蜿蜒的入口:一个向左,另一个向右。阿里巴巴并没有看到小偷走的是哪一条路。对此,阿里巴巴无奈只能选择其中的一条,他决定从左洞口进入,遗憾的是,很快他便走到了左手通道的尽头。这一路上,他仔细搜遍了每一个角落,但并没有找到小偷。阿里巴巴自言自语地表示小偷可能在另一个通道。于是他搜索了右边的通道,奇怪的是,这个通道也有个死胡同,而他还是没有找到那个小偷……“这个洞穴很奇怪,” 阿里巴巴自言自语道,“那个该死的小偷跑哪去了?”第二天,又一名小偷顺走了阿里巴巴的包裹跑了。诡异的是,这个小偷又进入了那个奇怪的洞穴,阿里巴巴由于体力差的原因,他并没有看到这个小偷的走向,这一次他选择从右边开始搜索。他一路走到右边通道的死胡同,但仍然没有找到小偷。他认为,第二名小偷也像第一个小偷那样幸运地离开了,静静地融入了拥挤的集市。日子一天天过去,每天都会有小偷来光顾阿里巴巴这位老者。而阿里巴巴则总是会慢上一拍,从来没有抓到过这些小偷。到了第四十天,第四十名小偷顺走了阿里巴巴的头巾,然后又逃入了那个奇怪的洞穴,和以前一样,阿里巴巴依旧没有看到小偷的身影。这一次,他选择从左侧通道开始搜索,但遗憾的是,还是没有找到小偷。阿里巴巴感到非常困惑,按以前的解释,这第四十个小偷和其他三十九个小偷一样也是幸运的?但这样的解释未免有些牵强,连他自己都不信了。这是因为,四十个小偷全都幸运逃走的概率只有万亿分之一!所以,阿里巴巴对自己说,一定存在着另外一种更可能的解释。他开始怀疑那个奇怪的洞穴保护了一个秘密!对此,他决定躲藏在右边通道的袋子之下。在经历一段难熬的等待之后,他看到了一名小偷急匆匆跑了过来,然后对着墙壁低声说道:“芝麻开门”。随后,阿里巴巴便看到了惊人的一幕,那面墙壁竟然打开了,当小偷逃走之后,这面墙壁又合上了!但阿里巴巴非常高兴,因为他发现了这个奇怪洞穴的秘密。他发现,当这面墙壁打开时,洞穴的左手通道和右手通道是相连着的。阿里巴巴一遍又一遍地试验了这个魔法词,并最终设法替换掉了魔法词。第二天,小偷就被阿里巴巴给抓住了…… 出自《如何向孩子解释零知识证明》

而zkSNARK,则是零知识证明的一个变体,它使得证明者能够简洁地使任何验证者相信给定论断的有效性,并且实现计算零知识,而不需要证明者与任何验证者之间进行交互。

在零知识当中,zkSNARKs可被用于证明和验证计算的完整性,并以NP声明表示。一个掌握NP声明验证部分知识的证明者,可以产生一个简洁的证明,证实了NP声明的真实性。任何人都可以验证这个简短的证明,其提供了以下这些属性:

  1. 零知识:验证者除了从证明中了解到声明的真实性之外,他什么也无法得到。
  2. 简洁性:证明简短,易于验证;
  3. 非交互性:证明不需要证明者和验证者之间来回交互
  4. 可靠性:证明在计算上是正确的(即伪造假NP声明的证明是不可行的)这种证明系统也被称为论证;
  5. 知识证明:该证明不仅证明NP声明是真实的,而且证明者知道为什么是这样的。

这些属性共同构成了zkSNARK,它代表了一种零知识、简洁、非交互式的知识论证。

对此话题,伯克利大学区块链顾问Howard Wu研究颇深,他在《SNARKs的崛起》[3]这一课程当中详细介绍了零知识证明、zkSNARKs以及libsnark的概念,有兴趣的读者可以了解一下。

以下为中文译文:










































1.zkSNARK教程与开发环境:https://github.com/howardwu/libsnark-tutorial↵

2.如何向孩子解释零知识证明:https://link.springer.com/content/pdf/10.1007%2F0-387-34805-0_60.pdf↵

3.SNARKs的崛起:https://drive.google.com/file/d/167mgTAXcbRpZRc5hCFPwwhidf8wpKeUY/view

参考资料:https://drive.google.com/file/d/167mgTAXcbRpZRc5hCFPwwhidf8wpKeUY/view

https://github.com/howardwu/libsnark-tutorial

https://link.springer.com/content/pdf/10.1007%2F0-387-34805-0_60.pdf

编译:洒脱喜

稿源(译):巴比特资讯(http://www.8btc.com/zksnark-zero-knowledge-proofs)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值