
TorChat - Chat pair à pair sécurisé, privé et anonyme sur le réseau Tor
Communication pair à pair sécurisée, privée et anonyme sur le réseau Tor.
TorChat est vraiment cool. Il a des fonctionnalités sympas que les autres n'ont pas.
Contrairement aux systèmes de chat Tor standard qui utilisent des adresses permanentes, cette implémentation est entièrement éphémère.
Zéro persistance : le serveur crée un service caché temporaire. Une fois la session terminée, l'adresse .onion est supprimée et ne peut être ni récupérée ni réutilisée.
Architecture hybride : j'ai remarqué que l'hébergement d'un service Tor est généralement la partie la plus difficile pour les utilisateurs. Pour résoudre ce problème, le mode Serveur utilise un processus Tor intégré qui ne nécessite aucune configuration. Le mode Client se connecte simplement à l'instance Tor que vous avez probablement déjà (comme le Tor Browser). Cela signifie qu'il utilise le Tor système.
Sécurité simple : j'ai choisi ChaCha20-Poly1305 pour le chiffrement. C'est plus rapide que AES sur la plupart des matériels et fournit une authentification intégrée, ce qui signifie que si un seul bit de votre message est altéré pendant le transit, l'application le rejette.
ouais, conçu avec 🔏.
Note : ChaCha20-Poly1305 est un algorithme de chiffrement authentifié avec données associées (AEAD) qui combine le chiffrement de flux ChaCha20 avec le code d'authentification de message Poly1305.[1] Il offre des performances logicielles rapides et, sans accélération matérielle, il est généralement plus rapide que AES-GCM.[1]: §B
source : https://en.wikipedia.org/wiki/ChaCha20-Poly1305 https://protonvpn.com/blog/chacha20
Configuration automatique : Vous n'avez pas besoin d'être un expert en réseau. Le serveur gère la poignée de main Tor et crée automatiquement l'adresse .onion secrète pour vous.
Invitations autodestructrices : Les invitations sont assorties d'une minuterie intégrée. Le lien ne fonctionne que pendant 10 minutes ; si personne ne rejoint d'ici là, la « porte » se verrouille pour de bon.
Partage par code QR : Au lieu de taper une adresse onion de 56 caractères (facile à mal saisir), l'hôte peut simplement afficher un code QR que l'invité pourra scanner.
Conversation bidirectionnelle (mode full-duplex) : Grâce aux threads Python, les deux personnes peuvent écrire et recevoir des messages en même temps, sans attendre que l'autre ait terminé.
Effacement total : Cet outil est éphémère. Cela signifie qu'il ne laisse aucune trace. Pas de journaux, pas d'historique, pas de fichiers enregistrés. Une fois le chat fermé, l'adresse et les messages disparaissent comme s'ils n'avaient jamais existé.
TorChat utilise une architecture Tor, pour une expérience utilisateur optimale :
Zéro dépendance - Utilise le Tor intégré
Vous pouvez simplement exécuter l'AppImage. Aucune configuration n'est nécessaire pour l'AppImage.
./TorChat-x86_64.AppImage
# Choose: [1] Host chat (Server)
Nécessite Tor - Utilise le Tor système ou le Tor Browser
La plupart des gens ont déjà ce truc, j'espère.
Option A : Utiliser le Tor Browser (le plus simple)
# 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)
Option B : Utiliser le Tor système
# 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)
Personne 1 (hôte) :
chmod +x TorChat-x86_64.AppImage
./TorChat-x86_64.AppImage # Choose [1] Server
# Share the invite URL/QR code
Personne 2 (rejoint) :
# Open Tor Browser first, then:
./TorChat-x86_64.AppImage # Choose [2] Client
# Paste the invite URL
Si vous pensez être un développeur cool, c'est pour vous.
Python 3.7+
Tor système (uniquement pour le mode 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
Serveur (hôte) :
python3 server.py
# This uses embedded Tor, so no setup is needed
Client (rejoint) :
# Start system Tor first
python3 client.py
Flux de chiffrement :
Une clé secrète partagée est hachée à l'aide de SHA256 pour créer une clé de 32 octets.
Pour chaque message, un nonce aléatoire de 12 octets est généré.
Le message est chiffré, et le nonce est ajouté au début des données.
Le récepteur retire les 12 premiers octets pour les utiliser comme nonce pour le déchiffrement.
Réseau :
Serveur : se lie à 127.0.0.1:5000, que Tor mappe vers une adresse .onion publique.
Client : utilise le protocole SOCKS5 pour faire transiter la connexion TCP à travers le circuit 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
Secret partagé. Cette méthode utilise un mot de passe déjà défini et il est acceptable pour le moment.
Aucune authentification utilisateur. Toute personne qui obtient l'URL d'invitation peut rejoindre.
Aucun historique des messages. Les messages ne sont stockés nulle part. Cela signifie que lorsque vous envoyez un message, il n'est conservé nulle part. Les messages ne sont pas enregistrés, vous ne pourrez donc pas les consulter plus tard. C'est ainsi que le système fonctionne avec les messages. Les messages ne sont conservés dans aucun stockage, ils sont juste... Ensuite, ils disparaissent.
Expiration des invitations - Les invitations expirent par sécurité (10 minutes par défaut)
# 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 » : ajouter un rappel aux utilisateurs d'attendre 30 à 60 secondes que le réseau Tor publie le nouveau descripteur .onion.
« Connection timed out » : suggérer de vérifier l'état du service Tor et la connectivité réseau.
sudo systemctl status tor
il a maintenant plus de fonctionnalités que cela

TorChat est conçu pour une communication légale qui améliore la confidentialité. Utilisez-le de manière responsable et conformez-vous aux lois locales.
Ce projet est sous licence MIT. Voir LICENSE pour plus de détails.
Envie d'améliorer TorChat ? Les contributions sont les bienvenues !