IssueRaiser

Use decentralized discovery (DHT)

It's probably time to investigate decentralizing discovery. Doing so would reduce our infrastructure burden and reduce centralized knowledge of the network. In a DHT we want to be able to look up the contact details for a given device ID. We want to publish our own contact details into the DHT. We don't necessarily want to make it simple for a passive observer to map the entire network, so it would be nice if the contact details were encrypted. --- I suggest that we could use a key-value database laid out like: Key: SHA256(device ID) Value: The contact details, in protobuf format, encrypted using the device ID as a shared secret. Given that I know the device ID I'm looking for, I can then hash it and look it up, and decrypt the answer. For other nodes in the network, the data is mostly gibberish as you need to know the device ID it represents to be able to interpret it and reversing the SHA256(device ID) to an actual device ID is not feasible. As far as an actual implementation goes I've surveyed the Go ecosystem to try to find a suitable DHT package. So far I've not really succeeded. Here are the ones I've looked at and some notes on them; it would be lovely if someone did find or develop a good package for this. - https://github.com/nictuku/dht seems to be the best candidate, but a partial implementation - only supports looking up nodes for an "info hash", not storing or retrieving actual values? maybe could be built upon - https://github.com/fastfn/dendrite looks lik

Posted by calmh on Jul 5, 2016, 7:06 AM

Tags

Related issues

Raise real-world problems, find people facing the same issue, and discuss solutions.5,000 issues0 comments

github (Network)

Use decentralized discovery (DHT)

calmhJul 5, 2016, 7:06 AM

It's probably time to investigate decentralizing discovery. Doing so would reduce our infrastructure burden and reduce centralized knowledge of the network. In a DHT we want to be able to look up the contact details for a given device ID. We want to publish our own contact details into the DHT. We don't necessarily want to make it simple for a passive observer to map the entire network, so it would be nice if the contact details were encrypted. --- I suggest that we could use a key-value database laid out like: Key: SHA256(device ID) Value: The contact details, in protobuf format, encrypted using the device ID as a shared secret. Given that I know the device ID I'm looking for, I can then hash it and look it up, and decrypt the answer. For other nodes in the network, the data is mostly gibberish as you need to know the device ID it represents to be able to interpret it and reversing the SHA256(device ID) to an actual device ID is not feasible. As far as an actual implementation goes I've surveyed the Go ecosystem to try to find a suitable DHT package. So far I've not really succeeded. Here are the ones I've looked at and some notes on them; it would be lovely if someone did find or develop a good package for this. - https://github.com/nictuku/dht seems to be the best candidate, but a partial implementation - only supports looking up nodes for an "info hash", not storing or retrieving actual values? maybe could be built upon - https://github.com/fastfn/dendrite looks lik

Comments (0)

No comments yet. Start the discussion.

Comment on this issue