-
Notifications
You must be signed in to change notification settings - Fork 117
Add confidence method to VCDM #1054
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 7 commits
c08f81a
5884ecc
d353ed8
fc0cd1f
87fb326
2b84c20
1d83150
59684a4
8450b27
825d128
61381c1
9e61926
1f6c3d3
f3f6c47
872d1bd
463b8da
2632d7d
e00e02f
7275ae8
23e5108
61893d4
5e880f1
0f12cca
413b14f
ee326d8
6107513
6fe6b4a
12ea07e
20fe60a
90a7455
fd065af
8821578
73c85e4
65948b1
b691737
0dfdc32
f4435ba
7e06b5c
9fb3918
372bbe8
659053b
55a2568
85bce72
7aa4ec9
c139a8e
6a7c4fd
a84f866
1119501
05b4034
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -1416,6 +1416,15 @@ <h3>Types</h3> | |
</td> | ||
</tr> | ||
|
||
<tr> | ||
<td> | ||
<a href="#confirmation-method">confirmationMethod</a> object | ||
awoie marked this conversation as resolved.
Show resolved
Hide resolved
|
||
</td> | ||
<td> | ||
A valid confirmation method <a>type</a>. For example,<br> | ||
awoie marked this conversation as resolved.
Show resolved
Hide resolved
|
||
<code>"type": "VerificationKeyConfirmation2023"</code> | ||
Sakurann marked this conversation as resolved.
Show resolved
Hide resolved
|
||
</td> | ||
</tr> | ||
</tbody> | ||
</table> | ||
|
||
|
@@ -2362,8 +2371,9 @@ <h3>Extensibility</h3> | |
<p> | ||
Implementers are advised to pay close attention to the extension points in this | ||
specification, such as in Sections <a href="#proofs-signatures"></a>, | ||
<a href="#status"></a>, <a href="#data-schemas"></a>,<a href="#refreshing"></a>, | ||
<a href="#terms-of-use"></a>, and <a href="#evidence"></a>. While this | ||
<a href="#status"></a>, <a href="#data-schemas"></a>, | ||
<a href="#refreshing"></a>, <a href="#terms-of-use"></a>, | ||
<a href="#evidence"></a> and <a href="#confirmation-method"></a>. While this | ||
awoie marked this conversation as resolved.
Show resolved
Hide resolved
|
||
specification does not define concrete implementations for those extension | ||
points, the Verifiable Credentials Extension Registry [[?VC-EXTENSION-REGISTRY]] | ||
provides an unofficial, curated list of extensions that developers can use from | ||
|
@@ -2905,6 +2915,152 @@ <h3>Evidence</h3> | |
|
||
</section> | ||
|
||
<section> | ||
<h3>Confirmation Method</h3> | ||
awoie marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
<p> | ||
Confirmation Method can be included by an <a>issuer</a> in a <a>verifiable | ||
awoie marked this conversation as resolved.
Show resolved
Hide resolved
|
||
credential</a> to declare that the <a>subject</a> controls one or more | ||
awoie marked this conversation as resolved.
Show resolved
Hide resolved
awoie marked this conversation as resolved.
Show resolved
Hide resolved
|
||
particular confirmation methods and to bind the <a>claims</a> about the | ||
<a>subject</a> to one or more of these confirmation methods. In this way, an | ||
<a>issuer</a> explicitly enables a <a>verifier</a> to validate that the | ||
<a>holder</a> presenting the <a>verifiable credential</a> has proven control of | ||
one or more of these confirmation methods when the <a>claims</a> bound to the | ||
confirmation method are presented. | ||
</p> | ||
|
||
<p class="note"> | ||
A <a>verifier</a> can decide to accept <a>claims</a> in a <a>verifiable | ||
credential</a> without validating the confirmation method or to use a different | ||
mechanism to validate the <a>holder</a> is bound to the presented <a>claims</a> | ||
if required without impacting liability if not specified by other means such | ||
as a <code>termsOfUse</code> policy. | ||
awoie marked this conversation as resolved.
Show resolved
Hide resolved
|
||
</p> | ||
|
||
<p> | ||
This specification defines the <code>confirmationMethod</code> <a>property</a> | ||
for expressing confirmation method information in a | ||
<code>credentialSubject</code> in a <a>verifiable credential</a>. | ||
awoie marked this conversation as resolved.
Show resolved
Hide resolved
|
||
</p> | ||
|
||
<p class="note"> | ||
For example, an <a>issuer</a> can include a confirmation method based on public | ||
key cryptography in the <a>verifiable credential</a>. A <a>holder</a> can | ||
generate and include a <a>proof</a> with a cryptographic signature in the | ||
<a>verifiable presentation</a> where the verification key of the cryptographic | ||
signature is bound to a confirmation method in the embedded <a>verifiable | ||
credential</a>. A <a>verifier</a> can validate that the <a>holder</a> controls | ||
the confirmation method by verifying the <a>proof</a> of the <a>verifiable | ||
presentation</a> using the information in the confirmation method. The | ||
confirmation method can include the verification key or the type of the | ||
confirmation method can define that the verification key is inferred by other | ||
<a>properties</a> in the <a>verifiable credential</a> such as the | ||
<code>credentialSubject.id</code>. | ||
</p> | ||
awoie marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
<dl> | ||
<dt><dfn>confirmationMethod</dfn></dt> | ||
awoie marked this conversation as resolved.
Show resolved
Hide resolved
|
||
<dd> | ||
If present, the value of the <code>confirmationMethod</code> <a>property</a> is | ||
decentralgabe marked this conversation as resolved.
Show resolved
Hide resolved
|
||
one or more confirmation methods each providing enough information for a | ||
<a>verifier</a> to validate a <a>holder</a> generating a <a>verifiable | ||
presentation</a> has proven control of a confirmation method bound to <a>claims | ||
</a> in a <a>verifiable credential</a> in the <a>verifiable presentation</a>. | ||
Each confirmation method MUST specify its <code>type</code> (for example, | ||
awoie marked this conversation as resolved.
Show resolved
Hide resolved
|
||
<code>DIDAuthWithSubjectIdConfirmation2023</code>) and MAY specify an | ||
<code>id</code>. The precise <a>properties</a> and semantics of each | ||
confirmation method is determined by the specific | ||
<code>confirmationMethod</code> type definition. | ||
awoie marked this conversation as resolved.
Show resolved
Hide resolved
|
||
</dd> | ||
</dl> | ||
|
||
<p> | ||
The type <code>DIDAuthWithSubjectIdConfirmation2023</code> defines that a | ||
awoie marked this conversation as resolved.
Show resolved
Hide resolved
awoie marked this conversation as resolved.
Show resolved
Hide resolved
|
||
<a>verifier</a> MAY validate the confirmation method by verifying the proof of | ||
awoie marked this conversation as resolved.
Show resolved
Hide resolved
|
||
the <a>verifiable presentation</a> with the verification material of one of the | ||
authentication verification relationships of the | ||
<code>credentialSubject.id</code> in case the particular | ||
<code>credentialSubject.id</code> is a Decentralized Identifier (DID). | ||
awoie marked this conversation as resolved.
Show resolved
Hide resolved
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. A DID isn't necessary if you're using Data Integrity, since that specification defines how authentication methods can be fetched using a protocol scheme: https://w3c.github.io/vc-data-integrity/#retrieve-verification-method ... that approach works for both |
||
</p> | ||
|
||
<pre class="example nohighlight" | ||
title="Usage of the confirmationMethod property of type DIDAuthWithSubjectIdConfirmation2023"> | ||
{ | ||
"@context": [ | ||
"https://www.w3.org/ns/credentials/v2", | ||
"https://www.w3.org/ns/credentials/examples/v2" | ||
], | ||
"id": "http://example.edu/credentials/3732", | ||
"type": ["VerifiableCredential", "UniversityDegreeCredential"], | ||
"issuer": "https://example.edu/issuers/14", | ||
"validFrom": "2010-01-01T19:23:24Z", | ||
"credentialSubject": { | ||
"id": "did:example:ebfeb1f712ebc6f1c276e12ec21", | ||
<span class="highlight">"confirmationMethod": { | ||
"type": "DIDAuthWithSubjectIdConfirmation2023" | ||
}</span>, | ||
"degree": { | ||
"type": "BachelorDegree", | ||
"name": "Bachelor of Science and Arts" | ||
} | ||
}, | ||
"proof": { <span class="comment">...</span> } | ||
} | ||
</pre> | ||
|
||
<p> | ||
The type <code>VerificationKeyConfirmation2023</code> defines that a | ||
<a>verifier</a> MAY validate the confirmation method by verifying the proof of | ||
awoie marked this conversation as resolved.
Show resolved
Hide resolved
|
||
the <a>verifiable presentation</a> with the verification material contained in | ||
<code>publicKeyJwk</code> or <code>publicKeyMultibase</code>. | ||
</p> | ||
|
||
<pre class="example nohighlight" | ||
title="Usage of the confirmationMethod property of type DIDAuthWithSubjectIdConfirmation2023"> | ||
awoie marked this conversation as resolved.
Show resolved
Hide resolved
|
||
{ | ||
"@context": [ | ||
"https://www.w3.org/ns/credentials/v2", | ||
"https://www.w3.org/ns/credentials/examples/v2" | ||
], | ||
"id": "http://example.edu/credentials/3732", | ||
"type": ["VerifiableCredential", "UniversityDegreeCredential"], | ||
"issuer": "https://example.edu/issuers/14", | ||
"validFrom": "2010-01-01T19:23:24Z", | ||
"credentialSubject": { | ||
<span class="highlight">"confirmationMethod": [{ | ||
"type": "VerificationKeyConfirmation2023", | ||
"publicKeyJwk": { | ||
"crv": "Ed25519", | ||
"x": "VCpo2LMLhn6iWku8MKvSLg2ZAoC-nlOyPVQaO3FxVeQ", | ||
"kty": "OKP", | ||
"kid": "_Qq0UL2Fq651Q0Fjd6TvnYE-faHiOpRlPVQcY_-tA4A" | ||
} | ||
},{ | ||
"type": "VerificationKeyConfirmation2023", | ||
"publicKeyMultibase": "zH3C2AVvLMv6gmMNam3uVAjZpfkcJCwDwnZn6z3wXmqPV" | ||
}]</span>, | ||
"degree": { | ||
"type": "BachelorDegree", | ||
"name": "Bachelor of Science and Arts" | ||
} | ||
}, | ||
"proof": { <span class="comment">...</span> } | ||
} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I like the examples, however I wonder if it is best to include a confirmation method example that does not include key proofs, e.g. a portrait picture or the id number of a passport document, as we have described it in our RWOT#11 paper on identifier bindings. This might help readers understand the concept and open their mind There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think this is further evidence that we're talking about something more broad than "confirmation methods", i.e., "assurance" of some kind. It seems that a "confirmation method" could be one such example of an assurance method -- if we even want to use "confirmation" language at all. But "confirmation method" seems to describe something very specific when used in other places in the ecosystem (e.g., confirmation of the possession of key material -- which, btw, it doesn't even actually confirm). There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. IMO, portrait picture generally makes sense. For example in the ICAO DTC use case, where a traveller registers their DTC before travelling. The DTC might include a confirmation method with a biometric template, e.g., picture. When crossing the border, the automated border control system could then check whether a traveller with that biometric template was registered and let them through. |
||
</pre> | ||
|
||
<p class="note"> | ||
A confirmation method can express various metadata such as the <a>issuer's</a> | ||
awoie marked this conversation as resolved.
Show resolved
Hide resolved
|
||
level of confidence that the <a>holder</a> is the entity referenced by a | ||
<a>subject</a> of the <a>verifiable credential</a>, specific form factors or | ||
mechanisms of authenticators, references to other <a>verifiable credentials</a> | ||
awoie marked this conversation as resolved.
Show resolved
Hide resolved
|
||
or versioned trust frameworks. For example, an <a>issuer</a> can make a | ||
<a>claim</a> about a confirmation method that is based on a cryptographic key | ||
pair but to produce a signature using that key the <a>holder</a> has to unlock | ||
awoie marked this conversation as resolved.
Show resolved
Hide resolved
|
||
a device using multi-factor authentication. | ||
</p> | ||
|
||
</section> | ||
|
||
<section> | ||
<h3>Zero-Knowledge Proofs</h3> | ||
|
||
|
Uh oh!
There was an error while loading. Please reload this page.