Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Authenticate access to IPFS objects #1665

Open
mildred opened this issue Sep 8, 2015 · 3 comments
Open

Authenticate access to IPFS objects #1665

mildred opened this issue Sep 8, 2015 · 3 comments
Labels
need/community-input Needs input from the wider community

Comments

@mildred
Copy link
Contributor

mildred commented Sep 8, 2015

I was thinking last night how it would work if we used IPFS for a private filesystem on a computer, possibly containing private data. The problem I wanted to solve is how to keep a file private when the IPFS protocol implies sharing the file hash with the world in a DHT.

Anyone looking at the DHT would be able to see file hash going around, and they might want to look at them. For example, search engines could do this to index the IPFS Web.

How to make sure that the private key file I stored on my IPFS filesystem will stay private then ? I was thinking of a way to require authentication of an IPFS node before it is allowed to access some objects marked as such.

If we allow arbitrary data to be stored in a node (using IPLD for instance) we could imagine linking any object to an ACL object, which would describe which authentication will be required before a node can grant access to the object. The ACL object will then contain a list of public keys (or link to those) corresponding to allowed nodes.

Now, when a node want to download this specific authenticated object, the owner of that object will first check that the requesting node has the private access corresponding to the public key in the ACL object.

@mildred mildred added the need/community-input Needs input from the wider community label Sep 8, 2015
@jbenet
Copy link
Member

jbenet commented Sep 14, 2015

(this is more a discussion for ipfs/notes)

look into capabilities, and how its done in other FSes. notably, E-rights, Tahoe-LAFS have done tons of work on this. we'll want to follow a similar model.

also worth looking at information flow control generally. i should ask dm what he thinks these days.

In any case, ACLs are a mess to deal with, update, manage, etc, whereas capabilities have been proven to be a much more expressive model, and also a cleaner one. (it's basically all around better, it just didnt get researched before unix was widespread).

How to make sure that the private key file I stored on my IPFS filesystem will stay private then ? I was thinking of a way to require authentication of an IPFS node before it is allowed to access some objects marked as such.

@whyrusleeping and i are working on this now.

@whyrusleeping favors an approach with two separate blockstores in the node. it's easier now so what's what we're pushing for. I favor an approach that uses a "colored graph" (i.e. you color objects to share or to keep private) with one blockstore. this is cleaner, but may be harder to get right at the moment. see #1538

@phoniks
Copy link

phoniks commented Dec 23, 2018

Where does this issue stand these days?

@Stebalien
Copy link
Member

We've talked about this a bit but haven't settled on an approach. There are a bunch of issues around how to "color" blocks and how to deal with information side channels.

For example, let's say that I have a file F covered (colored) by ACL A. Now, I fetch a directory D covered by some other ACL B where D includes F. Ideally, I wouldn't re-download F because I already have it. However, I need some proof that the author of B has F. Otherwise, they could create ACL B and directory D to trick me into giving them access to file F.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
need/community-input Needs input from the wider community
Projects
None yet
Development

No branches or pull requests

4 participants