WEBKT

zk-SNARK 可信设置:多方计算筑牢隐私保护基石

10 0 0 0

什么是 zk-SNARK?

为什么要进行可信设置?

可信设置的流程是怎样的?

可信设置面临哪些挑战?

多方计算(MPC)如何解决这些挑战?

MPC 可信设置的流程

真实案例:Zcash 的可信设置仪式

可信设置的未来发展

总结

最近几年,零知识证明(Zero-Knowledge Proof,ZKP)技术,特别是 zk-SNARK(Zero-Knowledge Succinct Non-Interactive Argument of Knowledge)技术,火遍了整个区块链和密码学领域。你可能经常听到“零知识证明”、“zk-SNARK”、“电路”、“可信设置”等等这些词汇,但它们究竟是什么意思,相互之间又有什么关系呢?今天咱们就来聊聊 zk-SNARK 的核心概念之一——可信设置,以及它与多方计算(MPC)之间千丝万缕的联系。

什么是 zk-SNARK?

在深入了解可信设置之前,我们先简单回顾一下 zk-SNARK 的概念。想象一下这样一个场景:你想向朋友证明你拥有某个秘密信息(比如一个复杂谜题的答案),但又不想泄露这个秘密的具体内容。zk-SNARK 就能帮你实现这个目标。

zk-SNARK 是一种特殊的密码学证明技术,它允许你(证明者)向另一个人(验证者)证明某个陈述是真实的,而无需透露任何有关陈述本身的额外信息。举个例子,你可以用 zk-SNARK 证明你知道一个特定哈希值的原像,而无需告诉验证者这个原像是什么。

zk-SNARK 的名字里包含了几个关键特性:

  • Zero-Knowledge(零知识): 验证者除了知道陈述是真实的之外,不会获得任何其他信息。
  • Succinct(简洁): 证明的大小很小,验证过程非常快。
  • Non-Interactive(非交互式): 证明者只需生成一个证明,验证者就可以独立验证,无需双方进行多轮交互。
  • Argument of Knowledge(知识论证): 证明者必须“知道”某个秘密信息(称为“witness”),才能生成有效的证明。

为什么要进行可信设置?

zk-SNARK 的强大功能背后,依赖于一个关键的环节——可信设置(Trusted Setup)。这个过程会生成一些公共参数,这些参数是生成和验证 zk-SNARK 证明所必需的。你可以把这些公共参数想象成一把“锁”,只有拥有“钥匙”的人才能制造出能够开锁的“钥匙”(即证明)。

问题来了,如果生成这把“锁”的人偷偷保留了“钥匙”,他岂不是可以制造出任意的“假钥匙”,从而伪造证明,欺骗验证者吗?没错,这就是可信设置的核心风险所在。如果可信设置过程不安全,整个 zk-SNARK 系统的安全性就会受到威胁。

更具体地说,可信设置会生成一些被称为“toxic waste”(有毒废料)的秘密参数。这些参数必须被安全地销毁,否则,知道这些参数的恶意方就可以伪造证明。就好比你家房子的钥匙模具,如果落入坏人手中,后果不堪设想。

可信设置的流程是怎样的?

可信设置通常分为两个阶段:

  1. 生成 CRS(Common Reference String,通用参考字符串):这是可信设置的核心产物,包含了用于生成和验证证明的公共参数。你可以把它理解为 zk-SNARK 系统的“基石”。
  2. 销毁“toxic waste”:生成 CRS 的过程中产生的秘密参数必须被安全地销毁,确保没有人能够获取它们。

可信设置面临哪些挑战?

可信设置的最大挑战在于如何确保“toxic waste”被彻底销毁,并且没有人能够获取它们。常见的风险包括:

  • 单点故障:如果可信设置由单个参与者完成,那么这个参与者就拥有了“上帝模式”,可以随意伪造证明。一旦这个参与者被攻击或背叛,整个系统就会崩溃。
  • 内部攻击:即使有多个参与者,如果其中有人串通,或者某个参与者的设备被黑客入侵,也可能导致“toxic waste”泄露。
  • 人为错误:在销毁“toxic waste”的过程中,任何疏忽或错误都可能导致秘密参数泄露。

