A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://www.w3.org/Translations/VC20-zh-CAT/Overview.html below:

可验证凭证数据模型 v2.0

Jump to Table of Contents Collapse Sidebar

Jump to Table of Contents Pop Out Sidebar

摘要

可验证凭证是表示发行者(如驾驶执照或教育证书)提出的一组声明的特定方式。该规范描述了可验证凭证的可扩展数据模型,如何保护它们免受篡改,以及用于交换这些凭证的由发行者持有者验证者组成的三方生态系统。本文档还涵盖了使用本规范中描述的技术的生态系统的各种安全性、隐私性、国际化和可访问性注意事项。

本文档状态

本节描述了本文档发布时的状态。当前W3C发布的文档列表和本技术报告的最新版本可在W3C标准和草案索引中找到:https://www.w3.org/TR/。

欢迎随时就本规范发表评论。请直接在GitHub上提交问题,如果无法提交,请将问题发送到public-vc-comments@w3.org。(订阅存档)。

本文件作为一个推荐,由可验证凭证工作组推荐轨道上发布。

W3C建议将此规范作为Web标准进行广泛部署。

W3C推荐是一种规范,经过广泛的共识构建,得到W3C及其成员的认可,并得到工作组成员对实现其标准的免版税许可的承诺。

本文档由遵循W3C专利政策的工作组制定。W3C维护着一份与该工作组交付成果相关的任何专利披露的公开列表;该页面还包含披露专利的说明。知悉某项专利包含基本权利要求的个人必须根据W3C专利政策第6节披露该信息。

本文档受2023年11月3日W3C流程文档的约束。

目录
  1. 摘要
  2. 文档状态
  3. 1. 引言
    1. 1.1 什么是可验证凭证?
    2. 1.2 生态系统概念
    3. 1.3 一致性
  4. 2. 术语
  5. 3. 核心数据模型
    1. 3.1 声明
    2. 3.2 凭证
    3. 3.3 表述
  6. 4. 基本概念
    1. 4.1 入门
    2. 4.2 可验证凭证
    3. 4.3 上下文
    4. 4.4 标识符
    5. 4.5 类型
    6. 4.6 名称和描述
    7. 4.7 签发者
    8. 4.8 凭证主体
    9. 4.9 有效期
    10. 4.10 状态
    11. 4.11 数据模式
    12. 4.12 保护机制
    13. 4.13 可验证表述
  7. 5. 高级概念
    1. 5.1 信任模型
    2. 5.2 可扩展性
    3. 5.3 相关资源的完整性
    4. 5.4 刷新
    5. 5.5 使用条款
    6. 5.6 证据
    7. 5.7 零知识证明
    8. 5.8 表示时间
    9. 5.9 授权
    10. 5.10 保留的扩展点
    11. 5.11 生态系统兼容性
    12. 5.12 可验证凭证图
    13. 5.13 安全机制规范
  8. 6. 语法
    1. 6.1 JSON-LD
    2. 6.2 媒体类型
    3. 6.3 特定类型的凭证处理
  9. 7. 算法
    1. 7.1 验证
    2. 7.2 问题详情
  10. 8. 隐私考量
    1. 8.1 隐私范围
    2. 8.2 软件信任边界
    3. 8.3 个人身份信息
    4. 8.4 基于标识符的关联
    5. 8.5 基于签名的关联
    6. 8.6 基于元数据的关联
    7. 8.7 设备跟踪和指纹识别
    8. 8.8 支持抽象权利要求
    9. 8.9 数据最小化原则
    10. 8.10 持有者凭证
    11. 8.11 验证过程中的关联
    12. 8.12 存储提供商和数据挖掘
    13. 8.13 凭证聚合
    14. 8.14 使用模式
    15. 8.15 法律程序
    16. 8.16 与错误的一方共享信息
    17. 8.17 数据盗窃
    18. 8.18 声明发放频率
    19. 8.19 优先选择一次性使用证书
    20. 8.20 隐私浏览
    21. 8.21 签发者合作对隐私权的影响
  11. 9. 安全考量
    1. 9.1 密码学套件和库
    2. 9.2 密钥管理
    3. 9.3 内容完整性保护
    4. 9.4 无签名声明
    5. 9.5 中间人(MITM)、重放和克隆攻击
      1. 9.5.1 中间人(MITM)攻击
      2. 9.5.2 重放攻击
      3. 9.5.3 Spoofing Attack
    6. 9.6 捆绑依赖声明
    7. 9.7 高度动态信息
    8. 9.8 设备盗窃和冒充
    9. 9.9 可接受使用
      1. 9.9.1 未经授权的使用
      2. 9.9.2 不恰当使用
    10. 9.10 代码注入
  12. 10. 无障碍考量
    1. 10.1 数据优化方法
  13. 11. 国际化考量
    1. 11.1 语言和基本方向
    2. 11.2 默认文本方向
  14. A. 验证
    1. A.1 凭证类型
    2. A.2 凭证主题
    3. A.3 颁发者
    4. A.4 持有者
    5. A.5 颁发日期
    6. A.6 证明(签名)
    7. A.7 有效期
    8. A.8 状态
    9. A.9 模式
    10. A.10 适用性
    11. A.11 ” 人工智能” 和” 机器学习”
  15. B. 上下文、词汇、类型和凭证模式
    1. B.1 基础上下文
    2. B.2 词汇
    3. B.3 数据类型
      1. B.3.1 sriString 数据类型
    4. B.4 上下文、类型和凭证模式之间的区别
  16. C. IANA 注意事项
    1. C.1 application/vc
    2. C.2 application/vp
  17. D. 用于可验证呈现的附加图表
  18. E. 修订历史
  19. F. 致谢
  20. G. 参考文献
    1. G.1 规范性参考文献
    2. G.2 信息性参考文献

本节为非规范性内容。

凭证是我们日常生活的一部分:驾驶执照证明我们有能力驾驶机动车;大学学位证明我们的教育水平;政府签发的护照证明我们在国家之间旅行时的公民身份。本规范提供了一种机制,可以在 Web 上以加密安全、隐私保护和机器可验证的方式表达这些凭证。这些凭证在现实世界中使用时会给我们带来好处,但它们在网络上的使用仍然充满挑战。

目前,在网络上以机器可读的方式表达教育资格、医疗数据、金融账户信息,以及其他类型的经第三方验证的个人信息仍然较为困难。难以在网络上表达数字凭证,使得我们难以在网络上获得与在现实世界中使用实体凭证相同的好处。

对于不熟悉可验证凭证相关概念的读者,以下章节提供了概述:

影响本规范的用例和需求可以在可验证凭证用例 [VC-USE-CASES]中找到。

本节为非规范性内容。

在现实世界里,一个凭证可能包括:

可验证凭证可以表示与实体凭证相同的所有信息。数字签名等技术的加入使得可验证凭证比其对应的实体凭证更具防篡改性和可信度。

持有者 可以生成可验证表述,并将这些可验证表述共享给验证者,以证明他们拥有具有某些特征的可验证凭证

可验证凭证可验证表述都可以快速传输,这使得它们在远程建立信任时比对应的实体凭证更加便捷。

虽然本规范试图提高表达数字凭证的便捷性,但它也力求将这一目标与一系列隐私保护目标相平衡。 数字信息的持久性,以及收集和关联不同来源的数字数据的便捷性,构成了隐私问题。 使用可验证 且易于机器读取的凭证可能会加剧这一问题。本文档在第 8. 隐私注意事项中概述并试图解决其中的一些问题。本文档还提供了如何利用隐私增强技术(例如零知识证明)来使用该数据模型的示例。

“可验证”一词在可验证凭证可验证表述中,指的是凭证表述能够被验证者验证的特性,如本文档所定义。凭证的可验证性并不意味着其中所编码的声明必然真实。相反,在确认可验证凭证可验证表述的真实性和时效性之后,验证者会在依赖它们之前,使用自己的业务规则验证所包含的声明。这种依赖只会发生在评估了签发者、证明、主体以及声明,并与一个或多个验证者策略对照之后。

本节为非规范性内容。

本节描述了在可验证凭证预计有用的生态系统中核心参与者的角色及其之间的关系。角色是一种可以通过多种不同方式实现的抽象概念。角色的分离表明了可能需要标准化的接口和协议。本规范介绍了以下角色:

持有者
一个实体可能通过拥有一个或多个可验证凭证并从中生成可验证表述来扮演的角色。持有者通常是(但不总是)他们所持有的可验证凭证主体。持有者将其凭证存储在凭证存储库中。持有者的例子包括学生、员工和客户。
签发者
一个实体通过对一个或多个主体进行声明、从这些声明创建可验证凭证并将该可验证凭证传输给持有者所扮演的角色。例如,签发者包括公司、非营利组织、行业协会、政府和个人。
主体
声明的对象。主体的例子包括人类、动物和事物。
验证者
一个实体通过接收一个或多个可验证凭证进行处理来扮演的角色,这个操作可能在可验证表述中进行。验证者的例子包括雇主、安保人员和网站。
可验证数据注册表
一个系统通过协调创建和验证标识符、验证材料以及其他相关数据(例如可验证凭证模式、撤销注册表等)来扮演的角色。某些配置可能需要主体的可关联标识符。某些注册表,例如用于 UUID 和验证材料的注册表,可能只是充当标识符的命名空间。可验证数据注册表的例子包括可信数据库、去中心化数据库、政府身份证数据库和分布式账本。通常,在一个生态系统中会使用不止一种类型的可验证数据注册表。
图1 本规范所基于的角色和信息流。

注意: 还存在其它类型的生态系统

图 1提供了一个示例生态系统,为本规范中其余概念奠定基础。还存在其他生态系统,例如受保护的环境或专有系统,在这些生态系统中,可验证凭证也能发挥作用。

这个生态系统与典型的两方或联合身份提供者模型形成对比。身份提供者(identity provider,有时缩写为IdP)是一种为持有者创建、维护和管理身份信息的系统,同时为联邦或分布式网络中的依赖方应用程序提供身份验证服务。在联合身份模型中,持有者与身份提供者紧密绑定。此规范避免使用“标识提供者”、“联合标识”或“依赖方”术语,除非将这些概念与其他规范进行比较或映射。这个规范将身份提供者的概念解耦为两个不同的概念:签发者持有者

有关可验证凭证生态系统和具体生命周期的更多信息,请参阅可验证凭证概述 [VC-OVERVIEW]。

除了标记为非规范性的部分外,本规范中的所有创作指南、图表、示例和注释均为非规范性的。本规范中的所有其他内容均为规范性的。

本文档中的关键词可以必须禁止可选建议要求应该不应该在且仅当它们以全部大写字母出现时,才应按照 BCP 14[RFC2119][RFC8174] 中的描述进行解释。

符合规范的文档 是一个 紧凑JSON-LD 文档,符合本规范中所有相关的“必须”语句。具体来说,本文档第 4. 基本概念5. 高级概念6. 语法中的所有相关规范性声明必须强制执行。符合规范的文档必须是一种 可验证凭证,其媒体类型为application/vc,或一种可验证表述,其媒体类型为application/vp。符合规范的文档必须至少受4.12安全机制中所述的一种安全机制保护。

符合规范的签发者实现可以产出符合规范的文档,产生的文档必须包含所有要求的属性,并且必须使用4.12 安全机制中所述的安全机制进行保护。

符合规范的验证者实现使用符合规范的文档必须4.12 安全机制所述的符合规范的文档进行验证,必须检查每个必需属性是否满足该特性的规范要求,并且在检测到不符合规范的文档时必须产生错误。

此规范包括必需特性和可选特性。可选特性可以符合规范的签发者实现符合规范的验证者实现忽略。

本文档还包含一些示例,这些示例包含无效的 JSON 字符,例如内联注释(//)和使用省略号(...)来表示对示例价值不大的信息。如果实施者希望将信息用作有效的文档,则应注意删除此内容。

注意: 人类可读的英文文本是例证

本文档提供的示例包括描述性属性,例如namedescription,这些属性带有英文数值,以简化规范的每个示例中的概念。这些例子不一定反映国际化使用所需的数据结构,更多详细内容请参阅11. 国际化考量

以下术语用于描述本规范中的概念。

声明(claim)
主体做出的声明。
凭证(credential)
签发者发出的一组或多组声明。凭证中的声明可以针对不同的主体。本规范中使用的凭证定义不同于NIST 对凭证的定义
去中心化标识符(decentralized identifier)
一种基于URL的可移植标识符,也称为DID,与 实体相关联。这些标识符最常用于可验证凭证中,并与主体相关联,以便可验证凭证可以轻松地从一个凭证存储库移植到另一个存储库,而无需重新签发凭证。DID 的一个示例是did:example:123456abcdef。有关更多细节,请参阅去中心化标识符(DIDs)v1.0规范。
默认图(default graph)
包含所有不明确属于命名图声明
实体(entity)
任何可以作为抽象或具体名词在语句中引用的东西。实体包括但不限于人、组织、物理事物、文档、抽象概念、虚构人物和任意文本。如果条件允许,任何实体都可以在生态系统中扮演角色。请注意,有些实体根本无法执行操作,例如字符串"abc"不能签发凭证。
图(graph)
主体及其与其他主体或数据的关系组成的一组声明,形成一个信息网络。每个声明都是图的一部分;在命名图中是显式的,在默认图中是隐式的。
持有者(holder)
实体可能扮演的角色,该角色通过拥有一个或多个可验证凭证并从中生成可验证表述。持有者通常是(但不总是)其所持有主体。持有者将其凭证存储在凭证存储库中。
签发者(issuer)
实体通过对一个或多个声明做出断言来扮演的角色,根据这些声明创建可验证凭证,并将其传输给持有者
命名图(named graph)
与特定属性相关联的,例如verifiableCredential。这些属性会生成单独的,其中包含在相应的JSON对象中定义的所有声明
表述(presentation)
由一个或多个可验证凭证签发者签发的数据,这些数据与特定的验证者共享。
凭证存储库(credential repository)
存储和保护对持有者可验证凭证访问的软件,例如文件系统、存储库或者个人可验证凭证钱包
选择性披露(selective disclosure)
持有者对共享哪些信息做出细粒度决策的能力。
不可关联披露(unlinkable disclosure)
一种选择性披露,其中表述无法在验证者之间关联。
主体(subject)
声明所针对的事物。
校验(validation)
确保来自特定签发者声明满足验证者对特定用途的业务需求。本规范阐明了验证者如何验证可验证凭证可验证表述。它还指定验证者在依赖可验证凭证前必须验证其中的声明。然而,这种验证方法差异很大,超出了本规范范围。验证者对某些声明信任特定的签发者,并应用自己的规则来确定哪些凭证中的声明适合由其系统使用。
可验证凭证(verifiable credential)
一种防篡改凭证,其作者身份可以通过密码学方法进行验证。可验证凭证可用于构建可验证表述,这些表述也可以通过密码学方法验证。
可验证数据注册表(verifiable data registry)
系统可能通过协调标识符、验证验证材料及其他相关数据(例如可验证凭证模式、撤销注册表等)的创建和验证来扮演角色。某些配置可能需要主体的可关联标识符。某些注册表(例如用于UUID和验证材料的注册表)可能充当标识符的命名空间。
可验证表述(verifiable presentation)
一种防篡改的信息表述,其编码方式经过密码学验证后,数据的作者身份可信。某些类型的可验证表述可能包含由原始可验证凭证合成的数据,但不包含原始凭证(例如零知识证明)。
验证(verification)
评估一个可验证凭证可验证表述是否是签发者或表述者分别做出的真实且最新的声明。这包括检查凭证或表述是否符合规范、加密机制是否满足,以及(如果存在)状态检查是否成功。验证凭证并不意味着评估凭证中编码的声明的真实性。
验证者(verifier)
实体通过接收一个或多个可验证凭证(可选地包含在可验证表述中)以进行处理而扮演的角色。其他规范可能会将此概念称为依赖方(relying party)
验证材料(verification material)
用于验证加密保护信息安全性的信息。例如,加密公钥用于验证与可验证凭证关联的数字签名。
统一资源定位符(URL)
统一资源定位符,如URL Standard中所定义。可以对URL进行解引用以得到资源,例如文档。解引用或获取URL的规则由URL模式定义。本规范未使用URI或IRI术语,因为这些术语会对Web开发者造成困惑。

本节为非规范性内容。

下面几节简要概述核心数据模型的概念,例如声明凭证表述可验证凭证可验证表述,这些概念构成了本规范的基础。

注意: 凭证和可验证凭证的区别

读者可能会注意到,本节中描述的一些概念,如凭证表述,并没有本规范定义的媒体类型。然而,可验证凭证可验证表述的概念被定义为符合规范的文件,并且与媒体类型相关联。凭证、表述与可验证凭证、可验证表述之间的区别,只是“可验证”对象以加密方式进行保护,而其他对象则不是。详细内容请参阅4.12安全机制

本节为非规范性内容。

声明是对主体做出的陈述。主体是可以对其进行声明的事物。声明使用主体--值关系来表达。

图 2 声明的基本结构

声明的数据模型,如上图 2所示,功能强大,可以用来表达各种各样的陈述。例如,某人是否从某所大学毕业可以用下图 3所示的方式来表达。

图 3 声明 "Pat 是 Example 大学的校友" 的基本结构

单个声明可以合并在一起,以表达关于某个主体的信息图。下图 4所示的示例通过添加“Pat 认识 Sam”和“Sam 受聘为教授”这两个声明,扩展了之前的声明。

图 4 可以组合多个声明来表示信息图

至此,我们介绍了声明和信息图的概念。为了能够信任声明,需要向图中添加更多信息。

本节为非规范性内容。

凭证是由同一实体发出的一组或多组声明凭证还可以包含标识符和元数据,用于描述凭证的属性,例如签发者、有效日期和时间段、代表性图像、验证材料、状态信息等。可验证凭证是一组防篡改的声明和元数据,可以通过密码学方法证明其签发者。可验证凭证的例子包括但不限于数字员工证、数字驾照和数字教育证书。

图 5 可验证凭证的基本组成部分

上面的图 5展示了可验证凭证的基本组成部分,但抽象化了声明如何组织成信息图,以及信息图如何组织成可验证凭证的细节。

下面的图 6显示了一种对可验证凭证的更完整的描述,该描述使用基于嵌入式证明的方法(可验证凭证数据完整性1.0)。它由至少两个信息图组成。第一个信息图是可验证凭证图(默认图),通过凭证元数据和其他声明来描述可验证凭证本身。proof属性所指的第二个信息图是可验证凭证的证明图,是一个独立的命名图。证明图表示数字证明,在这种情况下,数字证明就是数字签名。对多个信息图有兴趣的读者可以参阅第5.12 可验证凭证图

图6 基本可验证凭证相关的信息图,使用基于嵌入式证明的方法(可验证凭证数据完整性1.0),详情参见引用部分的[VC-DATA-INTEGRITY]

下面的图 7显示了与图 6相同的可验证凭证,但使用JOSE[VC-JOSE-COSE]进行保护。有效载荷包含单个信息图,即包含凭证元数据和其他声明的可验证凭证图。

图 7 与基本可验证凭证关联的信息图,使用基于封装证明的方法(JOSE和COSE),详情参见引用部分的[VC-JOSE-COSE]

本节为非规范性内容。

增强隐私性是本规范的一个关键设计特征。因此,对于使用此技术的实体而言,能够仅表达与其特定情境相符的部分身份信息至关重要。这种对自身身份信息子集的表达被称为可验证的表述。不同身份信息的示例包括个人的职业身份、网络游戏身份、家庭身份或匿名身份。

可验证表述持有者创建,可以表示来自多个可验证凭证的数据,也可以包含任意额外的数据。向验证者表述声明可以通过可验证表述来实现,也可以通过直接提供可验证凭证来实现。

表述中的数据通常是关于同一主体的,但可能由多个签发者签发。这些信息的聚合表达了一个人、组织或实体的某个方面。

图 8 可验证表述的基本组成部分

上面的图 8展示了可验证表述的组成部分,但抽象化了可验证凭证如何组织成信息图表,以及信息图如何组织成可验证表述的细节。

下面的图 9展示了使用基于嵌入式证明可验证表述的更完整描绘,该嵌入式证明基于可验证凭证数据完整性1.0。它通常由至少四个信息图表组成。这些信息图中的第一个是可验证表述图默认图),通过表述元数据表示可验证表述本身。可验证表述借助verifiableCredential 属性可以用来指代可验证凭证。此凭证是一个自包含的可验证凭证图,包含凭证元数据和其他声明。此凭证借助proof属性可用来指代可验证凭证证明图,表示凭证的证明(通常是数字签名)。该可验证凭证图及其关联的证明图分别构成第二个和第三个信息图表,且各自是独立的命名图。表述还可以借助proof属性指代表述的证明图,即第四个信息图表(另一个命名图)。此表述证明图表示可验证表述图可验证凭证图以及从可验证凭证图链接的证明图的数字签名。

图 9 与使用基于嵌入式证明的基本可验证表述相关联的信息,基于可验证凭证数据完整性1.0

下面的图 10显示了与图9相同的可验证表述,但使用了基于[VC-JOSE-COSE]的封装证明。有效载荷仅包含两个信息图:通过表述元数据表示可验证表述的可验证表述图,以及对应的通过verifiableCredential属性引用的可验证凭证图。该可验证凭证图包含一个EnvelopedVerifiableCredential实例,通过data:URL[RFC2397]指向图7所示的由封装证明保护的可验证凭证。

图 10 与基本的可验证表述相关联的信息图,该表述使用基于封装证明使用JOSE和COSE保护可验证凭证data: URL 指向图7中所示的可验证凭证

注意: 表述可以包含多个可验证凭证

可能有这样一种表述,比如大学证书的集合,它整合了关于不同学科的多个凭证,这些凭证通常是相关的,但不是必需的。这是通过使用verifiableCredential属性引用多个可验证凭证来实现的。更多细节请参见附录D. 可验证表述的附加图表

注意: 表述可以由签发者和验证者出示

正如1.2 生态系统概述中所述,当实体进入特定的凭证交换时,可以承担一个或多个角色。虽然通常期望持有者 生成表述,但签发者验证者也可以生成表述,以向持有者表明自己的身份。如果持有者在提交敏感信息(作为可验证表述的一部分)之前需要从签发者或验证者获得更高的保证,则可能发生这种情况。

本节介绍规范的一些基本概念,为文档后面的第五节“高级概念”做准备。

本节为非规范性内容。

该规范旨在简化新类型可验证凭证的原型设计。开发人员可以复制下面的模板并将其粘贴到通用可验证凭证工具中,以开始签发、持有和验证原型凭证。

开发人员可以将下面的MyPrototypeCredential属性更改为他们想要创建的凭证类型。由于可验证凭证和主体相关,因此credentialSubject对象中的每对属性-值都表示凭证主体的特定属性。一旦开发人员添加了许多这些属性-值组合,修改后的对象就可以发送到符合规范的签发者实现, 并为开发人员创建可验证凭证。从原型设计的角度来看,这就是开发人员需要做的全部工作。

{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "type": ["VerifiableCredential", "MyPrototypeCredential"],
  "credentialSubject": {
    "mySubjectProperty": "mySubjectValue"
  }
}

在稳定所有凭证属性之后,建议开发人员以稳定的URL生成和发布词汇和上下文文档,以便于其他开发人员协作。 然后,上面的URL https://www.w3.org/ns/credentials/examples/v2将被替换为特定于用例上下文的 URL. 该过程将在5.2节可扩展性介绍。或者,开发人员可以重用适合他们的用例的现有词汇和上下文文件。他们可以探索可重用资源的可验证凭证扩展。

可验证凭证用于表示一个或多个主体的属性以及凭证本身的属性。本规范为可验证凭证定义了以下属性:

@context
在章节4.3 上下文中定义。
id
在章节4.4 标识符中定义。
type
在章节4.5 类型中定义。
name
在章节4.6 名称和描述中定义。
description
在章节4.6 名称和描述中定义。
issuer
在章节4.7 签发者中定义。
credentialSubject
在章节4.8 凭证主体中定义。
validFrom
在章节4.9 有效期中定义。
validUntil
在章节4.9 有效期中定义。
status
在章节4.10 状态中定义。
credentialSchema
在章节4.11 数据模式中定义。
refreshService
在章节5.4 刷新中定义。
termsOfUse
在章节5.5 使用条款中定义。
evidence
在章节5.6 证据中定义。

通过5.2节 扩展性中定义的扩展机制, 可验证凭证可以拥有额外的属性。

当两个软件系统需要交换数据时,需要使用双方都能理解的术语。举个例子,考虑两个人是如何进行交流的,他们必须使用相同的语言,而且他们使用的词语(如“姓名”和“网站”)对彼此来说必须具有相同的含义。这有时被称为对话的上下文。本规范使用类似的概念,即通过建立通信的上下文来为软件系统实现类似的结果。

处理可验证凭证可验证表述的软件系统使用URL来识别术语。然而,这些URL可能很长,不太人性化,而简短的、人性化的别名可能更有帮助。这个规范使用@context属性将此类简短别名映射到URL

可验证凭证可验证表述必须包含@context属性。应用程序开发人员必须了解自己的应用程序使用的每个JSON-LD 上下文,至少要了解它对自己的应用程序使用的术语含义的影响有多大。可验证凭证数据完整性1.0规范中关于验证上下文的一节描述了一种类似的机制。基于本规范的其他规范可能要求使用5.3节相关资源的完整性中描述的relatedResource特性或任何有效等效的机制来保护JSON-LD上下文的完整性。

@context
@context 属性的值必须是一个有序集合其中第一项是一个值为https://www.w3.org/ns/credentials/v2URL有序集合中的后续项目必须URL和对象的任意组合构成,其中每个都可以作为JSON-LD上下文进行处理
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/58473",
  "type": ["VerifiableCredential", "ExampleAlumniCredential"],
  "issuer": "did:example:2g55q912ec3476eba2l9812ecbfe",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "alumniOf": {
      "id": "did:example:c276e12ec21ebfeb1f712ebc6f1",
      "name": "Example University"
    }
  }
}

