亚瑟王的「随机」挑战:从交互到非交互式零知识证明——探索零知识证明系列(四)

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

本文作者:郭宇

 

本文已更新至Github

https://github.com/sec-bit/learning-zkp/blob/master/zkp-intro/4/zkp-rom.md

“Challenges are at times an indication of Lord's trust in you.” 挑战,有时是上天信任你的一种表现。― D. Todd Christofferson

本文继续长篇大论零知识证明背后的机制原理,希望帮助大家理解这一类「现代密码学工具」的大致轮廓。本文约8000字,少量数学公式。

系列一:初识「零知识」与「证明」

系列二:理解「模拟」

系列三:寻找「知识」

交互与挑战

我们之前介绍的零知识证明系统都是「交互式」的,需要验证者 Bob 在交互中提供一个或若干个「随机数」来挑战,比如「地图三染色问题」(参看『系列二』)中,验证者 Bob 需要「不断地」随机挑选一条边来挑战 Alice 的答案,直到 Bob 满意为止,而 Alice 的作弊概率会「指数级」地衰减。而让 Bob 相信证明的「基础」取决于 Bob 所挑选的随机数是不是足够随机。如果 Alice 能够提前预测到 Bob 的随机数,灾难就会发生,现实世界就会退化成「理想世界」,而 Alice 就可以立即升级成「模拟器」,通过超能力来愚弄 Bob。

而『系列三』中,我们分析了 Schnorr 协议,协议中虽然验证者 Bob 只需要挑选一个随机数 c 来挑战 Alice ,让她计算一个值 z,但 Bob 绝对不能让 Alice 有能力来预测到 c 的任何知识,否则,Alice 也会变身成模拟器。

随机数的重要性不言而喻:

通过随机数挑战是交互式零知识证明的「信任根基」。

但,「交互过程」会限制应用场景。如果能将交互式零知识证明变成「非交互」?这会非常非常激动人心。所谓的非交互可以看成是只有「一轮」的证明过程,即Alice 直接发一个证明给 Bob 进行验证。

非交互式零知识证明,英文是 Non-Interactive Zero Knowledge,简称 NIZK。它意味整个证明被编码为一个「字符串」,它可以写到一张纸上,通过邮件、聊天工具等各种方式随意发送给任何验证者,字符串甚至可以放在 Github 上随时供大家下载验证。

在区块链世界,「NIZK」可以作为共识协议的一部分。因为一个交易需要多个矿工进行校验。设想下,如果交易的发送者和每个矿工都要交互一下,让矿工进行挑战,那么共识过程将奇慢无比。而非交互式零知识证明则可以直接广播给所有的矿工节点,让他们自行验证。

可能有朋友会问:只让一个矿工挑战不就够了吗?把矿工和交易发送者的交互脚本编码成证明,然后广播给其他矿工,然后其他矿工就直接相信这个挑战过程是可信的,不也可以吗?但是,很显然,这里需要相信第一个交互矿工作为可信第三方,第三方?似乎不是一个好主意……

而非交互式零知识证明,以下我们直接说「NIZK」,似乎就很理想了,没有第三方赚差价。

「非交互」带来的困惑

非交互式零知识证明,NIZK,如果存在,那么它要比交互式证明强大得多。

  • 交互式证明,只能取信于一个验证者;而 NIZK 可以取信于多个验证者,以至所有人。

  • 交互式证明,只能在交互的那个时刻有效;而 NIZK 将始终有效。

NIZK 不仅可以跨越空间,还能跨越时间

听上去很美,不是吗?But, ……

重复下上节的一个结论:

通过随机数挑战是交互式零知识证明的「信任根基」。

可是如果 NIZK 失去了挑战过程,有什么后果?

我们已经回忆过「零知识」性质的证明(参考『系列二』),证明过程需要构造一个模拟器(算法),它也和验证者(Bob)在理想世界中进行交互,而验证者 Bob 没有能力区分出来对方是否是真的 Alice 还是一个模拟器。

如果现在考虑下 NIZK 中的 非交互式,假如「我」向「你」出示一张纸,上面写着一个「真」证明 X ,又假如「你」在看过这张纸之后确实相信我了;又因为协议是「零知识」,那么如果把「我」换成一个模拟器,模拟器也能「伪造」一个假证明 Y,能够也让「你」相信。

好了,问题来了:

  • 你如何区分 XY ,孰真孰假?当然你无法区分,因为协议是零知识的,你必须不能区分

  • 我可以同样可以把 Y 出示给你看,那岂不是「我」就可以欺骗你了吗?

是不是不和谐了?请大家在此处思考两分钟。

(两分钟后……)

因为 NIZK 没有了交互,也就没了挑战过程,所有的证明过程都有 Alice 来计算书写,理论上 Alice 确实是想写什么就写什么,没人拦得住,比如 Alice 就写「理想世界」的 假证明 Y

想必深刻理解模拟器的朋友,在这里会发现一个关键点:模拟器必须只能在「理想世界」中构造Y,也就是说,Y 这么邪恶的东西只能存在于「理想世界」,不能到「现实世界」祸害人间。

继续思考……

还有一个更深层次的问题,请大家回忆下「地图三染色问题」,之所以模拟器不能在「现实世界」中为非作歹,核心原因是,他在理想世界中有「时间倒流」的超能力,而在「现实世界」中不存在这种黑魔法。现实世界的「不存在性」是关键。

而且,NIZK 中没有交互,于是导致了一个严重的后果,模拟器没有办法使用「时间倒流」这个超能力,当然似乎也就不能区分证明者在两个世界中的行为。

换句话说,如果我们面对任何一个 NIZK 系统,似乎「模拟器」就很难高高在上了,它好像只能飘落人间,成为一个普普通通的凡人。如果,我说如果,按此推论,假设模拟器不再具备超能力,那就意味着 Alice 和模拟器没有区别,Alice 也可以成为一个模拟器,再继续推论,Alice 就可以在「现实世界」中任意欺骗 Bob,那么这个证明系统就不再有价值,因为它失去了「可靠性」。结论:任何的 NIZK 都不可靠。

这一定是哪里出了问题……

上面我们在分析的过程中,提到了交互挑战的缺失。确实,如果 Bob 不参与 Alice 产生证明的过程,证明所包含的每一个 bit 都由 Alice 提供,似乎「证明」本身不存在任何让 Bob 信任的「根基」。这个从「直觉」上似乎说不通。

那是不是说,没有 Bob 的参与就「彻底」没办法建立「信任根基」了呢?信任的根基还可以从哪里来呢?

答案是「第三方」!

Wait ……,协议交互不是只有两方吗? Alice 和 Bob,哪来第三方?

需要用特殊的方式引入第三方,而且方法不止一种,我们先研究第一种。

(泪目:不是说的好好的,咱们不引入第三方吗?)

回顾 Schnorr 协议

我们再看一下老朋友——Schnorr 协议,它是一个三步协议:第一步,Alice 发送一个承诺,然后第二步 Bob 发送随机数挑战,第三步,Alice 回应挑战。

云中「秘密」:构建非交互式零知识证明---探索零知识证明系列(五) 本文作者:郭宇 Once exposed, a secret loses all its power. 一旦泄露,秘密就失去了全部威力 ― Ann Aguirre 这已经是本系列的第五篇文章了,这一篇继续深入非交互式零知识证明。 本文约 12,000 字。 系列一:初识「零知识」与「证明」 系列二:理解「模拟」 系列三:寻找「知识」 系列随机挑战」 提纲 CRS 的前世今生 哈密尔... 阅读详情

相关推荐

2023海内外零知识证明学习资料汇总(二)(深入理解零知识证明篇)

本文收集了关于零知识证明的一些学习资料(包括科普文章,论文,开源仓库及相关学习网站等),并对这些资源进行了整理分析,希望能对大家有所帮助。书接上篇,

Tesla_Zhou的博客 1483

nizk:欢迎来到Nizk

nizk:欢迎来到Nizk

