零知识证明学习(三)—— 非交互式零知识证明(zkSNARKs)

本文介绍了zkSNARKs,一种非交互式零知识证明,它在区块链领域有着广泛应用,尤其是在隐私保护上。zkSNARKs的特点包括零知识、简洁、非交互式,确保验证的高效性和安全性。文章讨论了证明者和验证者的角色,以及多项式知识证明的过程,提出了协议中的潜在问题和挑战。
摘要由CSDN通过智能技术生成

非交互式零知识证明

本节主要介绍一种新的零知识证明- z k S N A R K zkSNARK zkSNARK z k S N A R K : z e r o − k n o w l e d g e S u c c i n c t N o n − I n t e r a c t i v e A r g u m e n t s o f K n o w l e d g e zkSNARK:zero-knowledge Succinct Non-Interactive Arguments of Knowledge zkSNARKzeroknowledgeSuccinctNonInteractiveArgumentsofKnowledge

背景

z k S N A R K zkSNARK zkSNARK是零知识证明中最经典的加密算法体系。目前已经被应用在很多地方,特别是在区块链领域,包括实际生活中隐私保护相关的应用。

Z e r o − K n o w l e d g e Zero-Knowledge ZeroKnowledge: 零知识证明体系里有两个角色,一个是证明者(Prover), 一个是验证者(Verifier)。举个例子,比特币创始人中本聪身份不明,之前传出过很多人声称自己是中本聪最后都不了了之。那么一个人如何证明自己是中本聪呢?因为大家知道中本聪钱包的地址。因此他只需要用这个钱包的私钥对这句话签名 “我是XXX,我其实就是中本聪"。然后其他人(Verifier) 都可以用中本聪钱包的公钥对这个签名进行验证。这个就是一个零知识证明。首先只有私钥持有方的签名才能通过验证,其次这个签名没有泄漏私钥的任何信息,钱包不会被其他人盗用。因此零知识证明解决了两个问题,一个是信任问题,一个是隐私问题。

S u c c i n c t Succinct Succinct:是指对于一个很复杂的问题,验证者可能需要进行很长时间的计算才能提供出相应的证明,但是我们希望证明的大小不要太大 (比如实际应用中只有几十 k b kb kb),同时验证者只需要很少的时间(比如微秒级别的时间) 就能够验证计算是否正确。

N o n − I n t e r a c t i v e Non-Interactive NonInteractive:是指在证明的过程中双方不需要互相交换信息。有一些算法体系需要证明者和验证者之间互相对话几次,交换信息。这对于实际应用就很不方便,增加了系统特别是网络通讯的复杂度。因此最好的情况是证明者一次性地把证明发送给验证者,验证者直接验证即可。

A r g u m e n t o f K n o w l e d g e Argument\quad of \quad Knowledge ArgumentofKnowledge:指的是证明者只有知道问题的答案才可能提供证明。这个比较绕口,另一个解释就是证明者造假成功的概率可以忽略不计。这里还有一个类似的概念 Proof of Knowledge。它们之间是有区别的。对于Argument来说,证明者的计算能力有限,也就是多项式的算力,而Proof of Knowledge则对证明者计算能力没有要求。比如一个验证者是从未来穿越回来,带着最先进的量子计算机,那么对于Proof of Knolwege的系统,他仍然没法造假。但是对于Argument of Knowledge的系统则有可能。简单的说就是:proof(证明)和argument(论证)在零知识证明里,是有区别的,在proof system中,即便是计算能力无限的prover也没法欺骗verifier去相信一个错误的陈述为真(统计可靠性),而在argument system中,只有多项式时间计算能力的没法欺骗(计算可靠性),假设能破解椭圆曲线离散对数问题,那么可能就不再安全。

多项式知识的证明(Proving Knowledge of a Polynomial)

我们从一个证明多项式知识的问题开始,然后使用一般方法。我们还会发现多项式的其他性质。

到目前为止,问题集中在一个薄弱的证明概念上,各方必须相互信任。例如,证明者不需要知道多项式,他可以使用任何其他可用的方法来得出正确的结果。而且,如果验证者多项式求值的范围并不大,她可能有概率会猜到一个数,这个概率是无法忽视的。接下来我们来处理这个缺陷,但首先要清楚的分析多项式的性质。一个多项式表达形式如下(n阶多项式):
c n x n + . . . + c 1 x 1 + c 0 x 0 c_nx^n+...+c_1x^1+c_0x^0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值