-
Notifications
You must be signed in to change notification settings - Fork 110
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 Verification Method types to v2 context #1260
Conversation
"@id": "https://w3id.org/security#controller", | ||
"@type": "@id" | ||
}, | ||
"revoked": { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I just noticed that Multikey
supports "expires" and "revoked" but "JsonWebKey" does not.
That seems like it will cause bias / interop issues... should we add these properties to "JsonWebKey" ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm fine with "JsonWebKey" adopting "expires" and "revoked". Or not -- depending on what people think makes the most sense for users of the two approaches.
That being said, I do not understand how you have been using the word "bias" in a number of places. I can only make sense of your use of it by thinking you mean that if two things are not exactly the same then one may favor one over the other for a variety of reasons. But I don't find that definition of "bias" to identify something that ought to be (or even practically can be) avoided. Nor is that definition what I think most people think of when they use the word. It's not what I mean when I say "bias". I think most people think of "bias" as "undue influence" or "lack of fairness".
A securing mechanism that doesn't change the format of the input has advantages. Does this mean that all securing mechanisms that do change the format don't have their own advantages and should be changed?
A spec that allows you to choose between two different key formats has the advantage of choice; another spec that recommends a particular one has the advantage of simplicity. These are not the same; should it be impossible to have both of these at the same time?
I choose these examples because I don't believe you've raised them as potentially causing "bias issues", but it feels like I'm applying the same principle you seem to apply here and elsewhere. I don't agree with that principle. I think the principle we should be applying is related to fairness, not difference.
While a difference is required in order for something to be unfair, clearly something just being different doesn't mean there is a lack of fairness or undue influence. Otherwise everything in every spec we produce would have to be exactly the same to eradicate this unfairness. Taken to its logical end, to remove that kind of "bias" we would have to eliminate all specs since defining anything creates a distinction between what matches the definition and what does not. So I presume this can't be what you mean by "bias" and the desire to eliminate it, but then I haven't been able to think of any consistent definition for what you may mean.
Perhaps you think there's something unfair about one key format being able to express X and another not being able to. But I don't understand that either. I think there are simply trade offs -- and it's those trade offs that should inform whether it makes sense (or not) to adopt certain features in any format. If you think "JsonWebKey" should do X, or Y, or Z, please just say so and see if others agree or disagree. Raising the specter of "bias" seems unnecessary and confusing.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm fine w/ JsonWebKey
supporting the expires
and revoked
properties. Suggest adding it to align the two verification method classes. I will do a similar PR in the Data Integrity spec.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
PR raised in w3c/vc-data-integrity#184
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is the use case for a VC expressing secret key material, or keys at all? Is this a use case that we expect to see broad adoption? The only one I can think of is confidenceMethod
, and that doesn't seem like it's going to achieve the implementation requirements by the time we hit PR in the WG.
Concrete change requests:
- What issue on the VCDM is this related to, please raise and discuss issues before raising PRs.
- Remove the expression of secret key material in VCs; there is no broadly supported use case for doing this.
- Add
revoked
toJsonWebKey
to bring the properties into alignment between both verification method classes.
"secretKeyJwk": { | ||
"@id": "https://w3id.org/security#secretKeyJwk", | ||
"@type": "@json" | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A VC shouldn't express private key material.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
^ this is not in the scope of the the "VerifiableCredential" RDF class.
... a VC can express RDF, if we want a VC's concept of "Multikey" or "JsonWebKey" to be the same, they need to have the same defintion.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The definitions need to be consistent between what's in the broken out contexts and this one to ensure their compatibility.
"secretKeyMultibase": { | ||
"@id": "https://w3id.org/security#secretKeyMultibase", | ||
"@type": "https://w3id.org/security#multibase" | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A VC shouldn't express private key material.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(Out of order replies)
This PR was follow up from this issue: w3c/vc-data-integrity#164 (comment) Its also related to the ongoing work and discussions in calls related to referencing controller documents.
I'm happy to do this, if its removed from the other contexts... but I don't think thats a good idea. The idea that "not defining something in a JSON-LD context" is some kind of securing "feature" is wrong, and needs to be challenged. It contradicts the idea that the core context is supposed to make life easy for developers. Because the v2 context already ships a default vocabulary, there will be 0 difference except for the terms and shape of the private key in RDF (security theater). There is a threat that some RDF processor might not be able to find
I filed #1262 I will ensure the RDF Class definitions are the same.
There are a lot of use cases related to private key material, some involve law enforcement or military use cases. Here are 2 examples:
I don't expect VC's signing private keys to be used often, but I don't see why if they are used, the RDF should not match up with public key systems... So that RDF aware processors can leverage graph queries and experience from the existing data model.
I would would not assume anything about the Domain and Range of that property, it's possible there will be some intermediate RDF type between them, or that I don't think we need to assume use cases to know that a consistent data model will be easier to query and comprehend by controllers (which includes data subjects who are controllers). |
The issue was discussed in a meeting on 2023-08-29
View the transcript1.7. Add Verification Method types to v2 context (pr vc-data-model#1260)See github pull request vc-data-model#1260. Manu Sporny: adds key types to base context. Don't know if we have general use cases for expressing keys in a verifiable credential. Don't know if it is a good idea until we have use cases warranting this. Kristina Yasuda: will bring this up in tomorrow's working group call.
Manu Sporny: add support for DIDs issue is providing a controller document, danger here is that definitions will deviate due to copies in DID core, DI and vc-jose-cose. Michael Jones: a reason we can't just cite did-core? Manu Sporny: we need to update the text without a mandate to update did-core. |
The issue was discussed in a meeting on 2023-08-30
View the transcript2. Add Verification Method types to v2 context (pr vc-data-model#1260)See github pull request vc-data-model#1260. Orie Steele: this PR was raised after a thread in DI repo about how many contexts are needed.
Orie Steele: [more details]. Manu Sporny: I think that's a fair introduction to the issue.
Manu Sporny: I don't think its a good idea to merge this PR at this time. We need a good use case.
Sebastian Crane: Orie, I know where you're coming from. I asked Manu something similar last week.
Sebastian Crane: at no point do you actually need a private key to move. Orie Steele: The confidenceMethod is reserved. Not clear if we settled domain & range. Brent Zundel: this is good, about ready to move on. Manu Sporny: two contentious part here. one confidenceMethod doesn't exist (because of no implementations).
Manu Sporny: Two, yes. We've been arguing for a long time. Orie, you said you would object if it isn't in there. So that was a compromise made.
Manu Sporny: if its not there, it can be an issuer-specific context. |
The issue was discussed in a meeting on 2023-09-05
View the transcript3.4. Add Verification Method types to v2 context (pr vc-data-model#1260)See github pull request vc-data-model#1260. Orie Steele: do you need multiple |
1 request for changes, no approvals, open for 3 weeks, no objections to close at TPAC VC WG day 1. |
The issue was discussed in a meeting on 2023-09-14
View the transcript1.2. Add Verification Method types to v2 context (pr vc-data-model#1260)See github pull request vc-data-model#1260. Brent Zundel: Next one is 1260. Manu Sporny: It's a general objection to the PR. We have a use case where expressing public and private keys in the context. It would change if we had something like confidence method to the base context. -1 until that's the case. Brent Zundel: Since no approvals, there is no consensus and one objection. We plan on closing. Ivan Herman: the secret is already in the vocabulary. Just noting that. Manu Sporny: We might want to look at that, it might be a mistake. Brent Zundel: We need an open issue to track a possible change to the vocab. We intend to close this PR due to lack of consensus. |
No description provided.