-
Notifications
You must be signed in to change notification settings - Fork 30
Capability Service #274
Comments
@Stebalien - why would you do capabilities on a Peer based level? Once I go up to the Application layer, my access isn't based on which computer I'm on, it should be based on me, i.e. based on my possession of a keypair ? The semantics should be something like ....
Where accesscode is whatever you might need to then access the resource. This is effectively what we do with our ACLs . |
I'm trying to abstract away the underlying protocol for deciding access (not restrict it to any particular crypto/authentication system). Really, I'm just borrowing the architecture you'd find in a microkernel (think of peer IDs as process IDs). In the system you're describing, I assume that The system I'm describing would work as follows:
There are two important features here:
Example capabilities:
Note: We'd still need a separate service for non-interactive crypto (e.g., decrypting, signing, verifying, etc.) but that's a separate issue. |
But your big problem is that you don't have a "Server S" in a decentralized systems. The content is distributed, everything has to be the interaction between client C and data. |
I use server and client to denote the peer serving the request and the peer making the request. It's still peer to peer.
Yes, simply encrypting the data is an alternative in some cases, but it's not always the right solution (there are a bunch of performance, security, complexity, and flexibility considerations).
For example, syncthing uses authentication, not encryption, to determine which peers should have which permissions on which shares.
|
Yes - but the peer serving the request can't do anything the peer making the request can't. So the "server" can't make a decision independently and then decide to give something to the client. Its the wrong model, the model is interaction with information, i..e the encryption of the resource and any associated documents is what decides whether or not you can access it. |
This came up in both #270 and #236.
Instead of implementing authentication in every protocol, it would be nice to have a simple service that negotiates capabilities out of band. At its core, this service would provide the simple interface:
Other services could simply check capabilities by calling
capService.Hash(peer, cap)
. The actual capability service would be responsible for determining if the peer has the capability (out of band).@diasdavid IIRC, you were working on this. However, I can't find any relevant issues.
The text was updated successfully, but these errors were encountered: