比特大陆-比特币价格行情交易交流平台!

一文了解零常识zk-SNARKs

更新时间:2021-07-09 16:32点击:

non-interactie 非交互性

小红不必带小明进入校长的房间,也不必在小明推荐他的证明后与他对话,她随时可以检查证明是不是正确。因此“验证者”与“证明者”之间没有交互的过程,这与大家之前的阿里巴巴与强盗的例子非常不相同。在交互式零常识协议中,证明者和验证者彼此交换多个消息,直到证明者确信证明者知晓某些秘密为止。对于存在“公共验证者”的非交互零常识证明,验证者和证明者无需直接相互交互。相反,此“公共验证者”可以将加密的查看发送给证明者,并将加密的响应发送回验证者。

succinct 简单性

如此的证明是简单的,也就是小红可以飞速验证小明的答案,即便语句非常大,也能在几毫秒内验证证明。此属性还能够帮助解决可扩展性问题。


Zcash 是 zk-SNARKs 的首个广泛应用,也是现在零常识证明经常见到的一种。而这个技术的最大问题是证明者和验证者之间需要一个「初始化可信设置」——这意味着需要一组公共参数来构建 zk-SNARKs,其潜在的问题是,参数一般由小部分群体拟定,可能存在信赖问题。除此之外,在理论上,假如证明者拥有足够的算力,就可以提交假证据,影响整个系统。这是为何量子计算机被觉得是可以威胁这种算法是什么原因。所以「初始化可信设置」是其他新技术努力尝试克服的最重要问题。虽然零常识证明系统可以来保护区块链互联网之间的隐私,但不少系统都还要可信设置。

为解决这个问题,斯坦福密码学家Benepkt Bünz等人提出Bulletproof技术,相比较早的zk-SNARKs,无需初始化可信设置,但验证本钱可能会高中一年级些,但远低于其他技术譬如 zk-STARKs。而全球密码学研究职员也陆续提出了各种各样的零常识证明有关的技术,譬如说PLONK、Halo、Sonic、DARK(Diophantine Argument of Knowledge)、Supersonic。

而之后Ben Fisch和Benepkt Bünz提出的最新的零常识证明技术Supersonic是无需可信设置的。Sonic (Supersonic的前身)和 PLONK 在零常识证明技术的某些方面获得了进展,虽然还要进行初始化可信设置的,但这个初始可信设置再更不是专用(application specific)的了。而DARK是一种加密学工具,它可以帮 Sonic 和 PLONK移除他们的可信设置,让它们变得更好。Sonic (音速)与 Dark组合的技术就是Supersonic (超音速),Supersonic 是一种不需要初始化可信设置的 zk-SNARK。大家将会在下面的文章中再来详细介绍他们。

knowledge常识

zk-SNARK包含一个常识性的论点,也就是可以说它可以使小红确信小明的答案正确。可以说明一个证明的需要事实上有答案,以便甚至产生一个参数,证实该说法。

Zk-SNARK背后具体的数学原理是是十分精妙且复杂的,然而这里大家使用简化和压缩后的原理,向你概述它的背后达成方法。

第一,证明的问题会被以某种方法编码成为一组多项式,而证明者的目的是使验证者相信这个等式是成立的。譬如

大家知晓,一个多项式可以被可视化成为图中的所示的曲线,而一个朴素的想法是,假如两个多项式曲线上的点处处相等,那样两个多项式也就是相等的。

事实上,大家可以更容易的验证。由于不一样的多项式,肯定在大部分点的求值是不一样的,就如上图所示。因此大家可以通过只验证几个点,就基本可以确定这件事。问题的重要是大家选取的点需如果随机且保密的,而这部分随机值总是是可信设置中的潜在威胁,用后需要立即销毁,以预防恶意者借助其进行架构证明来攻击。

譬如大家验证上面的等式,可以选取一个随机点x=10:

当代入x=10如此的随机点时,大家可以直接验证得到两个多项式是不一样的。

但,验证者须知这个随机值才能进行验证,要不然怎么样比较呢?这个时候大家会使用同态加密如此的工具来掩盖如此的随机值信息。这使得在随机值维持私密的同时,验证者可以比较多项式是不是相等。

在Zcash的刚开始版本中,刚开始的成员用了一个“仪式”来产生如此的随机私钥,(就是上面校长办公室中的那个“仪式”),“仪式”其实就是一个产生随机结果的多方计算(multi-party computation)。而这部分参与者只须有一方维持忠诚,私钥就没办法被复制,这意味着只有所有参与方都背叛了系统才能致使系统损毁。即使这样,这仍然是一个需要信赖的设置,需要大家解决。

大家知道了zk-SNARK事实上是一种带有零常识特质的非交互简单论证,而之前大家已经介绍过了零常识证明的有关讲述,那样非交互与简单的特质为零常识证明带来了什么?

初始化可信设置问题

区块链是伴随2009年BTC的引入而备受关注的技术,它为去中心化结构的进步打开了新的大门。从那时起,大家开始表现出对知道区块链技术入门知识的强烈兴趣,并用这部分基础技术尝试打造一个完全分布式,可扩展和安全的环境,使用技术改变传统步骤中所存在的问题。

然而大家也意识到这种技术还有不少缺点,主如果隐私和匿名性。每一个人都可以看到区块链上的数据,其他人都可以轻松地跟踪信息达成溯源。使得其他人都非常难匿名实行任何买卖,但完全的隐私又会带来难以监管的问题。这为区块链在很多方面的应用带来了妨碍。

为知道决隐私和匿名性的问题大家使用了不少技术,其中零常识证明和其有关的密码学在平衡隐私和透明的需要上卓有效果。而zk-SNARK就是目前最为一流的隐私工具。

为了向你讲解zk-SNARK到底是如何一种技术,可以先来看一个小故事

在中学的数学课上,老师布置了一道关于一元二次方程求解的作业。

小明与小红是班上数学最好的两个学生,每次他们都争着第一个算出老师作业的答案。而这次小明先算出了答案,于是他开始试图向小红炫耀他已经解决了问题,但他不期望告诉小红他的答案,由于他费了很大的劲才算出来。这个时候他意识到他需要一种向小红提供证据的办法,但同时又不会泄漏他算出来的答案。

是不是想起了上个系列中阿里巴巴向强盗证明他知晓口令的例子?

非交互性与简单性有哪些用途

在很多状况下,大家都可以从非交互性或简单性中收获颇丰。交互性强的策略将产生多笔区块链买卖,增加区块链互联网的负担并抬高验证本钱。当大家要允很多个独立的验证者验证给定的证明而不必每一个人都单独查看证明者时,非交互性会起到重要性有哪些用途。而当用于存储证明的介质很昂贵或者大家需要很短的验证时间时,大家总是需要简单性。对于如此的分类帐本,zk-SNARK为区块链买卖的效率带来的改变可以说是惊人的。

Argument 论证

zk-SNARK假设证明者的计算能力有限。因此,这部分证明满足了目前计算的靠谱性,但不满足100%的靠谱性。这意味着假如证明者的计算能力足够强大,则系统的安全性就可能出现危险。不过在目前的计算技术之下,系统的安全性是完全足够的。

小明需要零常识的证据!

幸运的是,这个学校非常鼓励这种角逐,为此学校提供了一些有用的计算工具来帮小明。他们提供了两个加密密钥,一个交给小明如此的想要证明自己已经算出答案的小孩,另一个给小红如此的需要验证其他人答案是不是正确的小孩。学校还提供了正确答案的哈希值和两种便捷的算法。

于是小明输入他的答案,学校的答案的哈希值、证明者密钥,通过学校的生成证明的算法来运行这部分输入值,并得到了一些乱码,这就构成了小明的证明。目前,他可以在不泄露自己答案的状况下向小红证明“我算出了答案”

小红使用学校的答案的哈希值,小明的证明、为验证者筹备的密钥,并通过验证算法运行它们。得出来的是“答案正确”,于是小红可以相信小明得到了正确答案。

但小红十分怀疑小明,她想起来小学一年级的时候,小明曾借她了一块橡皮并且再也没还过。她感觉小明可能窃取了学校用来生成证明者和验证者密钥的秘密,然后用它来构成一个可以让错误答案也验证成为正确的办法。

然而学校向小红保证,这是不可能的,由于证明的秘密是在一个秘密“仪式”中产生的(这个仪式的过程大家将在之后曝光),就连校长也没办法破解,她可以放心的回到教室,请求小明在作业上提供一些帮了。

这就是Zero-knowledgesuccinct non-interactie arguments of knowledge 。zk-SNARK确实是一种很精妙的办法,它可以在不揭示任何信息的首要条件下证明某个论断为真。下面让大家回顾一下这个小故事,那样zk-SNARK到底意味着什么呢?

官方微信公众号