Skip to content

Delegation and attenuation #229

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

Closed
wants to merge 11 commits into from
Closed

Delegation and attenuation #229

wants to merge 11 commits into from

Conversation

cwebber
Copy link
Contributor

@cwebber cwebber commented Sep 10, 2018

Closes issue #72.


Preview | Diff

... but they may convey information so that a verifier may consider
granting additional authority to a subject.
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.

One minor nit, other than that, LGTM.

index.html Outdated
with if it is to accept the verifiable credential or verifiable
presentation.
If the verifier is not willing to accept or does not understand
these terms of use or then it SHOULD reject the verifiable
Copy link
Member

Choose a reason for hiding this comment

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

"or then" => ", then"?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Good catch... in fact I don't think it needs the comma either. I pushed a commit removing the "or".

Copy link
Contributor

@dlongley dlongley left a comment

Choose a reason for hiding this comment

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

LGTM other than some nits.

index.html Outdated
Terms of use describe policy describing how a
<a>verifiable credential</a> should be used or distributed.
For example, terms of use can be added to declare that a credential
should not be stored to a database or shared by a holder to another
Copy link
Contributor

Choose a reason for hiding this comment

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

stored to a database => stored in a database
holder to another => holder with another

Copy link
Contributor

Choose a reason for hiding this comment

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

I disagree with this change as it has deleted important information. For example, it says nothing about adding terms of use to a verifiable presentation, which the original text did.
This is a regressive edit as it removes clarity.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@dlongley okay I'll make those changes in a few

@David-Chadwick Good point, I'll add information about terms of use for a 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.

Okay. I pushed information about the verifiable presentation and also fixed the grammar nits. Hope that solves it!

<a>verifiable credential</a> or <a>presentation</a>
should be used or distributed.
For example, terms of use can be added to declare that a credential
or profile should not be stored in a database or shared by a holder
Copy link
Contributor

Choose a reason for hiding this comment

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

I thought we were going to remove all reference to "profile" in favor of "presentation"

</p>

<p>
A profile which wraps credentials must be interpreted of having
Copy link
Contributor

Choose a reason for hiding this comment

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

Same comment as above ("presentation" vs. "profile").

I am concerned about the casualness of the term "wrap" here. A presentation doesn't always contain or embed its source credential; it may instead derive from the credential. This means the terms of use are not naturally conveyed; this is the essence of Issue #224. I don't think we can simply assume that terms of use of a presentation are identical to terms of use of a credential.

Copy link
Member

@TallTed TallTed Sep 25, 2018

Choose a reason for hiding this comment

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

Possibly the "terms of use" as they are now being referred to should be a distinct payload (and I think, in fact, they are a secondary VC) -- so they may be transmitted and evaluated distinctly from the VC under immediate consideration.

I think also that atomicity of VCs is becoming important. Anything that may be presented as its own VC should be such at all times -- or it's a derived VC, which opens up questions about chains of verification, not too different from evaluating chains of TLS certificates. "A said 'B said ... "Q said R about S."'" The Receiver must potentially be able to track back and Verify each link in this chain.

Copy link
Member

Choose a reason for hiding this comment

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

A few further thoughts about this...

A said B about C. 
C is "A said D about E"

C is some description of E -- let's call it a medical test result, so it has HIPAA protections (in the USA).

B is a description of those HIPAA (or similar) protections -- who is authorized to act on C and in what ways (Read, Write, Share, etc.). In other words, B is a "terms of use" for C

B should somehow be evaluated before C... and if we're not careful, we're back into protocol discussions! ... but evaluating C is the only way to discover B... So perhaps anything involving terms-of-use should be a credential-of-credentials.

A said B and C.           # credential-of-credentials
B is "A said D about C"   # terms-of-use
C is "A said E about F"   # test-results

Thoughts?

But if Carol were found to not be in compliance there may still be
consequences.
For example, if Alice presented evidence to the medical board that
Carol violated these terms, Carol's medical license might be
Copy link
Member

Choose a reason for hiding this comment

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

I don't think this is technically true... the bar for medical malpractice is higher than that, I think. @agropper might know more.

But if Carol were found to not be in compliance there may still be
consequences.
For example, if Alice presented evidence to the medical board that
Carol violated these terms, Carol's medical license might be
Copy link
Member

Choose a reason for hiding this comment

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

I don't think this is technically true... the bar for medical malpractice is higher than that, I think. @Gropper might know more.

@agropper
Copy link

agropper commented Sep 12, 2018 via email

Credentials are not themselves an authority mechanism, but are
intended to convey information that can be useful in evaluating
whether to grant additional authority.
</p>
Copy link
Contributor

Choose a reason for hiding this comment

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

I disagree with this change. VCs are not "who said what about whom" as this is no more than tittle-tattle or heresay. VCs are credentials, as their name implies. They are attributes about subjects issued by trusted (in the eyes of the verifier) issuers.
VCs are in fact an authority mechanism. A driving license is an authorisation to drive. A passport is an authority to leave your country of citizenship.
This change should be rejected as it gives an entirely wrong discourse about VCs, and in fact negates much of the earlier text about VCs

Copy link
Member

Choose a reason for hiding this comment

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

VCs are absolutely "who said what about whom". (Well... they're not about the question "who said what about whom?", but about confirmation/verification that "A said B about C".) In other words, VCs must convey sufficient information to permit a Receiver to Verify the Subject (C) and Issuer (A), and to understand the Statement (B). Possibly the Receiver needs to be able to Verify that the Presenter is Permitted/Authorized to Present a VC of which they are not the Subject.

VCs let a border agent verify that a Passport -- a Credential which says CitizenOfNation (B) about Person (C) -- was Issued by the State Department (A) and is being Presented by that Person (C) -- via biometrics (height, weight, photo), embedded RFID, etc. Whether that Person is granted any authority (e.g., permission to cross the border) by virtue of this Statement is not part of the VCs remit.

VCs let a police officer verify that a driver's license -- a Credential which says LicensedToOperateSimplePassengerVehicle (B) about Driver (C) -- was issued by the relevant Issuing Authority (A) and is being presented by that Driver (C) -- via biometrics (height, weight, photo), embedded RFID, etc. Whether that Person is granted any authority (e.g., permission to drive this vehicle) by virtue of this Statement is not part of the VCs remit.

Current highly fallible verification is done using the characteristics of the presented document -- watermarks, holograms, overprinting, sample documents, etc. VCs are supposed to be less fallible because of the ability to do something (as yet indeterminate, because that's the protocol) with the observable/dissectable characteristics (which may include partially encrypted and indecipherable content/payload) of the VC.

"Tittle-tattle or hearsay," as you call it, would be unVerifiable Credentials -- where I show the border agent a document which says something like "the UN said TallTed is a citizen of Earth, and may travel freely across all national borders" -- or perhaps I simply say this. There is clearly no way to verify these credentials, because they convey nothing which might be used for such verification -- nor do they unambiguously identify me (Subject, and in this case, Holder).

For example, a Verifiable Credential can be used so that Alice (a
<a>verifier</a>) can verify that Bob (an <a>issuer</a>) said that
Carol (a <a>subject</a>) was an experienced programmer.
Based on this information, Alice might hire Carol and from there
Copy link
Contributor

Choose a reason for hiding this comment

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

This is a facile example and downgrades the use of VCs from important use cases to less important ones. Whilst the example is true, nevertheless it should not be used as a guiding example of what a VC is. A more valuable example such as driving licence, address, passport of other credential should be used

Copy link
Member

Choose a reason for hiding this comment

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

Facile examples help with comprehension, which these documents are substantially about. "More valuable" examples that are harder to explain and comprehend, with lots of extraneous detail (which may or may not be important in other scenarios) are part of the picture, but should not be the whole picture.

Copy link
Contributor

Choose a reason for hiding this comment

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

The Use Case document includes a small set of "Focal Use Cases" that attempt to show more complex applications of VC. The DM example should be fairly simple, easy to understand, and not require insight to a particular industry or jurisdiction.


<p>
The expression of terms of use may be performed via the following
<a>property</a>:
</p>

Copy link
Contributor

Choose a reason for hiding this comment

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

I do not think any of the above belongs in the data model document.
This is because the data model document should specify the following
a) its assumptions, limitations, constraints
b) its trust model
c) the data fields and their semantics (assuming a) and b) are satisfied)

There is no reason to specify in the document what might happen when any of the assumptions/constraints etc are violated by any of the actors. This is out of scope, since there are literally an infinite number of violations and possibilities that could take place once an implementation or usage scenario steps outside the constrained circle that is specified by the data model. All bets are off once the constraints are broken. Thus there is no reason or purpose in specifying any of these potential violations, including the above.

Copy link
Member

Choose a reason for hiding this comment

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

I think this comment is going in the right direction, as was today's mention of the Data Model of X.509 Certificates -- which are, I think, a coherent and functioning example of a Verifiable Credential. Various uses of these Certificates (signing email, TLS-secured connections, etc.) are defined in various Protocols -- none of which are or were explicit parts of that Data Model, and all of which make use of that Data Model.

@agropper
Copy link

agropper commented Sep 13, 2018 via email

@TallTed
Copy link
Member

TallTed commented Sep 25, 2018

I added several comments in thread-lines above... Just flagging so they're not overlooked because of github page presentation.

@msporny
Copy link
Member

msporny commented Oct 16, 2018

I don't know where we are with this PR. It sounds like most everyone is fine w/ the PR except for @David-Chadwick? I don't know if @TallTed is agreeing or disagreeing with @David-Chadwick in certain instances? Help.

@TallTed
Copy link
Member

TallTed commented Oct 16, 2018

@msporny -

I don't know where we are with this PR. It sounds like most everyone is fine w/ the PR except for @David-Chadwick? I don't know if @TallTed is agreeing or disagreeing with @David-Chadwick in certain instances? Help.

I believe I was disagreeing with @David-Chadwick in every case here (and generally agreeing with the PR, as far as it goes). But if it appears otherwise somewhere, please flag the particular, so I can check it?

I did have some disagreement with this (or perhaps a basis to start another) PR (I think), in my response to @dhh1128 here.

@msporny
Copy link
Member

msporny commented Nov 1, 2018

@cwebber @David-Chadwick @TallTed -- I'm closing this PR in 48 hours for the following reasons:

  • The issue it was intended to resolve (How do we support delegation and attenuation of rights? #72) has been resolved via other, simpler PRs.
  • There doesn't seem to be agreement on large parts of the suggested text.
  • There is not a clear path forward that I can see other than: try another PR that tries to do less.

If there are no objections to closing in 48 hours, I'll close it out.

@David-Chadwick
Copy link
Contributor

Ok by me to delete this one

@msporny
Copy link
Member

msporny commented Nov 20, 2018

DO NOT MERGE - see if it is subsumed by another PR.

@msporny
Copy link
Member

msporny commented Dec 22, 2018

This PR has been subsumed by PR #291 and many others that have noted that the spec is not an authorization mechanism in and of itself. Closing.

@msporny msporny closed this Dec 22, 2018
@msporny msporny deleted the delegation-attenuation branch April 5, 2019 01:55
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.

9 participants