交互零知识证明:Fiat-Shamir Transform

交互证明系统 令R⊆X×YR \subseteq X \times YR⊆X×Y是一个有效关系,那么关于RRR的非交互系统是一个算法对(Gen,Check)(Gen,Check)(Gen,Check),定义如下: GenGenGen:一个有效的概率算法,形如π←RGen(x,y)\pi \leftarrow_R Gen(x,y)π←R​Gen(x,y),其中(x,y)∈R(x,y) \in R(x,y)∈R,π∈PS\pi \in PSπ∈PS,这里的PSPSPS是证明空间(proof space) C

weixin_44885334的博客 2216

区块链隐私保护文献 An Efficient NIZK Scheme for Privacy-Preserving Transactions over Account-Model Blockchain

读论文《An Efficient NIZK Scheme for Privacy-Preserving Transactions over Account-Model Blockchain》,一篇写的很好的关于区块链隐私保护的文章。

qq_41182893的博客 1259

零知识证明ZK基础

一种特殊的3轮零知识证明协议。

weixin_51591328的博客 405

NIZK零知识证明-Groth10-Short Pairing-based Non-interactive Zero-Knowledge Arguments(三)

有需要论文知道、审稿,申博资料准备,答辩等的可以私信;。

qq_41359358的博客 1135

4、基于非交互Zaps构建可更新的NIZK证明

本文研究了基于非交互Zaps构建可更新的NIZK证明的方法。通过扩展Bellare等人的思想,实现了可更新的可靠性,并构建了具有可更新的模拟可靠性和可更新的模拟可提取性的NIZK证明。该构造具有可更新、通用且简洁的SRS,且不依赖随机预言机。

rice5的博客 63

NIZK零知识证明-Groth10-Short Pairing-based Non-interactive Zero-Knowledge Arguments ()

一句话来说,零知识证明就是想实现:证明者能向验证者证明它拥有某些知识,但是不想让验证者获得该知识。:只要证明者正确地知道某一statement,那么就能让验证者相信自己知道该statement。任何恶意证明者都不能以虚假statement欺骗验证者接受该statement。证明者在向验证者提供证明的过程中不泄漏任何除statement正确性之外的信息。:任何承诺方都不能将已有的承诺值 Open 成不同的内容,即接收方可以确信。为知识承诺,因为证明者在不“知道”所承诺的值的情况下,不能做出有效的承诺。

qq_41359358的博客 1233

浅谈零知识证明

零知识证明是实现隐私保护的密码学方案。曾被称为密码学领域的一颗皇冠,用于在不泄露具体秘密情况下对问题一种正确证明方法。尤其是在金融领域实现数据隐私保护方面的创新业务场景里实现落地应用。 我们今天就从零知识证明的基本概念、研究进展、实现原理方面做一些简单阐述。 一、零知识证明概述 零知识证明(Zero-Knowledge Proof, ZKP)是现代密码学中的一类经典协议,用于在不泄露关于某个命题任何信息的情况下证明该命题的正确性。近年来,随着区块链等新兴技术的发展以及隐私计算需求的兴起,零知识证明技术再次成

jambeau的博客 2万+

55、密码学中的LWE与NIZK:从理论到实践

本博客深入探讨了密码学中基于学习误差(LWE)构建非交互式零知识证明NIZK)系统的挑战与进展。重点分析了LWE的理论基础及其在多项密码学协议中的广泛应用,以及构建用于NP问题的通用NIZK证明系统的关键问题。引入了证明者辅助的不经意密文采样(POCS)这一新概念,并将其与LWE结合,为解决NIZK构建难题提供新思路。此外,还对格基可撤销分层身份基加密(R(H)IBE)的安全性进行了详细分析。研究为未来构建更安全、高效的密码方案提供了理论支持和实践指导。

efc12345678的博客 110

18、非交互式零知识非成员证明技术解析

