对比DID中的隐私算法
SD-JWT:
https://datatracker.ietf.org/doc/draft-ietf-oauth-selective-disclosure-jwt/
https://github.com/eu-digital-identity-wallet/eudi-lib-jvm-sdjwt-kt
算法实现:
- 数据封装:
- 数据被封装在JWT中,包含需要选择性披露的声明(claims)。
- 每个声明都可以独立加密或哈希处理。
- Merkle树结构:
- 为所有声明构建一个Merkle树,每个叶子节点代表一个哈希后的声明。
- 通过哈希值的组合,形成父节点,直到生成一个根哈希值(root hash)。
- 签名:
- 使用私钥对整个JWT(包括Merkle树的根哈希值)进行签名。
- 签名确保数据的完整性和真实性。
- 选择性披露:
- 用户可以选择性地披露特定的声明,并提供相应的Merkle证明(包含所需的兄弟节点哈希)。
- 验证者使用Merkle证明验证特定声明是否属于原始数据。
关键技术:
- JWT
- Merkle树
- 数字签名
BBS Signature:
算法实现:
- 签名生成:
- 生成密钥对(私钥和公钥)。
- 使用私钥对消息进行签名,生成一个签名值。
- 选择性披露:
- 允许用户选择性披露部分数据,并生成零知识证明(ZKP),证明所披露的数据是原始数据的一部分。
- 验证:
- 验证者使用公钥和零知识证明,验证所披露的数据的真实性和完整性。
- 确保签名和数据未被篡改。
关键技术:
- 零知识证明
- 数字签名
- 椭圆曲线密码学
BBS+ Signature:
https://github.com/mattrglobal/bbs-signatures
Org BBS+ Signature algorithm PPT: https://datatracker.ietf.org/meeting/114/materials/slides-114-cfrg-bbs-signature-scheme-pdf-00
https://github.com/decentralized-identity/bbs-signature
https://github.com/microsoft/bbs-node-reference
算法实现:
- 优化签名生成:
- 基于BBS签名算法,增加了对复杂电路和多项声明的支持。
- 使用私钥对多个声明进行签名,生成一个增强的签名值。
- 增强的选择性披露:
- 允许用户更高效地选择性披露部分数据,并生成更高效的零知识证明。
- 增强了对复杂数据结构和大规模应用的支持。
- 高效验证:
- 验证者使用公钥和优化后的零知识证明,验证所披露的数据的真实性和完整性。
- 验证过程经过优化,提高了性能和效率。
关键技术:
- 优化的零知识证明
- 数字签名
- 高效验证算法
PolygonID:
https://github.com/0xPolygonID/issuer-node
zkSNARK
https://github.com/iden3/snarkjs (Groth16, PLONK, FFLONK三种算法可选)
主要步骤:
- 设置(Setup):
- 生成一组公共参数(公共参考字符串CRS),包括两个部分:证明密钥(proving key)和验证密钥(verifying key)。公共参数由一个复杂的数学过程生成,通常基于椭圆曲线和配对。
- 这个过程涉及一个可信的第三方,确保公共参数的安全生成。
- 证明生成(Proving):
- 证明者使用具体的输入(满足某个电路或逻辑条件)和证明密钥生成一个简洁的证明(Proof)。
- 该证明由少量的群元素组成,可以非常高效地传输和存储。
- 验证(Verification):
- 验证者使用验证密钥验证证明的有效性,确保输入满足声明的逻辑条件。
- 通过检查一个简单的数学等式,只需检查少量计算,验证过程快速且高效。
SD-JWT(Self-issued, Decentralized JWT)、BBS+ Signature(BlsBBSIG-based Signature)和 PolygonID 是与去中心化身份(DID)相关的不同技术或概念。为了比较它们在DID应用中的适用性,我们可以考虑几个关键维度,如安全性、隐私性、易用性、互操作性和可扩展性。以下是对这些技术的比较,以及它们在DID应用中的评级:
特点 | SD-JWT | BBS | BBS+ | PolygonID |
---|---|---|---|---|
发明时间 | 2022 | 2004 | 2008 | 2012, 2016 |
标准链接 | oauth-selective-disclosure-jwt | Short Group Signatures | Constant-Size Dynamic k-TAA | Short Non-Interactive Zero-Knowledge Proofs On the Size of Pairing-based Non-interactive Arguments |
基本概念 | 基于JWT的选择性披露和加密技术,用于去中心化身份管理 | 基于BLS签名的短群签名方案 | BBS的改进版,提供更强的隐私性和安全性 | 基于Polygon网络的去中心化身份解决方案。零知识简洁非交互性知识论证,基于数学证明 |
选择性披露 | 支持,使用Merkle树和加密技术 | 支持,通过零知识证明实现 | 更高效和灵活的选择性披露 | 支持,使用zk-SNARKs技术实现 |
零知识证明 | 基本支持,通过Merkle树结构和证明 | 支持,通过零知识证明协议 | 增强支持,优化了零知识证明性能 | 强大支持,通过zk-SNARKs实现 |
隐私保护 | 高,允许选择性披露特定声明而不泄露完整数据 | 高,通过选择性披露和零知识证明保护隐私 | 更高,优化选择性披露和零知识证明实现,性能高效,应用灵活 | 极高,通过zk-SNARKs和去中心化验证实现 |
性能 | 中等,受Merkle树结构影响 | 高效,适用于大规模验证 | 优异,优化了签名和验证过程 | 优秀,但证明生成计算量大,验证效率高 |
互操作性 | 高,与现有的JWT标准兼容 | 需要更多集成工作,适用于专用系统 | 类似BBS,但更优化 | 高,与以太坊和其他EVM兼容区块链互操作 |
应用场景 | 可验证凭证、教育认证等 | DID系统中的隐私保护凭证、去中心化身份验证 | 高级DID系统、隐私保护凭证、复杂零知识证明环境 | 高度隐私保护应用,如身份验证、金融交易,如DeFi、NFT、DID管理等 |
落地项目 | Trinsic, European Digital Identity | Hyperledger Indy, Hyperledger Aries | PolygonID, snarkjs, rapidsnark | |
安全性 | 高,基于哈希函数和加密技术 | 高,基于BLS签名,提供了良好的安全性 | 更高,基于优化的配对密码学和零知识证明,提供了抗密钥泄露的安全性 | 极高,基于复杂数学证明,难以破解 |
抗量子性 | 低,当前加密技术未明确抗量子 | 低,对量子计算较为脆弱 | 低,与BBS相似,对量子计算较为脆弱 | 低,大多数现有的zk-SNARKs对量子计算不具备抗性 |
易用性 | 高,易于实现和集成 | 中等,需要深入的密码学知识 | 中等,需要理解优化的密码学原理 | 中等,需掌握复杂数学和密码学知识,开发和验证较为复杂,PolygonID 简化了使用的复杂性 |
可扩展性 | 中等,受限于Merkle树的复杂度和数据大小 | 高,可扩展到大规模验证环境。签名的大小相对较大,随着消息块的增加,签名大小也增加。 | 高,优化后适用于大规模应用和验证。签名大小显著减小,且长度固定 | 高,验证效率高,但证明生成需大量计算资源,Polygon 网络设计可用于处理高交易量 |
Groth16, PLONK 和 FFLONK 在PolygonID中的应用
特点 | Groth16 | PLONK Implementation PLONK paper |
FFLONK |
---|---|---|---|
发明年 | 2016 | 2019 | 2021 |
基本概念 | 基于零知识简洁非交互性知识论证,主要用于隐私保护 | 高效零知识证明系统,适用于去中心化应用 | 进一步优化的PLONK,专注于提高性能和验证效率 |
证明生成时间 | 较长,适合复杂证明 | 快速,适用于高频次证明生成 | 更快速,优化后的证明生成时间 |
验证时间 | 快速,但略慢于PLONK | 快速,验证时间较短 | 更快速,优化后的验证时间 |
计算资源需求 | 较高,可能需要更多计算资源 | 中等,适合大多数硬件环境 | 低,优化后的算法减少计算资源需求 |
证明大小 | 较大,增加存储成本 | 较小,适合链上存储,减少存储成本 | 最小,极大减少存储需求 |
可信设置 | 每个电路需要单独的可信设置 | 一次可信设置,可重复使用 | 一次可信设置,可重复使用 |
灵活性 | 较低,需要为特定电路优化 | 高,支持复杂电路和应用 | 高,适用于多种应用场景 |
安全性 | 高,基于配对和复杂数学难题 | 高,基于多项式数学难题 | 更高,基于优化的数学基础 |
用户体验 | 设置复杂且生成时间较长,用户体验较差 | 简化设置过程和快速验证,提供良好用户体验 | 优化的性能和简化的设置过程,用户体验最佳 |
适用场景 | 适用于特定需求明确且不需频繁更新的场景 | 适用于高频交互和高性能需求的应用 | 适用于各种高效、高频次的零知识证明应用场景 |
在PolygonID中的应用 | 适用于复杂隐私保护和金融交易场景 | 适用于实时身份验证和高频交易 | 适用于高效、高频次的身份验证和隐私保护场景 |