
TorChat - Безопасный, приватный и анонимный пиринговый чат через сеть Tor
Безопасный, приватный и анонимный пиринговый чат через сеть Tor.
TorChat — это действительно круто. В нём есть кое-какие крутые штучки, которых нет у других.
В отличие от стандартных Tor-чатов, использующих постоянные адреса, эта реализация полностью эфемерна.
Нулевое сохранение (Zero Persistence): сервер создаёт временный скрытый сервис. Как только сеанс заканчивается, .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-адрес.
Самоуничтожающиеся приглашения: Приглашения содержат встроенный таймер. Ссылка работает только 10 минут; если за это время никто не присоединится, «дверь» запирается навсегда.
Обмен QR-кодом: Вместо того чтобы вводить 56-символьный onion-адрес (в котором легко ошибиться), хост может просто показать QR-код для сканирования гостем.
Двустороннее общение (полнодуплексный режим): Благодаря потокам Python оба собеседника могут печатать и получать сообщения одновременно, не дожидаясь, пока другой закончит.
Полное стирание: Этот инструмент эфемерен. Он не оставляет следов. Нет журналов, нет истории, нет сохранённых файлов. Как только вы закрываете чат, адрес и сообщения исчезают, словно их никогда не было.
TorChat использует архитектуру Tor для наилучшего пользовательского опыта:
Ноль зависимостей — использует встроенный Tor
Вы можете просто запустить AppImage. Никакой настройки для AppImage выполнять не нужно.
./TorChat-x86_64.AppImage
# Choose: [1] Host chat (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] Connect to peer (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] Connect to peer (Client)
Пользователь 1 (хост):
chmod +x TorChat-x86_64.AppImage
./TorChat-x86_64.AppImage # Choose [1] Server
# Share the invite URL/QR code
Пользователь 2 (подключение):
# Open Tor Browser first, then:
./TorChat-x86_64.AppImage # Choose [2] Client
# Paste the invite URL
Если вы считаете себя крутым разработчиком, то это для вас.
Python 3.7+
System 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
-shared secret. В этом методе используется уже заданный пароль, и пока его можно использовать.
Без аутентификации пользователей. Любой, у кого есть пригласительная ссылка, может присоединиться.
Никакой истории сообщений. Сообщения не хранятся нигде. Это означает, что когда вы отправляете сообщение, оно не сохраняется ни в одном месте. Сообщения не сохраняются, поэтому вы не сможете просмотреть их позже. Так система работает с сообщениями. Сообщения не хранятся ни в каком хранилище — они просто есть. А затем они исчезают.
Истечение срока приглашений — приглашения истекают в целях безопасности (по умолчанию 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 лучше? Вклад приветствуется!