区块链币问币答第40期:何为零知识证明?

答:零知识证明是指,在不揭露特定知识的情况下,证明者(prover)可以说服验证者(verifier)他们知道该知识。换句话说,零知识的输入是秘密的,证明者不会向验证者揭露任何知识。零知识证明可以被用在隐私保护方案里。例子包括:例子1:质询/响应比赛在计算机安全里,质询-响应认证(challenge-response authentication)是一个协议族。在协议里,一方进行提问(「质询」),另一方给出正确的答案(「响应」)以获得授权。在区块链里,这个「比赛」能被用于验证交易。如果某一交易是非法的,其他节点会注意到其非法性。这就需要提供可验证的证明(verifiable proof),来证实交易是非法的。如果验证失败,则会产生一个「质询」,要求交易的发起人生成一个「响应」,来证明交易是合法的。这里有一个例子:假设只有Bob可以访问某些资源(如他的车)。Alice现在也想访问它们(如开这辆车去杂货店)。Bob 发起一个质询,假设为「52w72y」。Alice必须用一个字符串来响应Bob发起的质询。使用一个只有Bob和Alice知道的算法,这是找到答案的唯一方式。此外,Bob每次发起的质询都会不一样。知道先前正确的响应,并不能给Alice带来任何的优势。质询/响应比赛已经被使用在区块链,如以太坊里了。然而,我们需要相应的函数库和工具,来使这一类的认证方案更容易被使用。例子2:zkSNARKs + ZcashZcash是基于zk-SNARKs,具有隐私保护特点的加密货币。在 Zcash所谓的「私密交易」(shielded transactions)里,每一个被使用的币都带有一组匿名集合。私密交易使用「私密地址(shielded addresses)」,它要求发送方或接收方生成一个零知识证明,以在不泄露交易信息的情况下,允许其他人验证交易。Zcash 无疑是一个值得关注的有趣项目。例子3:zkSNARKs + Ethereum在以太坊下一个要升级的协议 Metropolis 里,开发者将可以在链上高效地验证 zk-SNARKs。我们可以在支持 SNARKs 的以太坊里做什么呢?可以把某些合约变量被设为不可见。秘密信息可以与那些遵守使用 SNARKs 的合约规则的用户存储在一起,而不是直接存储在链上。每一组用户群自身都需要一个可信的启动阶段,这会增加一些用于准备阶段的开销。但一旦电路被设置好,它就可以被任意数量的交易使用。在支持 SNARKs 的以太坊里,你无法把隐私与用户分开,即做不到自治性隐私(autonomous privacy)。由于以太坊的 SNARKs 依赖用户在链下维护密钥,因此如果没有这些用户,就没有地方可以找到这些秘密。

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20181107G0EGUR00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券