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

W3C 工作草案

关于本文档的更多详细信息
本版本:
https://www.w3.org/TR/2026/WD-vc-data-model-2.1-20260913/
最新发布版本:
https://www.w3.org/TR/vc-data-model-2.1/
最新编辑草案:
https://w3c.github.io/vc-data-model/
历史记录:
https://www.w3.org/standards/history/vc-data-model-2.1/
提交历史
编辑:
Manu Sporny (Digital Bazaar) (v1.0 - v2.1)
Ted Thibodeau Jr (OpenLink Software) (v2.0 - v2.1)
Ivan Herman (W3C) (v2.0 - v2.1)
前任编辑:
Grant Noble (ConsenSys) (v1.0)
Dave Longley (Digital Bazaar) (v1.0)
Daniel C. Burnett (ConsenSys) (v1.0)
Brent Zundel (Evernym) (v1.0)
Kyle Den Hartog (MATTR) (v1.1)
Gabe Cohen (Block) (v2.0)
Michael B. Jones (受邀专家) (v2.0)
作者:
Manu Sporny (Digital Bazaar) (v1.0 - v2.1)
Dave Longley (Digital Bazaar) (v1.0 - v2.1)
David Chadwick (受邀专家) (v1.0 - v2.0)
Ivan Herman (W3C) (v2.0 - v2.1)
反馈:
GitHub w3c/vc-data-model (拉取请求新建议题未解决议题)
相关规范:
可验证凭证概述
可验证凭证数据完整性
使用 JOSE 和 COSE 保护可验证凭证
位串状态列表
可验证凭证呈现方法
可验证凭证置信度方法
认可实体
会议:
查看下一次 已安排的会议

摘要

可验证凭证是表达一组 声明 的特定方式,这些声明由签发者作出,例如驾驶证或教育证书。本 规范描述了可验证凭证的可扩展数据模型、 如何保护它们免遭篡改,以及一个用于 交换这些凭证的三方生态系统,该生态系统由签发者持有者、 以及验证者组成。本文档还涵盖了使用 本规范所述技术的生态系统在安全、隐私、 国际化和无障碍方面的各种注意事项。

本文档状态

本节说明本文档在 发布时的状态。当前W3C 出版物的列表以及本技术报告的最新修订版可以在 W3C 标准和草案 索引中找到。

随时欢迎对本规范提出意见。 请直接在 GitHub 上提交议题, 如果无法这样做,也可以将意见发送至 public-vc-comments@w3.org 。 (订阅存档)。

本文档由可验证凭证工作 组采用 推荐标准 轨道作为工作草案发布。

作为 工作草案发布并不意味着 W3C 及其成员认可本文档。

本文档是一份草案,可能随时被其他文档更新、取代或废弃。 除了作为正在进行的工作之外,不宜引用本文档。

本文档由一个依照 W3C 专利 政策运作的小组编制。 W3C 维护着一份 公开的所有专利披露列表, 其中列出了与该小组交付成果有关的专利披露; 该页面还包含 专利披露说明。任何确切 知晓某项专利,并认为该专利包含 必要权利要求的个人, 都必须依照 W3C 专利政策第 6 节披露相关信息。

本文档受 2025年8月18日 W3C 流程文档管辖。

1. 引言

本节为非规范性内容。

凭证是我们日常生活中不可或缺的一部分:驾驶证确认 我们驾驶机动车辆的能力;大学学位表明我们的教育 程度;政府签发的护照则在跨国 旅行时证明我们的公民身份。本规范提供了一种机制, 以加密安全、尊重隐私且可由机器验证的方式,在 Web 上表达这类凭证。这些 凭证在现实世界中使用时能为我们带来益处, 但 它们在 Web 上的使用仍难以实现。

目前仍难以在 Web 上以机器可读的方式表达学历、医疗保健 数据、金融账户详情以及其他经第三方验证的 个人信息。在 Web 上表达数字凭证所面临的挑战,妨碍了我们从中获得 与现实世界中的实体凭证所提供的 相同益处。

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

为本规范提供依据的用例和要求可参见 可验证 凭证用例 [VC-USE-CASES]。

1.1 什么是可验证 凭证?

本节为非规范性内容。

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

可验证凭证是信息的数字化表达 (即, 一个凭证,它是由一项或多项声明组成的集合,这些声明由 签发者作出),通过使用 第 4.12 安全机制节中所述的一种安全机制,可以使其具备可移植、防篡改的特性, 并可验证作者身份的真实性。实体凭证能够表示的任何信息,也都可以由数字 凭证表示,因而也可以由可验证凭证表示。使用 数字签名等技术,可以使可验证凭证比实体凭证更 易于察觉篡改,也更加可信。 通过使用可验证凭证条形码 v1.0, 实体凭证甚至可以 包含可验证凭证,从而获得这些相同的益处。

持有者可以从其持有的可验证凭证生成 可验证呈现,然后与 验证者共享这些可验证呈现,以证明自己拥有 具备特定特征的可验证凭证

可验证凭证可验证呈现都可以 快速传输,因此在远程建立信任时,它们比实体 凭证更加方便。

虽然本规范试图使数字 凭证更易于表达,但也力求在此目标与多项 隐私保护目标之间取得平衡。数字信息的持久性,以及 收集并关联不同数字数据来源的便利性, 构成了一项隐私问题,而使用可验证且易于 机器读取的凭证可能会使这一问题更加严重。此外,虽然 实体凭证使用的安全措施(例如全息图或 水印)至少为许多人所熟悉,但用于保护数字 凭证的加密机制可能难以被非专家 理解或评估。本文档 在隐私注意事项中概述了其中若干问题,而 可验证凭证数据模型威胁 模型则对这些问题进行了详细分析,并说明了每个问题的应对措施。 本文档还通篇提供了 使用零知识证明等隐私增强技术运用此数据模型的示例。

可验证凭证可验证呈现这两个术语中的“可验证”,是指 凭证呈现具备可由验证者进行验证的特征, 如本文档所定义。验证仅能确定 可验证凭证可验证呈现是其 签发者或呈现者作出的真实且当前有效的陈述;这并不意味着其中编码的 声明是真实的。在依赖这些声明之前, 验证者会另行进行确认: 即根据 自身政策确定签发者是否值得信任,可以作出这些声明, 以及这些声明是否适合验证者的目的。 附录 B. 确认进一步说明了这一过程。

1.2 生态系统概述

本节为非规范性内容。

本节说明在预期可验证凭证 能够发挥作用的生态系统中,核心参与者的角色及其相互关系。 角色是一种可以通过多种不同方式实现的抽象。 角色的分离表明了可能进行标准化的接口和 协议。本规范引入以下 角色:

持有者
实体通过持有一项或多项可验证凭证并据此生成可验证呈现而可以承担的一种角色。持有者 通常是其所持可验证凭证主体,但并非 总是如此。例如,护照的持有者通常就是该 护照所识别的人。持有者将其凭证存储在 凭证存储库中。持有者的示例包括 学生、员工和 客户。
签发者
实体可以通过对一个或多个 主体作出声明,使用这些声明创建可验证凭证,并 将该可验证凭证传输给持有者而承担的一种角色。例如,签发者 包括公司、非营利组织、行业协会、政府 和个人。
主体
声明所涉及的事物。主体的示例包括人类、 动物和物品。
验证者
实体通过接收一项或多项可验证凭证(可以包含在可验证呈现中)并对其执行 验证而承担的一种角色。验证可以确定 凭证呈现的真实性和 当前有效性。确定其中的 声明是否真实或可接受,则是一个称为 确认的独立过程,验证者会根据 自身政策执行该过程(请参见 附录 B. 确认)。验证者的示例包括核查 求职者学历凭证的雇主、核查 政府签发的身份证明凭证的安保人员,以及核查 访问者是否持有某个特定组织签发的会员凭证的网站。
可验证数据注册表
数据库或分布式账本等系统可以通过 协调标识符、 验证材料及其他相关数据的创建和 验证而承担的一种角色,例如 可验证凭证模式和撤销 注册表。某些 配置可能要求为主体提供可关联标识符。某些 注册表,例如 UUID 和验证材料的注册表,可能只 充当标识符的命名空间。可验证数据注册表的示例 包括可信数据库、去中心化数据库、政府身份数据库 和分布式账本。一个生态系统通常会使用多种可验证数据注册表。
显示
               凭证如何从签发者流向持有者,以及
               呈现如何从持有者流向验证者,而
               三方都可以使用逻辑
               可验证数据注册表中的信息的图示
1 构成本规范基础的角色和信息 流。

1所示,任何角色都可以使用 可验证数据注册表来验证标识符。 例如,签发者 可以通过从注册表中检索与标识符关联的 实体验证材料,来验证某个标识符是否属于特定实体, 然后向该实体发起质询,要求其证明持有 相应的私有加密密钥。

:还存在其他类型的 生态系统

上面的1提供了一个示例生态系统,为 本规范其余概念奠定基础。还存在其他生态系统,例如 受保护环境或专有系统,在这些环境或系统中, 可验证凭证同样能够带来益处。

此生态系统不同于典型的双方模型或联合身份提供方模型。 身份提供方有时缩写为 IdP,它是一种为 持有者创建、维护和管理身份信息, 同时向联合体或分布式网络内的依赖方应用程序提供身份验证服务的系统。 在联合身份模型中,持有者的身份与身份提供方紧密绑定 (但请注意,持有者可以拥有任意数量的身份, 每个身份都有各自关联的标识符和身份提供方;这些身份可能适合 解决隐私、业务身份与个人身份区分以及其他问题): 每当依赖方需要有关已识别 持有者的信息时, 都会直接从身份提供方获取该信息,因此身份提供方会参与并了解 每一笔此类事务。相比之下,本规范描述了一种三方模型, 将身份提供方这一概念分离为两个不同的概念: 签发者持有者签发者在一次交互中向 持有者提供可验证凭证, 随后持有者在其他单独的交互中将其呈现给 验证者签发者不参与这些交互, 签发者甚至不需要知道这些交互的存在。 本规范避免使用“身份提供方”、“联合身份”或“依赖方”等术语, 只有在将这些概念与其他规范进行比较或映射时才会使用。

:主体并不 总是持有者

在许多情况下,可验证凭证持有者就是主体,但 有时并非如此。例如,父母(持有者)可能持有 子女(主体)的可验证凭证,宠物主人( 持有者)也可能持有其宠物(主体)的可验证凭证( 可验证凭证)。有关这些例外情况的更多信息, 请参见可验证凭证实现指南 1.0中的 主体与持有者的关系一节。

如需深入了解可验证凭证生态系统 以及 一个具体的生命周期示例,请参阅可验证凭证概述 v1.0 [VC-OVERVIEW]。

1.3 一致性

除标记为非规范性的章节外,本规范中的所有编写指南、图示、示例和注释 均为非规范性内容。本规范中的其他所有内容均为规范性内容。

本文档中的关键词 可以必须不得 可选建议要求应该不应该 应按 BCP 14 [RFC2119] [RFC8174] 中的说明进行解释,但前提是且仅当它们如本文所示 以全大写形式出现。

符合要求的文档是一个 遵守本规范中所有相关“必须”陈述的压缩的 JSON-LD 文档。具体而言,本文档第 4. 基本概念、第 5. 高级 概念和 第 6. 语法中的相关规范性“必须”陈述必须得到强制实施。 符合要求的文档必须是媒体类型为 application/vc可验证凭证 或媒体类型为 application/vp可验证呈现。符合要求的文档必须 至少使用第 4.12 安全机制节所述的一种安全机制进行保护。

符合要求的签发者实现会生成 符合要求的文档必须 在其生成的 符合要求的文档中包含所有必需属性,并且必须使用第 符合要求的文档节中所述的安全机制保护其生成的 文档。 4.12 安全机制

符合要求的验证者实现 会处理符合要求的文档必须 按照第 验证节所述的方式,对 符合要求的文档执行 4.12 安全机制必须检查每个 必需属性是否满足该属性的规范性要求,并且 在检测到不符合要求的文档时,必须产生错误。

本规范同时包含必需属性和可选属性。符合要求的签发者实现符合要求的验证者实现可以忽略可选 属性。

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

:英文的人类可读 文本仅供说明

本文档通篇提供的示例包含 namedescription 等描述性属性, 其值使用英文,以简化本规范各 示例中的概念。这些示例不一定反映国际化使用所需的数据 结构;第 9. 国际化注意事项节对此进行了更详细的说明。

2. 术语

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

声明
关于某个主体作出的断言。
凭证
签发者作出的一项或多项声明的集合。凭证中的声明 可以涉及不同的主体。本规范所使用的 凭证定义不同于 NIST 对 凭证的定义
去中心化标识符
一种可移植的基于 URL 的标识符,也称为 DID, 与某个实体相关联。这些标识符最常用于 可验证凭证中,并与主体相关联,以便 可验证凭证无需重新签发 凭证,即可轻松地从一个凭证存储库移植到另一个存储库。 DID 的一个示例是 did:example:123456abcdef。更多详细信息请参见 去中心化标识符 (DID) v1.0 规范。
默认图
包含所有未明确 属于命名图声明
实体
可以在陈述中作为抽象名词或具体名词引用的任何事物。 实体包括但不限于人员、组织、实物、 文档、抽象概念、虚构人物和任意文本。任何 实体只要有能力,都可以在生态系统中承担角色。请注意, 某些实体从根本上无法执行操作,例如字符串 "abc" 无法签发凭证。
一组声明,形成一个由主体 及其与其他主体或数据的关系组成的信息网络。每项声明都是 图的一部分;对于命名图而言是显式的,对于 默认图而言则是隐式的。
持有者
实体通过持有一项或多项 可验证凭证并据此生成可验证呈现 而可以承担的一种角色。持有者通常是其所持 可验证凭证主体,但并非总是如此。持有者将其 凭证存储在凭证存储库中。
签发者
实体可以通过对一个或 多个主体作出声明,使用这些 声明创建可验证凭证,并将该 可验证凭证传输给 持有者而承担的一种角色。
命名图
与特定属性(例如 verifiableCredential)关联的。这些属性会 产生单独的,其中包含相应 JSON 对象中定义的所有声明
呈现
派生自一项或多项可验证凭证,并与特定验证者共享的数据;这些凭证由一个或 多个签发者签发。
凭证 存储库
文件系统、存储保险库或个人可验证凭证钱包等软件,用于存储持有者可验证凭证并保护对其的访问。
选择性披露
持有者能够对要共享的 信息作出细粒度决策。
不可关联披露
一种选择性披露,其中的呈现无法在不同 验证者之间进行关联。
主体
声明所涉及的事物。
确认
确保来自特定签发者声明满足 验证者针对特定用途的业务要求。本规范定义了 验证者如何验证可验证凭证可验证呈现。本规范还规定,验证者在依赖 可验证凭证中的声明之前,要对其进行确认。 但是,此类 确认的方法差异很大,超出了本规范的范围。 验证者信任特定签发者作出的特定声明, 并应用自己的 规则来确定哪些凭证中的哪些声明适合其 系统使用。
可验证凭证
一种可检测篡改且其作者身份可以通过加密方式 验证的凭证。可验证凭证可用于构建 可验证呈现,后者同样可以通过 加密方式进行验证。
可验证数据注册表
数据库或分布式账本等系统可以通过 协调标识符、 验证材料以及其他相关数据的创建和验证而承担的一种角色,例如 可验证凭证模式和撤销 注册表。某些 配置可能要求为主体提供可关联标识符。某些 注册表,例如 UUID 和验证材料的注册表,可能 充当标识符的命名空间。
可验证 呈现
一种可检测篡改的信息呈现,其编码方式使得 数据作者的身份在经过加密 验证后可以得到信任。某些类型的可验证呈现可能包含 由原始可验证凭证合成但不包含原始凭证的数据 (例如零知识证明)。
验证
评估可验证凭证可验证呈现是否分别为签发者或呈现者作出的真实且当前有效的 陈述。这包括检查凭证或呈现 是否符合规范、安全机制是否得到满足,以及状态检查(如果 存在)是否成功。验证凭证并不意味着 评估凭证中所编码声明的真实性。
验证者
实体通过接收一项或多项 可验证凭证进行处理而承担的一种角色;这些凭证可以包含在 可验证呈现中。其他 规范可能将此概念称为依赖方
验证材料
用于验证受加密 保护信息安全性的信息。例如,加密公钥用于验证 与可验证凭证关联的数字签名。
URL
URL 标准所定义的统一资源定位符。某些 URL 可以被 解引用并产生文档等资源。URL 的 解引用或获取规则由 URL 的方案定义。 本规范不使用 URI 或 IRI 这两个术语,因为这些术语被认为 容易令 Web 开发者感到困惑。

3. 核心数据模型

本节为非规范性内容。

以下各节概述核心数据模型概念,例如声明凭证呈现可验证凭证可验证呈现,这些概念构成了本 规范的基础。

:凭证 与可验证凭证之间的区别

读者可能会注意到,本节所述的某些概念,例如 凭证呈现, 没有本规范所定义的媒体类型。 但是,可验证凭证可验证呈现被定义为符合要求的文档,并且 具有相关联的媒体类型。这些概念之间的具体区别, 即凭证呈现可验证凭证可验证呈现之间的区别,仅在于 “可验证”对象受到加密方式的保护, 而其他对象则没有。更多详细信息请参见第 4.12 安全机制节。

3.1 声明

本节为非规范性内容。

声明是关于某个主体的陈述。主体是 可以对其作出声明的事物。声明使用 主体- 属性-关系来表达。

主体具有一个
            拥有相应值的属性
2 声明的基本结构。

上面的2说明了声明的数据模型, 该模型功能强大,可用于表达各种各样的陈述。例如, 某人是否毕业于某所特定大学,可以像下面 3所示的那样表达。

Pat 有一个 alumniOf
            属性,其值为示例大学
3 表达 Pat 是“示例大学”校友的基本声明。

各项声明可以合并,以表达有关 主体的信息。下面 4所示的示例扩展了之前的声明,添加了 Pat 认识 Sam 以及 Sam 受聘担任 教授的声明

扩展之前的
            图示,添加名为 knows 的另一个属性,其值为
            Sam,并且 Sam 有一个名为 jobTitle 的属性,其值为 Professor
4 可以组合多项声明来表达信息图。

至此,已经介绍了声明和信息的概念。 预计还会向该图添加更多信息,以便为 是否信任声明的决定提供依据。

3.2 凭证

本节为非规范性内容。

凭证是由同一实体作出的一项或多项声明的集合。 凭证还可能包含标识符和元数据,用于 描述凭证的属性,例如签发者、有效日期 和 时间段、代表性图像、验证材料、状态 信息等。可验证凭证是一组可检测篡改的声明和元数据, 它们以加密方式证明凭证的签发者。可验证凭证的示例包括但不限于 数字员工身份证、数字驾驶证和数字教育证书。

可验证
               凭证包含凭证元数据、声明和
               证明
5 可验证凭证的基本组成部分。

上面的5展示了 可验证凭证的基本组成部分,但抽象掉了 声明如何 组织成信息,然后再将这些图组织成 可验证凭证的细节。

下面的6更完整地描绘了一个 可验证凭证,它使用基于 可验证凭证数据完整性 1.0嵌入式证明。它由至少两个信息组成。 其中第一个信息可验证凭证图 (即默认图),它通过 凭证元数据和其他声明来表达可验证凭证 本身。由 proof 属性引用的第二个 信息是该可验证凭证证明图,并且是一个单独的 命名图证明图表达 数字证明,在本例中 是数字签名。对需要多个信息图的原因感兴趣的读者 可以参阅第 5.12 可验证凭证图节。

图示顶部为
“可验证凭证图”的声明集合,通过 proof 属性(或谓词)
连接到底部的“可验证凭证证明
图”。可验证凭证的声明包括作为主体的“Credential
123”,它有 4 个属性:type 的值为 ExampleAlumniCredential、
issuer 的值为 Example University、validFrom 的值为 2010-01-01T19:23:24Z,以及
credentialSubject 的值为 Pat,而 Pat 还有一个值为
Example University 的 alumniOf 属性。可验证凭证证明图有一个
主体对象“Signature 456”,它有 5 个属性:type 的值为 DataIntegrityProof、
verificationMethod 的值为 Example University Public Key 7、created 的值为
2017-06-18T21:19:10Z、nonce 的值为 34dj239dsj328,以及 proofValue 的值为
“zBavE110…3JT2pq”。可验证凭证图还带有
括注“(默认图)”,可验证凭证证明
图带有括注“(命名图)”。
6 与基本可验证凭证关联的信息图,使用基于 可验证凭证数据完整性 1.0 [VC-DATA-INTEGRITY] 的嵌入式证明

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

图示左侧有一个标为
“SD-JWT(已解码)”的框,其中三个文本标签垂直排列,
分别为“标头”、“载荷”和“签名”。“标头”标签
通过箭头连接到右侧的一个单独矩形,
其中包含六个文本字段:“kid: aB8J-_Z”、“alg: ES384”和
“cty: vc”、“iss: https://example.com”、“iat: 1704690029”以及“typ:
vc+sd-jwt”。左侧的“载荷”标签
通过箭头连接到另一个包含单个图的矩形。该
矩形具有标签:“可验证凭证图(序列化为
JSON)”。图中的声明包括作为主体的“Credential 123”,
它有 4 个属性:type 的值为“ExampleAlumniCredential”、
issuer 的值为“Example University”、validFrom 的值为
“2010-01-01T19:23:24Z”,以及 credentialSubject 的值为“Pat”,而 Pat
还有一个值为“Example University”的 alumniOf 属性。
最后,左侧的“签名”标签通过
箭头连接到另一个只包含一个文本字段的矩形:
“DtEhU3ljbEg8L38VWAfUA...”。
7 与基本可验证凭证关联的信息图, 使用基于使用 JOSE 和 COSE 保护可验证凭证封装式证明 [VC-JOSE-COSE]。

3.3 呈现

本节为非规范性内容。

增强隐私是本规范的一项关键设计特征。因此, 使用此技术的实体仅表达 其身份中适合特定情形的部分至关重要。表达 个人身份的一个子集称为可验证呈现。 不同身份的示例包括个人的职业身份、 网络游戏身份、家庭身份或匿名身份。

可验证呈现持有者创建,可以表达来自多项可验证凭证的数据,也可以 包含任意附加数据。它们用于向 验证者呈现声明。也可以直接呈现可验证凭证

呈现中的数据通常涉及同一个主体,但可能 由多个签发者签发。这些信息的汇集 表达了个人、组织或实体的某个方面。

可验证
            呈现包含呈现元数据、可验证
            凭证和证明
8 可验证呈现的基本组成部分。

上面的8展示了 可验证呈现的组成部分,但抽象掉了 可验证凭证如何组织成信息 , 然后再将这些图组织成可验证呈现的细节。

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

图示顶部为一个
“可验证呈现图”,通过“proof”连接到
底部的“可验证呈现证明图”。可验证
呈现图有一个对象“Presentation ABC”,它有 3 个属性:type
的值为 VerifiablePresentation,termsOfUse 的值为“Do Not Archive”。该
图带有括注“(默认图)”。此
图通过“verifiableCredential”连接到图示中
与图 6 相同的部分,但可验证凭证图
被标注为命名图而不是默认图。
可验证呈现证明图有一个对象“Signature 8910”,
它有 5 个属性:type 的值为 DataIntegrityProof;verificationMethod
的值为 Example Presenter Public Key 11;created 的值为
2018-01-15T12:43:56Z;nonce 的值为 d28348djsj3239;proofValue
的值为 zp2KaZ...8Fj3K=。该图带有
括注“(命名图)”
9 与使用基于 可验证凭证数据完整性 1.0嵌入式证明的基本可验证呈现关联的信息

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

图示左侧有一个标为
“JWT(已解码)”的框,其中三个文本标签垂直排列,
分别为“标头”、“载荷”和“签名”。“标头”标签
通过箭头连接到右侧的一个单独矩形,
其中包含六个文本字段:“kid: aB8J-_Z”、“alg: ES384”和
“cty: vc”、“iss: https://example.com”、“iat: 1704690029”以及“typ:
vp+sd-jwt”。左侧的“载荷”标签
通过箭头连接到另一个由两个相关
图组成的矩形,这两个图垂直堆叠,并通过一个标为
“verifiableCredential”的箭头连接。这两个图的标签分别为“可验证
呈现图(序列化为 JSON)”和“可验证凭证
图(序列化为 JSON)”。矩形顶部的图
有一个对象“Presentation ABC”,它有 3 个属性:type
的值为 VerifiablePresentation,termsOfUse 的值为“Do Not
Archive”。底部的图包含
“data:application/vc+sd-jwt,QzVjV...RMjU”作为主体,它有
一个属性:type 的值为 `EnvelopedVerifiableCredential`。
最后,左侧的“签名”标签通过
箭头连接到另一个只包含一个文本字段的矩形:
“XaOOh4ljklxH7L99RTVSfOl...”。
10 与使用基于使用 JOSE 和 COSE 保护可验证凭证封装式证明的基本可验证呈现关联的信息图。data: URL 引用了 7中所示的可验证凭证
:呈现 可以包含多项可验证凭证

一个呈现可以利用涉及不同 主体的多项凭证,例如一组大学 凭证;这些主体通常相互关联,但并非必须如此。这通过使用 verifiableCredential 属性引用多项可验证凭证来实现。 更多 详细信息请参见附录 E. 可验证呈现的其他图示

:呈现 可以由签发者和验证者进行呈现