上述示例使用基础上下文URL(https://www.w3.org/ns/credentials/v2)来确定数据交换是和 可验证凭证有关的。此概念将在5.2节可扩展性进一步详细说明。https://www.w3.org/ns/credentials/v2上的数据是一个可永久缓存的静态文档,其处理说明请参阅附录B.1基本上下文。可验证凭证数据模型的相关人类可读词汇文档可在https://www.w3.org/2018/credentials/上找到。

第二个URL(https://www.w3.org/ns/credentials/examples/v2)用于演示示例。实现不应将这个URL用于任何其他目的,例如在试验或生产系统中使用。

当我们需要描述特定事物(例如个人、产品或组织)的相关信息时,使用全局唯一的标识符是非常有用的。全局唯一标识符使他人也能针对同一事物进行描述。本规范定义了用于此类标识符的可选id属性id属性允许在可验证凭证中表达关于特定事物的声明,这个属性可以由签发者在以可验证凭证表达对象时设置,或由持有者在以可验证表述表达对象时设置。id属性表示的是一个标识符,其他人在表述该标识符所标识的特定事物时,都希望使用该标识符。举个例子,id值包括 UUID (urn:uuid:0c07c1ce-57cb-41af-bef2-1b932b986873), HTTP URL(https://id.example/things#123), and DID (did:example:1234abcd)。

注意: 任何类型的标识符都会增加相关性。

开发者应牢记,在需要匿名性的场景中,标识符可能会带来风险。开发者在考虑此类场景时,建议仔细阅读8.4节基于标识符的关联。此外,第8节隐私考量中还记录了其他类型的访问和关联机制,这些机制也会引发隐私问题。在高度重视隐私的情况下,可以省略id属性。 有些用例不需要或明确需要省略id属性。类似的,需要特别注意可公开解析的URL和其他形式的标识符之间的选择。可公开解析的url可以简化验证和互操作性,但如果使用不当,它们也可能无意中获得对潜在敏感信息的访问权限。

id
id属性可选的。如果存在,id属性的值必须是一个URL,而且这个URL必须是可以解引用的。建议id中的URL在被解引用时,能够返回一个包含该id的机器可读信息的文档。
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": ["VerifiableCredential", "ExampleDegreeCredential"],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2025-04-27T17:58:33Z",
    "verificationMethod": "did:key:zDnaebSRtPnW6YCpxAhR5JPxJqt9UunCsBPhLEtUokUvp87nQ",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z5WHRyhjLd2H5RFcSqW3bss39zFBvVrVuXUovBpbGX2ATL8vSxwoeoiZFb1eibsdjRQK5GS1nr76RZRKBj7iH9roE"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2025-04-27T17:58:33Z",
    "verificationMethod": "did:key:zDnaerJh8WwyBVVGcZKKkqRKK9iezje8ut6t9bnNChtxcWwNv",
    "cryptosuite": "ecdsa-sd-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0AhVhAfojGD02jMuCezr87Ra8dvWa9ruscwcjDo2jYpvNEzxQthrKO3csDTuvk2A278uD7Cot6fgfm4YXddQ3eKnF91VgjgCQCpvhiT83vvn-T-PFVSUfoo51-s11TfQ39hmlIC61wy2hYINWUMbNH3sN80JcCKn-4fcaBDpSGT7KgsL07bUWUlHrJhVhAG4V_V2OV_xGWDfKU1CH_D53kF5Hy8RBi4S0551TkpUKvouKF5s5a-b1qDh2iNK1RXQyF6vdhbt4Kjo0RfnSYplhAvBoxWd2Xmpe8ERCoO3qs3el64rEmsYuPOgMyQTacrl2tuFLs3ui23JdtCnOSxmcRzVC27r4HIpubjSug4NE261hAcb7bwdJUpxP6Bqp7hiD8O_nFIMxLdzErfU522ZVy4CqLOiEERGMT2jFlgDcxlpkk5ZrMJOl9QfQSLPtjolWIy1hAbOzFKnJtBhSu3lfzmSftTWl1-FLtWu3Lt7ePxpGPbMjr6DVfS3sZL8E6M4uETdce15BsDkThGi_1ZjJ7YG9GLFhADav02TPSZdSV73AqOyZ6ryfuz3Y7pKKuu67dnqNzzXS-H-8-39I1rA759bba_lkqeo8F0lPtT_3liNamnCd-CoFnL2lzc3Vlcg"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "verificationMethod": "did:key:zUC78GzFRA4TWh2mqRiKro1wwRb5KDaMJ3M1AD3qGtgEbFrwWGvWbnCzArkeTZCyzBz4Panr2hLaZxsXHiBQCwBc3fRPH6xY4u5v8ZAd3dPW1aw89Rra86CVwXr3DczANggYbMD",
    "cryptosuite": "bbs-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0ChVhQkkdBby2GbmvVh66cM6TNzNfh0hR9ePeG7dWYbHfDxK6CcA_rVoxxsRGIoWX5Gs6ZGgQNPTBeehiEHT_cj-5fjZ6ArTluARHPbaXQzWyXKrVYQGd_DaMQQsoaryttl5TvxnFT-Vm4SkVx03K9qNJ4jhArS1r7HKFDPyyrvPGqNF8bjgNELvoomOjpbD9JEvaGI1pYYJVTGbTfcflzyx41E-f9kSqmf10xYzxJrGfC7b7GPY8X7VjMT__ZKSuwdH-5jak-5gkjocsHI6oxIKlLrhW1Wh5yrDCH-QC823TS8NE9VGBzIFAfUt5qazGEcJ8CxeSPxFgg1LgUmXHTRjMrLAeoNgJipw-F81uEwauN0JK-WcohpmWBZy9pc3N1ZXI"
  }
}
Protected Headers
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc+jwt

.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzLzM3MzIiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiRXhhbXBsZURlZ3JlZUNyZWRlbnRpYWwiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy81NjUwNDkiLCJ2YWxpZEZyb20iOiIyMDEwLTAxLTAxVDAwOjAwOjAwWiIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImlkIjoiZGlkOmV4YW1wbGU6ZWJmZWIxZjcxMmViYzZmMWMyNzZlMTJlYzIxIiwiZGVncmVlIjp7InR5cGUiOiJFeGFtcGxlQmFjaGVsb3JEZWdyZWUiLCJuYW1lIjoiQmFjaGVsb3Igb2YgU2NpZW5jZSBhbmQgQXJ0cyJ9fX0 .YEsG9at9Hnt_j-UykCrnl494fcYMTjzpgvlK0KzzjvfmZmSg-sNVJqMZWizYhWv_eRUvAoZohvSJWeagwj_Ajw

application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc+cose

d28443a10128a05901be7b2240636f6e74657874223a5b2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f7632222c2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f6578616d706c65732f7632225d2c226964223a22687474703a2f2f756e69766572736974792e6578616d706c652f63726564656e7469616c732f33373332222c2274797065223a5b2256657269666961626c6543726564656e7469616c222c224578616d706c6544656772656543726564656e7469616c225d2c22697373756572223a2268747470733a2f2f756e69766572736974792e6578616d706c652f697373756572732f353635303439222c2276616c696446726f6d223a22323031302d30312d30315430303a30303a30305a222c2263726564656e7469616c5375626a656374223a7b226964223a226469643a6578616d706c653a656266656231663731326562633666316332373665313265633231222c22646567726565223a7b2274797065223a224578616d706c6542616368656c6f72446567726565222c226e616d65223a2242616368656c6f72206f6620536369656e636520616e642041727473227d7d7d584013d7bfd4a7f3c0296d67f24157e4ba5a5fedafc688c5e01bd72f23e1d419d558ec05cddf9ac477fdc9fc7a8b1325dc80968a1bbc95d2c601753693290cbff553

.eyJpYXQiOjE3NDU3NzY3MTMsImV4cCI6MTc0Njk4NjMxMywiX3NkX2FsZyI6InNoYS0yNTYiLCJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy81NjUwNDkiLCJ2YWxpZEZyb20iOiIyMDEwLTAxLTAxVDAwOjAwOjAwWiIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImRlZ3JlZSI6eyJuYW1lIjoiQmFjaGVsb3Igb2YgU2NpZW5jZSBhbmQgQXJ0cyIsIl9zZCI6WyJhbDRaR3cxellsZU1BMTA2SXpiLVhlc0pBbldDZ1NpNW5QbjFKRVYxamo4Il19LCJfc2QiOlsiOC1vWU9FU1JrNjBpbVozblgzY2E5RGxIeXFJcTk4RnQzX19HMUFsYU90MCJdfSwiX3NkIjpbIk9EUGNVWENXbGQtSGlxQ1h5NEhuY1Mxb3hqaURpRE9wMTJ4YlVveEZvU2MiLCJVaGtGbUw3cXc0UVlLWDJjVDNMWFAwcDZ5VHc1UmlIRG5xWGxfMFZLZnhBIl19 .YASiTse77TXvt7jYyChZOd6x0TbbBeEVZ14pekiOWw6G6N40a3evbWFBAkuPcStVFZPshFy1GFECySRVAhcD5A ~WyIzQkdhQ3BfaTZIV0hEMm5GekZ2blN3IiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd~WyJld1p0bUpDZHA2VWFWcEVhTXZ0V0FRIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d~WyJIdThleHpqLTBySDg0aEtwenhnS0VnIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd~WyJVczR2ekVuVWJuSU96OC1VVDd2OHN3IiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0~

Claim: id

SHA-256 Hash: ODPcUXCWld-HiqCXy4HncS1oxjiDiDOp12xbUoxFoSc

Disclosure(s): WyIzQkdhQ3BfaTZIV0hEMm5GekZ2blN3IiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd

Contents: [
  "3BGaCp_i6HWHD2nFzFvnSw",
  "id",
  "http://university.example/credentials/3732"
]

Claim: type

SHA-256 Hash: UhkFmL7qw4QYKX2cT3LXP0p6yTw5RiHDnqXl_0VKfxA

Disclosure(s): WyJld1p0bUpDZHA2VWFWcEVhTXZ0V0FRIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d

Contents: [
  "ewZtmJCdp6UaVpEaMvtWAQ",
  "type",
  [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ]
]

Claim: id

SHA-256 Hash: 8-oYOESRk60imZ3nX3ca9DlHyqIq98Ft3__G1AlaOt0

Disclosure(s): WyJIdThleHpqLTBySDg0aEtwenhnS0VnIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd

Contents: [
  "Hu8exzj-0rH84hKpzxgKEg",
  "id",
  "did:example:ebfeb1f712ebc6f1c276e12ec21"
]

Claim: type

SHA-256 Hash: al4ZGw1zYleMA106Izb-XesJAnWCgSi5nPn1JEV1jj8

Disclosure(s): WyJVczR2ekVuVWJuSU96OC1VVDd2OHN3IiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0

Contents: [
  "Us4vzEnUbnIOz8-UT7v8sw",
  "type",
  "ExampleBachelorDegree"
]

上述示例使用了两种类型的标识符。第一种标识符用于可验证凭证,采用基于HTTP的URL。第二种标识符用于可验证凭证主体(即声明所描述的对象), 采用去中心化标识符,也称为DID

处理本文档中指定类型的对象的软件系统使用类型信息来确定所提供的可验证凭证可验证表述是否适用于预期的用例。本规范定义了一个表示对象类型信息的type属性。此类型信息可以在验证过程中使用,详情请参阅附录A.验证

可验证凭证可验证表述必须包含具有关联值的type属性

type
type 属性的值必须一个或多个术语绝对URL字符串。如果提供了多个值,那么顺序并不重要。
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": ["VerifiableCredential", "ExampleDegreeCredential"],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2025-04-27T17:58:33Z",
    "verificationMethod": "did:key:zDnaebSRtPnW6YCpxAhR5JPxJqt9UunCsBPhLEtUokUvp87nQ",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z2F16goBUjRsg2ieNiojpaz313CN98DU4APFiokAUkUvEYESSDmokg1omwvcK7EFqLgYpdyekEoxnVHwuxt8Webwa"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2025-04-27T17:58:33Z",
    "verificationMethod": "did:key:zDnaerJh8WwyBVVGcZKKkqRKK9iezje8ut6t9bnNChtxcWwNv",
    "cryptosuite": "ecdsa-sd-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0AhVhAIC9hFSOtM2k0lFFuKclfp_cYTO5YWhZIYaMEPMcz1jloqTS0Zkww-Lc1U6FP15vJBaIa5ICMknDv16H8r0eh8VgjgCQDJUVkvejrCod7srzLsvKZEVUqzPULOZlb5-cwYdz0K8NYIJNls-gfevdbPuoczDW5TuctpSXJ7V9anf9MrkmJYP7ehVhARNoIdk_H3oT_8HxLP5Fo38e9blzlzSBmFswtxQUPzERVBXcgCU9k6c8pJz_RmjL0Y1eaW50Gl_qs_olK0u7NKlhAD3n7fkV5E-YF4KlodM7PhHP8_kB9you9XtTDVif3tyYsfWewmRysEN0A-EdLZ0WRwSwyJGBaBgGPb5erVUT-ElhAmLyoxIvE3GPC9rTc8tpfNEmTvcwBlpDGMlYkKb52XQeQeQFQwzgCPhpJowOomdMfPUq_xsHih8NsnDN0LXJtVFhArdqKKbPA-tMtA0mMQn1vIZ6mVjeTeJTsdxwZze2EspERwrMcgS25V-fVtjdEXCmNKyL7giUGy4eixjRGYowzpFhADobyi3ucf61IGgBM8_Vy1b8JkaiISFoy_i8ZldQfiqIoG00zU4-jEFuLWvsW7FGfPo0jq-2ZZBvS5H4SjaETJIFnL2lzc3Vlcg"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "verificationMethod": "did:key:zUC78GzFRA4TWh2mqRiKro1wwRb5KDaMJ3M1AD3qGtgEbFrwWGvWbnCzArkeTZCyzBz4Panr2hLaZxsXHiBQCwBc3fRPH6xY4u5v8ZAd3dPW1aw89Rra86CVwXr3DczANggYbMD",
    "cryptosuite": "bbs-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0ChVhQkkdBby2GbmvVh66cM6TNzNfh0hR9ePeG7dWYbHfDxK6CcA_rVoxxsRGIoWX5Gs6ZGgQNPTBeehiEHT_cj-5fjZ6ArTluARHPbaXQzWyXKrVYQGd_DaMQQsoaryttl5TvxnFT-Vm4SkVx03K9qNJ4jhArS1r7HKFDPyyrvPGqNF8bjgNELvoomOjpbD9JEvaGI1pYYJVTGbTfcflzyx41E-f9kSqmf10xYzxJrGfC7b7GPY8X7VjMT__ZKSuwdH-5jak-5gkjocsHI6oxIKlLrhW1Wh5yrDCH-QC823TS8NE9VGBzIFAfUt5qazGEcJ8CxeSPxFgg_vwNGMCz741AWQhjph2NJJcybTTnmtmN1AZd15PefM6BZy9pc3N1ZXI"
  }
}
Protected Headers
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc+jwt

.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzLzM3MzIiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiRXhhbXBsZURlZ3JlZUNyZWRlbnRpYWwiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy81NjUwNDkiLCJ2YWxpZEZyb20iOiIyMDEwLTAxLTAxVDAwOjAwOjAwWiIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImlkIjoiZGlkOmV4YW1wbGU6ZWJmZWIxZjcxMmViYzZmMWMyNzZlMTJlYzIxIiwiZGVncmVlIjp7InR5cGUiOiJFeGFtcGxlQmFjaGVsb3JEZWdyZWUiLCJuYW1lIjoiQmFjaGVsb3Igb2YgU2NpZW5jZSBhbmQgQXJ0cyJ9fX0 .yLIZkNIu3N3b2JNM69FVtAD9C5iaw7qMRc5TG6Yl8yWUu9ql9cO2sUBzNSSSz7MfqW_PMXxpbqplMKsuheroaA

application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc+cose

d28443a10128a05901be7b2240636f6e74657874223a5b2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f7632222c2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f6578616d706c65732f7632225d2c226964223a22687474703a2f2f756e69766572736974792e6578616d706c652f63726564656e7469616c732f33373332222c2274797065223a5b2256657269666961626c6543726564656e7469616c222c224578616d706c6544656772656543726564656e7469616c225d2c22697373756572223a2268747470733a2f2f756e69766572736974792e6578616d706c652f697373756572732f353635303439222c2276616c696446726f6d223a22323031302d30312d30315430303a30303a30305a222c2263726564656e7469616c5375626a656374223a7b226964223a226469643a6578616d706c653a656266656231663731326562633666316332373665313265633231222c22646567726565223a7b2274797065223a224578616d706c6542616368656c6f72446567726565222c226e616d65223a2242616368656c6f72206f6620536369656e636520616e642041727473227d7d7d58402c8dcd949c0418cf1b489b94632ccaea624331ad4881b15e5c3fddb34d86a5128f5442cd5603f3a0a8d8282ac7b13090c79249b048e3433e9eebfed1d0407adf

.eyJpYXQiOjE3NDU3NzY3MTMsImV4cCI6MTc0Njk4NjMxMywiX3NkX2FsZyI6InNoYS0yNTYiLCJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy81NjUwNDkiLCJ2YWxpZEZyb20iOiIyMDEwLTAxLTAxVDAwOjAwOjAwWiIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImRlZ3JlZSI6eyJuYW1lIjoiQmFjaGVsb3Igb2YgU2NpZW5jZSBhbmQgQXJ0cyIsIl9zZCI6WyJEUkg1aWVsZHdHNXJPMlVQNXlYYlBXWHNTaFFNSmxESlJfZlFVbmhZVDNFIl19LCJfc2QiOlsiUzRvTGpDb0dNckpuMnFFR2lXY1JNNmdFNGZ6cVVFcVIzNC1FOWdjZzIyWSJdfSwiX3NkIjpbIlZtWnFMMkpKUFB0RDk2TmxwNE43TzFRMXhFRmNMZ1hCVzVfQWFGQXp4Sm8iLCJaYTdxRkpZSnRSTExSOFNRT1VUYUxwaDZBY21QSGlYVkc5Ni03Wnp3MEtJIl19 .ypl46Q1EqUERV-IUUS_-qGoAESfv_WdXwtHOk2vX7QTZNFf0NNfg-w2OR8JPRe97kZBDQLuBZKPJhBXdFjbSwg ~WyIxeDVielRkZXhsLW4zWVVIQXF5ZUxBIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd~WyJablVReVZXRmo0UlFfTHFmOVBkbmN3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d~WyI5TG1nOHhaUVJxWEZZaVRlV0hRZjV3IiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd~WyJZMVBDaVA3YnJ3TjFHMEVMWmJXRlZRIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0~

声明: id

SHA-256 哈希: VmZqL2JJPPtD96Nlp4N7O1Q1xEFcLgXBW5_AaFAzxJo

公开信息: WyIxeDVielRkZXhsLW4zWVVIQXF5ZUxBIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd

内容: [
  "1x5bzTdexl-n3YUHAqyeLA",
  "id",
  "http://university.example/credentials/3732"
]

声明: type

SHA-256 哈希: Za7qFJYJtRLLR8SQOUTaLph6AcmPHiXVG96-7Zzw0KI

公开信息: WyJablVReVZXRmo0UlFfTHFmOVBkbmN3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d

内容: [
  "ZnUQyVWFj4RQ_Lqf9Pdncw",
  "type",
  [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ]
]

声明: id

SHA-256 哈希: S4oLjCoGMrJn2qEGiWcRM6gE4fzqUEqR34-E9gcg22Y

公开信息: WyI5TG1nOHhaUVJxWEZZaVRlV0hRZjV3IiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd

内容: [
  "9Lmg8xZQRqXFYiTeWHQf5w",
  "id",
  "did:example:ebfeb1f712ebc6f1c276e12ec21"
]

声明: type

SHA-256 哈希: DRH5ieldwG5rO2UP5yXbPWXsShQMJlDJR_fQUnhYT3E

公开信息: WyJZMVBDaVA3YnJ3TjFHMEVMWmJXRlZRIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0

内容: [
  "Y1PCiP7brwN1G0ELZbWFVQ",
  "type",
  "ExampleBachelorDegree"
]

关于本规范,下表列出了必须指定类型的对象。

对象 类型 可验证凭证 对象 VerifiableCredential,以及可选的更具体的 可验证凭证 类型。例如:
"type": ["VerifiableCredential", "OpenBadgeCredential"] 可验证表述 对象 VerifiablePresentation,以及可选的更具体的 可验证表述 类型。例如:
"type": "VerifiablePresentation" 凭证状态 对象 一个有效的凭证状态类型。例如:
"type": "BitstringStatusListEntry" 使用条款 对象 一个有效的使用条款类型。例如:
"type": "TrustFrameworkPolicy" 证据 对象 一个有效的证据类型。例如:
"type": "Evidence" 刷新服务 对象 一个有效的刷新服务类型。例如:
"type": "VerifiableCredentialRefreshService2021" 凭证模式 对象 一个有效的凭证模式类型。例如:
"type": "JsonSchema"

所有凭证表述和封装对象都应当指定或关联其他更具体的类型(例如ExampleDegreeCredential),以便软件系统可以更容易地检测和处理这些附加信息。

在处理本规范中定义的封装对象时,例如与credentialSubject对象关联或深度嵌套在其中的对象时,软件系统应当使用封装层次结构中较高层对象指定的类型信息。具体来说,封装对象(例如凭证)应当传达关联对象的类型,以便验证者可以根据封装对象的类型来快速确定关联对象的内容。

例如,类型ExampleDegreeCredential凭证对象向verifier表明,与credentialSubject属性关联的对象包含以下标识符:

这使得实现者可以依赖与type属性关联的值进行验证。对象类型及其相关值的文档至少应当是人类可读的,可以在类型的URL中找到。例如,人类可读的BitstringStatusList类型定义可以在 https://www.w3.org/ns/credentials/status/#BitstringStatusList上找到。 另外建议在同一个URL上通过HTTP内容协商提供提供机器可读的版本

签发者提供文本并为凭据提供名称和用途的简短描述可能会对表述凭证有帮助。namedescription属性可以达到这些目的。

name
表示凭证名称的可选属性。如果存在,name属性的值必须是字符串或语言值对象,如11.1 语言和基本方向所述。理想情况下,证书的名称应该是简洁的、可读的,并且能够使一个人快速地将一个证书与他们可能持有的任何其他证书区分开。
description
用于传递有关凭证特定细节的可选属性。如果存在,description属性的值必须是字符串或语言值对象,如11.1 语言和基本方向所述。理想情况下,证书的描述不超过几句话的长度,并传递有关证书的足够信息,让一个人了解证书的内容,,而不必查看整个声明
示例 5: name 和 description 属性的用途
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": ["VerifiableCredential", "ExampleDegreeCredential"],
  "issuer": {
    "id": "https://university.example/issuers/565049",
    "name": "Example University",
    "description": "A public university focusing on teaching examples."
  },
  "validFrom": "2015-05-10T12:30:00Z",
  "name": "Example University Degree",
  "description": "2015 Bachelor of Science and Arts Degree",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": {
    "id": "https://university.example/issuers/565049",
    "name": "Example University",
    "description": "A public university focusing on teaching examples."
  },
  "validFrom": "2015-05-10T12:30:00Z",
  "name": "Example University Degree",
  "description": "2015 Bachelor of Science and Arts Degree",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2025-04-27T17:58:33Z",
    "verificationMethod": "did:key:zDnaebSRtPnW6YCpxAhR5JPxJqt9UunCsBPhLEtUokUvp87nQ",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z2LeuoNi3yR1b6c3fkRsEvXJ5ex8X4RdutyK7L6HAo2bJQwr21w85Y5KWy3DptXR8ke52Assqik6wKTy9DKqkEZ2r"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": {
    "id": "https://university.example/issuers/565049",
    "name": "Example University",
    "description": "A public university focusing on teaching examples."
  },
  "validFrom": "2015-05-10T12:30:00Z",
  "name": "Example University Degree",
  "description": "2015 Bachelor of Science and Arts Degree",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2025-04-27T17:58:33Z",
    "verificationMethod": "did:key:zDnaerJh8WwyBVVGcZKKkqRKK9iezje8ut6t9bnNChtxcWwNv",
    "cryptosuite": "ecdsa-sd-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0AhVhA5A-VvZ6RF2KlLjsYsx1DosYuzhbD7hn6N6gTF5yv22oTPKcqHyElGQn3TcerwktEbNrRiuWMvmfuw1XmwhCk-lgjgCQCHC44msX1XnfID2VfkUX1j1PHUzfjdORSePcGUhVB3KxYIBeo1lJt0Rp-So7_Ch6hiCE36oR-r6WyVaT6r-o0Nf1nh1hATMKDPXogkIVw6n-pqlDoJMti8cCVJvle_IWSAqv5vShtqt5E6NEJ3PTiK7NwSMSGMVE0XdJXZlEj3xck6UL0vlhAa7ltjeSjPD1TD52OkPPjuQrhADwoTsDXERr-UCuNICq-uxKiFsxebXjys1SeHIFzT0TQA5TlTl-J55vFL90q-lhAi8EKNrgQiKdl_EAlgv3aS15FLuIpUmfROB6srPRpHI4cz-kC8xlarcp9XMqHIpL5hncUJd2EoGTmMpm3nzs3PVhAr4sC2Lin-35yxMSvWXrq7cEGw4IomJnayfWsxmXencGOmXQzZxJbsUHmLCAprm51apFj19BZED6G-82Ilx0ZvlhADRiBGvSKeF3hYkihvS7kkZDnySRU4Q4yfNm_Hwe6kysHhtP5rnbu3LYfU-hI_0P6FbZJrPQ7uifIMg2QMHxARFhAxjQMayCxmcOVGlo5ICU5zQxx6qTgjgpNl1GC1dGjnA1J3xhFALceL5DHxJbSvcRsRVwRjBybMkZurUWhPgzpwVhAhbwrQWJSLLhyXqFcQef_-eKnNE3F5oBq2phORFJ16m3uRU-R-vSoXJlSpyLBZrNGU7gwCHVv0b_e2ZC13MiFR4FnL2lzc3Vlcg"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": {
    "id": "https://university.example/issuers/565049",
    "name": "Example University",
    "description": "A public university focusing on teaching examples."
  },
  "validFrom": "2015-05-10T12:30:00Z",
  "name": "Example University Degree",
  "description": "2015 Bachelor of Science and Arts Degree",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "verificationMethod": "did:key:zUC78GzFRA4TWh2mqRiKro1wwRb5KDaMJ3M1AD3qGtgEbFrwWGvWbnCzArkeTZCyzBz4Panr2hLaZxsXHiBQCwBc3fRPH6xY4u5v8ZAd3dPW1aw89Rra86CVwXr3DczANggYbMD",
    "cryptosuite": "bbs-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0ChVhQkS0mcHTu9KLuuY8_DlU_2lj8Su_EXxWyY0xMPZuCGQMRzah3DFaerG-CRDFWR1KBWkYUpPizkPDULYOU8XsXoC3a8_00GgHfKuoiNCLnSNBYQGd_DaMQQsoaryttl5TvxnFT-Vm4SkVx03K9qNJ4jhArXFDE8ZX70eeJX1DawHuw0sW9CBV3sa68IaRGcnZiiQpYYJVTGbTfcflzyx41E-f9kSqmf10xYzxJrGfC7b7GPY8X7VjMT__ZKSuwdH-5jak-5gkjocsHI6oxIKlLrhW1Wh5yrDCH-QC823TS8NE9VGBzIFAfUt5qazGEcJ8CxeSPxFggbCn9jbv1yUPTocre_YTgvXiebb8lJMqxhmAnw4MiFbWBZy9pc3N1ZXI"
  }
}
Protected Headers
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": {
    "id": "https://university.example/issuers/565049",
    "name": "Example University",
    "description": "A public university focusing on teaching examples."
  },
  "validFrom": "2015-05-10T12:30:00Z",
  "name": "Example University Degree",
  "description": "2015 Bachelor of Science and Arts Degree",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc+jwt

.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzLzM3MzIiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiRXhhbXBsZURlZ3JlZUNyZWRlbnRpYWwiXSwiaXNzdWVyIjp7ImlkIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy81NjUwNDkiLCJuYW1lIjoiRXhhbXBsZSBVbml2ZXJzaXR5IiwiZGVzY3JpcHRpb24iOiJBIHB1YmxpYyB1bml2ZXJzaXR5IGZvY3VzaW5nIG9uIHRlYWNoaW5nIGV4YW1wbGVzLiJ9LCJ2YWxpZEZyb20iOiIyMDE1LTA1LTEwVDEyOjMwOjAwWiIsIm5hbWUiOiJFeGFtcGxlIFVuaXZlcnNpdHkgRGVncmVlIiwiZGVzY3JpcHRpb24iOiIyMDE1IEJhY2hlbG9yIG9mIFNjaWVuY2UgYW5kIEFydHMgRGVncmVlIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiaWQiOiJkaWQ6ZXhhbXBsZTplYmZlYjFmNzEyZWJjNmYxYzI3NmUxMmVjMjEiLCJkZWdyZWUiOnsidHlwZSI6IkV4YW1wbGVCYWNoZWxvckRlZ3JlZSIsIm5hbWUiOiJCYWNoZWxvciBvZiBTY2llbmNlIGFuZCBBcnRzIn19fQ .x5OQX2cmaXVU-UxScJ1KlOgR9nwpLvFO4s-fWuHvb58DDEb-xVxS8hqPIpLiNK0F3eedtoHeJ2gJ2RHVnGVSNQ

application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": {
    "id": "https://university.example/issuers/565049",
    "name": "Example University",
    "description": "A public university focusing on teaching examples."
  },
  "validFrom": "2015-05-10T12:30:00Z",
  "name": "Example University Degree",
  "description": "2015 Bachelor of Science and Arts Degree",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc+cose

d28443a10128a05902807b2240636f6e74657874223a5b2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f7632222c2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f6578616d706c65732f7632225d2c226964223a22687474703a2f2f756e69766572736974792e6578616d706c652f63726564656e7469616c732f33373332222c2274797065223a5b2256657269666961626c6543726564656e7469616c222c224578616d706c6544656772656543726564656e7469616c225d2c22697373756572223a7b226964223a2268747470733a2f2f756e69766572736974792e6578616d706c652f697373756572732f353635303439222c226e616d65223a224578616d706c6520556e6976657273697479222c226465736372697074696f6e223a2241207075626c696320756e697665727369747920666f637573696e67206f6e207465616368696e67206578616d706c65732e227d2c2276616c696446726f6d223a22323031352d30352d31305431323a33303a30305a222c226e616d65223a224578616d706c6520556e697665727369747920446567726565222c226465736372697074696f6e223a22323031352042616368656c6f72206f6620536369656e636520616e64204172747320446567726565222c2263726564656e7469616c5375626a656374223a7b226964223a226469643a6578616d706c653a656266656231663731326562633666316332373665313265633231222c22646567726565223a7b2274797065223a224578616d706c6542616368656c6f72446567726565222c226e616d65223a2242616368656c6f72206f6620536369656e636520616e642041727473227d7d7d5840e49e36b7cb7a12d81900a6ba0bdd26084dcb33baaf759a3a7b3eacff8af566291f6ae573ba6707b231de6f70372e4b8da88e9be12b0f7dd168d5b6f0f0044770

.eyJpYXQiOjE3NDU3NzY3MTMsImV4cCI6MTc0Njk4NjMxMywiX3NkX2FsZyI6InNoYS0yNTYiLCJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjp7Im5hbWUiOiJFeGFtcGxlIFVuaXZlcnNpdHkiLCJkZXNjcmlwdGlvbiI6IkEgcHVibGljIHVuaXZlcnNpdHkgZm9jdXNpbmcgb24gdGVhY2hpbmcgZXhhbXBsZXMuIiwiX3NkIjpbIjN5U2k5WkUtdWp0RDQ4NDRacGY4V2NMY3EwQWlyajVqbFJmLTNSQVJPcmsiXX0sInZhbGlkRnJvbSI6IjIwMTUtMDUtMTBUMTI6MzA6MDBaIiwibmFtZSI6IkV4YW1wbGUgVW5pdmVyc2l0eSBEZWdyZWUiLCJkZXNjcmlwdGlvbiI6IjIwMTUgQmFjaGVsb3Igb2YgU2NpZW5jZSBhbmQgQXJ0cyBEZWdyZWUiLCJjcmVkZW50aWFsU3ViamVjdCI6eyJkZWdyZWUiOnsibmFtZSI6IkJhY2hlbG9yIG9mIFNjaWVuY2UgYW5kIEFydHMiLCJfc2QiOlsiZnRIMUtTRTVzNmZKd1cyMWY2STBlUmNtYW9SX2s5YTVBS2lTMnFidFVTNCJdfSwiX3NkIjpbIkNJaDBOYWN4ME5IWUJ5QTFoZ1NlWDdoMXF0amNvUGRIODR1NTN0a2t6R3ciXX0sIl9zZCI6WyI2UFk1X1dKU1pUaWszdG9rOHg0eEF0TWstOGpqWnpzZnV6dXhUX2JvY0wwIiwiVE9XWGhJS1dPeHBZbHgtUmtoal9kVTh3Sml2cmRuOUNrbm9fcXVvNng4YyJdfQ .FzX3Ke7i888rlwj2XY-Xmd73hKH4oGaIp68z2xqPS1Bv17BKSaKQwfxgf22iNAguzVvlIQVXjRqpg0G-S46xDA ~WyI5MGlaMEp1a2lCUlpoa0pnajhyRDN3IiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd~WyJpbU94UllGWWVSM2VHWGdJOTUxcHVnIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d~WyJlemF5RzgwVG1hRVhhSjRwNHlpY2xnIiwgImlkIiwgImh0dHBzOi8vdW5pdmVyc2l0eS5leGFtcGxlL2lzc3VlcnMvNTY1MDQ5Il0~WyJXT1lvak0yb2dad3pXQjJOa3FELWNBIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd~WyJuUG1kWEk5YWtEakd4Mk0wRTVhWUtBIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0~

声明: id

SHA-256 哈希: TOWXhIKWOxpYlx-Rkhj_dU8wJivrdn9Ckno_quo6x8c

公开信息: WyI5MGlaMEp1a2lCUlpoa0pnajhyRDN3IiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd

内容: [
  "90iZ0JukiBRZhkJgj8rD3w",
  "id",
  "http://university.example/credentials/3732"
]

声明: type

SHA-256 哈希: 6PY5_WJSZTik3tok8x4xAtMk-8jjZzsfuzuxT_bocL0

公开信息: WyJpbU94UllGWWVSM2VHWGdJOTUxcHVnIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d

内容: [
  "imOxRYFYeR3eGXgI951pug",
  "type",
  [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ]
]

声明: id

SHA-256 哈希: 3ySi9ZE-ujtD4844Zpf8WcLcq0Airj5jlRf-3RAROrk

公开信息: WyJlemF5RzgwVG1hRVhhSjRwNHlpY2xnIiwgImlkIiwgImh0dHBzOi8vdW5pdmVyc2l0eS5leGFtcGxlL2lzc3VlcnMvNTY1MDQ5Il0

内容: [
  "ezayG80TmaEXaJ4p4yiclg",
  "id",
  "https://university.example/issuers/565049"
]

声明: id

SHA-256 哈希: CIh0Nacx0NHYByA1hgSeX7h1qtjcoPdH84u53tkkzGw

公开信息: WyJXT1lvak0yb2dad3pXQjJOa3FELWNBIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd

内容: [
  "WOYojM2ogZwzWB2NkqD-cA",
  "id",
  "did:example:ebfeb1f712ebc6f1c276e12ec21"
]

声明: type

SHA-256 哈希: ftH1KSE5s6fJwW21f6I0eRcmaoR_k9a5AKiS2qbtUS4

公开信息: WyJuUG1kWEk5YWtEakd4Mk0wRTVhWUtBIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0

内容: [
  "nPmdXI9akDjGx2M0E5aYKA",
  "type",
  "ExampleBachelorDegree"
]

名称和描述也支持用不同的语言表达内容。如果需要用语言和基本方向信息表示字符串,可以使用@value,@language,和@direction属性的对象,分别表示文本值、语言标签和基本方向。详情请参阅11.1节语言和基本方向

注意: @direction 属性对于单语言字符串不是必需的

下面示例中的@direction属性对于相关的单语言字符串来说不是必需的,因为它们的默认方向与通过 @@direction值设置的方向相同。我们在这里添加@direction 属性是为了清晰地演示,并使复制+粘贴+编辑 产生功能效果。我们鼓励实现者阅读 JSON-LD 1.1规范中的 字符串国际化 的部分。

示例 6: name和description属性的用途
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": ["VerifiableCredential", "ExampleDegreeCredential"],
  "issuer": {
    "id": "https://university.example/issuers/565049",
    "name": [{
      "@value": "Example University",
      "@language": "en"
    }, {
      "@value": "Université Exemple",
      "@language": "fr"
    }, {
      "@value": "جامعة المثال",
      "@language": "ar",
      "@direction": "rtl"
    }],
    "description": [{
      "@value": "A public university focusing on teaching examples.",
      "@language": "en"
    }, {
      "@value": "Une université publique axée sur l'enseignement d'exemples.",
      "@language": "fr"
    }, {
      "@value": ".جامعة عامة تركز على أمثلة التدريس",
      "@language": "ar",
      "@direction": "rtl"
    }]
  },
  "validFrom": "2015-05-10T12:30:00Z",
  "name": [{
    "@value": "Example University Degree",
    "@language": "en"
  }, {
    "@value": "Exemple de Diplôme Universitaire",
    "@language": "fr"
  }, {
    "@value": "مثال الشهادة الجامعية",
    "@language": "ar",
    "@direction": "rtl"
  }],
  "description": [{
    "@value": "2015 Bachelor of Science and Arts Degree",
    "@language": "en"
  }, {
    "@value": "2015 Licence de Sciences et d'Arts",
    "@language": "fr"
  }, {
    "@value": "2015 بكالوريوس العلوم والآداب",
    "@language": "ar",
    "@direction": "rtl"
  }],
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": [{
        "@value": "Bachelor of Science and Arts Degree",
        "@language": "en"
      }, {
        "@value": "Licence de Sciences et d'Arts",
        "@language": "fr"
      }, {
        "@value": "بكالوريوس العلوم والآداب",
        "@language": "ar",
        "@direction": "rtl"
      }]
    }
  }
}

本规范定义了一个用于表达可验证凭证签发者的属性。

可验证凭证必须具有issuer属性

issuer
issuer属性的值必须URL 或包含id属性(其值为URL); 无论哪种情况,签发者都会选择此URL以全局明确的方式标识自己。建议URL在被解引用时, 能够返回一个包含关于签发者的受控标识符文档(如受控标识符v1.0规范中定义),该文档可用于验证凭证中表达的信息。
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": ["VerifiableCredential", "ExampleDegreeCredential"],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2025-04-27T17:58:33Z",
    "verificationMethod": "did:key:zDnaebSRtPnW6YCpxAhR5JPxJqt9UunCsBPhLEtUokUvp87nQ",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z3sXkg3PHbK2YpbhQajunUvReW3Qn66mPsQQKvn4hwEG1DohgUqvXBF2oKT5Qb8tKSKjewNhsJCCcBoY6Rfye4ipw"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2025-04-27T17:58:33Z",
    "verificationMethod": "did:key:zDnaerJh8WwyBVVGcZKKkqRKK9iezje8ut6t9bnNChtxcWwNv",
    "cryptosuite": "ecdsa-sd-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0AhVhA91jcz-MSzf_Z-fw6VM-YN1ijTr26VBTz9H14dMiv6t5vRaGC1IKHvDtY0ZJup1pnliukZBHEXgM46Bf4EjdyIFgjgCQDMIFZRjI7aJUGGsbDYML33eEwJuub6dIF5agqeB4sTdJYIAhgKXoAudJOwmVRpO2Ab5sNIirjQdArIjp8ygMx2S5ihVhASWfZk4fYqoICvoaokYzsABtmDzpgTe8ZkI2z4MDKt1wcp0T9tBx30mk1V20Qhy2PT15nrPygrxpn8_h2Z1Jo7FhAXNmEd28tsb_VkmqckvjVBet7p8Hhq7d8DziDldJRri8-cygIdcaX0MsitDRMsclHCsO25UKSjCX96dSto_Y3FVhAeYhHIz52Lw3Fd8tO7rdPOjILauPLHFkRnmHbd8ixxKwb62gTqchavN3rv8GtKxQL9o-cLCKFm-mpQDUABuYxMVhA-vKFPcx_bNem4ufrFDr-cyjUa3r-zjLJwp9xss7XZikI3PLiiMGIBnhhGs3zCsQXvSZMX6ScPOpog6Kzl-YSj1hA7xtSv3lNDKhPKKQ-7F4WHhmfwj0F1PN_mj5jDkJcdw19eYTux4wRXgehBXRtvkuMw9iG6UFyurMFeyb-EkmQPIFnL2lzc3Vlcg"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "verificationMethod": "did:key:zUC78GzFRA4TWh2mqRiKro1wwRb5KDaMJ3M1AD3qGtgEbFrwWGvWbnCzArkeTZCyzBz4Panr2hLaZxsXHiBQCwBc3fRPH6xY4u5v8ZAd3dPW1aw89Rra86CVwXr3DczANggYbMD",
    "cryptosuite": "bbs-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0ChVhQs4LnYe9N1n9fBW8t7tgXy8gZA1WksN76TfdxHLUW0cJlImiaNZZbbNwAaL86-8xnTgMJgpwaMchm_8VepMSYZKjfQReWnOfwRfwz8grbaNNYQGd_DaMQQsoaryttl5TvxnFT-Vm4SkVx03K9qNJ4jhArKnv3N5iX7nvZR0OCXS-uXH4QQ9mW65QM5qlHOfE4GQVYYJVTGbTfcflzyx41E-f9kSqmf10xYzxJrGfC7b7GPY8X7VjMT__ZKSuwdH-5jak-5gkjocsHI6oxIKlLrhW1Wh5yrDCH-QC823TS8NE9VGBzIFAfUt5qazGEcJ8CxeSPxFggO3rpYlZcra0jsUsWXIoCAXrkmj3mb1o1k8CYE2Wx9d6BZy9pc3N1ZXI"
  }
}
Protected Headers
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc+jwt

.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzLzM3MzIiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiRXhhbXBsZURlZ3JlZUNyZWRlbnRpYWwiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy8xNCIsInZhbGlkRnJvbSI6IjIwMTAtMDEtMDFUMTk6MjM6MjRaIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiaWQiOiJkaWQ6ZXhhbXBsZTplYmZlYjFmNzEyZWJjNmYxYzI3NmUxMmVjMjEiLCJkZWdyZWUiOnsidHlwZSI6IkV4YW1wbGVCYWNoZWxvckRlZ3JlZSIsIm5hbWUiOiJCYWNoZWxvciBvZiBTY2llbmNlIGFuZCBBcnRzIn19fQ .lTz4nWXqYIiQ0bm_t26FD3GHibp2HVinvyPI6wezRaPURX2KaGSas2v4yaRFhpEyni3hLFc_L2ZhWJXcDWnyUQ

application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc+cose

d28443a10128a05901ba7b2240636f6e74657874223a5b2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f7632222c2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f6578616d706c65732f7632225d2c226964223a22687474703a2f2f756e69766572736974792e6578616d706c652f63726564656e7469616c732f33373332222c2274797065223a5b2256657269666961626c6543726564656e7469616c222c224578616d706c6544656772656543726564656e7469616c225d2c22697373756572223a2268747470733a2f2f756e69766572736974792e6578616d706c652f697373756572732f3134222c2276616c696446726f6d223a22323031302d30312d30315431393a32333a32345a222c2263726564656e7469616c5375626a656374223a7b226964223a226469643a6578616d706c653a656266656231663731326562633666316332373665313265633231222c22646567726565223a7b2274797065223a224578616d706c6542616368656c6f72446567726565222c226e616d65223a2242616368656c6f72206f6620536369656e636520616e642041727473227d7d7d58405ecf7be0f23f3ed8bf173e4895c70f7dad9fb36628730d78a37aa499cbf1ef8263a4def9303e5de3783c7ae69884fcdafc924ee676ec232d8f51488fee4cdbc5

.eyJpYXQiOjE3NDU3NzY3MTMsImV4cCI6MTc0Njk4NjMxMywiX3NkX2FsZyI6InNoYS0yNTYiLCJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy8xNCIsInZhbGlkRnJvbSI6IjIwMTAtMDEtMDFUMTk6MjM6MjRaIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiZGVncmVlIjp7Im5hbWUiOiJCYWNoZWxvciBvZiBTY2llbmNlIGFuZCBBcnRzIiwiX3NkIjpbImN4X0JsU2pRSVp6bjN5aFRhc0pEeGhLZVlrcndLc25fLXc1RGFKVVdNYmMiXX0sIl9zZCI6WyJOcm96NFFQRHFTOGZkdVI0bDFQaFZwS3l6aFJzN2xha3VlQUZDMmhNa2hzIl19LCJfc2QiOlsiSk84RmdIYmVuLVdlOHJvUDBiM09uV1hrVHZSMlYzOXRTSllzdmpiTy12cyIsImhvckxSUTVqbHpNcFktWDdKMXA1Wmh4UXNNNmMyaHhoZXNjUnF0RnRQSDgiXX0 .DVnk8KsBnPp-Z9vnpReTasbST4ENcNjOwn9qxCgDx7H33VsJaFi0DyCa2auVKb1oSL0IilelgxsEVs27fMClSA ~WyJoSEtXaHpnQ1k0VUJ0Z1F1V2ZWQjNBIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd~WyJUeHZFNURzNU5OT190S0VnMUsyZnlBIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d~WyJlUkpwYkw3WHZ2SVVwVnVGLWlLUWNnIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd~WyJwb2o5UDctRG5MYzF3VVBSbHpkXy1nIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0~

声明: id

SHA-256 哈希: JO8FgHben-We8roP0b3OnWXkTvR2V39tSJYsvjbO-vs

公开信息: WyJoSEtXaHpnQ1k0VUJ0Z1F1V2ZWQjNBIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd

内容: [
  "hHKWhzgCY4UBtgQuWfVB3A",
  "id",
  "http://university.example/credentials/3732"
]

声明: type

SHA-256 哈希: horLRQ5jlzMpY-X7J1p5ZhxQsM6c2hxhescRqtFtPH8

公开信息: WyJUeHZFNURzNU5OT190S0VnMUsyZnlBIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d

内容: [
  "TxvE5Ds5NNO_tKEg1K2fyA",
  "type",
  [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ]
]

声明: id

SHA-256 哈希: Nroz4QPDqS8fduR4l1PhVpKyzhRs7lakueAFC2hMkhs

公开信息: WyJlUkpwYkw3WHZ2SVVwVnVGLWlLUWNnIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd

内容: [
  "eRJpbL7XvvIUpVuF-iKQcg",
  "id",
  "did:example:ebfeb1f712ebc6f1c276e12ec21"
]

声明: type

SHA-256 哈希: cx_BlSjQIZzn3yhTasJDxhKeYkrwKsn_-w5DaJUWMbc

公开信息: WyJwb2o5UDctRG5MYzF3VVBSbHpkXy1nIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0

内容: [
  "poj9P7-DnLc1wUPRlzd_-g",
  "type",
  "ExampleBachelorDegree"
]

还可以通过将对象与issuer属性关联来表达有关签发者的其他信息:

{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": ["VerifiableCredential", "ExampleDegreeCredential"],
  "issuer": {
    "id": "did:example:76e12ec712ebc6f1c221ebfeb1f",
    "name": "Example University"
  },
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": {
    "id": "did:example:76e12ec712ebc6f1c221ebfeb1f",
    "name": "Example University"
  },
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2025-04-27T17:58:33Z",
    "verificationMethod": "did:key:zDnaebSRtPnW6YCpxAhR5JPxJqt9UunCsBPhLEtUokUvp87nQ",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z35CwmxThsUQ4t79JfacmMcw4y1kCqtD4rKqUooKM2NyKwdF5jmXMRo9oGnzHerf8hfQiWkEReycSXC2NtRrdMZN4"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": {
    "id": "did:example:76e12ec712ebc6f1c221ebfeb1f",
    "name": "Example University"
  },
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2025-04-27T17:58:33Z",
    "verificationMethod": "did:key:zDnaerJh8WwyBVVGcZKKkqRKK9iezje8ut6t9bnNChtxcWwNv",
    "cryptosuite": "ecdsa-sd-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0AhVhA48RQ19Db04U8uJwipJ51iqZLecmjhiPb4k2BXLdHox9KdauSf3Mt6Zhit65HQD3NfKoUBNIhx6u6SkQ_LRN_dlgjgCQCXiUMNh-iT7uOyLhwa_0Ol1mfx4Fhph-wJC4AzOYD8ElYIMaU9eu-pg75GhG_-_CuhoikWj9gtS-qUp4qfdnYI6XAhVhAVag3KzxQuRrStNecEjh3TVoc3hj38x-dqllLiAdbQc_9tlnMJaYIm0HzLXuvqwc7DlSTC7w5D0NX6D2M8NaNqVhAr6tGfnfX0hTJ3a-okEoAyiGTla9x_irE24vYRdi6vlLc-xz5LGVFA5Tyht7GiZaT4kqC3od7Nx57CiHakPBw4VhAGzegEDf5moH7kOGp68C6QQR3TmmVMsFSpU41XLR3-BLBLfuS1gWDQlyAJJDRh_leTFoqkDaxdkcli3NpowghY1hA4WGxUt2yMzqAreubYrAzNKMEQcQts-C0O4y3ErKH9R9UZMnBPY2FslOyagtRB5xE5keh3GGCa9TGNCypiNXVXFhAm-bNAdG37FTLQWR1bVnzRMPaTRr5iWWDMtGoFg78B0v43fkN0r4pPVOj9YcCEFxjS_eCbh9HSnDfHsMRIjnG-oFnL2lzc3Vlcg"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": {
    "id": "did:example:76e12ec712ebc6f1c221ebfeb1f",
    "name": "Example University"
  },
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "verificationMethod": "did:key:zUC78GzFRA4TWh2mqRiKro1wwRb5KDaMJ3M1AD3qGtgEbFrwWGvWbnCzArkeTZCyzBz4Panr2hLaZxsXHiBQCwBc3fRPH6xY4u5v8ZAd3dPW1aw89Rra86CVwXr3DczANggYbMD",
    "cryptosuite": "bbs-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0ChVhQswmfQ8aSdnXIildKfGdJUPQ-iT1HwBf8bShxHigrMTIGPA_mbb58NHo_tUU7P6a5AlwACoQDdbgQXIoeIZPmKu7snk3tUbaLIpfacByowWNYQGd_DaMQQsoaryttl5TvxnFT-Vm4SkVx03K9qNJ4jhArQAGpGXTZS6rwOppAPreXlDb3xQb46PJ_xcVri0glVYJYYJVTGbTfcflzyx41E-f9kSqmf10xYzxJrGfC7b7GPY8X7VjMT__ZKSuwdH-5jak-5gkjocsHI6oxIKlLrhW1Wh5yrDCH-QC823TS8NE9VGBzIFAfUt5qazGEcJ8CxeSPxFggxWA747M_eHOtg3OYnWQ7wgc8QZ4KHhjtZYNM8ac6ldiBZy9pc3N1ZXI"
  }
}
Protected Headers
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": {
    "id": "did:example:76e12ec712ebc6f1c221ebfeb1f",
    "name": "Example University"
  },
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc+jwt

.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzLzM3MzIiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiRXhhbXBsZURlZ3JlZUNyZWRlbnRpYWwiXSwiaXNzdWVyIjp7ImlkIjoiZGlkOmV4YW1wbGU6NzZlMTJlYzcxMmViYzZmMWMyMjFlYmZlYjFmIiwibmFtZSI6IkV4YW1wbGUgVW5pdmVyc2l0eSJ9LCJ2YWxpZEZyb20iOiIyMDEwLTAxLTAxVDE5OjIzOjI0WiIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImlkIjoiZGlkOmV4YW1wbGU6ZWJmZWIxZjcxMmViYzZmMWMyNzZlMTJlYzIxIiwiZGVncmVlIjp7InR5cGUiOiJFeGFtcGxlQmFjaGVsb3JEZWdyZWUiLCJuYW1lIjoiQmFjaGVsb3Igb2YgU2NpZW5jZSBhbmQgQXJ0cyJ9fX0 .iiZQBWDlb2o6AxplaJib4C_XeoftdnSFyrT7X1WBfekQDm1_Vu3JUp1fpQWz4RI7HREkI-4mawO6YUkSG9isHQ

application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": {
    "id": "did:example:76e12ec712ebc6f1c221ebfeb1f",
    "name": "Example University"
  },
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc+cose

d28443a10128a05901df7b2240636f6e74657874223a5b2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f7632222c2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f6578616d706c65732f7632225d2c226964223a22687474703a2f2f756e69766572736974792e6578616d706c652f63726564656e7469616c732f33373332222c2274797065223a5b2256657269666961626c6543726564656e7469616c222c224578616d706c6544656772656543726564656e7469616c225d2c22697373756572223a7b226964223a226469643a6578616d706c653a373665313265633731326562633666316332323165626665623166222c226e616d65223a224578616d706c6520556e6976657273697479227d2c2276616c696446726f6d223a22323031302d30312d30315431393a32333a32345a222c2263726564656e7469616c5375626a656374223a7b226964223a226469643a6578616d706c653a656266656231663731326562633666316332373665313265633231222c22646567726565223a7b2274797065223a224578616d706c6542616368656c6f72446567726565222c226e616d65223a2242616368656c6f72206f6620536369656e636520616e642041727473227d7d7d584080831b3012ddc56c1a9d0d8366bb309b8551e8996fdb77ffc08387ef3feba387d0472fdf2805a00aca9ab9dd28958fde6893a024874ff9151f8dacca5595bbed

.eyJpYXQiOjE3NDU3NzY3MTQsImV4cCI6MTc0Njk4NjMxNCwiX3NkX2FsZyI6InNoYS0yNTYiLCJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjp7Im5hbWUiOiJFeGFtcGxlIFVuaXZlcnNpdHkiLCJfc2QiOlsiYTQ0Y2M5VHU1eGd1N3hCTHlMaTdwVUoxTHFpdHlPVDZqMWxMNF9xZW04SSJdfSwidmFsaWRGcm9tIjoiMjAxMC0wMS0wMVQxOToyMzoyNFoiLCJjcmVkZW50aWFsU3ViamVjdCI6eyJkZWdyZWUiOnsibmFtZSI6IkJhY2hlbG9yIG9mIFNjaWVuY2UgYW5kIEFydHMiLCJfc2QiOlsiRHViUDR4bXg4dk5FNFBuYUUzYjlzRGpKWUhIaHpETVFxUVdnUlg2d2ZzWSJdfSwiX3NkIjpbIkJaa0tyVXpjbFhWcHZEUzRFWUh1YkZZa0w3am9lTXlJUFluVlhoS3dBaDQiXX0sIl9zZCI6WyJDT3F6UUNsT2ZTNzc2dXBmaENuVmRyYjdsWWhHY0lBZlRCWDVWeTB3V1E4IiwiS0t0QnoydUxOZzVrd1ZyNHkzWGhHWkhXRXI3aTc3WGFHOVhHbldPV0ZCbyJdfQ .-JMxTewqTy__6Dh_WAXAS6_TqnXHV66JpBSzVZ61NCP6DdYAAIwgGCo5gbF6HyAerxUjSmCfe9vmUTIgtZ_U3g ~WyJvX1lOb0F1S0pqNTNFWlg0S1ZzVmV3IiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd~WyJBVUVzVi1LTnh4eU1WWnBuZWxXT0p3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d~WyIwMkdFZW1rVjhzR3hzOWY4b21PbUxBIiwgImlkIiwgImRpZDpleGFtcGxlOjc2ZTEyZWM3MTJlYmM2ZjFjMjIxZWJmZWIxZiJd~WyJPNnpIek5ERjF2ZVFleVpEb1JBR1VRIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd~WyIzdm1kU29mcW5MVkprRVozVUZnLWNnIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0~

声明: id

SHA-256 哈希: KKtBz2uLNg5kwVr4y3XhGZHWEr7i77XaG9XGnWOWFBo

公开信息: WyJvX1lOb0F1S0pqNTNFWlg0S1ZzVmV3IiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd

内容: [
  "o_YNoAuKJj53EZX4KVsVew",
  "id",
  "http://university.example/credentials/3732"
]

声明: type

SHA-256 哈希: COqzQClOfS776upfhCnVdrb7lYhGcIAfTBX5Vy0wWQ8

公开信息: WyJBVUVzVi1LTnh4eU1WWnBuZWxXT0p3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d

内容: [
  "AUEsV-KNxxyMVZpnelWOJw",
  "type",
  [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ]
]

声明: id

SHA-256 哈希: a44cc9Tu5xgu7xBLyLi7pUJ1LqityOT6j1lL4_qem8I

公开信息: WyIwMkdFZW1rVjhzR3hzOWY4b21PbUxBIiwgImlkIiwgImRpZDpleGFtcGxlOjc2ZTEyZWM3MTJlYmM2ZjFjMjIxZWJmZWIxZiJd

内容: [
  "02GEemkV8sGxs9f8omOmLA",
  "id",
  "did:example:76e12ec712ebc6f1c221ebfeb1f"
]

声明: id

SHA-256 哈希: BZkKrUzclXVpvDS4EYHubFYkL7joeMyIPYnVXhKwAh4

公开信息: WyJPNnpIek5ERjF2ZVFleVpEb1JBR1VRIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd

内容: [
  "O6zHzNDF1veQeyZDoRAGUQ",
  "id",
  "did:example:ebfeb1f712ebc6f1c276e12ec21"
]

声明: type

SHA-256 哈希: DubP4xmx8vNE4PnaE3b9sDjJYHHhzDMQqQWgRX6wfsY

公开信息: WyIzdm1kU29mcW5MVkprRVozVUZnLWNnIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0

内容: [
  "3vmdSofqnLVJkEZ3UFg-cg",
  "type",
  "ExampleBachelorDegree"
]

注意: 签发者的标识符可以是任何统一资源标识符

issuer属性的值值也可以是一个JWK(例如"https://jwk.example/keys/foo.jwk")或者一个DID(例如"did:example:abfe13f712120431c276e12ecab").

可验证凭证包含关于一个或多个主体声明。本规范定义了credentialSubject属性,用于表达关于一个或多个主体声明

可验证凭证必须包含credentialSubject属性.

credentialSubject
credentialSubject属性的值是一组对象,其中每个对象必须是一个或多个声明主体, 这些声明必须credentialSubject属性内序列化。每个对象还可以包含一个id属性来标识主体, 如4.4节标识符中所述。
示例 9: credentialSubject属性的使用
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": ["VerifiableCredential", "ExampleDegreeCredential"],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2025-04-27T17:58:34Z",
    "verificationMethod": "did:key:zDnaebSRtPnW6YCpxAhR5JPxJqt9UunCsBPhLEtUokUvp87nQ",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z36CTYymphefPFDdFakYBe7EHHX7Upev5vtRhxG3ZtKiUPXFKknW9ZTds3wxDhTz1WFCGzFUUv6DC5vifg3VCCSFL"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2025-04-27T17:58:34Z",
    "verificationMethod": "did:key:zDnaerJh8WwyBVVGcZKKkqRKK9iezje8ut6t9bnNChtxcWwNv",
    "cryptosuite": "ecdsa-sd-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0AhVhAFPsovbuHDInv8ft0M6jMPGrLrNs9j_sEfn1gdDCxFOmyjYDyblufuagmARZj9RabxfO0SkbpUi_m6dQdXIyoklgjgCQC78Ayc-2ykLAZ_NJzb5-S8dtSenHeKEHHGy469czIbhtYILJ97_OhxkzZccWMaUgCAXRO5ZCyoagriazYdV2ViFsuhVhAvGcG2tqQoB5VaC-x652sos00_94wzBOZg9wGR2mytwn_alXEbksbCMUC2lmiU_FrcFzEEAZrAdcsAfoE0J_KRlhAc71QXbdP2iKlqmgocH4qvDcv_3PT_VmSFGWISFdrQPkmv2lb2r9Mb02yZYilf20oMzCPCRsqYP--0g8ysm9doVhAIqwWkfg1pXXKaxx4_5_QpmoOoXjLPNhJ-14QSHUyxTKKCTarm33OdaIhhCjm5_e7MUCYHvA89vCSvSHMrKvKclhASFp1GivaJXYrbBcM6xNFNsXW7xBg7cZXfBeGOwcXf7fXg1GwMJILZBimOaEM5Eay38F8T6HwbeuMvBQ7b05gbFhAkLeI8-tdeQQzX6ik0xDSM4yLsHPmhG47Tu5Hm25ujoo9iVsLzskiGcIsQLsqvRK5238FvPQAeOpK04R7F2aK9IFnL2lzc3Vlcg"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "verificationMethod": "did:key:zUC78GzFRA4TWh2mqRiKro1wwRb5KDaMJ3M1AD3qGtgEbFrwWGvWbnCzArkeTZCyzBz4Panr2hLaZxsXHiBQCwBc3fRPH6xY4u5v8ZAd3dPW1aw89Rra86CVwXr3DczANggYbMD",
    "cryptosuite": "bbs-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0ChVhQkkdBby2GbmvVh66cM6TNzNfh0hR9ePeG7dWYbHfDxK6CcA_rVoxxsRGIoWX5Gs6ZGgQNPTBeehiEHT_cj-5fjZ6ArTluARHPbaXQzWyXKrVYQGd_DaMQQsoaryttl5TvxnFT-Vm4SkVx03K9qNJ4jhArS1r7HKFDPyyrvPGqNF8bjgNELvoomOjpbD9JEvaGI1pYYJVTGbTfcflzyx41E-f9kSqmf10xYzxJrGfC7b7GPY8X7VjMT__ZKSuwdH-5jak-5gkjocsHI6oxIKlLrhW1Wh5yrDCH-QC823TS8NE9VGBzIFAfUt5qazGEcJ8CxeSPxFggUfIz7Xi8QhNU6pC7qIkL0HkvpKYuV2rzBuKizKrBhU6BZy9pc3N1ZXI"
  }
}
Protected Headers
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc+jwt

.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzLzM3MzIiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiRXhhbXBsZURlZ3JlZUNyZWRlbnRpYWwiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy81NjUwNDkiLCJ2YWxpZEZyb20iOiIyMDEwLTAxLTAxVDAwOjAwOjAwWiIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImlkIjoiZGlkOmV4YW1wbGU6ZWJmZWIxZjcxMmViYzZmMWMyNzZlMTJlYzIxIiwiZGVncmVlIjp7InR5cGUiOiJFeGFtcGxlQmFjaGVsb3JEZWdyZWUiLCJuYW1lIjoiQmFjaGVsb3Igb2YgU2NpZW5jZSBhbmQgQXJ0cyJ9fX0 .KJnv5DRpXi0xZ6SUSXsu30Xs5OBk8HlunnpkAitIS677TBPhwX1cgbUj9nTuLfNeLlRZnsCyua_yZZ5SooTKSw

application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc+cose

d28443a10128a05901be7b2240636f6e74657874223a5b2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f7632222c2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f6578616d706c65732f7632225d2c226964223a22687474703a2f2f756e69766572736974792e6578616d706c652f63726564656e7469616c732f33373332222c2274797065223a5b2256657269666961626c6543726564656e7469616c222c224578616d706c6544656772656543726564656e7469616c225d2c22697373756572223a2268747470733a2f2f756e69766572736974792e6578616d706c652f697373756572732f353635303439222c2276616c696446726f6d223a22323031302d30312d30315430303a30303a30305a222c2263726564656e7469616c5375626a656374223a7b226964223a226469643a6578616d706c653a656266656231663731326562633666316332373665313265633231222c22646567726565223a7b2274797065223a224578616d706c6542616368656c6f72446567726565222c226e616d65223a2242616368656c6f72206f6620536369656e636520616e642041727473227d7d7d5840b1ddb83d2cc91513a6a44ae62b8c622918c9b78d1c6492afcec241b39a23cbd6f1c6efbdeeaa94e0c765b7c8b9284e2c930ae859aa0a2defc8b4d9fba132d23d

.eyJpYXQiOjE3NDU3NzY3MTQsImV4cCI6MTc0Njk4NjMxNCwiX3NkX2FsZyI6InNoYS0yNTYiLCJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy81NjUwNDkiLCJ2YWxpZEZyb20iOiIyMDEwLTAxLTAxVDAwOjAwOjAwWiIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImRlZ3JlZSI6eyJuYW1lIjoiQmFjaGVsb3Igb2YgU2NpZW5jZSBhbmQgQXJ0cyIsIl9zZCI6WyJlU3NEMXVhcVNuZUdIVEVjTWxlM1ZzWlJwOHRNbmo1Q0dyN1EzandzdkZrIl19LCJfc2QiOlsiYU5MMTNnNnUtenN2VG1YVkFfOVRYdXlrSVdpRzd0djVvbExzdHNieDlkayJdfSwiX3NkIjpbIkRsMHp6eHZJcXA1TVdBNWEzSTJQRDFNQXJ3NlZBNFFMeWRscVNsSkVCeVkiLCJqVmtSaTdLMGUySTFkbFJURXREdlFVTEIxcWZaZ3NNcGlCdjVQYWsyMXlzIl19 .Yh2d9J3y-SKxa16vZzRVQKaya0V66OPIar-C9PGVzOu2Q7_0IbsYqTJxtNYsQ39fk64p1-QEgCmWPWHFRAD_qw ~WyIxTGVERC1tNlRQdlFXX1R4MU9MQVVnIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd~WyJiU1ljSjZNVXdGZlhleWRGSl84dHlnIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d~WyJpUGx3eUs1c01BY1BzbzZQbW1DNWl3IiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd~WyJFaEt5VDV6ZjJuSGZUNHFnaWZtczVBIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0~

声明: id

SHA-256 哈希: Dl0zzxvIqp5MWA5a3I2PD1MArw6VA4QLydlqSlJEByY

公开信息: WyIxTGVERC1tNlRQdlFXX1R4MU9MQVVnIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd

内容: [
  "1LeDD-m6TPvQW_Tx1OLAUg",
  "id",
  "http://university.example/credentials/3732"
]

声明: type

SHA-256 哈希: jVkRi7K0e2I1dlRTEtDvQULB1qfZgsMpiBv5Pak21ys

公开信息: WyJiU1ljSjZNVXdGZlhleWRGSl84dHlnIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d

内容: [
  "bSYcJ6MUwFfXeydFJ_8tyg",
  "type",
  [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ]
]

声明: id

SHA-256 哈希: aNL13g6u-zsvTmXVA_9TXuykIWiG7tv5olLstsbx9dk

公开信息: WyJpUGx3eUs1c01BY1BzbzZQbW1DNWl3IiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd

内容: [
  "iPlwyK5sMAcPso6PmmC5iw",
  "id",
  "did:example:ebfeb1f712ebc6f1c276e12ec21"
]

声明: type

SHA-256 哈希: eSsD1uaqSneGHTEcMle3VsZRp8tMnj5CGr7Q3jwsvFk

公开信息: WyJFaEt5VDV6ZjJuSGZUNHFnaWZtczVBIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0

内容: [
  "EhKyT5zf2nHfT4qgifms5A",
  "type",
  "ExampleBachelorDegree"
]

可验证凭证中可能表达与多个主体相关的信息。下面的示例指定了两个配对的主体。请注意使用数组表示法将多个主体credentialSubject属性关联起来。

{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": ["VerifiableCredential", "RelationshipCredential"],
  "issuer": "https://issuer.example/issuer/123",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": [{
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "name": "Jayden Doe",
    "spouse": "did:example:c276e12ec21ebfeb1f712ebc6f1"
  }, {
    "id": "https://subject.example/subject/8675",
    "name": "Morgan Doe",
    "spouse": "https://subject.example/subject/7421"
  }]
}

本规范定义了validFrom属性来帮助签发者表达凭证生效的日期和时间,并定义了validUntil属性来帮助签发者表达凭证不再有效的日期和时间。

当比较日期和时间时,计算是“暂时”进行的,这意味着字符串值被转换为“时间值”,该值作为时间线上的某个点存在。然后通过检查被比较的日期和时间相对于时间线上特定点的位置来执行时间比较。

