零知识证明 (ZKP) 是一种密码学工具,允许一方(证明者)说服另一方(验证者)某个语句的有效性,而无需泄露除该语句本身为真之外的任何额外信息。ZKP 是数学难题,正确解决后可以证明接收方是真实的。这使其成为保护个人隐私和增强各种应用程序安全性的宝贵工具。[1]
知识证明是一种密码学证明,其中“证明者”说服“验证者”他知道某些信息。证明者是创建密码学证明的实体或程序。验证者是检查证明内容的实体或程序。知识证明具有两个基本特征,完整性和可靠性,并且知识证明 (PoK) 和零知识证明 (ZKP) 之间的关键区别在于零知识。如果一个语句为真,那么验证者除了该语句为真之外,不会从证明者那里学到任何东西。[8][12]
ZPK 的概念由 Shafi Goldwasser、Silvio Micali 和 Charles Rackoff 在他们 1985 年的论文“交互式证明系统的知识复杂性”中提出。[12]
证明者可以向验证者证明他/她知道值 X,而无需提供任何信息,除了他/她知道值 X 这一事实。这个概念背后的主要本质是在不泄露知识的情况下证明拥有知识。这里的主要挑战是在不说明 X 是什么或任何其他信息的情况下显示值 X 的知识。[2]
零知识证明 (ZKP) 是自相矛盾的概念,在包括密码学、区块链技术和隐私保护系统在内的各个领域具有巨大的应用潜力。
有几种类型的 ZKP,每种都有其自身的优点和缺点。一些最常见的类型包括:
ZKP 具有广泛的潜在应用,包括:
虽然 ZKP 提供了显着的好处,但它们也面临着一些挑战,例如: