📢 转载信息
原文作者:Christian Paquin, Greg Zaverucha
Crescent 库发布:为数字身份系统注入强大的隐私保护
数字身份凭证(如手机钱包中的电子驾照、工作场所登录等)正变得无处不在。它们带来了前所未有的便利,但也引发了新的隐私风险,尤其是在用户行为被追踪和监控方面。
其中一个主要风险是“可链接性”(Linkability),即能够将凭证的多次使用关联到特定个人的能力。目前,当用户使用电子驾照或登录各种应用时,隐藏的标识符可能会将这些单独的活动联系起来,从而构建出用户行为的详细档案。
为了解决这一问题,我们发布了 Crescent(在新标签页中打开),这是一个加密库,可以为广泛使用的身份格式——包括许多应用登录背后的身份验证标准 JSON Web Tokens (JWT) 以及移动电子驾照——增加“不可链接性”(Unlinkability),从而保护用户隐私。更重要的是,Crescent 的工作无需依赖签发这些凭证的组织更新其现有系统。
Crescent 提供的保护超越了现有的隐私功能。一些数字身份系统已经提供了“选择性披露”(Selective Disclosure),允许用户在每次交互中只共享特定信息。
但即使有了选择性披露,凭证仍可能通过序列号、加密签名或嵌入式标识符被链接。Crescent 的不可链接性特性旨在防止凭证中除用户明确选择透露之外的任何信息被用于连接用户在不同时间点的数字互动。

实现不可链接性的两条路径
要理解 Crescent 的工作原理,我们需要了解研究人员为数字身份系统增加不可链接性所开发的两种主要方法:
- 专业化的加密签名方案。这些方案可以提供不可链接性,但需要对现有基础设施进行大量修改。必须对新算法进行标准化、实现,并集成到软件和硬件平台中。例如,IETF(互联网工程任务组)目前正在标准化 BBS 签名方案(在新标签页中打开),但即使标准化完成,其采用速度也可能较慢。
- 基于现有凭证的零知识证明(Zero-knowledge proofs)。这是 Crescent(在新标签页中打开) 采用的方法,它允许用户在不泄露可能导致追踪的底层数据的情况下,证明关于其凭证的特定事实。例如,某人可以证明自己持有有效的驾照并居住在某个邮政编码区域,而无需暴露任何可能将其本次互动与未来互动关联起来的个人信息或标识符。
自 40 年前首次开发以来,零知识证明已变得更加实用,但它们的效率不如当今凭证中使用的加密算法。Crescent 通过“预处理”解决了这一计算挑战,将最复杂的计算一次性提前完成,从而使后续的证明生成过程对移动设备而言快速而高效。
除了不可链接性,Crescent 还支持选择性披露,允许用户证明特定事实而无需透露不必要的细节。例如,它可以确认凭证有效且未过期,而无需透露确切的到期日期(该日期可能被用作唯一标识符)。即使凭证存储在手机的安全硬件中(以防止未经授权的访问),这些隐私保护措施依然有效。
揭秘加密背后的原理
Crescent 的核心是使用一种复杂的零知识证明形式,即零知识简洁非交互式参数论证(Zero-Knowledge Succinct Noninteractive Argument of Knowledge,简称 SNARK)。该方法允许一方在不泄露底层数据的情况下,证明自己拥有某些信息或凭证。
Crescent 特别采用了 Groth16 证明系统,这是该技术的首批实用实现之一。Groth16 的特别之处在于其证明规模小、验证速度快,并且可以在单步内完成共享,无需用户和验证者之间来回通信。
该系统首先根据凭证模板建立共享的加密参数。签发类似凭证的多个组织(例如,不同州机动车部门签发的电子驾照)可以使用相同的参数,前提是它们遵循兼容的数据格式和安全标准。
定义每个证明将验证内容的数学规则使用专门的编程工具编写,这些工具将其转换为秩一约束系统(Rank-1 Constraint System,R1CS),这是一个描述关于凭证需要证明什么的数学框架。
为了使系统达到足以应对现实世界使用的速度,Crescent 将证明生成过程分为两个不同的阶段:
- 准备阶段(Prepare stage)。此步骤仅运行一次,生成可存储在用户设备上供重复使用的加密值。
- 展示阶段(Show stage)。当用户需要出示凭证时,这个更快的步骤会采用存储的值并对其进行随机化处理,以防止与先前出示的记录产生任何关联。它还会创建一个紧凑的加密摘要,仅揭示该特定交互所需的信息。
图 2 和图 3 说明了这种凭证证明工作流程以及准备和展示阶段之间的划分。


一个示例应用
为了演示 Crescent 的工作原理,我们创建了一个涵盖两个实际场景的示例应用:验证雇佣关系和证明年龄以进行在线访问。该应用包括用于设置虚构签发方和验证方的 Rust 服务器代码,以及一个供用户使用的浏览器扩展钱包。步骤编号对应于图 4 中的步骤。
设置阶段
- Crescent 服务预先生成用于从 JSON Web Tokens 和移动电子驾照创建和验证证明的零知识参数。
- 用户从机动车管理局(DMV)获取移动电子驾照。
- 用户从其雇主 Contoso 获取一个工作证明 JSON Web Token。
- 这些凭证及其私钥存储在 Crescent 钱包中。
应用场景
- 工作证明:用户向 Fabrikam(一家在线健康诊所)出示其 JSON Web Token,以证明他们在 Contoso 工作并有资格享受工作场所福利。Fabrikam 得知用户受雇于 Contoso,但不知道用户的身份,而 Contoso 对此次互动一无所知。
- 年龄验证:用户向社交网络出示其移动电子驾照,证明自己已年满 18 岁。该证明确认了资格,而未泄露年龄或身份信息。
在所有场景中,Crescent 都确保凭证的出示是不可链接的,从而防止任何一方将其与用户关联起来。
为求简化,示例定义了自己的签发和出示协议,但它可以集成到更高级别的身份框架中,例如 OpenID/OAuth、可验证凭证(Verifiable Credentials)或移动电子驾照生态系统。

要了解有关该项目的更多信息,请访问 Crescent 项目的 GitHub(在新标签页中打开) 页面,或查看我们在 Real-Word Crypto 2025(在新标签页中打开) 和 North Sec 2025(在新标签页中打开) 会议上做的报告。
在新标签页中打开与作者见面
相关领域
相关工具
🚀 想要体验更好更全面的 AI 调用?
欢迎使用青云聚合API,约为官网价格的十分之一,支持300+全球最新模型,以及全球各种生图生视频模型,无需翻墙高速稳定,小白也可以简单操作。
青云聚合API官网https://api.qingyuntop.top
支持全球最新300+模型:https://api.qingyuntop.top/pricing
详细的调用教程及文档:https://api.qingyuntop.top/about
评论区