零知识证明 零知识证明 101

piggy · 2024年07月06日 · 17 次阅读

零知识证明是一种加密机制,它能证明你知道某个秘密而不透露该秘密。这是通过使用复杂的数学原理实现的。感谢那些为我们研究这些复杂数学的密码学家。

一个简单的零知识证明示例是,你可以通过加密证明自己年龄超过 18 岁,而不透露你的出生日期、实际年龄或任何其他信息。

一个零知识证明应具备以下属性:

  • 完整性 Completeness:如果你年龄超过 18 岁,验证者将高度相信这一点。
  • 可靠性 Soundness:作弊的概率极低。
  • 零知识 Zero knowledge:你的确切年龄不会被分享。

零知识证明 101

World ID 为什么使用零知识证明?

在 orb 验证你是一个独特的个体后,你的身份承诺会被添加到一个已验证个体的公共列表中。每当你想证明你是独一无二的人时,你的 World APP 会生成一个零知识证明,证明你知道某个身份承诺的密钥,而不透露具体是哪一个。从整体上看,World ID 的零知识证明证明了以下三点:

  • 成员身份 Membership:"我是这个群体的成员"。你证明自己是已验证身份列表的成员。
  • 一次性 One-shot:"在这种情境下,我之前没有这么做过"。这是通过 nullifiers(无效化器)实现的。无效化器是随机数,每个用户在每个情境下(即每个操作 ID)的唯一标识。
  • 信号 Signal:"我想包含这条信息"。这允许用户向请求中添加额外数据。当领取空投时,它可以是一个接收地址,或者在参与治理时的投票。这可以减轻攻击者拦截带有证明的交易并更改投票结果的攻击。

它是如何工作的?

用户的 World ID 存储在他们的设备中,且仅存储在设备中。用户安装兼容的身份钱包(例如 World APP)。一个独特且随机的私钥在设备上生成,并安全存储。身份钱包可能会有自己的恢复机制,但协议级别的恢复功能很快就会实现。

从用户的私钥中,生成一个公共身份承诺 identity commitment,并在链上发布(目前是在以太坊主网),作为协议的真实来源。身份承诺类似于非对称密钥对中的公钥或钱包地址,但在 World ID 协议中,这个值不会被广泛共享。私钥作为每次 World ID 验证的输入,特别是作为零知识证明的一部分。

用户的钱包(如 World APP)为每次验证生成一个零知识证明。验证不能跨应用或操作链接,这意味着用户的隐私在密码学上是受保护的。

用户验证后,会向应用返回一个无效化哈希。无效化哈希是用户在该应用中的唯一标识符(如果使用 Incognito Actions,还包括操作)。无效化哈希是特定于应用的,不能与同一人从其他应用中生成的无效化哈希链接,即使是串通的应用也无法链接。

如果你想了解更多关于零知识证明的信息,可以参考这个优秀的资源:https://github.com/ingonyama-zk/ingopedia

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请 注册新账号