- From: Adrian Gropper <agropper@healthurl.com>
- Date: Fri, 10 Aug 2018 22:20:08 -0400
- To: Stephen Curran <swcurran@cloudcompass.ca>
- Cc: "=Drummond Reed" <drummond.reed@evernym.com>, heather vescent <heathervescent@gmail.com>, Christopher Lemmer Webber <cwebber@dustycloud.org>, Markus Sabadello <markus@danubetech.com>, W3C Credentials CG <public-credentials@w3.org>
- Message-ID: <CANYRo8j99--xBgSCaHnoit2i_CabuDtT8dF0uGbL2Ho3VzbMpA@mail.gmail.com>
On Fri, Aug 10, 2018 at 9:57 PM, Stephen Curran <swcurran@cloudcompass.ca> wrote: > The model we've been talking about in the Indy/Sovrin Agent Working Group > is to recommend (although at this early point, that might be too strong a > word) that each pairwise DID have an endpoint in each pairwise DIDDoc that > is assumed to be for an Agency (e.g. "www.AgentsRUs.com") and that the > endpoint be in the form of a DID (which is of course a URI) for the > Agency. For example: service_endpoint: "did:sov:23efeda45693deb5". That > "endpoint DID" is owned by the Agency, not by the Identity. > > To send a message to an Identity: > > - Get and resolve the endpoint DID from the pairwise DIDDoc > - Send the message as a "Forward" and encrypted to that shared > endpoint. > - The Agency endpoint would decrypt the message to get one additional > piece of information - the destination DID for the message (the actual > message is encrypted only for the ultimate recipient). > - From that, the Agency would use something like a mapping table to > know the Identity to which the message needs to go (but nothing about the > message itself). > - It's implementation specific how the Agency handles this. > - At that point - the message is in the hands of an Agent controlled > by the recipient Identity and is assumed will "Do the Right Thing" for that > Identity. > > By having the endpoint URI as a DID, the Agency has control over it's > DIDDoc (which is published on a Public Ledger) and can rotate keys, change > the endpoint URL, etc. That means the pairwise DIDDocs don't have to worry > when the Agency changes it's keys. The Identity would only change the > endpoint in the pairwise DIDDocs when it changes Agencies - a much rarer > event. > > This model implies one other thing. When an Identity shares a pairwise > DID with another identity, it must tell the Agency "Hey, when you see this > DID - send it to my Agent". That is part of the Agency implementation - up > the Agency code to handled that. > *I agree that the Agency adds valuable privacy but it seems to reduce self-sovereignty. The Agency will be prone to compromise and censorship by a government entity and a single point of failure. Wouldn't Tor routing to the Agent endpoint be more private?* *Adrian* > > The goal is to make it "assumed" (and hence, interoperable) that there is > a shared Agency endpoint that services many Identities, each with many > pairwise DIDs. That hides the Identity-to-Identity interactions in a crowd. > > The recommendation is to enable interoperability, Senders should assume > ALL identities are structured that way. As such, an Identity that does > something different should still structure it's DIDDoc to look like that, > so that the Sender knows how to send the Identity a message. > > A bit in the weeds, but hopefully that helps. > > > On Fri, Aug 10, 2018 at 5:52 PM, Adrian Gropper <agropper@healthurl.com> > wrote: > >> Drummond, >> >> I'm on the same wavelength with you (as usual) but I'm unclear about the >> next level: the endpoints. A DID document has two principal functions >> (other than housekeeping like key rotation) - to provide public key(s) and >> service endpoint(s). The public keys do have some stand-alone uses for >> signing, but the endpoint is the key to self-sovereign agency and a risk >> for correlation. >> >> Pairwise DIDs can be arbitrarily cheap and scalable but, as soon as my >> identifier needs to be associated with some private claims, I need to >> control those private claims and tokens through a service endpoint. >> Ideally, my service endpoint should be self-sovereign and as correlation >> resistant as the pairwise DID. Which suggests a need to have a separate >> service endpoint for each pairwise DID. >> >> For convenience, a service endpoint should ideally aggregate my various >> policies across hundreds of pairwise DIDs (the number of logins in my >> 1Password file). This could be achieved by tumbling through an Agency that >> I trust with loss of self-sovereignty. >> >> What is the recommended way for me to operate an off-chain self-sovereign >> agent / identity hub? >> >> Adrian >> >> >> On Fri, Aug 10, 2018 at 8:21 PM, =Drummond Reed < >> drummond.reed@evernym.com> wrote: >> >>> On Fri, Aug 10, 2018 at 3:12 PM, heather vescent < >>> heathervescent@gmail.com> wrote: >>> >>>> >>>> On Fri, Aug 10, 2018 at 12:21 PM, Stephen Curran < >>>> swcurran@cloudcompass.ca> wrote: >>>> >>>>> I think the model that some networks are moving to is for most DID >>>>> Docs to be held between the communicating parties, and not pushed out to a >>>>> public ledger. >>>>> >>>> >>>> Is this really the case? Which of the ledgers are moving in this >>>> direction? >>>> >>> >>> The Sovrin ledger is "moving in this direction". So is >>> uPort's architecture (as I understand it). >>> >>> >>>> And if so, I'm curious why? >>>> >>> >>> Two reasons: privacy and scalability. In summary: >>> >>> 1. Some DIDs and DID documents need to be public so that anyone can >>> search for and verify them. But other DIDs that are only used as pairwise >>> pseudonyms do not need to be public—they only need to be shared between the >>> parties to a private relationship. In Sovrin architecture these DIDs are >>> shared on what's called a *microledger*. Microledger code has not >>> been fully implemented in Hyperledger Indy yet, but the same basic >>> functionality has already been implemented in direct agent-to-agent DID/DID >>> document exchange. >>> 2. This also has the advantage of dramatically increasing >>> scalability. The vast majority of microledger activity takes place >>> "off-chain" (i.e., off of the public ledger), so it scales the same way >>> cloud architecture does. It doesn't require the public ledger to have to >>> scale to enormous amounts of throughput; essentially the public ledger is >>> only needed to anchor the public DIDs of issuers of credentials that need >>> to be widely verifiable. >>> >>> And also if so, can you please point me to documentation. >>>> >>> >>> The Sovrin Technical Governance Board and Hyperledger Indy have not put >>> out any official documentation yet because the code is still in >>> development, but the basic concept is covered in the DKMS Design and >>> Architecture document <http://bit.ly/dkmsv3> release at IIW last April. >>> >>> >>> >>>> >>>> >>>>> Anyone that needs to resolve the DID -> DIDDoc must be able to in some >>>>> local manner (implementation specific), and there must be mechanisms to >>>>> push changes from one party to the other. >>>>> >>>> >>>> But the whole point of putting the DID and DID Doc on the ledger is so >>>> they are always available. It seems counterintuitive to put the DID but not >>>> the DID Doc on the ledger. There is no PII in the DID Doc (just a #, the >>>> public/private key, and any endpoint links).... >>>> >>> >>> A few points: >>> >>> 1. DIDs and DID documents that describe people are all >>> considered personal data under GDPR ("PII" is now longer the test). >>> 2. Sharing a pairwise pseudonymous DID, public keys, authentication >>> methods, and endpoints publicly might not appear to have any privacy >>> implications, but in fact they do. A simple example: if you create >>> a pairwise pseudonymous DID that originates in your SSI wallet and is >>> shared with only one other party in the world—and then it later shows up >>> someplace else—you can be pretty sure who shared it without your >>> permission. But if all your pairwise pseudonymous DIDs are published on >>> a public ledger, you have no such assurance. >>> 3. An agent that you control that maintains a microledger that is >>> properly backed up can be as persistent as a public ledger without these >>> privacy issues. >>> >>> >>>> >>>>> Those same mechanisms are need for updating the DIDDoc when it is on a >>>>> public ledger. So, that does to some degree help with preventing >>>>> correlation - there is not an obvious way to get the list of DIDs in active >>>>> use for indexing and searching. In that model, the DIDs that do go on the >>>>> public ledger are ones that people want known - e.g a public DID for an >>>>> Enterprise to be used to start connections. >>>>> >>>> >>>> This seems like making this way more complex than is necessary - in >>>> response to my question about the black arts of correlation via watching >>>> data flows vs capturing the actual data. I wasn't saying we have to solve >>>> for that extremely crazy corner case, I was curious if it maps to that >>>> similar problem... >>>> >>> >>> Again, with microledgers those public correlation problems simply go >>> away. This is similar to FIDO architecture—the pairwise pseudonymous public >>> keys it uses to authenticate you are never stored on a public repository. >>> >>> >>>> >>>> >>>>> >>>>> Net traffic can be monitored going into and out of a "known endpoint" >>>>> such as an Agency (holding many Agents) or a Hub. The plans I have seen on >>>>> the HyperLedger Indy side are that data will be encrypted in transit - no >>>>> plaintext - and that because the endpoint is shared by all Agents (e.g. >>>>> many identities, each with many DIDs), it will be difficult to learn from >>>>> just seeing the 'Net traffic. >>>>> >>>> >>>> Yeah, but the endpoint is also stored in the DID Doc, and all the PII >>>> data is stored in the wallet, or agent, or hub, or whatever cloud thing or >>>> hardware thing you've decided to use. >>>> >>>> So why/how would it make sense to NOT store the DID Doc on the ledger? >>>> >>> >>> I hope the answers above help. Privacy and scalability are the two >>> driving reasons that pairwise pseudonymous DIDs exchanged "off-ledger" via >>> private microledgers are now the default in Sovrin architecture. Public >>> DIDs are absolutely still there because public issuers of verifiable >>> credentials definitely still need them; they are just the exception rather >>> than the rule. >>> >>> =Drummond >>> >> >> >> >> -- >> >> Adrian Gropper MD >> >> PROTECT YOUR FUTURE - RESTORE Health Privacy! >> HELP us fight for the right to control personal health data. >> DONATE: https://patientprivacyrights.org/donate-3/ >> > > > > -- > > Stephen Curran > Cloud Compass Computing, Inc. (C3I) > Technical Governance Board Member - Sovrin Foundation (sovrin.org) > > > *Cell: (250) 857-109Schedule a Meeting: **https://calendly.com/swcurran > <https://calendly.com/swcurran>* > -- Adrian Gropper MD PROTECT YOUR FUTURE - RESTORE Health Privacy! HELP us fight for the right to control personal health data. DONATE: https://patientprivacyrights.org/donate-3/
Received on Saturday, 11 August 2018 02:20:34 UTC