通过 Tor 网络进行安全、私密且匿名的点对点聊天。
TorChat 真的很酷。 它拥有一些其他工具所没有的酷炫功能。
与使用永久地址的标准 Tor 聊天系统不同,此实现完全是临时的。
零持久化:服务器会创建一个临时隐藏服务。一旦会话结束,.onion 地址即被删除,无法恢复或重用。
混合架构:我注意到托管 Tor 服务通常是用户最难的部分。为了解决这个问题,服务器模式使用嵌入式 Tor 进程,无需任何配置。客户端模式则直接接入你很可能已经拥有的 Tor 实例(如 Tor Browser)。也就是说使用系统 tor。
简单安全:我选择 ChaCha20-Poly1305 进行加密。在大多数硬件上它比 AES 更快,并提供内置认证,这意味着如果你的消息在传输过程中哪怕有一个比特被篡改,应用都会拒绝它。
是的,用 🔏 设计。
注意:ChaCha20-Poly1305 是一种带关联数据的认证加密(AEAD)算法,它将 ChaCha20 流密码与 Poly1305 消息认证码相结合。[1] 它具有快速的软件性能,在没有硬件加速的情况下,通常比 AES-GCM 更快。[1]: §B
来源:https://en.wikipedia.org/wiki/ChaCha20-Poly1305 https://protonvpn.com/blog/chacha20
自动设置:你不需要成为网络专家。服务器会处理 Tor 握手并自动为你创建秘密的 .onion 地址。
邀请链接:主机会获得一个包含随机 32 字节房间密钥的链接。任何持有该链接的人都可以加入,最多 16 个对等端。主机退出的那一刻,链接即失效,onion 地址被删除。
二维码分享:无需输入 56 个字符的 onion 地址(很容易出错),主机只需显示二维码供访客扫描。
群组房间:一个房间最多 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 协议通过 Tor 电路隧道传输 TCP 连接。
┌─────────────────┐ ┌─────────────────┐
│ 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":添加提醒用户等待 30–60 秒,以便 Tor 网络发布新的 .onion 描述符。
"Connection timed out":建议检查 Tor 服务状态和网络连接。
sudo systemctl status tor
现在它拥有比这更多的功能

TorChat 旨在用于合法的隐私增强通信。请负责任地使用并遵守当地法律。
本项目根据 MIT 许可证授权。详情请参阅 LICENSE。
想让 TorChat 变得更好?欢迎贡献!