什么是零知识证明技术(ZK technology)?

零知识证明 (ZK) 技术是一种加密技术,允许各方在不了解信息本身的情况下证明和验证信息。

零知识证明技术(ZK technology),或称为零知识技术,是一个统称,用于描述使用一种名为零知识证明的加密方法的协议和服务。零知识证明允许一方向另一方证明一个事实,以便对方可以在不了解该事实本身的情况下进行验证。

ZK 技术的概念起源于 20 世纪 80 年代,随着公共区块链平台的兴起,加密技术的新应用出现,零知识协议的发展近年来获得了推动。

零知识证明最常用于引入区块链的隐私性可扩展性。然而,它们在身份认证等领域也有一系列潜在的应用场景。例如,一个人可以使用零知识证明来证明自己已经超过 21 岁而无需提供身份证件的副本。

零知识证明技术(ZK technology)的历史

零知识证明的概念最早由麻省理工学院的研究人员在 1989 年 2 月提出,他们发表了一篇名为《交互式证明系统的知识复杂性》的论文。论文的第一句话就阐明了问题陈述:“定理的证明包含的知识比仅仅证明定理是真的更多。”

例如,如果有人需要证明一个证件,比如他们已经超过 21 岁,他们只能通过出示显示出生日期的身份文件来做到。然而,他们无法在不披露实际年龄或出生日期的情况下证明自己已经成年。许多其他类型的证件也是如此。

研究人员将这一概念扩展为描述证明一个事实所需知识复杂度的计算理论。他们区分了“交互式”零知识证明,其中双方必须反复互动来证明和验证事实,以及“非交互式”零知识证明,这消除了互动的需要。这个问题可以通过一个称为“阿里巴巴山洞”的类比来说明。

阿里巴巴山洞问题

阿里巴巴山洞包括两个人:证明者佩吉(Peggy)和验证者维克多(Victor),他们站在一个形状像环的洞穴里。佩吉可以选择左边的 A 路径或右边的 B 路径到达一个魔术门,通过密码锁上,阻碍了穿过洞穴对面的路径。佩吉想要证明给维克多她知道魔术门的密码,但又不必告诉他密码。

为了证明她的知识,佩吉进入洞穴,而维克多在外面等待,所以他看不到她选择了哪条路径。然后他进入洞穴,并大声说出他希望佩吉使用哪条路径回来。

如果佩吉实际上不知道密码,她有 50% 的机会从维克多希望她使用的路径出现。然而,如果他们重复这个测试多次,佩吉每次都从正确的路径出现,维克多最终可以得出她一定知道密码的结论。

阿里巴巴山洞问题展示了密码学家研究计算目的的零知识证明时面临的一个核心限制——为了证明成功,佩吉和维克多必须在场并愿意进行多次测试。这些要求限制了零知识证明在计算中的实际应用。

定义零知识证明的标准

零知识技术的一个关键突破是在 1991 年,当曼努埃尔·布鲁姆(Manuel Blum)、保罗·费尔德曼(Paul Feldman)和西尔维奥·米卡利(Silvio Micali)发表了他们的论文《非交互式零知识及其应用》。

在这篇论文中,他们提议在证明者和验证者之间使用一个共享的加密密钥。证明者和验证者商定了一种证明事实而不泄露事实知识的方法,并根据这些规则生成共享密钥。然后证明者可以输入他们的共享密钥部分,验证者可以轻松验证与他们的匹配。

现在可以在单次互动中证明和验证事实,消除了多次互动的需要。减少互动的时间和负担使得在大规模计算中部署零知识证明成为可能。

共享密钥的工作方式类似于加密区块链钱包的公/私密钥配对。

在论文中,布鲁姆、费尔德曼和米卡利还列出了适用于所有零知识证明的一组标准:

  • 必须是完备的,意味着只要输入有效,证明将始终验证声明是真实的,因此可以信任。
  • 必须是可靠的,无效输入不能返回真值。
  • 必须是零知识——验证者只能了解声明的有效性或其他情况,而不是关于原始输入的任何信息。

零知识技术 (ZK) 类型

在区块链领域之外,零知识技术在身份验证和核裁军等领域有应用。在区块链中,零知识证明在近年来已发展并获得了相当大的实用性。目前,区块链协议使用了两种类型的零知识技术:ZK-SNARK 和 ZK-STARK。

ZK-SNARK

ZK-SNARK 是 Zero-Knowledge Succinct Non-Interactive Argument of Knowledge 的缩写。每个字母都是定义属性的一部分:

  • ZK - 协议是零知识的。验证者可以验证一个事实而不知道事实本身。
  • Succinct - 证明比事实本身更小,更容易验证。
  • Non-interactive - 由于共享密钥的存在,证明者和验证者只需要互动一次。
  • Argument of Knowledge - 协议必须符合上述“可靠性”标准,不能被作弊,未知事实的任何人创建 ZK-SNARK 都难度极高。

ZK-SNARK 由Zcash开发,作为一个加密解决方案来使加密货币交易更加私密。然而,ZK-SNARK 的一个主要缺点是,需要一个可信的设置使用协议或提供者来创建共享加密密钥,这意味着它们不是一种完全不需要信任的日常交易方式。

ZK-STARK

ZK-STARK 代表 Zero-Knowledge Scalable Transparent Argument of Knowledge。与 ZK-SNARK 不同的属性是:

  • 可扩展性 - 当有大量数据需要处理以进行验证时,ZK-STARK 在生成和验证证明方面更快。ZK-STARK 可以处理指数级更多的数据,而验证时间仅增加微量。
  • 透明性 - ZK-STARK 利用公开可验证的随机性来生成零知识证明所需的共享密钥。因此,它们消除了对可信设置的需要。

这些特性意味着 ZK-STARK 在某些方面提供了相对于 ZK-SNARK 的一些优势;然而,ZK-STARK 生成的证明比 ZK-SNARK 更复杂,因此通常会产生更高的交易成本。

零知识技术用于区块链可伸缩性

Layer 2平台利用 ZK-STARK 使以太坊更具可伸缩性,使用一种称为零知识卷积(ZK rollups)的解决方案。

这种方法被用来将以太坊交易打包成批次在二层平台而不是以太坊主网上执行,以缓解拥堵。然后二层平台向以太坊主网提供一个 ZK 证明,以更新区块链的整体状态。

包括二层平台 StarkNet、zkSync 和Polygon Zero在内的 ZK 卷积项目。

零知识技术的其他应用场景

虽然零知识技术尚未广泛部署,但它有潜力帮助保护个人信息。假设一个人可以提供零知识证明,证明自己已经成年、居住在特定国家,或者不在任何制裁名单上。在这种情况下,它可以消除人们向服务提供商提供政府签发身份证明副本的要求。反过来,这将减少文件被黑客攻击和在线泄露的风险,增强用户隐私。

同样,零知识证明可以使在线认证变得更容易,消除每次访问服务时暴露敏感登录凭据的需要。

零知识技术要点

  • 零知识证明是一种加密方法,使各方能在不了解信息本身的情况下证明和验证信息。
  • 零知识技术起源于 20 世纪 80 年代,发展成为两种主要的零知识证明类型:ZK-SNARK 和 ZK-STARK。
  • ZK-SNARK 用于使加密货币支付更私密,而 ZK-STARK 现在广泛部署在二层扩展平台中。零知识技术在身份验证和认证方面还有其他潜在的应用场景。