可验证凭据概述

W3C组注释

有关此文档的更多详细信息
此版本:
https://www.w3.org/TR/2024/NOTE-vc-overview-20240613/
最新发布版本:
https://www.w3.org/TR/vc-overview网站/
最新编辑草稿:
https://w3c.github.io/vc-overview网站/
历史记录:
https://www.w3.org/standards/history/vc-overview/
提交历史记录
编辑:
伊凡·赫尔曼 (W3C公司)
作者:
格雷格·伯恩斯坦(受邀专家)
丹尼尔·伯内特(ConsenSys公司)
大卫·查德威克(Crossword Cybersecurity PLC公司)
盖布·科恩()
迈克尔·琼斯(受邀专家)
戴夫·朗利(数字集市)
马努孢子虫(数字集市)
奥里·斯蒂尔(变音箱)
泰德·蒂博多(OpenLink软件)
布伦特·祖德尔(网格.io)
反馈意见:
GitHub w3c/vc-概述(拉入请求,新发行的,未决问题)
public-vc-wg@w3.org带主题行[vc-概述]…消息主题…(档案)

摘要

证书是我们日常生活的一部分;驾照被用来证明我们有能力驾驶汽车,大学学位可以用来证明我们的教育水平,政府颁发的护照使我们能够在国家之间旅行。的家庭W3C公司本概述文档中描述的可验证凭据建议提供了一种机制,可以在Web上以加密安全、尊重隐私和机器可验证的方式表达这些类型的凭据。

本文件的状态

本节描述此发布时的文档。当前列表W3C公司可以找到出版物和本技术报告的最新版本在中W3C公司技术报告索引网址:https://www.w3.org/TR/。

本文件由可验证凭据工作组作为使用笔记曲目.

本集团票据由这个可验证凭据工作组,但未得到W3C公司自身或其自身成员。

这是一份草案文件,可能会被其他人更新、替换或作废文件。将本文件作为其他文件引用是不合适的而不是进行中的工作。

这个W3C公司专利政策对此没有任何许可要求或承诺文档。

本文件受2023年11月3日W3C公司工艺文件.

1介绍

本文件对W3C公司的可验证凭证规范,并作为定义、描述和保护这些凭证的文档的路线图。本文件的目标不是非常精确,也不是概述所有细节。其目的是向用户、实施者或任何对该主题感兴趣的人提供对概念的一般理解,以及可验证证书工作组发布的各种文件是如何组合在一起的。

1.1规范的高层视图

1概述了可验证凭据的主要构建块,包括它们的(规范性)依赖关系。有关更多详细信息,请参阅本文档中的后续章节。

这个可验证凭据数据模型v2.0 [VC-DATA型号-2.0]规范(specification)起着核心作用,它定义了所有其他规范所依赖的核心概念。模型是用抽象术语定义的,应用程序使用数据模型的序列化表示其特定凭据。当前规范大多使用JSON序列化;社区将来可能会开发其他序列化。

当可验证凭证在JSON中序列化时,重要的是要相信凭证的结构可以由可验证凭证生态系统中的所有参与者以一致的方式解释。这个可验证凭据JSON模式规范 [VC-JSON-SCHEMA公司]定义了如何[JSON-模式]可以用于此目的。

可以使用两种不同的机制保护凭据:包络证明嵌入式证明.在这两种情况下,证明加密保护凭证(例如,使用数字签名)。在封装的情况下,证明围绕凭证进行,而嵌入的证明与凭证本身一起包含在序列化中。

封装证明系列定义于使用JOSE和COSE保护可验证凭据 [VC-JOSE-COSE公司]文档,依赖于IETF定义的技术。社区可以指定其他类型的包络证明。

嵌入证明的一般结构在单独的可验证凭证数据完整性1.0 [VC-DATA完整性]规范。此外,工作组还以“加密套件”的形式详细说明了这种一般结构的一些实例:数据完整性EdDSA Cryptosuites v1.0 [VC-DI-EDDSA公司],数据完整性ECDSA Cryptosuites v1.0 [VC-DI-ECDSA公司]、和数据完整性BBS Cryptosuites v1.0 [VC-DI-BBS]. 其他加密套件可能由社区指定。

这个位字符串状态列表v1.0 [VC-BITSTRING-STATUS-列表]规范定义了一种保护隐私、节省空间和高性能的机制,用于通过使用位字符串发布状态信息,例如暂停或撤销可验证凭据。

最后控制器文档1.0 [文档控制器]规范定义了一些通用术语(例如,验证关系方法)不仅被其他可验证凭证规范使用,还被其他建议使用,例如分散标识符(DID)v1.0 [DID-芯].

图示说明可验证凭据(VC)规范的结构,使用标有规范参考的框。图中的箭头将一些方框连接起来,以表示(规范)依赖关系。标记为VC数据模型的框位于图表的中心。其他组件框与VC数据模型相关,例如用于结构检查的JSON模式、用于发布状态信息的位字符串状态列表以及用于验证方法和关系的控制器文档。用于固定机构的盒子代表单独的盒子组,进一步分组用于嵌入校样和封装校样。嵌入式证明组包括一个标记为“数据完整性”的框,该框取决于VC数据模型和控制器文档;以及用于不同椭圆曲线和签名方案的ECDSA、EdDSA和BBS加密套件,这些都依赖于数据完整性。封装的证明部分包括一个使用JWS、SD-JWT或CBOR标记为JOSE和COSE的框,并且还依赖于VC数据模型和控制器文档。
1 可验证凭据工作组的建议

2生态系统概述

可验证凭证规范依赖于由扮演不同“角色”的实体组成的生态系统。主要角色包括:

发行人
一个实体创建凭证,由一系列与主题相关的声明组成可验证凭证。例如,一所大学颁发大学学位证书或校友证书。
持有人
一个实体拥有一个或多个凭据,可以传输演示文稿其中之一向第三方提供可验证的凭据。例如,“持有”自己的教育学位的人。另一个示例可能是包含代表某人的多个凭据的数字钱包。
验证人
对可验证凭证执行验证以检查凭证的有效性、一致性等的实体。例如,雇主的数字系统在决定雇佣某人。

有关这些角色以及其他角色的更精确定义,请参阅相关的部分在数据模型规范中。

显示凭证如何从发卡机构流向持卡人,以及演示如何从持卡人流向验证者的图表,其中所有三方都可以使用来自逻辑可验证数据注册中心的信息
2 构成VC数据模型基础的角色和信息流。

三。可验证凭据数据模型

3.1基本结构

3.1.1索赔、财产

核心概念是“权利要求”:关于各种实体的陈述,称为“主体”。受试者可以是上述持有人、发行人或验证者,也可以是其他人(例如,持有大学学位的人)、动物、抽象概念等。索赔也可能在凭证本身上,例如签发日期、有效期等。(此类声明也被松散地称为“凭据元数据”。)

权利要求使用“属性”表示,“属性”指“值”。值可以是文字,但也可以是其他实体,通常由[统一资源定位地址]. 在这种情况下,该实体可能成为另一索赔的主体;这些声明一起构成了表示凭证的声明的“图表”。(请参见6对于这样一个图形的示例,用图形表示。有关更复杂的示例,请参阅可验证凭据数据模型v2.0规范本身。)

主题具有具有值的属性
具有(在本例中)文字值的索赔的基本结构。

这个可验证凭据数据模型v2.0文档指定了许多标准属性。例如,这些包括:,凭证科目,类型,发行人,或有效期自. 开发商可以定义自己的属性来表示特定类型的证书,如驾驶执照、大学学位或结婚证书。

3.1.2可验证的凭据

凭据是由同一实体提出的一个或多个索赔的集合。凭据还可能包括一个标识符和元数据,用于描述凭据的属性,例如对颁发者的引用、有效日期、代表图像、吊销机制等。可验证凭据是一组声明和元数据,其中还包括验证机制,以加密方式证明是谁发布的,确保数据未被篡改等。

有关抽象可验证凭据的更详细描述和示例,请参阅相关的部分在数据模型规范中。

可验证凭据包含凭据元数据、声明和证据
4 可验证凭证的基本组件。

3.1.3可验证的演示文稿

增强隐私是可验证凭据的一个关键设计功能。因此,对于使用该技术的实体来说,只能够表达其角色中适合特定情况的部分是很重要的。角色子集的表达式称为可验证演示. 不同角色的例子包括一个人的职业角色、他们的在线游戏角色、他们家庭的角色或隐姓埋名的角色。

可验证演示文稿由持有者创建,可以表示来自多个可验证凭据的数据,并且可以以附加声明的形式包含附加元数据。它们用于向验证者提交声明。也可以直接显示可验证凭证。

可验证演示文稿通常是短期的,它并不意味着要存储更长的时间。

有关抽象可验证演示文稿的更详细描述和示例,请参阅相关部分在数据模型规范中。

可验证演示文稿包含演示元数据、可验证凭证和证明
5 可验证演示文稿的基本组件。

3.2JSON中的序列化

在[VC-DATA型号-2.0]与其他文档一样,可验证凭据和表示大多以JSON表示[RFC7519协议]更具体地说[JSON-LD11标准]. 在这种序列化中,声明的属性表示为JSON名称,值表示为JSON文字或对象。权利要求的主体可以通过身份证件属性,或者通过表现为另一个权利要求的对象而隐含地。

由定义的标准属性[VC-DATA型号-2.0]形成一组不同的JSON名称,称为(标准)词汇.JSON-LD中可验证凭证的一个重要特征是,它支持一种去中心化和无许可的方法来延伸通过分布在Web上的特定于应用程序的属性集(即词汇表),访问新的应用程序区域。任何人都可以“发布”这样的词汇表,遵循可扩展性部分规范的要求。

以下JSON-LD代码是简单凭证的示例。声明称,名为“Pat”的人https://www.exampl.org/persons/pat,是示例大学的校友(由did:示例:c276e12ec21ebfeb1f712ebc6f1).该凭证自2010年1月1日起生效,由以下机构颁发did:示例:2g55q912ec3476eba2l9812ecbfe.凭证中的大多数属性来自标准的可验证凭证词汇表,但有些术语(如校友,校友证书)由引用的特定于应用程序的词汇表添加https://www.example.org/vocbs/alumber网站.