多方计算(MPC)如何解决这些挑战?

为了解决上述挑战,人们引入了多方计算(MPC)技术。MPC 允许多个参与者共同参与计算,而无需向其他参与者透露自己的输入。在可信设置中,MPC 可以让多个参与者共同生成 CRS,而无需任何一方知道完整的“toxic waste”。

想象一下,几个人想一起计算他们的平均工资,但又不想告诉别人自己的具体工资是多少。MPC 就能帮助他们实现这个目标。每个人只需要输入自己的工资,MPC 协议就会自动计算出平均值,而无需每个人透露自己的工资。

在 zk-SNARK 的可信设置中,MPC 的工作原理类似。每个参与者都贡献一部分随机性,共同生成 CRS。只要其中至少有一个参与者是诚实的,并且没有泄露自己的随机性,那么整个可信设置就是安全的。即使其他所有参与者都串通,也无法伪造证明。

MPC 可信设置的流程

基于 MPC 的可信设置通常遵循以下步骤:

  1. 初始化:每个参与者生成自己的秘密份额。
  2. 多轮计算:参与者之间进行多轮交互,每轮都会生成一些中间参数。
  3. 生成 CRS:经过多轮计算后,最终生成 CRS。
  4. 销毁秘密份额:每个参与者销毁自己的秘密份额。

真实案例:Zcash 的可信设置仪式

Zcash 是第一个广泛使用 zk-SNARK 技术的加密货币,它的可信设置仪式非常有名。Zcash 团队采用了 MPC 方案,邀请了多个参与者共同生成 CRS。为了确保安全性,他们采取了各种措施,包括:

  • 隔离环境:仪式在一台没有连接互联网的计算机上进行。
  • 多方参与:邀请了来自不同背景的多个参与者。
  • 公开透明:整个过程被详细记录,并向公众公开。
  • 销毁证据:仪式结束后,用于生成 CRS 的计算机被物理销毁。

尽管 Zcash 的可信设置仪式已经非常严谨,但仍然存在一些争议。有人质疑参与者之间是否存在串通的可能性,也有人担心仪式过程中可能存在未被发现的安全漏洞。这些争议表明,可信设置仍然是一个充满挑战的领域。

可信设置的未来发展

为了进一步提高可信设置的安全性,研究人员正在探索各种新的方法,包括:

  • 通用可信设置:这种方法允许一次性生成 CRS,然后将其用于多个不同的 zk-SNARK 应用,从而减少了重复进行可信设置的需要。
  • 可更新的可信设置:这种方法允许在不影响现有证明的情况下,更新 CRS,从而提高了系统的灵活性和安全性。
  • 无需可信设置的 zk-SNARK:这是 zk-SNARK 研究的“圣杯”,如果能够实现,将彻底消除可信设置带来的安全风险。目前,已经有一些无需可信设置的 zk-SNARK 方案被提出,但它们通常在性能或安全性方面存在一些折衷。

总结

zk-SNARK 的可信设置是确保系统安全性的关键环节。虽然 MPC 技术大大降低了可信设置的风险,但仍然存在一些挑战。随着技术的不断发展,我们有理由相信,未来会出现更加安全、高效和可靠的可信设置方案,为 zk-SNARK 技术的广泛应用奠定坚实的基础。对于咱们普通用户和开发者,了解可信设置的基本原理,有助于我们更好地评估和使用基于 zk-SNARK 的应用,避免不必要的风险。下次当你再听到“可信设置”这个词时,希望你不再感到陌生和困惑。

赛博隐士 zk-SNARK可信设置多方计算

评论点评

打赏赞助
sponsor

感谢您的支持让我们更好的前行

分享

QRcode

https://www.webkt.com/article/8656