Skip to content
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

Add confidence method to VCDM #1054

Closed
wants to merge 49 commits into from
Closed
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
c08f81a
fix: first stab on #789
Feb 27, 2023
5884ecc
fix: fixed typo
Feb 27, 2023
d353ed8
fix: added confirmation method to types section
Feb 27, 2023
fc0cd1f
fix: fixes references in types section and adds reference to extensio…
Feb 27, 2023
87fb326
fix: removed array from confirmation method types
Feb 27, 2023
2b84c20
fix: removed array from confirmation method example if only one confi…
Feb 27, 2023
1d83150
fix: removed id in 2nd confirmation method example
Feb 27, 2023
59684a4
fix: accepting editorial suggestions
awoie Mar 7, 2023
8450b27
fix: accepting editorial suggestions
awoie Mar 7, 2023
825d128
fix: accepting editorial language improvements
awoie Mar 7, 2023
61381c1
fix: accepting editorial suggestions
awoie Mar 7, 2023
9e61926
fix: accepting editorial suggestions
awoie Mar 7, 2023
1f6c3d3
fix: accepting editorial suggestions
awoie Mar 7, 2023
f3f6c47
fix: accepting editorial suggestions
awoie Mar 7, 2023
872d1bd
fix: accepting editorial suggestions
awoie Mar 7, 2023
463b8da
fix: fixed type in confirmation method example
awoie Mar 7, 2023
2632d7d
fix: removed 2023 from confirmation method types
Mar 7, 2023
e00e02f
fix: addressed gabe's concern
Mar 7, 2023
7275ae8
fix: extended confirmation method verb
Mar 7, 2023
23e5108
fix: fixed language
Mar 7, 2023
61893d4
fix: fixed whitespace
Mar 7, 2023
5e880f1
fix: replaced may with can since notes should not contain normative v…
Mar 8, 2023
0f12cca
fix: accepting requested language improvements
awoie Mar 8, 2023
413b14f
fix: accepting editorial improvements
awoie Mar 8, 2023
ee326d8
fix: accepting requested language improvements
awoie Mar 13, 2023
6107513
fix: accepting requested language improvements
awoie Mar 13, 2023
6fe6b4a
fix: using satisfy instead of proving control
Mar 13, 2023
12ea07e
fix: accepting requested language improvements
awoie Apr 12, 2023
20fe60a
fix: accepting requested language improvements
awoie Apr 12, 2023
90a7455
fix: accepting requested language improvements
awoie Apr 12, 2023
fd065af
fix: renamed confirmation method to confidence method
awoie May 3, 2023
8821578
fix: renamed confirmation method to confidence method
awoie May 3, 2023
73c85e4
fix: renamed confirmation method to confidence method
awoie May 3, 2023
65948b1
fix: renamed confirmation method to confidence method
awoie May 4, 2023
b691737
fix: adjusted intro to confidence method and accepted suggestion on p…
awoie May 4, 2023
0dfdc32
fix: accepted editorial suggestions on confidence method
awoie May 4, 2023
f4435ba
fix: renamed confirmation method to confidence method
awoie May 4, 2023
7e06b5c
fix: accepted editorial suggestions on confidence method
awoie May 4, 2023
9fb3918
fix: renamed confirmation method to confidence method
awoie May 4, 2023
372bbe8
fix: renamed confirmation method to confidence method
awoie May 4, 2023
659053b
fix: renamed confirmation method to confidence method
awoie May 4, 2023
55a2568
fix: renamed confirmation method to confidence method
awoie May 4, 2023
85bce72
Renamed confirmation method to confidence method
awoie May 8, 2023
7aa4ec9
Renamed confirmation method to confidence method
awoie May 8, 2023
c139a8e
Renamed confirmation method to confidence method
awoie May 8, 2023
6a7c4fd
Improving definition confidence method definition
awoie May 8, 2023
a84f866
Fine tuning confidence method language on liability
awoie May 8, 2023
1119501
fix: removed normative language for demonstrated confidence method types
May 8, 2023
05b4034
fix: renamed confirmationMethod to confidenceMethod in example
May 9, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
157 changes: 155 additions & 2 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -1416,6 +1416,15 @@ <h3>Types</h3>
</td>
</tr>

<tr>
<td>
<a href="#confidence-method">confidenceMethod</a>&nbsp;object
</td>
<td>
A valid confidence method <a>type</a>. For example,<br>
<code>"type": "VerificationKeyConfirmation"</code>
</td>
</tr>
</tbody>
</table>

Expand Down Expand Up @@ -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
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
Expand Down Expand Up @@ -2905,6 +2915,149 @@ <h3>Evidence</h3>

</section>

<section>
<h3>Confidence Method</h3>

<p>
An <a>issuer</a> can include a Confidence Method in a <a>verifiable
credential</a> to inform verifiers of mechanisms they could use to increase
their confidence in the truth of a variety of things, including the
following:</p>
<ul>
<li>
a particular identifier in the <a>verifiable credential</a> refers to the
same <a>entity</a> the issuer intended it to refer to
</li>
<li>
an <a>entity</a>, such as the presenter of a <a>verifiable credential</a>,
is the same <a>entity</a> that the <a>issuer</a> made claims about
</li>
<li>
an <a>entity</a> controls, or has been designated to use, one or more
mechanisms for demonstrating proof-of-possession or proof-of-use of
cryptographic key material
</li>
<li>
an <a>entity</a> identified in the <a>verifiable credential</a> can be
checked against a biometric
</li>
</ul>
</p>

<p class="note">
A <a>verifier</a> can decide to accept <a>claims</a> in a <a>verifiable
credential</a> without requiring use of the confidence method, or use a
different mechanism to increase their confidence about whether, for
example, the <a>holder</a> is the same <a>entity</a> the issuer made
<a>claims</a> about in the <a>verifiable credential</a>. Such a decision
can impact the <a>verifier</a>'s liability or lack thereof if not
specified by other means such as a <code>termsOfUse</code> policy.
</p>

<p>
This specification defines the <code>confidenceMethod</code> <a>property</a>
for expressing confidence method information in a
<code>credentialSubject</code> in a <a>verifiable credential</a>.
</p>

<div class="note">
<p>
For example, an <a>issuer</a> can include a confidence method based on public
key cryptography in the <a>verifiable credential</a>. A <a>holder</a> can
demonstrate they are able to generate and include a <a>proof</a> with a
cryptographic signature in the <a>verifiable presentation</a> that will verify
against the verification key expressed in the confidence method in the
embedded <a>verifiable credential</a>.
</p>
<p>
A <a>verifier</a> can validate that the <a>holder</a> controls,
or has been designated the ability to use, a confidence method
by verifying the <a>proof</a> of the <a>verifiable
presentation</a> using the information in the confidence method. The
confidence method can include the verification key, or the type of the
confidence method can define that the verification key is to be inferred from
other <a>properties</a> in the <a>verifiable credential</a>, such as the
<code>credentialSubject.id</code>.
</p>
</div>

<dl>
<dt><dfn>confidenceMethod</dfn></dt>
<dd>
<dd>
<p>
If present, the value of the <code>confidenceMethod</code> <a>property</a> is
one or more confidence methods. Each confidence method is bound to one or more
claims in the <a>verifiable credential</a>, and provides enough information for a
<a>verifier</a> to determine whether the <a>holder</a> can generate a
<a>verifiable presentation</a> to increase the <a>verifier's</a> confidence
that they are the same <a>entity</a> referenced by the confidence method.
This is referred to as satisfying the confidence method. It is required that
the <a>issuer</a> verifies the <a>holder</a> can satisfy each
<code>confidenceMethod</code> the <a>issuer</a> includes in the
<a>claims</a> of the <a>verifiable credential</a>s they issue.
</p>
<p>
Each confidence method MUST specify its <code>type</code> and MAY specify an
<code>id</code>. The precise <a>properties</a> and semantics of each
confidence method are determined by the specific
<code>confidenceMethod</code> type definition.
</p>
</dd>
</dl>

<p>
The following example demonstrates a confidence method based on proving
possession of a cryptographic key. The corresponding public key is a
type-specific property of the confidence method.
</p>

<pre class="example nohighlight"
title="Usage of the confirmationMethod property of type VerificationKeyConfirmation">
{
"@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">"confidenceMethod": [{
"type": "VerificationKeyConfirmation",
"publicKeyJwk": {
"crv": "Ed25519",
"x": "VCpo2LMLhn6iWku8MKvSLg2ZAoC-nlOyPVQaO3FxVeQ",
"kty": "OKP",
"kid": "_Qq0UL2Fq651Q0Fjd6TvnYE-faHiOpRlPVQcY_-tA4A"
}
},{
"type": "VerificationKeyConfirmation",
"publicKeyMultibase": "zH3C2AVvLMv6gmMNam3uVAjZpfkcJCwDwnZn6z3wXmqPV"
}]</span>,
"degree": {
"type": "BachelorDegree",
"name": "Bachelor of Science and Arts"
}
},
"proof": { <span class="comment">...</span> }
}

Choose a reason for hiding this comment

The 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

Copy link
Contributor

@dlongley dlongley Mar 24, 2023

Choose a reason for hiding this comment

The 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).

Copy link
Contributor Author

Choose a reason for hiding this comment

The 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 confidence method can express various metadata such as the <a>issuer</a>'s
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, and/or references to other <a>verifiable credentials</a>
or versioned trust frameworks. For example, an <a>issuer</a> can make a
<a>claim</a> about a confidence method that is based on a cryptographic key
pair, but to produce a signature using that key, the <a>holder</a> has to unlock
a device using multi-factor authentication.
</p>

</section>

<section>
<h3>Zero-Knowledge Proofs</h3>

Expand Down