-
Notifications
You must be signed in to change notification settings - Fork 20
Data Integrity -> external resources #323
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
Comments
Hi Alen, we have discussed the issue you are raising before and it took 6+ months to debate in the group, the previous issue can be seen here: ... and the changes we made can be found here:
Yes, in this case, a verifier MUST NOT verify a VC that it doesn't understand in a production setting. We have text to this effect in the spec today: https://www.w3.org/TR/vc-data-integrity/#validating-contexts
This is application specific, for example, the rules for VCs can be found here: https://w3c.github.io/vc-data-model/#integrity-of-related-resources specifically, this text:
So, if an issuer includes the hash for a context, then a verifier MUST ensure that the value it has matches or throw an error.
The rules are the same for any long-lived content on the Web: Publish it to a URL that won't change and don't change the content. We do have some other guidance that we might put in an implementation guide, but we don't have consensus yet on exactly what we should say (other than what should already be obvious to developers that want to ensure long-lived content at long-lived URLs. Does the above answer your questions, @alenhorvat? |
Hi. Thank you for the exhaustive answer, but I would expect that specification defines how to embed (either in a protected or unprotected way) the context if it is unavailable. In an open ecosystem, where an verifier may ask for a set of claims, without referring to a specific VC type, it may happen that a holder presents a VC with a context where the full context is not cached by the verifier. The main issue is that a signature can be invalidated due to unavailable remote content, even though the signature/credential are actually valid. AdES signature profiles, for example, define how to embed additional content/metadata. If possible, I would kindly ask the WG to define how to embed remote content when connectivity might be limited. |
To be clear, your use case presumes that:
Is that the general use case presumptions you'd like the WG to discuss? One solution could be to say that it is ok to include a fully expanded JSON-LD Context in a secured document like a VC if the above three things are a possibility for the use case. This might best go in the implementation guide. This is possible to do today, but the WG decided that telling implementers to do that could be error prone and lead to interoperability issues -- we had a few WG members that objected to the use of expanded context values in VCs. If this is an archival use case, like what AdES tries to do, then the guidance could be to fetch the remote context immediately in the archival system and store it in the archival system. I will also note that this will only work for JSON-LD contexts, which can be embedded. It is true that all other things linked to can be embedded as well, so it's really a judgement call on the issuer's part of what to embed and what not to embed. I'll also note that it's pretty common for the Web and Internet to depend on links to work in the general case. We do speak to this here: https://w3c.github.io/vc-data-integrity/#network-requests I'll also mention that the WG is effectively done with the v1.0 specification at this point in time, we are waiting for a few reviews to come in and then will transition to the global standard publication. We'll try to get this discussion scheduled with the group, but if we are not able to in time, this suggestion might need to go in v1.1 of the specification (the Working Draft would be published immediately after the v1.0 release). |
Congratulations on the v1.0 release! Short answer to
Use case is actually very simple:
Due to the coupling of the business/tech layer via the LD context, it's not possible to verify the VC signature (a very basic verification) if the business context (extension context) cannot be resolved. Attaching remote content in AdES world is solved: protect the remote content by protecting the digest and put the remote content into the unsigned payload. It applies to any remote content. Thank you for your time and consideration. |
It's the job of profiles to normatively specify ways to archive this data and to access the archive. I believe this issue should be closed on this basis. |
The issue was discussed in a meeting on 2025-01-22
View the transcript2.3. Data Integrity -> external resources (issue vc-data-integrity#323)See github issue vc-data-integrity#323. Ivan Herman: this one is on data integrity. Manu Sporny: this issue was about what happens when URLs which are linked to which later disappear.
Manu Sporny: one idea is to expand it inline for archival. Dave Longley: I'd not be opposed to stating you could store any URL and it's value for archival purposes, etc. Ivan Herman: is there anything here that is VC specific?
Michael Jones: it's not useful to describe something informatively if that text could result in normative changes.
Manu Sporny: agreed with selfissued. I don't think there's much more to say here beyond what we already say.
Ivan Herman: sounds good. can someone help manu with that? |
I agree about the archiving, but issue is not about archiving, but about an important feature of Data Integrity as they require (at least the one that relies on LD expansion) a valid context in order to even construct a content to be validated (we're talking about a simple data integrity check). I hope the topic can be addressed. |
The WG discussed this during the last meeting and noted that we could add some language to the Security Considerations section to address your concern. Could you provide the language you'd like to see in the section? If not, could you at least provide a bulleted list of topics that you'd like to see addressed? If you do that, the Editor's can try to construct some language that might address your concerns. |
Dear,
the following references that some issuer are using in the VCs are NOT available, meaning that verification of those credentials is impossible if the contexts are not stored locally by the verifier.
Furthermore, if the verifier wants to include them, the references cannot be easily found.
References:
https://w3c-ccg.github.io/did-resolution/contexts/did-resolution-v1.json
https://w3id.org/did-resolution/v1
This is a critical issue for the signature design. I urge the authors to consider defining a method of how the contexts CAN/SHOULD/MUST be included in the protected or unprotected signature part and what are the rules for 3rd parties hosting the contexts to ensure longevity.
Thank you for your understanding.
Alen
The text was updated successfully, but these errors were encountered: