Skip to content

Distinguish credentials from presentations #220

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

Merged
merged 7 commits into from
Aug 21, 2018

Conversation

dhh1128
Copy link
Contributor

@dhh1128 dhh1128 commented Aug 16, 2018

Signed-off-by: Daniel Hardman daniel.hardman@gmail.com

This embodies item #4 from https://docs.google.com/document/d/10e6lcsX0kiXkWX4_79hD1fb4p_AbFGsRm90eJJKFayI/edit -- chiefly, defining presentation and clarifying its relationship to a credential.


Preview | Diff

Signed-off-by: Daniel Hardman <daniel.hardman@gmail.com>
Copy link
Member

@msporny msporny left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some nits, but mostly good stuff. Expect this to be pulled in once fixes/changes suggested are made or corrected.

index.html Outdated
@@ -238,8 +238,8 @@ <h3>Ecosystem Overview</h3>
<dt><a>holder</a></dt>
<dd>
A role an <a>entity</a> may perform by possessing one or more
<a>verifiable credentials</a>. Examples of holders include students,
employees, and customers.
<a>verifiable credentials</a> and generationg <a>presentations</a> from them
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing punctuation: "."

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Make sure to update these definitions in the terms.html document as well. https://github.com/w3c/vc-data-model/blob/gh-pages/terms.html

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I believe I did this.

index.html Outdated
<a>Verifiable credentials</a> are independently issued, stored,
and verified.
Issuers independently issue <a>verifiable credentials</a>, and holders store them.
Holders independently offer <a>verifiable presentations</a>, and verifiers
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

High density use of "independently"... don't know if there is alternate language that is less awkward. Fine to keep it as is...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will try to reword on Monday.

index.html Outdated
@@ -458,6 +466,12 @@ <h3>Claims</h3>
</figcaption>
</figure>

