Tox (プロトコル)

Toxは、エンドツーエンド暗号化を提供するP2Pのインスタントメッセージとテレビ電話のプロトコルである。全ての人に安全で簡単に接続できるコミュニケーションを提供することを目的としている。リファレンス実装はGNU GPL v3+の下で配布されている。
歴史.
GitHubへの最初のコミットは、2013年6月23日に"irungentoo"というユーザーによって行われた。2014年2月3日以降、プレアルファ版のテストバイナリをユーザーが利用できるようになり、ToxのナイトリービルドがJenkinsによって公開されるようになった。同年7月12日、Toxの開発はアルファ段階に入り、このことのために再設計されたダウンロードページが作成された。
特徴.
ユーザーには公開鍵と秘密鍵が割り当てられ、完全に分散されたP2Pネットワークによって互いに直接接続する。ユーザーは友達にメッセージを送ること・友達や見知らぬ人とチャットルームに参加すること・音声と動画によるチャット・互いにファイルを送信することができる。Tox上の全てのやり取りは、NaClによってエンドツーエンド暗号化されており、認証付き暗号と完全な前方秘匿性を提供する。
Toxクライアントは安全で匿名性のある様々な通信機能をサポートすることを目的としている。全てのクライアントがインスタントメッセージをサポートしており、・VoIP・ビデオ会議・タイピングインジケーター・メッセージの既読確認・ファイル共有・プロファイルの暗号化・などの追加機能は、クライアントによってサポートの度合いは異なる。追加機能はコアプロトコルがサポートしている限りは、どのクライアントでも実装することができる。コアネットワークシステムに関連しない機能についてはクライアントに任されている。クライアントの開発者は、クライアントの互換性と最良のセキュリティを維持するために、Tox-Client-Standardに従うことが強く推奨されている。
アーキテクチャ.
コア.
ToxコアはプロトコルとAPIを確立するためのライブラリである。ユーザーにとってのフロントエンドであるクライアントは、コアの上に構築されている。コアを利用することで誰でもクライアントを作成することができる。主要開発者である"irungentoo"によって書かれたコアの設計に関する技術文書はMITライセンスの下で公開されており、自由に利用することができる。
プロトコル.
Toxの中核となるものはToxプロトコルの実装である。このプロトコルはOSI参照モデルのアプリケーション層の一例であり、恐らくプレゼンテーション層でもある。Toxプロジェクト以外によって作成されたToxプロトコルの実装も存在する。
Toxプロトコルは音声のストリーミングにはOpusを、動画のストリーミングにはVP8を使用する。
暗号化.
Toxはcodice_1を介してNaClに組み込まれている暗号化方式を使用する。具体的には、鍵交換にはCurve25519を、共通鍵暗号にはXSalsa20を、メッセージ認証符号にはPoly1305を採用している。
クライアント.
Toxクライアントは、他のToxユーザーと通信するために、Toxコアライブラリを使用するアプリケーションである。様々なクライアントが存在し、多くのシステムに対応している。
PidginとMiranda NGにもToxプロトコル向けのプラグインが存在する。
Tox Foundationとの関係の解除.
LWN.netによると、2015年7月11日、Tox Foundationの代表兼CEOによる「寄付金の悪用をめぐる争い」のため、Toxの開発者達は同財団との関係の解除したと正式に発表した。プロジェクトのドメインは同財団が管理していたので、プロジェクトの大部分が新たなインフラ・サーバ・ドメインに移管した。
反応.
Toxは初期の概念の段階で大きな注目を受け、各国の技術系ニュースサイトで取り上げられた。2013年8月15日にはGitHubのトレンドで5位になった。メタデータの漏洩についての懸念が提起され、友人を探すプロセスでオニオンルーティングを使うようにすることで対応した。Toxは2014年と2015年にGoogle Summer of Codeで学生に対して指導を行う組織として承認された。