如第 1.2 生态系统概述节所述,实体在参与 特定凭证交换时,可以承担一个或多个角色。 虽然通常预期持有者生成呈现,但 签发者验证者也可以 生成呈现,以向 持有者表明自己的身份。如果持有者在将敏感信息 作为可验证呈现的一部分交出之前,需要 签发者验证者提供更高程度的保证, 就可能发生这种情况。

4. 基本概念

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

4.1 快速入门

本节为非规范性内容。

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

开发者需要将下面的 MyPrototypeCredential 更改为其想要创建的 凭证类型。由于可验证凭证涉及 主体, credentialSubject 对象中的每个属性-值对都表达凭证主体的 某项特定属性。开发者添加若干 此类属性-值组合后,可以将修改后的对象发送给 符合要求的签发者实现,随后将为开发者创建 可验证凭证。从原型设计的角度来看,这就是 开发者需要完成的全部工作。

示例 1:用于创建原型可验证 凭证的模板
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "type": ["VerifiableCredential", "MyPrototypeCredential"],
  "credentialSubject": {
    "mySubjectProperty": "mySubjectValue"
  }
}

在所有凭证属性稳定后,建议开发者在稳定 URL 上生成 并发布词汇表和上下文文件,以促进 与其他开发者的互操作性。然后,需要将上面的 https://www.w3.org/ns/credentials/examples/v2 URL 替换为特定用例上下文的 URL。第 5.2 可扩展性节介绍了这一过程。或者, 开发者可以重用恰好适合 其用例的现有词汇表和上下文文件。他们可以查看可验证凭证扩展 以寻找可重用资源。

4.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 可扩展性节中定义的扩展机制添加其他属性。

4.3 上下文

当两个软件系统需要交换数据时,它们需要使用 双方都能理解的术语。可以想想两个人如何通过使用 同一种语言进行有效交流,其中使用的“姓名”和 “网站”等词语对每个人都有相同含义。这有时被称为 对话的上下文。本规范使用类似的 概念,通过建立一个 用于交流的上下文,使软件系统获得相似的结果。

处理可验证凭证可验证呈现的软件系统使用 每个术语对应的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 上下文进行处理。
示例 2:使用 @context 属性
{
  "@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"
    }
  }
}

上面的示例使用基本上下文URLhttps://www.w3.org/ns/credentials/v2)确定所交换的数据 与可验证凭证有关。第 5.2 可扩展性节进一步 详述了这一概念。位于 https://www.w3.org/ns/credentials/v2 的数据是一个可永久缓存的静态 文档,其处理说明见附录 C.1 基本上下文。可验证凭证数据模型 相关的人类可读词汇表文档位于 https://www.w3.org/2018/credentials/

第二个URLhttps://www.w3.org/ns/credentials/examples/v2)用于 演示示例。实现不应将 此URL用于试点系统或生产系统等任何其他用途。

:有关 @context 的更多信息,请参见 JSON-LD。

JSON-LD 1.1规范的 第 3.1 节:上下文 进一步详述了 @context 属性

4.4 标识符

在表达关于人员、产品或 组织等特定事物的陈述时,为该事物使用全球唯一标识符会很有用。 全球唯一标识符使其他人能够表达 关于同一事物的陈述。本规范为此类标识符定义了可选的 id 属性id 属性 允许在可验证凭证中表达关于特定事物的陈述,并由 签发者在可验证凭证中表达 对象时设置,或者由持有者在可验证呈现中表达 对象时设置。可验证凭证可验证呈现中的 id 属性表达一个 标识符,其他人在表达关于该标识符所标识的 特定事物的陈述时应使用该标识符。id 值的示例 包括 UUID(urn:uuid:0c07c1ce-57cb-41af-bef2-1b932b986873)、HTTP URL (https://id.example/things#123)和 DID(did:example:1234abcd)。

:任何类型的标识符 都会提高可关联性

提醒开发者注意,在要求使用假名时, 标识符可能会造成危害。在考虑此类场景时,建议开发者 仔细阅读可验证凭证数据模型威胁模型中的 基于标识符的 关联。 该威胁模型还记录了其他会引发隐私问题的 访问和关联机制。 在隐私至关重要的情况下,可以省略 id 属性。某些用例不需要或明确要求省略 id 属性。同样,还应特别注意 在可公开解析的 URL 与其他形式的标识符之间进行选择。可公开 解析的 URL 可以简化验证并促进互操作性,但 如果使用不当,也可能无意中授予对潜在敏感信息的访问权限。

id
id 属性可选的。如果存在, id 属性的值 必须是一个URL,该 URL 可以 解引用。建议 id 中的URL在 可解引用时产生一个包含有关该 id 的机器可读信息的 文档。
示例 3:使用 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": "2026-09-13T23:07:55Z",
    "verificationMethod": "did:key:zDnaej4rRZHrUtvxgRBNpmsvLsUjFb3a3b2y5C8YtsGoexjCT",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z2euHQHUgguYdyUnyCnX4UYhXrb3Mzp35kHnJoihYZ1joHWijBEjH7EsDTMkyLd9Kn9VS4kQ4TXWS1F74G1oe9Ur2"
  }
}
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": "2026-09-13T23:07:55Z",
    "verificationMethod": "did:key:zDnaejWrVEMxMS8KoTAUQPQ1hAcoCUK8q8bHKqyuxxwi1StSz",
    "cryptosuite": "ecdsa-sd-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0AhVhA9FP-tsKKDzfN4LcnPTcXEPXAuJadies6nrq_297jIwTK3CTKe2mD0sH6xYOU0oZRi-jaeCKmzZQ4-XdYvXyxGVgjgCQClknHym9_i2O5ABhGdV48Hicgkjpz0EOQuGeBnWLUcUVYIFzZ_Pq64nVOdMmkMMMWSKkuk4CqYLvX1ozli4OPjKrRhVhAbzkhro9FTbYbuv8M6lLWBbwI4_NCDO8twjtMPTILfN8pLlBgudkO6fFdSNuPqkS2mMIGKfC9W8teAiM42mah21hAO4vJoDIZ2R8vIIvUFit7-qql-WbOpALGMyjPY1tzs-a_nyTlBa0VbREwSStoGoGD7VzmkxXYcSWel0GXNdoAClhAkRO2se6OsvyWsUgORz5IntNFBgB6zSN-uIouar3gGol45e3rcyQZN6GMDVGC9l7QaERRkPhC2KGG1zs5M01BSFhA0cczmOGM11Ow1NwXu5uxER2_12cYbTSRzXVbaeLmYMMs2MaP1VelAZqiepjj_kE3zCCtDKoMegd6CqbwEeu6RlhAo0tOIn4oRuNO5D3VWafeQTqOVCrx8uzaBwCo3KBwGfGuM8xg3BGv4-rqcSEbg76rbcyFrgmEfH4tJSR7poNqvYFnL2lzc3Vlcg"
  }
}
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:zUC71huiWdhS9bhS3c7qEiPnS2DFyxYSBLn9GzpW15wZMdTJ6tjWEsgyExiAZ8XkrEu8Y5Tpsvu1RwQi6Bzy4ce8Wvf8ikZUfYaVZVNcUi8aiExBhEsZ2T5HwNWT1fqyAbAKuqZ",
    "cryptosuite": "bbs-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0ChVhQtQpDaCdROmgVtLoZJws9Za8LuJOHOUyvjngxla2Ef4zyJuGuJ07lTgEXIqi_KbjUD4Hr7ca3YkaeZeTarcsQCn7OLo_EzIccVM2LgezMRORYQOzFWI0_8JjFsAHB4_NK3_pWM4lOH75F-B273Huck8o7S1r7HKFDPyyrvPGqNF8bjgNELvoomOjpbD9JEvaGI1pYYIJATjbZefKgHbjwatWVl7Q-K64WmVuyLwHk0iyY3Aks-wtSG8xQUeXNgZlDJttjsAkuT-bn-COio-nUPyf2B7fI9uOFrugJSQdqt6e57w94B34WzKJpEhv0nTEPJ0byMFggQFczsa8opYWRvULKNCFJNB3UsH5Tt2Wk7WAyOQynC_2BZy9pc3N1ZXI"
  }
}
受保护的标头
{
  "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
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzLzM3MzIiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiRXhhbXBsZURlZ3JlZUNyZWRlbnRpYWwiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy81NjUwNDkiLCJ2YWxpZEZyb20iOiIyMDEwLTAxLTAxVDAwOjAwOjAwWiIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImlkIjoiZGlkOmV4YW1wbGU6ZWJmZWIxZjcxMmViYzZmMWMyNzZlMTJlYzIxIiwiZGVncmVlIjp7InR5cGUiOiJFeGFtcGxlQmFjaGVsb3JEZWdyZWUiLCJuYW1lIjoiQmFjaGVsb3Igb2YgU2NpZW5jZSBhbmQgQXJ0cyJ9fX0 .Hh_dBoz6N5TM25EnQZ_ChhpIPgL7BotHDmjA845ntOYzksB5XYkhQFMlityOOGOGAi0gKeSp6KeFgu4PtFkcPA
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
d28443a10128a05901be7b2240636f6e74657874223a5b2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f7632222c2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f6578616d706c65732f7632225d2c226964223a22687474703a2f2f756e69766572736974792e6578616d706c652f63726564656e7469616c732f33373332222c2274797065223a5b2256657269666961626c6543726564656e7469616c222c224578616d706c6544656772656543726564656e7469616c225d2c22697373756572223a2268747470733a2f2f756e69766572736974792e6578616d706c652f697373756572732f353635303439222c2276616c696446726f6d223a22323031302d30312d30315430303a30303a30305a222c2263726564656e7469616c5375626a656374223a7b226964223a226469643a6578616d706c653a656266656231663731326562633666316332373665313265633231222c22646567726565223a7b2274797065223a224578616d706c6542616368656c6f72446567726565222c226e616d65223a2242616368656c6f72206f6620536369656e636520616e642041727473227d7d7d584009fe6abcbe0f1085041a437de6ec693478d33ed5ce8f24880d413d7253f0d1aaf528b71d4b2427b91dff3e01c6dc37bed55884c7f869103b91510fc96dc00016
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJpYXQiOjE3ODkzNDA4NzUsImV4cCI6MTc5MDU1MDQ3NSwiX3NkX2FsZyI6InNoYS0yNTYiLCJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy81NjUwNDkiLCJ2YWxpZEZyb20iOiIyMDEwLTAxLTAxVDAwOjAwOjAwWiIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImRlZ3JlZSI6eyJuYW1lIjoiQmFjaGVsb3Igb2YgU2NpZW5jZSBhbmQgQXJ0cyIsIl9zZCI6WyJjNHhaZi1BR2xjemJrVFdzR1RzTC1xWmhPSkpSVlNWckE5TEdVOXRmSk1ZIl19LCJfc2QiOlsiYTVpZnZtVmctRGVfc0F1VmY4TTRicWhLLWt2MW54VW9vY2JtX0x6dlJGMCJdfSwiX3NkIjpbIjFXWmMxaWhST1BNMkF6bEZTRkIwRjVvbGxOYlJDMUpoeE1IS3IyMFVlek0iLCJ6OFFVbmxqb2JDSDF2bmJrRTNvczF0OEp1S21tZ1lNM3VOVFdpQjg1X0VzIl19 .i1877D_QPlyHya-9Itruqfjjd1HZGZOHwzelHJMNY84gUDPP0Fsa8_bBRLnMe7D0VWKKkWhi9n7zuP05WzCPxA ~WyJjU05fb3dYam5MQnJ3T002SWpVT2x3IiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd~WyJwNW5HV2lCbXh5ckRteXlYdzVZd1lBIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d~WyJOcHpac19uWU96RXo5VzRFOXpKQ1NnIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd~WyJGenVtVUFGcjhhRjdCdGI3TWhGY1BBIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0~
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
{
  "iat": 1789340875,
  "exp": 1790550475,
  "_sd_alg": "sha-256",
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "degree": {
      "name": "Bachelor of Science and Arts",
      "_sd": [
        "c4xZf-AGlczbkTWsGTsL-qZhOJJRVSVrA9LGU9tfJMY"
      ]
    },
    "_sd": [
      "a5ifvmVg-De_sAuVf8M4bqhK-kv1nxUoocbm_LzvRF0"
    ]
  },
  "_sd": [
    "1WZc1ihROPM2AzlFSFB0F5ollNbRC1JhxMHKr20UezM",
    "z8QUnljobCH1vnbkE3os1t8JuKmmgYM3uNTWiB85_Es"
  ]
}

声明: id

SHA-256 哈希: z8QUnljobCH1vnbkE3os1t8JuKmmgYM3uNTWiB85_Es

披露: WyJjU05fb3dYam5MQnJ3T002SWpVT2x3IiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd

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

声明: type

SHA-256 哈希: 1WZc1ihROPM2AzlFSFB0F5ollNbRC1JhxMHKr20UezM

披露: WyJwNW5HV2lCbXh5ckRteXlYdzVZd1lBIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d

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

声明: id

SHA-256 哈希: a5ifvmVg-De_sAuVf8M4bqhK-kv1nxUoocbm_LzvRF0

披露: WyJOcHpac19uWU96RXo5VzRFOXpKQ1NnIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd

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

声明: type

SHA-256 哈希: c4xZf-AGlczbkTWsGTsL-qZhOJJRVSVrA9LGU9tfJMY

披露: WyJGenVtVUFGcjhhRjdCdGI3TWhGY1BBIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0

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

上面的示例使用了两种标识符。第一个标识符用于 可验证凭证,并使用基于 HTTP 的 URL。第二个 标识符用于可验证凭证主体(即 声明所涉及的事物),并使用去中心化标识符, 也称为 DID

:去中心化 标识符是可选的

DID是一种标识符,但可验证凭证并不需要它 也能发挥作用。具体而言,可验证凭证不 依赖DIDDID也不依赖可验证凭证。 但是,许多可验证凭证会 使用DID,实现本规范的软件 库也需要解析DID。 基于DID的 URL 用于表达与 主体签发者持有者、凭证状态列表、加密 密钥以及与可验证凭证相关的其他机器可读信息关联的标识符。

4.5 类型

处理本文档所指定对象种类的软件系统 使用类型信息来确定所提供的 可验证凭证可验证呈现是否适合 预期用例。本规范定义了用于表达对象类型信息的 type 属性。如附录 B. 确认所述,此类型信息可以在确认过程中使用。

可验证凭证可验证呈现必须包含一个具有相关联值的 type 属性

类型
type 属性的值必须是 一个或多个 术语绝对 URL 字符串。如果提供了多个 值,其顺序无关紧要。
示例 4:使用 type 属性
{
  "@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": "2026-09-13T23:07:55Z",
    "verificationMethod": "did:key:zDnaej4rRZHrUtvxgRBNpmsvLsUjFb3a3b2y5C8YtsGoexjCT",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z5FMQTQfmT7zWjGWpZHbGEWirETcfVqHhXAEWWvJog5Mtvi4XFPDehZ2PG19coUag2aSc4Dku65Y6YadDxVJVXVT3"
  }
}
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": "2026-09-13T23:07:55Z",
    "verificationMethod": "did:key:zDnaejWrVEMxMS8KoTAUQPQ1hAcoCUK8q8bHKqyuxxwi1StSz",
    "cryptosuite": "ecdsa-sd-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0AhVhAWinr8vaj-CrXdHBCRguKXHVVdpqEtiB7Jk_iGrjQGOMrQB6Bloqufk-61_qyflu84Hvdw5QJC1Wn1KAIZpGomlgjgCQDZk6674rm62yZaxfWJmRexgGRdgEbGqUEPa-fKKmdSmRYIMzZG6TnTR9EmUjhUNKdU8Qk7hLf6dJ0kUsf0uhRn3VjhVhAOuOTUJKsg9aHFwaEc4c_IiUwOU_tpfWr9YQ0HOiSYeUvMBQek2T67L7q5rY0RLlKQWfIz4A_25_8AkLLJaLIK1hAsSUo2u8BvNKnv8bWvTLCaZ4B32Yg-WBzXKTrazpTWvtyx7aTInLuG0nDlpfoU-U8kfC5J3w-eGkm_f8PRRhceVhAb16hGSi7JB21P1EqllBiX-4NHgTUNoTSn8n3S5e0RplNhJhKjLzQQs_OEeTQ3g2Ly_pBCpDmqx-7fWBr3RrOmFhA6gcjyGwYCEl0XxijBpTi1u8ta43XQasTc12cKIhqvvUlaGrfDFoy--7ghjwXR9jFYEv3Td7dw4Y-eT2BOTybOlhAHtUF0k1dteTPZz39-D9Mcx8g6nzlKZ4wRcmuA6Y1XT33oCVJhi7rd9HPf4phTdX-NhpMCuhBV9_-Vi9-FVjnaIFnL2lzc3Vlcg"
  }
}
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:zUC71huiWdhS9bhS3c7qEiPnS2DFyxYSBLn9GzpW15wZMdTJ6tjWEsgyExiAZ8XkrEu8Y5Tpsvu1RwQi6Bzy4ce8Wvf8ikZUfYaVZVNcUi8aiExBhEsZ2T5HwNWT1fqyAbAKuqZ",
    "cryptosuite": "bbs-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0ChVhQtQpDaCdROmgVtLoZJws9Za8LuJOHOUyvjngxla2Ef4zyJuGuJ07lTgEXIqi_KbjUD4Hr7ca3YkaeZeTarcsQCn7OLo_EzIccVM2LgezMRORYQOzFWI0_8JjFsAHB4_NK3_pWM4lOH75F-B273Huck8o7S1r7HKFDPyyrvPGqNF8bjgNELvoomOjpbD9JEvaGI1pYYIJATjbZefKgHbjwatWVl7Q-K64WmVuyLwHk0iyY3Aks-wtSG8xQUeXNgZlDJttjsAkuT-bn-COio-nUPyf2B7fI9uOFrugJSQdqt6e57w94B34WzKJpEhv0nTEPJ0byMFggDignpySyNHna5-M0OymX2Yn8fzl5FTduB4uZjsBWZbKBZy9pc3N1ZXI"
  }
}
受保护的标头
{
  "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
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzLzM3MzIiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiRXhhbXBsZURlZ3JlZUNyZWRlbnRpYWwiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy81NjUwNDkiLCJ2YWxpZEZyb20iOiIyMDEwLTAxLTAxVDAwOjAwOjAwWiIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImlkIjoiZGlkOmV4YW1wbGU6ZWJmZWIxZjcxMmViYzZmMWMyNzZlMTJlYzIxIiwiZGVncmVlIjp7InR5cGUiOiJFeGFtcGxlQmFjaGVsb3JEZWdyZWUiLCJuYW1lIjoiQmFjaGVsb3Igb2YgU2NpZW5jZSBhbmQgQXJ0cyJ9fX0 .ZA-0aa5tP0Zn0WGvvYXEtR06pB2DNqUBPSB86mP5sHcYy-Lqjo3NJoG-rkKiCX4pnSXJ2HygsXAW2mA8TNSong
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
d28443a10128a05901be7b2240636f6e74657874223a5b2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f7632222c2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f6578616d706c65732f7632225d2c226964223a22687474703a2f2f756e69766572736974792e6578616d706c652f63726564656e7469616c732f33373332222c2274797065223a5b2256657269666961626c6543726564656e7469616c222c224578616d706c6544656772656543726564656e7469616c225d2c22697373756572223a2268747470733a2f2f756e69766572736974792e6578616d706c652f697373756572732f353635303439222c2276616c696446726f6d223a22323031302d30312d30315430303a30303a30305a222c2263726564656e7469616c5375626a656374223a7b226964223a226469643a6578616d706c653a656266656231663731326562633666316332373665313265633231222c22646567726565223a7b2274797065223a224578616d706c6542616368656c6f72446567726565222c226e616d65223a2242616368656c6f72206f6620536369656e636520616e642041727473227d7d7d5840c5ede95de216e930af8e9db98d482862d7e686db718011166106d19bd2b0209fd00cc8aaa6ac5f99eadce58348bd75c9733376afd56bac6e14b405188a39aa3c
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJpYXQiOjE3ODkzNDA4NzUsImV4cCI6MTc5MDU1MDQ3NSwiX3NkX2FsZyI6InNoYS0yNTYiLCJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy81NjUwNDkiLCJ2YWxpZEZyb20iOiIyMDEwLTAxLTAxVDAwOjAwOjAwWiIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImRlZ3JlZSI6eyJuYW1lIjoiQmFjaGVsb3Igb2YgU2NpZW5jZSBhbmQgQXJ0cyIsIl9zZCI6WyJJWDlYaG5zTW0tWUJ5VjlobDZfbm8tUVJqamlVS25zeHh3VVlXMC1CbzZZIl19LCJfc2QiOlsib2ZVcFo0dkxfRWRGNnZ0eTdIaWl5VjRfS1gxWTRpbkJIUHN3dHlTakRURSJdfSwiX3NkIjpbIlM0bkk2em04N1pqNnM1M2lQR3Z5VzlzeER4VWd4d3BoTzdhYkE2RUI3RkEiLCJhZ19ZS1pibDdfXzFEODBUS19pa2xCS3o2eU8wREo5eEkwNmZxSUpTVFdBIl19 .vc9b5vXD1wPRGlrf6VuWFst-VZ-Z5cVANg6a9oSaEVI-zq5YT_9nTVQOJvnvBCduDVnhFUIYtiFkEKiiBKIsXQ ~WyJ1M0FxaEduYXFsTzc1RmFyb2dxTlhnIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd~WyI5cDE1eGFmdXlCeENzc0s4MGFhOEV3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d~WyJGUXB5ZjMwXzU3MDNzRFFPaVBTU0N3IiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd~WyI0QU41VG1aa3RsYkh3MXNLMkRTMFNBIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0~
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
{
  "iat": 1789340875,
  "exp": 1790550475,
  "_sd_alg": "sha-256",
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "degree": {
      "name": "Bachelor of Science and Arts",
      "_sd": [
        "IX9XhnsMm-YByV9hl6_no-QRjjiUKnsxxwUYW0-Bo6Y"
      ]
    },
    "_sd": [
      "ofUpZ4vL_EdF6vty7HiiyV4_KX1Y4inBHPswtySjDTE"
    ]
  },
  "_sd": [
    "S4nI6zm87Zj6s53iPGvyW9sxDxUgxwphO7abA6EB7FA",
    "ag_YKZbl7__1D80TK_iklBKz6yO0DJ9xI06fqIJSTWA"
  ]
}

声明: id

SHA-256 哈希: ag_YKZbl7__1D80TK_iklBKz6yO0DJ9xI06fqIJSTWA

披露: WyJ1M0FxaEduYXFsTzc1RmFyb2dxTlhnIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd

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

声明: type

SHA-256 哈希: S4nI6zm87Zj6s53iPGvyW9sxDxUgxwphO7abA6EB7FA

披露: WyI5cDE1eGFmdXlCeENzc0s4MGFhOEV3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d

内容: [
  "9p15xafuyBxCssK80aa8Ew",
  "type",
  [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ]
]

声明: id

SHA-256 哈希: ofUpZ4vL_EdF6vty7HiiyV4_KX1Y4inBHPswtySjDTE

披露: WyJGUXB5ZjMwXzU3MDNzRFFPaVBTU0N3IiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd

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

声明: type

SHA-256 哈希: IX9XhnsMm-YByV9hl6_no-QRjjiUKnsxxwUYW0-Bo6Y

披露: WyI0QU41VG1aa3RsYkh3MXNLMkRTMFNBIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0

内容: [
  "4AN5TmZktlbHw1sK2DS0SA",
  "type",
  "ExampleBachelorDegree"
]

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

对象 类型
可验证凭证 对象 VerifiableCredential,以及可选的更具体的 可验证凭证类型。例如:
"type": ["VerifiableCredential", "OpenBadgeCredential"]
可验证呈现 对象 VerifiablePresentation,以及可选的更具体的 可验证呈现类型。例如:
"type": "VerifiablePresentation"
credentialStatus 对象 有效的凭证状态类型。例如:
"type": "BitstringStatusListEntry"
termsOfUse 对象 有效的使用条款类型。例如:
"type": "TrustFrameworkPolicy"
evidence 对象 有效的证据类型。例如:
"type": "Evidence"
refreshService 对象 有效的 refreshService 类型。例如:
"type": "VerifiableCredentialRefreshService2021"
credentialSchema 对象 有效的 credentialSchema 类型。例如:
"type": "JsonSchema"
:可验证 凭证数据模型基于 JSON-LD

可验证凭证数据模型的类型系统与 JSON-LD 1.1相同,并在 第 3.5 节: 指定类型第 9 节:JSON-LD 语法中进行了详细说明。使用 JSON-LD 上下文时(参见第 5.2 可扩展性节),本规范将 @type 关键词的别名设为 type,使 JSON-LD 文档 更易于理解。虽然应用程序开发者和文档作者 不需要了解 JSON-LD 类型系统的具体细节,但希望支持可互操作 扩展性的本规范实现者则需要了解。

所有凭证呈现和 封装对象应该 指定或关联其他范围更窄的类型(例如 ExampleDegreeCredential),以便软件系统可以 更轻松地检测和处理这些附加信息。

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

例如,一个 typeExampleDegreeCredential凭证对象,会向验证者表明, 与 credentialSubject 属性关联的对象包含 以下内容的标识符:

