Jump to content

Tox (protocol)

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Hut 8.5 (talk | contribs) at 19:21, 14 July 2020 (Clients: please cite a reliable source for this statement per WP:V, random GitHub posts are not reliable). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Tox
Stable release
0.2.12 / 1 May 2020; 4 years ago (2020-05-01)[1]
Repository
Written inC
Operating systemWindows, Linux, OS X, Android, iOS, FreeBSD, OpenIndiana, Sailfish OS
TypeVoIP, Instant messaging, Videoconferencing
LicenseGNU General Public License, version 3 or later
Websitetox.chat Edit this on Wikidata

Tox is a peer-to-peer instant-messaging and video-calling protocol that offers end-to-end encryption. The stated goal of the project is to provide secure yet easily accessible communication for everyone.[2] A reference implementation of the protocol is published as free and open-source software under the terms of the GNU General Public License (GPL) version 3 or later.

History

The initial commit to GitHub was pushed on June 23, 2013, by a user named irungentoo.[3] Pre-alpha testing binaries were made available for users from February 3, 2014, onwards, and nightly builds of Tox are published by the Jenkins Automatron.[4] On July 12, 2014, Tox entered an alpha stage in development and a redesigned download page was created for the occasion.

Features

Encryption of traffic

Users are assigned a public and private key, and they connect to each other directly in a fully distributed, peer-to-peer network. Users have the ability to message friends, join chat rooms with friends or strangers, voice/video chat, and send each other files. All traffic over Tox is end-to-end encrypted using the NaCl library, which provides authenticated encryption and perfect forward secrecy.

Revealing of IP address to friends

Tox makes no attempt to cloak your IP address when communicating with friends, as the whole point of a peer-to-peer network is to connect you directly to your friends. A workaround does exist in the form of tunneling your Tox connections through Tor. However, a non-friend user cannot easily discover your IP address using only a Tox ID; you reveal your IP address to someone only when you add them to your contacts list.[5]

Additional messaging features

Tox clients aim to provide support for various secure and anonymised communication features; while every client supports messaging, additional features like group messaging, voice and video calling, voice and video conferencing, typing indicators, message read-receipts, file sharing, profile encryption, and desktop streaming are supported to various degrees by mobile and desktop clients. Additional features can be implemented by any client as long as they are supported by the core protocol. Features that are not related to the core networking system are left up to the client. Client developers are strongly encouraged to adhere to the Tox Client Standard[6] in order to maintain cross-client compatibility and uphold best security practices.

Usability as an instant messenger

Screenshot of the qTox messenger, which uses the Tox protocol, a message has been sent by "Joeri" while the receiving party is offline, the client shows the user that the message is still in transit, when in reality the qTox client is waiting for the receiver of the message to come back online

Though several apps that use the Tox protocol seem similar in function to regular instant messaging apps, the lack of central servers currently has the consequence that both parties of the chat need to be online for the message to be sent and received. The Tox enabled messengers deal with this in separate ways, some prevent the user from sending the message if the other party has disconnected while others show the message as being sent when in reality it is stored in the sender's phone waiting to be delivered when the receiving party reconnects to the network.[7]

Architecture

Core

The Tox core is a library establishing the protocol and API. User front-ends, or clients, are built on the top of the core. Anyone can create a client utilizing the core. Technical documents describing the design of the Core, written by the core developer irungentoo, are available publicly.[8]

Protocol

The core of Tox is an implementation of the Tox protocol, an example of the application layer of the OSI model and arguably the presentation layer. Implementations of the Tox protocol not done by the project exist.[9][failed verification]

Tox uses the Opus audio format for audio streaming and the VP8 video compression format for video streaming.

Encryption

Tox uses the cryptographic primitives present in the NaCl crypto library, via libsodium. Specifically, Tox employs Curve25519 for its key exchanges, xsalsa20 for symmetric encryption, and Poly1305 for MACs.[10] Because the tox protocol can be used by many different applications, and because the tox network broadcasts the used client, it is also possible for clients to use additional encryption when sending to clients which support the same features.

Clients

A client is a program that uses the Tox core library to communicate with other users of the Tox protocol. Various clients are available for a wide range of systems; the following list is incomplete.[11]

Name Operating system Written in Development status & comments
Antidote[12] iOS Swift Abandoned (see project's GitHub page)
Antox[13] Android Scala, Java Abandoned, last update in December 2017
Cyanide[14] Sailfish OS C++ Abandoned,[15] last update in Jan 2017
gTox[16] Linux C++ (GTK+ 3) Abandoned (see project's GitHub page)
qTox[17] Linux, FreeBSD, OS X, Windows C++ (Qt) Active
TOK[18] iOS, Android Java, Swift, Objective-C Active
Toxic[19] Linux, FreeBSD, OpenBSD, DragonflyBSD, NetBSD, Solaris, OS X C (Ncurses) Active
Toxy[20] Windows C# (WPF) Unmaintained (see project's GitHub[21] page)
Toxygen[22] Linux, Windows Python (Qt via PySide) Active
TRIfA[23] Android C, Java Active
µTox[24] Linux, FreeBSD, OS X, Windows C Active
xWinTox[25] Linux, FreeBSD, Solaris C/C++ (FLTK) Abandoned,[26] last update in Dec 2015
Isotoxin[27] Windows C++ Active
ratox [28] Linux, BSD, OS X C Active[29]
WebTox[30] Web-based HTML5 (client) + Go (server) Abandoned,[31] last update in Jan 2016

There are also Tox protocol plugins for Pidgin[32] (no longer maintained, but working as of 2018-03-30) and Miranda NG.[33]

Disassociation with Tox Foundation

At July 11, 2015, Tox developers officially announced their disassociation with Tox Foundation, due to "a dispute over the misuse of donated funds" by Tox Foundation head and CEO, according to LWN.net.[34] Due to domains being in control of the Tox Foundation, main development of the project was transferred to a new infrastructure, servers, and new domain.

Reception

Tox received some significant publicity in its early conceptual stage, catching the attention of global online tech news sites.[35][36][37][38] On August 15, 2013, Tox was number five on GitHub's top trending list.[39] Concerns about metadata leaks were raised, and developers responded by implementing Onion routing for the friend-finding process.[40] Tox was accepted into the Google Summer of Code as a Mentoring Organization in 2014 and 2015.[41][42]

See also

References

  1. ^ GitHub - TokTok/c-toxcore: The future of online communications., TokTok Project, 2020-05-01, retrieved 2020-05-01
  2. ^ "Secure Messaging for Everyone". Tox. Retrieved 6 August 2015.
  3. ^ "Initial commit". GitHub. Retrieved 18 February 2014.
  4. ^ "Jenkins Tox Packages". Retrieved 7 November 2015.
  5. ^ "Does Tox leak my IP address?".
  6. ^ "Tox Client Standard". Retrieved 7 November 2015.
  7. ^ "users:troubleshooting - Tox Wiki". wiki.tox.chat. Retrieved 2019-04-26.
  8. ^ "Toxcore Documentation". GitHub. Retrieved 7 November 2015.
  9. ^ "Xot". GitHub. Retrieved 6 May 2014.
  10. ^ "A New Kind of Instant Messaging". Project Tox. Retrieved 2017-02-15.
  11. ^ "Client". Tox. Retrieved 6 August 2015.
  12. ^ "Antidote". Retrieved 6 August 2015.
  13. ^ "Antox". Tox-Wiki. Retrieved 6 August 2015.
  14. ^ "Cyanide". Github. Retrieved 3 January 2016.
  15. ^ "Last ctommit in Cyanide's repo". GitHub. Retrieved 12 April 2018.
  16. ^ "gTox". Github. Retrieved 7 November 2015.
  17. ^ "qTox". Tox-Wiki. Retrieved 6 August 2015.
  18. ^ "TOK". Retrieved 30 March 2019.[self-published source]
  19. ^ "Toxic". Tox-Wiki. Retrieved 6 August 2015.
  20. ^ "Toxy". Tox-Wiki. Retrieved 6 August 2015.
  21. ^ "Toxy repo". GitHub. Retrieved 12 April 2018.
  22. ^ "Toxygen". wiki.tox.chat. Retrieved 2016-07-01.
  23. ^ "TRIfA". Github. Retrieved 11 May 2018.
  24. ^ "µTox". Tox-Wiki. Retrieved 7 November 2015.
  25. ^ "xWinTox". Tox-Wiki. Retrieved 7 November 2015.
  26. ^ "Last commit in xWinTox repo". GitHub. Retrieved 12 April 2018.
  27. ^ "Isotoxin". Tox-Wiki. Retrieved 21 July 2017.
  28. ^ "ratox". 2f30. Retrieved 26 July 2018.
  29. ^ "Last commit in ratox repo". GitHub. Retrieved 26 July 2018.
  30. ^ "WebTox". GitHub. Retrieved 6 September 2017.
  31. ^ "Last commit in WebTox repo". GitHub. Retrieved 12 April 2018.
  32. ^ "tox-prpl – Tox Protocol Plugin For Pidgin". Retrieved 30 March 2018.
  33. ^ "Tox protocol". Miranda NG Official Community Forum. watcher. Retrieved 17 September 2015.
  34. ^ "A split within the Tox project". LWN.net. Nathan Willis. 15 July 2015. Retrieved 14 February 2016.
  35. ^ Kar, Saroj (5 August 2013). "Tox: A Replacement For Skype And Your Privacy?". Silicon Angle. Retrieved 19 February 2014.
  36. ^ Grüner, Sebastian (30 July 2013). "Skype-Alternative Freier und sicherer Videochat mit Tox" [More free and secure video chat with Tox]. Golem.de (in German). Retrieved 19 February 2014.
  37. ^ "Проект Tox развивает свободную альтернативу Skype" [Tox project develops free Skype replacement]. opennet.ru (in Russian). 30 July 2013. Retrieved 19 February 2014.
  38. ^ Nitschke, Manuel (2 August 2013). "Skype-Alternative Tox zum Ausprobieren" [Tox Skype replacement tested]. heise.de (in German). Retrieved 19 February 2014.
  39. ^ Asay, Matt (15 August 2013). "GitHub's new 'Trending' Feature Lets You See The Future". ReadWrite.com. Retrieved 19 February 2014.
  40. ^ "Prevent_Tracking.txt". GitHub. Retrieved 20 February 2014.
  41. ^ "Project Tox". GSoC 2014. Retrieved 7 March 2015.
  42. ^ "Project Tox". GSoC 2015. Retrieved 7 March 2015.