Tox (プロトコル)

エンドツーエンド暗号化を提供するP2Pのインスタントメッセージとテレビ電話のプロトコル

Toxは、エンドツーエンド暗号化を提供するP2Pインスタントメッセージテレビ電話のプロトコルである。全ての人に安全で簡単に接続できるコミュニケーションを提供することを目的としている。リファレンス実装GNU GPL v3+の下で配布されている。

Tox
GNU/Linux上で動作するToxクライアントのµTox
最新版
0.2.19[1] ウィキデータを編集 / 2024年3月28日 (58日前)
リポジトリ ウィキデータを編集
プログラミング
言語
C言語
対応OSクロスプラットフォーム
種別VoIPインスタントメッセージテレビ電話
ライセンスGNU GPL v3+
公式サイトtox.chat ウィキデータを編集
テンプレートを表示

歴史

GitHubへの最初のコミットは、2013年6月23日irungentooというユーザーによって行われた[2]2014年2月3日以降、プレアルファ版のテストバイナリをユーザーが利用できるようになり、ToxのナイトリービルドJenkinsによって公開されるようになった[3]。同年7月12日、Toxの開発はアルファ段階に入り、このことのために再設計されたダウンロードページが作成された。

特徴

ユーザーには公開鍵と秘密鍵が割り当てられ、完全に分散されたP2Pネットワークによって互いに直接接続する。ユーザーは友達にメッセージを送ること・友達や見知らぬ人とチャットルームに参加すること・音声と動画によるチャット・互いにファイルを送信することができる。Tox上の全てのやり取りは、NaClによってエンドツーエンド暗号化されており、認証付き暗号と完全な前方秘匿性を提供する。

Toxクライアントは安全で匿名性のある様々な通信機能をサポートすることを目的としている。全てのクライアントがインスタントメッセージをサポートしており、グループメッセージング英語版・VoIP・ビデオ会議・タイピングインジケーター・メッセージの既読確認・ファイル共有・プロファイルの暗号化・デスクトップ共有英語版などの追加機能は、クライアントによってサポートの度合いは異なる。追加機能はコアプロトコルがサポートしている限りは、どのクライアントでも実装することができる。コアネットワークシステムに関連しない機能についてはクライアントに任されている。クライアントの開発者は、クライアントの互換性と最良のセキュリティを維持するために、Tox-Client-Standardに従うことが強く推奨されている。

アーキテクチャ

コア

ToxコアはプロトコルとAPIを確立するためのライブラリである。ユーザーにとってのフロントエンドであるクライアントは、コアの上に構築されている。コアを利用することで誰でもクライアントを作成することができる。主要開発者であるirungentooによって書かれたコアの設計に関する技術文書はMITライセンスの下で公開されており、自由に利用することができる[4]

プロトコル

Toxの中核となるものはToxプロトコルの実装である。このプロトコルはOSI参照モデルアプリケーション層の一例であり、恐らくプレゼンテーション層でもある。Toxプロジェクト以外によって作成されたToxプロトコルの実装も存在する[5]

Toxプロトコルは音声のストリーミングにはOpusを、動画のストリーミングにはVP8を使用する[6]

暗号化

Toxはlibsodiumを介してNaClに組み込まれている暗号化方式を使用する。具体的には、鍵交換にはCurve25519を、共通鍵暗号にはXSalsa20を、メッセージ認証符号にはPoly1305を採用している[7]

クライアント

Toxクライアントは、他のToxユーザーと通信するために、Toxコアライブラリを使用するアプリケーションである。様々なクライアントが存在し、多くのシステムに対応している[8]

名称オペレーティングシステムプログラミング言語公式ウェブサイト・リポジトリ
AntidoteiOSSwiftantidote.im
AntoxAndroidScalagithub.com/Antox/Antox
CyanideSailfish OSC++QMLgithub.com/krobelus/cyanide
gToxUnix系WindowsC++ (GTK+ 3)github.com/KoKuToru/gTox
qToxUnix系、WindowsC++ (Qt)qtox.github.io
ToxicUnix系C言語 (ncurses)github.com/Jfreegman/toxic
ToxyWindowsC# (WPF)github.com/alexbakker/Toxy
ToxygenUnix系、WindowsPython (PySide)github.com/toxygen-project/toxygen
TRIfAAndroidJava、C言語github.com/zoff99/ToxAndroidRefImpl
µToxUnix系、WindowsC言語utox.io
xWinToxUnix系Objective-Cgithub.com/JX7P/XwinTox
IsotoxinWindowsC++github.com/isotoxin/isotoxin
ratoxUnix系C言語ratox.2f30.org
WebToxウェブベースHTML5 (クライアント)、Go (サーバ)github.com/codedust/WebTox

PidginMiranda NGにもToxプロトコル向けのプラグインが存在する[9][10]

Tox Foundationとの関係の解除

LWN.netによると、2015年7月11日、Tox Foundationの代表兼CEOによる「寄付金の悪用をめぐる争い」のため、Toxの開発者達は同財団との関係の解除したと正式に発表した[11]。プロジェクトのドメインは同財団が管理していたので、プロジェクトの大部分が新たなインフラ・サーバ・ドメインに移管した。

反応

Toxは初期の概念の段階で大きな注目を受け、各国の技術系ニュースサイトで取り上げられた[12][13][14][15]。2013年8月15日にはGitHubのトレンドで5位になった[16]メタデータの漏洩についての懸念が提起され、友人を探すプロセスでオニオンルーティングを使うようにすることで対応した[17]。Toxは2014年と2015年にGoogle Summer of Codeで学生に対して指導を行う組織として承認された[18][19]

脚注

関連項目

  • インスタントメッセージクライアントの比較英語版
  • インスタントメッセージプロトコルの比較英語版
  • VoIPソフトウェアの比較英語版

外部リンク