在现实生活和数字世界中,我们经常想向他人证明事情。 在进入办公楼之前,员工通常会在进入之前提供某种类型的身份证件。
当用户尝试登录 Facebook 或 Twitter 等应用程序时,这些服务必须首先要求用户使用密码登录,并且偶尔会向他们的移动设备发送一次性密码 (OTP)。
提供证据的一个缺点是我们经常泄露其他类型的信息。 向网站提供密码仍然意味着网站本身在其服务器中保留了哈希密码的副本。 如果有人入侵办公楼的员工 ID 扫描仪,他们或许能够获得每个人的私钥。
零知识证明或 ZKP 提供了一种无需提供额外信息即可验证身份或交易的方法。 由于 ZKP 在密码学中的应用,ZKP 已被 块链 创建安全且可扩展的验证协议。
什么是零知识证明?
1985 年,麻省理工学院的研究人员 Silvio Micali、Charles Rackoff 和 Shafi Goldwasser 在他们的论文中首次提出了零知识证明 “交互式证明系统的知识复杂性”
本文介绍了知识复杂度的概念。 这是指从证明者转移到验证者的关于证明的知识量。 零知识证明旨在允许一方证明特定陈述对另一方是真实的,而无需披露任何其他信息。
ZKP 可以用作当前身份验证系统的安全替代方案,也可以添加到区块链协议中以保持交易的私密性。
ZKP 是如何工作的?
真实示例
为了说明零知识证明的工作原理,让我们看一个 ZKP 的抽象示例。
假设你有一个红绿色盲的朋友。 你有两个相同的球,只是颜色不同:一个是红色的,一个是绿色的。 对你的朋友来说,他们看起来一模一样,但作为一个没有色盲的人,你可以很容易地把他们区分开来。
你有没有可能向你的朋友证明它们是不同的颜色而不透露哪个球是红色或绿色的?
事实上,有一种方法可以在不透露球颜色的情况下证明这一点。 首先,你必须让你的朋友把两个球都放在背后,告诉他把球拿出来再藏起来。 接下来,您告诉您的朋友,他可以选择再次展示同一个球或与另一个球交换。
每次显示新球时,您都可以告诉他是否换了球。 如果你一直猜对了,那么球的颜色就越来越有可能。 您的朋友现在应该确信这些球的颜色不同,而不必告诉他哪些球具有哪种颜色。
实际应用
零知识证明的大多数实际示例分为两种类型。
首先,在设计协议时可以使用 ZKP。 我们可以确保各方不能作弊或利用协议。 其次,ZKP 可用于识别。
例如,我们可以使用 ZKP 安全地登录 Web 应用程序,而无需透露密码本身。
让我们看一些如何使用零知识证明的例子。
电子投票
ZKP 的一个常见应用是它们在在线投票中的可能作用。 假设我们即将举行公投,用户可以对提议的政策进行投票。 每个符合条件的选民可以在选票上投 1 票或 0 票。
使用 ZKP,选民可以在不透露身份的情况下证明他们投票的权利。 这确保了每次投票都是真正匿名的。 额外的 ZKP 也将用于证明特定用户的投票是最终投票的一部分。
关于选票的内容本身,投票系统还可以生成一个零知识证明,证明每张选票包含 1 或 0。这是在无需知道选票本身的内容的情况下完成的。
区块链隐私
比特币和以太坊等区块链本身并不支持私人交易。 只要您的比特币钱包是公开的,任何人都可以访问区块浏览器,例如 Blockstream 查看钱包所属的所有交易。
同时,使用银行等服务或 Cash App 或 Venmo 等支付服务可以让您进行私下交易。 然而,这种便利是以将您的信息透露给集中式服务为代价的。
我们可以通过将 ZKP 添加到区块链协议中来将匿名性与去中心化相结合。 诸如 ZCash 之类的加密货币使用 ZKP 来创建私人交易,让代币持有者能够保持其匿名性。 其中一些加密货币使用一种称为 zk-SNARK 的 ZKP。
这些 ZKP 不需要证明者和验证者之间的交互。
零知识汇总
ZK-rollups 是一种可扩展性解决方案,它允许以最低的 gas 费用立即验证链下交易。 它们是一种组合大量第 2 层事务并将它们提交到第 1 层协议的方法。
除了提供隐私之外,ZKP 还允许扩展复杂系统。 区块链协议可以使用 ZKP 证明用户已经结算了正确的交易、拥有适当的余额等等。 这些安全且可扩展的解决方案只能通过在 ZKP 中链下完成的数学证明来实现。
路印协议等协议使用零知识证明来帮助处理链下交易,而不必损害安全性。
零知识证明的好处
- ZKP 取代了不太可靠的身份验证形式,例如 PIN 或身份证
- ZKPS 增加了区块链的可扩展性
- ZKP 的实现需要简单的加密方法
- ZKPS 的使用可以使系统更加安全,因为不需要在系统中存储不必要的信息。
结论
数据隐私已经是集中式和分散式系统中的一个主要问题。 零知识证明为不同方提供了一种方法来证明或验证交易和身份,而无需透露所述交易或身份。
随着区块链技术得到更广泛的应用,采用 ZKP 来安全地处理验证将是解决可扩展性问题的关键。
发表评论