跳转到主要内容

热门内容

今日:


总体:


最近浏览:


Chinese, Simplified

category

在我看来,过去十年中,密码学和分布式计算领域最重要的发展之一是开发了零知识证明的实用方案,从而实现隐私敏感的可验证计算。我正在撰写一系列关于它的文章,主要是为了加深自己对这个有点复杂主题的理解,并希望在此过程中,我的总结以及所包含的链接和指针也能对其他人有所帮助。

可验证计算 (VC):假设您正在发送一些数据以在远程位置(例如云服务器)进行计算,然后它会返回结果。您如何知道结果来自正确执行的计算?当然,您可以自己重新运行计算以确保无误,但这样做会很累赘。还有其他方法吗?事实证明确实存在一种加密方法,其工作原理如下。

Overview of a Zero-Knowledge Verifiable Computation Scheme

使用加密证明和验证的可验证计算:该方案涉及证明者和验证者,通常包括三个主要步骤或过程:

  • 密钥生成:此过程获取要计算的函数,并生成评估和验证密钥
  • 带证明的计算:在证明者节点执行的此过程对给定输入 u 执行所需的计算 F(u),并使用评估密钥生成正确计算的证明。
  • 验证:然后,验证者使用证明者的证明以及生成步骤中的验证密钥来验证计算确实正确完成。

可验证计算方案应具有某些属性才能发挥作用:正确性或完整性意味着假设密钥有效生成并且证明正确生成,则验证者将始终接受证明;安全性或健全性意味着如果没有执行正确的计算,任何对手都无法生成将被接受的证明;效率要求验证应该比原始计算更快(否则我们就不需要这个复杂的方案了!)。

  • 零知识 VC:对于需要保密或隐私的用例,还有一个额外的步骤可以使可验证计算更加强大。考虑进行依赖于两组输入的计算,例如 F(u,v),其中 u 是公开的信息,v 是私有信息(只有证明者知道)。在这种情况下,如果上述步骤的执行方式使得只有执行计算的证明者知道 v,而验证者不知道,则称其为零知识可验证计算方案。
  • zk-SNARK:零知识简洁非交互式知识论证 (zk-SNARK) 是上述零知识可验证计算原理的加密实现。zk-SNARK 的关键属性是简洁性,即证明很短;非交互性,即可以通过证明者向验证者发送的一条消息来验证证明;和零知识,确保在生成证明时不会泄露任何有关私人输入的信息。通过使用 zk-SNARK,人们可以实现可验证和值得信赖的计算,同时保护敏感信息的隐私。

已经开发了许多 zk-SNARK 方案,或者更普遍地称为非交互式零知识 (NIZK) 证明方案,包括 Pinnochio (2013)、Groth16 (2016)、Sonic (2019)、Marlin (2019)、PLONK (2019)、STARK (2019)、Aurora (2019)、Halo (2019)。从实践角度来看,已经开发了许多软件库和工具,例如 CIRCOM、Arkworks 和 ZoKrates,以简化使用它们的应用程序的实现。

  • 应用:zk-SNARK 和零知识可验证计算具有广泛的潜在应用。这些包括构建隐私敏感的区块链协议(两个突出的例子是 ZCash 和 Mina)以及通过 zk-Rollups 在区块链上实现第 2 层计算扩展。但这些应用远远超出了区块链,例如无需向用户发布权重即可实现可验证的机器学习模型推理。

关于本系列:本文旨在对零知识可验证计算的含义进行温和而广泛的概述,并指出 zk-SNARK 提供了一种实现该计算的实用方法。我们看到,这是过去几年发展迅速的一个领域,2019 年左右开发了许多方案。在本系列的后续文章中,我计划详细介绍 zk-SNARK 的工作原理。我们将从密码学所需的一些基本数学开始,然后特别研究椭圆曲线密码学,随后是讨论多项式承诺、计算的算术化方案(如 R1CS 和 QAP)、可信设置和透明替代方案等关键主题的文章,回顾不同的方法,以及当今开发人员可用的一些软件库和工具。

下一篇文章:接下来,我们将回顾密码学所需的一些基本数学。

进一步阅读

现在有大量文章和论文从不同抽象层次介绍零知识证明和 zk-SNARK。以下是我发现有用的几篇。

 

 

本文地址
最后修改
星期一, 一月 27, 2025 - 18:50
Article