
TorChat - Chat ponto a ponto seguro, privado e anônimo através da rede Tor
Bate-papo peer-to-peer seguro, privado e anônimo através da rede Tor.
O TorChat é muito legal. Ele tem alguns recursos interessantes que outros não têm.
Ao contrário dos sistemas de chat Tor padrão que usam endereços permanentes, esta implementação é totalmente efêmera.
Zero Persistência: O servidor cria um serviço oculto temporário. Quando a sessão termina, o endereço .onion é excluído e não pode ser recuperado nem reutilizado.
Arquitetura Híbrida: Percebi que hospedar um serviço Tor geralmente é a parte mais difícil para os usuários. Para resolver isso, o modo Servidor usa um processo Tor embutido que não exige nenhuma configuração. O modo Cliente simplesmente se conecta à instância Tor que você provavelmente já tem (como o Tor Browser). Ou seja, usa o Tor do sistema.
Segurança Simples: Escolhi o ChaCha20-Poly1305 para a criptografia. Ele é mais rápido que o AES na maioria dos hardwares e fornece autenticação integrada, o que significa que, se um único bit da sua mensagem for adulterado durante a transmissão, o aplicativo a rejeita.
sim, projetado com 🔏.
Nota: ChaCha20-Poly1305 é um algoritmo de criptografia autenticada com dados associados (AEAD), que combina a cifra de fluxo ChaCha20 com o código de autenticação de mensagem Poly1305.[1] Ele tem desempenho rápido em software e, sem aceleração de hardware, geralmente é mais rápido que o AES-GCM.[1]: §B
fonte: https://en.wikipedia.org/wiki/ChaCha20-Poly1305 https://protonvpn.com/blog/chacha20
Configuração Automática: Você não precisa ser um especialista em redes. O servidor cuida do handshake Tor e cria o endereço .onion secreto automaticamente para você.
Convites Autodestrutivos: Os convites vêm com um temporizador embutido. O link só funciona por 10 minutos; se ninguém entrar até lá, a "porta" se tranca para sempre.
Compartilhamento por QR Code: Em vez de digitar um endereço onion de 56 caracteres (que é fácil de errar), o anfitrião pode apenas mostrar um QR code para o convidado escanear.
Conversa Bidirecional (modo full-duplex): Usando threads do Python, ambas as pessoas podem digitar e receber mensagens ao mesmo tempo, sem esperar a outra terminar.
Apagamento Total: Esta ferramenta é efêmera. Isso significa que ela não deixa rastros. Não há logs, histórico nem arquivos salvos. Ao fechar o chat, o endereço e as mensagens desaparecem como se nunca tivessem existido.
O TorChat usa uma arquitetura Tor, para a melhor experiência do usuário:
Zero Dependências - Usa Tor embutido
Você pode simplesmente executar o AppImage. Não há nenhuma configuração necessária para o AppImage.
./TorChat-x86_64.AppImage
# Escolha: [1] Hospedar chat (Servidor)
Requer Tor - Usa o Tor do sistema ou o Tor Browser
A maioria das pessoas já tem isso espero.
Opção A: Usando o Tor Browser (Mais fácil)
# 1. Primeiro, você precisa abrir o Tor Browser, pois ele fornece um proxy SOCKS que funciona na porta 9150, que é a do Tor Browser.
# 2. Execute o cliente TorChat
./TorChat-x86_64.AppImage
# Escolha: [2] Conectar a um par (Cliente)
Opção B: Usando o Tor do Sistema
# 1. Instale e inicie o Tor do sistema
sudo apt install tor [ debian ]
sudo pacman -S tor [ arch ]
Para iniciar o serviço tor, você precisa usar o seguinte comando:
sudo systemctl start tor.
Isso deixará o serviço tor em funcionamento. Você precisa usar o serviço tor se quiser usar tor. O comando sudo
systemctl start tor
é o que você deve digitar para iniciar o tor.
# 2. Execute o cliente TorChat
./TorChat-x86_64.AppImage
# Escolha: [2] Conectar a um par (Cliente)
Pessoa 1 (Anfitrião):
chmod +x TorChat-x86_64.AppImage
./TorChat-x86_64.AppImage # Escolha [1] Servidor
# Compartilhe o URL/QR code do convite
Pessoa 2 (Entrar):
# Abra o Tor Browser primeiro e depois:
./TorChat-x86_64.AppImage # Escolha [2] Cliente
# Cole o URL do convite
Se você acha que é um dev legal, então isto é para você.
Python 3.7+
Tor do sistema (apenas para o modo cliente)
git clone https://github.com/blackXploit-404/torchat.git
cd torchat
python -m venv torchat
source torchat/bin/activate
pip install -r requirements.txt
Servidor (Anfitrião):
python3 server.py
# Isto usa Tor embutido, então nenhuma configuração é necessária
Cliente (Entrar):
# Inicie o Tor do sistema primeiro
python3 client.py
Fluxo de Criptografia:
Um segredo compartilhado é transformado em hash usando SHA256 para criar uma chave de 32 bytes.
Para cada mensagem, um nonce aleatório de 12 bytes é gerado.
A mensagem é criptografada e o nonce é anexado ao início dos dados.
O receptor remove os primeiros 12 bytes para usá-los como nonce na descriptografia.
Rede:
Servidor: Escuta em 127.0.0.1:5000, que o Tor mapeia para um endereço .onion público.
Cliente: Usa o protocolo SOCKS5 para encapsular a conexão TCP através do circuito 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
-segredo compartilhado. Este método usa uma senha que já está definida e é aceitável por enquanto.
Sem autenticação de usuário. Qualquer pessoa que obtiver o URL do convite pode entrar.
Sem histórico de mensagens. As mensagens não são armazenadas em nenhum lugar. Isso significa que, quando você envia uma mensagem, ela não é guardada em lugar algum. As mensagens não são salvas, então você não poderá vê-las depois. É assim que o sistema funciona com as mensagens. As mensagens não são mantidas em nenhum armazenamento; elas simplesmente... se vão.
Expiração do convite - Os convites expiram por segurança (10 minutos por padrão)
# 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
"Endereço não encontrado": lembre aos usuários de aguardar 30–60 segundos para a rede Tor publicar o novo descritor .onion.
"Tempo de conexão esgotado": sugira verificar o status do serviço Tor e a conectividade de rede.
sudo systemctl status tor
agora ele tem mais recursos do que isto

O TorChat destina-se à comunicação legal de reforço de privacidade. Use com responsabilidade e cumpra as leis locais.
Este projeto está licenciado sob a Licença MIT. Consulte LICENSE para obter detalhes.
Quer melhorar o TorChat? Contribuições são bem-vindas!