From 965fbbc1dd93770173e685c19f359e176ec230a9 Mon Sep 17 00:00:00 2001
From: Joe Andrieu What is a Verifiable Credential?
refers to the characteristic of a credential or presentation
as being able to be verified by a verifier,
as defined in this document. Verifiability of a credential does not imply
-that the truth of claims encoded therein can be evaluated; however,
-the issuer can include values in the evidence property to help the verifier
-apply their business logic to determine whether the claims have sufficient
-veracity for their needs.
+that truth of claims encoded therein. Rather, once the authenticity and currency of a Verifiable Credential or Verifiable Presentation are established, a verifier MUST validate included claims using their own business rules before relying on them. Such reliance SHOULD only occur after evaluating the issuer, the proof, the subject, and the claims, against verifier policy.
@@ -981,8 +981,19 @@
Once verified as authentic and current, the seller of the season ticket + then validates that the issuer of the verifiable credential is + recognized for the claim of alumni status—it is, as it is issued + by Example University—and that today's date lies within the + validity period defined by the values of the validFrom and validUntil + properties. Since the holder is expected to be the subject of the + verifiable credential , the verifier also confirms that + the id for the alumni claim matches the id of the creator of the + verifiable presentation. +
+Having verified the credential and the presentation, and validated the relevant claims, the ticket seller safely enables the alumni discount for Pat, confident that Pat is legitimately entitled to it.
{ "@context": [ @@ -2371,7 +2382,7 @@Data Schemas
credentialSchema
, which points to a [[?VC-JSON-SCHEMA-2023]] file that
can be used by a verifier to determine if the
-verifiable credential is well formed.
+verifiable credential is well-formed.
For information about linkages to JSON Schema [[?VC-JSON-SCHEMA-2023]] or other -optional verification mechanisms, see the Verifiable Credentials +optional schema validation mechanisms, see the Verifiable Credentials Implementation Guidelines [[VC-IMP-GUIDE]] document.
@@ -2506,7 +2517,7 @@credentialSchema
pointing to a means of transforming the input
data into a format which can then be used by a verifier to determine if
-the proof provided with the verifiable credential is valid.
+the proof provided with the verifiable credential is well-formed.
@@ -2541,6 +2552,7 @@ @@ -2611,13 +2631,15 @@
-This specification also does not define an authorization framework nor the -decisions that a verifier might make after verifying a -verifiable credential or verifiable presentation, -taking into account the holder, the issuers of the -verifiable credentials, the contents of the -verifiable credentials, and its own policies. -
+This specification also does not define an authorization framework nor +does it restrict the business decisions that a verifier might make +after verifying a verifiable credential or verifiable + presentation. However, it is required that verifiers MUST + apply their own business rules before treating any claims as valid, + taking into account the holder, the issuers of the + verifiable credentials, the claims of the + verifiable credentials, and its own policies. +In particular, Sections and @@ -4629,14 +4651,15 @@
-When processing verifiable credentials, verifiers are expected to -perform many of the checks listed in Appendix as -well as a variety of specific business process checks. Validity checks might -include checking: +When processing verifiable credentials, verifiers MUST +evaluate any relevant claims before relying upon them. This +evaluation may be done in any manner desired, as long as it satisfies +the requirements of the verifier doing the validation. +Many verifiers will perform the checks listed in Appendix as well as a variety of specific business process checks such as:
The process of performing these checks might result in information leakage that leads to a privacy violation of the holder. For example, a simple -operation such as checking a revocation list can notify the issuer that a -specific business is likely interacting with the holder. This could +operation such as checking an improperly configured revocation list can +notify the issuer that a specific business is likely interacting +with the holder. This could enable issuers to collude and correlate individuals without their knowledge.
@@ -5303,10 +5327,12 @@-While valid cryptographic signatures and successful validity checks +While valid cryptographic signatures and successful status checks signify the reliability of credentials, they do not signify that all credentials -are interchangeable for all contexts. Toward the pursuit of appropriate use, -it is crucial to consider the source and authenticity of the information. For +are interchangeable for all contexts. It is crucial for verifiers to +also validate any claims which might be relevant, considering the source and nature of the claim as well as privilege or service for which the credential is presented. +
+For instance, in scenarios where a certified medical diagnosis is required, a self-asserted credential carrying the necessary data might not suffice because it lacks validity from an authoritative medical source. To ensure the propriety of credential use, @@ -5639,7 +5665,8 @@
created
property establishes a date and time
-before which the credential should not be considered verified. The
+before which the credential should not be considered verified, separate from the validity period of the credential. This property describes the validity of the proof, not of the credential.verificationMethod
property specifies, for example, the
public key that can be used to verify the digital signature. Dereferencing a
public key URL reveals information about the controller of the key, which can
@@ -5658,7 +5685,7 @@ validFrom
and validUntil
properties are expected
to be within an expected range for the verifier. For example, a
verifier can check that the end of the validity period of a verifiable
-credential is not in the past.
+credential is not in the past. Because some credentials can be useful for secondary purposes even if their original validity period has expired, validity period, as expressed using the validFrom and validUntil properties, is always considered a component of validation, which is perforemed **after** verification.
+In addition to aforementioned privacy protections an issuer may take, +issuers should be aware of data they leak associated with identifiers they +make use of, and claim types they use when issuing credentials. One +such example would be an issuer issuing drivers licenses, revealing which +location(s) they have jurisdiction in which in turn leaks ensitive location information +about where subjects resides. Verifiers may take advantage of this +information by requesting a credential when in fact they are interested in +which issuer your credential is associated with, and information that issuer +may have leaked. To mitigate such occurences, issuers might choose to leverage +common identifiers to mask specific location information or other sensitive metadata, +e.g. a shared issuer at a state or country level, instead of at a county, city, or town +level. Additionally, holder attestation mechanisms can be trusted by verifiers +to preserve privacy, by providing proofs that an issuer exists in a set of trusted +entities, without needing to disclose the exact issuer. +
-In addition to aforementioned privacy protections an issuer may take, -issuers should be aware of data they leak associated with identifiers they -make use of, and claim types they use when issuing credentials. One -such example would be an issuer issuing drivers licenses, revealing which -location(s) they have jurisdiction in which in turn leaks ensitive location information -about where subjects resides. Verifiers may take advantage of this -information by requesting a credential when in fact they are interested in -which issuer your credential is associated with, and information that issuer -may have leaked. To mitigate such occurences, issuers might choose to leverage -common identifiers to mask specific location information or other sensitive metadata, -e.g. a shared issuer at a state or country level, instead of at a county, city, or town -level. Additionally, holder attestation mechanisms can be trusted by verifiers -to preserve privacy, by providing proofs that an issuer exists in a set of trusted -entities, without needing to disclose the exact issuer. +In addition to previously described privacy protections an issuer may take, +issuers should also be aware of data they leak associated with identifiers +and claim types they use when issuing credentials. One example of this would +be an issuer issuing drivers licenses which reveal both the location(s) in +which they have jurisdiction and the location of the subject's residence. +Verifiers may take advantage of this by requesting a credential +ostensibly to check that the subject is licensed to drive a limousine, when +in fact they are interested in metadata about the credential, such as which +issuer issued the credential, and tangential information that may have been +leaked by the issuer, such as the subject's home address. To mitigate such +leakage, issuers might choose to use common identifiers to mask specific +location information or other sensitive metadata, e.g., a shared issuer at a state +or nation level, instead of at the level of a county, city, town, or other smaller +municipality. Further, holder attestation mechanisms can be used by +verifiers to preserve privacy, by providing proofs that an issuer +exists in a set of trusted entities, without needing to disclose the exact +issuer.
From ea5906e0d4061c40a956837205d476bc438e2669 Mon Sep 17 00:00:00 2001 From: Gabe <7622243+decentralgabe@users.noreply.github.com> Date: Mon, 25 Sep 2023 16:02:57 -0500 Subject: [PATCH 08/58] Update index.html Co-authored-by: Ted Thibodeau Jr
-In addition to previously described privacy protections an issuer may take,
+In addition to previously described privacy protections an issuer may use,
issuers should also be aware of data they leak associated with identifiers
and claim types they use when issuing credentials. One example of this would
be an issuer issuing drivers licenses which reveal both the location(s) in
From 79791d083bbdfdcac511a6015b48e6c1da481c6d Mon Sep 17 00:00:00 2001
From: Gabe <7622243+decentralgabe@users.noreply.github.com>
Date: Tue, 26 Sep 2023 16:52:23 -0500
Subject: [PATCH 09/58] Apply suggestions from code review
Co-authored-by: Manu Sporny Issuer Cooperation Impacts on Privacy
inability to do so.
-In addition to previously described privacy protections an issuer may use,
-issuers should also be aware of data they leak associated with identifiers
+In addition to previously described privacy protections an issuer might use,
+issuers need to also be aware of data they leak associated with identifiers
and claim types they use when issuing credentials. One example of this would
be an issuer issuing drivers licenses which reveal both the location(s) in
which they have jurisdiction and the location of the subject's residence.
-Verifiers may take advantage of this by requesting a credential
-ostensibly to check that the subject is licensed to drive a limousine, when
+Verifiers might take advantage of this by requesting a credential
+to check that the subject is licensed to drive, when
in fact they are interested in metadata about the credential, such as which
-issuer issued the credential, and tangential information that may have been
+issuer issued the credential, and tangential information that might have been
leaked by the issuer, such as the subject's home address. To mitigate such
leakage, issuers might choose to use common identifiers to mask specific
-location information or other sensitive metadata, e.g., a shared issuer at a state
-or nation level, instead of at the level of a county, city, town, or other smaller
+location information or other sensitive metadata. For example,, a shared issuer
+identifier at a state or nation level, instead of at the level of a county, city, town, or other smaller
municipality. Further, holder attestation mechanisms can be used by
verifiers to preserve privacy, by providing proofs that an issuer
exists in a set of trusted entities, without needing to disclose the exact
From 0c87ee03dd4693a66b554b73ea56a9ddd80fcc52 Mon Sep 17 00:00:00 2001
From: Gabe <7622243+decentralgabe@users.noreply.github.com>
Date: Fri, 29 Sep 2023 15:31:13 -0500
Subject: [PATCH 10/58] Update index.html
Co-authored-by: Ted Thibodeau Jr Issuer Cooperation Impacts on Privacy
issuer issued the credential, and tangential information that might have been
leaked by the issuer, such as the subject's home address. To mitigate such
leakage, issuers might choose to use common identifiers to mask specific
-location information or other sensitive metadata. For example,, a shared issuer
+location information or other sensitive metadata; for example, a shared issuer
identifier at a state or nation level, instead of at the level of a county, city, town, or other smaller
municipality. Further, holder attestation mechanisms can be used by
verifiers to preserve privacy, by providing proofs that an issuer
From d3568d71cd1872c0785c47ecc832a7784908068b Mon Sep 17 00:00:00 2001
From: "Michael B. Jones" Concrete Lifecycle Example
verifiable credential in a digital wallet.
+{ // set the context, which establishes the special terms we will be using // such as 'issuer' and 'alumniOf'. @@ -951,22 +951,6 @@@@ -983,7 +967,7 @@Concrete Lifecycle Example
// name of the university "name": "Example University" } - }, - // digital proof that makes the credential tamper-evident - // see the NOTE at end of this section for more detail - "proof": { - // the type of embedded proof securing the verifiable credential - "type": "DataIntegrityProof", - // the name of the cryptographic signature suite - "cryptosuite": "eddsa-2022", - // the date the signature was created - "created": "2023-06-18T21:19:10Z", - // purpose of this proof - "proofPurpose": "assertionMethod", - // the identifier of the public key that can verify the signature - "verificationMethod": "https://university.example/issuers/565049#key-123", - // the digital signature value - "proofValue": "zQeVbY4oey5q2M3XKaxup3tmzN4DRFTLVqpLMweBrSxMY2xHX5XTYV8nQApmEcqaqA3Q1gVHMrXFkXJeV6doDwLWx" } } Concrete Lifecycle Example
verifiable presentation. The verifiable presentation is sent to the verifier and verified. -+{ "@context": [ "https://www.w3.org/ns/credentials/v2", @@ -1006,39 +990,17 @@Concrete Lifecycle Example
"id": "did:example:c276e12ec21ebfeb1f712ebc6f1", "name": "Example University" } - }, - "proof": { - "type": "DataIntegrityProof", - "cryptosuite": "eddsa-2022", - "created": "2023-06-18T21:19:10Z", - "proofPurpose": "assertionMethod", - "verificationMethod": "https://university.example/issuers/565049#key-1", - "proofValue": "zQeVbY4oey5q2M3XKaxup3tmzN4DRFTLVqpLMweBrSxMY2xHX5XTYV8nQA - pmEcqaqA3Q1gVHMrXFkXJeV6doDwLWx" } - }], - // digital signature by Pat on the presentation - // protects against replay attacks - "proof": { - "type": "DataIntegrityProof", - "cryptosuite": "eddsa-2022", - "created": "2018-09-14T21:19:10Z", - "proofPurpose": "authentication", - "verificationMethod": "did:example:ebfeb1f712ebc6f1c276e12ec21#keys-1", - // 'challenge' and 'domain' protect against replay attacks - "challenge": "1f44d55f-f161-4938-a659-f8026467f126", - "domain": "4jt78h47fh47", - "proofValue": "zqpLMweBrSxMY2xHX5XTYV8nQAJeV6doDwLWxQeVbY4oey5q2pmEcqaqA3Q1 - gVHMrXFkXM3XKaxup3tmzN4DRFTLV" - } + }] }-Implementers that are interested in understanding more about the -
From 5536809b1f2a4e223ef3300a2b4ef65add6177ac Mon Sep 17 00:00:00 2001 From: Orie Steeleproof
mechanism used above can learn more in Section and by reading the following specifications: -Data Integrity [[VC-DATA-INTEGRITY]] and the "Proofs" section of the Verifiable +The examples above are unsecured. +Implementers that are interested in understanding more about +securing Verifiable Credentials can see the specifications +Securing Verifiable Credentials using JOSE and COSE [[VC-JOSE-COSE]] and +Verifiable Credential Data Integrity [[VC-DATA-INTEGRITY]] and the "Proofs" section of the Verifiable Credential Specifications Directory [[VC-SPECS]].Date: Fri, 13 Oct 2023 17:47:38 -0500 Subject: [PATCH 12/58] Remove CL Signature example (#1305) --- common.js | 10 ----- index.html | 111 ++--------------------------------------------------- 2 files changed, 4 insertions(+), 117 deletions(-) diff --git a/common.js b/common.js index b90283a0a..b51ca0e52 100644 --- a/common.js +++ b/common.js @@ -55,16 +55,6 @@ var vcwg = { status: "CG-DRAFT", publisher: "Credentials Community Group" }, - "CL-SIGNATURES": { - title: "A Signature Scheme with Efficient Protocols", - href: "https://www.researchgate.net/publication/220922101_A_Signature_Scheme_with_Efficient_Protocols", - authors: [ - "Jan Camenisch", - "Anna Lysyanskaya" - ], - status: "Peer Reviewed Paper", - publisher: "IBM Research" - }, // aliases to known references "HTTP-SIGNATURES": { aliasOf: "http-signatures" diff --git a/index.html b/index.html index ff798e5b8..2208204c0 100644 --- a/index.html +++ b/index.html @@ -598,9 +598,6 @@ Use Cases and Requirements
- Securing Verifiable Credentials using Data Integrity Proofs [[VC-DATA-INTEGRITY]].
-- -Camenisch-Lysyanskaya Zero-Knowledge Proofs [[?CL-SIGNATURES]]. -
@@ -3508,68 +3505,11 @@
-The provided examples will either be significantly re-written to demonstrate how -to secure a verifiable credential using a normatively defined method that -enable zero knowledge proofs, or they will be removed. -
--The following example shows one method of using verifiable credentials in -zero-knowledge. It makes use of a Camenisch-Lysyanskaya Signature -[[?CL-SIGNATURES]], which allows the presentation of the verifiable -credential in a way that supports the privacy of the -holder and subject through the use of selective disclosure of the -verifiable credential values. Some other cryptographic systems which rely -upon zero-knowledge proofs to selectively disclose attributes can be found in the -Verifiable Credential Specifications Directory [[?VC-SPECS]] as well. -
- --{ - "@context": [ - "https://www.w3.org/ns/credentials/v2", - "https://www.w3.org/ns/credentials/examples/v2" - ], - "type": ["VerifiableCredential", "ExampleDegreeCredential"], - "credentialSchema": { - "id": "did:example:cdf:35LB7w9ueWbagPL94T9bMLtyXDj9pX5o", - "type": "did:example:schema:22KpkXgecryx9k7N6XN1QoN3gXwBkSU8SfyyYQG" - }, - "issuer": "did:example:Wz4eUg7SetGfaUVCn8U9d62oDYrUJLuUtcy619", - "credentialSubject": { - "givenName": "Jane", - "familyName": "Doe", - "degree": { - "type": "ExampleBachelorDegree", - "name": "Bachelor of Science and Arts", - "college": "College of Engineering" - } - }, - "proof": { - "type": "CLSignature2019", - "issuerData": "5NQ4TgzNfSQxoLzf2d5AV3JNiCdMaTgm...BXiX5UggB381QU7ZCgqWivUmy4D", - "attributes": "pPYmqDvwwWBDPNykXVrBtKdsJDeZUGFA...tTERiLqsZ5oxCoCSodPQaggkDJy", - "signature": "8eGWSiTiWtEA8WnBwX4T259STpxpRKuk...kpFnikqqSP3GMW7mVxC4chxFhVs", - "signatureCorrectnessProof": "SNQbW3u1QV5q89qhxA1xyVqFa6jCrKwv...dsRypyuGGK3RhhBUvH1tPEL8orH" - } -} --
-The example above provides the verifiable credential definition by using
-the credentialSchema
property and a specific proof that is
-usable in the Camenisch-Lysyanskaya Zero-Knowledge Proof system.
-
-The next example utilizes the verifiable credential above to generate a -new derived verifiable credential with a privacy-preserving proof. The -derived verifiable credential is then placed in a -verifiable presentation, so that the verifiable credential -discloses only the claims and additional credential metadata that the -holder intended. To do this, all of the following requirements are -expected to be met: +
+Examples of leveraging vc-di-bbs, +will be added here in the future, or this section will be removed.
- +-{ - "@context": [ - "https://www.w3.org/ns/credentials/v2", - "https://www.w3.org/ns/credentials/examples/v2" - ], - "type": "VerifiablePresentation", - "verifiableCredential": [ - { - "@context": [ - "https://www.w3.org/ns/credentials/v2", - "https://www.w3.org/ns/credentials/examples/v2" - ], - "type": ["VerifiableCredential", "ExampleDegreeCredential"], - "credentialSchema": { - "id": "did:example:cdf:35LB7w9ueWbagPL94T9bMLtyXDj9pX5o", - "type": "did:example:schema:22KpkXgecryx9k7N6XN1QoN3gXwBkSU8SfyyYQG" - }, - "issuer": "did:example:Wz4eUg7SetGfaUVCn8U9d62oDYrUJLuUtcy619", - "credentialSubject": { - "degreeType": "ExampleBachelorDegree", - "degreeSchool": "College of Engineering" - }, - "proof": { - "type": "AnonCredDerivedCredentialv1", - "primaryProof": "cg7wLNSi48K5qNyAVMwdYqVHSMv1Ur8i...Fg2ZvWF6zGvcSAsym2sgSk737", - "nonRevocationProof": "mu6fg24MfJPU1HvSXsf3ybzKARib4WxG...RSce53M6UwQCxYshCuS3d2h" - } - }], - "proof": { - "type": "AnonCredPresentationProofv1", - "proofValue": "DgYdYMUYHURJLD7xdnWRinqWCEY5u5fK...j915Lt3hMzLHoPiPQ9sSVfRrs1D" - } -} -