-
Notifications
You must be signed in to change notification settings - Fork 2
Peer-Star-Identity #18
Comments
Hey @joaosantos15 thanks for reaching out! Your proposal looks promising, I really like you agnositc approach to DID methods. It might be relevant to be able to, instead of just adding more keys to a DID, create new DIDs for applications and then link these to the main DID. However there isn't really any best practices around that at this point. As for verifiable claims: The way We have an experimental DID method called muport which is based on ipfs and minimal blockchain use (for key revokation and updates). Its architecture is designed to be very flexible in terms of keys and data you can add, and what blockchain you use. I think it would work great as a thin identity system for Peer-Star, lmk what you think about it :) |
@oed Thanks for your feedback, it's much appreciated.
We are indeed trying to embrace as many DID methods as possible to target as many identities (and users) as possible, while also embracing emerging standards such as Verifiable Claims. Doing so is obviously a challenge but I think we will get there. Our proposal does not attempt to replace any DID method but instead build something on top that will be useful for entities that manage several identities as well as to provide an easy, familiar and safe way for (p2p) DApps to authenticate users.
The postMessage idea came like a "oh.. what if.." and it's a very secure way to bridge the communication between DApps and users that control the identities. Regarding the
Indeed, I've been reading the proposal as well as the comments thread. The entities creating identities on
I will read about it and give feedback! Regarding the revocation, I think it's also a good topic to discuss upon. In my opinion, using the keys that controls the DID often has inherent problems as stated in our problem statement. That's the reason why we introduced layers of keys in our proposal: layer 1 - DID keys, layer 2 - Device Keys, 3 - Session Keys. The DID Keys will then be used sporadically and can be stored safely in several trustworthy places for redundancy. Nevertheless, DID key recovery/replacement is a must in case of a catastrophic event. What are your thoughts on this approach? Regarding the integration of the
Thanks for your time! |
Regarding the flexibility in terms of keys and data, are you referring to the I've looked into both What's the status of |
I think this makes sense. We've been thinking along similar lines for having session keys for dapps. And yes, having device keys just makes a lot of sense. In both our main DID methods we have support for a "master" key and then signing keys with less authority. In
You're right, we are currently in progress of adding this to uport-connect. You will be able to request a signature for the DID that is connected. The format of this signature will be a JWTs, take a look at the did-jwt library for reference.
This is a tricky one. If your goal is to support muliple DIDs it seems like there is no one way that will work across all of them. For example, DIDs using ethereum it might be easier to publish something in an ethereum based smart contract, for other DIDs other blockchains might fit better. Afaik there is no standard way of doing this kind of thing.
Ah, sorry I was refering mostly to the data structure of the DID method. The muport library right now has only a limited amount of features. Support for adding new keys can easily be added though.
Yes it is! It's under a property called
|
Thanks for all the feedback!
I've came across w3c-ccg/did-spec#63 and it seems the WG wants to standardize on how revoked keys appear in the DID Document. It's a must to have them listed in the DID Document so that they are interoperable across DID methods. We need this list to verify signatures that were made with keys that eventually expired or were manually revoked. |
@oed There's other issue that I would to bring on. Our goals in peer-start is to build 99% p2p applications and only resort to a backend as a fallback. Currently, to obtain credentials from uport identities, such as the name or the email, it's required to have a "secret" kept on a backend somewhere. Of course, the IdentityManager would be able to store a app secret and get "around it" for peer-star apps. Is there any other way to circumvent this? |
@satazor Yeah, that is a current limitation. Future versions of the connect library will improve upon this, but it isn't a trivial problem to solve, i.e. how do you know that the app is the app it claims to be. |
Indeed, it's a difficult problem to solve. You could somehow use a similar approach to the one we are doing by using the I would need to think about it for a bit, but indeed it's a hard problem to solve. |
@oed and @satazor thank you for your comments! This is turning into a really insightful discussion 🚀
Maybe I'm misunderstanding the problem... In the case of p2p applications such as peer-pad, there isn't so much the concept of speaking to an app, it's more the concept of speaking to a group of nodes who are running the same app as you. Then, there may be two forms of checking peers' authorization to participate in the application:
Maybe @pgte can offer further insights on this issue. 😄 |
@joaosantos15 The problem we are trying to solve would be something like: Should I (uport mobile app, that controlls the master key) allow this dapp to act on my behalf? i.e. should I allow it to add a key to my DID. I don't want to allow fraudulent dapps to add keys to my DID. |
@joaosantos15 The app, being programatic, can take your information and do stuff with it, like storing it publicly and sell your data. Users have to be sure that the information they are disclosing will be delivered to the app they are "seeing". This is tricky to do when the master key doesn't live in the same environment as the app, which is the case in which your master key is stored on your mobile app and you are authenticating in a web browser on your laptop. @oed The solution I see that would work would be:
Note that this is a very rough description of the flow, let me know if you would like a more detailed explanation. Do you see any issues with this approach? |
@satazor That's basically the exact same flow as we have discussed internally in uport check here for reference.
|
@oed I really love this geeky discussion! Correct if I'm wrong but:
This would be done via PS: I don't have access to https://github.com/uport-project/streams/issues/6 |
@oed @satazor thank you for the clarification.
|
@satazor :):):)
What do you mean by |
@oed Nvm, I read again what you said and I now understand the point you are making. You are absolutely right. I've been thinking about this and I found a way that (hopefully) is secure, even if the browser is fake or somehow has code injected in any page. I've made a (draft) diagram which explains the strategy, but essentially is a similar flow but with a 2-factor code. Note that the iframe becomes unnecessary. (sorry for the reflections coming from the windows) After X wrong attempts to provide the 2-factor code, the attempt expires. This makes it unnecessary to rotate the code each minute. Moreover, the attempt automatically expires after 30m or so or after it was accepted/denied. The addition of the 2-factor code prevents automated processes that can be faked and the user can reliably compare the request origin with the website he is trying to login. This new flow will only be necessary for p2p applications, where the app secret can't be stored in a secure backend (because there's no backend). Thoughts? PS: If you can't understand the diagram I can spend some time doing it digitally. |
Bump |
Hey @satazor, sorry I haven't had time to get to this yet. I'll try to read through and respond to your msg in the next couple of days! |
Sorry for taking so long to respond! |
@oed correct. We can indeed simplify by warning the user. If the authentication started without the secret, the user is prompted to check the urls before authorizing. 👍 |
To summarize:
Thanks for all this discussion so far. I know that uport is already working on the new DID method integration. The optional secret would be really awesome to have as well so that uport plays nicely with p2p apps. |
Hello,
Myself, @satazor, @pgte and @diasdavid have been working on an identity management application, called Peer-Star-Identity, in the context of Peer-Star (a community developing applications around IPFS).
In recent times, a lot of DID specs have appeared, uPort being one of them. We are focusing on developing an ecosystem which allows any application (centralized or p2p) to seamlessly work with any DID method. It would also allow users to store their identities across multiple devices.
Our problem statement is defined at #16 and an RFC for the identity manager is being discussed at #15.
We would appreciate your feedback, particularly on the issues raised by the problem statement, as you have probably already thought about some of them.
Thank you!
The text was updated successfully, but these errors were encountered: