- From: Adrian Gropper <agropper@healthurl.com>
- Date: Mon, 4 Jan 2021 17:36:23 -0500
- To: Liam McCarty <liam@unumid.org>
- Cc: Daniel Hardman <daniel.hardman@evernym.com>, Manu Sporny <msporny@digitalbazaar.com>, Credentials Community Group <public-credentials@w3.org>
- Message-ID: <CANYRo8jmZK65nh3qY6_ndjEwg8=H9xfVK_8=MyTCVdS8L_UkUw@mail.gmail.com>
I try to take a broader perspective based on auditability here https://lists.w3.org/Archives/Public/public-did-wg/2021Jan/0005.html and here https://lists.w3.org/Archives/Public/public-did-wg/2021Jan/0004.html Is it helpful in this context? Adrian On Mon, Jan 4, 2021 at 5:08 PM Liam McCarty <liam@unumid.org> wrote: > All great points, Daniel. > > Honestly I think our differences here may be largely semantic. If the DIF > presentation definition spec accomplishes what you mentioned, then that > sounds basically like what Gabe proposed as verifiable requests — it has > the notion of “presentation request”. I may just not know enough about the > various communities’ efforts, which is my bad. > > The interaction/sub-interaction sequence you describe makes perfect sense > to me. I mentioned the same concept in one of the early emails in this > thread but came to a different conclusion — that both sides playing > multiple roles made the role definitions way too confusing. I think what > you’re advocating for is that we stick with the low level “primitives” so > to speak, and I can certainly see benefits of that. What I’ve been > advocating for is creating some higher level abstractions to make > understanding and using the specs easier. > > It certainly seems like the notion of a Verifiable Presentation was > motivated by the same idea, at least in part. In the W3C spec, it says the > goal is to ensure “authorship of the data is verifiable”. This doesn’t seem > strictly necessary, in the sense that you might instead stick with the > “primitive” of a Verifiable Credential and not abstract beyond that. But a > Verifiable Presentation is useful because it’s a higher level concept and > because it wraps data potentially from multiple sources together under one > signature. > > What I’ve been claiming is that a Verifiable Request may be similar. It’s > not strictly necessary — the verifier can prove they’re legitimate by > acting as a holder and presenting a credential to a holder acting as a > verifier (already the terms are getting to be a mouthful…). But it’s > arguably a pretty useful higher level concept to have a “request” and for > it to be verifiable. Data about the verifier *and *about what they’re > requesting can be wrapped together under one signature. > > Anyway, I definitely see what you’re saying and the clear merits of your > approach. And I don’t think we’re actually saying such different things as > it seems. If only semantics were easier! > > Thanks for the detailed and thoughtful responses. > > Best, > > Liam > > *Liam McCarty* > Co-Founder of Unum ID <http://www.UnumID.org> > > On Jan 4, 2021, at 3:32 PM, Daniel Hardman <daniel.hardman@evernym.com> > wrote: > > Couldn’t we say the exact same thing about requests? (Here I mean request >> as a noun not a verb.) “There are many ways of encoding requests for >> VCs/VPs, and what’s best depends on the use case. But we’d benefit from a >> spec that provide a standard of certain best practices (like cryptographic >> proof of provenance) and a common language to ensure they can all >> interoperate.” >> > > Yes. That's why the DIF developed the presentation definition spec. > > >> Daniel, all respect to you, truly, but the analogy of courtroom testimony >> makes no sense to me. Like Gabe said, I wouldn't give testimony in a back >> alley if a random person asks me to. I'd do a visual “spot check” to make >> sure the courtroom and judge are legitimate, just as I’d ask a supposed FBI >> agent to see their badge. (And how much better I’d feel if I could >> cryptographically check they’re a real agent, rather than rely on my >> untrained eye!) >> > > Of course you wouldn't give testimony in a back alley. My point wasn't > that you don't need to authenticate verifiers sometimes; it was that when > you *do* authenticate them, you don't need a new data format or a new > protocol to do so; there's already a spec for that. When you ask the FBI > agent to see their badge, you are temporarily casting them in the prover > role rather than the holder role, and you are assuming the verifier role. > So the sequence is: > > *[interaction 1]* > > - FBI as verifier asks you as prover to prove you're a US citizen > using your passport. > > *[sub interaction 2, roles reversed]* > > > - You as verifier ask the FBI agent as prover to prove they're > actually a legitimate agent. > - FBI agent as prover furnishes legitimate agent proof to you as > verifier. > > > - You as prover furnish citizenship proof to FBI agent as verifier. > > This is flexible and powerful. You can skip the sub interaction if you > like (e.g., instead of an FBI agent asking for your passport, it's now a > cinema employee asking for your movie ticket; the stakes don't justify > reciprocal proof). You can change who participates in sub interaction 2 > (FBI agent proves to your lawyer instead of to you). You can recurse (FBI > agent says they are willing to prove to lawyer, but only if you prove the > lawyer represents you... etc). Each layer of interaction has its own tests > for correctness, its own error-handling criteria, its own subtleties around > which standards of proof are acceptable, its own repudiation settings, its > own regulatory compliance profile. > > If, on the other hand, you imagine satisfying all need for verifying the > verifying through a specialized "verifiable request" format+protocol, you > end up with a fragile mess: > > [interaction 1: roles locked to FBI = verifier and you = prover] > > - FBI as verifier asks you as prover to prove you're a US citizen > using your passport, AND provides proof (since they're using a 'verifiable > request' format) that they're a legitimate FBI agent. > - You as prover say, "Well, that's great that you're an FBI agent, but > what I really want to know is whether you are on the special intra-agency > task force that's charged with investigating the crime. I will only prove > this to an agent who has standing on my case, not to a random FBI agent." > > ...you have some problems: > > 1. The verifiable request concept you're trying to justify isn't > flexible enough to anticipate everything that might be needed; the FBI > agent has to guess about what sort of verification standards might apply to > them. They might guess wrong. > 2. There is no error-handling path for the part of the protocol that > verifies the request--only the part that verifies the response. A response > of the prover who wants the verifier to provide more verifiability is > indistinguishable from a response that's refusing to cooperate. > 3. You can't recurse. > 4. You assume that the party that needs to verify the verifier is > identical to the party that is being asked to provide proof (no provision > for "prove it to my lawyer"). > > ...etc. > > Verifiable requests are not the way to keep you from testifying in a > metaphorical back alley; plain old verifiable credentials and the > presentation definitions that DIF is working on are all you need. Just nest > the interactions. > > But in a future where I have tons of personal data stored in a digital >> wallet, phishing is going to be *far *more of a problem. Today, it’s >> difficult for me to share lots of data all at once. When it’s way easier to >> do so, I sure hope I have more than a gist of whether someone asking for >> the data is legitimate. >> > > Right. And you ask whether they're legitimate using the same format that > they ask you for proof of something -- not a different one. > > > >
Received on Monday, 4 January 2021 22:36:49 UTC