例子1:简单凭证
{“@context”:["https://www.w3.org/ns/credentials/v2","https://www.example.org/vocbs/alumber网站"],“id”:“https://university.example/Credential123",“type”:[“VerifiableCredential”,“ExampleAlumniCredential”],“发行人”:“做过:示例:2g55q912ec3476eba2l9812ecbfe”,“validFrom”:“2010-01-01T00:00:00Z”,“凭证主题”:{“id”:“https://www.example.org/persons/pat",“name”:“帕特”,“校友”:{“id”:“did:example:c276e12ec21ebfeb1f712ebc6f1”,“name”:“示例大学”}}}

6显示了相同的凭证,但表示为索赔图,如中所述3.1.1索赔、财产.

可验证演示文稿包含演示元数据、可验证凭证和证明
6 凭证输入例子1以权利要求的集合表示。
注释

中的凭证例子1在本文档中,用于说明如何应用各种规范定义的其他功能。

中的凭证例子1由Example University发布,由持有者(可能是个人、数字钱包或任何其他实体)存储。根据要求,持有者可以向验证者“出示”封装在可验证演示文稿中的凭证。这就是JSON-LD序列化的结果:

例子2:出示凭证
{“@context”:["https://www.w3.org/ns/credentials/v2","https://www.example.org/vocbs/alumber网站"],“type”:“可验证演示”,“id”:“urn:uuid:313801ba-24b7-11ee-be02-ff560265cf9b”,“holder”:“did:example:12345678”,“validUntil”:“2020-12-31T00:00:00Z”“可验证凭据”:{“id”:“https://university.example/Credential123",“type”:[“VerifiableCredential”,“ExampleAlumniCredential”],“发行人”:“做过:示例:2g55q912ec3476eba2l9812ecbfe”,“validFrom”:“2010-01-01T00:00:00Z”,“凭证主题”:{“id”:“https://www.example.org/persons/pat",“name”:“帕特”,“校友”:{“id”:“did:example:c276e12ec21ebfeb1f712ebc6f1”,“name”:“示例大学”}}}}

请注意,持有者可以在同一个演示文稿中演示多个凭证,或者通过将其与其他凭证组合,或者删除与特定上下文无关的某些声明来创建新凭证。

3.3使用JSON模式检查结构

可验证凭证的完整性很大一部分来自于对其内容进行结构化的能力,以便所有三方——发行人、持有人、验证者——在解释提供给他们的数据时都可以拥有一致的信任机制。一种方法是使用[JSON-SCHEMA公司]检查凭证的结构有效性。这个可验证凭据JSON模式规范 [VC-JSON-SCHEMA公司]规范添加了标准属性来表示凭证与JSON模式的关联。

考虑以下示例:

例子:带有JSON模式的简单凭证
{“@context”:["https://www.w3.org/ns/credentials/v2","https://www.example.org/vocbs/alumber网站"],“id”:“https://university.example/Credential123",“type”:[“VerifiableCredential”,“ExampleAlumniCredential”],“发卡行”:“做了:例如:2g55q912ec3476eba2l9812ecbfe”,“validFrom”:“2010-01-01T00:00:00Z”,“凭证主题”:{“id”:“https://www.example.org/persons/pat",“name”:“帕特”,“校友”:{“id”:“did:example:c276e12ec21ebfeb1f712ebc6f1”,“name”:“示例大学”}},“凭证架构”:{“id”:“https://university.example/Credential-schema.json",“type”:“JsonSchema”}}

取消引用时,URLhttps://university.example/Credential-schema.json应返回JSON模式,例如:

例子4:简单凭证的JSON架构
{“$id”:“https://example.com/schemas/email.json",“$schema”:“https://json-schema.org/draft/2020-12/schema网站",“title”:“ExampleAluminiCredential”,“description”:“使用JsonSchema的校友凭证”,“type”:“对象”,“属性”:{“凭证主题”:{“type”:“对象”,“属性”:{“校友”:{“type”:“字符串”,“format”:“url”}},“必需”:[“校友”]}}}

使用此JSON模式,验证器可以检查凭证在结构上是否有效。

出于安全原因,人们可能想更进一步:检查/验证JSON模式本身,看看它是否经过了调整。这可以通过引用JSON模式来实现通过单独的可验证凭证间接.对这种可验证凭证的引用看起来非常类似例子除了类型:

例子5:带有JSON架构凭据的简单凭据
{“@context”:["https://www.w3.org/ns/credentials/v2","https://www.example.org/vocbs/alumber网站"],“id”:“https://university.example/Credential123",“type”:[“可验证凭证”,“ExampleAluminiCredential”],“发行人”:“做过:示例:2g55q912ec3476eba2l9812ecbfe”,“validFrom”:“2010-01-01T00:00:00Z”,“凭证主题”:{“id”:“https://www.example.org/persons/pat",“name”:“帕特”,“校友”:{“id”:“did:example:c276e12ec21ebfeb1f712ebc6f1”,“name”:“示例大学”}},“凭证架构”:{“id”:“https://university.example/Credential-schema-Credential网站",“type”:“JsonSchemaCredential”}}

在这种情况下,当取消引用时,URLhttps://university.example/Credential123-schema-credential网站应返回可验证凭据,该凭据凭证科目属性引用所需的JSON模式(即。,https://university.example/Credential-schema.json). 请参阅例子在中可验证凭据JSON模式规范示例和更多详细信息的规范。

4保护凭据

4.1信封校样

本工作组定义的凭证封装证明基于JSON对象签名和加密(JOSE公司)、CBOR对象签名和加密(COSE)[RFC9052协议]或针对JWT的选择性披露[SD-JWT公司]. 这些都是IETF规范,或者是指JWT的一组规范,如JOSE[RFC7519协议]、JWS[RFC7515协议],或JWK[RFC7517协议]).这个使用JOSE和COSE保护可验证凭据 [VC-JOSE-COSE公司]建议在这些和可验证凭据数据模型v2.0,指定合适的标头声明、媒体类型等。

在JOSE的情况下,凭证是“有效负载”(使用IETF术语)。前面是一个合适的标头,其详细信息由使用JOSE和COSE保护可验证凭据JWT的使用。这些信息经过编码、串联和签名,由一个实体以紧凑的形式传输给另一个实体(例如,由持有者发送给验证器)。签名、加密密钥等所有复杂的细节都由IETF规范定义;看见例子6针对特定情况。

COSE的使用[RFC9052协议]与JOSE相似,只是所有结构都在CBOR中表示[RFC8949协议].然而,从凭证的角度来看,其结构与凭证(或演示文稿)类似也是COSE的有效载荷。CBOR的使用意味着可验证凭证(或演示文稿)的最终表示大大减少了占用空间,例如可以在QR代码中显示。

[SD-JWT公司]是JOSE的一个变体,允许选择性披露个人权利要求。声明可以选择性地隐藏或向验证者透露,但所有声明都是加密的防止修改。这种方法显然比JOSE案例更复杂,但从Credentials的角度来看,其结构也是类似的。原始凭证是SD-JWT的有效负载;持有人有责任使用SD-JWT使用选择性公开向验证器出示凭证时。

4.1.1示例:由JOSE担保的核心示例

凭证示例,如所示例子1,并通过引用中的JSON模式进行了丰富例子,可通过以下封装证明进行保护:

例子6:JWT中的简单凭证(未编码)
//标题{“iss”:“did:示例:2g55q912ec3476eba2l9812ecbfe”,“alg”:“HS256”,“cty”:“vc+ld+json”,“典型”:“vc+ld+json+jwt”}---//有效载荷{“@context”:["https://www.w3.org/ns/credentials/v2","https://www.example.org/voabs/alumni(网址:https://www.example.org/voabs/alumni)"],“id”:“https://university.example/Credential123",“type”:[“可验证凭证”,“ExampleAluminiCredential”],“发行人”:“做过:示例:2g55q912ec3476eba2l9812ecbfe”,“validFrom”:“2010-01-01T00:00:00Z”,“凭证主题”:{“id”:“https://www.example.org/persons/pat",“name”:“帕特”,“校友”:{“id”:“did:example:c276e12ec21ebfeb1f712ebc6f1”,“name”:“示例大学”}},“凭证架构”:{“id”:“https://university.example/Credential123-schema-credential网站",“type”:“JsonSchemaCredential”}}

下一步,使用JWS定义的方法对标头和有效负载进行编码、串联和签名[RFC7515协议]. 经过编码和签名的凭证可以如下所示(使用字符串“VC Overview”作为签名的秘密):

例子7:使用JOSE封装的简单凭证
eyJpc3MiOiJkaWQ6ZXhhbXBsZToyZzU1cTkxMmVjMzQ3NmViYTJsOTgxMmVjYmZlIiwiYWxnIjoiSFMyNTYiLCJjdHkiOiJ2YytsZCtqc29uIiwidHlwIjoidmMrbGQranNvbitqd3QifQ。eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRw czov L3dy5leGFtcGxlLm9yZy92b2NhYnMvyWx1bW5pIl0sImlkIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvQ3JlzGvudGlhbDEyMyIsInR5cGUIOlsiVmVmVyaWZpYWJsZUNyZWRlbnRpY WwiLCJFeGFtcGxlQWx1bW5pQ3JlZGVudGlhbCJdLCJpc3N1ZXIiOiJkaWQ6ZXhhbXBsZToyZzU1cTkxMmVjMzQ3NmViYTJsOTgxMmvjYmZlIiwidmFsaWRGcm9tIjoiMjAxMC0wMS0wMVQwMDowMDowMFoiLCJjcmVkZW50aWFsU3ViamVjdCI6eyJpZCI6Imh0dHBzOi8vd3d3LmV4YW1wbGUb3JnL3BlcnNvbnMvcGF0IiwibmFtZSI6IlBhdCIsImFsdW1uaU9mIjp7ImlkIjoiZGlkOmV4yW1wpGU6YzI3NmUxVjMjFlYjFmNzEyZJjNjNjnNyZWjNjn mYxIiwibmFtZSI6IkV4YW1wbGUgVW5pdmVyc2l0eSJ9fSwiY3JlZGVudGlhbFNjaGVtYSI6eyJpZCI6Imh0dHBzOi8vdW5pdm Vyc2l 0eS5leGFtcGxlL0NyZWRlbnRpYwxMjMtc2NoZW1hLWNyZWRlbnRpYWwiLCJ0eXBlijoiSnNvblNjaGVtYUNyZWRbnRpyWwifX0。Ic1SxIMuwAuTHVQ_2i3wzLvRTSP9EwIS6_G_nEAueVg

4.2嵌入式校样

4.2.1通用数据完整性结构

数据完整性的操作在概念上很简单。要创建加密证明,请执行以下步骤:1)转换、2)哈希和3)证明生成。

待定
7 证明生成步骤的通用视图。
  1. 转型是由变换算法它获取输入数据并为散列过程做好准备。在JSON中序列化数据的情况下,此转换包括删除所有不影响数据语义的工件,如空格、新行、JSON名称的顺序等(此步骤通常称为规范化).在某些情况下,转换可能更为复杂。
  2. 散列是由散列算法它使用加密哈希函数.通常,结果散列的大小小于数据,这使得它更适合于数字签名等复杂的加密功能。
  3. 证明生成是由证明方法计算保护来自修改或其他方面的输入数据的完整性证明了某种期望的信任阈值。一个典型的例子是使用非对称密钥应用加密签名,从而生成数据签名。

验证证明包括在验证器一侧重复相同的步骤,并根据证明方法,用与数据相关联的值验证新计算的证明值。对于数字签名,此测试通常意味着将计算出的签名值与嵌入数据中的签名值进行比较。

4.2.2VC数据完整性

这个可验证凭证数据完整性1.0 [VC-DATA完整性]规范依赖于一般结构,并定义了一组描述证明生成过程细节的标准属性。具体细节(规范化算法、散列和/或证明方法算法等)由单独的加密套件. 工作组已将许多此类密码套件定义为单独的规范,请参见4.2.3加密套件如下所示。

在一般结构中,核心属性是证明. 此属性在凭证中嵌入一个声明,引用一个单独的声明集合(称为证明图表)详细说明关于证据本身的所有主张:

例子8:添加到凭证的证据骨架
{“@context”:["https://www.w3.org/ns/credentials/v2","https://www.example.org/vocbs/alumber网站"],“id”:“https://university.example/Credential123",“type”:[“VerifiableCredential”,“ExampleAlumniCredential”],“发行人”:“做过:示例:2g55q912ec3476eba2l9812ecbfe”,“validFrom”:“2010-01-01T00:00:00Z”,“凭证主题”:{“id”:“https://www.example.org/persons/pat",“name”:“帕特”,“校友”:{“id”:“did:example:c276e12ec21ebfeb1f712ebc6f1”,“name”:“示例大学”}},“凭证架构”:{“id”:“https://university.example/Credential123-schema-credential网站",“type”:“JsonSchemaCredential”},“证明”:{“type”:“DataIntegrityProof”,
    //关于证据的所有细节
    “proofValue”:“zQeVb…Wx”}}

请注意校对价值属性,其对象是证明生成过程的结果。

注释

证明值仅用于说明目的,并不反映真实密码计算的结果。

这个定义证明引入了许多其他属性。其中一些是证明本身的元数据属性,如创建,到期,或领域. 其他人提供了有关证明生成过程本身的必要细节,如密码套件,现时(如果需要),或验证方法通常指的是加密密钥。用于凭据时,公钥的确切格式在[文档控制器]规范,并基于JWK[RFC7517协议]格式或Multibase[MULTIBASE(多基地)]密钥的编码,称为多功能键.密钥值的详细信息由其他社区(IETF、加密组等)定义,并取决于它们使用的特定加密功能。

可以为同一凭证嵌入多个证明。这些可能是一组独立的证明(例如,基于不同的密码套件,以适应不同验证者的特殊性),但也可能是必须按给定顺序评估的证明“链”。

证据还可以通过证明目的属性:可以为身份验证、断言或密钥协议提供不同的证明。这些可能的目的在[文档控制器]规范。验证者应该根据自己操作的目的选择正确的证明,这也是持有人或签发人可能为同一凭证提供几种证明的另一个可能原因。

4.2.3加密套件

工作组发布了三份加密套件文件:数据完整性ECDSA Cryptosuites v1.0 [VC-DI-ECDSA公司],数据完整性EdDSA Cryptosuites v1.0 [VC-DI-EDDSA公司]、和数据完整性BBS Cryptosuites v1.0 [VC-DI-BBS]. 顾名思义,这些文件依赖于现有的加密签名方案:椭圆曲线数字签名算法(ECDSA)规范[菲普斯-186-5]Edwards-Curve数字签名算法(EdDSA)规范[重油催化裂化8032]、和BBS签名方案[CFRG-BBS标志]分别是。

8提供了这三个密码套件定义的六个密码套件的总体视图建议。它们都实现了证明的一般结构,如4.2.1通用数据完整性结构.如图所示,一个区别轴是数据转换函数,即JSON序列化的规范化:两个加密套件使用JSON规范化(JCS)[RFC8785协议],其他使用RDF数据集规范化(RDFC-1.0)[RDF-大炮].另一个轴是密码套件是否提供选择性披露,这是六个密码套件中两个的情况加密套件。

该图像是一个流程图,显示了各种加密套件的分类及其各自的规范化方法。该图表分为三个主要的加密套件文档:EdDSA(基于Edwards曲线)、ECDSA(根据ECDSA曲线)和BBS(基于BBS方案)。EdDSA套件进一步分为两个特定的加密套件:EdDSA-rdfc-2022(使用rdfc-1.0进行规范化)和EdDSA-jcs-2022。ECDSA套件分为三个特定的加密套件:ECDSA-rdfc-2019(使用rdfc-1.0或规范化)、ECDSA-jcs-2019(利用jcs规范化)和ECDSA-sd-2023(使用rdfc-1.0进行规范化并提供选择性公开方案)。BBS套件分为一种方法:BBS-2023(使用RDFC-1.0进行规范化并提供选择性披露方案)。
8 证明生成步骤的通用视图。
注释

所有这些加密套件的一个共同特征是,密钥必须始终使用多功能键编码。密钥的确切格式在各自的签名方案规范中定义,密钥还可以选择用于证明生成算法的哈希函数。这提供了加密套件之间的另一个差异轴,尽管在实践中,SHA-256[RFC6234协议]通常使用。

4.2.3.1全面披露方案

两个EdDSA加密套件,以及ecdsa-rdfc-2019年电子数据采集系统-电子数据采集系统-2019,遵循中所述的验证生成管道4.2.1通用数据完整性结构:凭证是规范化的(使用JCS或RDFC-1.0),结果是散列的(使用签名密钥定义的散列函数),证明是使用该散列值生成的。然而,还有一个额外的转折点:同样的管道也用于一组称为“证明选项”的声明,即证明图的所有声明除了 proof值. 因此,这组声明也被规范化和散列,遵循与Credential相同的过程,生成第二个散列值。它是这两个值的串联分别由EdDSA或ECDSA签名,为proof值属性。

4.2.3.2选择性披露方案

这个ecdsa-sd-2023英国广播公司-2023加密套件提供对个人权利主张的选择性披露。在这两种情况下,该过程将“基本证明”(由发卡机构计算)和“衍生证明”(通常由持卡人在有选择地向验证者提交凭证声明时计算)分开。面临的挑战是,验证者应在验证部分值时检查持有者是否可信,而无需访问完整的原始数据。

为了计算基本证明,凭证被补充了额外的信息,以区分“强制性”和“非强制性”索赔。使用这些额外信息4.2.1通用数据完整性结构不仅规范化凭证,而且通过将这两种声明显式分离为各自的集合来转换凭证。此外,每个非强制性索赔都必须单独签署,产生一系列签名。从概念上讲,最终的基础证明是所有这些签名和相关信息的串联,如强制性和非强制性索赔的分离。

出示(衍生)凭证时,持有人生成衍生凭证。这些数据与持有人准备遵守的选择性披露要求相结合;它是所有这些数据的组合,用于创建转发给验证器的派生证明。

4.2.4示例:使用ECDSA担保的核心示例

凭证示例,如所示例子1,并通过引用中的JSON模式进行了丰富例子,可以通过嵌入式证明进行保护,如下所示:

例子9:添加到凭证的ECDSA证明
{“@context”:["https://www.w3.org/ns/credentials/v2","https://www.example.org/vocbs/alumber网站"],“id”:“https://university.example/Credential123",“type”:[“VerifiableCredential”,“ExampleAlumniCredential”],“发行人”:“做过:示例:2g55q912ec3476eba2l9812ecbfe”,“validFrom”:“2010-01-01T00:00:00Z”,“凭证主题”:{“id”:“https://www.example.org/persons/pat",“name”:“Pat”,“校友”:{“id”:“做过:例如:c276e12ec21ebfab1f712ebc6f1”,“name”:“示例大学”}},“凭证架构”:{“id”:“https://university.example/Credential123-schema-credential网站",“type”:“JsonSchemaCredential”},“证明”:{“type”:“DataIntegrityProof”,“cryptosuite”:“ecdsa-rdfc-2019”,“创建”:“2010-01-01T00:00:00Z”,“到期”:“2040-01-01T00:00:00Z”,“验证方法:”did:example:2g55q912ec3476eba2l9812ecbfe#ecdsa-public-key““proofPurpose”:“断言方法”“proofValue”:“zQeVb…Wx”}}

取消引用时,URLdid:示例:2g55q912ec3476eba2l9812ecbfe#ecdsa-public-key应以多密钥格式返回ECDSA公钥,例如:

例子10:ECDSA公钥
{“@context”:["https://www.w3.org/ns/did/v1","https://w3id.org/security/multikey/v1"],“id”:“did:example:2g55q912ec3476eba2l9812ecbfe#ecdsa-public-key”,“type”:“多键”,“控制器”:“did:example:2g55q912ec3476eba2l9812ecbfe”,“publicKeyMultibase”:“z42twTcNeSYcnqg1FLuSFs2bsGH3ZqbRHFmvS9XMsYhjxvHN”}

请注意验证方法属性可能是公钥本身,而不是对包含该密钥的单独资源的引用。

5位字符串状态列表

可验证凭据的颁发者链接到一个位置通常很有用,验证者可以在该位置检查凭据是否已被挂起或吊销。此附加资源称为“状态列表”。

对于状态列表,最简单的方法是在可验证凭证和发布状态的URL之间进行一对一映射,这会带来隐私和性能问题。为了满足隐私期望,将大组凭据的状态捆绑到单个列表中很有用,以帮助保护组隐私。然而,如果在亿万持有者中,每个凭证的状态信息大小高达数百字节,那么这样做会给服务器和客户端带来不可能的负担。这个位字符串状态列表v1.0 [VC-BITSTRING-STATUS-列表]该规范定义了一种高度可压缩、高度节省空间的基于位字符串的状态列表机制。

从概念上讲,位串状态列表是一系列位。当一个位指定一个状态时,例如“已撤销”或“已挂起”,则当该位被设置时,该状态应为true,当该位未设置时,状态应为false。使用位字符串的好处之一是,它是一种高度可压缩的数据格式,因为在一般情况下,大量凭证仍将无法收回。如果使用行程长度压缩技术(如GZIP)进行压缩[RFC1952号文件]结果是一组明显更小的数据:默认状态列表大小为131072个条目,相当于16KB的单比特值,当只有少数可验证的凭据被吊销时,GZIP会将比特串压缩到几百字节。

该图包含一系列水平的相邻方框:左侧有14个方框,右侧有3个方框,这两组由四个点字符连接。这些框组在右侧用文本“16KB”进行注释。除第5位和第10位的方框用不同的颜色(红色)填充外,所有方框都用颜色(绿色)填充。这两个被标记为“吊销的凭据”。所有这些元素都在下面用“ZLIB Compression”和“135 bytes”注释,并用一个小图标表示计算机数据。
9 本节概述的概念的视觉描述。

规范介绍了凭证状态属性以及一些其他子属性,用于将此附加信息添加到可验证凭据。

例子11显示了我们的示例例子9,结合凭证状态信息:该状态信息的用途、对位字符串的引用以及此位字符串中用于封闭凭证的索引:

例子11:引用状态列表的可验证凭据
{“@context”:["https://www.w3.org/ns/credentials/v2","https://www.example.org/vocbs/alumber网站"],“id”:“https://university.example/Credential123",“type”:[“VerifiableCredential”,“ExampleAlumniCredential”],“发行人”:“做过:示例:2g55q912ec3476eba2l9812ecbfe”,“validFrom”:“2010-01-01T00:00:00Z”,“凭证主题”:{“id”:“https://www.example.org/persons/pat",“name”:“帕特”,“校友”:{“id”:“did:example:c276e12ec21ebfeb1f712ebc6f1”,“name”:“示例大学”}},“credentialSchema”:{“id”:“https://university.example/Credential123-schema-credential网站",“type”:“JsonSchemaCredential”},“凭证状态”:{“id”:“https://university.example/statuslist#123456",“type”:“BitstringStatusListEntry”,“statusPurpose”:“撤销”,“statusListIndex”:“123456”,“statusListCredential”:“https://university.example/Credential状态列表"},“证明”:{“type”:“DataIntegrityProof”,“cryptosuite”:“ecdsa-rdfc-2019”,“创建”:“2010-01-01T00:00:00Z”,“过期”:“2040-01-01T00:00:00Z”,“验证方法:”did:example:2g55q912ec3476eba2l9812ecbfe#ecdsa-public-key““校对目的”:“分摊方法”“proofValue”:“zQeVb…Wx”}}

这个状态列表凭据属性在取消引用时应返回分离状态列表的凭据。状态列表本身是该凭证的主题(当然,也可以对其进行签名)。例如:

例子12:位字符串状态列表的凭据
{“@context”:["https://www.w3.org/ns/credentials/v2"],“id”:“https://university.example/Credential状态列表",“类型”:[“可验证凭据”,“BitstringStatusListCredential”],“发行人”:“做过:示例:2g55q912ec3476eba2l9812ecbfe”,“validFrom”:“2005-01-01T00:00:00”,“凭证主题”:{“id”:“https://university.example/statuslist#list",“type”:“BitstringStatusList”,“statusPurpose”:“撤销”,“编码列表”:“uH4sIAAAAAAAAAA-3BMQEAAADCoPVPbQwfoAAAAAAaaAAAAAAAA AAAAIC3AYbSVKsAQAAA”}}

本例中的核心属性是编码列表,这是GZIP压缩位字符串状态列表的base64url编码版本。

6其他出版物

6.1工作组说明

VC工作组还以工作组注释的形式发布并维护了一些附加文件。虽然这些不是正式标准,但它们代表了工作组参与者之间的共识。这些文件是:

可验证凭据用例
本文档中概述的用例过去和现在都有助于在低风险和高风险索赔的标准化和互操作性方面取得进展,其目标是存储、传输和接收数字可验证的属性证明,如资格和成就。用例侧重于小组定义的技术旨在解决的具体场景(包括未来的修订)。
可验证凭据实施指南1.0
本文档提供了可验证凭据的实施指南。
VC规范目录
本文档是所有已知可验证凭证规范的非正式目录,无论这些规范是由全球标准制定组织、社区团体、开源项目还是个人发布的。

6.2标准词汇表

如介绍部分所述,规范定义了许多标准词汇表,即用作JSON名称的标准属性集。可验证凭据使用这些证书来确保互操作性。虽然这些术语的正式规范由各自的规范提供,但词汇表也作为单独的文档发布。这样做是为了便于参考和概述,但如果基于RDF的应用程序使用凭据,那么这些文档也很重要[RDF11-概念].这些词汇文档包括:

可验证凭据词汇2.0版
主要由VC数据模型规范中定义的一些术语VC JSON架构规范。
安全词汇
属性定义的属性名称的定义位字符串状态列表规范。
位字符串状态列表词汇
属性定义的属性名称的定义VC数据完整性规范。
编辑注释

一些词汇表项可能会迁移到控制器文档,这也可能会影响词汇表文件,请参阅相应存储库中的问题.

答:。生命周期详细信息

前面的部分概述了可验证凭证生态系统。本节提供了有关生态系统如何运行的更多详细信息。

显示方式的图表凭证从颁发者流向持有者,并且可以选择从一个持有人到另一个持有人;以及如何演示文稿从持有者流向验证者,可以通过验证和验证从一个验证器切换到另一个。所有各方都可以使用来自逻辑可验证数据注册表。持有者也可以删除凭证。
10 单个可验证凭证的生命周期:此规范的角色和信息流。

可验证凭证生态系统中的角色和信息流如下:

注释

上述操作的顺序不固定,某些操作可能会执行多次。这种行动的再次发生可能是立即的,也可能是在以后的任何时候。

最常见的操作顺序是:

  1. 颁发者向持有者颁发可验证的凭证。
  2. 持有者向验证者出示可验证凭证。
  3. 验证器验证可验证凭证。
  4. 验证器根据验证器的业务规则验证可验证凭证中的声明。
  5. 验证者应用有效的声明。

这些规范没有定义任何用于传输可验证凭据或可验证演示文稿的协议,但假设其他规范确实指定了实体之间如何传输它们,则可验证凭据数据模型直接适用。

这些规范既没有定义授权框架,也没有限制验证者在验证可验证凭证或可验证演示后可能做出的业务决策。相反,验证者在将任何索赔视为有效之前应用自己的业务规则,同时考虑到持有人、可验证凭证的发行人、可验证凭据的索赔以及验证者自己的政策。

特别是部分使用条款在数据模型规范中主体-股东关系《可验证凭据实施指南》中的部分[VC-IMP导轨]指定验证器如何确定:

B。工具书类

B.1型参考资料

[CFRG-BBS-SIGNATURE]
BBS签名方案Tobias Looker;瓦西里斯·卡洛斯;安德鲁·怀特黑德;迈克·洛德(Mike Lodder)。IETF。I-D.网址:https://www.ietf.org/archive/id/draft-irtf-cfg-bbs-signatures-05.html
[文件控制器]
控制器文档1.0迈克尔·琼斯;马努·斯波尼。W3C公司。2024年5月23日。W3C工作草案。网址:https://www.w3.org/TR/controller-document网站/
[DID-CORE(DID-芯)]
分散标识符(DID)v1.0马努·斯波尼;艾米·盖伊;马库斯·萨巴德略;德拉蒙德·里德。W3C公司。2022年7月19日。W3C建议。网址:https://www.w3.org/TR/did-core网址/
【FIPS-186-5】
FIPS PUB 186-5:数字签名标准(DSS)美国商务部/国家标准与技术研究所。2023年2月3日。国家标准。网址:https://nvlpubs.nist.gov/nistpubs/FIPS/nist.FIPS.186-5.pdf
[JSON-LD11]
JSON-LD 1.1版格雷格·凯洛格;Pierre-Antoine Champin;戴夫·朗利。W3C公司。2020年7月16日。W3C建议。网址:https://www.w3.org/TR/json-ld11/
[JSON-SCHEMA]
JSON模式:描述JSON文档的媒体类型奥斯汀·赖特;亨利·安德鲁斯;本·赫顿(Ben Hutton);格雷格·丹尼斯。互联网工程任务组(IETF)。2020年12月8日。互联网-草稿。网址:https://datatracker.ietf.org/doc/html/draft-bhutton-json模式
[多基地]
多数据库数据格式胡安·贝内特(Juan Benet);马努·斯波尼。IETF。2023年2月。互联网-草稿。网址:https://datatracker.ietf.org/doc/draft-multiformats-multibase网站
[RDF-CANON]
RDF数据集规范化格雷格·凯洛格;戴夫·朗利(Dave Longley);丹·山本(Dan Yamamoto)。W3C公司。2024年5月21日。W3C建议。网址:https://www.w3.org/TR/rdf-canon/
[RDF11-概念]
RDF 1.1概念和抽象语法理查德·基加尼亚克(Richard Cyganiak);大卫·伍德;马库斯·兰塔勒。W3C公司。2014年2月25日。W3C建议。网址:https://www.w3.org/TR/rdf11-概念/
[RFC1952]
GZIP文件格式规范4.3版P.德国。IETF。1996年5月。信息性。网址:https://www.rfc-editor.org/rfc/rfc1952
[RFC6234]
美国安全哈希算法(SHA和基于SHA的HMAC和HKDF)D.Eastlake第三名;T·汉森。IETF。2011年5月。信息性。网址:https://www.rfc-editor.org/rfc/rfc6234
[RFC7515]
JSON Web签名(JWS).M.琼斯;J.Bradley;N.坂村。IETF。2015年5月。拟议标准。网址:https://www.rfc-editor.org/rfc/rfc7515
[RFC7517]
JSON Web密钥(JWK)M.琼斯。IETF。2015年5月。拟议标准。网址:https://www.rfc-editor.org/rfc/rfc7517
[RFC7519]
JSON Web令牌(JWT).M.琼斯;J.Bradley;N.坂村。IETF。2015年5月。拟议标准。网址:https://www.rfc-editor.org/rfc/rfc7519
[RFC8032]
Edwards-Curve数字签名算法(EdDSA)S.Josefsson;一、柳斯瓦拉。IETF。2017年1月。信息性。网址:https://www.rfc-editor.org/rfc/rfc8032
[RFC8785]
JSON规范化方案(JCS)A.Rundgren;B.约旦;S.Erdtman。IETF。2020年6月。信息性。网址:https://www.rfc-editor.org/rfc/rfc8785
[RFC8949]
简明二进制对象表示(CBOR).C.鲍曼;P.霍夫曼。IETF。2020年12月。互联网标准。网址:https://www.rfc-editor.org/rfc/rfc8949
[RFC9052]
CBOR对象签名和加密(COSE):结构和过程J.Schaad。IETF。2022年8月。互联网标准。网址:https://www.rfc-editor.org/rfc/rfc9052
[SD-JWT]
JWT选择性披露(SD-JWT)丹尼尔·费特;克里斯蒂娜·安田佳彦(Kristina Yasuda);布莱恩·坎贝尔。IETF OAuth工作组。I-D.网址:https://datatracker.ietf.org/doc/draft-ietf-oauth-selective-disclosure-jwt/
[网址]
URL标准安妮·范·凯斯特伦。WHATWG公司。生活水平。网址:https://url.spec.whatwg.org网站/
[VC-BITSTRING-STATUS-列表]
位字符串状态列表v1.0马努·斯波尼;戴夫·朗利(Dave Longley);马哈茂德·阿尔赫拉希西(Mahmoud Alkhraishi);迈克尔·普罗洛克。W3C公司。2024年5月21日。W3C候选人推荐。网址:https://www.w3.org/TR/vc-bitstring-status-list网站/
[VC-数据完整性]
可验证凭证数据完整性1.0马努孢子虫;戴夫·朗利(Dave Longley);格雷格·伯恩斯坦;Dmitri Zagidulin;塞巴斯蒂安·克莱恩。W3C公司。2024年6月5日。W3C候选人推荐。网址:https://www.w3.org/TR/vc-data-integraity网站/
[VC-DATA-MODEL-2.0]
可验证凭据数据模型v2.0马努·斯波尼;Ted Thibodeau Jr;伊凡·赫尔曼;迈克尔·琼斯;盖布·科恩。W3C公司。2024年6月1日。W3C候选人推荐。网址:https://www.w3.org/TR/vc-data-model-2.0/
[VC-DI-BBS]
数据完整性BBS Cryptosuites v1.0格雷格·伯恩斯坦;马努·斯波尼。W3C公司。2024年4月28日。W3C候选人推荐。网址:https://www.w3.org/TR/vc-di-bbs/
[VC-DI-ECDSA]
数据完整性ECDSA Cryptosuites v1.0马努·斯波尼;马丁·里德;格雷格·伯恩斯坦;塞巴斯蒂安·克莱恩。W3C公司。2024年4月28日。W3C候选人推荐。网址:https://www.w3.org/TR/vc-di-ecdsa/
[VC-DI-EDDSA]
数据完整性EdDSA Cryptosuites v1.0马努·斯波尼;Dmitri Zagidulin;格雷格·伯恩斯坦;塞巴斯蒂安·克莱恩。W3C公司。2024年3月3日。W3C候选人推荐。网址:https://www.w3.org/TR/vc-di-eddsa网址/
[VC-IMP-GUIDE]
可验证凭据实施指南1.0安德烈·桑布拉。W3C公司。2019年9月24日。W3C工作组注释。网址:https://www.w3.org/TR/vc-imp-guide网站/
[VC-JOSE-COSE]
使用JOSE和COSE保护可验证凭据迈克尔·琼斯;迈克尔·普罗洛克(Michael Prorock);盖布·科恩。W3C公司。2024年5月21日。W3C候选人推荐。网址:https://www.w3.org/TR/vc-jose-cose/
[VC-JSON-SCHEMA]
可验证凭据JSON模式规范Gabe Cohen;迈克尔·普罗洛克(Michael Prorock);安德烈斯·乌里韦。W3C公司。2023年12月18日。W3C候选人推荐。网址:https://www.w3.org/TR/vc-json-schema网站/