本文档记录了一系列关于可验证凭证(Verifiable Credentials)撤销(Revocation)问题的讨论和研究,重点关注在不同场景下(在线/离线 Prover/Verifier)如何实现隐私保护的可撤销凭证。
会议 1
回顾问题并找出用户故事
1. 可重用的证明
用户故事
- 我证明了一笔高价值交易。验证者泄露了证明。现在所有人都知道我有很多钱
- 我是一个政治团体成员。我使用会员证明参加一个活动,但我不希望这个证明在未来被用于公开验证地将我与这个团体联系起来。
2. 可组合的可验证凭证
我们确定了三种情况:
- 在保持验证者高效的同时进行组合
- 在保持隐私的同时进行组合
- 凭证的组合性
- 获取多个凭证并创建一个 presentation
- presentation 的组合性
- 获取多个 presentation 并创建一个 presentation
- 多方组合性
-
子问题
- 在组合 presentation 中使用的具有多个颁发者的信任根
用户故事:
- 隐私
- 证明你确实居住在一个非制裁名单上的国家。不要显示是哪个国家。这使用了使用不同标准的不同的国家身份系统。
- 验证者效率
- 在 Semaphore 中,你想证明你参加了所有 devconnect 活动,但你不想在智能合约中支付更高的 gas 费用。
3. 颁发-presentation 的可链接性
用户故事:
- 我获得了一个政府 ID。我用它来证明我已年满 18 岁,可以进入酒吧。我不希望政府知道我去过酒吧。
- 在 anon adhaar 中,为了避免凭证被第三方使用,它们需要是新颁发的。这导致持有者在验证时请求凭证,从而创建了颁发者-验证者的关联。
- 作为用户,我要求颁发者签署我的一个凭证,并且我不希望颁发者通过检查所颁发凭证的特定属性(例如,颁发时间戳,最小化匿名性的特定属性)来潜在地跟踪我的活动。
4. 撤销
用户故事:
- [验证者] 我有一项租车服务,我希望允许人们以最少的披露来租车。我想私下检查他们的驾驶执照是否有效(没有因驾驶违规而被吊销)
- [持有者] 我的凭证被盗了,我希望阻止它被用来花费我的任何资金。我们必须在不让颁发者链接 presentation 的情况下实现这一点。
5. 符合 eIDAS 2.0
会议 2
选择一个问题并进行研究
- 可重用的证明
- 存在解决方案
- 但它们在现实世界中是否实用?
- 解决方案因 TEE 攻击而受损
- 可以解决吗?
- 可组合的可验证凭证
- 颁发-Presentation 的可链接性
- 撤销
我们选择撤销。
关于撤销的研究
-
现有解决方案:


撤销上下文中的隐私
- 颁发者(参见 CRSet 的相关研究)
- 不透露哪些凭证被撤销
- 不透露有多少凭证被撤销
- 不透露何时凭证被撤销
- 持有者(传统观点)
- 不向颁发者透露凭证的使用情况
- 不向验证者透露凭证的使用情况
- 验证者

部署环境的要求
- 证明者/验证者的在线要求
- 证明者/验证者的存储/计算要求
- 颁发者资源——他们必须多久重新颁发凭证?
会议 3
用户需求和约束类型(隐私、延迟、监管、用户体验)介绍
小组起草用户角色,编写故事,并定义约束
用户需求、痛点、监管/技术约束列表。以包含所有相关链接的 1 页纸呈现。
凭证系统的维度
- 时间(长期 VS 短期)
- 支持类型(物理 VS 数字)
- 颁发者的响应性
假设
约束
隐私
监管
- 监管需要离线验证
- 我们可以获得离线验证和去中心化吗?
- 是的:颁发者可以使用时间戳签署撤销集承诺
- 离线持有者
- 离线验证者
UX
- 当用户想要证明一个未撤销的凭证时,不应该花费大量的时间或带宽
- 该系统应该适用于数百万个凭证
- 该系统应该在手机上工作
其他
会议 4
现状
问题
场景
- (A) 在线持有者,在线验证者
- (B) 在线持有者,离线验证者
- 颁发者使用时间戳签署撤销集承诺。持有者将其转发给验证者。持有者向验证者证明未包含在撤销集中。
- (C) 离线持有者,在线验证者
- (D) 离线持有者,离线验证者
- 如果持有者可以不时在线:存在接受已撤销凭证的时间窗口
- 如果持有者根本无法在线:无法撤销?只有短期凭证
(B) 在线持有者,离线验证者
现有解决方案 (privado ID) 包括:
- 颁发者定期使用 Merkle 树提交到撤销集
- 在 presentation 时,持有者获得其凭证在撤销集中未包含的证明
如何在保持不可链接性的同时,让持有者获得未撤销证明?
- 如果未包含证明由颁发者计算
- 如果未包含证明由持有者计算
- 如果持有者在 presentation 时下载整个撤销集 (仅下载该集的新值)
- 颁发者了解时间相关性
- 持有者需要高带宽来处理大型撤销集
- 如果持有者定期下载整个撤销集 (仅下载该集的新值)
- 持有者需要更高的带宽来处理大型撤销集
- 持有者需要高存储空间来处理大型撤销集
问题:
- 如何在保持不可链接性的同时,减少持有者的负载(cpu、带宽、存储)?
解决方案:
- 以保护隐私的方式获取未包含证明
- 树森林:颁发者计算到子树的部分 Merkle 证明,持有者计算 Merkle 证明的其余部分
- 在持有者和颁发者之间共享计算
- 减少带宽
- 减少匿名集
- Co-snark 用于在持有者和颁发者之间计算未包含证明
- 不要使用撤销机制,而是使用短期证明
- Nullifiers / 撤销 token
- nullifier 必须是不可链接的,即某个证明者生成的 nonce 的函数
- 在凭证被撤销后,必须撤销所有未来的 nonce

Telegram 日志
ying tong, [2025 年 6 月 25 日 13:10:33]
隐私要求:
性能要求:
- 在线证明者/验证者
- 带宽/计算是撤销列表大小的函数
ying tong, [2025 年 6 月 25 日 13:29:25]

https://www.researchgate.net/profile/Michael-Hoelzl/publication/326163883_Bridging_the_gap_in_privacy-preserving_revocation_practical_and_scalable_revocation_of_mobile_eIDs/links/5b3f55c4a6fdcc850600eeba/Bridging-the-gap-in-privacy-preserving-revocation-practical-and-scalable-revocation-of-mobile-eIDs.pdf
ying tong, [2025 年 6 月 25 日 13:55:41]
我们可能还想支持临时撤销,例如暂停驾驶执照
ying tong, [2025 年 6 月 25 日 13:58:48]
如果能提出一些不可能的结果,例如“证明者/验证者需要在线”,那就太酷了
ying tong, [2025 年 6 月 25 日 15:29:29]
“不经意的同步服务”
我们已经知道,这种方法可以使用昂贵的密码学(如全同态加密 (FHE))来实现。但是,通过稍微调整协议,我们可以简单地使用 PCD。远程服务器只需要学习 note 的 nullifier,就可以在没有用户钱包帮助的情况下进行同步,因为钱包可以对钱包状态的其余部分进行盲化或加密,并且只允许不经意的同步服务进行涉及 nullifier 的状态转换。人们可能会认为这会向服务揭示关于 note 在累加器中可能位置的一些信息,但通过调整协议 16 中 nullifier 的派生方式,我们可以完全消除这种信息泄露,从而剥夺服务关于花费的 note 的任何信息。
https://seanbowe.com/blog/tachyon-scaling-zcash-oblivious-synchronization/
Vivian Plasencia, [2025 年 6 月 25 日 15:40:59]

用于 presentation
ying tong, [2025 年 6 月 25 日 15:51:50]

RIP “我们将更彻底地研究与 zk-creds 兼容的撤销技术留给未来的工作”
https://eprint.iacr.org/2022/878.pdf
ying tong, [2025 年 6 月 25 日 16:16:07]

https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/main-51.pdf
ying tong, [2025 年 6 月 25 日 17:00:53]

考虑到用例和要求的多样性,我正在考虑仔细映射 + 支持混合解决方案是有意义的,例如:
ying tong, [2025 年 6 月 25 日 17:09:37]
“匿名凭证系统使用 SObtSig ↔️ SIssSig 协议向用户颁发包含以下信息的凭证:用户的秘密 skU、凭证序列号 id、凭证有效的时段 t,以及颁发者选择的 d 个属性 a1, . . . , ad。”
这实际上只是到期日
Zoey, [2025 年 6 月 25 日 18:51:15]
https://github.com/decentralized-identity/labs/blob/main/proposals/beta-cohort-2-2025/pp-revocation-mechanism/001_proposal.md
Zoey, [2025 年 6 月 26 日 08:58:53]
https://x.com/secparam/status/1938063395531391380?t=pSQx7udYSmAyW22snUpWqQ&s=19