这使实现者能够依靠与 type 属性关联的值 进行验证。对象类型及其关联值 应至少记录在一个可以通过该类型的 URL找到的人类可读规范中。例如, BitstringStatusList 类型的人类可读 定义位于 https://www.w3.org/ns/credentials/status/#BitstringStatusList。还建议通过 同一 URL 上的 HTTP 内容协商提供 机器可读版本

:有关创建新凭证类型, 请参见实现指南

如何创建新型可验证凭证超出了 本规范的范围。建议对此感兴趣的读者阅读 可验证凭证实现指南 1.0中的 创建新凭证类型一节。

4.6 名称和描述

显示凭证时,如果有 由签发者提供的文本,为该 凭证附上名称及其用途的简短描述,会很有帮助。 namedescription 属性 即用于这些目的。

name
一个可选属性,用于表示凭证的名称。如果 存在,则 name 属性的值必须是 一个或多个字符串或 语言值对象,如 9.1 语言和基本方向中所述。理想情况下, 凭证的名称应简洁、便于人类阅读,并能使 个人 快速区分一项凭证与其可能持有的任何其他凭证
description
一个可选属性,用于传达有关凭证的具体细节。如果 存在,则 description 属性的值必须是一个或多个 字符串或语言值对象,如 9.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": "2026-09-13T23:07:55Z",
    "verificationMethod": "did:key:zDnaej4rRZHrUtvxgRBNpmsvLsUjFb3a3b2y5C8YtsGoexjCT",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z57JCD5HuT5KoSg4ueEcy442ay3UayF2Hqh2ZxJCPzxfrfdNvt4YbsZoqABLQV3dgBnEL3ds5fykZznCLtHKBBYvz"
  }
}
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": "2026-09-13T23:07:55Z",
    "verificationMethod": "did:key:zDnaejWrVEMxMS8KoTAUQPQ1hAcoCUK8q8bHKqyuxxwi1StSz",
    "cryptosuite": "ecdsa-sd-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0AhVhAGM4jw6lzcUItMkWMW0uaNCoTwV5eablD1r-iv6Q5bzxeaWglHf4zRRdpk_AUhK3861BDuQZC0Ntpi9DvEvlLTlgjgCQD1gHNZXp-zBNsbmupwjSUcJGfBtMPvPXv7AuxGErC0nxYIJ4cSvQx9euK9aF8PPw3qrrEnEZ5iHUi7r-9mqm2iBVhh1hAMmyqMu9-Yu9mukPdFP2bFfspAt_2W9p3VSM8mPcxmuekgHqPUDu-FgdLwiwdkMILtQd5mkhARGhrnUtjQtvjtFhA-pWjkHKY8IPYzeZbS9rq6jR22wNxExvDaOQ7h9u-QPsrLgG8hIJwRv0heIZxXmGnjy3kjq6zUkxrwU2s5k0OEVhAlTDyfCOsQAP9evBlQ4-L6TNW8fWDwB85ZBTBI3ZDzjhe-dgoq7p6mZ_IGqfBhkcSm_sxczvMkpJo8gJyPRfeRFhA0E60PV8g_vRuYyknxkA4i-TGOTxS3OGALMaBoHkRGOa1rUak-mBHJJvVYVemG22TVCnQwjQ-FlfdB7exQR-OLVhAoY0rBMybvJiItvbxrYtaYn9K28whRFuuuMj38s3Zyu6MEiTdkfosKY5YhzX2kOlt9VyMEFvS3WGI_YvsmfRV-1hAK23qLXoLJxfcC5ab_55rOSPuPeZ4HjlKkWg8GrYOuEkQmTm0JKJrP9WMZFm2tSHlnsrvWaitSbPQnLvgyXJTl1hAwVtN5FvQq5UAWQZZzXsvzQkENREHE-TPN6uOoF2tGg7oMHfSk0X0YXIV3nSzwsSoXaa88UCxjDsmfpSRHHeVLYFnL2lzc3Vlcg"
  }
}
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:zUC71huiWdhS9bhS3c7qEiPnS2DFyxYSBLn9GzpW15wZMdTJ6tjWEsgyExiAZ8XkrEu8Y5Tpsvu1RwQi6Bzy4ce8Wvf8ikZUfYaVZVNcUi8aiExBhEsZ2T5HwNWT1fqyAbAKuqZ",
    "cryptosuite": "bbs-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0ChVhQsPSXf7XyRM4tws0yev0dJA9UqriZRvJt03tzh0fWXzB_qb5JqJmgg22F_17YUSLGOCgO2Nw4ufgr3Ihq8W8VjGpLbpMT-DbbFNlRtbzSzilYQOzFWI0_8JjFsAHB4_NK3_pWM4lOH75F-B273Huck8o7XFDE8ZX70eeJX1DawHuw0sW9CBV3sa68IaRGcnZiiQpYYIJATjbZefKgHbjwatWVl7Q-K64WmVuyLwHk0iyY3Aks-wtSG8xQUeXNgZlDJttjsAkuT-bn-COio-nUPyf2B7fI9uOFrugJSQdqt6e57w94B34WzKJpEhv0nTEPJ0byMFggmgKy1x5VUpuB0C-i0S6c-m3t_NXU1tXk9WVbA3kR-QaBZy9pc3N1ZXI"
  }
}
受保护的标头
{
  "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
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzLzM3MzIiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiRXhhbXBsZURlZ3JlZUNyZWRlbnRpYWwiXSwiaXNzdWVyIjp7ImlkIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy81NjUwNDkiLCJuYW1lIjoiRXhhbXBsZSBVbml2ZXJzaXR5IiwiZGVzY3JpcHRpb24iOiJBIHB1YmxpYyB1bml2ZXJzaXR5IGZvY3VzaW5nIG9uIHRlYWNoaW5nIGV4YW1wbGVzLiJ9LCJ2YWxpZEZyb20iOiIyMDE1LTA1LTEwVDEyOjMwOjAwWiIsIm5hbWUiOiJFeGFtcGxlIFVuaXZlcnNpdHkgRGVncmVlIiwiZGVzY3JpcHRpb24iOiIyMDE1IEJhY2hlbG9yIG9mIFNjaWVuY2UgYW5kIEFydHMgRGVncmVlIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiaWQiOiJkaWQ6ZXhhbXBsZTplYmZlYjFmNzEyZWJjNmYxYzI3NmUxMmVjMjEiLCJkZWdyZWUiOnsidHlwZSI6IkV4YW1wbGVCYWNoZWxvckRlZ3JlZSIsIm5hbWUiOiJCYWNoZWxvciBvZiBTY2llbmNlIGFuZCBBcnRzIn19fQ .A4Cki6HWYsLH30Mijmkae6q-LdG5qX8IvBIKM9eK0WCuv3f-f2NX8haRDQDERD-5Ca5EG8DV7-q1Ou0aLp-91w
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
d28443a10128a05902807b2240636f6e74657874223a5b2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f7632222c2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f6578616d706c65732f7632225d2c226964223a22687474703a2f2f756e69766572736974792e6578616d706c652f63726564656e7469616c732f33373332222c2274797065223a5b2256657269666961626c6543726564656e7469616c222c224578616d706c6544656772656543726564656e7469616c225d2c22697373756572223a7b226964223a2268747470733a2f2f756e69766572736974792e6578616d706c652f697373756572732f353635303439222c226e616d65223a224578616d706c6520556e6976657273697479222c226465736372697074696f6e223a2241207075626c696320756e697665727369747920666f637573696e67206f6e207465616368696e67206578616d706c65732e227d2c2276616c696446726f6d223a22323031352d30352d31305431323a33303a30305a222c226e616d65223a224578616d706c6520556e697665727369747920446567726565222c226465736372697074696f6e223a22323031352042616368656c6f72206f6620536369656e636520616e64204172747320446567726565222c2263726564656e7469616c5375626a656374223a7b226964223a226469643a6578616d706c653a656266656231663731326562633666316332373665313265633231222c22646567726565223a7b2274797065223a224578616d706c6542616368656c6f72446567726565222c226e616d65223a2242616368656c6f72206f6620536369656e636520616e642041727473227d7d7d58406f3438d8c83bfaf9b10f166dbfc091dc0ab0cde81a8589161e9d0aa806abfa8f4853ca7892d34b41bf699a58ffc7166552d1e4c1d0cff699fe715b226d17e526
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJpYXQiOjE3ODkzNDA4NzUsImV4cCI6MTc5MDU1MDQ3NSwiX3NkX2FsZyI6InNoYS0yNTYiLCJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjp7Im5hbWUiOiJFeGFtcGxlIFVuaXZlcnNpdHkiLCJkZXNjcmlwdGlvbiI6IkEgcHVibGljIHVuaXZlcnNpdHkgZm9jdXNpbmcgb24gdGVhY2hpbmcgZXhhbXBsZXMuIiwiX3NkIjpbImVXVk9waEI4OXB2Ni1lUWFnblUxMFVIcWhzMzlfMTl5Si1XdWhwV012dmciXX0sInZhbGlkRnJvbSI6IjIwMTUtMDUtMTBUMTI6MzA6MDBaIiwibmFtZSI6IkV4YW1wbGUgVW5pdmVyc2l0eSBEZWdyZWUiLCJkZXNjcmlwdGlvbiI6IjIwMTUgQmFjaGVsb3Igb2YgU2NpZW5jZSBhbmQgQXJ0cyBEZWdyZWUiLCJjcmVkZW50aWFsU3ViamVjdCI6eyJkZWdyZWUiOnsibmFtZSI6IkJhY2hlbG9yIG9mIFNjaWVuY2UgYW5kIEFydHMiLCJfc2QiOlsicERIdnpWTVp1a1FISk10QWRnbHk3bld6YlNnN1lHX19ZS0JjZ2d0QjNMTSJdfSwiX3NkIjpbIlUtaDMwaDlLMFpNaXZiT25sN2UwUnNfVkdhN1RmYk9qeVo5WTVYWjd1X3MiXX0sIl9zZCI6WyI2RnA2OTJRY0FVV1NtRlJYeTNXOUtYdFhwN284aGQ2c0Ixb1VLa1BGZWJBIiwiamo5X0ljZEpYUkdNSG1hZUFHWUgxLWxuMF9wWGJLcEQzdEpCRDN5TG5VUSJdfQ .jVDzhTnMU_rGfRh3aEAI6Jfhklv8acPrnxuo73cGOFW0vbaRtoCt5M-rvsZQmZYjKWcNMBxIxvGVLFQN9r_X7Q ~WyI3T19kQVdXNk9Jb0VIai10S1JHY25BIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd~WyI0djV0VjRSTzRHUXp0ODNXOV9yZGp3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d~WyJvVHFLZWpaenYyUmxJNHpZVmVUaC13IiwgImlkIiwgImh0dHBzOi8vdW5pdmVyc2l0eS5leGFtcGxlL2lzc3VlcnMvNTY1MDQ5Il0~WyJCWkdVb2paQmRsN1FEM1pBNjUwdEV3IiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd~WyJFY00xdlVKN1VjWjdwS3d6WllubExBIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0~
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
{
  "iat": 1789340875,
  "exp": 1790550475,
  "_sd_alg": "sha-256",
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "issuer": {
    "name": "Example University",
    "description": "A public university focusing on teaching examples.",
    "_sd": [
      "eWVOphB89pv6-eQagnU10UHqhs39_19yJ-WuhpWMvvg"
    ]
  },
  "validFrom": "2015-05-10T12:30:00Z",
  "name": "Example University Degree",
  "description": "2015 Bachelor of Science and Arts Degree",
  "credentialSubject": {
    "degree": {
      "name": "Bachelor of Science and Arts",
      "_sd": [
        "pDHvzVMZukQHJMtAdgly7nWzbSg7YG__YKBcggtB3LM"
      ]
    },
    "_sd": [
      "U-h30h9K0ZMivbOnl7e0Rs_VGa7TfbOjyZ9Y5XZ7u_s"
    ]
  },
  "_sd": [
    "6Fp692QcAUWSmFRXy3W9KXtXp7o8hd6sB1oUKkPFebA",
    "jj9_IcdJXRGMHmaeAGYH1-ln0_pXbKpD3tJBD3yLnUQ"
  ]
}

声明: id

SHA-256 哈希: 6Fp692QcAUWSmFRXy3W9KXtXp7o8hd6sB1oUKkPFebA

披露: WyI3T19kQVdXNk9Jb0VIai10S1JHY25BIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd

内容: [
  "7O_dAWW6OIoEHj-tKRGcnA",
  "id",
  "http://university.example/credentials/3732"
]

声明: type

SHA-256 哈希: jj9_IcdJXRGMHmaeAGYH1-ln0_pXbKpD3tJBD3yLnUQ

披露: WyI0djV0VjRSTzRHUXp0ODNXOV9yZGp3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d

内容: [
  "4v5tV4RO4GQzt83W9_rdjw",
  "type",
  [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ]
]

声明: id

SHA-256 哈希: eWVOphB89pv6-eQagnU10UHqhs39_19yJ-WuhpWMvvg

披露: WyJvVHFLZWpaenYyUmxJNHpZVmVUaC13IiwgImlkIiwgImh0dHBzOi8vdW5pdmVyc2l0eS5leGFtcGxlL2lzc3VlcnMvNTY1MDQ5Il0

内容: [
  "oTqKejZzv2RlI4zYVeTh-w",
  "id",
  "https://university.example/issuers/565049"
]

声明: id

SHA-256 哈希: U-h30h9K0ZMivbOnl7e0Rs_VGa7TfbOjyZ9Y5XZ7u_s

披露: WyJCWkdVb2paQmRsN1FEM1pBNjUwdEV3IiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd

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

声明: type

SHA-256 哈希: pDHvzVMZukQHJMtAdgly7nWzbSg7YG__YKBcggtB3LM

披露: WyJFY00xdlVKN1VjWjdwS3d6WllubExBIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0

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

名称和描述还支持用不同语言表达内容。 要表达包含语言和基准方向信息的字符串, 可以使用包含 @value@language@direction 属性的对象,分别表示文本值、语言标签和基准方向。 有关更多信息,请参阅 9.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"
      }]
    }
  }
}

4.7 签发者

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

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

issuer
issuer 属性的值必须是 一个URL,或者是一个 包含 id 属性且该属性值为URL的对象;无论哪种情况, 签发者都会选择此URL,以在全球范围内无歧义地标识自身。 建议URL在解引用后生成 受控标识符 v1.0规范中定义的 关于签发者的受控标识符文档,该文档可用于验证 凭证中表达的信息。
示例 7: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": "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": "2026-09-13T23:07:55Z",
    "verificationMethod": "did:key:zDnaej4rRZHrUtvxgRBNpmsvLsUjFb3a3b2y5C8YtsGoexjCT",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z3sT6wdvauxfJ5DLkM22azqJSHAtVNvYY2WQuXPBcL4qLrX8afTka2vN5sbXu54DjRVntDqPVVc3GR411HwHH9riG"
  }
}
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": "2026-09-13T23:07:55Z",
    "verificationMethod": "did:key:zDnaejWrVEMxMS8KoTAUQPQ1hAcoCUK8q8bHKqyuxxwi1StSz",
    "cryptosuite": "ecdsa-sd-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0AhVhAXs-IRrLvKs87gGM-KI7eLK5PzVMfSr0GhJaPo1rXZntmgzualutFBuWvc2XFzjJwVhPc4qYPE9idZ0KOZ0rPYVgjgCQDSSNhVuLSrIjdJseTdLWDtqaV5PqA1GKUZjWKMmq4_-FYINd0Oc5teBQewGLaU1RmC-V-d1csksbeNzBdQz004yJwhVhAw7TCeVp5jP7nUgYvhZlXZn7Pa1--juVme344YIF3FNAI39qBkWJJuHta-j0S5zJbuUELYbzCMZz6F9sKDhJoFFhAbq0LenTdcS6823lcZO95vD-genq5nIdCjnx2_jAq844YpC2H9PPaxCyvQPyxDJvxXU-84luDM1YZsXpkMSLSHVhAC00zlyhsmjF_tSo0ZsZ1qERYhV3Wym8zPcMED6u0sJvLCNcjksiu_4dV7VgWLrmXoTgCBWxRzf742q0DD04jLVhAzB537ASVdqNST9frV7wbomEf8IoViYHxOAI6Xc2B9UAGoF3avNtVBXWQnAGZ_YalkzAo7AOXQvpc8IQuvu_idlhADnOcPclbGnLFQ94oETvhjxGOh-OXTORhbf1fpnFkxLJdIHtWAzw6tZgp6HdeerAi_WnCEuZFWeafjRq3ziGi34FnL2lzc3Vlcg"
  }
}
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:zUC71huiWdhS9bhS3c7qEiPnS2DFyxYSBLn9GzpW15wZMdTJ6tjWEsgyExiAZ8XkrEu8Y5Tpsvu1RwQi6Bzy4ce8Wvf8ikZUfYaVZVNcUi8aiExBhEsZ2T5HwNWT1fqyAbAKuqZ",
    "cryptosuite": "bbs-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0ChVhQg3QiSkQkm0uMb_L4yGE53ReWvWi1lQVJgOkwx1czxxuwvVPWlH4IY2JTHuyLyfebVPYS25j-5n_gRtG3nxyzgVgQubThcCFP1Zy5DnX0CBBYQOzFWI0_8JjFsAHB4_NK3_pWM4lOH75F-B273Huck8o7Knv3N5iX7nvZR0OCXS-uXH4QQ9mW65QM5qlHOfE4GQVYYIJATjbZefKgHbjwatWVl7Q-K64WmVuyLwHk0iyY3Aks-wtSG8xQUeXNgZlDJttjsAkuT-bn-COio-nUPyf2B7fI9uOFrugJSQdqt6e57w94B34WzKJpEhv0nTEPJ0byMFggLSJgfGLvPmzz6ocE7lWDUEem7WZ0dWpliB0cedt86AWBZy9pc3N1ZXI"
  }
}
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
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzLzM3MzIiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiRXhhbXBsZURlZ3JlZUNyZWRlbnRpYWwiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy8xNCIsInZhbGlkRnJvbSI6IjIwMTAtMDEtMDFUMTk6MjM6MjRaIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiaWQiOiJkaWQ6ZXhhbXBsZTplYmZlYjFmNzEyZWJjNmYxYzI3NmUxMmVjMjEiLCJkZWdyZWUiOnsidHlwZSI6IkV4YW1wbGVCYWNoZWxvckRlZ3JlZSIsIm5hbWUiOiJCYWNoZWxvciBvZiBTY2llbmNlIGFuZCBBcnRzIn19fQ .0dQNHKRyjyIe5XqpJKVhXJSJb5CKRUArC0LvMf8YUaaOEiFawAIpxBFgagKFCUDE2UapPyjGldbpjEHrkVlj6Q
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
d28443a10128a05901ba7b2240636f6e74657874223a5b2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f7632222c2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f6578616d706c65732f7632225d2c226964223a22687474703a2f2f756e69766572736974792e6578616d706c652f63726564656e7469616c732f33373332222c2274797065223a5b2256657269666961626c6543726564656e7469616c222c224578616d706c6544656772656543726564656e7469616c225d2c22697373756572223a2268747470733a2f2f756e69766572736974792e6578616d706c652f697373756572732f3134222c2276616c696446726f6d223a22323031302d30312d30315431393a32333a32345a222c2263726564656e7469616c5375626a656374223a7b226964223a226469643a6578616d706c653a656266656231663731326562633666316332373665313265633231222c22646567726565223a7b2274797065223a224578616d706c6542616368656c6f72446567726565222c226e616d65223a2242616368656c6f72206f6620536369656e636520616e642041727473227d7d7d58401dae809f902a9613d606861232c761a684c8be5c029d5a1bbf64b309e74e6a73f21d019381c0837224964f5b8d7c12a7065aa310749cdb386eceebe7f11731d1
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJpYXQiOjE3ODkzNDA4NzUsImV4cCI6MTc5MDU1MDQ3NSwiX3NkX2FsZyI6InNoYS0yNTYiLCJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy8xNCIsInZhbGlkRnJvbSI6IjIwMTAtMDEtMDFUMTk6MjM6MjRaIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiZGVncmVlIjp7Im5hbWUiOiJCYWNoZWxvciBvZiBTY2llbmNlIGFuZCBBcnRzIiwiX3NkIjpbIlZpUlNPanN5c1lFVUZUS0FlN3Z2akEwLUFSb1hZV2tDOFpMZlBRb3FSMWsiXX0sIl9zZCI6WyJ5VHVodk90X21KWmhPbFhQMFQ4UVdUWFYxZnp3cU5aQ0hHMC1DN3RRekIwIl19LCJfc2QiOlsicmdQWV9uNXMxMDA5Tk1pT3pwbkFiUnEzRWRhRGphd05UTW5NajVMMjZGTSIsInZoNjh6UU9RNGFIY2hxNlNLZS1tOW9hMGsxTl9jQndJdFJKMVZqeDd5QWsiXX0 .IzbyZlA_OaUgQmnOy1Ta27etRv71VYD_8FgIUhoRs61Scgs8qCiivRhVGg24G9J9Ig5Hr9VzVXPsZk0ndo4iTw ~WyJOUEx4eE1nZGFqQWpsdTVIZ2cwZEZBIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd~WyJDSHpwMzBFUUlOWl9oSVp1dkh1a3hBIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d~WyJsY1ZRZ3NicGhsX1N2czNfd0NObTlnIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd~WyIzemdVVW10ZHBNYnUwLXlvVzNfb05RIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0~
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
{
  "iat": 1789340875,
  "exp": 1790550475,
  "_sd_alg": "sha-256",
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "degree": {
      "name": "Bachelor of Science and Arts",
      "_sd": [
        "ViRSOjsysYEUFTKAe7vvjA0-ARoXYWkC8ZLfPQoqR1k"
      ]
    },
    "_sd": [
      "yTuhvOt_mJZhOlXP0T8QWTXV1fzwqNZCHG0-C7tQzB0"
    ]
  },
  "_sd": [
    "rgPY_n5s1009NMiOzpnAbRq3EdaDjawNTMnMj5L26FM",
    "vh68zQOQ4aHchq6SKe-m9oa0k1N_cBwItRJ1Vjx7yAk"
  ]
}

声明: id

SHA-256 哈希: rgPY_n5s1009NMiOzpnAbRq3EdaDjawNTMnMj5L26FM

披露: WyJOUEx4eE1nZGFqQWpsdTVIZ2cwZEZBIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd

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

声明: type

SHA-256 哈希: vh68zQOQ4aHchq6SKe-m9oa0k1N_cBwItRJ1Vjx7yAk

披露: WyJDSHpwMzBFUUlOWl9oSVp1dkh1a3hBIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d

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

声明: id

SHA-256 哈希: yTuhvOt_mJZhOlXP0T8QWTXV1fzwqNZCHG0-C7tQzB0

披露: WyJsY1ZRZ3NicGhsX1N2czNfd0NObTlnIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd

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

声明: type

SHA-256 哈希: ViRSOjsysYEUFTKAe7vvjA0-ARoXYWkC8ZLfPQoqR1k

披露: WyIzemdVVW10ZHBNYnUwLXlvVzNfb05RIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0

内容: [
  "3zgUUmtdpMbu0-yoW3_oNQ",
  "type",
  "ExampleBachelorDegree"
]

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

示例 8: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": "2026-09-13T23:07:55Z",
    "verificationMethod": "did:key:zDnaej4rRZHrUtvxgRBNpmsvLsUjFb3a3b2y5C8YtsGoexjCT",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z5gWpDCRzfJf9TdvgkJYa3US2UC9ykNtR2oBcjtwjSViqdMYyFtDsQCrxE7K5kp6S3KqEnnBoaoAoycbkFcfdJHxc"
  }
}
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": "2026-09-13T23:07:55Z",
    "verificationMethod": "did:key:zDnaejWrVEMxMS8KoTAUQPQ1hAcoCUK8q8bHKqyuxxwi1StSz",
    "cryptosuite": "ecdsa-sd-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0AhVhApXUD2i2WOnwwj1ejYUat8grxuH8QIUAH2Qdvx0PJj8isAeutNhSUwDvfxc5eODXA9zhT63xcv-Az52GVDoaIb1gjgCQCqj2PL3sniJIXWBomxoPeXbXM3sdFdZ7Q7n6gHeHLcHRYIJPvo_Mc97_w48OmFLI-urU2niF_SHYiSKDs1A9Mc8R4hVhA8_vJZiTzyMn9PQvUqstHYISQ5XO5xct0B9SlPbRB2wtEfyHwMrh6JnLNxysES9OYeJhHLBYl-F5S6rQQgiBJ1lhA9WQdpMu2AJ7D3ZVed9JjQk2PvCQMRnYwZ-QbUyouOS4Gxs4Jeydcs-bS0AGse3PfcEmFAd2nvmmSGOFdFFh1U1hAwoZnwWFMOZRkonzBdg5m2YdM1wjR4Zxg7Nh59jcQhJpb2OTQi3fgPZgSmoBro-2abtTZLzq3abQ8Z9pLCCBG5FhA3dpwqfEwtBYULajX5RRs_6-_XV3cSz9ZZAl-xytNxE2VUWlWQrvA7mwSSCYsPh083VoG5Bhs7NXBUgQ14R-bKFhALtdrwzOVsjJMubx_KzYR6K7fpecrJAjGeh_sdv0MpnzSZTBTQoN1WATFxOQfJd90G_EjEVK7hSUinQA3_V_klYFnL2lzc3Vlcg"
  }
}
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:zUC71huiWdhS9bhS3c7qEiPnS2DFyxYSBLn9GzpW15wZMdTJ6tjWEsgyExiAZ8XkrEu8Y5Tpsvu1RwQi6Bzy4ce8Wvf8ikZUfYaVZVNcUi8aiExBhEsZ2T5HwNWT1fqyAbAKuqZ",
    "cryptosuite": "bbs-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0ChVhQhPahYjKJCqMUki511TgUzj5vQGE7Y4B_n_KmqwdbpflginLwGTkbvQmmD79ooGWJFhX1d6sCJ11s_7hV_Cmpz1cCAJpCCCWwde6MmSsZdvxYQOzFWI0_8JjFsAHB4_NK3_pWM4lOH75F-B273Huck8o7QAGpGXTZS6rwOppAPreXlDb3xQb46PJ_xcVri0glVYJYYIJATjbZefKgHbjwatWVl7Q-K64WmVuyLwHk0iyY3Aks-wtSG8xQUeXNgZlDJttjsAkuT-bn-COio-nUPyf2B7fI9uOFrugJSQdqt6e57w94B34WzKJpEhv0nTEPJ0byMFggvWv8LCoq1enEHfSNMGTZeefdKlZmCY2u5OeU3uTCmxGBZy9pc3N1ZXI"
  }
}
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
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzLzM3MzIiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiRXhhbXBsZURlZ3JlZUNyZWRlbnRpYWwiXSwiaXNzdWVyIjp7ImlkIjoiZGlkOmV4YW1wbGU6NzZlMTJlYzcxMmViYzZmMWMyMjFlYmZlYjFmIiwibmFtZSI6IkV4YW1wbGUgVW5pdmVyc2l0eSJ9LCJ2YWxpZEZyb20iOiIyMDEwLTAxLTAxVDE5OjIzOjI0WiIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImlkIjoiZGlkOmV4YW1wbGU6ZWJmZWIxZjcxMmViYzZmMWMyNzZlMTJlYzIxIiwiZGVncmVlIjp7InR5cGUiOiJFeGFtcGxlQmFjaGVsb3JEZWdyZWUiLCJuYW1lIjoiQmFjaGVsb3Igb2YgU2NpZW5jZSBhbmQgQXJ0cyJ9fX0 .6BDSgP1bY_f4saGif9cljNpRpPHC9LcrfwL-5wx40hskBHUO_RZ1ozLpy9emlIDQaxXKSlj5cVejlPvzcApLlQ
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
d28443a10128a05901df7b2240636f6e74657874223a5b2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f7632222c2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f6578616d706c65732f7632225d2c226964223a22687474703a2f2f756e69766572736974792e6578616d706c652f63726564656e7469616c732f33373332222c2274797065223a5b2256657269666961626c6543726564656e7469616c222c224578616d706c6544656772656543726564656e7469616c225d2c22697373756572223a7b226964223a226469643a6578616d706c653a373665313265633731326562633666316332323165626665623166222c226e616d65223a224578616d706c6520556e6976657273697479227d2c2276616c696446726f6d223a22323031302d30312d30315431393a32333a32345a222c2263726564656e7469616c5375626a656374223a7b226964223a226469643a6578616d706c653a656266656231663731326562633666316332373665313265633231222c22646567726565223a7b2274797065223a224578616d706c6542616368656c6f72446567726565222c226e616d65223a2242616368656c6f72206f6620536369656e636520616e642041727473227d7d7d5840a38a834398f3a6e465328e355556a80fea3983c392e34f87b338d708576374d5412c939cf589c9741afbe5ccfad7111889c62636100d906ac99f355050f2d2d6
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJpYXQiOjE3ODkzNDA4NzUsImV4cCI6MTc5MDU1MDQ3NSwiX3NkX2FsZyI6InNoYS0yNTYiLCJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjp7Im5hbWUiOiJFeGFtcGxlIFVuaXZlcnNpdHkiLCJfc2QiOlsiajFRa19JbHMyaEhUVDdzT0NlVnFFMER5NTNSSndTRHlqY2VHTUFaMWFtdyJdfSwidmFsaWRGcm9tIjoiMjAxMC0wMS0wMVQxOToyMzoyNFoiLCJjcmVkZW50aWFsU3ViamVjdCI6eyJkZWdyZWUiOnsibmFtZSI6IkJhY2hlbG9yIG9mIFNjaWVuY2UgYW5kIEFydHMiLCJfc2QiOlsiM3JrcUQ1WVdrZzFyZXlrQTJydEVtdVhKeHpyUmhNOUJ4ZktFVno0NDROVSJdfSwiX3NkIjpbIk1iNXlrX2NHRkRFVXgyLWpRWUZkdldmVkU4bUR1VTltNnNZVXhfR0xZRTAiXX0sIl9zZCI6WyJGMlFVLU5VS1B6SExCZjJydzM0MkhZTjRUbmFyaVd5TFhPeWxuM2lyU21ZIiwicTM1N2hYeVpQeHlBcXFiUjJIVlczS2NxR0ZtSGYyZ0xPVGRuODRpaDlBNCJdfQ .1ekvX03b_u92xUobVumTQWW1I5EvLuSTPY_hVGNn_EFYAfqq_nopZ1PhojHr7M2LwyW584cmLxIR20vs2vpC8g ~WyJXdl9KdFJKQ0daWjlWb2R6eXlqZWFRIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd~WyJ3X3NKUXRkUVlpS3V2aTFLdjlHY1ZBIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d~WyIzc2tJdFU4ZzZNRVVyRDV2ZTBQSTB3IiwgImlkIiwgImRpZDpleGFtcGxlOjc2ZTEyZWM3MTJlYmM2ZjFjMjIxZWJmZWIxZiJd~WyI2MmM4SlRVTTRCTFdCX2J1QlI2WVJRIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd~WyJaSnFhaUZvd1ZLTXBxaTFQN3U2R2hnIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0~
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
{
  "iat": 1789340875,
  "exp": 1790550475,
  "_sd_alg": "sha-256",
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "issuer": {
    "name": "示例大学",
    "_sd": [
      "j1Qk_Ils2hHTT7sOCeVqE0Dy53RJwSDyjceGMAZ1amw"
    ]
  },
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "degree": {
      "name": "理学与文学学士",
      "_sd": [
        "3rkqD5YWkg1reykA2rtEmuXJxzrRhM9BxfKEVz444NU"
      ]
    },
    "_sd": [
      "Mb5yk_cGFDEUx2-jQYFdvWfVE8mDuU9m6sYUx_GLYE0"
    ]
  },
  "_sd": [
    "F2QU-NUKPzHLBf2rw342HYN4TnariWyLXOyln3irSmY",
    "q357hXyZPxyAqqbR2HVW3KcqGFmHf2gLOTdn84ih9A4"
  ]
}

声明: id

SHA-256 哈希: q357hXyZPxyAqqbR2HVW3KcqGFmHf2gLOTdn84ih9A4

披露: WyJXdl9KdFJKQ0daWjlWb2R6eXlqZWFRIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd

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

声明: type

SHA-256 哈希: F2QU-NUKPzHLBf2rw342HYN4TnariWyLXOyln3irSmY

披露: WyJ3X3NKUXRkUVlpS3V2aTFLdjlHY1ZBIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d

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

声明: id

SHA-256 哈希: j1Qk_Ils2hHTT7sOCeVqE0Dy53RJwSDyjceGMAZ1amw

披露: WyIzc2tJdFU4ZzZNRVVyRDV2ZTBQSTB3IiwgImlkIiwgImRpZDpleGFtcGxlOjc2ZTEyZWM3MTJlYmM2ZjFjMjIxZWJmZWIxZiJd

内容: [
  "3skItU8g6MEUrD5ve0PI0w",
  "id",
  "did:example:76e12ec712ebc6f1c221ebfeb1f"
]

声明: id

SHA-256 哈希: Mb5yk_cGFDEUx2-jQYFdvWfVE8mDuU9m6sYUx_GLYE0

披露: WyI2MmM4SlRVTTRCTFdCX2J1QlI2WVJRIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd

内容: [
  "62c8JTUM4BLWB_buBR6YRQ",
  "id",
  "did:example:ebfeb1f712ebc6f1c276e12ec21"
]

声明: type

SHA-256 哈希: 3rkqD5YWkg1reykA2rtEmuXJxzrRhM9BxfKEVz444NU

披露: WyJaSnFhaUZvd1ZLTXBxaTFQN3U2R2hnIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0

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

: 签发者的标识符可以是任何 URL

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

4.8 凭证主体

可验证凭证包含关于一个或多个主体声明。 本规范定义了一个 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": "2026-09-13T23:07:55Z",
    "verificationMethod": "did:key:zDnaej4rRZHrUtvxgRBNpmsvLsUjFb3a3b2y5C8YtsGoexjCT",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z26RPiFEWCfmJWVWhA6etUX9NfuDqRRR6bZok7caWvPnwJDrtS61MsV4PZgB2pyacD96McVzGtr5W8eknJAfjkEoe"
  }
}
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": "2026-09-13T23:07:55Z",
    "verificationMethod": "did:key:zDnaejWrVEMxMS8KoTAUQPQ1hAcoCUK8q8bHKqyuxxwi1StSz",
    "cryptosuite": "ecdsa-sd-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0AhVhAak1OYZWwV7fewlzUKB-mxRAwzgrJlhKx-b_BI-2AL8iXfpLRL17YathllZIy90xNwQZAC3Tdrt8BiAzqdDzsoFgjgCQC06p8dSxjbPsMuoZ1G8tuikSFbHUsAlIWAhI54AbFOP1YIGswFiQz9guqPOL360_rdU4lKcT0qOatsNAiTt_h1IZnhVhA4sd2a9RO68qRLJNwhGuJCPL-Eh6PEwbp94NRtntYLvJTueBkFME4icZBNHRXB6Nk1vOCO5afbxm7rwx2h1tKk1hAIhyhfBzA9oI1yDeSohIwv2i1bnzT4ozAm4U7mTS-QezPQHI_OeAJmjPbmXCASNB7iXviLNPZIifjkZ4moEiSKFhAyeJS-oOppNIfvpebCmO1ZpmSuwRwLKJJxHTOTajlix2W0X7Vw7PxQJhXlHPPsxvKg7B2GELwmlCSJr4Nq7cldFhA-FGhq2fU84EaZHwvpyP2JmYw_u45XjP1JfSkr3UXmfUPr1lA6fCi704b_0xoSzfbStNIhSLUYyMCmkq_hitFjlhA0WdS4YH9eqB-oaTxZaUfWPZ1gC9kDmMVBFrlg71lLD8sYsmAiChxneJB0429gxK7df7tH8I78geVbuPxGZIbTIFnL2lzc3Vlcg"
  }
}
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:zUC71huiWdhS9bhS3c7qEiPnS2DFyxYSBLn9GzpW15wZMdTJ6tjWEsgyExiAZ8XkrEu8Y5Tpsvu1RwQi6Bzy4ce8Wvf8ikZUfYaVZVNcUi8aiExBhEsZ2T5HwNWT1fqyAbAKuqZ",
    "cryptosuite": "bbs-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0ChVhQtQpDaCdROmgVtLoZJws9Za8LuJOHOUyvjngxla2Ef4zyJuGuJ07lTgEXIqi_KbjUD4Hr7ca3YkaeZeTarcsQCn7OLo_EzIccVM2LgezMRORYQOzFWI0_8JjFsAHB4_NK3_pWM4lOH75F-B273Huck8o7S1r7HKFDPyyrvPGqNF8bjgNELvoomOjpbD9JEvaGI1pYYIJATjbZefKgHbjwatWVl7Q-K64WmVuyLwHk0iyY3Aks-wtSG8xQUeXNgZlDJttjsAkuT-bn-COio-nUPyf2B7fI9uOFrugJSQdqt6e57w94B34WzKJpEhv0nTEPJ0byMFgg0z5yLf3oGieti7Ggow1NWs-MNPQRCHnSBMxuv-PomCyBZy9pc3N1ZXI"
  }
}
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
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzLzM3MzIiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiRXhhbXBsZURlZ3JlZUNyZWRlbnRpYWwiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy81NjUwNDkiLCJ2YWxpZEZyb20iOiIyMDEwLTAxLTAxVDAwOjAwOjAwWiIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImlkIjoiZGlkOmV4YW1wbGU6ZWJmZWIxZjcxMmViYzZmMWMyNzZlMTJlYzIxIiwiZGVncmVlIjp7InR5cGUiOiJFeGFtcGxlQmFjaGVsb3JEZWdyZWUiLCJuYW1lIjoiQmFjaGVsb3Igb2YgU2NpZW5jZSBhbmQgQXJ0cyJ9fX0 .yLdFer4frDAiQnWjH4YfmSO2ugr55kkM_3VfJ5ywYVfL5nzZvpfqMtQZnzmROZQBuiDNiPbJs-LBBSsA5XLceA
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
d28443a10128a05901be7b2240636f6e74657874223a5b2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f7632222c2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f6578616d706c65732f7632225d2c226964223a22687474703a2f2f756e69766572736974792e6578616d706c652f63726564656e7469616c732f33373332222c2274797065223a5b2256657269666961626c6543726564656e7469616c222c224578616d706c6544656772656543726564656e7469616c225d2c22697373756572223a2268747470733a2f2f756e69766572736974792e6578616d706c652f697373756572732f353635303439222c2276616c696446726f6d223a22323031302d30312d30315430303a30303a30305a222c2263726564656e7469616c5375626a656374223a7b226964223a226469643a6578616d706c653a656266656231663731326562633666316332373665313265633231222c22646567726565223a7b2274797065223a224578616d706c6542616368656c6f72446567726565222c226e616d65223a2242616368656c6f72206f6620536369656e636520616e642041727473227d7d7d58404a1eec3290bfe3f0cfb8235deaf4b27ab011f812b829853630e7129e287942b998d47b706c6d6e647f41a9626838e49f01a5070a588286605d59b7dbbbf318c6
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJpYXQiOjE3ODkzNDA4NzUsImV4cCI6MTc5MDU1MDQ3NSwiX3NkX2FsZyI6InNoYS0yNTYiLCJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy81NjUwNDkiLCJ2YWxpZEZyb20iOiIyMDEwLTAxLTAxVDAwOjAwOjAwWiIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImRlZ3JlZSI6eyJuYW1lIjoiQmFjaGVsb3Igb2YgU2NpZW5jZSBhbmQgQXJ0cyIsIl9zZCI6WyJaYlJOQUloVkJ5S0ZUV1NQbGJSaFNPRVpIczhobnl5N0hBeUxjdExsRmJBIl19LCJfc2QiOlsidkZReXBld0c3eE5ZQzEwcmE2bVRBVFRubnFKeVYtR2FtVU9RX2o5NUNCQSJdfSwiX3NkIjpbIklOZXplV3Z2ZkhFUWtpWVJQMFpOZkNEX2ZxeXRWMVl2RkNFMVpPM3ZhZk0iLCJfYlFMZ0xOUkdRRW1KTE9uQWFOVVM2NjhSUnJPSFFNZDgybU1keW1XdTRvIl19 .wxTQEUKpUZi9_Qadh-lKcwryW6vwHTvOD2GGnEZsHTII_5WFI6G_KhHBL70IR4LYYlMxdIgo9KQ3NhSDhoJsDQ ~WyIzUmpMZWM5YXR0cHRhblViWnNqTDR3IiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd~WyI4UXlsUmpQczBfYVd5V2JzMDlSb0dnIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d~WyJzRFB3cHltVlJ2M0luNnYzSzBPZ2d3IiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd~WyJZVGIxUTNndjlCODA0UVBpNkUtdTlnIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0~
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
{
  "iat": 1789340875,
  "exp": 1790550475,
  "_sd_alg": "sha-256",
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "degree": {
      "name": "理学与文学学士",
      "_sd": [
        "ZbRNAIhVByKFTWSPlbRhSOEZHs8hnyy7HAyLctLlFbA"
      ]
    },
    "_sd": [
      "vFQypewG7xNYC10ra6mTATTnnqJyV-GamUOQ_j95CBA"
    ]
  },
  "_sd": [
    "INezeWvvfHEQkiYRP0ZNfCD_fqytV1YvFCE1ZO3vafM",
    "_bQLgLNRGQEmJLOnAaNUS668RRrOHQMd82mMdymWu4o"
  ]
}

声明: id

SHA-256 哈希: INezeWvvfHEQkiYRP0ZNfCD_fqytV1YvFCE1ZO3vafM

披露: WyIzUmpMZWM5YXR0cHRhblViWnNqTDR3IiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd

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

声明: type

SHA-256 哈希: _bQLgLNRGQEmJLOnAaNUS668RRrOHQMd82mMdymWu4o

披露: WyI4UXlsUmpQczBfYVd5V2JzMDlSb0dnIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d

内容: [
  "8QylRjPs0_aWyWbs09RoGg",
  "type",
  [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ]
]

声明: id

SHA-256 哈希: vFQypewG7xNYC10ra6mTATTnnqJyV-GamUOQ_j95CBA

披露: WyJzRFB3cHltVlJ2M0luNnYzSzBPZ2d3IiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd

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

声明: type

SHA-256 哈希: ZbRNAIhVByKFTWSPlbRhSOEZHs8hnyy7HAyLctLlFbA

披露: WyJZVGIxUTNndjlCODA0UVBpNkUtdTlnIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0

内容: [
  "YTb1Q3gv9B804QPi6E-u9g",
  "type",
  "ExampleBachelorDegree"
]

可以在可验证凭证中表达与多个主体相关的信息。下面的示例 指定了两个互为配偶的 主体。请注意,其中使用数组表示法将 多个主体credentialSubject 属性相关联。

示例 10:在可验证凭证中指定多个 主体
{
  "@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"
  }]
}

4.9 有效期

本规范定义了 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": "2026-09-13T23:07:55Z",
    "verificationMethod": "did:key:zDnaej4rRZHrUtvxgRBNpmsvLsUjFb3a3b2y5C8YtsGoexjCT",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z3HFbTpqzPVHcPvGG89p31VMxjhAiEHxkAmB82CAEmsBMMEgswXHmLWw3czqph39ErnEVXt943c43eh53u8eJJWEm"
  }
}
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": "2026-09-13T23:07:55Z",
    "verificationMethod": "did:key:zDnaejWrVEMxMS8KoTAUQPQ1hAcoCUK8q8bHKqyuxxwi1StSz",
    "cryptosuite": "ecdsa-sd-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0AhVhATIqpBycy1dJj4VvMJ3ls-X3jqL090YMs-usu3HvX7vIAOHRI0K7Gr7NlQ2oQGhfY7StyNwVDpEZ0ZNHxbWvox1gjgCQDpAWZllsrrxhfgbogW392NvV_h0Hq2P2xXOiWR1eQquZYIKDaeV15W-4kVBvrsAptzmi3BBCR_KN_wQ9DR4kPCE8uhlhATWIDjiMKU1Bcurro9eZf7YdBJBcLm_k0cqSLtdEz_Ijnm1Bdfp_ii7HKpsUVnAWo5I62bpIERsTE97X3Qql1p1hAMfI5woAuQVlZDo0DrH7dH3w8Z9ZBVQK5jeNzknVFo16JMiTf1VE95PtEEg12W_DbVOkSbPby-XTL0fLqYDKGU1hAoNMd24kg-0e0UuG_iz6h3_5e1BcbpQ5NLK6uwol5om5GvpssGzkqGRUbHFJpLSkrSfZYvkMnafV6ljq51tq8nFhAHK4_FdiF6eg1VAqDAVRLH3GAIKGQVVyoexGwoSIXR2tSvFU5isdSdRD90xtgsUaHlW4ngB_e7zYhak2Yc5TZp1hAkMRq5jRvb_W7pkUPy0EMlF8XwagKxCXPfEmKFuTXG8dE3gXsrNp84dN-iWgTvtT1i6LQUEYZrkaBwUlwqx3NE1hANXA87ZFFp16DywOnsKdd2Fw5OBRHV4O11uw-st6RHZCAbCvD8q30qxbzN4o-zvlcF1QyGPF1HmnuPC_TFUmVyoFnL2lzc3Vlcg"
  }
}
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:zUC71huiWdhS9bhS3c7qEiPnS2DFyxYSBLn9GzpW15wZMdTJ6tjWEsgyExiAZ8XkrEu8Y5Tpsvu1RwQi6Bzy4ce8Wvf8ikZUfYaVZVNcUi8aiExBhEsZ2T5HwNWT1fqyAbAKuqZ",
    "cryptosuite": "bbs-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0ChVhQhnapEs5ywkeF3oj5O4roybKahHElbzHOOp6JKR0xgZCGO4AsBJ865AyhINI5lbQDZMOe8lD4yNnRYh06KI0sMPQcF7E2NunzM7PK0tcm7ytYQOzFWI0_8JjFsAHB4_NK3_pWM4lOH75F-B273Huck8o7Knv3N5iX7nvZR0OCXS-uXH4QQ9mW65QM5qlHOfE4GQVYYIJATjbZefKgHbjwatWVl7Q-K64WmVuyLwHk0iyY3Aks-wtSG8xQUeXNgZlDJttjsAkuT-bn-COio-nUPyf2B7fI9uOFrugJSQdqt6e57w94B34WzKJpEhv0nTEPJ0byMFggZrEKMISU7ERWYz-LCn12IaB11Z2sog4WM1yCZK1GET-BZy9pc3N1ZXI"
  }
}
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
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzLzM3MzIiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiRXhhbXBsZURlZ3JlZUNyZWRlbnRpYWwiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy8xNCIsInZhbGlkRnJvbSI6IjIwMTAtMDEtMDFUMTk6MjM6MjRaIiwidmFsaWRVbnRpbCI6IjIwMjAtMDEtMDFUMTk6MjM6MjRaIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiaWQiOiJkaWQ6ZXhhbXBsZTplYmZlYjFmNzEyZWJjNmYxYzI3NmUxMmVjMjEiLCJkZWdyZWUiOnsidHlwZSI6IkV4YW1wbGVCYWNoZWxvckRlZ3JlZSIsIm5hbWUiOiJCYWNoZWxvciBvZiBTY2llbmNlIGFuZCBBcnRzIn19fQ .jsw3hw02U-YRGNj1NIHUwvtdIahxAVvU1AoLGjyeaGpSjTc3WMH4sqvj5WJ_2k9RzHvSBbY2mU4v8bam8BpQMQ
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
d28443a10128a05901de7b2240636f6e74657874223a5b2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f7632222c2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f6578616d706c65732f7632225d2c226964223a22687474703a2f2f756e69766572736974792e6578616d706c652f63726564656e7469616c732f33373332222c2274797065223a5b2256657269666961626c6543726564656e7469616c222c224578616d706c6544656772656543726564656e7469616c225d2c22697373756572223a2268747470733a2f2f756e69766572736974792e6578616d706c652f697373756572732f3134222c2276616c696446726f6d223a22323031302d30312d30315431393a32333a32345a222c2276616c6964556e74696c223a22323032302d30312d30315431393a32333a32345a222c2263726564656e7469616c5375626a656374223a7b226964223a226469643a6578616d706c653a656266656231663731326562633666316332373665313265633231222c22646567726565223a7b2274797065223a224578616d706c6542616368656c6f72446567726565222c226e616d65223a2242616368656c6f72206f6620536369656e636520616e642041727473227d7d7d5840024b493cd788e0d4f8def48bb3d6e851a147c2383e0765a194bdc9ecc2e3d0503e98cfba12aed50061787730955fb46611936930265f9762a1f69f2ffa1a5327
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJpYXQiOjE3ODkzNDA4NzUsImV4cCI6MTc5MDU1MDQ3NSwiX3NkX2FsZyI6InNoYS0yNTYiLCJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy8xNCIsInZhbGlkRnJvbSI6IjIwMTAtMDEtMDFUMTk6MjM6MjRaIiwidmFsaWRVbnRpbCI6IjIwMjAtMDEtMDFUMTk6MjM6MjRaIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiZGVncmVlIjp7Im5hbWUiOiJCYWNoZWxvciBvZiBTY2llbmNlIGFuZCBBcnRzIiwiX3NkIjpbIkxidi1LbVg3N3ktdmd0dU9mR3dxLVpzV293aldYNF9HTjdhZjZMQUhYZUUiXX0sIl9zZCI6WyJJSzFEMjEzLXlkX1dhblJObVVEdGhRaWhveV9qNjRUX1VXTEFGcmVvdXpNIl19LCJfc2QiOlsiMXQzZ1BYVnRhRFM0X0JvQTJ1OE41Y1MxaUFKU001VlNPZVF2cVlDTGNEYyIsIktNYnRyQW1ZSlltWF85V1V5ZHBGbjl1MnZUQzdLT1J6LWYxNzd4Vi1QYmMiXX0 .hON52RZi1oIAkqFqD6wF5shyV4vsWOX0y9zvKvI1ALLS5cBhXJgnIBQ6JVMag9SZvRNX2OJos3KxgtAQqGPx1A ~WyJwT2d5WWczdTZ6UnNFempDcGxZdFJRIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd~WyJFWmtvTF9Ydl9DbHJvYlZ0RnF3WEJnIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d~WyJGZ0VESVp3VzZZYTJfVWxVaW1KdkxBIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd~WyJOSEpNLTRBek5LWk50clpSS19rX0pnIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0~
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
{
  "iat": 1789340875,
  "exp": 1790550475,
  "_sd_alg": "sha-256",
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "validUntil": "2020-01-01T19:23:24Z",
  "credentialSubject": {
    "degree": {
      "name": "理学与文学学士",
      "_sd": [
        "Lbv-KmX77y-vgtuOfGwq-ZsWowjWX4_GN7af6LAHXeE"
      ]
    },
    "_sd": [
      "IK1D213-yd_WanRNmUDthQihoy_j64T_UWLAFreouzM"
    ]
  },
  "_sd": [
    "1t3gPXVtaDS4_BoA2u8N5cS1iAJSM5VSOeQvqYCLcDc",
    "KMbtrAmYJYmX_9WUydpFn9u2vTC7KORz-f177xV-Pbc"
  ]
}

声明: id

SHA-256 哈希: 1t3gPXVtaDS4_BoA2u8N5cS1iAJSM5VSOeQvqYCLcDc

披露: WyJwT2d5WWczdTZ6UnNFempDcGxZdFJRIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd

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

声明: type

SHA-256 哈希: KMbtrAmYJYmX_9WUydpFn9u2vTC7KORz-f177xV-Pbc

披露: WyJFWmtvTF9Ydl9DbHJvYlZ0RnF3WEJnIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d

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

声明: id

SHA-256 哈希: IK1D213-yd_WanRNmUDthQihoy_j64T_UWLAFreouzM

披露: WyJGZ0VESVp3VzZZYTJfVWxVaW1KdkxBIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd

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

声明: type

SHA-256 哈希: Lbv-KmX77y-vgtuOfGwq-ZsWowjWX4_GN7af6LAHXeE

披露: WyJOSEpNLTRBek5LWk50clpSS19rX0pnIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0

内容: [
  "NHJM-4AzNKZNtrZRK_k_Jg",
  "type",
  "ExampleBachelorDegree"
]

:可验证凭证 有效期的起始时间

如果未提供 validFromvalidUntil, 则可验证凭证的有效期被视为 无限期有效。在这种情况下,假定可验证凭证verifiable credential 创建之时起有效。

4.10 状态

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

如果存在,与 credentialStatus 属性关联的值是 单个对象或由一个或多个对象组成的集合。为每个对象定义了以下属性

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

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

示例 12:status 属性的使用
{
  "@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"
  }
}

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

示例 13:status 属性使用多个条目
{
  "@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"
  }]
}

请实现者注意,具有多个状态条目的凭证 可能包含相互冲突的信息。协调此类冲突属于确认过程的一部分,因而属于验证者的业务逻辑, 因此不在本规范的范围内。

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

凭证状态规范不得支持跟踪个人,例如当 验证者对特定持有者主体感兴趣时,直接或间接通知 签发者。不可接受的方法包括“回传查询”,即每次使用凭证时都联系 该凭证的签发者,检查特定个人的状态; 或者“降低假名性”,即每次使用凭证时,都会 向签发者请求信息,使该签发者能够 推断出验证者对特定个人的兴趣。

4.11 数据模式

在对给定数据集合强制采用特定结构时,数据模式非常有用。 本规范至少考虑以下两种数据模式:

需要理解的是,数据模式与 @context 属性的用途不同; 后者既不强制规定数据结构或数据语法,也无法定义 到其他表示格式的任意编码。

本规范定义了以下用于表达数据模式的属性签发者可以将其包含在自己签发的可验证凭证中:

credentialSchema

credentialSchema 属性的值必须是一个或 多个数据模式,这些模式应为验证者提供足够的信息, 使其能够确定所提供的数据是否符合所提供的模式。每个 credentialSchema必须指定其 type(例如 JsonSchema)以及一个 id 属性, 该属性必须是用于标识模式文件的URL。具体的类型 定义决定每个数据模式的确切内容。

如果存在多个模式,则按照每个关联的 type 属性所规定的 处理规则确定有效性。

:可以执行 特定于凭证类型的语法检查

credentialSchema 属性允许 对类型定义进行注释,或者将其锁定到词汇表的特定版本。 可验证凭证的作者可以使用 credentialSchema 包含其词汇表的静态版本,并通过某种内容 完整性保护机制对其进行保护。credentialSchema 属性还可以对 凭证执行语法检查,并使用验证机制,例如 JSON Schema [VC-JSON-SCHEMA] 确认。

示例 14:使用 credentialSchema 属性执行 JSON Schema 确认
{
  "@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] 文件, 验证者可以用它确定可验证凭证的格式是否良好。

4.12 安全机制

本规范认可两类 安全 机制: 使用封装式证明的机制和使用嵌入式证明的机制。

封装式证明会封装此数据模型的 序列化结果。使用 JOSE 和 COSE 保护可验证凭证 [VC-JOSE-COSE]定义了一种建议使用的封装式证明机制。

嵌入式证明是一种 将证明包含在数据模型序列化结果中的机制。可验证凭证数据完整性 1.0 [VC-DATA-INTEGRITY]定义了一种建议使用的嵌入式证明机制。

这两类安全机制并不相互排斥。还可以按照 5.13 安全机制规范一节中的规则定义其他安全机制规范。

示例 15:使用嵌入式 证明的可验证凭证
{
  "@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 格式的工具进行处理。

4.13 可验证呈现

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

可验证呈现应该具有极短的生命周期,并与 验证者提供的质询绑定。实现这一点的具体方式取决于 安全机制、传输协议和验证者策略。 除非特定安全机制或嵌入协议定义了其他要求, 否则验证者通常不能假定 可验证呈现与所呈现的 可验证凭证相关联。

可验证呈现默认图也称为 可验证呈现图

可验证呈现定义了以下属性:

id
id 属性是可选的。它可以用于 为可验证呈现提供 唯一标识符。如果存在,则 4.4 标识符一节中的规范性指导必须得到遵循。
type
type 属性必须存在。它用于 表示可验证呈现的 类型。此属性的其中一个值必须VerifiablePresentation,但还可以包含其他类型。 4.5 类型一节中的相关规范性指导必须得到遵循。
verifiableCredential
verifiableCredential 属性可以 存在。该值 必须是一个或多个可验证凭证对象和/或 封装式可验证凭证 对象(这些值不得是数字、字符串或 URL 等非对象值)。 这些对象称为 可验证凭证图,并且 必须表达使用 安全机制保护的信息。 有关更多详细信息,请参阅5.12 可验证凭证图一节。
holder
可验证呈现可以包含一个 holder 属性。如果存在,其值必须 是一个URL,或者是一个 包含 id 属性的对象。建议 holder 中的URL或其 id 在 解引用后生成一个包含关于持有者的机器可读信息的文档, 该信息可用于验证 可验证呈现中表达的信息。 如果不存在 holder 属性,则通过安全机制获取关于 持有者的信息,或者该信息与确认可验证呈现无关。

下面的示例展示了一个可验证呈现

示例 17:呈现的基本结构
{
  "@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": [{ ... }]
}

上面所示 verifiableCredential 属性的内容 是本规范所述的可验证凭证 图

封装式可验证凭证

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

EnvelopedVerifiableCredential
它们用于将包含封装式 可验证凭证的对象与 可验证呈现中的 verifiableCredential 属性相关联。该对象的 @context 属性必须 存在,并包含一个上下文,例如本规范的基础上下文; 该上下文至少应按照本规范提供的基础上下文来定义 idtypeEnvelopedVerifiableCredential 术语。该对象的 id必须是 一个 data: URL [RFC2397],它使用 封装式安全 方案(例如 使用 JOSE 和 COSE 保护可验证凭证 [VC-JOSE-COSE]) 表达一个受保护的可验证凭证。 该对象的 type必须EnvelopedVerifiableCredential

下面的示例展示了一个包含封装式可验证凭证可验证呈现

示例 18:呈现的基本结构
{
  "@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必须EnvelopedVerifiablePresentation

下面的示例展示了一个封装式可验证呈现

示例 19:封装式可验证呈现的 基本结构
{
  "@context": "https://www.w3.org/ns/credentials/v2",
  "id": "data:application/vp+jwt,eyJraWQiO...zhwGfQ",
  "type": "EnvelopedVerifiablePresentation"
}

使用派生凭证的呈现

某些零知识密码方案可以使持有者 间接证明自己持有来自可验证凭证声明, 而无需披露该可验证凭证中的所有声明。在这些 方案中,可以使用可验证凭证派生 可呈现的数据,并通过密码学方式对其作出断言,使验证者在信任 签发者的情况下可以信任该值。

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

: 可以使用零知识证明进行呈现

有关包含派生数据而非直接嵌入可验证凭证的 ZKP 风格可验证呈现示例, 请参阅5.7 零知识证明一节。

Pat 具有一个名为
                 overAge、值为 21 的属性
11 一项表明 Pat 年龄超过 21 岁的基本声明。

包含持有者声明的呈现

持有者可以使用 可验证呈现中的 verifiableCredential 属性,包含来自 任何签发者(包括持有者自身)的可验证凭证。当 可验证凭证签发者就是持有者时,该 可验证凭证中的声明被视为 自我声明。 此类自我声明可以由保护其所在可验证呈现的相同机制进行保护,也可以由 可用于其他可验证凭证的任何 机制进行保护。

这些自我声明声明主体 不受限制,因此这些声明可以包含关于 持有者、其他已包含的可验证凭证之一,甚至是 包含自我声明可验证凭证可验证呈现的陈述。在每种情况下, 都在对特定主体作出声明的对象中使用 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": { ... }
}

5. 高级概念

在第 4. 基本 概念中介绍的概念基础上, 本节探讨有关可验证凭证的更复杂主题。

5.1 信任模型

本节为非规范性内容。

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

此信任模型通过确保以下各项而区别于其他信任模型:

验证者如何决定信任哪些签发者,以及针对哪些数据或 用途作出信任,不属于本建议书的范围。某些签发者(例如知名组织) 可能仅凭其声誉就受到许多验证者的信任。某些签发者验证者可能属于同一个 社区,并因成员规则而相互信任。 某些验证者可能信任特定的信任服务提供商,该提供商 负责审查签发者并将其列入信任列表,例如 电子 签名和基础设施(ESI);可信列表 [ETSI-TRUST-LISTS] 中规定的信任列表,或者 Adobe 批准的信任列表

通过将签发者验证者之间的预期解耦, 可以建立更加灵活、动态的信任模型,从而促进市场 竞争并增加客户选择。

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

:信任模型 不同于传统的证书颁发机构系统

本规范详细说明的数据模型并不意味着采用传递式信任 模型,例如传统证书颁发机构信任模型所提供的那种模型。 在可验证凭证数据模型中,验证者要么 直接信任某个签发者,要么不信任该签发者。 虽然可以使用可验证凭证数据模型构建传递式信任模型, 但强烈建议实现者 了解安全弱点, 这些弱点是由证书颁发机构系统所采用的 广泛委托信任方式带来的。

5.2 可扩展性

可验证凭证数据模型的目标之一是实现 无需许可的创新。为实现这一目标,数据模型需要以 多种不同方式进行扩展。该数据模型必须能够:

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

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

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

示例 22:简单凭证
{
  "@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": "2026-09-13T23:07:55Z",
    "verificationMethod": "did:key:zDnaej4rRZHrUtvxgRBNpmsvLsUjFb3a3b2y5C8YtsGoexjCT",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "zeaV3bv9qbiWp5d5hvBHvuJPH95JFPCCTNY7vkQGM4adyDrqRAek4v86377T8sRxkBYcYy1gFYntJ4nMVFQXquc8"
  }
}
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": "2026-09-13T23:07:55Z",
    "verificationMethod": "did:key:zDnaejWrVEMxMS8KoTAUQPQ1hAcoCUK8q8bHKqyuxxwi1StSz",
    "cryptosuite": "ecdsa-sd-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0AhVhA-pTpSPXyoY9ULGZeSdh7dyc-aOuR11V3u_Z-se85XpCXRsZrPTkntE-x5f86ODoPsamlddD4gGzXtUjWKIQoL1gjgCQDTd_YohXtOYobFZz6hsT52lCQsTKrLYptco71Jk6bswVYILzIlwRtovIwzP7zUzuoc5DntMOOBJsTKlm9RH01tDg0g1hAFTr-mfctiPlEL_Pjw5tg8I2hgfVY6eSsD0k7ezKa3LZMN416FrXWCPzZhICKvFHjG21mwQrhTOmryzmHwQAEPVhAxBZMXFzrs8Ap6enMBFWT1WKvGuRI5jJvjl4Vh8J64xh11x6aaGU2dnN00d4-2g2HAch7KnlaVsyfVls5tyr9aFhAoPfF7eakjoEol4Irc8u0jY6I39KfSLIHoJS4n4uIGvJKq00nfCf_VQB4XGRwWkyINvlZh9zKV3ZPUV3OYC53jIFnL2lzc3Vlcg"
  }
}
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:zUC71huiWdhS9bhS3c7qEiPnS2DFyxYSBLn9GzpW15wZMdTJ6tjWEsgyExiAZ8XkrEu8Y5Tpsvu1RwQi6Bzy4ce8Wvf8ikZUfYaVZVNcUi8aiExBhEsZ2T5HwNWT1fqyAbAKuqZ",
    "cryptosuite": "bbs-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0ChVhQssYvjddPG9-t5FlPv8CCEa2ljhfTrKutd8mI4984m7f_8XQRT5PuN7PGtMmyipc_LPD65pjFAAxm2cXBtjzNMJWzxnSImzGXBKBsa4SwWZtYQOzFWI0_8JjFsAHB4_NK3_pWM4lOH75F-B273Huck8o7vqENcCm8D2khyMGr7-FGFdx818_ufbFmo8hKn_2FgMpYYIJATjbZefKgHbjwatWVl7Q-K64WmVuyLwHk0iyY3Aks-wtSG8xQUeXNgZlDJttjsAkuT-bn-COio-nUPyf2B7fI9uOFrugJSQdqt6e57w94B34WzKJpEhv0nTEPJ0byMFggCFDU3MN8WWHEn_NBtUzq_wc8GeWMmYDtQfy-SEyqhMCBZy9pc3N1ZXI"
  }
}
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
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwOi8vdmMuZXhhbXBsZS9jcmVkZW50aWFscy80NjQzIiwidHlwZSI6WyJWZXJpZmlhYmxlQ3JlZGVudGlhbCJdLCJpc3N1ZXIiOiJodHRwczovL2lzc3Vlci5leGFtcGxlL2lzc3VlcnMvMTQiLCJ2YWxpZEZyb20iOiIyMDE4LTAyLTI0VDA1OjI4OjA0WiIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImlkIjoiZGlkOmV4YW1wbGU6YWJjZGVmMTIzNDU2NyIsIm5hbWUiOiJKYW5lIERvZSJ9fQ .a4sxo7vXeKBB2aNCM_zgr2WgFywbNGBOVc7C1MjO2BbqzYZCOx96gXgY3RQ3eB3koGp4d8q834Q4S6P1opBBpg
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
d28443a10128a05901487b2240636f6e74657874223a5b2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f7632222c2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f6578616d706c65732f7632225d2c226964223a22687474703a2f2f76632e6578616d706c652f63726564656e7469616c732f34363433222c2274797065223a5b2256657269666961626c6543726564656e7469616c225d2c22697373756572223a2268747470733a2f2f6973737565722e6578616d706c652f697373756572732f3134222c2276616c696446726f6d223a22323031382d30322d32345430353a32383a30345a222c2263726564656e7469616c5375626a656374223a7b226964223a226469643a6578616d706c653a61626364656631323334353637222c226e616d65223a224a616e6520446f65227d7d58403dd8786b81426c7a001de71301d77dc99cf5e54ecdc95dbaeeb800bab004adb221152512b76a404363cdda30bfdf66ad7f21684c769ab2b6024b8dd5a5033160
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJpYXQiOjE3ODkzNDA4NzUsImV4cCI6MTc5MDU1MDQ3NSwiX3NkX2FsZyI6InNoYS0yNTYiLCJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjoiaHR0cHM6Ly9pc3N1ZXIuZXhhbXBsZS9pc3N1ZXJzLzE0IiwidmFsaWRGcm9tIjoiMjAxOC0wMi0yNFQwNToyODowNFoiLCJjcmVkZW50aWFsU3ViamVjdCI6eyJuYW1lIjoiSmFuZSBEb2UiLCJfc2QiOlsid1NBZnk1YVdhM2dZS0RPaVNoTURhSWg2R2JGdFRvZHFqbHZaMl9xQ3FFQSJdfSwiX3NkIjpbIlcyVDVjZHR5a3lUTkRTNlNNTGtsUU1uaHJhbFdMSGgzSm51YXZ0aHh0SkkiLCJtOV9IN1ktMGk5a0ItakZPSE4wMGZjazR5NEhUMFRUaDZTajg2bEZaZXFRIl19 .rmYyZBWbDreWCYnjdNE-eHMcTbspkIIAR7xKng7g9JV7eB9kYB26HVaQsTVS4acXUJEOY_lYoah5GYJ2VlMu0Q ~WyJzcmVSOHQxT3JfSG83SlFMNzhIbDNRIiwgImlkIiwgImh0dHA6Ly92Yy5leGFtcGxlL2NyZWRlbnRpYWxzLzQ2NDMiXQ~WyJ2OEhaRENDdlhVYUsteEtCMGZvVDh3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIl1d~WyI2NFYxdGNkaXp6R0ZRN3QzazVZR1J3IiwgImlkIiwgImRpZDpleGFtcGxlOmFiY2RlZjEyMzQ1NjciXQ~
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
{
  "iat": 1789340875,
  "exp": 1790550475,
  "_sd_alg": "sha-256",
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "issuer": "https://issuer.example/issuers/14",
  "validFrom": "2018-02-24T05:28:04Z",
  "credentialSubject": {
    "name": "Jane Doe",
    "_sd": [
      "wSAfy5aWa3gYKDOiShMDaIh6GbFtTodqjlvZ2_qCqEA"
    ]
  },
  "_sd": [
    "W2T5cdtykyTNDS6SMLklQMnhralWLHh3JnuavthxtJI",
    "m9_H7Y-0i9kB-jFOHN00fck4y4HT0TTh6Sj86lFZeqQ"
  ]
}

声明: id

SHA-256 哈希: m9_H7Y-0i9kB-jFOHN00fck4y4HT0TTh6Sj86lFZeqQ

披露: WyJzcmVSOHQxT3JfSG83SlFMNzhIbDNRIiwgImlkIiwgImh0dHA6Ly92Yy5leGFtcGxlL2NyZWRlbnRpYWxzLzQ2NDMiXQ

内容: [
  "sreR8t1Or_Ho7JQL78Hl3Q",
  "id",
  "http://vc.example/credentials/4643"
]

声明: type

SHA-256 哈希: W2T5cdtykyTNDS6SMLklQMnhralWLHh3JnuavthxtJI

披露: WyJ2OEhaRENDdlhVYUsteEtCMGZvVDh3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIl1d

内容: [
  "v8HZDCCvXUaK-xKB0foT8w",
  "type",
  [
    "VerifiableCredential"
  ]
]

声明: id

SHA-256 哈希: wSAfy5aWa3gYKDOiShMDaIh6GbFtTodqjlvZ2_qCqEA

披露: WyI2NFYxdGNkaXp6R0ZRN3QzazVZR1J3IiwgImlkIiwgImRpZDpleGFtcGxlOmFiY2RlZjEyMzQ1NjciXQ

内容: [
  "64V1tcdizzGFQ7t3k5YGRw",
  "id",
  "did:example:abcdef1234567"
]

可验证凭证声明,与 did:example:abcdef1234567关联的实体具有值为 Jane Doename

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

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

示例 23: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,则可以通过包含该上下文, 并向可验证凭证添加新的属性凭证类型来扩展此示例。

示例 24:带有自定义 扩展的可验证凭证
{
  "@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。 附录 C. 上下文、词汇表、类型和凭证模式 更详细地介绍了这些方法。

建议实现者密切关注本规范中的扩展点,例如第 4.10 状态节、第 4.11 数据 模式节、第 4.12 安全机制节、第 5.4 刷新节、第 5.5 使用条款节以及第 5.6 证据节。虽然本规范没有为这些扩展点定义具体 实现,但可验证凭证扩展文档 提供了一份非官方且经过筛选的扩展列表,开发者可以通过 这些扩展点使用其中的扩展。

语义互操作性

在特定于应用程序的词汇表中定义新术语时,词汇表 作者应该遵循发布关联数据的最佳实践中的详细 检查清单。 具体而言,以下指导尤为重要:

  • 只要有可能,建议重复使用 Schema.org 等知名公共词汇表定义的术语及其对应的 URL。Schema.org
  • 对于每个新术语,都必须定义一个新 URL。 在这样做时,应遵循 [LINKED-DATA] 的 一般准则,尤其是:
    • 必须发布人类可读的文档,说明 每个术语的语义及其使用约束。
    • 建议使用RDF 模式 1.1, 将所有新术语的集合发布为 机器可读词汇表。
    • 术语的 URL 应该可以被解引用, 并返回该术语的说明和/或正式定义。

此外,必须在词汇表的 @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 上下文,则该文档 必须https://www.w3.org/ns/credentials/undefined-terms/v2 作为@context属性的最后一个值。

5.4 刷新

允许系统手动或自动刷新已过期的 可验证凭证非常有用。有关 可验证凭证有效期的更多信息,请参阅第 B.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,可以通过将可验证凭证以 POST 方式发送到 刷新服务的url来使用该服务。请注意,这一特定的可验证凭证 并不打算与原始签发者以外的任何人共享。

: 未经身份验证的凭证刷新

可验证凭证中放置 refreshService属性,使其可供 验证者使用,可能会剥夺 持有者的控制权和同意权, 并允许将可验证凭证直接签发给 验证者, 从而绕过持有者

5.5 使用条款

签发者持有者可以使用使用条款, 传达签发可验证凭证可验证呈现时所依据的条款。 签发者将其使用条款放在 可验证凭证中。持有者将其 使用条款放在可验证呈现中。本规范定义了 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"
    }
  }
}

在上面的示例中,签发者断言: 使用“Employment&Life”信任框架签发 可验证凭证的法律依据是 “专业资格指令”,并提供了指向该策略的特定链接。

此功能预计将用于政府签发的可验证凭证, 指示数字钱包将其用途限制在类似的政府组织中,以保护公民免受 敏感数据的意外使用。同样,由私营行业签发的某些可验证凭证预计会将用途限制在 组织内部的部门或工作时间内。强烈建议实现者阅读 可验证凭证实现指南 [VC-IMP-GUIDE] 文档相应章节中 有关这一持续演进功能的更多信息。

5.6 证据

签发者可以包含证据, 以便在可验证凭证中向 验证者提供 额外的支持信息。验证者可以利用这些信息, 确定其对可验证凭证中的声明 所能具有的信赖程度。例如,签发者可以在签发 凭证之前, 检查主体提供的实体文档, 或执行一系列背景调查。在某些情况下,当验证者确定信赖特定 凭证所涉及的风险时, 此类信息非常有用。

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

evidence
如果存在,evidence属性的值必须是单个对象或由一个或多个对象组成的集合。 为每个证据对象定义了以下属性
id
id属性可选的。它可以用于为证据对象提供唯一标识符。 如果存在,则必须遵循第 4.4 标识符节中的规范性指导。
type
type属性必需的。它用于表示该对象所表达的 证据信息类型。必须遵循第 4.5 类型节中的相关规范性指导。
: 有关提供证据的策略,请参阅实现指南

有关本规范如何支持附件、对凭证的引用以及非凭证数据的信息, 请参阅第 5.3 相关资源的完整性节。

示例 29:支持技能成就凭证的证据示例
{
  "@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": [{
      // 外部托管证据文件/制品的 URL
      "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.",
      // mp4 视频文件的摘要散列值
      "digestMultibase": "uELq9FnJ5YLa5iAszyJ518bXcnlc5P7xp1u-5uJRDYKvc"
    }
  ]
}

在上面的evidence示例中,签发者断言, 其拥有一段凭证主体展示该成就的视频。

:证据与 安全机制具有不同的用途

evidence属性提供不同于并补充所用安全机制的信息。 evidence属性用于表示与 可验证凭证相关的支持信息, 例如文档证据。相比之下,安全机制用于表示与 签发者真实性以及 可验证凭证完整性相关的、 可由机器验证的数学证明。有关安全机制的更多信息,请参阅第 4.12 安全机制节。

5.7 零知识证明

零知识证明是一种安全机制, 它使持有者能够在不披露实际值的情况下,证明自己持有 一份包含该值的可验证凭证; 例如,可以在不透露生日的情况下证明某人的年龄超过 25 岁。 此数据模型支持使用零知识证明进行保护。

零知识证明机制所实现且与可验证凭证兼容的部分能力包括:

创建安全机制的规范作者 不得以会泄露信息的方式设计这些机制, 以免验证者能够通过向不同 验证者提供的多份 可验证呈现关联同一 持有者

并非所有零知识证明机制都支持全部能力。 特定零知识证明机制所提供能力和技术的具体细节,以及将其用于 可验证凭证时的任何规范性要求, 可在使用该零知识证明机制保护可验证凭证的规范中找到。 此类规范的一个示例是数据完整性 BBS 密码套件 v1.0

需要注意的是,在大多数情况下,要让持有者将零知识机制用于 可验证凭证签发者必须以支持这些能力的方式 保护可验证凭证

下图重点说明了如何使用此数据模型以零知识方式签发和 呈现可验证凭证

左侧的可验证
            凭证 1 和可验证凭证 2 分别映射到右侧呈现内的
            派生凭证 1 和派生凭证 2。可验证凭证 1
            包含上下文、类型、ID、签发者、签发日期、到期
            日期、凭证主体和证明,其中
            凭证主体包含名、姓和
            出生日期,证明包含签名、
            正确性证明和属性。可验证凭证 2
            包含上下文、类型、ID、签发者、签发日期、到期
            日期、凭证主体和证明,其中
            凭证主体包含大学,大学包含
            院系,院系包含授予的学位;证明包含签名、
            正确性证明和属性。右侧的呈现图
            包含上下文、类型、ID、
            可验证凭证和证明,其中
            可验证凭证包含派生凭证 1 和
            派生凭证 2,证明包含共同链接
            秘密。派生凭证 1 包含上下文、类型、ID、
            签发者、签发日期、凭证主体和证明,其中
            凭证主体包含年龄超过 18 岁,证明包含
            对签名的知悉。派生凭证 2 包含
            上下文、类型、ID、签发者、签发日期、凭证主体
            和证明,其中凭证主体包含学位,
            证明包含对签名的知悉。一条线将
            可验证凭证 1 中的出生日期连接到
            派生凭证 1 中的年龄超过 18 岁。一条线将
            可验证凭证 2 中授予的学位连接到派生凭证 2 中的学位。
12 凭证与派生凭证在 ZKP 呈现中的关系示意图。

下面展示了使用数据完整性 BBS 密码套件 v1.0不可关联选择性披露安全机制的 可验证凭证可验证呈现示例。

示例 30:使用带有基础证明的数据完整性 BBS 密码套件的可验证凭证
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://w3id.org/citizenship/v4rc1"
  ],
  "type": [
    "VerifiableCredential",
    "PermanentResidentCardCredential"
  ],
  "issuer": {
    "id": "did:web:utopia.example",
    "image": "data:image/png;base64,iVBORw0KGg...VORK5CYII="
  },
  "name": "Permanent Resident Card",
  "description": "Government of Utopia Permanent Resident Card.",
  "credentialSubject": {
    "type": [
      "PermanentResident",
      "Person"
    ],
    "givenName": "JANE",
    "familyName": "SMITH",
    "gender": "Female",
    "image": "data:image/png;base64,iVBORw0KGgo...g==",
    "residentSince": "2015-01-01",
    "commuterClassification": "C1",
    "birthCountry": "Arcadia",
    "birthDate": "1978-07-17",
    "permanentResidentCard": {
      "type": [
        "PermanentResidentCard"
      ],
      "identifier": "83627465",
      "lprCategory": "C09",
      "lprNumber": "999-999-999"
    }
  },
  "validFrom": "2026-09-05T00:00:00Z",
  "validUntil": "2027-09-05T23:59:59Z",
  "proof": [
    {
      "type": "DataIntegrityProof",
      "created": "2026-09-05T17:21:31Z",
      "verificationMethod": "did:web:utopia.example#zDnae...QGW8",
      "cryptosuite": "ecdsa-rdfc-2019",
      "proofPurpose": "assertionMethod",
      "proofValue": "z4fJttfr...kn9P"
    },
    {
      "type": "DataIntegrityProof",
      "verificationMethod": "did:web:utopia.example#zUC7EwMqo9vCjFmj7ArU2SivcbeccAY6hd4nw5fVD6xD4W2vm9eVy6VqVnciAZRmPLXnuxuka5JTJVmgz66CxDno6eqZmvUViCckCcKg8A4s1R4i2JjyzrdTQs5zrfY4jJCHFCp",
      "cryptosuite": "bbs-2023",
      "proofPurpose": "assertionMethod",
      "proofValue": "u2V0ChVhQiJsvokWSE4Cq999Bw9aluhWuToMG7qGNtAx5I2_LmNjRPCMcTLoiBc_HV8gjvgvSNnrFNK50Ubf1gIN8i8sHUWwUzqdDMevqlO8qVOWgki1YQM6iv5KVLQKPLTMEAHhSEWyz3z3hrSSQJTjO8vIFJgMWaLnxEOgYUkAwn3mL9Hhr-t6oc0OXaYjMBPYyPIQUnwdYYKipusluRJ7SzUrZmv4RxeebXFP1W0GGgnhEIBufF7eulvisZDSTSVWCkn1KMnStOgmhPPjOCIDvXVY2Xxbm61KFgc2pSZJwhV5kLxZV9igRbX8uzqgdbnLyerjY7DzJdVggryiDkfzraDE3VOas9Ls5wKk4oBfAtvO0QZikpLOL1VeBZy9pc3N1ZXI"
     
    }
  ]
}

上面的示例是一份可验证凭证,其中 签发者 启用了基于 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/v4rc1"
      ],
      "type": [
        "VerifiableCredential",
        "PermanentResidentCardCredential"
      ],
      "issuer": {
        "id": "did:web:vcplayground.org",
        "image": "data:image/png;base64,iVBORw0KG...YII="
      },
      "credentialSubject": {
        "type": [
          "PermanentResident",
          "Person"
        ],
        "birthCountry": "Arcadia"
      },
      "proof": [
        {
          "type": "DataIntegrityProof",
          "verificationMethod": "did:web:utopia.example#zUC7EwMqo9vCjFmj7ArU2SivcbeccAY6hd4nw5fVD6xD4W2vm9eVy6VqVnciAZRmPLXnuxuka5JTJVmgz66CxDno6eqZmvUViCckCcKg8A4s1R4i2JjyzrdTQs5zrfY4jJCHFCp",
          "cryptosuite": "bbs-2023",
          "proofPurpose": "assertionMethod",
          "proofValue": "u2V0DhVkDEJOplpVKV9UBPos-YnSuy7u-_wuxUUcElOCVqJwekpfS8pDYv5mlIiADqJNm62CgfJMG1SeBV9Ri5DlmMAOaWayl51Aqc_fPn1V756d-P51JNwmlPQ9RmyYQPGfk3_8z0KF57H_seUFGZOYAtul85f9rypgN_emBvVApxUSMClqvNSgNVQ_sqVS1ICFkz9MIuTv6Ng6F8CNm0svtv1Tnkmjn6I4bgP0b46j57-lgiAP6Xb72RCnppHyfcuc6z9NB82BgIPCHzu2V3u8sWHyPS1JzVDLUiPVWUy6Oar0A4q9QLP4y92Q4JpJRx0Bl-x3cvCcBZp8ESDphMEDoMgEBqWVdWEZ_KQa2JrYuiWeHfK81WPNlJimOp4xl4CotHqx1NIinSB7jmrtcQ-0dIX_vz5wnYwhlP44rE7TgydrFE_16BYk0hkfKJw8sGCQNxqcUMHGh262ZOie2ASifU8OXd5TZOgTaUXRauwCrAPQZnQKnAQ8j8hBLgD_0Ujzt2Yk6dQueUv493jnmWJMnCbAy33MuRhHSqSxHVJBXOhhUX3s79HY0V-uLkGOZw_61HRpAi0W4spLv77ehUlwW5N35VFbs_THFXGA5AgY3Cg1vY-K5SyqpH5BlWhAcTRwoDKboqp0tOecM5qpZyuAORQ7fK2JddnEMHmvOKW7x_ugykAbQm6DeqhyGPtKxuiSulr-IHFK-KyGCXPAAKbk7X5Hkf29q7tOEGTIU4_9ga88PtiQKJTu7Ao8ABBEg9Gqt-KcfqfPgt8cqwxGtjW21sD3bSbtUiWNQO3ZDPelP9ToXbduEPpsNEYwxRbMtS5SF6YDqy16Bo8uyw41jnKvb-E5ABF-2MGjxB9zt8ZH_TJirGP_IMt0ssYrODZAlJbakLKiD5NH3g-xlvMTHxrD8VEzJakACnJIrm3X9J7MjUM_YTqth99oc2Yq2HLlgwYb1hD3T6jsIaY8zRPzA2ybKdXxZ3ahxyc_nbLDnP2fVNbUj8P9EX2Av_GvmnSYRsE5Wmcblhao6Ref1EF8YFF6JFT8SO2WiAAIBAIQABAUHhAABBxFYRXsiY2hhbGxlbmdlIjoiejFBREtDNVFBdW1Tb1Jud1NDSHRhUXBvQSIsImRvbWFpbiI6InZjcGxheWdyb3VuZC5vcmcifQ"
          
        }
      ]
    }
  ]
}

上述可验证呈现包含一份 可验证凭证, 其中包含前一个示例中信息的不可关联子集,以及一个派生证明。 验证者可以使用该证明验证 信息是否源自预期的签发者,并且是否与本次特定的信息交换绑定。

5.8 表示时间

强烈建议实现者认识到,时间值的表示和处理并不像看起来那么简单, 而且存在各种无法立即发现、也未在世界不同地区得到统一遵循的 特殊情况。例如:

以上只是几个示例,它们说明挂钟所显示的实际一天时刻 可能存在于一个地区,却不存在于另一个地区。因此,强烈建议实现者 使用更为通用的时间值,例如优先使用锚定到Z时区的值, 而不是受夏令时/夏季时间影响的值。

本规范采用最初由 [XMLSCHEMA11-2] 规范确立的dateTimeStamp结构,试图增加普遍认可的日期与时间 组合数量,并降低误解时间值的可能性。 为减少不同时区之间的误解,符合要求的文档中表示的所有时间值 应该采用dateTimeStamp格式指定, 既可以采用协调世界时(UTC),即在值的末尾使用Z表示, 也可以使用相对于 UTC 的时区偏移量。 错误序列化且未包含偏移量的时间值必须解释为 UTC。 相对于 UTC 的有效时区偏移量示例包括Z+01:00-08:00+14:00。 有关所有可接受值的正式定义,请参阅本节末尾的正则表达式。

时区定义偶尔会由其管理机构更改。在替换或签发新的 可验证凭证时,建议实现者 确保本地时区规则的变化不会导致意外的有效期空档。 例如,假设America/Los_Angeles时区的原始偏移量为 UTC-8, 并且已投票决定于 2024 年停止采用夏令时。某份可验证凭证validUtil值为2024-07-12T12:00:00-07:00, 重新签发时其validFrom值可能变为 2024-07-12T12:00:00-08:00,从而产生一个小时的空档, 在此期间该可验证凭证无效。

希望检查dateTimeStamp值有效性的实现者可以使用下面提供的 正则表达式。为方便起见,该表达式转载自 [XMLSCHEMA11-2] 规范。 为免疑义,[XMLSCHEMA11-2] 中的正则表达式是规范性定义。建议实现者注意,并非所有通过下面正则表达式的 dateTimeStamp值都表示有效的时间点。例如,下面的正则表达式 允许每个月包含 31 天,以便允许闰年和闰秒,但也会允许在某些位置并不存在的日期。 尽管如此,生成dateTimeStamp值的现代系统库通常能够正确生成有效的 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))

5.9 授权

本节为非规范性内容。

可验证凭证旨在作为可靠识别 主体的一种方式。 虽然基于角色的访问控制(RBAC)和基于属性的访问控制(ABAC) 依赖此类身份识别来授权主体访问资源,但本规范 并未提供完整的 RBAC 或 ABAC 解决方案。在没有配套授权框架的情况下, 授权并不是本规范的适当用途。

工作组在制定本规范期间确实考虑了授权使用情形, 并且正在将这项工作作为构建于本规范之上的架构层推进。

5.10 保留扩展点

本规范保留了一些属性作为可能的扩展点。 虽然部分实现者表示对这些属性感兴趣,但现在将其纳入本规范仍被认为为时过早。 必须注意,本规范并未定义其中任何属性。因此,实现者需要注意, 使用这些属性被视为实验性做法。

实现者可以使用这些属性,但应该预期这些属性和/或其含义 会在对其进行规范性规定的过程中发生变化。 如果没有公开披露的规范来描述其实现方式,实现者不应该使用这些属性。

为避免以下属性的使用方式发生冲突,实现 必须在与保留属性关联的值中指定 type属性。有关添加type信息的更多内容, 请参阅第 4.5 类型节。

保留 属性 描述
confidenceMethod 用于指定一种或多种方法的属性,验证者可以使用这些方法增强其信心, 确信可验证凭证或可验证呈现之中或本身的某个属性值准确无误。 关联的词汇表 URL 必须https://www.w3.org/2018/credentials#confidenceMethod。 有兴趣进一步了解置信度方法及其使用示例的实现者,可以参阅 可验证凭证置信度 方法 v1.0规范。
renderMethod 用于指定一种或多种将凭证呈现为视觉、听觉、触觉或其他格式的方法的属性。 关联的词汇表 URL 必须https://www.w3.org/2018/credentials#renderMethod。 有兴趣进一步了解呈现方法及其使用示例的实现者,可以参阅 可验证凭证呈现 方法 v1.0规范。

与本规范所定义扩展点以及本节所定义保留扩展点相关的非官方规范列表, 可以在可验证凭证扩展中找到。 该目录中涉及保留扩展点的条目应该视为实验性条目。

5.11 生态系统兼容性

有许多数字凭证格式并未原生使用本文档提供的数据模型, 但与本规范中的若干概念保持一致。在本文档发布时, 这些数字凭证格式的示例包括 JSON Web 令牌(JWT)、 CBOR Web 令牌(CWT)、 JSON 高级电子签名(JAdES)、 ISO-18013-5:2021 (mDL)、 AnonCreds Gordian 封装以及 真实性链式数据容器(ACDC)。

如果概念上保持一致的数字凭证格式能够按照本节提供的规则转换为 符合要求的文档, 则将其视为“与W3C可验证凭证 生态系统兼容”。建议规范作者在记录用于实现 可验证凭证生态系统兼容性的转换时遵守以下规则。转换规范——

: 什么构成可验证凭证?

请读者注意,只有数字凭证是符合要求的文档, 并且按照本规范各自的要求使用至少一种安全机制时, 才会被视为与W3C可验证凭证生态系统兼容。 虽然某些社区可能会将并非符合要求的文档的某些数字凭证格式称为 “可验证凭证”,但这种称呼并不会使相应数字凭证符合本规范。 例如,尽管 SD-JWT-VC [SD-JWT-VC] 规范使用了字母“VC”,但该规范明确声明它与 W3C可验证凭证不兼容。

5.12 可验证凭证图

表示可验证凭证时(例如在 呈现中), 必须确保一份可验证凭证中的数据 不会被误认为与另一份可验证凭证中的数据相同。 例如,如果有两份可验证凭证, 每份都包含以下形式的对象:{"type": "Person", "name": "Jane Doe"},则无法判断一个对象描述的人是否与另一个对象相同。 换言之,如果未确认两份可验证凭证所讨论的 实体和/或属性相同,就合并它们的数据,可能会导致数据集损坏。

为确保不同可验证凭证中的数据 不会意外混合,需要使用可验证 凭证图这一概念来封装每份可验证凭证。 对于简单的可验证凭证, 即 JSON-LD 文档仅包含一份凭证以及可能关联的证明时, 此图是默认图。对于 呈现, 与呈现verifiableCredential属性关联的每个值,都是一个独立的 命名图,其类型为 VerifiableCredentialGraph, 并且包含一份可验证凭证封装式可验证凭证

执行 JSON-LD 处理时,使用这些会产生具体影响: 它会正确区分一个图与另一个图中的图节点标识符。 如果将输入限制为特定于应用程序的 JSON-LD 文档,则实现者在合并 一份可验证凭证与另一份凭证的数据时, 也需要牢记这一点。例如,两份可验证凭证中的 credentialSubject.id可能相同,但其中的对象可能包含 上一段所述“Jane Doe”形式的对象。切勿合并那些看似具有相似属性, 却不包含使用 URL 等全局标识符的id属性的对象。

5.13 安全机制 规范

如第 4.12 安全机制节所述, 实现者在保护符合要求的文档时可以采用多种策略。 为最大限度提高实用性和互操作性,本节为希望制定保护 符合要求的文档的新方法的规范作者提供指导。

安全机制规范必须记录为 符合要求的文档提供内容完整性保护的 规范性算法。这些算法可以具有通用性质, 并且可以用于保护 符合要求的文档以外的数据。

安全机制规范必须提供一种验证算法, 该算法单独返回符合要求的文档中受到保护的信息, 而不包含任何安全机制信息,例如proof或者 JOSE/COSE 标头参数和签名。验证算法可以返回 可能有帮助的其他信息(例如在确认期间或用于调试), 如安全机制的详细信息。验证算法必须提供一个接口, 用于接收媒体类型(字符串 inputMediaType)和输入数据(字节序列映射 inputData)。安全机制规范可以 提供本文档所规定算法和接口以外的算法和接口。 验证算法返回的验证结果至少包含以下

布尔值 verified
验证状态;如果验证成功,其值为true, 否则为false
映射 verifiedDocument
仅包含已成功受到保护的信息的文档。
字符串 mediaType
[RFC6838] 中定义的媒体类型。

安全机制规范应该为 URL 所引用且对确认至关重要的 任何信息提供完整性保护。第 5.3 相关资源的完整性节和第 C.1 基础上下文节讨论了能够实现这种保护的机制。

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

最后一项要求意味着安全机制会保护默认图; 对于可验证呈现, 还会保护呈现中的每份可验证凭证及其各自的 证明图。 另请参阅914

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

安全机制规范应该可验证凭证扩展文档的 安全机制 一节中注册该安全机制。

: 安全机制的选择取决于使用情形

可接受的安全机制有多种,本规范并未强制要求将任何特定安全机制用于 可验证凭证可验证呈现。 制定本规范的工作组确实对两种安全机制选项进行了标准化,它们是: 可验证凭证数据完整性 1.0 [VC-DATA-INTEGRITY] 和 使用 JOSE 和 COSE 保护可验证凭证 [VC-JOSE-COSE]。 社区已知的其他安全机制可以在 可验证凭证扩展文档的 安全机制 一节中找到。

6. 语法

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

本规范中属性值的预期基数以及保存这些值的最终数据类型可能因属性而异。 如果存在,以下属性表示为单个值:id (第 4.4 标识符节)、 issuer(第 4.7 签发者节)以及 validFrom/validUntil(第 4.9 有效期节)。 如果存在,所有其他属性均表示为单个值或值数组。

6.1 JSON-LD

本规范使用JSON-LD 1.1序列化 本规范所述的数据模型。JSON-LD 非常有用,因为它能够表示 可验证凭证所依据的 基于图的数据模型机器可读 语义,并且在扩展数据模型时也非常有用(请参阅第 3. 核心数据模型节和第 5.2 可扩展性节)。

JSON-LD 是一种基于 JSON、用于序列化 关联数据的格式。 关联数据使用资源描述框架(RDF)[RDF11-CONCEPTS] 建模。 RDF 是一种对陈述图进行建模的技术。每项陈述都是单个 主体→属性→值(也称为 实体→特性→值)关系,本规范将这种关系称为 声明。JSON-LD 是一种能够使用惯用 JSON 表示 RDF 的技术,使熟悉 JSON 的开发者能够编写以 JSON 形式使用 RDF 的应用程序。 有关更多详细信息,请参阅 JSON-LD 与 RDF 的关系

JSON-LD 的重要特性

一般而言,本文档所述的数据模型和语法使开发者基本上可以将 可验证凭证视为 JSON 文档, 只需稍加修改,便可将示例复制并粘贴到自己的软件系统中。 此方法的设计目标是在降低入门门槛的同时,仍确保各种异构软件系统之间 实现全球互操作性。本节介绍为实现这一目标而使用的一些 JSON-LD 特性。 大多数开发者可能不会注意到这些特性,但实现者可能对其细节感兴趣。 本规范所使用的JSON-LD 1.1重要特性包括:

  • @id@type关键字分别以 idtype作为别名,使开发者能够以惯用 JSON 的方式使用本规范。
  • 整数、日期、计量单位和 URL 等数据类型会被自动确定类型, 从而为需要更强类型保证的使用情形提供这种保证。
  • verifiableCredential属性被定义为 JSON-LD 1.1 图容器。这要求创建命名图, 用于隔离不同实体断言的数据集合。例如,这可以确保每个 签发者提供的数据图, 与呈现可验证凭证持有者提供的数据图之间 得到适当的密码学分离,从而保留每个图中信息的来源。
  • JSON-LD 1.1@protected属性特性用于确保本规范定义的术语无法被覆盖。 这意味着,只要在可验证凭证可验证呈现的顶部作出相同的 @context声明,无论数据模型用户是否使用 JSON-LD 1.1处理器,都能保证其所理解的所有术语实现互操作。

对 JSON-LD 的限制

为提高互操作性,本规范对数据模型的 JSON-LD 表示方式进行了限制。 所有使用application/vcapplication/vp媒体类型的 数据模型表示都必须使用 JSON-LD 紧凑文档 形式

如第 6.3 特定类型凭证处理节 详细说明的那样,某些软件应用程序可能不会执行通用 JSON-LD 处理。 建议符合要求的文档的作者注意: 如果使用@context值中的 JSON-LD 关键字对 可验证凭证可验证呈现中的值产生全局影响, 例如设置@base@vocab关键字中的任意一个或全部两个, 则可能会降低互操作性。例如,在执行特定类型凭证处理、 且不预期在@context值中表示@base和/或 @vocab值的实现中,设置这些值可能会导致实现不正确的 JSON Schema 测试在检查@context值时失败。

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

  • @context值中内联声明会全局修改文档术语和值处理方式的 JSON-LD 关键字,例如设置@base@vocab
  • 使用覆盖先前上下文中声明的 JSON-LD 上下文,例如重置 @vocab
  • @context属性中内联声明 JSON-LD 上下文
  • 对 JSON-LD 术语和类型使用完整 URL(例如 https://www.w3.org/2018/credentials#VerifiableCredentialhttps://vocab.example/myvocab#SomeNewType),而不是使用 JSON-LD @context映射中明确为这些值定义的简短形式 (例如VerifiableCredentialSomeNewType; 映射示例见https://www.w3.org/ns/credentials/v2

虽然本规范告诫不要使用@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]
    ]
  }
}

6.2 媒体类型

[RFC6838] 中定义的媒体类型, 用于标识表示可验证凭证所使用的语法, 以及其他有用的处理指导。

用于表示本规范数据模型的语法应该由媒体类型标识, 在定义或将媒体类型用于可验证凭证时, 应该遵循本节所述的惯例。

核心数据模型关联了两种媒体类型,它们列在第 D. IANA 注意事项节中: application/vcapplication/vp

application/vcapplication/vp媒体类型 并不表示任何特定的安全机制,而是预期与安全机制结合使用。 必须应用安全机制来保护这些媒体类型的完整性。 无论使用何种媒体类型传递内容,都不要假定该内容是安全的。

媒体类型精度

本节为非规范性内容。

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

  • 如果文件扩展名不可用,并且 Web 服务器无法确定媒体类型, 则会默认使用text/plainapplication/octet-stream
  • 开发者添加的文件扩展名所产生的媒体类型不如文件内容具体。 例如,.json可能产生application/json媒体类型, 而.jsonld可能产生 application/ld+json媒体类型。
  • 协议要求特定事务使用精度较低的媒体类型;例如使用 application/json而不是application/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 等错误代码。

6.3 特定类型凭证 处理

本节为非规范性内容。

由于 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 键映射到 URI 时具有语义互操作性。虽然通用 JSON-LD 处理可以使用其算法中 以前未见过的@context值,验证所有术语是否均已正确指定, 但执行特定类型凭证处理的实现 只接受实现预先设计为能够理解的特定@context值, 从而无须调用任何 JSON-LD API 即可获得相同语义。 换言之,两种处理机制都以能够产生相同 符合要求的文档语义的方式使用 @context,明确说明数据交换发生的上下文。

7. 算法

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

: 实现者可以加入额外的检查、警告和错误。

建议实现者注意,本节中的算法仅包含实现用来测试是否符合本规范的 最基本检查集合。实现应提供额外检查,向开发者报告有用的警告, 以帮助调试潜在问题。同样,实现还可能提供额外检查, 为阻止有害内容而报告新类型的错误。 这些额外检查中的任何一项都可能被纳入本规范的未来版本。

7.1 验证

本节包含一种算法,符合要求的验证者实现在验证 可验证凭证可验证呈现必须运行该算法。此算法接受媒体类型 (字符串 inputMediaType)和受保护的数据 (字节 序列 inputData),并返回包含以下内容的 映射

验证算法如下:

  1. 通过执行以下步骤,确保安全机制已正确保护 符合要求的文档
    1. 使用inputMediaType以及 可验证凭证 扩展文档中的 安全机制 一节,或者实现已知的其他机制,确定验证安全机制时要使用的密码套件, 并据此设置verifyProof函数。 verifyProof函数必须实现第 5.13 安全机制规范节中 描述的接口。
    2. 如果verifyProof函数预期接收 字节序列, 则向算法提供inputMediaTypeinputData。 如果verifyProof函数预期接收 映射, 则向其提供inputMediaType以及以inputData为输入 将 JSON 字节解析为 Infra 值的结果。将调用 verifyProof函数的结果设置为result。 如果调用成功,result将包含 statusdocumentmediaTypecontrollercontrolledIdentifierDocumentwarningserrors属性。
    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

只要实现针对相同的无效输入返回错误,验证安全机制状态以及验证输入文档是否为 符合要求的文档的步骤, 就可以采用与上述顺序不同的顺序执行。 实现可以产生与上述错误不同的错误。

7.2 问题详情

当实现在处理文档时检测到异常,可以使用 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] 中的 扩展成员一节。

8. 无障碍注意事项

本节为非规范性内容。

在处理本规范所述的数据时,实现者应该注意多项无障碍事项。 与实现任何 Web 标准或协议一样,忽略无障碍问题会使大量人群 无法使用这些信息。必须遵循 [WCAG21] 等无障碍指南和标准,确保所有人无论能力如何都能使用这些数据。 在建立使用密码学的系统时,这一点尤其重要,因为此类系统历来 都会给辅助技术带来问题。

本节详细说明使用此数据模型时需要考虑的一般无障碍事项。

8.1 数据优先方法

本节为非规范性内容。

当前使用的许多实体凭证(例如政府身份证件) 无障碍特性很差,包括但不限于字号过小、依赖尺寸较小的高分辨率图像, 以及没有为视力障碍人士提供便利。

使用此数据模型创建可验证凭证时, 建议数据模型设计者采用数据优先方法。 例如,当需要在使用数据或图形图像来描绘 凭证之间作出选择时, 设计者应该以机器可读的方式表示图像中的每个元素,例如机构名称或专业 凭证, 而不是依赖查看者对图像的解释来传达这些信息。 数据优先方法是首选方法,因为它提供了为不同能力的人构建 不同界面所需的基础元素。

9. 国际化 注意事项

本节为非规范性内容。

建议实现者在发布本规范所述的数据时注意多项国际化事项。 与实现任何 Web 标准或协议一样,忽略国际化会使数据难以跨越 不同的语言和社会进行生成与使用,从而限制本规范的适用性, 并显著降低其作为标准的价值。

强烈建议实现者阅读由W3C国际化活动发布的 Web 上的字符串:语言和方向元数据文档 [STRING-META]。 该文档详细阐述了为支持国际化而提供可靠文本元数据的必要性。 为获得有关国际化注意事项的最新信息,还强烈建议实现者阅读 可验证凭证实现指南 [VC-IMP-GUIDE] 文档。

本节概述使用此数据模型时需要考虑的一般国际化事项, 并着重说明Web 上的字符串:语言和方向元数据文档 [STRING-META] 中实现者可能有兴趣阅读的特定部分。

9.1 语言和基本方向

强烈建议数据发布者阅读Web 上的字符串:语言和方向 元数据中的跨语法表达一节,以确保能够跨多种表达语法表示 语言和基本方向 信息,例如JSON-LD 1.1JavaScript 对象表示法 (JSON) 数据交换格式简明 二进制对象表示 (CBOR)

语言 值对象是一个人类可读的文本 字符串、其对应的语言,以及可选的文本方向。以下 模板概述了在可验证凭证中表示语言值对象的一般模式:

示例 35:自然语言字符串的设计模式
"myProperty": {
  "@value": "字符串值",
  "@language": "LANGUAGE"
  "@direction": "DIRECTION"
}

当使用语言值对象代替字符串 值时,该 对象必须包含一个 @value 属性,应该包含一个 @language 属性, 并且可以还包含一个 @direction 属性。 @value 属性由 一个字符串组成。@language 属性由一个字符串组成,该字符串是 语言标识标签所定义的格式良好的 语言标签。所使用的任何 语言标签都应该有效的。@direction 属性由 一个字符串组成,其值是 JSON-LD 1.1@direction 属性所定义的基本 方向字符串。语言值对象不得包含除 @value@language@direction 之外的任何其他键。

使用上述模板,以下示例以英语表示一本 书的标题,而不指定文本方向。

示例 36:将自然语言文本表示为英语
"title": {
  "@value": "HTML and CSS: Designing and Creating Websites",
  "@language": "en"
}

下一个示例使用以阿拉伯语表示的类似标题,并将 基本方向设为从右到左。

示例 37:基本方向为 从右到左的阿拉伯语文本
"title": {
  "@value": "HTML و CSS: تصميم و إنشاء مواقع الويب",
  "@language": "ar",
  "@direction": "rtl"
}
:正确 渲染国际化文本具有挑战性

如果没有明确表示语言和方向,上述文本很可能会被错误地按从左到右 渲染,因为许多系统 使用文本字符串的第一个字符来确定其基本方向

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

示例 38:一本书标题的多个语言值 对象
"title": [
  {
    "@value": "HTML and CSS: Designing and Creating Websites",
    "@language": "en"
  },
  {
    "@value": "HTML و CSS: تصميم و إنشاء مواقع الويب",
    "@language": "ar",
    "@direction": "rtl"
  }
]

作者也可以在一个值 数组中混合文本字符串和语言值对象

示例 39:文本字符串和语言值对象可以 混合在单个数组中
"title": [
  "Příklad názvu knihy",
  {
    "@value": "An Example of a Book Title",
    "@language": "en"
  }
]

9.2 提供默认 语言和方向

每个自然语言字符串属性值的语言和基本方向 应该予以提供,可以通过为每个属性 值提供语言值对象,也可以通过为整个 凭证中的所有值提供默认语言和基本方向。首选使用每个值对应的语言值对象, 因为 使用文档默认值可能会导致要求下游处理器 执行基于 JSON-LD 展开的转换,而该转换在其他情况下是可选的。有关 更多信息,请参阅 [JSON-LD11] 规范中的 字符串国际化一节。没有关联语言的自然语言字符串值 应该被视为其语言值为 undefined (语言标签 "und")。没有关联基本 方向的自然语言字符串值应该被视为其方向值为 "auto"。

A. 威胁模型

本节为非规范性内容。

本节详述本规范的总体威胁模型,包括安全注意事项和隐私注意事项。对每项威胁的完整分析及其应对措施, 载于 可验证凭证数据模型威胁模型。 实现者应将其中给出的建议应用于本规范提供的每一项具体功能。

A.1 目标威胁

  1. 凭证内容篡改 安全 — 攻击者在可验证凭证签发后获得其访问权限, 修改凭证内容以更改其表达的声明,或者移除其安全机制, 企图让下游验证过程在未检测到缺少完整性保护的情况下接收该凭证。
  2. 签发时身份核验失败 安全签发者用于建立对主体之信任的流程失败, 导致提交他人信息的攻击者获得一份以受害者为其主体的真实凭证, 并且所有下游验证都会成功。

A.2 实现威胁

  1. 通过凭证内容进行代码注入 安全可验证凭证携带包含可注入代码的值, 例如 rdf:HTML 值中的标记,而未进行充分处理便呈现该内容的使用方会被迫执行这些代码。
  2. 基于签名的关联 隐私 — 构成安全机制的值, 例如签名值、时间戳或公钥标识符,在不同会话和域中保持不变,使验证者即使在载荷中没有出现可关联标识符时, 也能将呈现 关联到同一持有者
  3. 通过状态和撤销查询进行关联 隐私 — 检查凭证状态这一行为会泄露正在发生交互的事实, 使签发者获知凭证 在哪些地方被呈现,并使签发者验证者 能够串通起来关联持有者
  4. 签名密钥泄露与管理不当 安全 — 遭泄露的私有签名密钥使攻击者能够伪造验证结果仍会报告为真实的凭证; 将同一密钥用于多个用途,或让密钥服役超过合理的密码使用期限,会增加密钥泄露的可能性。
  5. 篡改未受保护的外部资源 安全 — 从可验证凭证链接的内容, 例如图像、JSON-LD 上下文或 JSON Schema,位于安全机制的保护范围之外, 因此攻击者对其进行修改后,即使验证仍然成功,也会引入漏洞。
  6. 呈现交换攻击(中间人、重放和欺骗) 安全 — 数据模型本身无法防止交换可验证呈现时发生的 中间人、重放和欺骗攻击:验证者无法确定自己是否为预期接收方、 某个呈现是否正在被重复使用, 或者持有者是否有权呈现相关声明
  7. 凭证的不当使用或脱离上下文使用 安全 — 有效签名和成功的状态检查并不能表明某份凭证适合其使用情境, 因此,将验证视为充分条件的验证者 会接受来源和性质不符合当前用途的凭证

A.3 部署威胁

  1. 基于标识符的关联 隐私可验证凭证包含长期存在的标识符, 例如主体标识符、电子邮件地址或政府签发的标识符, 使两个验证者,或者一个签发者与一个验证者, 能够串通起来跨域跟踪持有者
  2. 不可信的用户代理软件 隐私 — 充当实体之用户代理的软件,尤其是持有者的数字钱包, 可能违背用户利益,披露超出持有者 授权范围的信息;或者,当它同时承担多个角色时,无法以每一方的最佳利益行事。
  3. 过度披露数据 隐私可验证凭证携带的个人身份信息超出交互所需, 或者验证者请求的信息超过必要的最低限度, 使主体在每次使用凭证时都面临信息披露。
  4. 基于元数据的关联 隐私 — 当只有相对较少的签发者使用某种特定组合时, 对扩展、凭证类型和技术配置文件的选择 会成为可用于关联的指纹,从而削弱持有者所期待的假名性。
  5. 不记名凭证的重复使用与关联 隐私 — 在多个站点重复使用同一不记名凭证, 会使这些站点能够串通起来跟踪持有者; 单独看来不具身份识别能力的信息,也可能通过统计方式识别出个人。
  6. 通过使用模式进行关联 隐私 — 即使将每次披露的信息降至最低,呈现可验证凭证的模式仍可能导致去匿名化, 无论这是通过向同一验证者重复呈现、多个验证者之间串通, 还是通过在不同呈现中保持稳定的主体标识符实现。
  7. 向恶意或欺骗性的验证者披露信息 隐私验证者恶意行事,请求可能损害持有者的信息, 例如银行账号,随后再将其与其他信息结合起来实施欺诈。
  8. 数据盗窃与凭证蜜罐 安全 — 存储可验证凭证可验证呈现, 会形成吸引攻击者的敏感数据蜜罐,而整个生态系统对数据保留和保护方式的选择决定了盗窃事件的规模。
  9. 签发者侧关联与隐私破坏 隐私 — 许多隐私保护措施依赖签发者不去破坏这些措施; 如果签发者签发有效期较短且自动续期的凭证, 或者为每份凭证生成唯一密钥, 那么即使验证者无法做到,签发者仍能关联持有者的行为。
  10. 不恰当的有效期 安全 — 如果有效期超过高度动态信息的预期使用期限,就会留下一段依赖过时信息的时间窗口; 而有效期过短,又会使持有者验证者承受频繁重新签发带来的负担。
  11. 设备盗窃与冒充 安全 — 获得遗失或被盗设备的攻击者,会未经授权访问依赖受害者可验证凭证的系统, 并冒充持有者

A.4 外部威胁

  1. 存储提供商的数据挖掘与强制披露 隐私 — 第三方凭证库会让其运营方接触到 存储的可验证凭证; 运营方可能挖掘其中的个人数据,也可能被法律程序强制要求披露这些数据。
  2. 设备跟踪与指纹识别 隐私 — 位于可验证凭证之外的跟踪机制, 例如地址跟踪、浏览器指纹识别和广告跟踪器,会与凭证数据结合, 揭示新的可关联信息;获取链接的外部资源还会向托管该资源的服务器暴露活动信息。
  3. 凭证与数据聚合 隐私 — 掌握同一主体的两项信息, 所揭示的内容会多于分别考虑这两项信息时所能得到的内容, 从而使验证者或相互串通的站点 能够构建一个随着时间推移和更多信息泄露而不断扩展的个人档案。
  4. 呈现后未经授权使用数据 隐私持有者出于声明的用途共享可验证呈现后, 验证者将数据用于超出持有者同意范围的用途, 而该数据模型没有提供任何方式,让持有者 能在呈现后强制执行对数据用途的授权。

A.5 依赖项威胁

  1. 密码套件过时 安全 — 用于保护可验证凭证的密码套件和库都有使用寿命, 最终会在新型攻击和技术进步面前失效;此后,攻击者即使伪造或修改凭证,验证结果仍可能报告其为真实。

隐私注意事项

本节为非规范性内容。

本节详述在生产环境中部署可验证凭证数据模型时的一般隐私注意事项和具体隐私影响。 上文概述的隐私威胁及其各自的应对措施,在 可验证凭证数据模型威胁模型 中有完整分析。

隐私光谱

本节为非规范性内容。

必须认识到,隐私存在一个从使用假名到强身份识别的连续光谱。 根据具体用例,人们对于自己愿意提供的信息以及可以从中推导出的信息,有着不同的接受程度。

一个水平条,左侧为红色,中间为橙色,右侧为绿色。红色区域的文字为“高度可关联(全局 ID),例如政府签发的身份证件、收货地址、信用卡号”。橙色区域的文字为“可通过串通进行关联(个人身份信息),例如姓名、生日、邮政编码”。绿色区域的文字为“不可关联(假名),例如年龄超过 21 岁”。
13 从使用假名到完全身份识别的隐私光谱。

隐私解决方案取决于具体用例。 例如,很多人在购买酒类时更愿意保持匿名,因为法规只要求验证购买者是否超过特定年龄。 相比之下,当药房为患者配发由医疗专业人员开具的处方药时,法律要求药房对处方开具者和患者 进行更严格的身份识别。没有任何一种隐私方法能够适用于所有用例。

: 年龄证明对于某些用例而言可能并不充分

即使希望在购买酒类时保持匿名的人,也可能需要提供带照片的身份证明, 以便商家能够进行适当确认。商家或许不需要知道您的姓名,也不需要知道除您已超过 特定年龄之外的任何详细信息,但在许多情况下,简单的年龄证明可能不足以满足法规要求。

可验证凭证数据模型力求支持完整的隐私光谱,并不对任何特定交易应采用何种匿名级别 持哲学立场。希望避免特定隐私敌对情境的实现者,可以参考 可验证凭证数据模型威胁模型 中记录的隐私威胁和应对措施。

不记名凭证

本节为非规范性内容。

持有者凭证是一项 增强隐私的信息,例如音乐会门票,它使其 持有者无需持有者 泄露敏感信息即可获得特定资源。在低风险场景中,实体通常会使用持有者 凭证,因为多个持有者出示相同的可验证凭证 并不会引起担忧,也不会造成巨大的经济或声誉损失。

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

示例 40:签发者属性的使用
{
  "@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": {
    // 请注意,持有者凭证未指定 'id' 属性
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "理学与文学学士"
    }
  }
}
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": "理学与文学学士"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2026-09-13T23:07:55Z",
    "verificationMethod": "did:key:zDnaej4rRZHrUtvxgRBNpmsvLsUjFb3a3b2y5C8YtsGoexjCT",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z5m8CuGBDKPA6sSzWA3cQjcBhGtXtJ5WCZ4MjUfVMj88Mxq4MAinmzxd9ZR7r9vo8S7WdYynHod1bNFaiH3QsrvWp"
  }
}
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": "理学与文学学士"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2026-09-13T23:07:55Z",
    "verificationMethod": "did:key:zDnaejWrVEMxMS8KoTAUQPQ1hAcoCUK8q8bHKqyuxxwi1StSz",
    "cryptosuite": "ecdsa-sd-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0AhVhAHq3Ekld1n_1Ne9z7uAqH7RYW1BKQ6sh1H5EzUFjt1CsLw1RD3cAdPwsty2xmsqj6eDJXRnn86EKwmZIPDFIhTVgjgCQCZV1I38H3jsNJS7Wha9Xvldk2v2Y7kAUsi70Wgp5zy05YIH6wY7t1ikQOYJdEydEh0Nm-BBnbR0H4vSuouJrAvBMohVhAYhuoVgYbWiyJZK8NC3HK0tobIPWvbgQnL_WNFc_r8tUOuYuRqtQyxZKXDEhsWFlbcbagiejFcfVXZ4uO2JTKcFhAYV845a9bva-xI0xJ2VfmUa5kwU5LalD9gze0hGHzcdrCkfwQVYV_Mx5Ca9Y2S1B7mdG3VbMqyIaOGePHqB_P8VhA4Z7_PaEGoH55q18f2o6a_024Uypm1Wl7sH64rb2_4gxmw33ejest4ZNR0bi7XHPSqkqobZK_VDhqIWeShgwBSFhAVR1HbtF7nUd0m3N7Lsnw0LJrKjvr6KzLZw4v7typVufz9x30TDx-sjJOoaRDEDqWNtV6gdzS8W51D8-czoiuCVhA1PWIR20tVasGVC5E4pnj-3a4ObktLixACN0xUrzDyN8afqA4Vb6AY9-rbjRAp9dI3xH3e7I6JyXTOKXE1NAeOIFnL2lzc3Vlcg"
  }
}
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": "理学与文学学士"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "verificationMethod": "did:key:zUC71huiWdhS9bhS3c7qEiPnS2DFyxYSBLn9GzpW15wZMdTJ6tjWEsgyExiAZ8XkrEu8Y5Tpsvu1RwQi6Bzy4ce8Wvf8ikZUfYaVZVNcUi8aiExBhEsZ2T5HwNWT1fqyAbAKuqZ",
    "cryptosuite": "bbs-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0ChVhQgTH7cJJfE63wsttDfhsF_HHiVJmXLIktmevyKeiZW-FrsT7JStPV3oADQ66zMG4iOKfG9MZ02uIWlfZ4P4Rbi7QhXf-864OzvydJ4laM_H5YQOzFWI0_8JjFsAHB4_NK3_pWM4lOH75F-B273Huck8o7drHmhnEXifHmmlKM3zCnc0pq4l3ZkBkIESZ4DrQomVNYYIJATjbZefKgHbjwatWVl7Q-K64WmVuyLwHk0iyY3Aks-wtSG8xQUeXNgZlDJttjsAkuT-bn-COio-nUPyf2B7fI9uOFrugJSQdqt6e57w94B34WzKJpEhv0nTEPJ0byMFgg1xn8VmXE0yqw_5isUSNPZoEzXM4CRwaZ8t-mO9Kj6SOBZy9pc3N1ZXI"
  }
}
受保护的标头
{
  "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": "理学与文学学士"
    }
  }
}
application/vc+jwt
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzL3RlbXBvcmFyeS8yODkzNDc5MjM4NzQ5MjM4NCIsInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJFeGFtcGxlRGVncmVlQ3JlZGVudGlhbCJdLCJpc3N1ZXIiOiJodHRwczovL3VuaXZlcnNpdHkuZXhhbXBsZS9pc3N1ZXJzLzE0IiwidmFsaWRGcm9tIjoiMjAxNy0xMC0yMlQxMjoyMzo0OFoiLCJjcmVkZW50aWFsU3ViamVjdCI6eyJkZWdyZWUiOnsidHlwZSI6IkV4YW1wbGVCYWNoZWxvckRlZ3JlZSIsIm5hbWUiOiJCYWNoZWxvciBvZiBTY2llbmNlIGFuZCBBcnRzIn19fQ .sekW4rH47RNp5GDMR1Ik14TQ_9HmVZI6z5QYRvAEA3QhSWpw6z_y50dZhqanmMO20iFgAW86d1P05qTurMRMmw
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": "理学与文学学士"
    }
  }
}
application/vc+cose
d28443a10128a05901a27b2240636f6e74657874223a5b2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f7632222c2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f6578616d706c65732f7632225d2c226964223a22687474703a2f2f756e69766572736974792e6578616d706c652f63726564656e7469616c732f74656d706f726172792f3238393334373932333837343932333834222c2274797065223a5b2256657269666961626c6543726564656e7469616c222c224578616d706c6544656772656543726564656e7469616c225d2c22697373756572223a2268747470733a2f2f756e69766572736974792e6578616d706c652f697373756572732f3134222c2276616c696446726f6d223a22323031372d31302d32325431323a32333a34385a222c2263726564656e7469616c5375626a656374223a7b22646567726565223a7b2274797065223a224578616d706c6542616368656c6f72446567726565222c226e616d65223a2242616368656c6f72206f6620536369656e636520616e642041727473227d7d7d58403b28ed16d7ea11f200c7536fa1af8b0216c937771a8f66e564d73fd5e91b8abf3dec6ada4b2ccc26bbdd8df2b1508b35d4dff98acea4311ee9e0b3daf8d68c72
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJpYXQiOjE3ODkzNDA4NzUsImV4cCI6MTc5MDU1MDQ3NSwiX3NkX2FsZyI6InNoYS0yNTYiLCJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy8xNCIsInZhbGlkRnJvbSI6IjIwMTctMTAtMjJUMTI6MjM6NDhaIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiZGVncmVlIjp7Im5hbWUiOiJCYWNoZWxvciBvZiBTY2llbmNlIGFuZCBBcnRzIiwiX3NkIjpbImVDRzBPYmpySms3SmtxLWxmYmFDcnc1cnpJRUJ1V2g2RWNwLWJZTTlOT28iXX19LCJfc2QiOlsiVnBzeTBSODBDbXphLWhGYjljQWxNRG9JTlZub2NrZGk2TTlFcVB0ZmhHRSIsImJFV2FRbzdTU1hNSjZtdmtXSy00TkZWMzdRc3d6d0NjaWh4dmpGZlNITmciXX0 .b8VCuZgkLIGFwHkd5xaZnWzGA3X1O7X1W6cFd9WDB7bK6Wd2zp_mmKK6h0KyzHMA4p5LKZR1UtHzBEIfhf-KiA ~WyJaWFlIby1VOGpSREhrcXQ4dHhQYmVBIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvdGVtcG9yYXJ5LzI4OTM0NzkyMzg3NDkyMzg0Il0~WyI5RDJjdWU3eEo4cTVVMWhjYmR6bkZ3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d~WyJLYVNldUF0ZWlBTy1EdmcwWnQ2amd3IiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0~
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
{
  "iat": 1789340875,
  "exp": 1790550475,
  "_sd_alg": "sha-256",
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2017-10-22T12:23:48Z",
  "credentialSubject": {
    "degree": {
      "name": "理学与文学学士",
      "_sd": [
        "eCG0ObjrJk7Jkq-lfbaCrw5rzIEBuWh6Ecp-bYM9NOo"
      ]
    }
  },
  "_sd": [
    "Vpsy0R80Cmza-hFb9cAlMDoINVnockdi6M9EqPtfhGE",
    "bEWaQo7SSXMJ6mvkWK-4NFV37QswzwCcihxvjFfSHNg"
  ]
}

声明: id

SHA-256 哈希: bEWaQo7SSXMJ6mvkWK-4NFV37QswzwCcihxvjFfSHNg

披露: WyJaWFlIby1VOGpSREhrcXQ4dHhQYmVBIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvdGVtcG9yYXJ5LzI4OTM0NzkyMzg3NDkyMzg0Il0

内容: [
  "ZXYHo-U8jRDHkqt8txPbeA",
  "id",
  "http://university.example/credentials/temporary/28934792387492384"
]

声明: type

SHA-256 哈希: Vpsy0R80Cmza-hFb9cAlMDoINVnockdi6M9EqPtfhGE

披露: WyI5RDJjdWU3eEo4cTVVMWhjYmR6bkZ3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d

内容: [
  "9D2cue7xJ8q5U1hcbdznFw",
  "type",
  [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ]
]

声明: type

SHA-256 哈希: eCG0ObjrJk7Jkq-lfbaCrw5rzIEBuWh6Ecp-bYM9NOo

披露: WyJLYVNldUF0ZWlBTy1EdmcwWnQ2amd3IiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0

内容: [
  "KaSeuAteiAO-Dvg0Zt6jgw",
  "type",
  "ExampleBachelorDegree"
]

尽管持有者凭证能够增强隐私,但签发者仍需要 在设计时谨慎行事,以避免无意中泄露超出持有者持有者 凭证预期的更多信息。由持有者 凭证的设计和重复使用所产生的关联 风险以及对这些风险的应对措施,在可验证凭证数据模型 威胁模型的 持有者 凭证重复使用与关联中进行了说明。

隐私浏览

本节为非规范性内容。

在理想的隐私浏览情境中,不会披露任何 PII。由于许多凭证包含 PII, 向持有者提供软件的组织,应当警告他们: 如果在隐私浏览模式下使用凭证呈现,这些信息仍有可能被披露。 由于各浏览器供应商处理隐私浏览的方式不同,而且某些浏览器可能没有此功能, 实现者不得依赖隐私浏览模式提供任何隐私保护。相反,建议实现者依靠其软件能够直接使用的工具来提供隐私保障。

安全注意事项

本节为非规范性内容。

W3C 正在转向一种整体式威胁建模方法, 并正逐步弃用新规范中的“安全注意事项”章节。 有关安全注意事项的文档,请参阅附录 A. 威胁模型

B. 确认

本节为非规范性内容。

尽管本规范没有为可验证凭证可验证呈现确认过程提供一致性标准, 但读者可能想知道验证者确认过程中应如何使用本数据模型中的信息。 本节记录了工作组围绕验证者应如何使用本规范中的属性 所开展的部分讨论。

B.1 凭证类型

本节为非规范性内容。

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

凭证的类型通过 type 属性表示。特定类型的可验证凭证包含特定的 属性(这些属性可能深度嵌套),可用于确定 呈现是否满足 验证者所执行的一组处理规则。通过请求特定 type可验证凭证验证者能够从 持有者处收集特定信息,这些信息源自每个可验证凭证签发者,并使验证者能够确定与 持有者交互的下一阶段。

验证者请求特定类型的可验证凭证时, 将会有一组与该类型相关联的必需和可选声明。 当未包含必需的声明时,验证者可验证凭证的验证将 失败,而任何与特定类型无关的声明 都将被忽略。换句话说, 验证者将对其接收的可验证凭证执行输入验证, 并根据凭证类型规范拒绝格式错误的输入。

B.2 凭证主体

本节为非规范性内容。

在由持有者出示的可验证凭证中,与每个 credentialSubjectid 属性关联的值向 验证者标识一个 主体。如果持有者同时也是主体,那么 如果验证者拥有与持有者相关的验证 元数据,就可以对持有者进行认证。随后,验证者可以使用 可验证呈现中包含的、由持有者生成的签名来认证 持有者id 属性是可选的。验证者 可以使用可验证凭证中的其他属性来唯一 标识一个主体

: 认证超出范围

有关认证和 WebAuthn 如何与 可验证凭证配合使用的信息,请参阅可验证 凭证实施指南 1.0文档。

B.3 签发者

本节为非规范性内容。

issuer 属性关联的值, 向验证者标识一个签发者

验证者可以通过第 7.1 验证节定义的验证算法,获得与 issuer 属性相关的元数据。 这些元数据包括对已验证控制者的标识;该控制者控制安全机制用于保护每份可验证凭证可验证呈现的验证方法, 而该控制者通常分别为相应的 issuerholder

某些生态系统中的签发者 与验证方法控制者之间可能存在更复杂的关系,并且除了上述映射之外或者代替上述映射, 还可能使用经过验证的签发者列表。

B.4 持有者

本节为非规范性内容。

holder 属性关联的值用于向 验证者标识 持有者

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

有关与 主体持有者相关的更多示例,请参阅可验证 凭证实施指南 1.0可验证凭证用例

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

验证是验证者应用业务规则来 评估可验证凭证特定用途是否恰当的过程。

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

B.5 签发日期

本节为非规范性内容。

validFrom 应当位于验证者所预期的范围内。例如,验证者可以检查可验证凭证有效期的开始时间是否不在未来。

B.6 证明(签名)

本节为非规范性内容。

用于证明可验证凭证可验证呈现中的信息未被篡改的安全机制, 称为密码学证明。密码学证明有许多类型,包括但不限于数字签名和零知识证明。 一般而言,在验证密码学证明时,实现应确保:

一般而言,在验证数字签名时,实现应确保:

B.7 有效期

本节为非规范性内容。

验证者预期 validFromvalidUntil 属性处于特定范围内。例如,验证者可以检查可验证凭证有效期的结束时间是否不在过去。 由于某些凭证即使原始有效期已经届满,仍可能对次要用途有用, 因此使用 validFromvalidUntil 属性表达的有效期, 始终被视为确认的组成部分;确认在验证之后执行。

B.8 状态

本节为非规范性内容。

如果 credentialStatus 属性可用,则 可验证凭证的状态应由验证者 根据该 可验证凭证credentialStatus 类型定义以及验证者自身的状态评估 标准进行评估。例如,验证者可以确保 可验证凭证的状态不是“由 签发者因故撤销”。

B.9 模式

本节为非规范性内容。

如果 credentialSchema 属性可用,则 可验证凭证的模式应由 验证者 根据该 可验证凭证credentialSchema 类型定义以及 验证者自身的模式评估 标准进行评估。例如,如果 credentialSchematype 值为 [VC-JSON-SCHEMA],那么验证者可以确保凭证的 数据对于给定的 JSON Schema 是有效的。

B.10 用途适用性

本节为非规范性内容。

用途适配性是指 可验证凭证中的自定义属性是否适合验证者的用途。 例如,如果验证者需要确定某个主体是否 年满 21 岁,则其可能依赖特定的 birthdate 属性,或依赖更抽象的属性,例如 ageOver

验证者信任签发者作出当前的声明。例如,某个特许经营的快餐店门店信任 该特许经营企业总部作出的折扣券声明。除非愿意承担忽略政策的责任,否则持有者验证者应尊重签发者可验证凭证中表达的政策信息。

B.11 “人工 智能”和“机器学习”

本节为非规范性内容。

使用如今通常所称的“人工智能” 和/或“机器学习”的系统,可能能够以 达到或超过人类表现的水平执行复杂任务。这可能包括诸如 获取和使用可验证凭证之类的任务。使用 此类任务来区分人类活动和自动化“机器人”活动,就像如今 通常使用 CAPTCHA 所做的那样,例如,可能因此不再能够提供充分或可接受的保护。

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

C. 上下文、 词汇表、类型和凭证模式

C.1 基础上下文

实现必须将位于 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 上下文 URL 都使用相同的机制或功能上等效的机制, 以确保端到端安全。如果某个资源的密码学哈希值 与预期的哈希值不匹配,则实现应抛出错误。

在执行诸如 JSON-LD 展开 转换为 RDF之类的操作期间,应用上述基础上下文以及任何 @context 属性中的其他上下文 和值的实现,应在不发生任何 错误的情况下完成这些操作。如果执行此类操作并导致错误, 则可验证凭证可验证呈现必须导致 验证失败。

:如果 检测到哈希值发生变化,请参阅勘误

本规范中具有相关密码学哈希 值的文件发生变化的可能性极低。但是,如果在规范中 发现关键勘误,并且为了确保 生态系统稳定性而需要进行修正,则密码学哈希值可能会发生变化。因此, 这些文件的 HTTP 缓存时间不会设置为无限期,并建议实现者在检测到 密码学哈希值发生变化时检查勘误。

本节旨在提醒确保以下事项的重要性:在 验证可验证凭证可验证呈现时, 验证者拥有的信息应与签发者持有者在保护凭证呈现时所拥有的信息一致。 此信息至少可能包括:

  1. 凭证本身的内容,这些内容在 可验证凭证可验证呈现中通过使用 保护机制进行保护。有关更多 信息,请参阅第 4.12 保护机制节。
  2. 凭证中其含义依赖于指向外部 URL 的链接的内容, 例如 JSON-LD 上下文,可以通过使用本地静态副本 或文件的密码学摘要进行保护。有关更多 详细信息,请参阅第 5.3 相关资源的完整性节。

警告验证者,从 凭证内部引用的其他数据,例如通过 URL 链接到的资源,默认情况下 不受密码学保护。确保通过使用 永久缓存的文件和/或密码学哈希,为任何对 可验证凭证安全性至关重要的 URL 提供相同类型的保护,被视为最佳实践。最终,知道 任何所链接外部内容的密码学摘要,可以使验证者 确认该内容与签发者持有者 所预期的内容相同。

C.2 词汇表

依赖 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 摘要: c7a06ccc144d9d72f435f64802fdfb802a32aefe8b0bcb7504f69754b8c0faeb

可以通过现代类 UNIX 操作系统的命令行界面运行类似以下的命令, 并将 <DOCUMENT_URL> 替换为适当的值, 以确认上面列出的密码学摘要: curl -sL -H "Accept: application/ld+json" <DOCUMENT_URL> | openssl dgst -sha256

: schema.org 经常发生变化,但被认为是稳定的

实现者和文档作者可能会注意到,本规范没有提供 schema.org 的密码学摘要。 这是因为 schema.org 词汇表会定期发生变化; 提供的任何摘要都会在发布后数周内过时。工作组讨论了这一问题,并得出结论: 本规范使用的 schema.org 词汇表术语多年来一直保持稳定, 其语义含义发生变化的可能性极低。

本规范定义了以下基类,供处理器和其他可受益于这些定义的规范使用:

基类 用途
CredentialEvidence 作为放入 evidence 属性中的特定证据类型的超类。
CredentialSchema 作为放入 credentialSchema 属性中的特定模式类型的超类。
CredentialStatus 作为放入 credentialStatus 属性中的特定凭证状态类型的超类。
ConfidenceMethod 作为放入 confidenceMethod 属性中的特定置信方法类型的超类。
RefreshService 作为放入 credentialRefresh 属性中的特定刷新服务类型的超类。
RenderMethod 作为放入 renderMethod 属性中的特定呈现方法类型的超类。
TermsOfUse 作为放入 termsOfUse 属性中的特定使用条款类型的超类。

C.3 数据类型

本节定义本规范使用的数据类型。

C.3.1 sriString 数据类型

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

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

C.4 上下文、类型和凭证模式之间的区别

本节为非规范性内容。

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

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

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

由于 @context 属性用于将数据映射到图 数据模型,而 [JSON-LD11] 中的 type 属性用于 描述图中的节点,因此当这两个属性结合使用时, type 属性就变得 更加重要。例如, 如果使用 [JSON-LD11] 时,解析后的 @context 资源中没有包含 type 属性,则可能导致声明 在可验证凭证的生成和 使用过程中被丢弃和/或其完整性不再受到保护。 或者,这也可能导致在生成或使用可验证凭证时 引发错误。这取决于实现的设计 选择,而如今的实现中这两种路径都有采用,因此在使用 [JSON-LD11] 表示的可验证凭证可验证呈现时,务必注意这些属性。

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

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

credentialSchema@context 属性 结合使用时,生成者和使用者都可以更有信心地 确定可验证凭证可验证呈现的预期内容和数据类型。

D. IANA 注意事项

本节为非规范性内容。

本节将提交给互联网工程指导组(IESG),由其审查、批准并在 IANA 注册。

D.1 application/vc

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

类型名称: application
子类型名称: vc
必需参数:
编码注意事项: 使用 application/vc 媒体类型的资源必须符合 application/ld+json 媒体类型的所有要求,因此 受JavaScript 对象表示法 (JSON) 数据交换格式第 11 节中规定的相同编码注意事项约束。
安全注意事项: 可验证凭证数据模型 v2.0中所定义。
联系方式: W3C 可验证凭证工作组 public-vc-wg@w3.org

请注意,虽然可验证凭证格式 使用 JSON-LD 约定, 但可验证凭证实现存在许多约束和附加要求,这使得 使用特定媒体类型是合理的。

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

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

D.2 application/vp

本规范注册 application/vp 媒体类型,专门用于标识符合可验证呈现格式的文档。

类型名称: application
子类型名称: vp
必需参数:
编码注意事项: 使用 application/vp 媒体类型的资源必须符合 application/ld+json 媒体类型的所有要求,因此需遵循 JavaScript 对象表示法 (JSON)数据交换格式第 11 节中规定的相同编码注意事项。
安全注意事项: 按照可验证凭证数据模型 v2.0中的定义。
联系方式: W3C 可验证凭证工作组 public-vc-wg@w3.org

请注意,尽管可验证呈现格式 使用 JSON-LD 约定,但对可验证呈现实现还存在许多约束和附加要求, 因而有理由使用专门的媒体类型。

此媒体类型可以在封装式证明中使用, 以表示被封装的载荷。

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

E. 可验证呈现的 附加图示

本节为非规范性内容。

下面的149的一种变体:一个可验证呈现引用两份可验证凭证, 并使用基于 [VC-DATA-INTEGRITY] 的嵌入式证明。每个可验证凭证图都与其各自独立的证明图连接; verifiableCredential 属性用于将可验证呈现可验证凭证图连接起来。呈现证明图表示可验证呈现图、两个可验证凭证图,以及从可验证凭证图链接的证明图的数字签名。在本例中,完整的可验证呈现由六个信息组成。


图中顶部是一个“可验证呈现图”,它通过“proof”连接到底部的“可验证呈现证明图”。
可验证呈现图包含一个名为“Presentation ABC”的对象,该对象具有 3 个属性:
“type”的值为“VerifiablePresentation”;“termsOfUse”的值为“Do Not Archive”;
以及下面详述的两个“verifiableCredential”实例。此图带有括号注释“(默认图)”。
此图通过“verifiableCredential”连接到图中由图 6 的两个变体组成的部分
(其中一个完全相同;另一个在表示有效日期、人员姓名、nonce 值和签名值的标签上略有不同),
但这些可验证凭证图被注释为命名图,而不是默认图。可验证呈现证明图包含一个标记为
“Signature 8920”的对象,该对象具有 5 个属性:“type”的值为“DataIntegrityProof”;
“verificationMethod”的值为“Example Presenter Public Key 11”;
“created”的值为“2024-01-02T12:43:56Z”;“nonce”的值为“hasdkyruod87j”;
“proofValue”的值为“zpewJHoan87=”。此图带有括号注释“(命名图)”
14 9的一种变体:与引用两份可验证凭证的可验证呈现关联的信息,使用基于 可验证凭证数据完整性 1.0 [VC-DATA-INTEGRITY] 的嵌入式证明

下面的15展示了与可验证呈现相同的14,但它使用基于 [VC-JOSE-COSE] 的封装式证明。 每个可验证凭证图都包含一个 EnvelopedVerifiableCredential 实例;该实例通过 data: URL [RFC2397], 引用一份通过封装式证明保护的可验证凭证。


图的左侧有一个标记为“JWT(已解码)”的框,其中垂直排列了三个文本标签,
分别为“Header”、“Payload”和“Signature”。“Header”标签通过箭头连接到右侧的
一个独立矩形,其中包含六个文本字段:“kid: aB8J-_Z”、“alg: ES384”、
“cty: vc”、“iss: https://example.com”、“iat: 1704690029”和“typ: vp+sd-jwt”。
左侧的“Payload”标签通过箭头连接到另一个独立矩形,该矩形由三个相互关联且垂直排列的图组成。
顶部图发出的两条箭头分别连接到另外两个图,箭头均标记为“verifiableCredential”。
顶部图的标签是“可验证呈现图(序列化为 JSON)”;另外两个图的标签都是
“可验证凭证图(序列化为 JSON)”。矩形中的顶部图包含一个“Presentation ABC”对象,
它有 3 个属性:“type”的值为 VerifiablePresentation,“termsOfUse”的值为“Do Not Archive”。
底部的一个图包含主体“data:application/vc+sd-jwt,QzVjV...RMjU”,
该主体只有一个属性:“type”的值为“EnvelopedVerifiableCredential”。
最后一个底部图与另一个图相同,但其主体标记为
“data:application/vc+sd-jwt,RkOyT...KjOl”。最后,左侧的“Signature”标签通过箭头
连接到一个独立矩形,其中包含一个文本字段:“cYjaSdfIoJH45NIqw3MYnasGIba...”。
15 10的一种变体:与引用两份可验证凭证的可验证呈现 关联的信息,使用基于 JOSE [VC-JOSE-COSE] 的封装式证明

F. 修订历史

本节列出了本规范历来所作的实质性更改。

v2.0 第二版候选推荐标准以来的更改:

v2.0 第一版候选推荐标准以来的更改:

v1.1 推荐标准以来的更改:

v1.0 推荐标准以来的更改:

G. 致谢

本节为非规范性内容。

工作组感谢以下人士。他们不仅为本文档的内容作出了贡献, 还在这个标准社区中承担了大量艰巨工作,在众多不同意见中推动变更、讨论并促成共识: David Chadwick、Dave Longley、Ted Thibodeau Jr.、Brent Zundel、Ivan Herman、 Joe Andrieu 和 Gabe Cohen。

本规范的工作得到了“重启信任网络”社区的支持,该社区由 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 推动的 互联网身份研讨会参与者,也通过大量旨在介绍、讨论和改进本规范的工作会议, 支持了这项工作的完善。

工作组还感谢我们的历任工作组主席 Dan Burnett、Matt Stone、Brent Zundel、 Wayne Chang 和 Kristina Yasuda,以及我们的 W3C 工作人员联系人 Kazuyuki Ashimura 和 Ivan Herman; 他们凭借专业管理和持续指导,带领工作组完成了多个 W3C 标准化周期。 我们还感谢 W3C 凭证社区组的历任主席 Christopher Allen、Joe Andrieu、Kim Hamilton Duffy、Heather Vescent、Wayne Chang、 Mike Prorock、Harrison Tang、Kimberly Wilson Linson 和 Will Abramson; 他们监督孵化了许多后来纳入本规范的工作项目。

本规范的部分工作由美国国土安全部科学与技术局通过合同 HSHQDC-17-C-00019、70RSAT20T00000010/P00001、70RSAT20T00000029、 70RSAT21T00000016/P00001、70RSAT23T00000005、70RSAT23C00000030、 70RSAT23R00000006、70RSAT24T00000014、70RSAT22T00000001 提供资助, 并由美国国家科学基金会通过 NSF 22-572 提供资助。 本规范的内容不一定反映美国政府的立场或政策,也不应推断其获得任何官方认可。

工作组感谢以下人士审阅本规范并提供反馈 (按照名字或在未提供姓名时按照 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.

H. 参考文献

H.1 规范性参考文献

[i18n-glossary]
国际化术语表。 Richard Ishida;Addison Phillips。W3C。2024 年 10 月 17 日。W3C 工作组说明。URL:https://www.w3.org/TR/i18n-glossary/
[INFRA]
基础设施标准。Anne van Kesteren;Domenic Denicola。WHATWG。现行标准。URL:https://infra.spec.whatwg.org/
[JSON-LD11]
JSON-LD 1.1。Gregg Kellogg; Pierre-Antoine Champin;Dave Longley。W3C。2020 年 7 月 16 日。W3C 推荐标准。URL:https://www.w3.org/TR/json-ld11/
[JSON-LD11-API]
JSON-LD 1.1 处理算法和 API。Gregg Kellogg;Dave Longley;Pierre-Antoine Champin。W3C。 2020 年 7 月 16 日。W3C 推荐标准。URL:https://www.w3.org/TR/json-ld11-api/
[RFC2119]
用于在 RFC 中表示要求级别的 关键词。S. Bradner。IETF。1997 年 3 月。最佳当前实践。URL:https://www.rfc-editor.org/info/rfc2119/
[RFC2397]
“data”URL 方案。 L. Masinter。IETF。1998 年 8 月。提议标准。URL:https://www.rfc-editor.org/info/rfc2397/
[RFC6838]
媒体类型规范和注册 程序。N. Freed;J. Klensin;T. Hansen。IETF。2013 年 1 月。 最佳当前实践。URL:https://www.rfc-editor.org/info/rfc6838/
[RFC8174]
RFC 2119 关键词中大写与小写的歧义。B. Leiba。IETF。2017 年 5 月。 最佳当前实践。URL:https://www.rfc-editor.org/info/rfc8174/
[RFC9457]
HTTP API 的问题详情。 M. Nottingham;E. Wilde;S. Dalal。IETF。2023 年 7 月。提议标准。URL:https://www.rfc-editor.org/info/rfc9457/
[SRI]
子资源完整性。Frederik Braun。W3C。 2026 年 3 月 20 日。W3C 工作草案。URL:https://www.w3.org/TR/sri-2/
[URL]
URL 标准。Anne van Kesteren。WHATWG。 现行标准。URL:https://url.spec.whatwg.org/
[VC-DATA-INTEGRITY]
可验证凭证数据完整性 1.0。Ivan Herman;Manu Sporny;Ted Thibodeau Jr;Dave Longley; Greg Bernstein。W3C。2025 年 5 月 15 日。W3C 推荐标准。URL:https://www.w3.org/TR/vc-data-integrity/
[VC-JOSE-COSE]
使用 JOSE 和 COSE 保护可验证凭证。Michael Jones;Gabe Cohen;Michael Prorock。 W3C。2025 年 5 月 15 日。W3C 推荐标准。URL:https://www.w3.org/TR/vc-jose-cose/
[XMLSCHEMA11-2]
W3C XML Schema 定义语言(XSD)1.1 第 2 部分:数据类型。David Peterson;Sandy Gao;Ashok Malhotra;Michael Sperberg-McQueen;Henry Thompson;Paul V. Biron 等。W3C。2012 年 4 月 5 日。 W3C 推荐标准。URL: https://www.w3.org/TR/xmlschema11-2/

H.2 资料性参考文献

[BCP47]
语言标识标签。 Addison Phillips; Mark Davis. IETF. 2009 年 9 月。最佳当前实践。URL:https://www.rfc-editor.org/info/bcp47
[CID]
受控标识符 v1.0。Michael Jones;Manu Sporny。W3C。2025 年 5 月 15 日。W3C 推荐标准。URL:https://www.w3.org/TR/cid-1.0/
[DID]
去中心化标识符(DID)v1.0。 Manu Sporny;Amy Guy;Markus Sabadello;Drummond Reed。W3C。2022 年 7 月 19 日。 W3C 推荐标准。URL: https://www.w3.org/TR/did-core/
[ETSI-TRUST-LISTS]
电子 签名和基础设施(ESI);可信列表。ETSI。ETSI。ETSI 标准 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
[JSON]
JavaScript 对象表示法(JSON)数据 交换格式。T. Bray,编。IETF。2017 年 12 月。互联网标准。URL:https://www.rfc-editor.org/info/rfc8259/
[LD-BP]
发布关联数据的最佳实践。 Bernadette Hyland;Ghislain Auguste Atemezing;Boris Villazón-Terrazas。W3C。 2014 年 1 月 9 日。W3C 工作组说明。URL:https://www.w3.org/TR/ld-bp/
[LINKED-DATA]
关联数据设计 问题。Tim Berners-Lee。W3C。2006 年 7 月 27 日。W3C 内部文档。URL:https://www.w3.org/DesignIssues/LinkedData.html
[RDF-SCHEMA]
RDF Schema 1.1。Dan Brickley; Ramanathan Guha。W3C。2014 年 2 月 25 日。W3C 推荐标准。URL:https://www.w3.org/TR/rdf-schema/
[RDF11-CONCEPTS]
RDF 1.1 概念和抽象 语法。Richard Cyganiak;David Wood;Markus Lanthaler。W3C。 2014 年 2 月 25 日。W3C 推荐标准。URL:https://www.w3.org/TR/rdf11-concepts/
[RFC7049]
简明二进制对象表示 (CBOR)。C. Bormann;P. Hoffman。IETF。2013 年 10 月。提议标准。URL:https://www.rfc-editor.org/info/rfc7049/
[RFC7159]
JavaScript 对象表示法(JSON)数据 交换格式。T. Bray,编。IETF。2014 年 3 月。提议标准。URL:https://www.rfc-editor.org/info/rfc7159/
[RFC7231]
超文本传输协议(HTTP/1.1): 语义和内容。R. Fielding,编;J. Reschke,编。IETF。2014 年 6 月。 提议标准。URL:https://httpwg.org/specs/rfc7231.html
[RFC9110]
HTTP 语义。R. Fielding,编; M. Nottingham,编;J. Reschke,编。IETF。2022 年 6 月。互联网标准。URL:https://httpwg.org/specs/rfc9110.html
[SCHEMA-ORG]
Schema.org。W3C Schema.org 社区组。W3C。6.0。 URL:https://schema.org/
[SD-JWT-VC]
基于 SD-JWT 的可验证 数字凭证。Oliver Terbu;Daniel Fett;Brian Campbell。互联网工程任务组。 互联网草案。URL:https://datatracker.ietf.org/doc/draft-ietf-oauth-sd-jwt-vc/
[STRING-META]
Web 上的字符串:语言和方向 元数据。Richard Ishida;Addison Phillips。W3C。2026 年 7 月 16 日。 首份公开工作草案。URL:https://www.w3.org/TR/string-meta/
[VC-BARCODES]
可验证凭证条形码 v1.0。Wesley Smith;Elaine Wooton;Manu Sporny。W3C。 2026 年 8 月 22 日。W3C 工作草案。URL:https://www.w3.org/TR/vc-barcodes-1.0/
[VC-CONFIDENCE-METHOD]
可验证凭证置信方法 v1.0。Joe Andrieu;Denken Chen。W3C。2026 年 8 月 17 日。 W3C 工作草案。URL:https://www.w3.org/TR/vc-confidence-method/
[VC-DATA-MODEL-2.0]
可验证凭证数据模型 v2.0。Ivan Herman;Michael Jones;Manu Sporny;Ted Thibodeau Jr; Gabe Cohen。W3C。2025 年 5 月 15 日。W3C 推荐标准。URL:https://www.w3.org/TR/vc-data-model-2.0/
[VC-DI-BBS]
数据完整性 BBS 密码套件 v1.0。 Greg Bernstein;Manu Sporny。W3C。2026 年 4 月 7 日。候选推荐标准草案。URL:https://www.w3.org/TR/vc-di-bbs/
[VC-EXTENSIONS]
可验证凭证扩展。 Manu Sporny。W3C 可验证凭证工作组。W3C 编辑草案。URL:https://w3c.github.io/vc-extensions/
[VC-IMP-GUIDE]
可验证凭证实现指南 1.0。Andrei Sambra。W3C。2019 年 9 月 24 日。W3C 工作组说明。URL:https://www.w3.org/TR/vc-imp-guide/
[VC-JSON-SCHEMA]
可验证凭证 JSON Schema 规范。Gabe Cohen;Orie Steele。W3C 可验证凭证工作组。 首份公开工作草案。URL:https://www.w3.org/TR/vc-json-schema/
[VC-OVERVIEW]
可验证凭证概述 v1.0。Ivan Herman。W3C。2026 年 7 月 30 日。W3C 工作组说明。URL:https://www.w3.org/TR/vc-overview-1.0/
[VC-RENDER-METHOD]
可验证凭证呈现方法 v1.0。Dmitri Zagidulin;Manu Sporny;Patrick St-Louis;Isaac Koh。W3C。 2026 年 8 月 22 日。W3C 工作草案。URL:https://www.w3.org/TR/vc-render-method/
[VC-USE-CASES]
可验证凭证用例。Joe Andrieu;Kevin Dean。W3C。2026 年 3 月 18 日。W3C 工作组说明。URL:https://www.w3.org/TR/vc-use-cases/
[WCAG21]
Web 内容无障碍指南(WCAG) 2.1。Michael Cooper;Andrew Kirkpatrick;Joshue O'Connor; Alastair Campbell。W3C。2025 年 5 月 6 日。W3C 推荐标准。URL:https://www.w3.org/TR/WCAG21/