Skip to content
This repository has been archived by the owner on Apr 29, 2020. It is now read-only.

Open Problem: Preserve full users' privacy when providing and fetching Content #5

Merged
merged 29 commits into from
Oct 21, 2019
Merged
Changes from 4 commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
0ae6c03
Create PRESERVE_USER_PRIVACY.md
daviddias Sep 10, 2019
da6fa29
Update PRESERVE_USER_PRIVACY.md
daviddias Sep 10, 2019
6a5c7df
Update PRESERVE_USER_PRIVACY.md
daviddias Sep 11, 2019
11900e3
Update PRESERVE_USER_PRIVACY.md
daviddias Sep 11, 2019
1742eb1
Update PRESERVE_USER_PRIVACY.md
daviddias Sep 11, 2019
f556ca0
Update OPEN_PROBLEMS/PRESERVE_USER_PRIVACY.md
daviddias Sep 12, 2019
3772447
Update OPEN_PROBLEMS/PRESERVE_USER_PRIVACY.md
daviddias Sep 12, 2019
c05467b
Update OPEN_PROBLEMS/PRESERVE_USER_PRIVACY.md
daviddias Sep 12, 2019
f6f69c4
Update OPEN_PROBLEMS/PRESERVE_USER_PRIVACY.md
daviddias Sep 12, 2019
e33b9c7
Update OPEN_PROBLEMS/PRESERVE_USER_PRIVACY.md
daviddias Sep 12, 2019
3fbe561
Update OPEN_PROBLEMS/PRESERVE_USER_PRIVACY.md
daviddias Sep 12, 2019
dbc6882
Update OPEN_PROBLEMS/PRESERVE_USER_PRIVACY.md
daviddias Sep 12, 2019
ac31e22
Update OPEN_PROBLEMS/PRESERVE_USER_PRIVACY.md
daviddias Sep 12, 2019
a9eab40
Update OPEN_PROBLEMS/PRESERVE_USER_PRIVACY.md
daviddias Sep 12, 2019
df2e8f3
Update PRESERVE_USER_PRIVACY.md
daviddias Sep 12, 2019
e8bf0e5
Update PRESERVE_USER_PRIVACY.md
daviddias Sep 18, 2019
38b8f89
Update OPEN_PROBLEMS/PRESERVE_USER_PRIVACY.md
daviddias Sep 18, 2019
5bef461
Update OPEN_PROBLEMS/PRESERVE_USER_PRIVACY.md
daviddias Sep 18, 2019
35f2ed7
Update OPEN_PROBLEMS/PRESERVE_USER_PRIVACY.md
daviddias Sep 18, 2019
b9d960d
Update OPEN_PROBLEMS/PRESERVE_USER_PRIVACY.md
daviddias Sep 18, 2019
490f404
Update PRESERVE_USER_PRIVACY.md
daviddias Sep 18, 2019
79ac089
Update OPEN_PROBLEMS/PRESERVE_USER_PRIVACY.md
daviddias Sep 18, 2019
6cf3036
Update OPEN_PROBLEMS/PRESERVE_USER_PRIVACY.md
daviddias Sep 18, 2019
7137622
Preserve users privacy (#10)
yiannisbot Sep 26, 2019
399fe13
Update OPEN_PROBLEMS/PRESERVE_USER_PRIVACY.md
daviddias Sep 26, 2019
1414390
Update OPEN_PROBLEMS/PRESERVE_USER_PRIVACY.md
daviddias Sep 26, 2019
e42a20e
Update PRESERVE_USER_PRIVACY.md
daviddias Oct 21, 2019
b070a22
Update PRESERVE_USER_PRIVACY.md
daviddias Oct 21, 2019
e0a8fc3
Update PRESERVE_USER_PRIVACY.md
daviddias Oct 21, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
110 changes: 110 additions & 0 deletions OPEN_PROBLEMS/PRESERVE_USER_PRIVACY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
# Preseve full users' privacy when providing and fetching Content
daviddias marked this conversation as resolved.
Show resolved Hide resolved

## Description

The Web 2.0 and its centralized infrastructure missed to deliver full users' privacy when these are accessing and delivering content to other users in the Network. This can happen in one of two ways, either by simply transfering/storing the data uncrypted or by pattern analysis of access which can reveal users interest and intent.
daviddias marked this conversation as resolved.
Show resolved Hide resolved

In the Web 3.0, the dWeb, users get the ability to share data with other peers without using an intermediary, however, a complete solution is still missing that can prevent users leaking what data they are serving and fetching through sidechannels/pattern analysis (e.g. When searches are made, either through a search engine or simply by searching for the blocks in a Distributed Hash Table).
daviddias marked this conversation as resolved.
Show resolved Hide resolved

Some solutions exist to mitigate this problem (see the State of the Art section below), however, non is yet complete as in "it is always 100% private, period", requiring users to adapt and adopt certain strategies to annonymize the content, depending on the type of interaction they have with other users. This Open Problem is beyond a data encryption or wire encryption problem, a complete solution will have to provide a way to give access to others to access data and later revoke (Authorization), provide a users with the ability to know when a piece of data they have share is being accessed (Accounting) and offer a guarantee that the data is being shared with exactly the right user and no one else (Authentication), this while not letting a third party understand what is being shared, how and with whom.
daviddias marked this conversation as resolved.
Show resolved Hide resolved

This happens to be one of the toughest problems to solve in order to provide a complete and human rights preserving fabric for knowledge.

daviddias marked this conversation as resolved.
Show resolved Hide resolved
## State of the Art

> This survey on the State of the Art is not by any means complete, however, it should provide a good entry point to learn what are the existing work. If you have something that is fundamentally missing, please consider submitting a PR to augment this survey.

### Within the IPFS Ecosystem
> Existing attempts and strategies

##### Wire Encryption

Thanks to libp2p, IPFS ensures that the communication between any two IPFS nodes is always encrypted. This is achieved through one of the many Crypto Channels that libp2p supports such as: SECIO, TLS 1.3, DTLS (in WebRTC) and NOISE.

##### Data Encryption

Data Encryption means that we encrypt data at rest and only decrypted to consume it. This means that only the owner of the decryption key can access it. Some solutions with this technique are:
daviddias marked this conversation as resolved.
Show resolved Hide resolved

- [ipfs-senc](https://github.com/jbenet/ipfs-senc) - Encrypts the data with a symetrical key that is shared to the receiver through a sidechannel
daviddias marked this conversation as resolved.
Show resolved Hide resolved

##### Capability Systems / Cryptographic ACLs

- [peer-base cryptographic ACLs](https://github.com/peer-base/peer-base) - These are used by [PeerPad](https://peerpad.net). The way they work is that for each user, a Pub/Priv key pair is generated and every time a user wants to make a modification, signs that modification and then encrypts it with a symmetric room key, so that only owners of the symmetric key can change and only changes from valid peers are accepted.
daviddias marked this conversation as resolved.
Show resolved Hide resolved

##### Private/Disjoint Networks

Creating a separate IPFS Network will ensure that only the nodes can access the content within that network.
daviddias marked this conversation as resolved.
Show resolved Hide resolved

daviddias marked this conversation as resolved.
Show resolved Hide resolved
- [libp2p-pnet](https://github.com/libp2p/specs/blob/master/pnet/Private-Networks-PSK-V1.md) takes that one step forward and creates a protection using a pre-shared key. This means that only the owners of that key can join this network (to prevent from mistakenly joining two networks and making all data accessible).
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jacobheun I'm a terrible person and somehow I forgot to add the url when you sent it to me and now I can't find it again :( Could you send it to me again 🙏🏽 thank you!

daviddias marked this conversation as resolved.
Show resolved Hide resolved

##### Onion Routing

Onion routing is a technique for anonymous communication over a computer network. In an onion network, messages are encapsulated in layers of encryption, analogous to layers of an onion. The encrypted data is transmitted through a series of network nodes called onion routers, each of which "peels" away a single layer, uncovering the data's next destination.

- [libp2p-onion](https://github.com/OpenBazaar/go-onion-transport)

daviddias marked this conversation as resolved.
Show resolved Hide resolved
### Within the broad Research Ecosystem
daviddias marked this conversation as resolved.
Show resolved Hide resolved
> How do people try to solve this problem?

- [TahoeLAFS Capability System](https://en.wikipedia.org/wiki/Tahoe-LAFS) - The peer-base Cryptographic ACLs were inspired by TahoeLAFS Capabolity System.
- [DoubleRatchet](https://signal.org/docs/specifications/doubleratchet/) / [Matrix.org Olm/MegaOLM](https://gitlab.matrix.org/matrix-org/olm/blob/master/docs/olm.md#olm-a-cryptographic-ratchet)
- [Using Sphinx to Improve Onion RoutingCircuit Construction](https://www.cypherpunks.ca/~iang/pubs/SphinxOR.pdf)
- [Scuttlebutt Secret Handshare](https://dominictarr.github.io/secret-handshake-paper/shs.pdf)
- [Octopus: A Secure and Anonymous DHT Lookup](https://ieeexplore.ieee.org/document/6258005)
- [Vuvuzela: Scalable Private Messaging Resistant to Traffic Analysis](https://davidlazar.org/papers/vuvuzela.pdf)
- [Define privacy threat model for DHTs (and other overlay P2P networks)](https://github.com/gpestana/notes/issues/3)
- [Talek: a Private Publish-Subscribe Protocol](https://raymondcheng.net/download/papers/talek-tr.pdf)
- [SoK: Secure Messaging](https://ieeexplore.ieee.org/document/7163029)
- [Ricochet](https://github.com/ricochet-im/ricochet/blob/master/doc/protocol.md)
- [Cwtch: Privacy Preserving Infrastructure for Asynchronous,Decentralized, Multi-Party and Metadata Resistant Applications](https://cwtch.im/cwtch.pdf)
- [HOPR - privacy-preserving messaging protocol ](https://github.com/validitylabs/hopr)

daviddias marked this conversation as resolved.
Show resolved Hide resolved
### Known shortcommins of existing solutions
> What are the limitations on those solutions?

Some of the known shortcommings of existing solutions are:

- They don't offer protection to network analysis (it is possible to infer what the user is doing by analysis the network traffic)
daviddias marked this conversation as resolved.
Show resolved Hide resolved
- Solutions that are more resistant (not fully resistent) typically trade off bandwidth + memory for creating that protection (e.g. creating noise in the network to make it hard to distinguish valid from dummy traffic)
- Lack of data encryption at rest
- Lack of complete authorization + revocation

Copy link

@gpestana gpestana Sep 18, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Some of the solutions (e.g. OctopusDHT) rely on centralised certificate authorities for reputation management

  • How to measure privacy? (old but gold)

## Solving this Open Problem
> What are the hard constraints for a complete solution.

Valid solutions should improve the current state of the art or offer definitive solutions for:

- [ ] Two users can transfer a piece of information that no other user knows or can guess: what it is, why it is being transfer, between whom and when.
daviddias marked this conversation as resolved.
Show resolved Hide resolved
- [ ] No single central authorities are required to mediate the communication
daviddias marked this conversation as resolved.
Show resolved Hide resolved
- [ ] A provider has a way to grant and revoke access to information.

daviddias marked this conversation as resolved.
Show resolved Hide resolved
As additional constraints

- [ ] Mechanism to prevent data exfiltration (e.g. when a user goes rogue)

### What is the impact

Finding a complete solution to this Open Problem will grant the ability for any human in the planet to privately share information, read content without leaking their intent to anyone else other than the provider of that content, or even possibly, not even to the provider.

It will lead to a generation of safer applications, both consumer level and business critical, that require full control of one's data (e.g. Health Data).

### What defines a complete solution?
> What hard constraints should it obey? Are there additional soft constraints that a solution would ideally obey?

## Other

### Existing Conversations/Threads

- [Censorship resistance on IPFS](https://github.com/ipfs/notes/issues/281)
- [Content Encryption](https://github.com/ipfs/notes/issues/270)
- [Shared Secret constructions for Private Networks](https://github.com/ipfs/notes/issues/177)
- [Search over encrypted data](https://github.com/ipfs/notes/issues/128)
- [Plausible deniability for blocks](https://github.com/ipfs/notes/issues/21)
- [Alternative BitSwap strategies](https://github.com/ipfs/notes/issues/20)
- [Anonymous IPFS](https://github.com/ipfs/go-ipfs/issues/6430)
- [Privacy preserving DHTs](https://github.com/gpestana/notes/issues/8)
- [DHT improvement ideas](https://github.com/libp2p/research-dht/issues/6)
- [Tor onion integration](https://github.com/ipfs/notes/issues/37)
- [Identity RFC](https://github.com/ipfs-shipyard/peer-star/pull/15)

### Extra notes