gridcoin-community / Gridcoin-Tasks

Gridcoin community tasks repository
https://gridcoin.us
MIT License
24 stars 5 forks source link

An Idea of Gridcoin Bridges #203

Closed RoboticMind closed 5 years ago

RoboticMind commented 6 years ago

Gridcoin Bridges would be a tool that would allow a user to connect to an intermediary node that allows them to connect to the main network in a decentralized manner (excluding the intermediary node). Benefiting the user in terms of anonymity and or if they live in a region where using cryptocurrencies could be dangerous.

First, a user would connect to a bridge. Then, it would use the bridge to make connections to other nodes. The traffic between the bridge and the user would be encrypted so that if some entity tries to use traffic analysis it would yield no result.

To verify that any given bridge is not inserting incorrect data into any of the connections I have a few Ideas: 1) Talk with the same node over other bridges, and ask what the last thing you sent on all the other bridge or ask the same node the same questions over multiple bridges to give validity to the node's response

2) Each node would have a public and private key to encrypt and decrypt all data flow

3) Connect from a bridge to another bridge and verifying some sort of public key/private key system and each bridge in this connection could act as a node. You would know if any given bridge was changing the data. Similar to each node having a public and private key.

There would be a list of bridges handed out in a way similar to Tor Bridges; some very easy to find and public and some that are handed out one at a time very slowly as to not be blocked.

Feedback on this idea would be greatly appreciated!

tomasbrod commented 6 years ago

Feedback: i do not see a point of bridges.

RoboticMind commented 6 years ago

The point is that it allows anyone to connect to the Gridcoin network even if a government or some entity is very heavily monitoring connections and trying to stop people from using cryptocurrencies. It would make it so that they also could be protected by not having their IP shared across the network (which could allow a government/entity to find any person using Gridcoin).

fffffgggg54 commented 6 years ago

Are you suggesting an onion-routed communication system? This could be configured in a file, I suppose, however, any additional features that require setup could potentially confuse newbies. I think this could be looked into, but not given much attention until the kinks with the new blocks, the new mandatory, and the unnecessarily complicated documentation are worked out.

RoboticMind commented 6 years ago

It wouldn't be mandatory to setup, rather it would be an optional system where you can opt-in to use onion routing for the traffic and only communicate with nodes that have an encryption key setup.

tomasbrod commented 6 years ago

Let me break this down:

  1. prevent IP from being shared
    • good idea. I support
  2. connect only to specified nodes
    • already possible
  3. encrypt/conceal traffic
    • who holds the encryption keys
    • how can you make sure that the key you got is not from a Spy?
  4. talking to nodes over bridges
    • just get a VPN or Tor or other proxy

To communicate via a bridge securely, you would either need to trust that bridge or have a means to obtain a list of trusted nodes and their (public)keys. Otherwise the bridge can just redirect you to spy nodes.

To conceal a communication from organized Spies one would have to:

RoboticMind commented 6 years ago

I'm going to clarify what I meant by talking to specific nodes. I meant that you would only talk to nodes/bridges that use encryption.

Also, to make sure no one is confused, the difference between a node that is a bridge and just a regular node:

Bridges relay information more information than regular nodes. Regular nodes can use encryption if it is setup but it is not required. Bridges must use encryption.

As to how you would verify keys: There would be some large list of Gridcoin seed bridges with encryption where the public key would be known. You could then connect to a bunch of bridges through a single bridge and verify their identities. Once you have connected to those seed bridges, you could verify other bridges keys through the seed ones. Checking that all the keys are the same. Finding the other bridges would be similar to regular peer discovery.

diagram 2

As to how to mask the encrypted traffic, you could make it look like https traffic the way tor does with meek: https://github.com/arlolra/meek diagram 1

As to why you wouldn't use Tor or VPN: Tor: Bandwith limitations VPN: Sometimes Bandwith limitations, cost, and being completely blocked in some locations

RoboticMind commented 5 years ago

Looking more into this, there are cryptocurrencies that use TOR and are fine with bandwidth limitations. I think it would be necessary to build this.