ipfs-shipyard / IGiS

Interplanetary Git Service
http://igis.io
MIT License
69 stars 16 forks source link

RFC: Users #49

Open dirkmc opened 6 years ago

dirkmc commented 6 years ago

Users should have

These fields can be stored in an IPFS object referenced by an IPNS key Ideally keys can be abrogated, username is unique and dynamic

Usernames

Decentralized unique usernames are difficult as described by Zooko's triangle. Could be achieved using

Authentication

magik6k commented 6 years ago

How about a model where user has 2 sets of keys:

In this setup we should be able to change passwords, the hard part though is ensuring we can revoke access from the name+password keys. This could be implemented as a mix of blockchain (or federated, or with acl-crdt - https://github.com/ipfs/dynamic-data-and-capabilities/issues/25) and name/password key approach.

cc @pgte - Is there related research I missed?

dirkmc commented 6 years ago

@magik6k could you explain a little more what each key would be used for, and how to update passwords?

dirkmc commented 6 years ago

Ah I think I understand what you're saying - the Account Key is used as the "master", for example it is used to derive an IPNS key that points to an IPFS record containing the other keys.

Revoking access should be fairly straightforward if the other keys are stored with associated data indicating whether they are still valid (for example they may have expired or have been revoked)

For example let's say a user wants to sign a comment she has written on a Pull Request. The comment signature could be composed of cert sig + cert ref where

The Account key derives an IPNS key that points to an Account record on IPFS. The Account record contains a list of tuples certificate IPFS hash / isRevoked.

In the case where a user wants to

The renderer of any signed data (eg a Pull Request comment) must

This system depends on ensuring that the Account key is never compromised. This could be mitigated by having an expiry and renewal mechanism for the Account key.

dirkmc commented 6 years ago

I'm planning to read through a bunch of these for more ideas: https://github.com/WebOfTrustInfo/rwot7

dirkmc commented 6 years ago

The peer-star team are working on peer-star-identity which should take care of a lot of the requirements for Users on IGiS.

Unique usernames would still be an outstanding issue. Filecoin will likely have naming, or alternatively we could go with local names

dirkmc commented 6 years ago

With respect to the unique usernames issue, the handshake project is attempting to replace DNS root servers / zone files with a blockchain. The project paper mentions a strategy for mitigating squatting that we could make use of - they reserve the top 100k domains in Alexa for entities that can prove ownership using DNSSec (eg coke.com). We could similarly reserve usernames that existed before a certain date on github / twitter / etc for users who can prove ownership through verifiable claims (attestations). peer-star-identity will provide verifiable claims management for DID