
TorChat - Chat peer-to-peer sicura, privata e anonima sulla rete Tor
Chat peer-to-peer sicura, privata e anonima sulla rete Tor.
TorChat è davvero interessante. Ha alcune caratteristiche interessanti che altri non hanno.
A differenza dei sistemi di chat Tor standard che utilizzano indirizzi permanenti, questa implementazione è interamente effimera.
Zero Persistenza: Il server crea un servizio nascosto temporaneo. Una volta terminata la sessione, l'indirizzo .onion viene eliminato e non può essere recuperato o riutilizzato.
Architettura Ibrida: Ho notato che ospitare un servizio Tor è solitamente la parte più difficile per gli utenti. Per risolvere questo, la modalità Server utilizza un processo Tor incorporato che non richiede alcuna configurazione. La modalità Client si aggancia semplicemente all'istanza Tor che probabilmente hai già (come Tor Browser). Significa che utilizza il tor di sistema.
Sicurezza Semplice: Ho scelto ChaCha20-Poly1305 per la crittografia. È più veloce di AES sulla maggior parte dell'hardware e fornisce autenticazione integrata, il che significa che se un singolo bit del tuo messaggio viene manomesso durante il transito, l'app lo rifiuta.
sì, progettato con 🔏.
Nota: ChaCha20-Poly1305 è un algoritmo di crittografia autenticata con dati associati (AEAD) che combina il cifrario a flusso ChaCha20 con il codice di autenticazione dei messaggi Poly1305.[1] Ha prestazioni software elevate e, senza accelerazione hardware, è solitamente più veloce di AES-GCM.[1]: §B
fonte: https://en.wikipedia.org/wiki/ChaCha20-Poly1305 https://protonvpn.com/blog/chacha20
Configurazione Automatica: Non è necessario essere esperti di rete. Il server gestisce l'handshake Tor e crea automaticamente per te l'indirizzo .onion segreto.
Inviti Autodistruttivi: Gli inviti hanno un timer integrato. Il link funziona solo per 10 minuti; se nessuno si unisce entro quel termine, la "porta" si chiude per sempre.
Condivisione QR Code: Invece di digitare un indirizzo onion di 56 caratteri (facile da sbagliare), l'host può mostrare un QR code che l'ospite può scansionare.
Conversazione Bidirezionale (modalità full-duplex): Utilizzando i thread Python, entrambe le persone possono scrivere e ricevere messaggi contemporaneamente senza dover attendere che l'altro finisca.
Cancellazione Totale: Questo strumento è effimero. Ciò significa che non lascia tracce. Non ci sono log, cronologia o file salvati. Una volta chiusa la chat, l'indirizzo e i messaggi svaniscono come se non fossero mai esistiti.
TorChat utilizza un'architettura Tor per la migliore esperienza utente:
Zero Dipendenze - Utilizza Tor incorporato
Puoi semplicemente eseguire l'AppImage. Non è necessaria alcuna configurazione per l'AppImage.
./TorChat-x86_64.AppImage
# Choose: [1] Host chat (Server)
Richiede Tor - Utilizza Tor di sistema o Tor Browser
La maggior parte delle persone ha già questa cosa si spera.
Opzione A: Usare Tor Browser (Il più semplice)
# 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)
Opzione B: Usare Tor di Sistema
# 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)
Persona 1 (Host):
chmod +x TorChat-x86_64.AppImage
./TorChat-x86_64.AppImage # Choose [1] Server
# Share the invite URL/QR code
Persona 2 (Partecipa):
# Open Tor Browser first, then:
./TorChat-x86_64.AppImage # Choose [2] Client
# Paste the invite URL
Se pensi di essere uno sviluppatore figo, allora fa per te.
Python 3.7+
Tor di sistema (solo per modalità client)
git clone https://github.com/blackXploit-404/torchat.git
cd torchat
python -m venv torchat
source torchat/bin/activate
pip install -r requirements.txt
Server (Host):
python3 server.py
# This uses embedded Tor, so no setup is needed
Client (Partecipa):
# Start system Tor first
python3 client.py
Flusso di Crittografia:
Un segreto condiviso viene hashato usando SHA256 per creare una chiave di 32 byte.
Per ogni messaggio, viene generato un nonce casuale di 12 byte.
Il messaggio viene crittografato e il nonce viene preposto ai dati.
Il destinatario rimuove i primi 12 byte da usare come nonce per la decifratura.
Rete:
Server: Si collega a 127.0.0.1:5000, che Tor mappa su un indirizzo .onion pubblico.
Client: Utilizza il protocollo SOCKS5 per instradare la connessione TCP attraverso il 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
Segreto condiviso. Questo metodo utilizza una password già impostata ed è accettabile da usare per ora.
Nessuna autenticazione utente. Chiunque ottiene l'URL di invito può partecipare.
Nessuna cronologia dei messaggi. I messaggi non vengono memorizzati in alcun luogo. Ciò significa che quando invii un messaggio, non viene conservato da nessuna parte. I messaggi non vengono salvati, quindi non potrai visualizzarli in seguito. Funziona così: i messaggi non vengono conservati in alcun archivio, esistono solo per la durata della chat e poi scompaiono.
Scadenza inviti - Gli inviti scadono per sicurezza (10 minuti predefiniti)
# 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
"Indirizzo non trovato": aggiunto promemoria per attendere 30–60 secondi affinché la rete Tor pubblichi il nuovo descrittore .onion.
"Connessione scaduta": suggerisce di controllare lo stato del servizio Tor e la connettività di rete.
sudo systemctl status tor
ora ha più funzionalità di così

TorChat è pensato per comunicazioni lecite che migliorano la privacy. Usalo in modo responsabile e rispetta le leggi locali.
Questo progetto è concesso in licenza sotto la Licenza MIT. Vedi LICENSE per i dettagli.
Vuoi migliorare TorChat? I contributi sono benvenuti!
Apri un issue per bug o idee
Invia pull request con miglioramenti
Sentiti libero di fork e remix del progetto