零知识证明是一种加密机制,它能证明你知道某个秘密而不透露该秘密。这是通过使用复杂的数学原理实现的。感谢那些为我们研究这些复杂数学的密码学家。
一个简单的零知识证明示例是,你可以通过加密证明自己年龄超过 18 岁,而不透露你的出生日期、实际年龄或任何其他信息。
一个零知识证明应具备以下属性:
在 orb 验证你是一个独特的个体后,你的身份承诺会被添加到一个已验证个体的公共列表中。每当你想证明你是独一无二的人时,你的 World APP 会生成一个零知识证明,证明你知道某个身份承诺的密钥,而不透露具体是哪一个。从整体上看,World ID 的零知识证明证明了以下三点:
用户的 World ID 存储在他们的设备中,且仅存储在设备中。用户安装兼容的身份钱包(例如 World APP)。一个独特且随机的私钥在设备上生成,并安全存储。身份钱包可能会有自己的恢复机制,但协议级别的恢复功能很快就会实现。
从用户的私钥中,生成一个公共身份承诺 identity commitment,并在链上发布(目前是在以太坊主网),作为协议的真实来源。身份承诺类似于非对称密钥对中的公钥或钱包地址,但在 World ID 协议中,这个值不会被广泛共享。私钥作为每次 World ID 验证的输入,特别是作为零知识证明的一部分。
用户的钱包(如 World APP)为每次验证生成一个零知识证明。验证不能跨应用或操作链接,这意味着用户的隐私在密码学上是受保护的。
用户验证后,会向应用返回一个无效化哈希。无效化哈希是用户在该应用中的唯一标识符(如果使用 Incognito Actions,还包括操作)。无效化哈希是特定于应用的,不能与同一人从其他应用中生成的无效化哈希链接,即使是串通的应用也无法链接。
如果你想了解更多关于零知识证明的信息,可以参考这个优秀的资源:https://github.com/ingonyama-zk/ingopedia。