本文深入解析了非交互式零知识非成员证明的技术原理,涵盖加密方案、平滑投影哈希函数(SPHF)和Groth-Sahai证明系统等核心工具。通过通用构造方法与基于ElGamal加密的具体实例,展示了如何实现对‘非成员’陈述的零知识证明,并比较了交互式与非交互式协议在效率与隐私保护方面的优劣。文章还探讨了该技术在隐私保护、身份验证及区块链等领域的应用前景。

perl8的博客 45

非交互式零知识证明】(上)

简单来说,零知识证明就是:证明者(`prover`)能够在不向验证者(`verifier`)提供任何有用的信息的情况下,使验证者(`verifier`)相信某个论断是正确的。所谓零知识,通俗的来讲,就是既证明了自己想证明的事情,同时透露给验证者的信息为“零”。零知识证明可以分为交互式和非交互式两种。

qq_45764888的博客 6612

区块链密码学】第10-4讲:经典交互零知识证明(一)

【本课堂内容全部选编自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德彪教授的《区块链密码学》授课讲义、教材及互联网,版权归属其原作者所有,如有侵权请立即与我们联系,我们将及时处理。】 10-4NP问题的零知识证明(一) 图同构问题 | 图同构(Graph Isomorphism)的定义 验证者执行上述证明过程t轮后,且均未拒绝,则验证者接受证明者的证明,即相信两个图是同构的。 | GI零知识证明性质分析...

Digquant的博客 487

现代密码学()——零知识证明

零知识证明(Zero—Knowledge Proof),是由S.Goldwasser、S.Micali及C.Rackoff在20世纪80年代初提出的。它指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。零知识证明实质上是一种涉及两方或更多方的协议,即两方或更多方完成一项任务所需采取的一系列步骤。证明者向验证者证明并使其相信自己知道或拥有某一消息,但...

Quincy678的博客 4892

智能合约隐私保护论文:An Efficient NIZK Scheme for Privacy-Preserving Transactions over Account-Model Blockchai

Shunli Ma, Yi Deng, Debiao He, Jiang Zhang, Xiang Xie. An Efficient NIZK Scheme for Privacy-Preserving Transactions over Account-Model Blockchain. Cryptology ePrint Archive, Report 2017/1239, 2017. ht...

小熊划水博 3021

Pinoccho——nizk-test

接Pinocchio——将.arith文件转换为qap及做相应的prove/verify操作,对nizk-test进行操作。 nizk-test.c内容为: #pragma once struct Input { int a;}; struct NIZKInput { int b1; int b2; int b3; int b4;}; struct Output { ...

mutourend2010@gmail.com 599

Efficient Modular NIZK Arguments from Shift and Product学习笔记

1. 背景知识 Prastudy Fauzi, Helger Lipmaa, and Bingsheng Zhang 2013年论文《Efficient Modular NIZK Arguments from Shift and Product》,提出: 基于shift-by-ξ\xiξ argument 和 rotation-by-ξ\xiξ argument构建permutation arg...

mutourend2010@gmail.com 436

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

非交互式零知识证明 本节主要介绍一种新的零知识证明-zkSNARKzkSNARKzkSNARK,zkSNARK:zero−knowledgeSuccinctNon−InteractiveArgumentsofKnowledgezkSNARK:zero-knowledge Succinct Non-Interactive Arguments of KnowledgezkSNARK:zero−knowledgeSuccinctNon−InteractiveArgumentsofKnowledge。 背景 zkS

BlockchainY的博客 5203

交互式与非交互式零知识证明对比

零知识证明(Zero-Knowledge Proof, ZKP)是一种密码学技术,允许证明者(Prover)在不向验证者(Verifier)泄露任何具体信息的前提下,使验证者相信某个断言(Statement)为真。根据证明过程中是否需要证明者与验证者实时交互零知识证明可分为交互零知识证明(Interactive ZKP)和非交互式零知识证明(Non-Interactive ZKP, NIZKP)。

weixin_43156294的博客 1899
上一篇: 读心术:从零知识证明中提取「知识」——探索零知识证明系列(三)
下一篇: 零知识证明学习资源汇总
安比实验室SECBIT
博客等级 码龄8年 169粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值