# TorChat

TorChat est un système de messagerie instantanée anonyme et décentralisé qui utilise les services cachés de Tor comme réseau sous-jacent.
Il fournit une messagerie textuelle et des transferts de fichiers sécurisés de manière cryptographique.
TorChat est un logiciel libre licence publique générale GNU (GPL).

## Caractéristiques

Dans TorChat, chaque utilisateur possède un identifiant alphanumérique unique composé de 16 caractères. Il s’agit en fait de l’adresse .onion d’un service caché.
Cet identifiant sera créé aléatoirement par Tor lors du premier démarrage du client.
Les clients TorChat communiquent les uns avec les autres en utilisant Tor pour contacter le service caché de l'autre (dérivé de son identifiant) et échanger des informations d'état, des messages de discussion et d'autres données via cette connexion.

## L'histoire

La première version publique de TorChat a été publiée par Bernd Kreuss en novembre 2007.
Elle est écrite en Python et utilise la librairie multiplateformes wxPython qui permet de prendre en charge un large éventail de plateformes.
Les anciennes versions de TorChat pour Windows étaient construites avec py2exe (depuis la version 0.9.9.292 remplacée par pyinstaller) et étaient livrées avec une copie de Tor configurée de manière à pouvoir être exécutée en tant qu'application portable à partir d'une clé USB, sans aucune installation ni configuration.
Entre 2008 et 2010, il n'y a pas eu de paquet mis à jour, ce qui a rendu la version groupée de Tor obsolète et incapable de se connecter au réseau Tor. Cet évènement est à l'origine de l'apparition de Forks qui venaient de remplacer le paquet Tor.exe fourni avec une version actuelle.
En décembre 2010, une mise à jour officielle est finalement disponible, qui, parmi quelques corrections de bugs mineurs, incluait de nouveau un fichier Tor.exe à jour.

## Forks

Un fork a été publié pour OS X à l'été 2010 par un développeur français.
Une réécriture du protocole TorChat en Java a été créée au début de 2012, appelée jTorChat sur Google Code. Contenant la dernière version de Tor.exe, il est conçu pour émuler toutes les fonctionnalités du protocole TorChat d'origine, ainsi que pour étendre les protocoles des fonctionnalités spécifiques à jTorChat. Le partage de fichiers, bien qu'implémenté dans le TorChat d'origine, n'est pas encore implémenté dans jTorChat.
Une nouvelle fonctionnalité de jTorChat est le mode de diffusion, qui permet à un utilisateur d’envoyer des messages à tous les membres du réseau, même s’ils ne figurent pas dans leur liste de contact.
Le mode de demande de contact est également implémenté, ce qui permet à un utilisateur de demander à un utilisateur aléatoire du réseau jTorChat de les ajouter.
À ce stade, jTorChat est conçu pour fonctionner efficacement sous Windows sans configuration.
Cependant, depuis qu’il est écrit en Java, il peut s’exécuter sur n’importe quelle plate-forme prise en charge par Tor et par Java, ce qui le rend très portable.
Le projet recherche activement des contributeurs Java, en particulier pour aider à déboguer l'interface graphique.
Depuis le 5 février 2013, le développeur Prof7bit a transféré TorChat vers GitHub afin de protester contre la censure sélective de Google sur l'accès au téléchargement de TorChat vers certains pays.
Prof7bit est passé au travail sur torchat2, une nouvelle écriture, en utilisant Lazarus et Free Pascal.

## Sécurité

En 2015, une analyse de sécurité du protocole TorChat et de son implémentation en Python est réalisée.
Il a été constaté que bien que la conception de TorChat soit solide, son implémentation présente plusieurs défauts qui rendent les utilisateurs de TorChat vulnérables à l’usurpation d’identité, à la confirmation de la communication et aux attaques par déni de service. Malgré les failles constatées, l’utilisation de TorChat peut encore être sécurisée dans un scénario où l’adresse oignon de son homologue ne sera pas connue d’un adversaire souhaitant attaquer la personne se trouvant derrière l’adresse de TorChat.