
TorChat - Torネットワーク上の安全、プライベート、匿名のピアツーピアチャット
Torネットワーク上で安全、プライベート、そして匿名のピアツーピアチャット。
TorChatは本当にクールです。 他のツールにはないクールな機能を備えています。
永続的なアドレスを使用する標準的なTorチャットシステムとは異なり、この実装は完全に一時的(エフェメラル)です。
ゼロ永続性: サーバーは一時的な隠しサービスを作成します。セッションが終了すると、.onionアドレスは削除され、復元も再利用もできません。
ハイブリッドアーキテクチャ: Torサービスをホストすることが通常ユーザーにとって最も難しい部分であることに気づきました。これを解決するため、サーバーモードでは設定不要の組み込みTorプロセスを使用します。クライアントモードは、おそらくすでに持っているTorインスタンス(Tor Browserなど)に接続するだけです。つまりシステムTorを使用します。
シンプルなセキュリティ: 暗号化にはChaCha20-Poly1305を選択しました。ほとんどのハードウェアでAESより高速であり、組み込みの認証を提供します。つまり、転送中にメッセージの1ビットでも改ざんされると、アプリはそれを拒否します。
そう、🔏を込めて設計されています。
注: ChaCha20-Poly1305は、ChaCha20ストリーム暗号とPoly1305メッセージ認証コードを組み合わせた、関連データ付き認証暗号化(AEAD)アルゴリズムです。[1] ソフトウェアでのパフォーマンスが高く、ハードウェアアクセラレーションがない場合、通常はAES-GCMより高速です。[1]: §B
出典: https://en.wikipedia.org/wiki/ChaCha20-Poly1305 https://protonvpn.com/blog/chacha20
自動セットアップ: ネットワークの専門家である必要はありません。サーバーがTorハンドシェイクを処理し、秘密の.onionアドレスを自動的に作成します。
招待リンク: ホストはランダムな32バイトのルームシークレットを含むリンクを取得します。リンクを持つ人は誰でも、最大16ピアまで参加できます。ホストが終了し、onionアドレスが削除された瞬間にリンクは機能しなくなります。
QRコード共有: 56文字のonionアドレスを入力する代わりに(間違えやすい)、ホストはゲストがスキャンするためのQRコードを表示するだけです。
グループルーム: 1つのルームに最大16人。ホストはすべてのメッセージを他の全員に中継し、他の人の完了を待たずに同時にタイプして受信できます。
信頼性の高い配信: メッセージは暗号化前に長さプレフィックスが付けられるため、ネットワークがメッセージをどのように分割しても正しく再構築されます。
完全消去: このツールは一時的です。つまり、痕跡を残しません。ログも履歴も保存ファイルもありません。チャットを閉じると、アドレスとメッセージは存在しなかったかのように消えます。
TorChatは最高のユーザー体験のためにTorアーキテクチャを使用します:
依存関係ゼロ - 組み込みTorを使用
AppImageを実行するだけです。AppImageに必要なセットアップはありません。
./TorChat-x86_64.AppImage
# Choose: [1] Host room (Server)
Torが必要 - システムTorまたはTor Browserを使用
ほとんどの人はすでにこれを持っているはずです。
オプションA: Tor Browserを使用する(最も簡単)
# 1. First you need to open the Tor Browser because it gives you a SOCKS proxy that works on port 9150 which's the Tor Browser.
# 2. Run TorChat client
./TorChat-x86_64.AppImage
# Choose: [2] Join room (Client)
オプションB: システムTorを使用する
# 1. Install and start system Tor
sudo apt install tor [ debian ]
sudo pacman -S tor [ arch ]
To start the tor service you need to use the following command:
sudo systemctl start tor.
This will get the tor service up and running. You have to use the tor service if you want to use tor. The command sudo
systemctl start tor
is what you should type to start tor.
# 2. Run TorChat client
./TorChat-x86_64.AppImage
# Choose: [2] Join room (Client)
人物1(ホスト):
chmod +x TorChat-x86_64.AppImage
./TorChat-x86_64.AppImage # Choose [1] Server
# Share the invite URL/QR code
# Type /invite any time to print it again
人物2(参加):
# Open Tor Browser first, then:
./TorChat-x86_64.AppImage # Choose [2] Client
# Paste the invite URL
# Repeat for as many people as you want in the room
自分をクールな開発者だと思うなら、これはあなたのためのものです。
Python 3.7+
システムTor(クライアントモードのみ)
git clone https://github.com/blackXploit-404/torchat.git
cd torchat
python -m venv torchat
source torchat/bin/activate
pip install -r requirements.txt
サーバー(ホスト):
python3 server.py
# This uses embedded Tor, so no setup is needed
クライアント(参加):
# Start system Tor first
python3 client.py
暗号化フロー:
共有シークレットはSHA256を使用してハッシュ化され、32バイトのキーが作成されます。
メッセージごとに、ランダムな12バイトのnonceが生成されます。
メッセージは暗号化され、nonceがデータの先頭に付加されます。
受信者は最初の12バイトを取り除き、復号化のためのnonceとして使用します。
ネットワーキング:
サーバー: 127.0.0.1:5000にバインドし、Torがこれを公開.onionアドレスにマッピングします。
クライアント: SOCKS5プロトコルを使用して、TCP接続をTor回路上でトンネルします。
┌─────────────────┐ ┌─────────────────┐
│ SERVER MODE │ │ CLIENT MODE │
├─────────────────┤ ├─────────────────┤
│ Embedded Tor │ │ System Tor │
│ - Tor process │◄──►│ - SOCKS proxy │
│ - Hidden service│ │ - Port 9050/9150│
│ - No dependencies│ │ - Existing Tor │
└─────────────────┘ └─────────────────┘
SENDER SIDE:
User Message: "Hello World"
│
▼
┌─────────────────────┐
│ ChaCha20-Poly1305 │
│ Encryption Engine │
├─────────────────────┤
│ Key: SHA256(secret) │
│ Nonce: 12 random │
│ Plaintext: message │
└─────────────────────┘
│
▼
Encrypted Bytes: [nonce + ciphertext + auth_tag]
│
▼
┌─────────────────────┐
│ Tor Network │
│ (3-hop anonymity) │
└─────────────────────┘
RECEIVER SIDE:
I got some encrypted bytes. These encrypted bytes were received. The encrypted bytes are now here.
│
▼
┌─────────────────────┐
│ ChaCha20-Poly1305 │
│ Decryption Engine │
├─────────────────────┤
│ Key: SHA256(secret) │
│ Nonce: extract │
│ Verify: auth_tag │
└─────────────────────┘
│
▼
Decrypted Message: "Hello World"
HOST TOR NETWORK CLIENT
┌─────────┐ ┌───┐ ┌───┐ ┌───┐ ┌─────────┐
│Embedded │───────────▶│ A │───▶│ B │───▶ │ C │◄─────│ System|│
│ Tor │ │ │ │ │ │ │ │ Tor │
└─────────┘ └───┘ └───┘ └───┘ └─────────┘
│ Entry Middle Exit │
│ Node Node Node │
▼ ▼
.onion Address 3-Hop Encrypted Circuit SOCKS5 Proxy
-共有シークレット。この方法はすでに設定されているパスワードを使用し、今のところ使用しても問題ありません。
ユーザー認証なし。招待URLを取得した人は誰でも参加できます。
メッセージ履歴なし。メッセージはどこにも保存されません。つまり、メッセージを送信してもどこにも保持されません。メッセージは保存されないため、後で見ることはできません。これがメッセージを扱うシステムの仕組みです。メッセージはどのストレージにも保持されず、ただ消えます。そしてそれらは消えます。
招待の有効期限 - セキュリティのため招待は期限切れになります(デフォルト10分)
# Embedded Tor (Server)
DataDirectory /tmp/tor_chat_xyz/
HiddenServiceDir /tmp/tor_chat_xyz/hidden_service/
HiddenServicePort 5000 127.0.0.1:5000
SocksPort 0 # Disabled for server
# System Tor (Client)
SocksPort 9050
# Default system configuration
「Address not found」: Torネットワークが新しい.onionディスクリプタを公開するまで30〜60秒待つようユーザーに促すリマインダーを追加しました。
「Connection timed out」: Torサービスのステータスとネットワーク接続を確認することを提案します。
sudo systemctl status tor
今ではこれ以上の機能があります

TorChatは、合法的なプライバシー強化通信を目的としています。責任を持って使用し、現地の法律を遵守してください。
このプロジェクトはMITライセンスの下でライセンスされています。詳細はLICENSEを参照してください。
TorChatをより良くしたいですか?コントリビューションを歓迎します!