零知识证明基础知识

本文介绍了零知识证明(ZKP)的基本概念、原理、类型及其应用。零知识证明是一种密码学技术,允许一方(证明者)在不透露数据内容的情况下,向另一方(验证者)证明该数据的真实性。文章详细解释了交互式和非交互式零知识证明,并探讨了它们在身份验证、金融、电子投票、供应链等多个领域的应用。

零知识证明基础知识

“证明者 (Prover)。” “验证者 (Verifier)。” “不泄露数据。” “真实性 (Authenticity)。”

我敢打赌,你在搜索“什么是零知识技术?”时,会在互联网上看到这些术语散落各处,以至于你一遍又一遍地产生既视感。

事实就是这样。零知识就是他们所说的那样。这是一种技术,允许一方(证明者)以加密方式证明数据的某个事实或真相(比如一笔交易),而无需揭示数据的内容,同时另一方(验证者)验证数据的真实性。

“但是,我能得到一个更简单的解释吗?”

“像我十三岁时那样给我解释一下”

好的,开始了。

像你十三岁时那样理解零知识:

假设,我是我大学里加入的一个俱乐部的活动策划人。耶!现在是今年最大活动的时候了,我负责准备工作,包括购买派对后需要的物品。我见了俱乐部的财务主管,并索要了俱乐部的银行卡,以便从附近的一家购物中心购买商品,他给了我。我和另外两名俱乐部成员一起去购物。我们把购物车装满了我们需要的(以及更多的)好吃的东西,然后前往收银台。扫描和计算后,我们看到了总金额。我把卡递给服务员,他做了刷卡的事情,包装了我们购买的东西,并把卡和两张收据一起给了我——发卡行收据和商场收据。

第一张收据是发卡行收据,包含扣款金额、交易日期和商家名称(商场)。第二张是商场收据,列出了我们购买的所有商品、价格和总金额。

回到俱乐部后,我找到了财务主管,把卡还给他。他问我花了多少钱,我告诉了他。他要收据,这样他才能确定并把它记录在案,你知道的,问责制什么的。我给了他第一张收据(发卡行收据),上面只显示了交易金额。他试图通过检查日期来验证收据的真实性——以确保这不是旧收据,检查扣款总额和商家名称。我没有给他看商场的收据,因为我不想让他看到我们购买的所有商品,我保证没有违禁品 :)

图片来源:ZKCamp

在上面的故事中:

  • 我是证明者,因为我正在努力证明某件事
  • 我给他看的发卡行收据是证明
  • 财务主管是验证者,因为他正在努力验证证明的真实性
  • 交易的隐藏内容在商场收据中
  • 该声明的事实/真相是我在购买商品上花费的总金额

毫无疑问,这个故事并不完整,但它给出了零知识技术和证明的基本概念。怎么说呢?财务主管对我购买的特定物品一无所知,我也不想让他知道,但我已经证明(或者我希望如此)在购买商品上花费了 X——不多也不少。

如需更充分的解释,你可以查看 Jean-Jacques Quisquater 和其他人在 1990 年发表的著名故事《阿里巴巴的洞穴》中使用的类比。该论文的标题是“如何向你的孩子解释零知识协议。”

什么是零知识技术?

它是一种隐私机制和一种加密技术,用于验证双方之间的交易,其中一方将声明发送给另一方,并证明该声明的真实性,而无需披露该声明的详细信息,而另一方验证该声明的真实性。证明者向验证者提供的仅仅是加密证明,而不泄露数据的内容。所提供的证明就是我们所说的“零知识证明”,简称“ZKP”。

什么是零知识证明 (ZKP)?

图片来源:Tekedia

零知识证明是证明者生成的加密原语,用于发送给验证者以证明语句的正确性。验证者确保这些证明的准确性并对其进行验证。

验证者以不同的方式验证声明,这可能包括挑战证明者执行一项任务,以表明他确实知道他所声称的语句的内容。零知识协议依赖于将某些数据作为输入并提供“真”或“假”作为输出的算法。这使得即使在没有完整信息的情况下也可以证明声明。

零知识协议必须满足的标准

零知识协议是证明者和验证者在通信过程中必须遵守的一组规则。该协议旨在确保语句的准确性,而不在双方之间共享任何私人信息。本质上,该协议将要求证明者证明他们拥有正确的数据,即使他们没有实际将数据呈现给验证者。

零知识协议必须满足以下三个标准才能发挥此作用:

  1. 完备性 (Completeness):如果证明者提出的语句或声明为真,则假设证明者和验证者都是诚实的并遵守协议规则,验证者将接受并验证所提供的证明。
  2. 可靠性 (Soundness):如果证明者提出的语句或声明为假(不诚实的证明者),则验证者不能接受所提供的证明。零知识协议不能被欺骗,因此证明者不能欺骗验证者相信或接受无效声明。
  3. 零知识 (Zero-knowledge):验证者对声明的内容(秘密)一无所知。换句话说,验证者对所讨论的语句“零知识”。

零知识技术的通用应用

多年来,零知识技术已在各个领域找到了用途,甚至超越了区块链。以下是可以应用零知识技术的行业。

  • 身份验证和数据隐私(在此处了解有关数据隐私中 ZK 技术的更多信息这里
  • 金融
  • 电子投票
  • 教育
  • 机器学习
  • 供应链(你可以在此处了解有关零知识证明在供应链管理中的作用的更多信息这里
  • 合规性
  • 医疗保健
  • 网络安全和许多其他行业

不同类型的零知识证明

不同类型的零知识证明在通信程度或其他因素方面有所不同。让我们广泛地了解两种更广泛的 ZKP 类型:交互式和非交互式 ZKP。

交互式零知识证明 (IZKP)

顾名思义,这种类型的 ZKP 涉及相关方(证明者和验证者)之间的一系列交互。它是第一个被利用的零知识证明。为了确定证明者不是在“虚张声势”,并且他知道所声明的内容,验证者可以挑战证明者完成任务。证明者反过来解决挑战并将其发送回验证者。如果验证者仍然不信服,则会提出证明者回答的另一个挑战。因此,会发生来回通信。在所有这些过程中,证明者都小心不共享声明/主张的秘密(内容)。

图片来源:ResearchGate

IZKP 由三个要素组成,它们是见证 (witness)、挑战 (challenge) 和响应 (response)。

见证 (Witness):只有证明者知道但不能与验证者共享的语句的秘密或详细信息称为“见证”。在实践中,证明者负责启动证明过程。他通过选择一个问题来做到这一点,他认为这个问题证明了他像他声称的那样了解见证,解决它,并将其与证明一起发送给验证者。

挑战 (Challenge):如果验证者不满意,他会提出他的挑战并将其抛给证明者。

响应 (Response):证明者解决挑战并响应验证者。该过程不断进行,直到验证者确实确信,毫无疑问,证明者像他声称的那样了解秘密(见证)。证明者参与其中,但在任何情况下都不会泄露见证。

交互式 ZKP 有两种类型:ZK 集合成员资格和 ZK 范围证明。

  • ZK 集合成员资格 (ZKSM)

零知识集合成员资格 (ZKSM) 于 2018 年由 ING 发布,ING 是一家位于荷兰的银行和金融集团。它发布的主要用于银行部门。

零知识集合成员资格 (ZKSM) 是证明的变体,用于证明数据值(可以是字母数字)是确定集合的成员,因此称为“集合成员资格”。这允许验证范围内的秘密数据,即使在数据集中,而无需揭示所讨论的数据。

事实上,ZKSM 本身是交互式的,但可以使用 Fiat-Shamir 启发式算法 使其成为非交互式的,因为最好避免来回通信,尤其是在区块链和一般的 DLT 应用程序中。

  • 零知识范围证明 (ZKRP)

零知识范围证明 (ZKRP) 是 ZKSM 的一个子类,用于证明指定范围或整数数据集中的数字或整数。这种类型的证明只能用于数值数据集。

例如,寻求申请贷款的员工可以向银行证明她的年薪高于 45,000 美元,但不需要透露确切的价值。

ZKSM 和 ZKRP 都被称为特定 ZKP,因为它们用于证明特定数据类型。

交互式 ZKP 的局限性

  1. 不断的通信要求证明者和验证者同时在线,这很难实现。
  2. 来回通信使得证明过程缓慢,因此可扩展性不强。

非交互式零知识证明 (NIZKP)

与 IZKP 不同,非交互式零知识证明不需要证明者和验证者之间的持续通信。证明者计算一个问题并将输出发送给验证者,验证者可以一步验证它并确信证明者确实知道见证,而无需来回交互。在非交互式零知识证明中没有挑战和响应。

图片来源:Spheron Network

使用 NIZKP,可以有多个验证者,并且任何一个验证者都可以检查以确认输出。这适用于许多方充当验证者的开源系统。下面解释了三种类型的非交互式 ZKP。

  • ZK-SNARK

ZK-SNARK 代表零知识简洁非交互式知识论证。这指的是一种 ZKP,证明者可以向验证者证明他知道秘密(见证),而无需透露秘密,也无需双方之间进行一系列通信。

ZK 代表 零知识

S 代表 简洁 (Succinct),它指的是零知识证明的大小很小(甚至小于秘密),并且不需要太多的计算或时间来证明。

N 代表 非交互 (Non-interactive),它意味着双方之间没有任何实际通信系列。

ARK 代表 知识论证 (ARgument of Knowledge),它意味着一个假的证明者很难欺骗系统,因为会有一个关于他应该知道秘密的论证。在这种情况下,论证指的是证明者与证明一起发送的计算,因为它通常足以证明知识的信息,而无需额外的通信。但是,一个拥有无限计算能力的坏人极有可能伪造对声明的了解,从而提供恶意证明。

Zk-SNARK 最初由 Zcash 广泛应用,被采用在使用屏蔽交易和私有智能合约的区块链中,因为它允许验证这些交易,而无需透露地址或其他屏蔽信息,否则,这将与屏蔽的整个想法形成对比。例如,Aleph Zero 的 DEX Common 实现了屏蔽池以增强隐私性,并且此功能受到保护,因为 Aleph Zero 作为区块链,利用私有智能合约,因此使用 zk-SNARK 至关重要。Zcash 也利用了 zk-SNARK 证明。ZK-SNARK 主要被旨在解决区块链隐私性问题的区块链所利用。

  • ZK-STARK

ZK-STARK 代表零知识可扩展透明知识论证。与 zk-SNARK 一样,zk-STARK 指的是零知识证明,证明者证明他知道一个秘密,而无需向另一方透露该秘密。与 zk-SNARK 不同,证明大小要大得多。

ZK 代表 零知识

S 代表 可扩展 (Scalable),它描述了其提高区块链可扩展性的能力。使用 zk-STARK,可以更快地在主链外计算和验证事务,并将其发送回以添加到主链的区块中。这对于旨在每秒处理大量事务的区块链特别有用。

T 代表 透明 (Transparent),它意味着适合公共(开放)区块链,因此消除了受信任设置的存在。

ARK 代表 知识论证 (ARgument of Knowledge),它表明如果不访问见证或隐藏信息,就不可能生成零知识证明。因此,证明只能由执行计算的实际证明者生成。

ZK-STARK 最初由 StarkWare 的教授兼联合创始人 Eli-Ben Sasson 创建,该公司利用 ZKP 解决区块链面临的两个主要问题,即可扩展性和隐私性。这是一篇由 Eli-Ben Sasson 及其同事于 2018 年发表的关于 STARK 的论文。ZK-STARK 主要被旨在解决区块链可扩展性而不是隐私性的区块链所利用。

  • 防弹证明 (Bulletproofs)

防弹证明由 Standford 应用密码学小组于 2017 年提出,它们是不需要受信任设置的非交互式零知识证明,可用于说服验证者加密值位于给定范围内,而无需解密它或透露有关该值的任何其他信息。防弹证明的大小甚至小于 zk-SNARK,但是,验证起来更加困难和耗时。

防弹证明、zk-SNARK 和 zk-STARK 被称为通用零知识证明,因为它们可以以各种方式应用于通用数据类型。

零知识证明代表了密码学领域的一项开创性创新,它为困扰数字世界的安全和隐私挑战提供了解决方案。从构思到概念化,ZKP 现在在医疗保健、金融、区块链、人工智能、网络安全和许多其他行业中都有各种应用。对于那些尚未进行全面测试的行业,它们具有巨大的潜力成为机密交互的层。零知识证明(如 ZK-STARK)定义了一个隐私和透明度——两个看似相互排斥的事件——可以共存的世界。

参考文献

零知识证明 | ethereum.org

zkrangeproof/README.md at master · thebalaa/zkrangeproof · GitHub

防弹证明 | Stanford 应用密码学小组

  • 原文链接: medium.com/@JuliaOfoegbu...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
JuliaOfoegbu
JuliaOfoegbu
江湖只有他的大名,没有他的介绍。