TokTok / c-toxcore

The future of online communications.
https://tox.chat
GNU General Public License v3.0
2.21k stars 280 forks source link

General explanation about tox's p2p? #802

Open fabionar opened 6 years ago

fabionar commented 6 years ago

I know it probably one of the most asked questions. But I can't find a detailed, or even a simple explanation.

How the software identifies an user without revealing the IP if the core idea of tox is p2p, and a centralized identification makes tox not p2p at all? Also, some informations about that hash functioning (tox ID) and how it replaces the IP sharing would be great to be at FAQ.

tox-user commented 6 years ago

Your communication is only peer to peer when you talk to your friends. So only your friends can see your IP address. Your client also talks to the DHT, which allows other people to find you and send you friend requests. Here are some explanations: https://tox.chat/faq.html#how-tox-privacy https://tox.chat/faq.html#tox-leak-ip https://tox.chat/faq.html#tox-tracking-dht

SkyzohKey commented 6 years ago

Read more here: http://beta.tox.chat/learn-more / http://beta.tox.chat/support aswell :yum:

SkyzohKey commented 6 years ago

@TokTok/contributors Added this as a Project because we really need to write a better intro text that explains the Tox's philosophy/technical points better. ;)

nurupo commented 6 years ago

tl;dr Tox uses DHT (Distributed Hash Table) for Tox Id --> IP lookups. Every Tox client participates in the DHT. Tox Ids are just random numbers (public keys), nothing ensures their uniqueness but the probability theory. DHT is hardened in a way that only someone you have friended can do this lookup, users that are not in your friend list can't find your IP based on your Tox Id. Once your Toc client gets the IP of a someone that you have friended (and they have accepted your friend request) from the DHT, you can easily connect to them directly, IP to IP, and communicate.

kurnevsky commented 6 years ago

Actually, at the moment there is a way to get IP address knowing only Tox Id, see https://github.com/TokTok/c-toxcore/issues/873

Update: fixed in 0.2.2 version.