zkPass是一种基于MPC(多方计算)和ZKP(零知识证明)的分布式KYC解决方案,允许用户通过其持有的Web2身份颁发者的凭证,向第三方(其他项目方/验证者)匿名证明其身份声明。
在将Web2身份凭证转换为匿名凭证的整个过程中,不需要集中式服务器(传统KYC平台)或可信硬件(TEE等)。zkPass协议是传统KYC服务提供商的完美替代方案,以完全分散的方式为企业和用户提供更高级别的KYC解决方案。
用户在不泄露敏感个人信息的情况下控制KYC数据,避免不可预测的潜在刑事定罪和犯罪。
本文概述了zkPass协议的总体架构及其工作原理。
符号和定义
P: 校准员(个人)
五: 验证者(商业)
S: TLS服务器
Q: P启动查询
R: S答复的数据
enc_key:TLS中加密数据的密钥
mac_key:TLS中的mac密钥
t: 消化
协议概述
关键技术
TLS:传输层安全是一种在两个通信应用程序之间提供保密性和数据完整性的协议。TLS是网络世界中通信的基石。
MPC:多方计算允许多个参与者共同参与计算,而无需透露其隐私。它主要使用乱码电路和不经意传输算法。
ZKP:零知识证明,指证明者在不向验证者提供任何有价值信息的情况下说服验证者断言是正确的能力。其具体实现将基于PLONK算法。
关键组件
zkPass套件:以插件/SDK的形式,在TCP层和HTTPS层之上构建三方TLS协议的验证程序。业务用户根据需要选择或定制合适的KYC模板,以参数形式将模板配置到zkPass套件中,并向区块链上的智能合约发起KYC请求。
TheGraph:用于查询和索引区块链网络数据的协议。通过生成子图,对链上的数据进行索引,从而可以直接查询难以查询的数据。它使链上数据查询快速、可靠和安全。zkPass使用图形协议来索引链上KYC请求和zkPass后端查询的结果。
zkPass后端:通过查询链上KYC请求和由图索引的结果,并聚合与该地址对应的开放用户数据,它为用户生成身份验证卡,防止重复KYC身份验证,提高ZKPpass系统的KYC效率,并增强用户体验。
区块链智能合约:由KYC模板合约、任务管理合约和ZK验证合约组成的链上智能合约。
节点集群:zkPass协议中验证器的实现。当用户调用链上智能合约接口以发起KYC请求时,网络中的节点监视任务管理合约,以确定是否选择它们参与后续KYC任务。如果选中,他们将等待zkPass Kit发起的请求,并参与随后的多方握手,查询数据,并在提交ZKP后披露他们持有的mac_key。
Web2发布者:只要身份发布者的服务器满足TLS协议,用户就可以从服务器获取身份信息。
工作原理
P和V运行ECDH协议(椭圆曲线Diffie-Hellman),P和V分别计算EC点。
P和V运行满足加性同态的Paillier加密算法,并将密钥分为两部分:P和V分别计算预主密钥的一半。
P和V运行MPC协议并从它们各自的预主密钥计算PFR函数以获得会话密钥。
(P-V)使用GCM模式(伽罗瓦/计数器模式)对GCTR组进行加密,并计算GHASH以获得加密的TLS请求MAC。
这里不使用MPC来提高效率,而是通过OT协议来实现。
会话密钥+TLS请求MAC,最后实现满足(P-V)-S的三方TLS协议。
P基于TLS请求和TLS响应,通过PLONK算法生成ZKP(零知识证明)。
链上智能合约验证了ZKP的正确性。
ZKP的实现
在EVM兼容链上:证明者将在本地创建zk证明(基于plonk),然后将链上的zk证明保存为承诺。之后,验证者的合同将阅读确认是否通过的承诺。
在Mina协议上:zkApp使用typescript实现零知识证明,对开发者更友好;Mina的零知识基于PLONK算法,该算法具有规则的证明大小,因此适用于认证应用场景。由于验证消息摘要使用CBC-HMAC算法,我们必须实现我们的CBC-HMAC算法电路。p继承电路以创建电路,私钥输入(Q',R',mac_Key,b),公钥输入(enc_Key、token,Q,R)。它还创建要发送到合同的验证密钥。v继承SmartContract生成验证契约,从P接收验证密钥,并验证是否通过。
结论
随着数据隐私保护成为Web3用户日益重要的话题,几乎所有企业都必须在数字化道路上面临数据安全和主权治理等复杂挑战。
zkPass利用区块链、ZKP、MPC和其他技术帮助降低身份敏感度,避免敏感数据泄漏,将私人数据的控制权返还给所有者,并最终创建一个方便且可共同控制的数字身份管理系统。
在没有传统身份颁发者的任何编程支持的情况下,zkPass可以最大限度地减少对身份颁发者可用性的依赖,并使匿名凭证仍然与身份授权的使用兼容。与之前的任何KYC系统相比,zkPass旨在真正构建一个完全分散、隐私保护的KYC解决方案,让Web3原生用户完全享受数据主权的控制。
