-
Notifications
You must be signed in to change notification settings - Fork 13
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
Mediated Holder Exchanges #84
Comments
I am excited to see this added to the universal wallet interop spec, we've been working on VP Request Spec JSON based APIs for exchanging content. I see capabilities to a mediator a natural next step... summarizing:
Consider the case where the VP contains an EDV authorization capability: Receiving party can now invoke the capability and access all data associated with the requestors flow. You can see a similar proposal we made here: decentralized-identity/confidential-storage#157 |
Its especially advantageous to rely on a mediator if the data is too large to pass over a browser or QR Code. |
Here is a snippet from our universal wallet plugin for vp exchange:
|
we're still experimenting with the interfaces, but we'll be making sure to align them in the spec here, based on feedback we receive. |
@OR13 I guess you are were designing interfaces for credential exchange APIs for holders as part of #75 & #76 . In this mediator holder exchange flow, I believe only wallet holder comes under universal wallet's core interfaces. Rest of the features can come as part of plugin interfaces. Universal wallet core interfaces might need to cover these steps:
also we need to consider the fact that a verifier may or may not have infrastructure to pull presentation at later stage from mediator. |
I'm struggling to grok this exactly. It feels like there are a couple things, which each might be connected to wallet apis: Simple Presentations initiated by the sender pushing
(this is what we have implemented today, with CHAPI and HTTP). Mediated Presentations initiated by the receiver pullingIn both cases, there is some setup / registration that the wallet likely needs to have done. Here you can see the setup we consider for the simple push oriented presentations:
Can we perhaps label the steps in mediated presentations in terms of vp request spec and edv's? |
There are arrows with no labels, but I will try to add labels to the stuff that is numbered.
... I am stuck, I don't see how step 4 is triggered by the verifier (there is no response to them to step 1) and EDVs don't push data, so the verifier is left in a state of waiting... |
Both case 0 and case 1, assume a verifier can decrypt.... this requires the verifier to do key management. If we remove this requirement, the mediator can observe the presentation content. For the sake of completeness, here is the original exchange API proposal (the one the traceability api supports today). Case 2 |
Personally, I prefer case 2 as a starting point, not just because its what we support today, but because we have no real need for yet another word for holder... a mediator is a holder who aggregates presentations they can't even read, and then submits them as an unsigned presentation.... mediators don't do encryption or signing and they don't need to since they can't cheat if the verifier supports encryption. For folks wondering how CHAPI fits into all this, CHAPI uses an iframe as a mediator... Without encryption, which is safe as long as the polyfill isn't compromised. There are 2 show stoppers in this flow.
Thats pretty much game over for mobile application and machine to machine use cases for presentation exchange. |
Thanks very much @OR13 for creating these diagrams!
For us, the case where we encrypt the VP through the back-end is quite important. We also have cases where we want to aggregate multiple VPs prior to the Verifier pulling. Agree that this has the complexity where the Verifier needs to decrypt. Of course, they already need to verify signatures so they have crypto work to do regardless. We want to be able to support:
With the same integration for the Verifier.
Yes - I think we should view this component as a Holder. |
If case 2, step 6 used an encrypted VP, its essentially the same exact flow as case 0. except for the fact that the VP is originating from a web wallet... whereas in case 1, it originates from a backend holder wallet. |
It seems like the main things missing from the universal wallet spec to support these flows are:
|
Another one: In these "non-interactive" cases — like user agent creating the VP and/or asking services to create the VP, I assumed domain and challenge goes with Step 1. (and of course, in the final verifier pulls step, the back-end holder can have additional controls regarding domain before supplying the result). |
yes, in case 2, if the domain and challenge are part of the step 1, we can skip step 4, and go right to step 5. |
In case 2.1, the verifier an receive an unsigned VP directly from the backend holder wallet... which in turn may hav collected VCs and VPs from an unknown number of intermediaries, before encrypting the aggregated VPs.... while its possible for 5 to use a signed VP, its not necessary, since each encrypted VP inside may be signed. And the verifier will need to decrypt and verify each VP anyway. |
@OR13 about cases with mediator involved. in some scenarios where a query can produce multiple credentials and we may have case 0 & case 1 combined. In that case, mediator has to wait for service holder to finish generating encrypted presentation. How mediator will know to wait for service holder before pushing notification to verifier? |
@sudeshrshetty lets look at case 2.1 for the answer to that, in step 4, the service agent gathers all VPs necessary to reply to the initial query... those VPs might come from the User Agent, or the might come from other backend services that the Service Agent as access too. In either case, the Service Agent has the query, and knows when they have enough to proceed to step 5. You might also have an unbounded number of untrusted mediators in step 5. this would align with original picture, except that now they no longer need to be stateful... since the Service Agent handled aggregation. The question arises, can the Service Agent be trusted to handle aggregation. I am asserting yes, since it can aggregated encrypted VPs as well as produce its own. |
Yup - Part of "Collect Encrypted VPs" needs to allow a User Agent to push encrypted VPs to the Service Agent. |
Consolidating all the points from case 2.1,
@OR13 @troyronda let me know if I have misinterpreted or missed something. Here are some assumptions:
|
I'm at a session in IIW reviewing https://specs.bloom.co/wallet-and-credential-interactions/ |
@sudeshrshetty I think you got all the points... the main one we've been struggling with is how to support the registration phase, and how it relates to discovery... I think naively, we assume from a public organization registry, like BCGov org book, a holder discovers credentials they may receive or present, does some setup phase, maybe related to "connections"... and then the protocols we are talking about here kickoff. |
@OR13 how about using credential manifest during registration of backend holder with user agent holder? Backend holders can send credential information in similar data format during registration. |
@sudeshrshetty yeah, I think its possible that we might move faster building on top of the DIF / Bloom specs in this regard. |
Cross-posted from w3c-ccg/vc-api#176 as I mentioned universal wallet.
The text was updated successfully, but these errors were encountered: