Please note the warning.
Tox provides an encrypted, distributed, and extensible peer-to-peer platform that can be used for various forms of communication. We intend Tox to be used as a multimedia messenger, but many people have shown us that Tox can be used for a lot more than just instant messaging. For the sake of simplicity, the rest of this page will explain how Tox operates as its intended use.
Tox users are connected by a modified version of DHT, and bootstrap nodes are used to assist connections to the pool. The hash table consists of each Tox ID and an encrypted entry of each users' IP, which is only readable when a friend request is made with a proper Tox ID, including the nospam. When a user friends another user, their IPs are exchanged in order to facilitate a direct connection. Once a handshake occurs, a connection is established, and users converse through a crypto stream.
It consists of a core, and a number of clients. Go here for more information about the advantages of NaCl, libsodium, and peer-reviewed cryptographic primitives.
Tox is just the core, the part of the program which handles the messages and encryption, for instance. But it can only function in the context of a complete instant messaging program. All the fancy user interfaces you see all over the place, are the clients. The client is a separate program which utilizes the core, providing a convenient way to use the program. So when you use Tox, you are in fact using one of the clients. The most clients are graphical clients, in other words, you will make use of all kinds of graphical elements which are part of the client. You usually won't get to see the core (unless you look into the source on GitHub). There are various clients available which each have a different name, are independent from each-other, in various programming languages.
For example, file sharing and A/V (audio and video) are handled by the core, but the (for example!) pop-ups, per-person volume sliding bars, friends list etc, buttons etc. are all handled by the client.
No. That said, in some situations a client will choose to use central node to jump onto the distributed network.
Encryption makes it impossible for anyone who is not the sender or recipient of a message to know content of message. All Tox communications (text, audio, video, file transfers, etc) are encrypted. That includes perfect forward secrecy, so all other Tox sessions (including those with the same friend) are safe in the case that someone manages to decrypt one session. This is not negotiable; it is the only mode Tox will operate in.
Thanks to public key cryptography, it is also impossible to pretend to be another Tox user, unless you were to steal that user's private key.
Tox uses the encryption algorithms present in the NaCl crypto library, via libsodium
“<irungentoo> (…) curve25519 for the key exchange, xsalsa20 for the encryption and poly1305 for the MAC”
More info: https://github.com/irungentoo/toxcore/blob/master/docs/updates/Crypto.md
The encryption used in Tox not only provides same features as OTR, but is also the default, and only operation mode of Tox.
Yes! See Tox over Tor (ToT).
Check out nodes for an updated list.
Opus for audio and VPX (currently 8) for video.
SIP is not being used.
“<irungentoo> toxcore packets are encrypted with MACed crypto so data will never be corrupted in transit”
It basically means that data won't ever be corrupted when sending between Tox clients.
Tox generates a temporary public/private key pair used to make connections to peers in the DHT. Onion routing is used to store and locate Tox IDs, to make it more difficult to, for example, associate Alice and Bob together by who they are looking for in the network. 1
The core library: https://github.com/TokTok/c-toxcore
Check out the instructions found in INSTALL.md in the root of the toxcore repository.
For more information on the communicating with the Tox community, see community.
For information on troubleshooting known issues in Tox, see troubleshooting.
As an open source project, Tox needs developers first and foremost. Graphic designers are very welcome too. Adventurous users can test and report bugs, translators will be necessary later on to translate stuff, and this wiki could always use another pair of hands! For more information on contributing to Tox, see contributing.