validFrom
如果存在,validFrom属性的值必须为一个[XMLSCHEMA11-2]dateTimeStamp字符串值,表示凭证生效的日期和时间,可以是将来或过去的日期和时间。请注意,此值表示与credentialSubject属性相关联的信息有效的最早时间点。如果还存在validUntil值,validFrom必须表示与validUntil值表示的时间点在时间上暂时相同或者比截止有效值表示的时间点更早。
validUntil
如果存在,validUntil属性的值必须为一个[XMLSCHEMA11-2]dateTimeStamp字符串值,表示凭证失效的日期和时间,可以是过去或未来的日期和时间。请注意,此值表示与credentialSubject属性相关联的信息有效的最新时间点。如果还存在validFrom值,validUntil必须表示与validFrom值表示的时间点在时间上暂时相同或者比起始有效值表示的时间点更晚。
示例 11: validFrom 和 validUntil 的使用
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": ["VerifiableCredential", "ExampleDegreeCredential"],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "validUntil": "2020-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "validUntil": "2020-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2025-04-27T17:58:34Z",
    "verificationMethod": "did:key:zDnaebSRtPnW6YCpxAhR5JPxJqt9UunCsBPhLEtUokUvp87nQ",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z65sN9W58eruTDUUXYxxwhG4cQ73zQkQuhMYvUVipeM4oEUBPbCxd3oTQTJhnfHN9juyZSzYpERYFjZcfpb2xgeto"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "validUntil": "2020-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2025-04-27T17:58:34Z",
    "verificationMethod": "did:key:zDnaerJh8WwyBVVGcZKKkqRKK9iezje8ut6t9bnNChtxcWwNv",
    "cryptosuite": "ecdsa-sd-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0AhVhAxWvPP0HD9usaRDFthqpz1zXbWtTpNr_1pRFMKY9wbt7RAh0kwkoqR9cFHY0PdBj0cPo9BXd_54Z9iLl7GsmAjlgjgCQCJ0FUx3YRbBxybCrTEtFINFNKD7UC2j8tjmvYa6EQKlNYIL-KVtIrAWQi98Ng86FB4giy2xKCqn_kNOmO75D7AQfEhlhA5pKNMOahYQbk8obEMFyLgAsmd3FGqf3FoDTojybRWUPf7F3A22Kl1822zW093-XtKum7Nfe3q16norHXUnhkWVhAvNR9By8I5ISJtylSp1fkzurbIvSXVhkaj4wsUpbTy1GnYHzeS7qhAyUoO4GkIMUfP3yLS0BIGBbJR7de1s5G4lhATnwFdztYAEXk6z93jJot3TPhlnOYk10G0e7u3uyJJF-ZrAsctOYbjF3ZcNZu3UXJZRe4_ytxr5OqwIVLnUfDqFhAkff2_b4hqpz0uK0kDHjkpMun4mAhuxVCjcmyIlJnaaTdFc2RovLnKiPx4Xnd9P_lOd3ZQoz5ThPWzMS7r_43M1hAmVVtNJ7-lpJdlc9tg5e3GpAhnXzYHpiv3WRRT3F4tH8B_zkHnyeNBT61d16TTnvlFn5mFXJ99FD4abIcQkyP_lhA8IS9pAGKqVgTDzxXSvGcGWMXQ4LEy3jfywyDpdiZodvttNhuZVBMkGKhNBo94oGjIHRfoeAFvQfZQo8_ENtBEYFnL2lzc3Vlcg"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "validUntil": "2020-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "verificationMethod": "did:key:zUC78GzFRA4TWh2mqRiKro1wwRb5KDaMJ3M1AD3qGtgEbFrwWGvWbnCzArkeTZCyzBz4Panr2hLaZxsXHiBQCwBc3fRPH6xY4u5v8ZAd3dPW1aw89Rra86CVwXr3DczANggYbMD",
    "cryptosuite": "bbs-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0ChVhQjBPG4AXIRGKu6h5awRiAZHSrx5gfUdbWc2rAxdsfIzSIywzsphRnlb5rPDWwdJlBF5krx4JRYNtT7exHHAw_aZtO6AARXGfbz0eHNrcTKL5YQGd_DaMQQsoaryttl5TvxnFT-Vm4SkVx03K9qNJ4jhArKnv3N5iX7nvZR0OCXS-uXH4QQ9mW65QM5qlHOfE4GQVYYJVTGbTfcflzyx41E-f9kSqmf10xYzxJrGfC7b7GPY8X7VjMT__ZKSuwdH-5jak-5gkjocsHI6oxIKlLrhW1Wh5yrDCH-QC823TS8NE9VGBzIFAfUt5qazGEcJ8CxeSPxFggWjulaLj5whA4VZOvBqHQbwhSW7Ph0eZ2bxz7ota_qnCBZy9pc3N1ZXI"
  }
}
Protected Headers
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "validUntil": "2020-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc+jwt

.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzLzM3MzIiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiRXhhbXBsZURlZ3JlZUNyZWRlbnRpYWwiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy8xNCIsInZhbGlkRnJvbSI6IjIwMTAtMDEtMDFUMTk6MjM6MjRaIiwidmFsaWRVbnRpbCI6IjIwMjAtMDEtMDFUMTk6MjM6MjRaIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiaWQiOiJkaWQ6ZXhhbXBsZTplYmZlYjFmNzEyZWJjNmYxYzI3NmUxMmVjMjEiLCJkZWdyZWUiOnsidHlwZSI6IkV4YW1wbGVCYWNoZWxvckRlZ3JlZSIsIm5hbWUiOiJCYWNoZWxvciBvZiBTY2llbmNlIGFuZCBBcnRzIn19fQ .UGJHic3E0XIwnJnzsQPF49ZMJsJtVhQSYTk7m8uvpbQWQPIttHiQo8k2qVhNZiRtMDLuIYAdTjim8rhGZbCJ2A

application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "validUntil": "2020-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc+cose

d28443a10128a05901de7b2240636f6e74657874223a5b2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f7632222c2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f6578616d706c65732f7632225d2c226964223a22687474703a2f2f756e69766572736974792e6578616d706c652f63726564656e7469616c732f33373332222c2274797065223a5b2256657269666961626c6543726564656e7469616c222c224578616d706c6544656772656543726564656e7469616c225d2c22697373756572223a2268747470733a2f2f756e69766572736974792e6578616d706c652f697373756572732f3134222c2276616c696446726f6d223a22323031302d30312d30315431393a32333a32345a222c2276616c6964556e74696c223a22323032302d30312d30315431393a32333a32345a222c2263726564656e7469616c5375626a656374223a7b226964223a226469643a6578616d706c653a656266656231663731326562633666316332373665313265633231222c22646567726565223a7b2274797065223a224578616d706c6542616368656c6f72446567726565222c226e616d65223a2242616368656c6f72206f6620536369656e636520616e642041727473227d7d7d584076a5f6a774019f85df7b204233f02dcd34fcaa896191e0c41cc6e78f2c4c7d9456daf472970ee8bd3993474bc31f975df3278e844ed6707486b77e928fbd7231

.eyJpYXQiOjE3NDU3NzY3MTQsImV4cCI6MTc0Njk4NjMxNCwiX3NkX2FsZyI6InNoYS0yNTYiLCJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy8xNCIsInZhbGlkRnJvbSI6IjIwMTAtMDEtMDFUMTk6MjM6MjRaIiwidmFsaWRVbnRpbCI6IjIwMjAtMDEtMDFUMTk6MjM6MjRaIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiZGVncmVlIjp7Im5hbWUiOiJCYWNoZWxvciBvZiBTY2llbmNlIGFuZCBBcnRzIiwiX3NkIjpbInRreDZVVzN3VF9OcVRpeHZWR2tzd2RaRi1rQkE0TmhBV1pHSmxhUURpREkiXX0sIl9zZCI6WyJmTmpEU0RIbDNIQkNTQ1hSRzh0OWJud1RIMUpTT0JQOE0wWmFaQlpQTmNJIl19LCJfc2QiOlsiUHhTdmNMelpvam1Lck5qMWVKWDNxVjZKcVoxdFBVV1dYMFo5Q2dLRTlEVSIsInRTSThIellYN2RYdHhpMVc3UHUxckg4S3ZFNUxBRkNEVVNxcHpsbmdzRDgiXX0 .4gc3oF3a-OHOSwVC1eiCZP-ureWU-bdPdjBlL-xBjUsE5qL2sBQbg5PP_CO6JgZiBONpr3iU6cL0MF9iPpu9Eg ~WyJ3SzVZQTBEZzRoc18wdmtFZk1ENG93IiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd~WyJ1T0podHZvMEJ0cm1YbWxIeUVKUTdRIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d~WyJjTzBQZjZxM1MweHp2dmRwS25aWlpnIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd~WyI0N0FDOWhlLTRCNW4xV1N0dFJRYXRBIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0~

声明: id

SHA-256 哈希: PxSvcLzZojmKrNj1eJX3qV6JqZ1tPUWWX0Z9CgKE9DU

公开信息: WyJ3SzVZQTBEZzRoc18wdmtFZk1ENG93IiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd

内容: [
  "wK5YA0Dg4hs_0vkEfMD4ow",
  "id",
  "http://university.example/credentials/3732"
]

声明: type

SHA-256 哈希: tSI8HzYX7dXtxi1W7Pu1rH8KvE5LAFCDUSqpzlngsD8

公开信息: WyJ1T0podHZvMEJ0cm1YbWxIeUVKUTdRIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d

内容: [
  "uOJhtvo0BtrmXmlHyEJQ7Q",
  "type",
  [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ]
]

声明: id

SHA-256 哈希: fNjDSDHl3HBCSCXRG8t9bnwTH1JSOBP8M0ZaZBZPNcI

公开信息: WyJjTzBQZjZxM1MweHp2dmRwS25aWlpnIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd

内容: [
  "cO0Pf6q3S0xzvvdpKnZZZg",
  "id",
  "did:example:ebfeb1f712ebc6f1c276e12ec21"
]

声明: type

SHA-256 哈希: tkx6UW3wT_NqTixvVGkswdZF-kBA4NhAWZGJlaQDiDI

公开信息: WyI0N0FDOWhlLTRCNW4xV1N0dFJRYXRBIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0

内容: [
  "47AC9he-4B5n1WSttRQatA",
  "type",
  "ExampleBachelorDegree"
]

注意: 可验证凭证的有效起始期限

如果validFromvalidUntil不存在,则可可验证凭证有效期被视为无限期有效。在这种情况下,可验证凭证被视为自创建verifiable credential时起有效

此规范定义了credentialStatus属性,用于发现与可验证凭证的状态相关的信息,例如是否被暂停或撤销。

如果存在,则与credentialStatus属性关联的值是单个对象或一组中的一个或多个对象。每个对象都定义了以下属性

id
id属性可选的的。它可以用于为凭证状态对象提供唯一标识符。如果存在,则必须遵循4.4节“标识符”中的规范指导。
type
type属性必需的。它用于表达对象所表达的状态信息的类型。必须遵循 4.5节类型中的相关规范指导。

凭证状态信息的确切内容由特定的credentialStatus类型定义决定,并根据是否易于实现或是否增强隐私等因素而有所不同。该值将提供足够的信息来确定凭证的当前状态以及是否可以从URL中检索机器可读的信息。例如,该对象可以包含一个指向外部文档的链接,该文档注明凭证是否被暂停或撤销。

{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": ["VerifiableCredential", "ExampleDegreeCredential"],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "credentialStatus": {
    "id": "https://university.example/credentials/status/3#94567",
    "type": "BitstringStatusListEntry",
    "statusPurpose": "revocation",
    "statusListIndex": "94567",
    "statusListCredential": "https://university.example/credentials/status/3"
  }
}

一个凭证可以具有多个关联状态,例如是否已被撤销或暂停。

{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://license.example/credentials/9837",
  "type": ["VerifiableCredential", "ExampleDrivingLicenseCredential"],
  "issuer": "https://license.example/issuers/48",
  "validFrom": "2020-03-14T12:10:42Z",
  "credentialSubject": {
    "id": "did:example:f1c276e12ec21ebfeb1f712ebc6",
    "license": {
      "type": "ExampleDrivingLicense",
      "name": "License to Drive a Car"
    }
  },
  "credentialStatus": [{
    "id": "https://license.example/credentials/status/84#14278",
    "type": "BitstringStatusListEntry",
    "statusPurpose": "revocation",
    "statusListIndex": "14278",
    "statusListCredential": "https://license.example/credentials/status/84"
  }, {
    "id": "https://license.example/credentials/status/84#82938",
    "type": "BitstringStatusListEntry",
    "statusPurpose": "suspension",
    "statusListIndex": "82938",
    "statusListCredential": "https://license.example/credentials/status/84"
  }]
}

实施者需要注意的是,具有多个状态条目的凭证可能包含相互矛盾的信息。协调此类矛盾是验证过程的一部分,因此也是验证器业务逻辑的一部分,因此超出了本规范的范围。

定义状态方案的数据模型、格式和协议不在本规范的范围内。可验证凭证扩展文档包含可供想要实施可验证凭证状态检查的实施者使用的状态方案。

凭证状态规范不得允许跟踪个体,例如当验证者对特定持有者主体感兴趣时通知签发者(直接或间接)。不可接受的方法包括“回连”,即每次使用凭证时都会联系凭证签发者以检查特定个人的状态,或者“假名化降低”,即每次使用凭证都会导致一个签发者的请求信息,签发者可以使用这些信息推断验证者对特定个体的兴趣。

在对给定数据集合强制执行特定结构时,数据模式非常有用。本规范至少考虑了两种类型的数据模式:

重要的是要理解数据模式与@context属性有不同的用途,后者既不强制数据结构或数据语法,也不允许定义任意编码来替代表示格式。

此规范定义了以下属性,用于表示数据模式,签发者可以将其包含在其颁发的可验证凭证中:

credentialSchema

credentialSchema属性的值必须是一个或多个为验证者提供足够信息的数据模式,以确定所提供的数据是否符合所提供的模式。每个credentialSchema必须指定其type(例如,JsonSchema)和id属性,该属性必须是标识模式文件的URL。特定的类型定义确定每个数据模式的精确内容。

如果存在多个模式,则根据每个关联的type属性概述的处理规则确定有效性。

注意: 可以针对特定凭证类型进行语法检查

credentialSchema属性允许一个注释类型定义或将其锁定到词汇表的特定版本。可验证凭证的作者可以使用由某些内容完整性保护机制保护的credentialSchema来包含其词汇表的静态版本。credentialSchema属性还可以对凭证执行语法检查,并使用诸如JSONSchema[VC-JSON-SCHEMA]验证之类的验证机制。

示例 14: 使用credentialSchema属性执行JSONschema验证
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": ["VerifiableCredential", "ExampleDegreeCredential", "ExamplePersonCredential"],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    },
    "alumniOf": {
      "name": "Example University"
    }
  },
  "credentialSchema": [{
    "id": "https://example.org/examples/degree.json",
    "type": "JsonSchema"
  },
  {
    "id": "https://example.org/examples/alumni.json",
    "type": "JsonSchema"
  }]
}

在上面的示例中,签发者指定了两个credentialSchema对象,每个对象都指向一个JSON Schema[VC-JSON-SCHEMA]文件,验证者可以使用该文件来确定可验证凭证是否格式良好。

本规范识别了两类securing mechanisms:一类使用封装式证明,另一类使用嵌入式证明。

enveloping proof封装了该数据模型的序列化。使用 JOSE 和 COSE 保护可验证凭证[VC-JOSE-COSE]中定义了一个推荐的封装证明机制。

embedded proof是一种机制,其中证明包含在数据模型的序列化中。可验证凭证数据完整性1.0[VC-DATA-INTEGRITY]中定义了一种推荐的嵌入式证明机制

这两类保护机制并不相互排斥。附加的保护机制规范也可以根据5.13节保护机制规范中的规则来定义。

示例 15: 使用 embedded proof 的可验证凭证
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://example.gov/credentials/3732",
  "type": ["VerifiableCredential", "ExampleDegreeCredential"],
  "issuer": "did:example:6fb1f712ebe12c27cc26eebfe11",
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "https://subject.example/subject/3921",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "cryptosuite": "eddsa-rdfc-2022",
    "created": "2021-11-13T18:19:39Z",
    "verificationMethod": "https://university.example/issuers/14#key-1",
    "proofPurpose": "assertionMethod",
    "proofValue": "z58DAdFfa9SkqZMVPxAQp...jQCrfFPP2oumHKtz"
  }
}

上述的侵入式证明通过使用proof属性对原始数据进行数字签名,从而保护原始凭证。这使生成的可验证凭证在现代编程环境和数据库系统中易于管理。

示例 16: 使用SD-JWT格式的封装式证明的可验证凭证
eyJhbGciOiJFUzM4NCIsImtpZCI6IkdOV2FBTDJQVlVVMkpJVDg5bTZxMGM3U3ZjNDBTLWJ2UjFTT0
Q3REZCb1UiLCJ0eXAiOiJ2YytsZCtqc29uK3NkLWp3dCIsImN0eSI6InZjK2xkK2pzb24ifQ
.
eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwcz
ovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjoiaHR0cHM6
Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy81NjUwNDkiLCJ2YWxpZEZyb20iOiIyMDEwLTAxLT
AxVDE5OjIzOjI0WiIsImNyZWRlbnRpYWxTY2hlbWEiOnsiX3NkIjpbIlNFOHp4bmduZTNNbWEwLUNm
S2dlYW1rNUVqU1NfOXRaNlN5NDdBdTdxRWMiLCJjT3lySEVrSlZwdEtSdURtNkNZVTREajJvRkExd0
JQRjFHcTJnWEo1NXpzIl19LCJjcmVkZW50aWFsU3ViamVjdCI6eyJkZWdyZWUiOnsibmFtZSI6IkJh
Y2hlbG9yIG9mIFNjaWVuY2UgYW5kIEFydHMiLCJfc2QiOlsibVNfSVBMa0JHcTIxbVA3Z0VRaHhOck
E0ZXNMc1ZKQ1E5QUpZNDFLLVRQSSJdfSwiX3NkIjpbIlhTSG9iU05Md01PVl9QNkhQMHNvMnZ1clNy
VXZ3UURYREJHQWtyTXk3TjgiXX0sIl9zZCI6WyJQNE5qWHFXa2JOc1NfRzdvdmlLdm1NOG0yckhDTm
5XVVV2SXZBbW9jb2RZIiwieFNvSHBKUXlCNGV1dmg4SkFJdDFCd1pjNFVEOHY5S3ZOTmVLMk9OSjFC
QSJdLCJfc2RfYWxnIjoic2hhLTI1NiIsImlzcyI6Imh0dHBzOi8vdW5pdmVyc2l0eS5leGFtcGxlL2
lzc3VlcnMvNTY1MDQ5IiwiaWF0IjoxNzAzNjI1OTAxLCJleHAiOjE3MzUyNDgzMDEsImNuZiI6eyJq
d2siOnsia3R5IjoiRUMiLCJjcnYiOiJQLTM4NCIsImFsZyI6IkVTMzg0IiwieCI6Inl1Zlo1SFUzcU
NfOTRMbkI3Zklzd0hmT0swQlJra0Z5bzVhd1QyX21ld0tJWUpLMVNfR0QySVB3UjRYUTZpdFEiLCJ5
IjoiRmEtV2pOd2NLQ1RWWHVDU2tCY3RkdHJOYzh6bXdBTTZWOWxudmxxd1QyQnRlQ0ZHNmR6ZDJoMF
VjeXluTDg0dCJ9fX0
.
M7BFJB9LEV_xEylSJpP00fd_4WjrOlXshh0dUv3QgOzw2MEGIfSfi9PoCkHJH7TI0InsqkD6XZVz38
MpeDKekgBW-RoDdJmxnifYOEJhKpJ5EN9PvA007UPi9QCaiEzX
~
WyJFX3F2V09NWVQ1Z3JNTkprOHNXN3BBIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbG
UvY3JlZGVudGlhbHMvMTg3MiJd
~
WyJTSEc4WnpfRDVRbFMwU0ZrZFUzNXlRIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIi
wgIkV4YW1wbGVBbHVtbmlDcmVkZW50aWFsIl1d
~
WyJqZzJLRno5bTFVaGFiUGtIaHV4cXRRIiwgImlkIiwgImh0dHBzOi8vZXhhbXBsZS5vcmcvZXhhbX
BsZXMvZGVncmVlLmpzb24iXQ
~
WyItQmhzaE10UnlNNUVFbGt4WGVXVm5nIiwgInR5cGUiLCAiSnNvblNjaGVtYSJd~WyJ0SEFxMEUwN
nY2ckRuUlNtSjlSUWRBIiwgImlkIiwgImRpZDpleGFtcGxlOjEyMyJd
~
WyJ1Ynd6bi1kS19tMzRSMGI0SG84QTBBIiwgInR5cGUiLCAiQmFjaGVsb3JEZWdyZWUiXQ

上述的封装式证明通过将原始数据封装在数字签名信封中来保护原始凭证,从而生成一个可验证凭证,该凭证可以通过理解SD-JWT格式的工具进行处理。

可验证表述可以用于聚合来自多个可验证凭证的信息。

可验证表述应该是非常短期的,并且与验证者提供的挑战相绑定。完成此操作的细节取决于安全机制、传输协议和验证者策略。除非特定的安全机制或嵌入协议定义了额外的要求,否则验证者通常不能假设可验证表述与所提供的可验证凭证相关。

可验证表述默认图也称为verifiable presentation graph。

以下属性是为可验证表述定义的:

id
id属性是可选的。它可以用于为可验证表述提供唯一标识符。如果存在,必须遵循4.4节标识符中的规范指导。
type
type属性必须存在。它用于表示可验证表述的类型。此属性的一个值必须VerifiablePresentation,但也可以包括其他类型。必须遵循4.5节类型中的相关规范
verifiableCredential
verifiableCredential属性可以存在。其值必须是一个或多个可验证凭证和/或封装可验证凭证对象(这些值不得为非对象值,例如数字、字符串或URL)。这些对象被称为可验证凭证图,并且必须包含通过保护机制保护的信息。详见5.12 节可验证凭证图
holder
可验证表述可以包含一个holder属性。如果存在,该属性的值必须是一个URL或一个包含id属性的对象。建议holder或其id中的URL在解引用后能够指向一个包含持有者的机器可读信息的文档,以用于验证可验证表述中表达的信息。如果没有holder属性,则关于持有者的信息要么通过保护机制获取,要么与验证可验证表述无关。

下面的示例表述了一个可验证表述的例子:

示例 17: Presentation 的基本结构
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "urn:uuid:3978344f-8596-4c3a-a978-8fcaba3903c5",
  "type": ["VerifiablePresentation", "ExamplePresentation"],
  "verifiableCredential": [{  }]
}

上述可验证凭证 属性的内容是本规范中描述的可验证凭证图

一个可验证表述可以包含一个或多个已通过封装载荷的安全机制保护的可验证凭证,例如使用JOSE和COSE保护可验证凭证 [VC-JOSE-COSE]。可以通过将verifiableCredential属性与typeEnvelopedVerifiableCredential的对象关联来实现这一点。

EnvelopedVerifiableCredential
它们用于将包含封装式可验证凭证的对象与可验证表述中的verifiableCredential属性关联起来。对象的@context属性必须存在并包含上下文,例如本规范的基本上下文,该上下文至少定义了由本规范提供的基本上下文定义的idtypeEnvelopedVerifiableCredential术语。对象的id必须data:URL[RFC2397],表示使用封装安全方案的安全可验证凭证,例如使用JOSE和COSE保护可验证凭证 [VC-JOSE-COSE]。对象的type必须EnvelopedVerifiableCredential

下面的例子展示了一个可验证表述,其中包含一个封装式可验证凭证

示例 18: Presentation 的基本结构
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "type": ["VerifiablePresentation", "ExamplePresentation"],
  "verifiableCredential": [{
    "@context": "https://www.w3.org/ns/credentials/v2",
    "id": "data:application/vc+sd-jwt,QzVjV...RMjU",
    "type": "EnvelopedVerifiableCredential"
  }]
}

注意: 将封装内容处理为RDF

实现者可能希望在RDF环境中处理本节所描述的对象和由id值表示的封装表述,并在与RDF相关的对象之间创建关联。这样做的需求和机制取决于具体的用例,因此也将依赖于具体的实现。

可以使用封装载荷的安全机制,例如使用JOSE和COSE保护可验证凭证 [VC-JOSE-COSE]来表示一个已加固的可验证表述。这可以通过使用typeEnvelopedVerifiablePresentation的对象来实现。

EnvelopedVerifiablePresentation
用于表达一个封装式可验证表述。对象的@context属性必须存在并包含上下文,例如本规范的基本上下文,该上下文至少定义了由本规范提供的基本上下文定义的idtypeEnvelopedVerifiablePresentation术语。对象的id必须data:URL[RFC2397],它使用一个封装的安全机制来表达一个安全的可验证表述,例如使用JOSE 和COSE保护可验证凭证 [VC-JOSE-COSE]。对象的type必须封装式可验证表述

下面的例子展示了一个封装式可验证表述

示例 19: Basic structure of an enveloped verifiable presentation
{
  "@context": "https://www.w3.org/ns/credentials/v2",
  "id": "data:application/vp+jwt,eyJraWQiO...zhwGfQ",
  "type": "EnvelopedVerifiablePresentation"
}

一些零知识密码学方案可能允许持有者能够间接证明他们持有可验证凭证中的声明,而无需透露该可验证凭证中的所有声明。在这些方案中,可以使用可验证凭证 派生可表述的数据,这些数据以密码学方式被声明,使验证者在信任签发者的情况下可以信任该值。

一些选择性披露方案可以共享从可验证凭证中派生的声明子集

图11 一个基本声明表示Pat年龄超过21岁

持有者可以可验证表述中使用verifiableCredential属性,以包含来自任何签发者,包括他们自己的可验证凭证。当可验证凭证签发者持有者时,该可验证凭证中的声明被视为自我声明。这种自我声明的声明可以通过与其所包含的可验证表述相同的机制进行保护,或者通过适用于其他可验证凭证的任何机制进行保护。

这些自我声明的subject(s) of these self-asserted声明的主体不受限制,因此这些声明可以包括关于持有者、其他包含的可验证凭证,甚至是包含自我声明可验证凭证可验证表述的陈述。在每种情况下,id属性用于在对其进行声明的对象中标识特定主体,正如在非自我声明的可验证凭证中所做的那样。

一个包含自我声明可验证凭证可验证表述,且仅使用与可验证表述,相同的机制进行保护,必须包含一个holder属性

所有针对可验证凭证定义的规范性要求同样适用于自我声明可验证凭证

可验证凭证issuer属性的值与可验证表述holder属性的值相同时,可验证表述中的可验证凭证被认为是自断言的。

下面的例子展示了一个可验证表述,该表述嵌入了一个使用与可验证表述相同机制进行保护的自我声明可验证凭证

示例 20: 一个通过嵌入式数据完整性证明进行保护的可验证表述,包含一个自我声明的可验证凭证
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "type": ["VerifiablePresentation", "ExamplePresentation"],
  "holder": "did:example:12345678",
  "verifiableCredential": [{
    "@context": [
      "https://www.w3.org/ns/credentials/v2",
      "https://www.w3.org/ns/credentials/examples/v2"
    ],
    "type": ["VerifiableCredential", "ExampleFoodPreferenceCredential"],
    "issuer": "did:example:12345678",
    "credentialSubject": {
      "favoriteCheese": "Gouda"
    },
    {  }
  }],
  "proof": [{  }]
}

下面的例子展示了一个可验证表述,该表述嵌入了一个自我声明的可验证凭证,包含关于可验证表述声明。它使用与可验证表述相同的机制进行保护。

示例 21: 一个通过嵌入式数据完整性证明进行保护的可验证表述,包含一个关于可验证表述的自我声明可验证凭证
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "type": ["VerifiablePresentation", "ExamplePresentation"],
  "id": "urn:uuid:313801ba-24b7-11ee-be02-ff560265cf9b",
  "holder": "did:example:12345678",
  "verifiableCredential": [{
    "@context": [
      "https://www.w3.org/ns/credentials/v2",
      "https://www.w3.org/ns/credentials/examples/v2"
    ],
    "type": ["VerifiableCredential", "ExampleAssertCredential"],
    "issuer": "did:example:12345678",
    "credentialSubject": {
      "id": "urn:uuid:313801ba-24b7-11ee-be02-ff560265cf9b",
      "assertion": "This VP is submitted by the subject as evidence of a legal right to drive"
    },
    "proof": {  }
  }],
  "proof": {  }
}

第 4 节. 基本概念的概念基础上,本节探讨了关于可验证凭证的更复杂主题。

本节为非规范性内容。

可验证凭证的信任模型基于以下预期:

这个信任模型与其他信任模型的不同之处在于以下几点:

验证者如何决定信任哪些签发者、信任哪些数据或用途,不在本推荐规范的范围内。某些签发者,例如知名组织,可能由于其声誉被许多验证者信任。 一些签发者验证者可能是一个社区的成员,社区中的所有成员因会员资格规则而相互信任。某些验证者可能信任特定的信任服务提供商,其职责是审核签发者并将其列入信任名单,如《电子签名与基础设施》(ESI)中的信任列表 [ETSI-TRUST-LISTS]或Adobe 认证信任列表

通过将签发者验证者之间的期望分离,创建了一个更加灵活和动态的信任模型,从而增加了市场竞争和客户选择的空间。

有关此信任模型如何与工作组研究的各种威胁模型相互作用的更多信息,请参见可验证凭证用例 [VC-USE-CASES]。

注意:信任模型不同于传统的证书授权体系

本规范详细介绍的数据模型并不暗示像传统证书授权信任模型那样的传递信任模型。在可验证凭证数据模型中,验证者要么直接信任签发者,要么不信任。虽然可以使用可验证凭证数据模型构建传递信任模型,但实施者应当了解通过证书授权系统那种方式广泛授权信任所引入的安全漏洞

可验证凭证数据模型的目标之一是实现无许可创新。为此,数据模型需要在多个方面具备可扩展性。数据模型需要满足以下要求:

这种数据建模方法通常被称为开放世界假设,意味着任何实体都可以对其他实体进行任意描述。虽然这种方法似乎与构建简单且可预测的软件系统相冲突,但在开放世界假设中,平衡可扩展性与程序正确性比在封闭软件系统中更具挑战。

本节的其余部分通过一系列示例来描述如何同时实现可扩展性和程序的正确性。

假设我们从下图所示的凭证开始。

{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://vc.example/credentials/4643",
  "type": ["VerifiableCredential"],
  "issuer": "https://issuer.example/issuers/14",
  "validFrom": "2018-02-24T05:28:04Z",
  "credentialSubject": {
    "id": "did:example:abcdef1234567",
    "name": "Jane Doe"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://vc.example/credentials/4643",
  "type": [
    "VerifiableCredential"
  ],
  "issuer": "https://issuer.example/issuers/14",
  "validFrom": "2018-02-24T05:28:04Z",
  "credentialSubject": {
    "id": "did:example:abcdef1234567",
    "name": "Jane Doe"
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2025-04-27T17:58:34Z",
    "verificationMethod": "did:key:zDnaebSRtPnW6YCpxAhR5JPxJqt9UunCsBPhLEtUokUvp87nQ",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z3FfiNeGUGhy8ApiRsv42y5VUPFgbieFbUJebkKhkZ6tNASNv6MkiJwNGWczfmrdYdmLZa6r3rtJ4BSF9BjnwrSo8"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://vc.example/credentials/4643",
  "type": [
    "VerifiableCredential"
  ],
  "issuer": "https://issuer.example/issuers/14",
  "validFrom": "2018-02-24T05:28:04Z",
  "credentialSubject": {
    "id": "did:example:abcdef1234567",
    "name": "Jane Doe"
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2025-04-27T17:58:34Z",
    "verificationMethod": "did:key:zDnaerJh8WwyBVVGcZKKkqRKK9iezje8ut6t9bnNChtxcWwNv",
    "cryptosuite": "ecdsa-sd-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0AhVhA8DUmqMDGQOAZ8hIuyi_X-LbT_fD_guDAKeRkRbAwk8aXyQeTRQErpRbOMQiYhWHKelW9XSZSIU3_dk8s-SLLIVgjgCQCEJqTiBGYPxkutgRjtMH-_iViqDBvJl4I9XVBXrsRRBhYIC2fjWyVwswq0oXkkyYFTxwdT5k-XZWMJx7JdwFPfALfg1hApuvVmqTlFFKpI79s8M8CND3arkiGE6talSgE8n2iT9NxbWYgiqH0s3Zxo_eXGCbBoxibB3_VMt9huvsz51yhxVhAj55Js6Ka1i7-mfjrszFmD1W0Lc81XKCtAqHvF-qY2XWd6cpHIwWlSvU3NxSoYpcAdxUrgAu17iEmHMLvpdyllFhAo4kADpzjQ_AeB0nvp-IzeawelLeusg8t2M2yZLPzcN3R4alEKnbWofwSflHD2Yx_QQW3U9Ck9YALaKZbO_KIRYFnL2lzc3Vlcg"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://vc.example/credentials/4643",
  "type": [
    "VerifiableCredential"
  ],
  "issuer": "https://issuer.example/issuers/14",
  "validFrom": "2018-02-24T05:28:04Z",
  "credentialSubject": {
    "id": "did:example:abcdef1234567",
    "name": "Jane Doe"
  },
  "proof": {
    "type": "DataIntegrityProof",
    "verificationMethod": "did:key:zUC78GzFRA4TWh2mqRiKro1wwRb5KDaMJ3M1AD3qGtgEbFrwWGvWbnCzArkeTZCyzBz4Panr2hLaZxsXHiBQCwBc3fRPH6xY4u5v8ZAd3dPW1aw89Rra86CVwXr3DczANggYbMD",
    "cryptosuite": "bbs-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0ChVhQtDW_taTeCBSwoqWX3rzUAFmrR8_TAfE8027nlDX8x4Eiquv_i6S7XU_4mnGV-ODaZYnVuh47RBcLtkevGmEDr_0aXc7ujmM6icKfQgg88cRYQGd_DaMQQsoaryttl5TvxnFT-Vm4SkVx03K9qNJ4jhArvqENcCm8D2khyMGr7-FGFdx818_ufbFmo8hKn_2FgMpYYJVTGbTfcflzyx41E-f9kSqmf10xYzxJrGfC7b7GPY8X7VjMT__ZKSuwdH-5jak-5gkjocsHI6oxIKlLrhW1Wh5yrDCH-QC823TS8NE9VGBzIFAfUt5qazGEcJ8CxeSPxFggPmXI3YCyx-_cwMML4xSJvv9xy0Xvrw9Qb6s21_i5rHiBZy9pc3N1ZXI"
  }
}
Protected Headers
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://vc.example/credentials/4643",
  "type": [
    "VerifiableCredential"
  ],
  "issuer": "https://issuer.example/issuers/14",
  "validFrom": "2018-02-24T05:28:04Z",
  "credentialSubject": {
    "id": "did:example:abcdef1234567",
    "name": "Jane Doe"
  }
}
application/vc+jwt

.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwOi8vdmMuZXhhbXBsZS9jcmVkZW50aWFscy80NjQzIiwidHlwZSI6WyJWZXJpZmlhYmxlQ3JlZGVudGlhbCJdLCJpc3N1ZXIiOiJodHRwczovL2lzc3Vlci5leGFtcGxlL2lzc3VlcnMvMTQiLCJ2YWxpZEZyb20iOiIyMDE4LTAyLTI0VDA1OjI4OjA0WiIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImlkIjoiZGlkOmV4YW1wbGU6YWJjZGVmMTIzNDU2NyIsIm5hbWUiOiJKYW5lIERvZSJ9fQ .p2BTVD1miV8CyTx1ivkbBmBo_LzoMNyQbDPP1_bxRMov_umGGpsw9ngQ5bF245MAbtH-yJw7L0wx14KKQC1gvw

application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://vc.example/credentials/4643",
  "type": [
    "VerifiableCredential"
  ],
  "issuer": "https://issuer.example/issuers/14",
  "validFrom": "2018-02-24T05:28:04Z",
  "credentialSubject": {
    "id": "did:example:abcdef1234567",
    "name": "Jane Doe"
  }
}
application/vc+cose

d28443a10128a05901487b2240636f6e74657874223a5b2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f7632222c2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f6578616d706c65732f7632225d2c226964223a22687474703a2f2f76632e6578616d706c652f63726564656e7469616c732f34363433222c2274797065223a5b2256657269666961626c6543726564656e7469616c225d2c22697373756572223a2268747470733a2f2f6973737565722e6578616d706c652f697373756572732f3134222c2276616c696446726f6d223a22323031382d30322d32345430353a32383a30345a222c2263726564656e7469616c5375626a656374223a7b226964223a226469643a6578616d706c653a61626364656631323334353637222c226e616d65223a224a616e6520446f65227d7d5840eeb9cf85c67689580f3f73aef32e28e495412ab15f694bec8522b52153966a32c16dace5627374f50fef36b7df36415b2a79e652fa87598940e83d0ff972a167

.eyJpYXQiOjE3NDU3NzY3MTQsImV4cCI6MTc0Njk4NjMxNCwiX3NkX2FsZyI6InNoYS0yNTYiLCJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjoiaHR0cHM6Ly9pc3N1ZXIuZXhhbXBsZS9pc3N1ZXJzLzE0IiwidmFsaWRGcm9tIjoiMjAxOC0wMi0yNFQwNToyODowNFoiLCJjcmVkZW50aWFsU3ViamVjdCI6eyJuYW1lIjoiSmFuZSBEb2UiLCJfc2QiOlsidVE2NkFmZXF3dWY0Y2s5NXI2cTFWZVZEM3FVYjU0VTJtUmdZdGRWQVpkbyJdfSwiX3NkIjpbIktwdURNMGVHaWtoNXBiVjhUR1lrYjZTdDNaLUZadkNtWmxkeGl1NmwydzgiLCJiUzFQMVNOc2tUb2h1QlRCeE8tNHF4bThRT21sQmlDTXhnVXJnYkNpWHM4Il19 .NUK9XkgPZ46Zc_3urENrSvkN0RRkNUw31ki9YFAJVhggzxBJhYHNBWK1NtFhu6cQU1o0XqKjaYVMXHsCB4SGGQ ~WyJTZDNNNUZ1LTl3dnRaZU85RTE2dEx3IiwgImlkIiwgImh0dHA6Ly92Yy5leGFtcGxlL2NyZWRlbnRpYWxzLzQ2NDMiXQ~WyJKeHpWdGlUWjE3UVBpRDZpdVJIZDh3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIl1d~WyJwUEY1VG95bFhTa19FeU8zUmhJT2RRIiwgImlkIiwgImRpZDpleGFtcGxlOmFiY2RlZjEyMzQ1NjciXQ~

声明: id

SHA-256 哈希: KpuDM0eGikh5pbV8TGYkb6St3Z-FZvCmZldxiu6l2w8

公开信息: WyJTZDNNNUZ1LTl3dnRaZU85RTE2dEx3IiwgImlkIiwgImh0dHA6Ly92Yy5leGFtcGxlL2NyZWRlbnRpYWxzLzQ2NDMiXQ

内容: [
  "Sd3M5Fu-9wvtZeO9E16tLw",
  "id",
  "http://vc.example/credentials/4643"
]

声明: type

SHA-256 哈希: bS1P1SNskTohuBTBxO-4qxm8QOmlBiCMxgUrgbCiXs8

公开信息: WyJKeHpWdGlUWjE3UVBpRDZpdVJIZDh3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIl1d

内容: [
  "JxzVtiTZ17QPiD6iuRHd8w",
  "type",
  [
    "VerifiableCredential"
  ]
]

声明: id

SHA-256 哈希: uQ66Afeqwuf4ck95r6q1VeVD3qUb54U2mRgYtdVAZdo

公开信息: WyJwUEY1VG95bFhTa19FeU8zUmhJT2RRIiwgImlkIiwgImRpZDpleGFtcGxlOmFiY2RlZjEyMzQ1NjciXQ

内容: [
  "pPF5ToylXSk_EyO3RhIOdQ",
  "id",
  "did:example:abcdef1234567"
]

可验证凭证声明与did:example:abcdef1234567关联的实体姓名Jane Doe

现在我们假设一位开发者希望扩展该可验证凭证,以存储两条额外的信息:一个内部企业参考编号,以及 Jane 喜欢的食物。

首先要做的是创建一个包含两个新术语的 JSON-LD 上下文,如下所示。

{
  "@context": {
    "referenceNumber": "https://extension.example/vocab#referenceNumber",
    "favoriteFood": "https://extension.example/vocab#favoriteFood"
  }
}

在创建此 JSON-LD 上下文之后,开发者会将其发布到某处,以便验证者在处理该可验证凭证时能够访问它。假设上述 JSON-LD 上下文发布在 https://extension.example/my-contexts/v1, 我们可以通过包含该上下文并将新属性凭证类型添加到可验证凭证中来扩展此示例。

{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2",
    "https://extension.example/my-contexts/v1"
  ],
  "id": "http://vc.example/credentials/4643",
  "type": ["VerifiableCredential", "CustomExt12"],
  "issuer": "https://issuer.example/issuers/14",
  "validFrom": "2018-02-24T05:28:04Z",
  "referenceNumber": 83294847,
  "credentialSubject": {
    "id": "did:example:abcdef1234567",
    "name": "Jane Doe",
    "favoriteFood": "Papaya"
  }
}

该示例展示了如何以无许可和去中心化的方式扩展可验证凭证数据模型。表述的机制还确保了通过这种方式创建的 可验证凭证提供了一种防止命名空间冲突和语义歧义的方法。

这种动态的扩展模型确实增加了实现的复杂性。为该系统编写的软件必须根据应用的风险评估来决定是否接受带有扩展的可验证凭证。某些应用可能只接受某些扩展,而高度安全的环境可能不会接受任何扩展。这些决策由这些应用的开发者决定,特别不属于本规范的范畴。

扩展规范的作者应确保其文档(如 JSON-LD 上下文)具有高度可用性。使用这些文档的开发者可能使用在无法检索这些文档时产生错误的软件。确保扩展 JSON-LD 上下文始终可用的策略包括将这些文档与实现进行捆绑、使用具有长期缓存的内容分发网络,或使用内容寻址 URL 作为上下文。这些方法在附录B.上下文、词汇表、类型和凭证模式中有更详细的说明。

实施者应特别关注本规范中的扩展点,例如4.10 状态4.11数据模式4.12 安全机制5.4 刷新5.5 使用条款5.6 证据。虽然本规范未定义这些扩展点的具体实现,但可验证凭证扩展文档提供了一个开发者可以在这些扩展点使用的非官方、精选的扩展列表。

在定义应用程序特定的词汇表时,词汇表作者应当遵循详细检查表, 该检查表来自发布链接数据的最佳实践。 特别是,以下指导尤为重要:

此外,必须在@context属性中指定的 URL 发布该术语的机器可读描述(即JSON-LD 上下文文档)。 该上下文必须将每个术语映射到其对应的 URL,并可能伴随进一步的约束,如属性值的类型。 任何寻求互操作性的实施者还应发布一个描述 @context 属性值预期顺序的人类可读文档。

注意: 不允许术语重定义

当处理由本规范定义的基础 JSON-LD 上下文文档所定义的活动上下文时, 合规的 JSON-LD 处理器在JSON-LD上下文中重定义任何术语时会产生错误。 改变现有术语定义的唯一方法是引入一个新术语,该术语在其范围内清除活动上下文。 对该功能感兴趣的作者应阅读JSON-LD 1.1规范中的@protected 关键字

符合规范的文档在生产中不应使用@vocab功能, 因为它可能导致 JSON 术语冲突,进而在其他应用程序中引发语义歧义。相反, 为了实现适当的互操作性,符合规范的文档应使用 JSON-LD 上下文定义其应用程序中使用的所有术语, 如前面第5.2可扩展性中所述。如果符合规范的文档未使用定义所有使用术语的 JSON-LD 上下文,则 必须@context属性的最后一个值中包含https://www.w3.org/ns/credentials/undefined-terms/v2

系统启用手动或自动刷新已过期的可验证凭证是非常有用的。 有关可验证凭证有效期的更多信息,请参阅第A.7 有效期。本规范定义了refreshService属性,允许签发者包含一个指向刷新服务的链接。

签发者可以将刷新服务作为元素包含在可验证凭证中(如果它是为验证者持有者 (或两者)设计的),或包含在可验证表述中(如果它仅为持有者设计)。 在后者情况下,这使持有者能够在创建与验证者分享的可验证表述之前刷新可验证凭证。 在前者情况下,将刷新服务包含在可验证凭证中可以使持有者验证者在未来对凭证进行更新。

仅当凭证已过期或签发者未发布凭证状态信息时,才预期使用刷新服务。建议签发者不要将refreshService属性放入包含非公开信息的可验证凭证,或未以某种方式保护其刷新服务的凭证

refreshService
refreshService属性的值必须是一个或多个刷新服务, 它们向接收者的软件提供足够的信息,使接收者能够刷新可验证凭证。 每个refreshService必须 指定其type。每个刷新服务的具体内容由其对应的refreshService类型定义。
示例 27: 签发者对 refreshService 属性的使用
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://w3id.org/age/v1"
  ],
  "type": ["VerifiableCredential", "AgeVerificationCredential"],
  "issuer": "did:key:z6MksFxi8wnHkNq4zgEskSZF45SuWQ4HndWSAVYRRGe9qDks",
  "validFrom": "2024-04-03T00:00:00.000Z",
  "validUntil": "2024-12-15T00:00:00.000Z",
  "name": "Age Verification Credential",
  "credentialSubject": {
    "overAge": 21
  },
  "refreshService": {
    "type": "VerifiableCredentialRefreshService2021",
    "url": "https://registration.provider.example/flows/reissue-age-token",
    "refreshToken": "z2BJYfNtmWRiouWhDrbDQmC2zicUPBxsPg"
  }
}

在上面的示例中,签发者指定了一个自动的refreshService,可以通过将可验证凭证发布到刷新服务网址 (url) 来使用。请注意,这个特定的可验证凭证仅供原始签发者使用,不能与其他人共享。

使用条款可由签发者持有者用来传达签发可验证凭证可验证表述时适用的使用条款。签发者将其使用条款放置在可验证凭证内,持有者将其使用条款放置在可验证表述中。本规范定义了termsOfUse属性,用于表达使用条款信息。

termsOfUse属性的值可用于告知验证者以下任意内容(但不限于此):

termsOfUse
termsOfUse属性的值必须指定签发凭证表述时所依据的一个或多个使用条款政策。 如果接收者(无论是持有者还是验证者不愿意遵守指定的使用条款,则自行承担责任,如果违反了规定的使用条款,可能会承担法律责任。每个 termsOfUse必须指定其类型(例如TrustFrameworkPolicy),并可以指定其实例 id。每个使用条款的具体内容由其特定的termsOfUse类型定义。
示例 28: 签发者对termsOfUse属性的使用
{
  {
    "@context": [
      "https://www.w3.org/ns/credentials/v2",
      "https://www.w3.org/ns/credentials/undefined-terms/v2"
    ],
    "id": "urn:uuid:08e26d22-8dca-4558-9c14-6e7aa7275b9b",
    "type": [
      "VerifiableCredential",
      "VerifiableAttestation",
      "VerifiableTrustModel",
      "VerifiableAuthorisationForTrustChain"
    ],
    "issuer": "did:ebsi:zZeKyEJfUTGwajhNyNX928z",
    "validFrom": "2021-11-01T00:00:00Z",
    "validUntil": "2024-06-22T14:11:44Z",
    "credentialSubject": {
      "id": "did:ebsi:zvHWX359A3CvfJnCYaAiAde",
      "reservedAttributeId": "60ae46e4fe9adffe0bc83c5e5be825aafe6b5246676398cd1ac36b8999e088a8",
      "permissionFor": [{
        "schemaId": "https://api-test.ebsi.eu/trusted-schemas-registry/v3/schemas/zHgbyz9ajVuSProgyMhsiwpcp8g8aVLFRNARm51yyYZp6",
        "types": [
          "VerifiableCredential",
          "VerifiableAttestation",
          "WorkCertificate"
        ],
        "jurisdiction": "https://publications.europa.eu/resource/authority/atu/EUR"
      }]
    },
    "termsOfUse": {
      "type": "TrustFrameworkPolicy",
      "trustFramework": "Employment&Life",
      "policyId": "https://policy.example/policies/125",
      "legalBasis": "professional qualifications directive"
    },
    "credentialStatus": {
      "id": "https://api-test.ebsi.eu/trusted-issuers-registry/v5/issuers/did:ebsi:zvHWX359A3CvfJnCYaAiAde/attributes/60ae46e4fe9adffe0bc83c5e5be825aafe6b5246676398cd1ac36b8999e088a8",
      "type": "EbsiAccreditationEntry"
    },
    "credentialSchema": {
      "id": "https://api-test.ebsi.eu/trusted-schemas-registry/v3/schemas/zCSHSDwrkkd32eNjQsMCc1h8cnFaxyTXP5ByozyVQXZoH",
      "type": "JsonSchema"
    }
  }
}

在上述示例中,签发者声明此可验证凭证的法律依据是使用 "就业 & 生活"信任框架的“专业资格指令”,并提供了指向该政策的具体链接。

预计政府签发的可验证凭证会使用此功能,指导数字钱包将其使用限制在类似的政府组织内,以保护公民免受敏感数据的意外使用。同样,预计一些由私营行业签发的可验证凭证会将使用限制在组织内部的部门,或仅限于工作时间内使用。建议实施者阅读《可验证凭证实施指南》[VC-IMP-GUIDE] 文档的相关章节,了解更多关于此功能的发展情况。

证据可以由签发者包含在可验证凭证中,以向验证者提供额外的支持信息。这可以被验证者用来评估其对可验证凭证中声明的依赖信心。例如,签发者可以在签发凭证之前检查由主体提供的物理文档或进行一系列背景调查。在某些情况下,当验证者确定依赖特定凭证的风险时,这些信息非常有用。

本规范定义了evidence属性,用于表达证据信息。

evidence
如果存在,evidence属性的值必须是单个对象或一个或多个对象的集合。每个证据对象定义了以下属性:
id
id属性可选的 。它可以 用于为证据对象提供唯一标识符。如果存在,必须遵循4.4 标识符的规范性指导。
type
type属性必需的。它用于表达对象表示的证据信息类型。必须遵循4.5 类型的相关规范性指导。
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
  ],
  "id": "http://1edtech.edu/credentials/3732",
  "type": [
    "VerifiableCredential",
    "OpenBadgeCredential"
  ],
  "issuer": {
    "id": "https://1edtech.edu/issuers/565049",
    "type": "Profile"
  },
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "type": "AchievementSubject",
    "name": "Alice Smith",
    "activityEndDate": "2023-12-02T00:00:00Z",
    "activityStartDate": "2023-12-01T00:00:00Z",
    "awardedDate": "2024-01-01T00:00:00Z",
    "achievement": [{
      "id": "urn:uuid:d46e8ef1-c647-419b-be18-5e045d1c4e64",
      "type": ["Achievement"],
      "name": "Basic Barista Training",
      "criteria": {
        "narrative": "Team members are nominated for this badge by their supervisors, after passing the Basic Barista Training course."
      },
      "description": "This achievement certifies that the bearer is proficient in basic barista skills."
    }]
  },
  "evidence": [{
      
      "id": "https://videos.example/training/alice-espresso.mp4",
      "type": ["Evidence"],
      "name": "Talk-aloud video of double espresso preparation",
      "description": "This is a talk-aloud video of Alice demonstrating preparation of a double espresso drink.",
      
      "digestMultibase": "uELq9FnJ5YLa5iAszyJ518bXcnlc5P7xp1u-5uJRDYKvc"
    }
  ]
}

在上述evidence示例中,签发者声明他们拥有显示凭证主体成就的视频。

注意: 证据与安全机制的目的不同

evidence属性提供的信息与使用的安全机制不同。evidence属性用于表达与可验证凭证相关的支持信息,如文件证据。而安全机制用于表达与签发者的真实性及可验证凭证的完整性相关的机器可验证数学证明。 有关安全机制的更多信息,请参阅4.12 安全机制

零知识证明是一种安全机制,使持有者能够证明其持有的可验证凭证包含某个值,而无需披露实际值,例如能够证明某个人的年龄超过 25 岁,而无需透露其出生日期。此数据模型支持使用零知识证明进行保护。

通过零知识证明机制实现的一些与可验证凭证兼容的能力包括:

编写安全机制的规范作者不得设计会泄露信息的机制,这些信息可能会使验证者能够将持有者与多个不同的可验证表述关联,从而暴露身份信息。

并非所有零知识证明机制都支持所有能力。某一特定零知识证明机制所提供的功能与技术细节,以及与可验证凭证配合使用的规范性要求,可在该零知识证明机制保护可验证凭证的相关规范中找到。有关此类规范的示例,请参阅数据完整性 BBS 密码套件 v1.0

我们注意到,在大多数情况下,为了使持有者能够使用零知识机制与可验证凭证配合,签发者需要以支持这些能力的方式保护可验证凭证

下图突出显示了如何使用数据模型在零知识场景下签发和表达可验证凭证

图 12 ZKP表述中凭证与派生凭证之间关系的可视化示例 。

下方展示了使用数据完整性 BBS 密码套件 v1.0不可链接选择性披露安全机制的可验证凭证可验证表述示例。

示例 30: 使用数据完整性 BBS 加密套件和基础证明的可验证凭证
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://w3id.org/citizenship/v3"
  ],
  "type": ["VerifiableCredential", "PermanentResidentCard"],
  "issuer": {
    "id": "did:web:credentials.utopia.example",
    "image": "data:image/png;base64,iVBORw0KGgo...YII="
  },
  "identifier": "83627465",
  "name": "Permanent Resident Card",
  "description": "Government of Utopia Permanent Resident Card.",
  "validFrom": "2024-08-01T00:00:00Z",
  "validUntil": "2029-12-01T00:00:00Z",
  "credentialSubject": {
    "type": ["PermanentResident", "Person"],
    "givenName": "JANE",
    "familyName": "SMITH",
    "gender": "Female",
    "image": "data:image/png;base64,iVBORw0KGgoAA...Jggg==",
    "residentSince": "2015-01-01",
    "lprCategory": "C09",
    "lprNumber": "999-999-999",
    "commuterClassification": "C1",
    "birthCountry": "Arcadia",
    "birthDate": "1978-07-17"
  },
  "proof": {
    "type": "DataIntegrityProof",
    "verificationMethod": "did:web:playground.alpha.chapi.io#zUC75LjjCLGKRxSissX1nAebRDmY4Bv4T6MAbzgaap9Q8rAGf6SEjc2Hf4nH6bUPDwky3GWoYcUjMCcEqRRQfXEiNwfeDwNYLoeqk1J1W2Ye8vCdwv4fSd8AZ1yS6UoNzcsQoPS",
    "cryptosuite": "bbs-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0ChVhQjYs9O7wUb3KRSMaIRX7jmafVHYDPYBLD4ta85_qmuXTBU_t2Ir7pNujwRE6fERsBUEZRSjJjtI-hqOqDs3VvBvH6gd3o2KeUS2V_zpuphPpYQEkapOeQgRTak9lHKSTqEQqa4j2lyHqekEeGvzPlqcHQGFccGifvLUXtP59jCuGJ86HDA9HL5kDzUT6n4Gi50HlYYIzNqhbjIxlqOuxO2IgIppSTWjQGeer34-PmKnOzKX8m_9DHPhif7TUf5uTV4OQWdhb0SxHnJ-CPu_z9FJ5ACekBQhz6YWS0_CY6j_ibucXzeVfZwLv1W47pjbt-l1Vl5VggSn2xVt69Q0GD9mPKpOhkKV_hyOL7i6haf7bq-gOKAwWDZy9pc3N1ZXJtL2lzc3VhbmNlRGF0ZW8vZXhwaXJhdGlvbkRhdGU"
  }
}

上述示例是一个可验证凭证,其中签发者启用了基于 BBS 的不可链接披露方案,以创建一个基础证明,持有者随后可以使用该证明生成派生证明,只披露原始可验证凭证中的特定信息。

示例 31: 使用数据完整性 BBS 加密套件、派生凭证和证明的可验证表述
{
  @context: "https://www.w3.org/ns/credentials/v2"
  type: "VerifiablePresentation",
  verifiableCredential: {
    "@context": [
      "https://www.w3.org/ns/credentials/v2",
      "https://w3id.org/citizenship/v3"
    ],
    "type": ["VerifiableCredential", "PermanentResidentCard"],
    "issuer": {
      "id": "did:web:issuer.utopia.example",
      "image": "data:image/png;base64,iVBORw0KGgo...YII="
    },
    "name": "Permanent Resident Card",
    "description": "Government of Utopia Permanent Resident Card.",
    "validFrom": "2024-08-01T00:00:00Z",
    "validUntil": "2029-12-01T00:00:00Z",
    "credentialSubject": {
      "type": ["PermanentResident", "Person"],
      "birthCountry": "Arcadia"
    },
    "proof": {
      type: "DataIntegrityProof",
      verificationMethod: "did:web:issuer.utopia.example#zUC75LjjCLGKRxSissX1nAebRDmY4Bv4T6MAbzgaap9Q8rAGf6SEjc2Hf4nH6bUPDwky3GWoYcUjMCcEqRRQfXEiNwfeDwNYLoeqk1J1W2Ye8vCdwv4fSd8AZ1yS6UoNzcsQoPS",
      cryptosuite: "bbs-2023",
      proofPurpose: "assertionMethod",
      proofValue: "u2V0DhVkCkLdnshxHtgeHJBBUGPBqcEooPp9ahgqs08RsoqW5EJFmsi70jqf2X368VcmfdJdYcYJwObPIg5dlyaoBm34N9BqcZ4RlTZvgwX79ivGnqLALC0EqKn2wOj5hRO76xUakfLGIcT4mE-G7CxA1FTs8sRCWy5p6FozelBYiZU2YlhUpJ7pBwelZ9wnlcbj4q-KyxAj5GU2iWp7-FxU-E624DmdT-yvCkAGRRrYej6lMwg7jB9uCHypOXXH2dVZ-jpf74YBaE4rMTxPFh60GN4o3S65F1fMsJbEMLdrXa8Vs6ZSlmveUcY1X7oPr1UIxo17ehVTCjOxWunYqrtLi9cVkYOD2s9XMk1oFVWBB3UY29axXQQXlZVfvTIUsfVc667mnlYbF7a-ko_SUfeY2n3s1DOAap5keeNU0v2KVPCbxA2WGz7UJy4xJv2a8olMOWPKjAEUruCx_dsbyicd-9KGwhYoUEO3HoAzmtI6qXVhMbJKxPrhtcp8hOdD9izVS5ed4CxHNaDGPSopF_MBwjxwPcpUufNNNdQwesrbtFJo0-P-1CrX_jSxKFMle2b3t24UbHRbZw7QnX4OG-SSVucem5jpMXTDFZ8PLFCqXX0zncJ_MQ-_u-liE-MwJu3ZemsXBp1JoB2twS0TqDVzSWR7bpFZKI9_07fKUAmQNSV_no9iAgYRLuPrnnsW1gQgCV-nNqzbcCOpzkHdCqro6nPSATq5Od3Einfc683gm5VGWxIldM0aBPytOymNz7PIZ6wkgcMABMe5Vw46B54ftW-TN5YZPDmCJ_kt7Mturn0OeQr9KJCu7S0I-SN14mL9KtGE1XDnIeR-C_YZhSA3vX4923v1l3vNFsKasqy9iEPHKM0hcogABAQCGAAECBAUGhAMJCgtYUnsiY2hhbGxlbmdlIjoiNGd2OFJyaERPdi1OSHByYlZNQlM1IiwiZG9tYWluIjoiaHR0cHM6Ly9wbGF5Z3JvdW5kLmFscGhhLmNoYXBpLmlvIn0"
    }
  }
}

上面的可验证表述包含一个可验证凭证,其中包含前一个示例中不可链接的信息子集, 以及一个派生证明,验证者可以使用该证明来验证这些信息来源于预期的签发者,并且与此次特定的信息交换绑定。

实施者需理解,表示和处理时间值并不像看起来那么简单,而且具有许多不易察觉的特殊性,不同地区的情况也不完全一致。例如:

这些只是几个例子,说明实际的时间(如挂钟上的时间)在一个地区可能存在,而在另一个地区则可能不存在。因此,建议实施者使用更为通用的时间值,如锚定在Z时区的值,而非受夏令时影响的值。

本规范试图通过使用XMLSCHEMA11-2规范中首次确立的dateTimeStamp构造,增加全球认可的日期和时间组合数量,并减少时间值误解的可能性。为了减少不同时区之间的误解,符合规范的文档中所有的时间值SHOULDdateTimeStamp格式指定,要么使用协调世界时(UTC),在值的末尾用Z表示,要么使用相对于 UTC 的时区偏移。错误序列化而没有偏移的时间值MUST被解释为 UTC。例如,相对于 UTC 的有效时区偏移包括Z+01:00-08:00+14:00。有关所有可接受值的正式定义,请参阅本节末尾的正则表达式。

时区定义有时会由其管理机构进行更改,在替换或签发新的可验证凭证时,建议实施者确保本地时区规则的变化不会导致有效性间隙。例如,考虑America/Los_Angeles时区,其原始偏移为 UTC-8,并在 2024 年投票决定停止观察夏令时。某个可验证凭证validUntil值为2024-07-12T12:00:00-07:00,可能会重新签发validFrom值为2024-07-12T12:00:00-08:00,从而导致可验证凭证有一小时的有效性间隙。

希望检查dateTimeStamp值有效性的实施者可以使用下方提供的正则表达式,这里为方便引用自[XMLSCHEMA11-2]规范。为了避免疑问,[XMLSCHEMA11-2]中的正则表达式是规范定义。实施者需注意,并非所有通过下述正则表达式的dateTimeStamp值都是有效的时间点。例如,下面的正则表达式允许每个月有 31天,这考虑了闰年、闰秒以及某些地区不存在的天数。尽管如此,现代系统库生成的dateTimeStamp值通常是无误的。下方表述的正则表达式(去除为了可读性而加入的空格)在处理现代系统生成的日期和时间时通常是足够的。

示例 32: 用于检测有效 XML Schema 1.1 的正则表达式:第 2 部分 dateTimeStamp
-?([1-9][0-9]{3,}|0[0-9]{3})
-(0[1-9]|1[0-2])
-(0[1-9]|[12][0-9]|3[01])
T(([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](\.[0-9]+)?|(24:00:00(\.0+)?))
(Z|(\+|-)((0[0-9]|1[0-3]):[0-5][0-9]|14:00))

本节为非规范性内容。

可验证凭证是作为可靠识别主体的手段。虽然已知基于角色的访问控制(RBACs)和基于属性的访问控制(ABACs)依赖于此识别来授权主体访问资源,但本规范并不提供完整的 RBAC 或 ABAC 解决方案。在没有附带授权框架的情况下,授权并不是本规范的适当用途。

工作组在制定本规范时考虑了授权的用例,并正在将其作为建立在本规范之上的架构层进行研究。

本规范保留了多个属性,作为潜在的扩展点。尽管一些实施者对这些属性表示了兴趣,但将其纳入本规范被认为为时过早。重要的是要注意,本规范并未定义这些属性。因此,实施者需谨慎使用这些属性,因为这些属性的使用被视为实验性的。

实施者可以使用这些属性,但预期它们及其含义在规范性定义过程中可能会发生变化。实施者不应在没有公开披露的规范描述其实现方式的情况下使用这些属性。

为了避免在使用以下属性时发生冲突,实施者必须在与保留属性相关的值中指定type属性。有关添加类型信息的更多信息,请参见 4.5类型

保留属性 描述 confidenceMethod 该属性用于指定验证者可以使用的一种或多种方法,以提高他们对可验证凭证或可验证表述中某属性的值准确性的信心。关联的词汇表 URL必须https://www.w3.org/2018/credentials#confidenceMethodrenderMethod 该属性用于指定将凭证呈现为视觉、听觉、触觉或其他格式的一种或多种方法。关联的词汇表 URL必须https://www.w3.org/2018/credentials#renderMethod.

与本规范定义的扩展点以及本节定义的保留扩展点相关的非官方规范列表可以在可验证凭证扩展中找到。目录中指向保留扩展点的项目被视为实验性的。

有许多数字凭证格式并未原生使用本文件提供的数据模型,但与本规范中的许多概念是一致的。在本文件发布时,这些数字凭证格式的示例包括 JSON 网络令牌 (JWTs), CBOR 网络令牌 (CWTs), JSON 高级电子签名 (JAdES), ISO-18013-5:2021 (mDLs), 匿名凭证 (AnonCreds), Gordian 信封 真实链式数据容器 (ACDCs)。

如果概念上与数字凭证格式一致,可以根据本节中的规则转换为符合规范的文档,则它们被认为"兼容W3C可验证凭证生态系统"。建议规范作者在记录使其兼容可验证凭证生态系统的转换时遵循以下规则。转换规范应当—

注意 : 什么构成了可验证凭证?

请读者注意,只有当数字凭证是符合规范的文档并使用至少一种安全机制时,才被视为与W3C可验证凭证生态系统兼容,如本规范中的相应要求所述。虽然有些社区可能会将一些不符合规范的文档的数字凭证格式称为“可验证凭证”,但这并不能使该数字凭证符合本规范。

在表达可验证凭证时(例如在表述中),确保一个可验证凭证中的数据不会被误认为是另一个可验证凭证中的相同数据是非常重要的。例如,如果拥有两个可验证凭证,每个凭证中都包含以下形式的对象:{"type": "Person", "name": "Jane Doe"},则无法确定这两个对象是否在描述同一个人。换句话说,在没有确认它们讨论的是相同实体和/或属性的情况下合并两个可验证凭证中的数据,可能会导致数据集损坏。

为了确保不同可验证凭证中的数据不会被意外混合使用,引入了可验证凭证图的概念,以封装每个可验证凭证。对于简单的可验证凭证,即当 JSON-LD 文档包含一个凭证(可能还附带相关证明)时,此图即为默认图。对于表述,每个与表述verifiableCredential属性关联的值都是一个单独的名为 VerifiableCredentialGraph 的命名图,图中包含单个可验证凭证封装式可验证凭证

使用这些在执行 JSON-LD 处理时会产生具体影响,它能够正确分隔一个图中的节点标识符与另一个图中的节点标识符。如果实施者将输入限制为特定应用的 JSON-LD 文档,则在合并一个可验证凭证的数据与另一个可验证凭证的数据时也需要注意,例如当两个可验证凭证中的credentialSubject.id相同时,但对象可能包含前文所述的 “Jane Doe” 形式的对象。在没有使用全局标识符(如 URL)的 id属性的情况下,不应合并看似具有相似属性的对象。

4.12 保护机制中所述,实施者可以使用多种策略来保护符合规范的文档。为了最大限度地提高实用性和互操作性,想要创建新的符合规范的文档的规范作者可以根据本节提供的指导进行编写。

安全机制规范必须记录能够为符合规范的文档提供内容完整性保护的规范性算法。算法可以是通用性质的,也 可以用于保护符合规范的文档以外的数据。

安全机制规范必须提供验证算法,该算法返回已保护的符合规范的文档中的信息,且不包含任何安全机制信息,如proof或 JOSE/COSE头参数和签名。验证算法可以返回其他有用信息(例如,在验证或调试时),如安全机制的详细信息。验证算法必须提供一个接口,接收媒体类型(字符串inputMediaType)和输入数据(字节序列映射inputData)。安全机制规范可以提供除本文件中指定的算法和接口之外的算法和接口。验证算法返回的验证结果至少包含以下项目

boolean verified
如果验证成功,则验证状态的值为true,否则为false
map verifiedDocument
一个仅包含成功保护的信息的文档。
string mediaType
[RFC6838]中定义的媒体类型。

安全机制规范应当为通过URL引用的任何对验证至关重要的信息提供完整性保护。可以实现此保护的机制在 5.3 相关资源的完整性和附录 B.1 基础上下文中进行了讨论。

创建新类型嵌入式证明的安全机制规范必须指定一个属性,将可验证凭证可验证表述证明图关联。对安全机制的要求如下:

嵌入式安全机制可以使用[VC-DATA-INTEGRITY]中定义的proof属性。

安全机制规范应当在可验证凭证扩展文档的安全机制部分中注册该安全机制。

3. 核心数据模型4. 基本概念5. 高级概念 中描述的数据模型,是可验证凭证可验证表述的规范结构表示。所有语法都是该数据模型在特定格式中的表示。本节规定了数据模型如何在 JSON-LD 中序列化为application/vcapplication/vp,它们分别是可验证凭证可验证表述的基础媒体类型。尽管只提供了 JSON-LD 的语法映射,应用程序和服务可以使用任何其他能够映射回application/vcapplication/vp的数据表示语法(如 XML、YAML 或 CBOR)。由于验证校验要求是以数据模型为依据定义的,所有序列化语法都必须确定性地转换为数据模型以进行处理、校验或比较。

在此规范中,属性值的预期数量以及用于存储这些值的数据类型可能会根据属性的不同而变化。如果存在,以下属性表示为单个值:id4.4 标识符)、issuer4.7 签发者)、以及 validFrom/validUntil4.9 有效期)。所有其他属性,如果存在,可以表示为单个值或值的数组。

本规范使用JSON-LD 1.1来序列化本规范中描述的数据模型。JSON-LD 之所以有用,是因为它能够表达基于图的数据模型,该模型是可验证凭证的基础,它还支持机器可读的语义,并且在扩展数据模型时也非常有用(参见3. 核心数据模型5.2 可扩展性)。

JSON-LD 是一种基于 JSON 的格式,用于序列化关联数据。关联数据使用资源描述框架(RDF)[RDF11-CONCEPTS] 建模。RDF 是一种用于建模陈述图的技术。每个陈述都是一个单一的主体 → 属性 → 值(也称为实体 → 属性 → 值)关系,这在本规范中被称为声明。JSON-LD 是一种技术,它允许使用符合 JSON 习惯的表达方式来表达 RDF,使得熟悉 JSON 的开发者能够编写应用程序,将 RDF 作为 JSON 来使用。更多细节请参见JSON-LD 与 RDF 的关系

一般来说,本文档中描述的数据模型和语法使得开发者可以将可验证凭证大体上视为 JSON 文档,允许他们将示例稍作修改后复制粘贴到他们的软件系统中。这种方法的设计目标是提供低门槛的入门体验,同时确保不同软件系统之间的全球互操作性。本节描述了一些用于实现这一点的 JSON-LD 特性,这些特性可能大多数开发者都不会注意到,但细节实现者可能会感兴趣。本规范使用的JSON-LD 1.1中最值得注意的特性包括:

为了提高互操作性,本规范限制了数据模型的 JSON-LD 表示形式。使用application/vcapplication/vp媒体类型表示数据模型时,JSON-LD 压缩文档形式必须被使用。

正如第 6.3 特定类型的凭证处理中所详述的,一些软件应用程序可能不会执行通用的 JSON-LD 处理。符合规范的文档作者被建议注意,如果在@context 值中使用JSON-LD关键字全局影响 可验证凭证可验证表述中的值,例如通过设置@base@vocab关键字中的一个或两个,可能会降低互操作性。例如,在执行特定类型凭证处理且不希望@base和/或@vocab值在@context值中表达的实现中,设置这些值可能会导致对@context值的JSON Schema测试失败。

为了增强互操作性,强烈建议符合规范的文档作者不要使用在执行特定类型凭证处理时不易检测到的 JSON-LD 特性。这些特性包括:

虽然本规范警告不要使用@vocab,但该功能还是有其合理用途,例如便于实验、开发和本地化部署。 如果应用程序开发人员希望在生产中使用@vocab(建议不要使用), 以减少术语碰撞并充分利用语义互操作性的优势,那么请他们理解: 任何@vocab的使用都将禁用“未定义术语”错误报告,并且以后的使用将覆盖以前的任何@vocab声明。@vocab的不同值可能会改变文档中包含的信息的语义, 因此了解这些变化是否会以及如何影响正在开发的应用程序非常重要。

使用JSON-LD 1.1时,可以创建列表、数组,甚至列表的列表。 我们鼓励那些在需要列表和数组的使用案例中希望使用 RDF 语义的人, 遵循JSON-LD 1.1 中关于列表的指导

通常情况下,JSON 数组是有序的,而JSON-LD数组除非使用了@list关键字,否则是无序的。

注意 : 数组顺序可能不重要

虽然可以通过执行特定类型的凭证处理来使用此数据模型,但那些使用数组的人需要意识到, 除非遵循了上述指导,否则在 JSON-LD 中数组中元素的顺序是无法保证的。 这可能会导致意外的行为。

如果 JSON 结构或顺序对您的应用程序很重要, 我们建议您通过特定于您使用案例的@context将此类元素标记为@json。下面展示了这样一个声明的示例。

示例 33: 一个将矩阵定义为嵌入式 JSON 数据结构的 @context 文件
{
  "@context":
    {
      "matrix": {
        "@id": "https://website.example/vocabulary#matrix",
        "@type": "@json"
      }
    }
}

当在下面的例子中使用上述上下文, 通过在@context属性中包含https://website.example/matrix/v1上下文时,credentialSubject.matrix中的值保留了其 JSON 语义; 二维矩阵中所有元素的确切顺序被保留。

示例 34: 内嵌 JSON 数据结构的可验证凭证
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2",
    "https://website.example/matrix/v1"
  ],
  "id": "http://university.example/credentials/1872",
  "type": [
    "VerifiableCredential",
    "ExampleMatrixCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "matrix": [
      [1,2,3,4,5,6,7,8,9,10,11,12],
      [1,1,1,1,1,1,1,1,0,0,0,0],
      [0,0,1,1,1,1,1,1,1,0,0,0]
    ]
  }
}

媒体类型,如[RFC6838]中所定义,用于识别表达可验证凭证的语法以及其它有用的处理指南。

在本规范中用于表达数据模型的语法应该通过媒体类型来识别, 并且在定义或使用媒体类型与可验证凭证结合时, 应遵循本节所概述的约定。

与核心数据模型相关的媒体类型有两种,已在 C. IANA 考虑因素 部分列出:application/vcapplication/vp

application/vcapplication/vp媒体类型并不意味着任何特定的安全机制, 而是旨在与安全机制结合使用。 需要应用安全机制来保护这些媒体类型的完整性。 无论使用哪种媒体类型进行通信,都不要假定内容是安全的。

本节为非规范性内容。

有时,开发者或系统可能会使用低精度的媒体类型来传递可验证凭证可验证表述。使用低精度媒体类型的原因包括:

建议实现者在能够从负载中确定预期媒体类型的情况下,不要抛出错误,前提是所使用的媒体类型在给定协议中是可接受的。例如,如果一个应用程序只接受符合application/vc媒体类型相关规则的负载,但负载标记为application/jsonapplication/ld+json,应用程序可能会执行以下步骤来确定负载是否也符合更高精度的媒体类型:

  1. 将负载解析为JSON文档。
  2. 确保@context属性的第一个元素与https://www.w3.org/ns/credentials/v2匹配。
  3. 如果 JSON 文档包含一个顶级type属性,其中包含一个VerifiablePresentation元素,则假定为application/vp媒体类型。仍然期望执行额外的后续检查(根据本规范)以确保负载表达了一个符合规范的可验证表述
  4. 如果 JSON 文档包含一个顶级type属性,其中包含一个VerifiableCredential元素,则假定为application/vc媒体类型。仍然期望执行额外的后续检查(根据本规范)以确保负载表达了一个符合规范的可验证凭证

只要可能,建议实现者对本规范定义的所有负载使用最精确(最高精度)的媒体类型。还建议实现者认识到,用较低精度的媒体类型标记的负载并不意味着该负载不符合用更高精度类型标记所需的规则。同样,用更高精度的媒体类型标记的负载也不意味着该负载将满足与媒体类型相关的要求。无论其关联的媒体类型如何,预期接收负载的接收者应执行适当的检查,以确保负载符合其在给定系统中使用的要求。

HTTP 客户端和服务器在accept 头部以及指示内容类型时,使用与可验证凭证可验证表述相关的媒体类型。实现者需注意,HTTP服务器可能会忽略accept头部并返回另一种内容类型,或者返回如415 Unsupported Media Type(不支持的媒体类型)这样的错误代码。

本节为非规范性内容。

由于JSON 可以用来表达不同类型的信息,特定JSON文档的消费者只有拥有能够将该文档与其他可能的表达方式区分开来的上下文信息时,才能正确解释作者的意图。帮助进行这种解释的信息可以完全在JSON文档之外,也可以从文档内部链接。压缩的JSON-LD 文档包括一个@context属性,该属性在内部表达或链接到上下文信息以表达声明。这些特性使得可以编写通用处理器将JSON-LD文档从一个上下文转换到另一个上下文,但如果消费者接收到的JSON-LD文档已经使用了他们期望的上下文和形状,这就不需要了。JSON-LD文档的作者,如可验证凭证签发者,需要提供适当的JSON-LD 上下文并遵循这些规则,以促进互操作性。

下面的文本帮助消费者了解如何确保JSON-LD文档在他们应用程序已经理解的上下文和结构中表达,这样他们就不需要转换它以消费其内容。值得注意的是,这并不意味着消费者完全不需要理解任何上下文;相反,消费应用程序只需要理解一组选定的上下文和文档结构,以便与之工作,而不是其他。签发者可以发布上下文和有关其可验证凭证的信息,以帮助不使用通用处理器的消费者,就像可以对任何其他JSON格式数据进行的操作一样。

通用JSON-LD处理被定义为一种使用JSON-LD软件库来处理符合规范的文档,执行各种转换机制。特定类型的凭证处理被定义为一种较轻量级的处理符符合规范的文档的机制,它不需要JSON-LD 软件库。一些可验证凭证的消费者只需要消费具有特定类型的凭证。这些消费者可以使用特定类型的凭证处理,而不是通用处理。特定类型的凭证处理可能适用的场景包括,但不限于,以下情况:

也就是说,只要正在消费或生产的文档是符合规范的文档,就允许进行特定类型的凭证处理

如果希望进行特定类型的凭证处理,建议实现者遵循以下规则:

确保与@context属性相关的所有值都处于预期的顺序,上下文文件的内容与每个文件已知的良好加密哈希值相匹配,并且领域专家认为内容适用于预期的用例。

使用带有 JSON Schema 的静态上下文文件是实现上述规则的一种可接受方法。 这可以确保在执行特定类型的凭证处理时,适当的术语识别、类型确定和顺序。

上述规则保证了通过@context机制在两种处理机制之间实现语义互操作性, 将字面 JSON 键映射到 URIs。 虽然通用 JSON-LD 处理可以使用其算法中提供的先前未见的@context值来验证所有术语是否正确指定, 但执行特定类型凭证处理的实现仅接受实现预先设计为理解的特定@context值, 从而在不调用任何 JSON-LD API 的情况下实现相同的语义。 换句话说,通过以一种导致相同符合规范文档语义的方式使用@context, 明确说明了数据交换发生的上下文,以适用于两种处理机制。

本节包含实现可用于执行验证等常见操作的算法。以算法形式表述的一致性要求采用了《基础设施标准d》[INFRA]中的规范性概念。有关实现要求的更多指导,请参阅《基础设施标准》中的“算法一致性”部分。

注意: 实现者可以包含额外的检查、警告和错误。

建议实现者注意,本节中的算法包含了实现用于测试符合本规范的最低限度的检查集。预期实现会提供额外的检查,以报告对开发者有帮助的警告,协助调试潜在问题。同样,实现可能会提供额外的检查,可能导致报告新类型的错误,以阻止有害内容。这些额外的检查可能会被集成到本规范的未来版本中。

本节包含了一个算法,符合规范的验证者实现在验证可验证凭证可验证表述必须执行该算法。此算法接收媒体类型(string inputMediaType)和安全数据(byte sequenceinputData)并返回一个包含以下内容的映射

验证算法如下:

  1. 通过执行以下步骤,确保安全机制已正确保护符合标准的文档:
    1. 通过使用inputMediaType和《可验证凭证扩展》中的安全机制部分, 或其他实现已知的机制,设置verifyProof函数,以确定在验证安全机制时使用哪个密码学套件。verifyProof函数必须实现5.13“安全机制规范”中描述的接口。
    2. 如果verifyProof函数期望一个字节序列,将inputMediaType和inputData提供给算法。如果verifyProof函数期望一个映射,将inputMediaType和将JSON字节解析为Infra值的结果提供给算法。将result设置为调用verifyProof函数的结果。如果调用成功,result将包含status、document、mediaType、controller、controlledIdentifierDocument、warnings和errors属性。
    3. 如果result.status设置为false,则在result.errors中添加一个CRYPTOGRAPHIC_SECURITY_ERROR
  2. 如果result.status设置为true,则确保result.document是一个符合规范的文档。如果不是,将result.status设置为false,从result中移除document属性,并在result.errors中至少添加一个MALFORMED_VALUE_ERROR。也可以包括其他警告和错误以帮助任何调试过程。
  3. 返回result。

验证安全机制的状态以及验证输入文档是否为符合规范的文档的步骤,可以与上述提供的顺序不同, 只要实现在遇到相同无效输入时返回错误即可。实现可能产生与上述描述不同的错误。

当实现在处理文档时检测到异常,可以使用ProblemDetails 对象向其他软件系统报告问题。 这些对象的接口遵循[RFC9457]来编码数据。ProblemDetails对象由以下属性组成:

type
type属性必须存在,其值必须是一个URL,用于标识问题的类型。
title
title属性应提供一个简短但具体的、供人类阅读的问题字符串。
detail
detail属性应提供一个更长的、供人类阅读的问题字符串。

本规范定义了以下问题描述类型:

https://www.w3.org/TR/vc-data-model#PARSING_ERROR
解析输入时出现错误。
https://www.w3.org/TR/vc-data-model#CRYPTOGRAPHIC_SECURITY_ERROR
文档的安全机制检测到自文档创建以来其内容已被修改;检测到潜在的篡改。请参阅 7.1 验证
https://www.w3.org/TR/vc-data-model#MALFORMED_VALUE_ERROR
与特定属性相关联的值格式错误。 属性的名称和属性的路径应在ProblemDetails对象中提供。请参阅7.1 验证
https://www.w3.org/TR/vc-data-model#RANGE_ERROR
提供的值超出了关联值的预期范围,例如数组的给定索引值大于数组的当前大小。

实现可以通过指定其他类型或属性来扩展ProblemDetails对象。有关使用此机制的进一步指导,请参阅[RFC9457]中的“扩展成员”部分。

本节为非规范性内容。

本节详细说明了将可验证凭证数据模型部署到生产环境中的一般隐私考虑因素和具体的隐私影响。

本节为非规范性内容。

要认识到隐私的范围从匿名到强识别各不相同这一点很重要。根据不同的使用场景,人们对他们愿意提供的信息以及可以从中推导出的信息有不同的舒适度水平。

图13 隐私范围从匿名到完全识别

隐私解决方案是特定于用例的。例如,许多人在购买酒精时更愿意保持匿名,因为规定仅是为了验证购买者是否超过特定年龄。相比之下,当药房根据医疗专业人员为患者开出的处方配药时,法律要求药房对开方者和患者的身份进行更严格的识别。没有任何一种隐私保护方法适用于所有使用情况。

注意: 年龄证明可能对某些用例来说是不够的。

即使是那些在购买酒精时想要保持匿名的人,也可能需要提供照片身份证明,以便向商家提供适当的保证。商家可能不需要知道你的名字或任何其他细节,只需知道你超过了特定年龄,但在许多情况下,简单的年龄证明可能不足以满足法规要求。

可验证凭证数据模型致力于支持完整的隐私范围,并不在任何特定交易的正确匿名水平上采取哲学立场。接下来的部分将指导那些希望避免对隐私不利的具体场景的实施者。

本节为非规范性内容。

本规范描述的生态系统中存在各种信任关系。使用网络浏览器的个人相信网络浏览器(也称为用户代理)不会将其个人信息上传到数据中介,从而维护了这种信任;同样,在本规范描述的生态系统中扮演各种角色的实体也相信代表这些角色运行的软件。例如:

上述例子并不全面,这些角色中的用户也可以期待他们使用的软件能够提供各种其他功能来实现他们的目标。简而言之,用户期望软件的运行符合用户的最佳利益;任何违反这一期望的行为都会破坏信任,并可能导致软件被更可信的替代品取代。强烈鼓励开发者创建能够维护用户信任的软件。此外,还鼓励他们加入审计功能,使用户或受信任的第三方能够验证软件的运行是否符合他们的最佳利益。

读者须知,有些软件,比如为单一验证者和多个持有者提供服务的网站, 可能同时充当这两个角色的用户代理,但并不总是能够同时在所有当事方的最佳利益中运作。 例如,假设一个网站检测到多个持有者中有人试图欺诈性地使用可验证凭证。在这种情况下,它可能会将这种异常报告给验证者,这可能被认为不符合所有持有者的最佳利益,但符合验证者以及任何没有犯下此类违规行为的持有者的最佳利益。当软件以这种方式运作时,必须通过诸如网站使用政策等机制明确指出软件是在为谁的最佳利益服务,这一点至关重要。

本节为非规范性内容。

存储在可验证凭证credential.credentialSubject属性中的数据在与验证者共享时容易受到隐私侵犯。个人身份识别数据, 如政府颁发的标识符、邮寄地址或全名,可以很容易地用来确定、跟踪和关联实体。即使是看似不具个人身份识别性的信息, 如出生日期和邮政编码的组合,也具有强大的关联和去匿名化能力。

强烈建议持有者使用的软件开发者在持有者共享这类特征的数据时提醒他们。 强烈建议签发者在可能的情况下提供保护隐私的可验证凭证——例如,通过发行ageOver可验证凭证而不是dateOfBirth可验证凭证, 以供验证者在想要确定实体是否至少 18 岁时使用。

由于可验证凭证通常包含个人身份识别信息(PII), 强烈建议开发者在使用机制存储和传输可验证凭证时保护数据,防止那些不应该访问它的人访问。 可以考虑的机制包括传输层安全(TLS)或其他在传输过程中加密数据的手段, 以及在可验证凭证静态时保护数据的加密或访问控制机制。

通常,建议个人假设可验证凭证,像大多数物理凭证一样,在共享时会泄露个人身份识别信息。为了对抗这种泄露, 需要精心设计可验证凭证及其安全机制以防止关联。有专门设计用来保护个人身份识别信息不泄露的可验证凭证。鼓励个人和开发者选择这些凭证类型,而不是那些没有设计来保护个人身份识别信息的凭证。

本节为非规范性内容。

可验证凭证可能包含可用于关联个人身份的长期标识符。 这些标识符包括主体标识符、电子邮件地址、政府颁发的标识符、组织颁发的标识符、地址、医疗关键信息以及许多其他长期标识符。鼓励持有者软件的开发者检测可验证凭证中可能用于关联个人身份的标识符,并在他们共享此信息之前警告持有者。本节的其余部分详细阐述了有关使用长期标识符的指导。

主体可验证凭证通过id属性来识别,该属性定义在 4.4 标识符一节中,并在例如credentialSubject.id属性等地方使用。用于识别主体的标识符,当标识符是长期存在的或在多个网络域中使用时,会增加关联风险。属于这一类别的其他类型的标识符包括电子邮件地址、政府颁发的标识符和组织颁发的标识符。

同样,披露凭证标识符(如示例 3所示)可能导致多个验证者,或签发者验证者串通,以关联持有者的情况。

为了降低关联风险,鼓励持有者使用由签发者提供的支持在可验证表述中选择性披露相关联标识符的可验证凭证。这种方法期望持有者生成标识符,甚至可能通过盲签名等技术允许在不让签发者知晓的情况下隐藏标识符,同时仍然保持标识符嵌入在可验证凭证中并经过签名。

建议安全机制规范的制定者通过设计他们的技术来避免使用无法选择性披露的相关联标识符,从而避免启用基于标识符的关联。

如果在一个可验证凭证系统中需要强烈的反关联特性,标识符必须满足以下一个或多个标准:

本节为非规范性内容。

可验证凭证的内容是通过安全机制进行保护的。 当表示安全机制的值在多个会话或域中保持不变时,它们会带来更大的关联风险。 这些值的例子包括:

当需要强烈的反关联特性时,鼓励签发者生成可验证凭证,其中签名值和元数据可以为每次可验证表述重新生成。这可以通过支持不可关联披露的技术实现,例如数据完整性 BBS Cryptosuites v1.0规范。在可能的情况下,鼓励验证者优先选择使用这项技术的可验证表述,以增强持有者主体的隐私。

本节为非规范性内容。

不同的扩展点,如第4. 基础概念和第5. 高级概念中描述的,如果只有相对较少的签发者使用特定的扩展类型或类型的组合,可能会无意中或不情愿地充当关联机制。例如,使用某些特定国家独有的加密方法、特定司法管辖区特有的撤销格式, 或特定地区使用的凭证类型,可以作为减少持有者在向验证者选择性披露信息时可能期望的匿名性的机制。

鼓励签发者在发行用于匿名使用的可验证凭证时,通过限制可能减少持有者匿名性的扩展类型,来最小化基于元数据的关联风险。 最可取的是全球采用的凭证类型、扩展和技术分析,其次是国家使用的; 只有本地使用的最不可取。

本节为非规范性内容。

互联网和网络上存在一些可验证凭证之外的机制,它们用于跟踪和关联个人。这些机制包括互联网协议(IP)地址跟踪、网络浏览器指纹识别、永久性 cookie、广告网络追踪器、移动网络位置信息以及应用内全球定位系统(GPS)API。使用可验证凭证无法阻止这些其他追踪技术的使用;相反,将这些技术与可验证凭证一起使用可能会揭示新的可关联信息。例如,将出生日期与 GPS 位置结合起来,可以在多个网站上强烈关联到一个特定的个人。

尊重隐私的系统应该旨在防止其他追踪技术与可验证凭证的结合。在某些情况下,可能需要在代表持有者传输可验证凭证的设备上禁用追踪技术。

Oblivious HTTP 协议[RFC9458]是实施者在获取与可验证凭证可验证表述相关的外部资源时可以考虑使用的一种机制。Oblivious HTTP 协议允许客户端向源服务器发出多个请求,而该服务器无法将这些请求与该客户端关联, 甚至无法识别这些请求来自同一客户端,同时对用于转发消息的节点仅给予有限的信任。 Oblivious HTTP 协议是一种可以减少设备跟踪和指纹识别可能性的隐私保护机制。 以下是隐私保护的 HTTP 如何使生态系统参与者受益的一些具体示例。

本节为非规范性内容。

鼓励签发者可验证凭证中包含的信息限制在实现预期目的所需的最小集合,以便允许接收者在不同情况下使用它们,而不必披露比必要的更多的个人身份识别信息(PII)。避免在可验证凭证中放置 PII 的一种方法是使用一个抽象属性,这个属性能够满足验证者的需求,而不会提供关于主体过于具体的信息。

例如,本文档使用ageOver属性而不是特定的出生日期,后者会代表更敏感的个人身份识别信息(PII)。如果某个市场中的零售商通常要求购买者年龄超过一定岁数,那么在该市场中被信任的签发者可能会选择提供声称主体已满足该要求的可验证凭证,而不是提供包含客户生日声明可验证凭证。这种做法使个人客户能够在不披露比必要的更多 PII 的情况下进行购买。

本节为非规范性内容。

当在一个情境中披露的信息泄露到另一个情境时,就会发生隐私侵犯。为了防止这种侵犯,一个被广泛接受的最佳实践是验证者限制所请求和接收的信息,只保留对特定交易绝对必要的最少信息。包括美国的健康保险便携性与责任法案(HIPAA)和欧盟的通用数据保护条例(GDPR)在内的多个司法管辖区的规定,都要求采取这种数据最小化的方法。

对于可验证凭证,数据最小化对签发者意味着将可验证凭证的内容限制在潜在验证者预期使用所必需的最小范围。对于验证者,数据最小化意味着限制请求或要求获取服务的信息范围。

例如,一个包含驾驶员 ID 号码、身高、体重、生日和家庭住址的驾驶证,作为一个可验证凭证,包含了超出确认该人超过一定年龄所必需的信息。

签发者被认为最佳实践是将信息原子化或使用允许选择性披露的安全机制。例如,驾驶证的签发者可以发行一个包含驾驶证上出现的所有属性的可验证凭证,并允许持有者选择性地披露每个属性。它也可以发行更抽象的可验证凭证(例如,只包含ageOver属性的可验证凭证)。一种可能的调整方式是,签发者提供安全的 HTTP端点来检索一次性持有者凭证,这促进了可验证凭证的匿名使用。发现这种方法不切实际或不安全的实施者可能会考虑使用选择性披露方案,这些方案消除了在证明时间对签发者的依赖,并减少了签发者进行时间关联的风险。

我们敦促验证者只要求提供特定交易严格需要的信息。这一点很重要,至少有两个原因:

鼓励使用 持有者软件的实施者披露验证者请求的信息,允许持有者拒绝共享对于交易不必要的特定信息。使用持有者软件的实施者还被建议给予持有者访问与验证者共享的信息的日志,使持有者能够在他们认为自己受到信息过度索取或被迫共享比特定交易所需更多信息时,向当局提供这些信息。

注意: 最小限度的信息披露仍然可能导致特定的识别

虽然可以实践最小披露原则,但在单次会话或多次会话中的特定用例中,可能无法避免对个体的强识别。本文件的作者无法强调在现实世界场景中满足这一原则有多么困难。

本节为非规范性内容。

持有者凭证是一种增强隐私的信息,例如音乐会门票, 它使持有者有权获得特定资源,而无需披露敏感信息。 在低风险场景中,实体经常使用持有者凭证,其中多个持有者出示相同的可验证凭证并不是问题,或者不会导致巨大的经济或声誉损失。

作为持有者凭证可验证凭证之所以成为可能,是因为没有指定主体标识符,这个标识符是使用嵌套在credentialSubject属性中的id属性表达的。例如,以下可验证凭证是一个持有者凭证

{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/temporary/28934792387492384",
  "type": ["VerifiableCredential", "ExampleDegreeCredential"],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2017-10-22T12:23:48Z",
  "credentialSubject": {
    
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/temporary/28934792387492384",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2017-10-22T12:23:48Z",
  "credentialSubject": {
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2025-04-27T17:58:34Z",
    "verificationMethod": "did:key:zDnaebSRtPnW6YCpxAhR5JPxJqt9UunCsBPhLEtUokUvp87nQ",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z5gCBzvpHbsJoeuuy5Z54rKQwkGzBZkmapRZZAKKW4ervhBGGTaygnh4sBG6vV8MHGD8eKhXEmkXr487JwVhZ2WHQ"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/temporary/28934792387492384",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2017-10-22T12:23:48Z",
  "credentialSubject": {
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2025-04-27T17:58:34Z",
    "verificationMethod": "did:key:zDnaerJh8WwyBVVGcZKKkqRKK9iezje8ut6t9bnNChtxcWwNv",
    "cryptosuite": "ecdsa-sd-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0AhVhAOEMucTcwHIY19VxghifeZjhZGFI9buw5OmEiWzSpbStoG5arWcYX6NB2-ftSiNc_CMh-CemG3peCu8ZOrSCHVFgjgCQC1zlBPjThDb-LSIbpc3uzcrjmKdC3xyuQAM8DoT5zv3FYIP13m1SOplZJx47EsonA19WEGnwABCA4hlMlQS96LIQMhVhADxlyJM3iqf_jn__vvJ0KgjL5uKLmVSsOxTFUsIHJ82mS8DAo_WZUmDxMnCAjrrxPQXLaNdfcmqehQOLT4_oiiVhA74UxSBi3EedkNnN5F2WV_Hd1Pr1vPWA_Qx52meKAa0_FhKu-Gm8uk2fFxK28flIbUv5HVQgGT0nrSuSprE4JslhAGl8hwCBGr5KxrUVAcMZE3vW26KrrI6jMTDLPGb81b9-ILrXLIJKb_ZOcmLggwzgbyxE_hUDLL9b88aZ7tE4dOVhACerSusVIq25s-hjms5Ws4Uw3wmgRQp1lp228deojpcavN-n3FNe3AIBgHFbpK2SzdOzvraj-HVkMpQptXrGEhVhAujmfdq6faQbfYn4LUQCy_sDUr1WNbklcyg2XTDQKscMF0VAUU38d50UrmprSKbhrnZpgWMBFg4ibUco_HO4UToFnL2lzc3Vlcg"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/temporary/28934792387492384",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2017-10-22T12:23:48Z",
  "credentialSubject": {
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "verificationMethod": "did:key:zUC78GzFRA4TWh2mqRiKro1wwRb5KDaMJ3M1AD3qGtgEbFrwWGvWbnCzArkeTZCyzBz4Panr2hLaZxsXHiBQCwBc3fRPH6xY4u5v8ZAd3dPW1aw89Rra86CVwXr3DczANggYbMD",
    "cryptosuite": "bbs-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0ChVhQhlm-IXSzQAaXH0xW-NU1t3ikH2xt--sFY-DtoL44DiWf3qv-nuhCc36deovk3t1GLy9JeN-vdeth8XWKMGUcyA4eWD21lxYdvK5Qdzw07ytYQGd_DaMQQsoaryttl5TvxnFT-Vm4SkVx03K9qNJ4jhArdrHmhnEXifHmmlKM3zCnc0pq4l3ZkBkIESZ4DrQomVNYYJVTGbTfcflzyx41E-f9kSqmf10xYzxJrGfC7b7GPY8X7VjMT__ZKSuwdH-5jak-5gkjocsHI6oxIKlLrhW1Wh5yrDCH-QC823TS8NE9VGBzIFAfUt5qazGEcJ8CxeSPxFggOkuR5x7VvZAB-RbcqkcwxkQ7or0tsVOUTPlebfxRUQCBZy9pc3N1ZXI"
  }
}
Protected Headers
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/temporary/28934792387492384",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2017-10-22T12:23:48Z",
  "credentialSubject": {
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc+jwt

.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzL3RlbXBvcmFyeS8yODkzNDc5MjM4NzQ5MjM4NCIsInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJFeGFtcGxlRGVncmVlQ3JlZGVudGlhbCJdLCJpc3N1ZXIiOiJodHRwczovL3VuaXZlcnNpdHkuZXhhbXBsZS9pc3N1ZXJzLzE0IiwidmFsaWRGcm9tIjoiMjAxNy0xMC0yMlQxMjoyMzo0OFoiLCJjcmVkZW50aWFsU3ViamVjdCI6eyJkZWdyZWUiOnsidHlwZSI6IkV4YW1wbGVCYWNoZWxvckRlZ3JlZSIsIm5hbWUiOiJCYWNoZWxvciBvZiBTY2llbmNlIGFuZCBBcnRzIn19fQ .6xC1cZL-ht0EvN7nz2Zs81htECRBp_87csS2IRyRG41wp-4zW0US8rth2KZjQMhsuPy7s0yjVIRWFGb6TQRCdg

application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/temporary/28934792387492384",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2017-10-22T12:23:48Z",
  "credentialSubject": {
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc+cose

d28443a10128a05901a27b2240636f6e74657874223a5b2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f7632222c2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f6578616d706c65732f7632225d2c226964223a22687474703a2f2f756e69766572736974792e6578616d706c652f63726564656e7469616c732f74656d706f726172792f3238393334373932333837343932333834222c2274797065223a5b2256657269666961626c6543726564656e7469616c222c224578616d706c6544656772656543726564656e7469616c225d2c22697373756572223a2268747470733a2f2f756e69766572736974792e6578616d706c652f697373756572732f3134222c2276616c696446726f6d223a22323031372d31302d32325431323a32333a34385a222c2263726564656e7469616c5375626a656374223a7b22646567726565223a7b2274797065223a224578616d706c6542616368656c6f72446567726565222c226e616d65223a2242616368656c6f72206f6620536369656e636520616e642041727473227d7d7d58409ec236d42a81339288605ac9a750f8632dadc2d44bcaae49b2d1431f9d98fded1c01772494c84a0aab75b9ec527ce6dc3fbd4d7f913f6963549cb19c091be521

.eyJpYXQiOjE3NDU3NzY3MTQsImV4cCI6MTc0Njk4NjMxNCwiX3NkX2FsZyI6InNoYS0yNTYiLCJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy8xNCIsInZhbGlkRnJvbSI6IjIwMTctMTAtMjJUMTI6MjM6NDhaIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiZGVncmVlIjp7Im5hbWUiOiJCYWNoZWxvciBvZiBTY2llbmNlIGFuZCBBcnRzIiwiX3NkIjpbIl9BT1Y2UkQwSmFobzVaaUgxSUxNd0pXSlE3cS1ueWVveVhIQWoyeVdtUlkiXX19LCJfc2QiOlsiUG9aeVBTUGtzd1AyODdsRU5ZMDJHdzg1Q2NzMjYyWU5fVkZLSEFpOGZ3byIsIlY0Y0k4aDQ5VUt6em5UdGpMQV9NZ3hBblFoeWR0ME45OWVVdjBTZXJibDQiXX0 .71495BlH0xrBlHTp-Y2JqwvTx1u3nu8dS8eiXwxSF-TukGYmbZ0y74RxVQCZ046h7YK2OZ-FZjlVUAcTN0vLvQ ~WyJqVThiaS1zWHk1dzVKNUYtdlhNaUZ3IiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvdGVtcG9yYXJ5LzI4OTM0NzkyMzg3NDkyMzg0Il0~WyJlbXBLOFdGNDhHcW56ekVudTJNblV3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d~WyJnTnRsVmhfeVZyWm5aeEVXQUpyaFhRIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0~

声明: id

SHA-256 哈希: PoZyPSPkswP287lENY02Gw85Ccs262YN_VFKHAi8fwo

公开信息: WyJqVThiaS1zWHk1dzVKNUYtdlhNaUZ3IiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvdGVtcG9yYXJ5LzI4OTM0NzkyMzg3NDkyMzg0Il0

内容: [
  "jU8bi-sXy5w5J5F-vXMiFw",
  "id",
  "http://university.example/credentials/temporary/28934792387492384"
]

声明: type

SHA-256 哈希: V4cI8h49UKzznTtjLA_MgxAnQhydt0N99eUv0Serbl4

公开信息: WyJlbXBLOFdGNDhHcW56ekVudTJNblV3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d

内容: [
  "empK8WF48GqnzzEnu2MnUw",
  "type",
  [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ]
]

声明: type

SHA-256 哈希: _AOV6RD0Jaho5ZiH1ILMwJWJQ7q-nyeoyXHAj2yWmRY

公开信息: WyJnTnRsVmhfeVZyWm5aeEVXQUpyaFhRIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0

内容: [
  "gNtlVh_yVrZnZxEWAJrhXQ",
  "type",
  "ExampleBachelorDegree"
]

尽管持有者凭证能够增强隐私保护, 签发者在设计时仍需小心,以避免无意中披露超出持有者持有者凭证的预期信息。例如,在同一持有者凭证在多个网站上重复使用可能会使这些网站能够串通, 非法跟踪或关联持有者。同样,看似不具识别性的信息,如出生日期和邮政编码, 当在同一持有者凭证或会话中一起使用时,可以用来统计识别个人。

签发持有者凭证的签发者应确保这些凭证提供增强隐私的好处,包括:

如果软件检测到已发放或请求的持有者凭证包含敏感信息,或者两个或多个持有者凭证在一次或多次会话中的组合可能带来关联风险,持有者应当被警告。虽然检测所有关联风险可能是不可能的, 但某些风险肯定可以被检测到。

验证者不应请求已知会携带可用于非法关联持有者的信息的持有者凭证

本节为非规范性内容。

在处理可验证凭证时, 验证者会在依赖相关声明之前对其进行评估。这种评估可以用验证者进行验证所需的任何方式进行, 只要满足进行验证的验证者的要求。许多验证者会执行附录A.Validation中列出的检查以及各种特定的业务流程检查,例如:

执行这些检查的过程可能会导致信息泄露,从而引发持有者的隐私侵犯。例如,一个简单的操作, 比如检查一个配置不当的撤销列表,可能会通知签发者某个特定业务可能正在与持有者互动。这可能使得签发者能够在不知情的情况下串通关联个人。

敦促签发者在验证过程中不要使用可能引发隐私侵犯的机制, 比如每个凭证独有的凭证撤销列表。向持有者提供软件的组织应当在凭证包含可能导致验证过程中隐私侵犯的信息时发出警告。 验证者被敦促考虑拒绝那些产生隐私侵犯或导致低标准隐私实践的凭证

本节为非规范性内容。

持有者签发者里收到一个可验证凭证时,该可验证凭证需要被存储在某个地方(例如,在一个凭证存储库中)。持有者需要意识到可验证凭证中的信息可能是敏感的和高度个性化的, 这使其成为数据挖掘的主要目标。提供“免费”存储可验证凭证的服务可能会挖掘个人数据并将其出售给有兴趣建立个人和组织个性化档案的组织。

持有者需要了解他们凭证存储库的服务条款,特别是对于将可验证凭证存储在服务提供商那里的人,其服务条款中关于关联和数据挖掘保护的具体内容。

针对数据挖掘和特征分析的一些有效缓解措施包括使用:

除了上述缓解措施之外,民间社会和监管机构参与供应商分析和审计可以帮助确保对那些受到与他们最佳利益不一致的做法影响的个人,实施并执行法律保护措施。

本节为非规范性内容。

关于同一主体的两条信息往往比这两条信息的组合揭示了更多关于该主体的信息,即使是通过不同渠道传递的信息也是如此。 聚合可验证凭证带来了隐私风险,生态系统中的所有参与者都需要意识到数据聚合的风险。

例如,假设在多个会话中向同一个验证者提供了两个持有者凭证,一个是电子邮件地址,另一个说明持有者已超过 21 岁。该验证者现在拥有了一个唯一标识符(电子邮件地址)以及该个人的与年龄相关的(“超过 21 岁”)信息。现在,通过随时间泄露的越来越多的信息,很容易为持有者创建一个档案,不断地添加信息。多个网站也可能相互串通,进行此类凭证的聚合,从而导致隐私侵犯。

从技术角度看,防止信息聚合是一个具有挑战性的隐私问题。虽然新的加密技术(如零知识证明)被提出来作为解决聚合和相关性问题的方案,但长期存在的标识符和浏览器跟踪技术甚至击败了最先进的加密技术。

解决相关性或聚合对隐私的影响往往不是技术性的,而是政策驱动的。因此,如果持有者希望避免其信息被聚合,就需要在其传输的可验证表述,以及在向其传输可验证表述持有者验证者中表达这一点。

本节为非规范性内容。

尽管所有参与者都尽了最大努力来确保隐私,但使用可验证凭证可能会导致去匿名化和隐私损失。 当出现以下任何情况时,可能会发生这种关联:

在某种程度上,可以通过以下方法来减轻这种去匿名化和隐私损失:

不幸的是,这些缓解技术有时并不切实际,甚至与必要的使用不兼容。有时,关联是一种要求。

例如,在一些处方药监控计划中,监控处方的使用是一项要求。执法机构需要能够确认个人没有通过欺骗系统来获取多种受管制药物处方。这种对处方使用进行关联的法定或监管需求高于对个人隐私的关注。

可验证凭据还将用于有意识地在不同服务间关联个人。例如,当使用一个共同的角色登录多个服务时,每个服务上的所有活动都会被有意关联到同一个人。只要每个服务都以预期的方式使用相关性,这就不是隐私问题。

与使用可验证凭证相关的侵犯隐私行为发生在出示这些可验证凭证时,由此产生非预期或意想不到的相关性。

本节为非规范性内容。

法律程序可以迫使签发者持有者验证者向当局(如执法机构)披露私人信息。同样的私人信息也有可能因软件漏洞或安全故障而意外披露给未授权方。建议法律程序和合规制度的制定者起草指导方针,要求在私人信息被有意或无意披露给第三方时通知相关主体。建议软件服务提供商对于可能导致此类私人信息与第三方共享的已知情况,以及任何此类第三方的身份,保持透明。

本节为非规范性内容。

持有者选择与验证者共享信息时,可能是验证者恶意行事,要求提供可能损害持有者的信息。例如,验证者可能要求提供银行账户号码,然后这些信息可能与其他信息结合用来欺骗持有者或银行。

签发者应该努力使尽可能多的信息令牌化,这样如果持有者不小心将凭证传输给了错误的验证者,情况也不会是灾难性的。

例如,与其提供一个银行账号来检查个人的银行存款余额,不如提供一个令牌,使验证者能够检查余额是否超过一定数额。在这种情况下,银行可以向持有者发放一个包含余额检查令牌的可验证凭证。然后,持有者将这个可验证凭证包含在可验证表述中,并通过数字签名将令牌绑定到信用检查机构。然后,验证者可以将可验证表述用他们的数字签名包装起来,再交回给签发者动态检查账户余额。

采用这种方法,即使持有者与错误的人共享了账户余额令牌,攻击者也无法发现银行账户号码或账户的确切价值。此外,考虑到反签名的有效期限,攻击者只能获得令牌的访问权限几分钟。

本节为非规范性内容。

可验证凭证可验证演示中表达的数据很有价值,因为它们包含可信第三方(如签发者或个人(如持有者主体)的真实声明。这些数据的存储和可访问性可能会无意中为恶意行为者创建敏感数据的蜜罐。这些对手经常寻求利用这些敏感信息的水库,旨在获取并交换这些数据以获取经济利益。

建议签发者保留向持有者发放可验证凭证和管理这些凭证的状态与撤销所需的最少数据量。同样,建议签发者避免创建包含个人身份识别信息(PII)或其他敏感数据的公开可访问凭证。建议软件实施者使用鲁棒的许可和访问控制措施来保护可验证凭证,确保它们对未经授权的实体保持不可访问。

建议持有者使用在传输和静止状态下对数据进行适当加密的实施方案,并以无法轻易从硬件或其他设备中提取的方式保护敏感材料(如加密密钥)。进一步建议持有者仅在他们控制的设备上存储和操作数据,远离集中式系统,以减少数据遭受攻击或在攻击成功时被大规模盗窃的可能性。此外,鼓励持有者严格控制对其凭证和表述的访问,只允许那些有明确授权的人访问。

建议验证者只请求特定交易所需的数据,并且不保留超出任何特定交易需求的数据。

监管机构应重新考虑现有的审计要求,以便可以使用更好地保护隐私的机制来实现类似的执法和审计能力。例如,那些坚持收集和长期保留个人身份识别信息的审计导向型法规,如果这些信息后来被泄露并被攻击者访问,可能会对个人和组织造成伤害。本规范描述的技术使持有者能够更容易地证明自己和他人的属性,从而减少了验证者长期数据保留的需求。其他选择包括保留已收集和检查信息的日志,以及进行随机测试,以确保合规制度按预期运行。

本节为非规范性内容。

如第8.14 使用模式所述,使用模式可能与某些类型的行为相关。当持有者签发者不知情的情况下使用可验证凭证时,这种相关性就会部分减弱。不过,签发者可以通过使可验证凭证的有效期较短和自动更新来打破这种保护。

例如,ageOver可验证凭证有助于进入酒吧。如果签发者签发的这种可验证凭证的有效期很短,而且有自动续期机制,那么签发者就可以把持有者的行为关联起来,从而对持有者产生负面影响。

如果持有者反复使用有效期很短的凭证,可能会导致行为关联,那么为持有者提供软件的机构应该向他们发出警告。签发者应避免签发可使其对使用模式进行关联的凭证

本节为非规范性内容。

一个理想的尊重隐私的系统将只要求持有者披露与验证者互动所必需的信息。然后验证者记录披露要求已满足并丢弃任何披露的敏感信息。在许多情况下,像监管负担这样的竞争优先事项阻止了这种理想系统的采用。在其他情况下,长期使用的标识符阻止了单次使用。任何可验证凭证生态系统的设计者都应该努力使其尽可能尊重隐私,尽可能优先选择单次使用的可验证凭证

使用单次使用的可验证凭证提供了几个好处。第一个好处是给验证者的,他们可以确信可验证凭证中的数据是最新的。第二个好处是给持有者的,他们知道如果可验证凭证中没有长期使用的标识符,那么可验证凭证本身就不能用来在线跟踪或关联他们。最后,攻击者没有什么可偷的,这使得整个生态系统更安全。

本节为非规范性内容。

在理想的私人浏览情况下,不会泄露任何 PII。由于许多凭证都包含 PII,因此向持有者提供软件的组织应该警告他们,如果他们在私人浏览模式下使用凭证演示,这些信息就有可能被泄露。由于每个浏览器供应商对私人浏览的处理方式不同,而且有些浏览器可能不具备此功能,因此,重要的是,实施者不要依赖私人浏览模式来提供任何隐私保护。相反,建议实施者依靠其软件可直接使用的工具来提供隐私保证。

本节为非规范性内容。

可验证凭证依赖于对签发者的高度信任。持有者利用可能的隐私保护措施的程度往往在很大程度上取决于签发者对这些功能的支持。在许多情况下,利用零知识证明、数据最小化技术、不记名凭证、抽象声明和防止基于签名的相关性的隐私保护需要签发者的积极支持,他们需要将这些功能纳入他们签发的可验证凭证中。

必须指出的是,持有者不仅依赖于签发者的参与来提供有助于保护持有者主体隐私的可验证凭证功能,而且还依赖于签发者不故意破坏这些隐私保护。例如,签发者可以使用防止基于签名的关联的签名方案来签署可验证凭证。这将保护持有者在验证者之间共享签名值时不会被签名值关联。但是,如果签发者为每个签发的凭证创建一个唯一的密钥,那么签发者就有可能跟踪凭证的出示,而不管验证者是否能够这样做。

除了先前描述的签发者可能提供的隐私保护外,签发者需要意识到他们在发放凭证时使用的标识符和声明类型相关的数据可能泄露。一个例子是签发者发放的驾驶证揭示了他们拥有管辖权的地点以及主体的居住地。验证者可能会利用这一点,通过请求一个凭证来检查主体是否拥有驾驶执照,而实际上他们感兴趣的是关于凭证的元数据,例如哪个签发者发放了凭证,以及签发者可能泄露的间接信息,如主体的家庭住址。为了减轻这种泄露,签发者可能会使用通用标识符来掩盖特定位置的信息或其他敏感元数据;例如,使用州或国家级别的共享签发者标识符,而不是县级、城市、城镇或其他更小的行政区划级别的标识符。此外,验证者可以使用持有者证明机制来保护隐私,提供证明某个签发者存在于一组受信任实体中,而无需披露确切的签发者

本节为非规范性内容。

在处理本规范所述数据时,签发者持有者验证者应注意一些安全问题。忽视或不理解本节的含义可能会导致安全漏洞。

本节强调了一系列广泛的安全注意事项,但只是部分列举。强烈建议使用本规范所述技术的关键任务系统实施人员咨询安全和密码学专业人士,以获得全面指导。

本节为非规范性内容。

密码学可以保护本规范描述的数据模型的某些方面。对于实现者来说,了解用于创建和处理凭证表述的密码学套件和库非常重要。实现和审计密码学系统通常需要大量的经验。有效的红队演练也可以帮助从安全审查中消除偏见。

密码学套件和库有一定的使用寿命,最终会屈服于新的攻击和技术进步。生产质量的系统需要考虑这一点,并确保存在机制来轻松和主动地升级过期或破损的密码学套件和库,并使现有的凭证失效并替换它们。定期监控对于确保处理凭证的系统的长期可行性很重要。

本节为非规范性内容。

大多数用于保护可验证凭证可验证表述的数字签名算法的安全性,取决于它们的私有签名密钥的质量和保护。密码学密钥的管理涵盖了一个广泛而复杂的领域。对于全面的建议和深入的讨论,读者可以参考[NIST-SP-800-57-Part-1]。正如[FIPS-186-5] 和[NIST-SP-800-57-Part-1]中强烈建议的,私有签名密钥不应用于多个目的;例如,私有签名密钥不应用于同时用于加密和签名。

[NIST-SP-800-57-Part-1]强烈建议私人签名密钥和公共验证密钥有有限的加密期限,其中加密期限是“授权合法实体使用特定密钥或特定系统的密钥保持有效的时间跨度”。 [NIST-SP-800-57-Part-1]对不同密钥类型在不同条件下的加密期限提供了广泛的指导,并建议私人签名密钥的加密期限为一至三年。

为了应对潜在的私有密钥泄露问题,[NIST-SP-800-57-Part-1]提供了保护措施、降低损害和撤销的建议。 尽管本节主要关注私有签名密钥的安全性,[NIST-SP-800-57-Part-1]还强烈建议在使用所有验证材料之前确认其有效性。

本节为非规范性内容。

可验证凭证通常包含指向可验证凭证之外数据的URL。 存在于可验证凭证之外的链接内容(如图像、JSON-LD 扩展上下文、JSON Schema 和其他机器可读数据)不受防篡改保护,因为这些数据位于保护机制之外,无法受到可验证凭证的保护。

本规范的第5.3 相关资源的完整性提供了一个可选机制,用于确保外部资源内容的完整性。 对于不影响可验证凭证安全的外部资源,这个机制并不是必需的。然而,对于内容变化可能引入安全漏洞的外部资源,其实施至关重要。

实现者需要认识到与外部机器可读内容的未受保护 URL 相关的潜在安全风险。这些漏洞可能导致对它们的应用程序的成功攻击。在外部资源的更改可能危及安全的情况下,实现者将从采用本规范中概述的内容完整性保护机制中受益。

本节为非规范性内容。

本规范支持创建没有签名或证明的凭证。这些凭证类别通常适用于中间存储或自我声明的信息,类似于在网页上填写表单。 实现者应当注意,这些凭证类型是不可验证的,因为作者身份要么未知,要么不可信。

本节为非规范性内容。

数据模型本身并不能阻止中间人攻击(Man-in-the-Middle, MITM)重放攻击伪装攻击。 在线和离线使用场景都可能容易受到这些攻击,其中对手在传输或存储期间拦截、修改、重新使用和/或复制可验证凭证数据。

验证者可能需要确保它是可验证表述的预期接收者,而不是中间人攻击的目标。一 安全机制,如使用 JOSE 和 COSE保护可验证凭证 [VC-JOSE-COSE]和可验证凭证数据完整性 1.0VC-DATA-INTEGRITY],提供了指定表述的预期观众或域的选项,这可以帮助降低这种风险。

其他方法,如令牌绑定[RFC8471], 将对可验证表述的请求与响应绑定,可以帮助保护协议。任何未加密的协议都容易受到中间人攻击。

验证者可能希望限制可验证表述的使用次数。例如,多个人出示代表活动门票的相同可验证凭证,就可能获准进入活动现场,从门票签发者的角度看,这就破坏了门票的目的。为了防止这种重放攻击, 验证者要求持有者可验证表述中加入额外的安全措施。例如:

验证者可能有兴趣知道持有者是否被授权表述可验证表述中的声明。虽然数据模型概述了可验证凭证所需的结构和数据元素,但它不包括确定所表述凭证授权的机制。为了解决这个问题,实现者可能需要探索补充方法,例如将可验证凭证绑定到强大的认证机制上,或者在可验证表述中使用额外的属性以实现控制权的证明。

本节为非规范性内容。

签发者的最佳实践是将信息原子化或使用允许选择性披露的签名方案。在将信息原子化时,如果签发者没有以安全的方式进行, 持有人可能会以签发者无意的方式将来自不同权利要求凭证捆绑在一起。

考虑一个大学向个人发放两个可验证凭证。 每个凭证包含两个属性,当结合在一起时,表明该人在特定“部门”中的“角色”。例如,一对凭证可能指定“计算机系”的“教职员工”,而另一对可能表示“经济学系”的“研究生”。将这些可验证凭证原子化导致大学向个人发放了四个单独的凭证。每个凭证包含一个单一的指定:“教职员工”、“研究生”、“计算机系”或“经济学系”。然后,持有者可能会向验证者出示“教职员工”和“经济学系”的可验证凭证,这两者结合起来将构成一个虚假的声明

本节为非规范性内容。

可验证凭证包含高度动态的信息时,认真考虑有效期变得至关重要。发行可验证凭证有效期超出其预期用途可能会产生潜在的安全漏洞,这些漏洞可能被恶意行为者利用。有效期短于可验证凭证所表达信息预期使用的时间框架,会给持有者验证者带来负担。因此,为可验证凭证置适当的有效期,以适应使用案例和可验证凭证中包含的信息的预期生命周期,是十分重要的。

本节为非规范性内容。

在设备上存储可验证凭证如果设备丢失或被盗则会带来风险。攻击者获得此类设备的控制权可能会利用受害者的可验证凭证未经授权地访问系统。减轻这类攻击的方法包括:

此外,冒充可能以多种形式出现,包括实体试图否认其行为的情况。在可验证凭证领域提高信任和安全性不仅仅是防止冒充;它还涉及实施不可否认机制。这些机制巩固了实体对其行为或交易的责任,加强了问责制并遏制了恶意行为。实现不可否认性是一项多方面的努力,包括一系列技术,如安全机制、拥有权证明和旨在促进信任和可靠性的各种协议中的认证方案。

本节为非规范性内容。

确保实体的行为(如表述)与这些行为的预期目的之间保持一致是至关重要的。这涉及到拥有使用可验证凭证的授权,并以符合其指定范围和目标的方式使用凭证。在这种情况下,有两个关键方面:未经授权的使用和不恰当的使用。

实体使用可验证凭证可验证表述超出其预期目的,即属于未经授权的活动。未经授权使用的一种类别是违反保密性。考虑一个持有者可验证表述验证者分享以确定他们的年龄和居住状况。如果验证者随后在没有适当同意的情况下使用持有者的数据,例如将数据出售给数据经纪人,那将构成对数据的未经授权使用,违反了持有者在交易中可能期望的隐私权。

同样,签发者可以使用termsOfUse属性来指定持有者何时以及如何被允许和期望使用凭证持有者termsOfUse定义的范围之外使用凭证将被认为是未经授权的。

注意: 数字版权管理不在讨论范围内。

需要进一步研究以确定持有者如何在表述后断言和执行对其数据的授权使用。

虽然有效的加密签名和成功的状态检查标志着凭证的可靠性,但它们并不意味着所有凭证在所有情境下都是可以互换的。验证者还必须验证任何相关声明,同时考虑声明的来源和性质以及持有者呈现凭证的目的。

例如,在需要认证的医疗诊断的场景中,一个携带必要数据的自我声明凭证可能不足以证明其有效性,因为它缺乏来自权威医疗来源的有效性。为了确保凭证的适当使用,利益相关者需要在其预期应用的特定情境中评估凭证的相关性和权威性。

本节为非规范性内容。

可验证凭证中的数据可以包括可注入的代码或脚本语言代码。 可验证凭证的作者应避免包含此类内容,除非必要,并且在可能的情况下最大限度地减少相关风险。

例如,包含多种语言或注释的单个自然语言字符串通常需要额外的结构或标记才能正确呈现。像HTML这样的标记语言可以标记不同语言的文本跨度,或提供显示双向文本所需的内部字符串标记。还可以使用rdf:HTML数据类型在 JSON-LD 中准确编码这些值。

尽管可以将信息编码为 HTML,但由于以下原因,强烈建议实现者不要这样做:

如果实现者觉得他们需要使用HTML,或其他能够包含可执行脚本的标记语言来解决特定用例,建议他们分析攻击者如何使用标记来对标记的消费者发起注入攻击。这种分析应该伴随着对识别出的攻击的积极部署缓解措施,例如在没有访问网络能力的沙箱中运行 HTML渲染引擎。

本节为非规范性内容。

在处理本规范中描述的数据时,实施者应注意许多无障碍考量。与任何网络标准或协议的实施一样,忽视无障碍问题将导致很大一部分人群无法使用这些信息。遵循无障碍指南和标准(例如 [WCAG21])至关重要,以确保所有能力水平的人都能使用这些数据。这在建立使用密码学的系统时尤为重要,因为这些系统历来对辅助技术造成了困扰。

本节详细介绍了使用此数据模型时需要考虑的总体无障碍因素。

本节为非规范性内容。

目前使用的许多实体凭证,例如政府身份证,都存在较差的无障碍特征,包括但不限于:字体过小、依赖小型高分辨率图像,以及对视障人士缺乏便利设施。

在利用此数据模型创建可验证凭证时,建议数据模型设计者采用数据优先的方法。例如,在使用数据或图形图像来描述凭证之间进行选择时,设计者应该以机器可读的方式表达图像的每个元素,例如机构名称或专业凭证, 而不是依赖观看者对图像的解读来传达此信息。数据优先方法更受青睐,因为它为构建针对不同能力人士的不同界面提供了基础要素。

本节为非规范性内容。

建议开发者在发布符合本规范的数据时,注意一些国际化方面的考量。与任何网络标准或协议的实现一样,忽略国际化会导致数据难以跨越不同的语言和社会环境进行生产和消费,从而限制规范的适用性,并显著降低其作为标准的价值。

强烈建议开发者阅读《网络上的字符串:语言和方向元数据》文档 [STRING-META],该文档由W3C国际化行动发布,详细阐述了提供可靠的文本元数据以支持国际化的必要性。若需了解国际化考量的最新信息,也建议开发者阅读《可验证凭证实施指南》[VC-IMP-GUIDE] 文档。

本节概述了在使用此数据模型时需要考虑的一般国际化因素,旨在重点介绍《网络上的字符串:语言和方向元数据》文档 [STRING-META]中开发者可能感兴趣的特定部分。

强烈建议数据发布者阅读《网络上的字符串:语言和方向元数据》文档 [STRING-META]中关于跨语法表达的部分,以确保语言和基本方向信息的表达能够跨越多种表达语法,例如 [JSON-LD11]、[JSON]和 CBOR [RFC7049]。

表示带有语言标签和可选的特定基本方向的文本字符串时,通常的设计模式是使用以下标记模板。

"myProperty": {
  "@value": "The string value",
  "@language": "LANGUAGE"
  "@direction": "DIRECTION"
}

当使用语言值对象代替字符串值时,该对象必须包含一个@value属性,其值为字符串;并且应当包含一个@language属性,其值为符合 [BCP47] 中定义的语言标签的字符串;可以包含一个@direction属性,其值为 [JSON-LD11] 中@direction属性定义的基本方向字符串。语言值对象不得包含@value@language@direction之外的其他键。

以上设计模式的应用实例是用英文表达书名,但没有明确指定文字方向。

"title": {
  "@value": "HTML and CSS: Designing and Creating Websites",
  "@language": "en"
}

下一个例子采用了类似的标题,以阿拉伯语书写,其基本书写方向是从右到左。

"title": {
  "@value": "HTML و CSS: تصميم و إنشاء مواقع الويب",
  "@language": "ar",
  "@direction": "rtl"
}

注意: 正确渲染国际化文本是具有挑战性的。

以上文字如果没有明确的语言和方向指示,很有可能会被错误地渲染成从左到右的排列方式, 因为很多系统会根据文本字符串的第一个字符来判断文本方向基本方向

多个语言值对象可以作为该属性的数组值提供:

"title": [
  {
    "@value": "HTML and CSS: Designing and Creating Websites",
    "@language": "en"
  },
  {
    "@value": "HTML و CSS: تصميم و إنشاء مواقع الويب",
    "@language": "ar",
    "@direction": "rtl"
  }
]
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://achievement.example/multilingual/v2"
  ],
  "type": [ "VerifiableCredential", "ExampleAchievementCredential" ],
  "issuer": {
    "id": "did:example:2g55q912ec3476eba2l9812ecbfe",
    "type": "Profile"
  },
  "validFrom": "2024-03-14T22:32:52Z",
  "validUntil": "2025-01-01T00:00:00Z",

  "credentialSubject": {
    "type": [ "AchievementSubject" ],
    "achievement": {
      "id": "urn:uuid:9a652678-4616-475d-af12-aca21cfbe06d",
      "type": [ "Achievement" ],
      "name": {
        "en": "Successful installation of the Example application",
        "es": "Instalación exitosa de la aplicación Example"
      },
      "criteria": {
        "narrative": {
          "es": "Instaló exitosamente de la aplicación Example.",
          "en": "Successfully installed the Example application."
        }
      }
    }
  }
}

每个自然语言字符串属性值的语言和文本方向应当提供,方式可以是针对每个属性值的语言值结构,或是为整个凭证中所有值提供默认语言和基本方向。优先推荐使用逐值语言值结构,因为使用文档默认值可能导致下游处理器执行基于 JSON-LD扩展的转换,而这通常是可选的。有关更多信息,请参见字符串国际化 部分的 [JSON-LD11] 规范。没有与其关联的语言的自然语言字符串值应当被视为语言值未定义(语言标签为 "und")。没有与其关联的基本方向的自然语言字符串值应当被视为方向值为"auto"。

本节为非标准性内容。

虽然本标准未提供可验证凭证或可验证表述验证过程的合规标准,但读者可能会对该数据模型中的信息在验证者验证过程中如何使用感到好奇。本节捕捉了工作组就验证者预计如何使用本标准中属性进行的一系列讨论。

本节为非标准性内容。

验证者持有者请求一个或多个可验证凭证时,他们可以指定希望接收的凭证类型。凭证类型,以及每种类型和其每个声明的验证模式,均由规范作者定义,并发布在诸如可验证凭证扩展等地方。

凭证的类型通过类型属性表示。特定类型的可验证凭证包含特定的属性(这些属性可能会深层嵌套),可用于确定表述是否满足 验证者执行的一系列处理规则。通过请求特定类型的 可验证凭证验证者能够从 持有者那里收集来自每个 颁发者的特定信息,以帮助 验证者确定与 持有者的互动下一阶段。

验证者请求特定类型的 可验证凭证时,将会有一组与该类型关联的强制性和可选 声明。如果强制性 声明未包含在内, 验证者可验证凭证的验证将失败,并且任何 声明不与特定类型关联将被忽略。换句话说, 验证者将对收到的 可验证凭证进行输入验证,并将根据凭证类型规范拒绝格式错误的输入。

本节为非标准性内容。

在持有者提供的 可验证凭证中,每个 credentialSubjectid 属性关联的值标识了 验证者主体。如果 持有者也是 主体,则 验证者可以通过 持有者验证元数据持有者进行身份验证。然后, 验证者可以使用 持有者生成的签名对 持有者进行身份验证,该签名包含在 可验证表述中。id 属性是可选的。 验证者可以使用 其他属性可验证凭证中唯一标识一个 主体

本节为非规范性内容。

issuer属性相关的值用于识别验证者颁发者

issuer属性相关的元数据可通过第7.1 节“验证”中定义的验证者访问。该元数据包括用于通过安全机制保护每个可验证凭证可验证表述的验证方法的已验证控制器的识别,控制器通常是相应的issuerholder

某些生态系统可能在颁发者与验证方法控制器之间具有更复杂的关系,并可能使用已验证颁发者的列表,作为上面描述的映射的补充或替代。

本节为非规范性内容。

holder属性相关的值用于识别验证者持有者

通常,与持有者相关的元数据(通过holder属性的值识别)可以被验证者获取或检索。例如,持有者可以发布包含用于保护可验证表述验证材料的信息。这些元数据在检查可验证表述上的证明时使用。一些加密标识符在标识符本身中包含所有必要的元数据。在这些情况下,不需要额外的元数据。其他标识符则使用可验证数据注册表,其中此类元数据会自动发布供验证者使用,无需持有者采取任何额外操作。

有关主题持有者的其他示例,请参见《可验证凭证实施指南 1.0》《可验证凭证使用案例》

注意: 验证是应用业务规则的过程

验证是验证者应用业务规则以评估可验证凭证特定使用的适当性的过程。

验证者可能需要根据复杂的业务规则验证给定的可验证表述;例如, 验证者可能需要确信持有者可验证凭证的主题是同一实体。在这种情况下,以下因素可以为验证者提供合理的信心,即在所包含的可验证凭证中关于该标识符所表达的声明实际上是关于当前表述者的:

本节为非规范性内容。

validFrom属性的值预计在验证者可以接受的范围内。例如,验证者可以检查某个可验证凭证的有效期开始时间是否在未来。

本节为非规范性内容。

确保在验证可验证凭证可验证表述中信息未被篡改所使用的安全机制称为加密证明。加密证明有多种类型,包括但不限于数字签名和零知识证明。一般来说,在验证加密证明时,实施者应确保:

通常,在验证数字签名时,实施者应确保:

本节为非规范性内容。

验证者期望validFromvalidUntil属性的值在某个范围内。例如, 验证者可以检查可验证凭证的有效期结束时间是否不在过去。由于某些凭证即使在其原始有效期过期后仍然可能对次要用途有用,因此使用validFromvalidUntil属性表示的有效期始终被视为验证的一部分,而验证是在验证之后进行的。

本节为非规范性内容。

如果credentialStatus属性可用,则期望验证者根据可验证凭证credentialStatus类型定义和验证者自己的状态评估标准来评估可验证凭证的状态。例如,验证者可以确保可验证凭证的状态不是“因原因被颁发者撤回”。

本节为非规范性内容。

如果credentialSchema属性可用,则期望验证者根据可验证凭证credentialSchema类型定义和验证者自己的模式评估标准来评估可验证凭证的模式。例如,如果credentialSchematype值为 [VC-JSON-SCHEMA],则验证者可以确保凭证的数据符合给定的 JSON Schema。

本节为非规范性内容。

本节为非规范性内容。适用性是指可验证凭证中的自定义属性是否适合验证者的目的。例如,如果验证者需要确定某个主题是否年满 21 岁,他们可能依赖于特定的birthdate属性,或更抽象的属性,如ageOver

颁发者受到验证者的信任,以作出相关声明。例如,特许快餐连锁店的某个分店信任其特许经营总部所做的折扣券声明。颁发者在可验证凭证中表达的政策信息应受到持有者验证者的尊重,除非他们愿意承担忽略该政策的责任。

本节为非规范性内容。

目前普遍称为“人工智能”和/或“机器学习”的系统可能能够以满足或超过人类表现水平执行复杂任务。这可能包括获取和使用可验证凭证等任务。例如,将这些任务用于区分人类与自动化“机器人”活动,如今天常用的CAPTCHA,可能因此无法提供足够或可接受的保护。

使用可验证凭证和/或对其内容进行验证的安全架构实施者应考虑机器参与者的存在,例如今天常称为“人工智能”的系统,这些系统可能合法地持有可验证凭证以便与其他系统交互。实施者还应考虑威胁行为者如何将此类“人工智能”系统与可验证凭证结合,从而在与其系统交互时冒充人类。这些系统可能包括但不限于社交媒体、选举、能源分配、供应链和自动驾驶汽车等全球基础设施。

实现必须将位于https://www.w3.org/ns/credentials/v2的基础上下文值视为已检索; 以下值为基础上下文文件的十六进制编码SHA2-256摘要值:59955ced6697d61e03f2b2556febe5308ab16842846f5b586d7f1f7adec92734。可以通过从现代Unix命令接口行运行以下命令来确认上述密码摘要: curl -s https://www.w3.org/ns/credentials/v2 | openssl dgst -sha256

强烈建议应用程序使用相同机制或功能上等效的机制来确保端到端安全。预期如果资源的密码哈希值与预期哈希值不匹配,实施将抛出错误。

在进行JSON-LD 扩展转换为RDF等操作时,应用上述基础上下文以及任何@context属性中的其他上下文和值的实现,预期不会出现任何错误。如果执行这些操作并导致错误,则可验证凭证可验证表述必须导致验证失败。

注意: 如果检测到哈希值变化,请参阅勘误。

在本标准中,与加密哈希值相关联的文件发生变化的可能性极小。然而,如果在规范中发现关键勘误,并且需要进行更正以确保生态系统的稳定性,则加密哈希值可能会发生变化。因此,文件的HTTP缓存时间未设置为无限,并且建议实施者在检测到加密哈希值变化时检查勘误。

本节提醒确保在验证可验证凭证可验证表述时,验证者拥有与颁发者持有者在获取凭证表述时所持有的信息的一致性的重要性。这些信息至少可能包括:

  1. 凭证本身的内容,这些内容通过使用安全机制在可验证凭证可验证表述中得到保护。有关更多信息,请参见第4.12节《安全机制》
  2. 凭证中内容的意义依赖于与外部URL的链接,例如JSON-LD上下文,可以通过使用本地静态副本或文件的加密摘要进行保护。有关更多细节,请参见第5.3节《相关资源的完整性》

验证者需注意,从凭证,中引用的其他数据,例如通过URL链接的资源,默认情况下并不具备加密保护。最佳实践是确保对任何对可验证凭证安全至关重要的URL提供相同类型的保护,这可以通过使用永久缓存的文件和/或加密哈希来实现。最终,了解任何链接外部内容的加密摘要使验证者能够确认该内容与颁发者持有者所意图的内容相同。

依赖RDF词汇处理的实现必须确保在加载JSON-LD序列化时,基础上下文中使用的以下词汇URL最终解析为以下文件,这些文件是规范性的。实现可以使用词汇文件的其他语义等效序列化。每个JSON-LD文档都提供了加密哈希,以确保开发者可以验证每个文件的内容是否正确。

JSON-LD 文档和哈希值 URL: https://www.w3.org/2018/credentials#
解析后的文档: https://www.w3.org/2018/credentials/index.jsonld
SHA2-256 摘要: 9db03c54d69a8ec3944f10770e342b33e58a79045c957c35d51285976fc467c4 URL: https://w3id.org/security#
解析后的文档: https://w3c.github.io/vc-data-integrity/vocab/security/vocabulary.jsonld
SHA2-256 摘要: 689af6f393b55c9b35c37cfad59d13cc421e0c89ce97cf0e8234f9b4a3074104

可以通过在现代UNIX类操作系统命令行界面中运行如下命令来确认上述列出的加密摘要,将<DOCUMENT_URL>替换为相应的值: curl -sL -H "Accept: application/ld+json" <DOCUMENT_URL> | openssl dgst -sha256

注意: schema.org定期更改,但被认为是稳定的。

实施者和文档作者可能会注意到,schema.org的加密摘要未提供。这是因为schema.org词汇表会定期更改;任何提供的摘要在发布几周内都可能过时。工作组讨论了这个问题,并得出结论,schema.org中的词汇术语在本规范中使用,多年来一直保持稳定,其语义意义极不可能发生变化。

本标准中为处理器和其他受益于此类定义的规范定义了以下基本类:

基本类 目的 CredentialEvidence 作为放入证据属性的特定证据类型的超类。 CredentialSchema 作为放入凭证架构属性的特定架构类型的超类。 CredentialStatus 作为放入凭证状态属性的特定凭证状态类型的超类。 ConfidenceMethod 作为放入置信度方法属性的特定置信度方法类型的超类。 RefreshService 作为放入凭证刷新属性的特定刷新服务类型的超类。 RenderMethod 作为放入渲染方法属性的特定渲染方法类型的超类。 TermsOfUse 作为放入使用条款属性的特定使用条款类型的超类。

本节定义了本标准中使用的数据类型。

sriString数据类型与一个值相关联,用于提供资源的完整性信息,采用在子资源完整性规范中指定的方法。sriString数据类型定义如下:

表示此数据类型的URL
https://www.w3.org/2018/credentials#sriString
词法空间
请参见[SRI]规范中定义完整性属性的ABNF 语法,了解字符串格式的限制。
值空间
一(可能为空)列表的(alg,val)对,其中alg标识哈希函数,val是一个标准数学概念中的整数。
词法到值的映射
词法空间的任何元素都通过遵循基于[SRI]规范中ABNF 语法解析元数据算法映射到值空间。
规范映射
规范映射由词法到值的映射组成。

本节为非规范性内容。

可验证凭证可验证表述数据模型利用了多种底层技术,包括[JSON-LD11]和 [VC-JSON-SCHEMA]。本节将对@contexttypecredentialSchema属性进行比较,并涵盖一些可以更具体地使用数据模型这些功能的用例。

type属性用于唯一标识其出现的可可验证凭证的类型,即指示可验证凭证包含的声明集。该属性及其值VerifiableCredential在其值集中是强制性的。虽然包含一个额外值以描绘此可验证凭证的唯一子类型是良好实践,但允许在数组中省略或包含额外的类型值。许多验证者将请求特定子类型的可验证凭证,因此省略子类型值可能会使验证者更难告知持有者所需的可验证凭证。当可验证凭证具有多个子类型时,在type属性中列出所有子类型是合理的。在[JSON-LD11]的可验证凭证表示中使用type属性能够强制执行可验证凭证的语义,因为机器能够检查语义。通过[JSON-LD11],该技术不仅描述了声明集的分类,还传达了图中属性子图的结构和语义。在[JSON-LD11]中,这表示图中节点的类型,这就是为什么某些可验证凭证的[JSON-LD11]表示将在可验证凭证中的多个对象上使用type属性的原因。

@context属性的主要目的是,从[JSON-LD11]的角度来看,以机器可读的方式传达可验证凭证中数据的含义和术语定义。@context属性用于将可验证凭证可验证表述中的属性的全球唯一URL映射为短格式别名,使[JSON-LD11]表示更易于人类阅读。从[JSON-LD11]的角度来看,此映射还允许凭证中的数据在机器可读数据网络中建模,通过增强可验证凭证可验证表述中的数据如何与更大机器可读数据图相关联。这对于告知机器如何将数据的含义与生态系统中其他数据关联是有用的,在该生态系统中各方无法协调。该属性的第一个值为https://www.w3.org/ns/credentials/v2,且是强制性的。

由于@context属性用于将数据映射到图数据模型,而[JSON-LD11]中的type属性用于描述图中的节点,因此在组合使用这两个属性时,type属性变得更加重要。例如,如果在解析的@context资源中未包含type属性,这可能导致声明被丢弃和/或在可验证凭证的生成和消费过程中其完整性不再受到保护。或者,这可能导致在生成或消费可验证凭证期间出现错误。这将取决于实现的设计选择,今天的实现中同时使用了这两种路径,因此在使用[JSON-LD11]表示的可验证凭证可验证表述时,关注这些属性非常重要。

credentialSchema属性的主要目的是定义可验证凭证的结构,以及每个属性值的数据类型。credentialSchema对于定义可验证凭证中的一组声明的内容和结构非常有用,而[JSON-LD11]和可验证凭证中的@context最好仅用于传达数据的语义和术语定义,并且也可以用于定义可验证凭证的结构。

虽然可以使用一些[JSON-LD11]特性来暗示可验证凭证的内容,但通常不建议使用@context来约束数据模型的数据类型。例如,"@type": "@json"对于保持语义开放而不是严格定义是有用的。如果实现者希望约束凭证中声明的数据类型,这可能是危险的,且不应使用。

credentialSchema@context属性结合使用时,生产者和消费者可以对可验证凭证可验证表述的预期内容和数据类型更有信心。

本节为非规范性内容。

本节将提交给互联网工程指导小组(IESG)进行审查、批准和注册到IANA。

本标准注册了application/vc媒体类型,专门用于标识符合可验证凭证格式的文档。

请注意,虽然可验证凭证格式使用JSON-LD约定,但对于可验证凭证的实现有许多约束和附加要求,这些要求证明了使用特定媒体类型的必要性。

此媒体类型可以用于封装证明,以表示封装的有效载荷。

凭证应为有效的JSON-LD 文档。使用application/vc媒体类型提供的可验证凭证应在文档主体中具有所有JSON-LD 1.1上下文信息,包括对外部上下文的引用。通过http://www.w3.org/ns/json-ld#context HTTP Link Header 连接的上下文(请参见JSON-LD 1.1的第6.1节)将被忽略。

本标准注册了application/vp媒体类型,专门用于标识符合可验证表述格式的文档。

请注意,尽管可验证表述格式采用了JSON-LD约定,但在可验证表述的实现上有许多约束和附加要求,证明了使用特定媒体类型的必要性。

此媒体类型可用于封装证明,以表示封装的有效载荷。

表述应为有效的JSON-LD文档。使用application/vp媒体类型提供的可验证表述应在文档主体中包含所有JSON-LD 1.1上下文信息,包括对外部上下文的引用。通过http://www.w3.org/ns/json-ld#contextHTTP 链接头部连接的上下文(参见 [JSON-LD11]的第6.1节)将被忽略。

本节为非规范性内容。

图 14图 9的一种变体:一个可验证表述,涉及两个可验证凭证,并基于 [VC-DATA-INTEGRITY]使用嵌入式证明。每个可验证凭证图均连接到其各自独立的证明图;通过verifiableCredential属性将可验证表述连接到可验证凭证图表述证明图表示可验证表述图可验证凭证图以及从可验证凭证图链接的证明图的数字签名。在这种情况下,完整的可验证表述包含六个信息

图14 图 9的一种变体:与可验证表述相关的信息,涉及两个可验证凭证,并使用基于可验证凭证数据完整性1.0 [VC-DATA-INTEGRITY]的嵌入式证明

图 15显示与图 14相同的可验证表述,但使用基于[VC-JOSE-COSE]的封装式证明。每个可验证凭证图包含一个单独的EnvelopedVerifiableCredential实例,通过data:URL[RFC2397]引用通过封装证明保护的可验证凭证。

图 15 图 10的一种变体:与可验证表述相关的信息,涉及两个可验证凭证,并使用基于JOSE[VC-JOSE-COSE]的封装证明

本节包含自 v2.0 版本规范发布为 W3C 推荐标准以来所做的主要变更。

v2.0 第二个候选推荐标准发布以来的变更:

v2.0 首次候选推荐标准发布以来的变更:

v1.1 推荐标准发布以来的变更:

v1.0 推荐标准发布以来的变更:

本节为非规范性内容。

工作组感谢以下个人,不仅因为他们对本文档内容的贡献,还因为他们在这 标准社区中的辛勤工作,这些工作推动了众多不同意见之间的变革、讨论和共识: David Chadwick、Dave Longley、Ted Thibodeau Jr.、Brent Zundel、Ivan Herman、Joe Andrieu 和 Gabe Cohen。

该规范的工作得到了RebootingtheWebofTrust 社区的支持,该社区由Christopher Allen、Shannon Appelcline、Kiara Robles、Brian Weller、Betty Dhamers、Kaliya Young、Manu Sporny、Drummond Reed、Joe Andrieu、Heather Vescent、Kim Hamilton Duffy、Samantha Chase、Andrew Hughes、Will Abramson、Erica Connell、Eric Schuh、 Zaïda Rivai 和 Shigeya Suzuki 推动。在 Phil Windley、Kaliya Young、Doc Searls 和 Heidi Nobantu Saul 的支持下,Internet 身份研讨会的参与者也通过许多旨在教育、 讨论和改进该规范的工作会议来帮助改进这项工作。

工作组还感谢我们的工作组主席DanBurnett、MattStone、BrentZundel、Wayne Chang 和 Kristina Yasuda,以及我们的W3C员工联系人 Kazuyuki Ashimura 和 Ivan Herman,感谢他们在多个W3C标准化周期过程中对小组的专业管理和坚定指导。 我们还要感谢W3C Credentials 社区组的主席 Christopher Allen、Joe Andrieu、 Kim Hamilton Duffy、Heather Vescent、Wayne Chang、Mike proorock、Harrison Tang、 Kimberly Wilson Linson 和 Will Abramson,他们监督了纳入本规范的许多工作项目的孵化。

本规范得部分工作得到了美国国土安全部科学技术局的资助,合同号为 HSHQDC-17-C-00019, 70RSAT20T00000010/P00001, 70RSAT20T00000029, 70RSAT2- 1T00000016/P00001, 70RSAT23T00000005, 70RSAT23C00000030, 70RSAT23R00000006,70RSAT24T00000014, 70RSAT22T00000001, 以及国家科学基金会(NSF 22572)的资助。 本规范的内容不一定反映美国政府的立场或政策,也不应推断出任何官方认可。

工作组感谢以下个人审查并提供有关规范的反馈(按名字的字母顺序排列,如 果没有提供姓名,则按其Github用户名排列):

Abhishek Mahadevan Raju, Adam C. Migus, Addison Phillips, Adrian Gropper, Aisp-GitHub, Alen Horvat, Alexander Mühle, AlexAndrei98, Allen Brown, Amy Guy, Andor Kesselman, Andres Paglayan, Andres Uribe, Andrew Hughes, Andrew Jones, Andrew Whitehead, Andy Miller, Anil John, Anthony Camilleri, Anthony Nadalin, Benjamin Collins, Benjamin Goering, Benjamin Young, Bert Van Nuffelen, Bohdan Andriyiv, Brent Zundel, Brian Richter, Bruno Zimmermann, caribouW3, cdr, Chaoxinhu, Charles "Chaals" McCathieNevile, Charles E. Lehner, Chris Abernethy, Chris Buchanan, Christian Lundkvist, Christine Lemmer-Webber, Christoph Lange, Christopher Allen, Christopher Lemmer Webber, ckennedy422, Clare Nelson, confiks, Dan Brickley, Daniel Buchner, Daniel Burnett, Daniel Hardman, Darrell O'Donnell, Dave Longley, David Ammouial, David Chadwick, David Ezell, David Hyland-Wood, David I. Lehn, David Janes, David Waite, Denis Ah-Kang, Denisthemalice, Devin Rousso, Dmitri Zagidulin, Dominique Hazael-Massieux, Drummond Reed, Emmanuel, enuoCM, Eric Elliott, Eric Korb, Eric Prud'hommeaux, etaleo, Evstifeev Roman, Fabricio Gregorio, Filip Kolarik, Gabe Cohen, Ganesh Annan, George Aristy, glauserr, Golda Velez, Grace Huang, Grant Noble, Greg Bernstein, Gregg Kellogg, Heather Vescent, Henry Andrews, Henry Story, Ian B. Jacobs, Ilan, Isaac Henderson, isaackps, Iso5786, Ivan Herman, Jace Hensley, Jack Tanner, James Schoening, Janina Sajka, Jan Forster Cognizone, Jeff Burdges, Jeffrey Yasskin, Jim Masloski, Jim St.Clair, Joe Andrieu, Joel Gustafson, Joel Thorstensson, John Tibbetts, Jonathan Holt, José San Juan, Juan Caballero, Julien Fraichot, Justin Richer, Kaan Uzdoğan, Kaliya Young, Kazuyuki Ashimura, Ken Ebert, Kendall Weihe, Kerri Lemoie, Kevin Dean, Kevin Griffin, Kim Hamilton Duffy, Konstantin Tsabolov, Kristijan Sedlak, Kristina Yasuda, Kyle Den Hartog, Lal Chandran, Lance, Lautaro Dragan, Leonard Rosenthol, Liam Missin, Liam Quin, Line Kofoed, Lionel Wolberger, Logan Porter, Lovesh Harchandani, Lukas J. Han, Mahmoud Alkhraishi, Maik Riechert, Manu Sporny, Marcel Jackisch, Mark Foster, Mark Harrison, Mark Moir, Markus Sabadello, Martin Thomson, Marty Reed, Matt Peterson, Matt Stone, Matthew Peterson, Matthieu Bosquet, Matti Taimela, Melvin Carvalho, Michael B. Jones, Michael Herman, Michael Lodder, Michael Richardson, Mike Prorock, Mike Varley, Mircea Nistor, MIZUKI Sonoko / Igarashi, nage, Nate Otto, Nathan George, Niclas Mietz, Niko Lockenvitz, Nikos Fotiou, Nis Jespersen, Oliver Terbu, Pat McBennett, Patrick St-Louis, Paul Bastian, Paul F. Dietrich, Paulo Jorge Q. Ferreira, Pelle Braendgaard, Pete Rowley, Phil Archer, Phillip Long, Pierre-Antoine Champin, Rajesh Rathnam, Ralph Swick, Renato Iannella, Reto Gmür, Reza Soltani, Richard Bergquist, Richard Ishida, Richard Varn, Rieks Joosten, RorschachRev, Ryan Grant, Samuel Müller, Samuel Smith, Sarven Capadisli, Sebastian Crane, Sebastian Elfors, Shawn Butterfield, Shigeya Suzuki, Sho Nakatani, Shuji Kamitsuna, Snorre Lothar von Gohren Edwin, Sten Reijers, Stephen Curran, Steve Huguenin, Steve McCown, Steven Rowat, Taro, tcibm, Ted Thibodeau Jr., Tim Bouma, Timo Glastra, Tobias Käfer, Tobias Looker, Tom Jones, Torsten Lodderstedt, Tzviya Siegman, Victor Dods, Vincent Kelleher, Vladimir Alexiev, Víctor Herraiz Posada, Wayne Chang, whatisthejava, Will Abramson, William Entriken, and Yancy Ribbens.

[i18n-glossary]
Internationalization Glossary. Richard Ishida; Addison Phillips. W3C. 17 October 2024. W3C Working Group Note. URL: https://www.w3.org/TR/i18n-glossary/
[INFRA]
Infra Standard. Anne van Kesteren; Domenic Denicola. WHATWG. Living Standard. URL: https://infra.spec.whatwg.org/
[JSON-LD11]
JSON-LD 1.1. Gregg Kellogg; Pierre-Antoine Champin; Dave Longley. W3C. 16 July 2020. W3C Recommendation. URL: https://www.w3.org/TR/json-ld11/
[JSON-LD11-API]
JSON-LD 1.1 Processing Algorithms and API. Gregg Kellogg; Dave Longley; Pierre-Antoine Champin. W3C. 16 July 2020. W3C Recommendation. URL: https://www.w3.org/TR/json-ld11-api/
[RFC2119]
Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. March 1997. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc2119
[RFC2397]
The "data" URL scheme. L. Masinter. IETF. August 1998. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc2397
[RFC6838]
Media Type Specifications and Registration Procedures. N. Freed; J. Klensin; T. Hansen. IETF. January 2013. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc6838
[RFC8174]
Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words. B. Leiba. IETF. May 2017. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc8174
[RFC9457]
Problem Details for HTTP APIs. M. Nottingham; E. Wilde; S. Dalal. IETF. July 2023. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc9457
[SRI]
Subresource Integrity. Devdatta Akhawe; Frederik Braun; Francois Marier; Joel Weinberger. W3C. 23 June 2016. W3C Recommendation. URL: https://www.w3.org/TR/SRI/
[URL]
URL Standard. Anne van Kesteren. WHATWG. Living Standard. URL: https://url.spec.whatwg.org/
[VC-DATA-INTEGRITY]
Verifiable Credential Data Integrity 1.0. Ivan Herman; Manu Sporny; Ted Thibodeau Jr; Dave Longley; Greg Bernstein. W3C. 15 May 2025. W3C Recommendation. URL: https://www.w3.org/TR/vc-data-integrity/
[VC-JOSE-COSE]
Securing Verifiable Credentials using JOSE and COSE. Michael Jones; Gabe Cohen; Michael Prorock. W3C. 15 May 2025. W3C Recommendation. URL: https://www.w3.org/TR/vc-jose-cose/
[XMLSCHEMA11-2]
W3C XML Schema Definition Language (XSD) 1.1 Part 2: Datatypes. David Peterson; Sandy Gao; Ashok Malhotra; Michael Sperberg-McQueen; Henry Thompson; Paul V. Biron et al. W3C. 5 April 2012. W3C Recommendation. URL: https://www.w3.org/TR/xmlschema11-2/
[BCP47]
Tags for Identifying Languages. A. Phillips, Ed.; M. Davis, Ed. IETF. September 2009. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc5646
[CID]
Controlled Identifiers v1.0. Michael Jones; Manu Sporny. W3C. 15 May 2025. W3C Recommendation. URL: https://www.w3.org/TR/cid-1.0/
[DEMOGRAPHICS]
Simple Demographics Often Identify People Uniquely. Latanya Sweeney. Data Privacy Lab. URL: https://dataprivacylab.org/projects/identifiability/paper1.pdf
[DID]
Decentralized Identifiers (DIDs) v1.0. Manu Sporny; Amy Guy; Markus Sabadello; Drummond Reed. W3C. 19 July 2022. W3C Recommendation. URL: https://www.w3.org/TR/did-core/
[ETSI-TRUST-LISTS]
Electronic Signatures and Infrastructures (ESI); Trusted Lists. ETSI. ETSI. ETSI Standard TS 119 612 V2.1.1 (2015-07). URL: https://www.etsi.org/deliver/etsi_ts/119600_119699/119612/02.01.01_60/ts_119612v020101p.pdf
[FIPS-186-5]
FIPS PUB 186-5: Digital Signature Standard (DSS). U.S. Department of Commerce/National Institute of Standards and Technology. 3 February 2023. National Standard. URL: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf
[JSON]
The JavaScript Object Notation (JSON) Data Interchange Format. T. Bray, Ed. IETF. December 2017. Internet Standard. URL: https://www.rfc-editor.org/rfc/rfc8259
[LD-BP]
Best Practices for Publishing Linked Data. Bernadette Hyland; Ghislain Auguste Atemezing; Boris Villazón-Terrazas. W3C. 9 January 2014. W3C Working Group Note. URL: https://www.w3.org/TR/ld-bp/
[LINKED-DATA]
Linked Data Design Issues. Tim Berners-Lee. W3C. 27 July 2006. W3C-Internal Document. URL: https://www.w3.org/DesignIssues/LinkedData.html
[NIST-SP-800-57-Part-1]
Recommendation for Key Management: Part 1 – General. Elaine Barker. National Institute of Standards and Technology. May 2020. URL: https://doi.org/10.6028/NIST.SP.800-57pt1r5
[RDF-SCHEMA]
RDF Schema 1.1. Dan Brickley; Ramanathan Guha. W3C. 25 February 2014. W3C Recommendation. URL: https://www.w3.org/TR/rdf-schema/
[RDF11-CONCEPTS]
RDF 1.1 Concepts and Abstract Syntax. Richard Cyganiak; David Wood; Markus Lanthaler. W3C. 25 February 2014. W3C Recommendation. URL: https://www.w3.org/TR/rdf11-concepts/
[RFC7049]
Concise Binary Object Representation (CBOR). C. Bormann; P. Hoffman. IETF. October 2013. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc7049
[RFC7159]
The JavaScript Object Notation (JSON) Data Interchange Format. T. Bray, Ed. IETF. March 2014. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc7159
[RFC7231]
Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content. R. Fielding, Ed.; J. Reschke, Ed. IETF. June 2014. Proposed Standard. URL: https://httpwg.org/specs/rfc7231.html
[RFC8471]
The Token Binding Protocol Version 1.0. A. Popov, Ed.; M. Nystroem; D. Balfanz; J. Hodges. IETF. October 2018. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc8471
[RFC9110]
HTTP Semantics. R. Fielding, Ed.; M. Nottingham, Ed.; J. Reschke, Ed. IETF. June 2022. Internet Standard. URL: https://httpwg.org/specs/rfc9110.html
[RFC9458]
Oblivious HTTP. M. Thomson; C. A. Wood. IETF. January 2024. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc9458
[SCHEMA-ORG]
Schema.org. W3C Schema.org Community Group. W3C. 6.0. URL: https://schema.org/
[STRING-META]
Strings on the Web: Language and Direction Metadata. Richard Ishida; Addison Phillips. W3C. 17 October 2024. W3C Working Group Note. URL: https://www.w3.org/TR/string-meta/
[VC-DATA-MODEL-2.0]
Verifiable Credentials Data Model v2.0. Ivan Herman; Michael Jones; Manu Sporny; Ted Thibodeau Jr; Gabe Cohen. W3C. 15 May 2025. W3C Recommendation. URL: https://www.w3.org/TR/vc-data-model-2.0/
[VC-DI-BBS]
Data Integrity BBS Cryptosuites v1.0. Greg Bernstein; Manu Sporny. W3C. 3 April 2025. CRD. URL: https://www.w3.org/TR/vc-di-bbs/
[VC-EXTENSIONS]
Verifiable Credential Extensions. Manu Sporny. W3C Verifiable Credentials Working Group. W3C Editor's Draft. URL: https://w3c.github.io/vc-extensions/
[VC-IMP-GUIDE]
Verifiable Credentials Implementation Guidelines 1.0. Andrei Sambra. W3C. 24 September 2019. W3C Working Group Note. URL: https://www.w3.org/TR/vc-imp-guide/
[VC-JSON-SCHEMA]
Verifiable Credentials JSON Schema Specification. Gabe Cohen; Orie Steele. W3C Verifiable Credentials Working Group. FPWD. URL: https://www.w3.org/TR/vc-json-schema/
[VC-OVERVIEW]
Verifiable Credentials Overview. Ivan Herman. W3C. 12 February 2025. W3C Working Group Note. URL: https://www.w3.org/TR/vc-overview/
[VC-USE-CASES]
Verifiable Credentials Use Cases. Shane McCarron; Joe Andrieu; Matt Stone; Tzviya Siegman; Gregg Kellogg; Ted Thibodeau Jr. W3C. 24 September 2019. W3C Working Group Note. URL: https://www.w3.org/TR/vc-use-cases/
[WCAG21]
Web Content Accessibility Guidelines (WCAG) 2.1. Michael Cooper; Andrew Kirkpatrick; Joshue O'Connor; Alastair Campbell. W3C. 12 December 2024. W3C Recommendation. URL: https://www.w3.org/TR/WCAG21/


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.5