-
Notifications
You must be signed in to change notification settings - Fork 111
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
Re-evaluate support for @vocab
in base VCDM v2 context
#1514
Comments
It could be that given the security security issues with complex contexts, the base context should be reduced to only the terms and key words necessary for the "claims data model", and not include the "securing specific" data model claims, such as:
And lastly: I put IIRC, the VCWG originally added it because there was significant interest in "not requiring JSON-LD + RDF processing", in order to issue or verify credentials... but when you don't otherwise mandate valid JSON-LD + RDF, such as through a normative statement like:
There is a chance that the verifier might process the claims differently than the issuer intended, and more specifically, implementers of did resolvers and credential graphs (network diagrams), observed that without a default This RFC from the IAB is a much better take on this topic: https://datatracker.ietf.org/doc/rfc9413/
The problem If the claimset is JSON-LD, a fault can occur in the JSON processing (invalid json syntax, exceeded max depth, bad unicode handling, etc). If the claimset is RDF, a fault can occur in the processing of the RDF concrete serialization (like application/rdf+xml, or application/n-quads). If you say that a claimset is JSON-LD that MUST always produce valid RDF, you get faults from both categories. I support re-evaluating including Option 1: Keep Saying No RDF Processing is RequiredDecide if you want silent failures to come in the form of "bad term definitions... Option 2: Make RDF Processing MandatoryDrop This way, you are clear to consumers with normative language that valid "high quality" RDF is expected for every valid instance of the data model, and you have given them normative guidance "you MUST understand this, in order to implement the spec properly", on how to produce "high quality RDF". I'm in favor of Option 2. The reason is that I have observed over the years lots of confusion regarding JSON-LD, including as described here: https://tess.oconnor.cx/2023/09/polyglots-and-interoperability I feel that without stronger guidance on how JSON-LD is expected to be processed in a dependent specification, like Decentralized Identifier or Verifiable Credentials, the ambiguity creates an open wound that festers and never heals. It leads to conversations with customers and partners that sound like: "You don't have to look at the RDF, but if you don't a verifier might come complain to you in the future about what you issued", or "You will need a stricter regulator profile to ensure JSON-LD produces RDF, because the base specification does not actually ensure this property".... IMO, |
I think we should do all of the following:
As for this point:
I think "issuer-defined" terms (and "private claims") are a footgun in the global, three-party model, so my preference is not to define a context at all with such an I think "private claims" are the actual basis of any coherent "polyglot problem", as they are ambiguous on a global scale. These sorts of claims are only remotely sensible in a two-party model where there is an assumption of a tight coupling between the issuer and verifier, and the holder functions not as a fully independent actor, but as a transporter of opaque envelopes of information. I think endorsing this concept in our core context was a mistake as it encourages people to make assumptions based on the historically ever-familiar two-party model; a model that isn't applicable here. These assumptions can result in a number of problems including, but not limited to, making it more difficult for general purpose wallets to help holders make choices, unduly incentivizing centralization in the marketplace, failing to understand document contexts prior to consuming information, and harming privacy by requiring permission from the issuer to express the same information in different ways. |
+1
+1 particularly if the existence of that development context is something I can test for (and prevent via an implementation profile if need be)... and drop to the floor if it exists in production.
I favor not using undefined terms and banning the use of For those who are not planning on using JSON-LD aware API's, should there also not be clear guidance provided that since the VCDM v2 data model is JSON-LD compact form, you need to have checks in your processing logic to catch the equivalent errors that a JSON-LD aware API will catch? |
My votes:
|
Concurrence with:
|
As someone who was originally in favour of having
In my opinion we should be focusing on the root cause of the issue here, which is fixing how |
Agree with @tplooker on this. However, also believe that having An option that can serve both perspectives is the use of |
The issue was discussed in a meeting on 2024-07-03
View the transcript1.5. Re-evaluate support for
|
Previously, the VCWG decided to define a
@vocab
value in the base context (see #953). Recently, a security disclosure (which is still under debate) has resulted in a number of individuals that had previously been in support of defining an@vocab
in pulling their support for the feature since it is, at best, not very well understood, and at worst, leads to unexpected security-related concerns for those that do not understand the ramifications of using it.We no longer have consensus for the feature (this is the new information that the security disclosure has highlighted). At a minimum, we need to poll the group again to see if
@vocab
has the support it needs to remain in the VCDM v2 base context.There are additional proposal options, which include:
examples/v2
context.@vocab
in a production setting (but still allow it).@vocab
in any production setting (and implement normative specification text and tests that enforce the behaviour).@vocab
declaration to that document (for those that want to continue to create/use "private term" VCs).We'll gather feedback in this issue and then implement whatever achieves consensus.
The text was updated successfully, but these errors were encountered: