零知识证明,有时也称为 zk 协议,是一种发生在证明者和验证者之间的验证方法。在零知识证明系统中,证明者能够向验证者证明他们拥有特定信息(例如数学方程的解)的知识,而无需透露信息本身。现代密码学家可以使用这些证明系统来提供更高级别的隐私和安全性。
零知识证明的概念首次描述于 1985 年由 Shafi Goldwasser 和 Silvio Micali 发表的麻省理工学院论文中。他们证明,可以在不公开该数字或任何有关该数字的附加信息的情况下证明该数字的某些属性。本文还介绍了一个具有数学意义的发现,即证明者和验证者之间的交互可以减少证明给定定理所需的信息量。
zk 证明必须满足两个基本要求:完整性和健全性。完整性是指证明者以高度可能的准确性证明对相关信息的了解的能力。为了证明是可靠的,验证者必须能够可靠地确定证明者是否真正拥有该信息。最后,为了真正实现零知识,证明必须实现完整性和可靠性,且相关信息在证明者和验证者之间不进行通信。
零知识证明主要用于隐私和安全至关重要的应用程序。例如,身份验证系统可以使用 zk 证明来验证凭证或身份,而无需直接泄露它们。举一个简单的例子,它可以用来验证一个人是否拥有计算机系统的密码,而无需透露密码。
零知识证明的一个突出的现实用例可以在加密货币和区块链技术的世界中找到。使用一种称为零知识简洁非交互式知识论证 (zk-SNARK) 的证明,Zcash 等注重隐私的加密货币能够为用户提供更高隐私级别的区块链交易。自 2017 年拜占庭更新以来,以太坊也正在使用 zk-SNARK 证明。