-
Notifications
You must be signed in to change notification settings - Fork 45
Cheap DIDs and the option to migrate DIDs between ledgers using standard DID Deprecation Registries #182
Comments
Just saw the Allow DID methods without Update and Delete PR and the comment from @cbruguera proposing a revocation registry. To me, these look like simple useful things that will be implemented one way or another. In our case (a matrix.org-like protocol for content cocreation) this is a MUST, because:
|
Jose, I'm sure you're also aware of some of the DID work that the uPort team is doing, e.g. their I think these are perfectly valid DID methods that are very interesting for certain use cases. I have just two small comments:
I suggest a small language change here... It's bit misleading to say that the DID Document is
You may want to consider thinking about this as just an "update" operation executed on DID1, rather than deprecating DID1 and creating a new DID2. In other words, after the process you describe, the original DID would remain the same, but its DID Document as well as authentication / authorization properties have changed. You could rename "DID Deprecation Registry" to "DID Update Registry". It would still work the way you are describing. Do you see any downsides of this perspective? |
Actually, I was not aware of that, thanks! I agree on the language suggestion. "Virtual" seems a better word. But I don't think I am in a position to make this a formal proposal since I am new to this subject. Regarding your comment on What would a resolver do if it gets a DID Document of In this case a DID Update Registry would not be needed if you want to update a DID that lives in a platform that allows for these kind of DID Subject updates. Like updating from The global DID Update Registry (living in ethereum) would be useful to help ledgers without scripting capabilities like IPFS or a pure SECP256K1 DID. What do you think? |
It's weird. Documentation of However, if you look at the resolver code, the @pelle might help us clarify if it is indeed possible to have a DID Document of a |
One fundamental property of DIDs is persistence. The "id" property in a DID Document MUST contain the original DID that is being resolved, and this cannot change.
The resolver would throw an error in this situation. I probably didn't explain my suggestion well enough. I tried to suggest that you don't need to create a new DID2 at all. You can just keep and update the DID1, using the mechanisms you describe. |
Oh, I got it now. Sorry. It seems this would
I like (1), don't get me wrong :). But (2) and (3) make me feel a bit uncomfortable because with a simpler DID Update Registry (2) I would also get (3), and thus decouple the Identity of an entity from the original ledger in which it is created. |
Hi @peacekeeper, after further thoughts I now understand your proposal. A default DID Update Registry which is used to build the DID Document of stateless dids (like We can also reuse part of the code from uport registry. Deprecation can easily be added in the DID Standard as a new I added this other issue on the java universal resolver repo for adding DID as an authentication provider for Spring Security. Maybe you have some comments. |
Closing because we've moved it to the DID WG did-spec repo. |
The motivation
I want to create a cheap DID with the simplest possible authentication method of a private-public key pair of a given algorithm, say:
The DID Document would be
null
and thus assumed to have only oneauthentication
element corresponding to the public key and the algorithm of the DID itself.I want this so that I don't have to pay for storing the DID Document on a ledger, or trust that a cheap ledger will remain to exist forever.
Now I want to be able to, at some point, update this DID1 to a new DID2 that do lives on a ledger, and thus, has more complex authentication and authorization options.
So, how can a client verifying the DID1 would know that this DID1 was deprecated and should now look for DID2?
The proposal
Using a stable ledger (I would say Ethereum for simplicity of the implementation), create a default/standard public DID Deprecation Registry (ETH-DIDDR) smart contract to which the client can go and check if a given DID has been deprecated for a new one.
The DID1 owner will be able to add an entry into the ETH-DIDDR by signing (with the current DID private key) the number of a block that is not more than 1 day old (at the block the TX is added to the blockchain). This will create an indexed
Event
with the deprecated DID1, the signature and the new DID2 so that the client can easily search for it.Some asides
The not older than 1 day would give the paece of mind to the DID owner that any vulnerabilty that occurred more than 1 days ago (say selling a mobile phone without deleting the key) is not a vulnerability anymore.
Clients could give a grace period of 1 or 2 weeks after the DIDDR is updated in which they still request authentication with DID1, to let the user of a stolen key to protect himself from the breach by contacting the client and explaining the situation.
This DIDDR would also serve as a way to migrate a DID from one ledger to another one.
There could be more than one DIDDR on multiple stable platforms.
The text was updated successfully, but these errors were encountered: