-
Notifications
You must be signed in to change notification settings - Fork 25
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
same credential fulfilling multiple credential queries #397
Comments
Option A would be the most straightforward option to implement and would be deterministic with regards to which claims would be present in the presented credential. If two credential queries were used instead of one then there may be a processing requirement where they need a presented credential with only the specified claims so with option B providing more claims than asked for could violate some PII policy. |
WG discussion:
|
Example for the 2 map option: {
"response": {
"1": "ey...",
"2": "<some other encoded credential>"
}
"dcql": {
"abc": "1",
"xyz": "1",
"uvw": "2"
}
}
That seems like the cleanest option to me, but the whole thing becomes quite a bit more complex which we should probably try to avoid if possible. |
You could do also the following that uses just one map if I understood DCQL correctly:
Or if you don't want to break existing implementations, add polymorphism:
|
I think it's important that we find a solution to this issue. It would be unfortunate if in the cases where a single credential can resolve multiple queries, multiple credential responses need to be created only because we don't want to change a structure and not because of an underlying security of privacy reason. |
I prefer option "don't care, don't do anything"
|
WG discussion option 1: don't do anything (you can vote with this emoji 🎉) what we have now:
option 2.5 - A (you can vote with this emoji 🚀 )
option 2.5 - B (you can vote with this emoji 👀 )
option 3 (you can vote with this emoji 😁 )
Discussion
Next steps:
|
I'd just like to raise the complication of option 2.5 A and B not quite working if/when #398 is merged. Multiple presentations can be returned for a single credential query (query A) which may not all match the requirements for a second credential query (query B). This means that you can't simply refer to the query A response in the The wallet could check to make sure that all presentations for query A match requirements for query B before trying to reuse, but if any of the presentations don't match then the entire deduplication effort fails. You also run into the problem that query A may accept multiple credentials while query B does not, so again it would be a violation if you tried to refer to the query A response in the The number of edge cases and complexities is much higher with these two options. In light of this, my opinion is that only option 1 and option 3 would be compatible. |
Completely agree with this, especially for the first argument |
The limitation of keeping things as-is, means that in the situations where a single credential is used to satisfy multiple queries, the credential needs to be returned multiple times.
None of these are critical problems, but they have do have a security and usability cost and could lead to needing to make trade-offs between usability and security, which we can prevent by making changes to the structure. Fixing it now seems to be much easier than fixing it a year from now. |
To my understanding when a verifier is using Presentation Exchange and
The concerns expressed for this (corner?) case by @martijnharing sound reasonable. I have the impression though, that to address them we are going to need some kind of rule that prohibits to have multiple queries requesting the same credential (type/format) within a DCQL. In turn, IMHO, such a rule could limit the ability to use options/alternatives for different purposes. |
I think we need to consider some variation of option 3 because of the arguments that have already been made. However, it might also make sense to also consider how to make it more explicit whether a returned credential fulfils not only a credential query but also a credential set query. If we don't, it might be quite difficult for an RP to figure this out. Take for instance.
With a response
In order for an RP to conclude that the "Identification" and "Show your rewards card" credential set queries have both been satisfied they have to iterate through the options of both credential set queries and match by the credential query id's returned looking for a match. Maybe this is acceptable but it does in essence rely upon the credential query ID not being re-used across credential_set queries otherwise we get into even more ambiguous states like.
With a response of
Basically as an RP I would have to conclude that this response was meant to satisfy both the "Identification" and "Prove citizenship" cases even though there is technically two ways to do this via the response. Maybe thats an issue or maybe not? |
(might be a duplicate)
high-level requirement for a special (?) case: define the wallet's behavior/processing rules when the same credential can fulfill multiple credential queries in the same RP request.
example 1 - RP asks for mdoc for age_over_18 (query_id
abc
); and mdoc for address (query_idxyz
):option A:
vp_token: {
abc
: mdoc with age_over_18xyz
: mdoc with address}
Option B:
vp_token: {
abc
: mdoc with both age_over_18 and addressxyz
: mdoc with both age_over_18 and address (same as above)}
concern with option A is that it can trigger multiple user authentication? and for ZKP systems might mean that ZKP has to be computed twice?
does this result in the limitation of returning one mdoc per deviceResponse?
The text was updated successfully, but these errors were encountered: