proof of concept code for making secure connections between 2 peers by knowing only each other's public keys. (no servers or IP knowledge involved, featuring NAT penetration).
uses the bittorrent DHT. code is hacky, written for fun.
As opposed to Bleep and Tox, it works right now with no extra protocol or network.
Well BitTorrent's own project Bleep uses the Bittorrent network as well.
Their protocol is more complex however. Their goals are to hide who is talking who, from entities that might just be scraping the DHT. With bluntly, you can tell who is talking to who, by looking at what peers advertised on the rendezvous node.
Because they have control over the bittorrent protocol, they can go ahead and make changes to it that make NAT penetration easier (a 3rd party peer with a public address acts as a facilitator for putting 2 peers behind NAT in contact) or they can allow for arbitrary data to be stored in the DHT.
I do the same in rakoshare (https://github.com/rakoo/rakoshare). Humans exchange a well-known id, from which a rendez-vous id is derived. This rendez-vous id is used for all interested peers to meet and exchange ips and ports.
After that, it's the job of every one to try to connect to the other side. Sadly, if there's a NAT on each side, it's not enough...
That's a good point. You still need those. I don't believe there's any way around it whenever you're using a decentralized network like the DHT, you need to somehow "get into" the network, so you need to know someone from it.
Sure, but there's numerous ways to get DHT peers. Sure there's those 3 bootstrap peers, but there's also trackers that give you peers, peer exchanges, and torrents that point to trackers. Running pretty much any torrent client that has ever been on a torrent before is likely to find you additional DHT peers even if all the bootstrap hosts are down.
Don't forget adding some payment forwarding to enable federation: http://dev.blockcypher.com/#payments. That would also take care of the public key to public key enablement.
It says right at the top of the Readme: "No servers needed, no NAT getting in the way. It's a POC (proof-of-concept) so don't start talking with snowden with this."
So I would go ahead and say no, this isn't ready for production.
It's not production ready, it's quite flaky because of the NAT penetration. it sometimes works, sometimes doesn't. It's a POC, i don't have the bandwidth now to make it robust.It's meant to showcase it's possible.
i coded it a while ago and then though to post it just now. (it actually took longer but i just pushed all code in 1 day)
16 comments
[ 4.3 ms ] story [ 50.5 ms ] threaduses the bittorrent DHT. code is hacky, written for fun.
As opposed to Bleep and Tox, it works right now with no extra protocol or network.
Just out of interest, do you know of any other systems that do that?
Their protocol is more complex however. Their goals are to hide who is talking who, from entities that might just be scraping the DHT. With bluntly, you can tell who is talking to who, by looking at what peers advertised on the rendezvous node.
Because they have control over the bittorrent protocol, they can go ahead and make changes to it that make NAT penetration easier (a 3rd party peer with a public address acts as a facilitator for putting 2 peers behind NAT in contact) or they can allow for arbitrary data to be stored in the DHT.
After that, it's the job of every one to try to connect to the other side. Sadly, if there's a NAT on each side, it's not enough...
It also uses PGP keys to facilitate encryption, authenticity, and a comprehensive web of trust
when you say this you're not talking about bittorrent-dht's bootstrap nodes right[1]?
[1]https://github.com/feross/bittorrent-dht/blob/497d1e08f5bc06...
Now the next step is to implement file transfer and self-hosted web server with social network app and you have decentralized internet :)
So I would go ahead and say no, this isn't ready for production.
i coded it a while ago and then though to post it just now. (it actually took longer but i just pushed all code in 1 day)