<p>
If a presentation supports predicates, a claim about birthdate (not true or false, but tied to
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"predicate" needs to be defined and linked to. It's not clear what "a claim about birthdate" means. Needs an example.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will refine on Monday.

index.html Outdated
@@ -531,8 +545,15 @@ <h2>Presentations</h2>
</p>

<p>
A <a>verifiable presentation</a> is a collection of one or more
<a>verifiable credentials</a> that are often about the same <a>subject</a> that
A <a>verifiable presentation</a> is data from one or more <a>verifiable
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"is" is problematic... what about "contains" or "expresses"?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Absolutely. Will improve on Monday.

index.html Outdated
A <a>verifiable presentation</a> is data from one or more <a>verifiable
credentials</a>, packaged in such a way that the authorship of the data
is verifiable. If credentials are directly presented, they become a
presentation. Profiles are presentations. Data formats derived from
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We've removed the concept of "profile" from the spec... any remaining discussion of "profile" is a bug and needs to be removed.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

will adjust

@@ -552,7 +573,7 @@ <h2>Presentations</h2>

<p class="note">
It is possible to have a <a>presentation</a>, such as a business persona,
that contains multiple <a>credentials</a> about different <a>subjects</a>
that draws upon multiple <a>credentials</a> about different <a>subjects</a>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"draws upon" is good... trying to find language that makes it possible to either directly include, or include derived information...

index.html Outdated
@@ -584,7 +605,7 @@ <h1>Trust Model</h1>
to be a correct record of which identifiers belong to which <a>entities</a>.
</li>
<li>
The <a>subject</a> trusts the <a>issuer</a> to issue true (i.e. not false)
The <a>subject</a> trusts the <a>issuer</a> to issue true
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"true" is problematic here. I think this is language that @David-Chadwick inserted at some point. We should probably say something along the lines of "to assert certain types of information about the subject"...

Copy link
Contributor Author

@dhh1128 dhh1128 Aug 20, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We're in the section about how trust works. We don't trust a credential because the issuer "asserts certain types of information about the subject" -- we trust the credential because, after verifying authorship, we think it's likely that the issuer's assertions are actually true. The verification of a credential does not, of course, test the truth value of assertions--only the authorship of them--but as a description of how trust works, merely stating that we trust a party to make assertions is not going far enough, I think.

index.html Outdated
@@ -605,7 +626,7 @@ <h1>Trust Model</h1>
repository</a>, and
</li>
<li>
the <a>issuer</a> does not need to trust the <a>verifier</a>.
the <a>issuer</a> does not need to trust (or even know) the <a>verifier</a>.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Try to avoid the parenthetical... maybe "does not need to trust or know"...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will revise on Monday.

terms.html Outdated
Data derived from one or more credentials, fitted to the needs of sharing
with a particular verifier, and encoded in such a way that the verifier may
trust authorship of the data after a process of cryptographic verification. A
credential itself may be presented, in which case the credential becomes a
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The following three sentences are problematic. Can we strike them entirely? Over-specifying things will make it more difficult for us to support broader use cases in the future.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you give me the first few words and the last few words of the sentences you're talking about? I'm not sure what "the following 3 sentences" means because of the way github is showing me the map between comment and lines...

Signed-off-by: Daniel Hardman <daniel.hardman@gmail.com>
index.html Outdated
</p>

<pre class="example nohighlight" title="Basic structure of a presentation">
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm guessing that the deletion of the majority of the content in this section was an error?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, it was not a mistake. I was proposing that we omit any example of a presentation, because the example shown is SO different from the one that ZKPs have to use. I could submit a PR with a second example of a presentation (this one ZKP-style), but with little in common between the two examples, it's not clear to me what value there would be in pairing them.

Perhaps this needs to be the subject of a different PR.

index.html Outdated
the <a>presentation</a> before it is converted into a
<a>verifiable presentation</a>.</p>
their terms of use inside the <a>credential</a> before it is converted into a
<a>verifiable credential</a>. The <a>holder</a> places issuer terms
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not how the data model is designed. The presentation is something created by the holder. The holder can put credentials (which may or may not contain issuer termsOfUse) into the presentation in the verifiableCredential property. The holder may also place holder termsOfUse into the presentation.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay. I will look for a way to revise. Where do subject termsOfUse go?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For now, I am removing the idea of a holder adding issuer terms of use to a presentation. However, I have logged #224 to track a conceptual mismatch that needs to be resolved.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dhh1128 I think you have misunderstood the current model. The holder is not adding issuer terms of use to a presentation, but rather his/her own terms of use to the presentation. The issuer terms of use are visible in the credential.
Now I do understand your problem with anonymous credentials, in that the VC is opaque. But I would argue that the way to resolve this is not to alter the structure of the VP, but rather, when the holder asserts what the opaque VC contains, that the issuer terms of use are also asserted as well. I suspect this is a protocol issue rather than a data model issue. I realise that a holder may wish to hide certain issuer terms of use, but again, this is a problem that anonymous credentials has to resolve (in its protocol), rather than in the VC data model.

index.html Outdated
@@ -1282,6 +1241,7 @@ <h2>Terms of Use</h2>
The group is currently exploring a variety of ways of expressing the terms of
use associated with a Verifiable Credential, namely, the
<a href="http://w3c.github.io/poe/model/">Open Digital Rights Language</a>.
A related initiative is the one at customercommons.org.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Change customercommons.org to <a href="https:// customercommons.org">Customer Commons</a>

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

will revise

index.html Outdated
}
</pre>

<p class="issue" data-number=133>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can't remove issues from the spec that are not resolved.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this was a mistake on my part. Will revise.

index.html Outdated
</p>

<p>
The contents of the <code>verifiableCredential</code> property are
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can't remove spec text that has previously achieved consensus unless we go back to the group and request that the text be removed... and I doubt that will happen for this paragraph.

A <a>verifiable credential</a> is expressed in one or more standard,
machine-readable data formats which can also be extended with minimal
coordination.
<a>Holders</a> in <a>presentations</a> can either disclose the attributes or satisfy <a>predicates</a>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

predicates are linked to here, but not defined. If we are going to introduce that new term, we'll have to define it in terms.html

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thinking about it a bit more, do we need to introduce the "predicate" term? It's just another attribute isn't it? Can't we just provide an example of an attribute that is a predicate w/o increasing the cognitive burden of the reader to have to learn a new term?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The way I've been using it, a "predicate" (I've now renamed to "derived predicate" in latest incarnation of PR) is NOT an attribute in a credential. It is an attribute in a presentation that is derived from an attribute in a credential.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hmm, ok... we can model that, but haven't yet. I don't expect it'll be that difficult to do... there are a couple of options there... but will need a new PR for a new example using derived predicates.

index.html Outdated
<p>
If a presentation supports predicates, a claim about birthdate (not true or false, but tied to
a specific date value) can become the basis of proof that at an arbitrary point in time, the
age of a subject did or will lie within an arbitrary interval.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I misread "lie" to mean "will not tell the truth" because my mind was in "verifiable credentials land" where some things have a true/false nature. Can we change the language to "the age of the subject has or will be within the specified interval." ... don't even know if that does it. It's hard to understand what's being said here.

Maybe: "Predicates may be used in presentations to increase privacy by specifying things in a more coarse grained manner, such as the subject being over the age of 65 without exposing their exact birthday."

That feels like it's easier to read... but again, I question the need to introduce the term "predicate" to the document's vocabulary.

index.html Outdated
<a>verifiable credentials</a> and one or more proofs that are appropriate
for the presentation. The basic structure of a <a>verifiable presentation</a>
is provided below:
Credentials MAY be used to make a <a>verifiable presentation</a>. The presentation
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The specification makes a distinction between presentations (which are not verifiable) and verifiable presentations (which are verifiable). The modified language goes back and forth between these definitions, which muddies the waters. What about this:

Credentials MAY be used to create presentations, which are composed of information from one or more credentials. A verifiable presentation is a presentation that is composed of information from one or more verifiable credentials and is thus cryptographically verifiable. The information in a verifiable presentation may be directly or indirectly derived from one or more verifiable credentials. The basic structure of a verifiable presentation is provided below:

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I see how I muddied the distinction. I will revise, using your language as a guide.

terms.html Outdated
@@ -15,20 +15,21 @@
A set of one or more <a>claims</a> made by the issuer.
A <dfn data-lt="verifiable credentials">verifiable credential</dfn>
is a credential that is tamper-resistant and whose authorship can be
cryptographically verified.
cryptographically verified. Credentials can be used to build
<a>presentations</a>, which can also be cryptographically verified.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to be careful with the language here. A credential and a presentation are not cryptographically verifiable. A verifiable credential and a verifiable presentation are cryptographically verifiable.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will adjust.

terms.html Outdated
<dd>
The process that cryptographically demonstrates the authenticity of a
<a>credential</a>.
<a>credential</a> or a <a>presentation</a>.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The original text is wrong... we should say "verifiable credential" and "verifiable presentation"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

will adjust

Signed-off-by: Daniel Hardman <daniel.hardman@gmail.com>
Copy link
Member

@msporny msporny left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only change now is to remove the ZKP-style example so we can work on it in a separate PR w/o blocking this one. Other than that, this PR is ready to go.

index.html Outdated
predicate</a>, plus a "not expired" <a>derived predicate</a>. Notice that
claims are clustered by subject, with some claims about "this" (the credential
itself), and others about a subject named "person."
</p>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, I wasn't clear on the TGB call. Can we do this in a separate PR? This PR is almost ready to go and adding extra discussion around the formatting of the ZKP style credential will slow this PR down. Let's discuss this addition to the spec (specifically the data format) in another issue/PR so we can get the current one into the spec. There is agreement to have two examples, so I'm fine if you allude to the 2nd example in this PR (or keep the text, but leave the example blank for the time being until we lock the data model for ZKPs as VCs down).

</dd>
<dt><dfn data-lt="presentation">verifiable presentation</dfn></dt>
<dd>
Data derived from one or more verifiable credentials, fitted to the needs of sharing
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not exactly accurate, but I can clean this up later. We need to start out by defining what a presentation is, then layer the 'verifiable' part on top by defining that in a second/third sentence.

We can merge the PR w/o the fix.

A <a>verifiable credential</a> is expressed in one or more standard,
machine-readable data formats which can also be extended with minimal
coordination.
<a>Holders</a> in <a>presentations</a> can either disclose the attributes or satisfy <a>predicates</a>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hmm, ok... we can model that, but haven't yet. I don't expect it'll be that difficult to do... there are a couple of options there... but will need a new PR for a new example using derived predicates.

Signed-off-by: Daniel Hardman <daniel.hardman@gmail.com>
Signed-off-by: Daniel Hardman <daniel.hardman@gmail.com>
Signed-off-by: Daniel Hardman <daniel.hardman@gmail.com>
@dhh1128
Copy link
Contributor Author

dhh1128 commented Aug 21, 2018

@msporny I have removed the example of a ZKP-style presentation.

index.html Outdated
</span>
}
</pre>
We are currently working on an example of a ZKP-style verifiable presentation that contains
Copy link
Member

@msporny msporny Aug 21, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm pulling in this PR, but for future reference. You can do this:

<p class="issue">Text explaining a work in progress item that will be highlighted appropriately in the spec</p>

... and the text will get special treatment via ReSpec instead of seeming like it's spec text.

@msporny msporny merged commit f67b253 into w3c:gh-pages Aug 21, 2018
@msporny
Copy link
Member

msporny commented Aug 21, 2018

Good PR, aligned w/ VCWG consensus as of the call today. Merged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants