# TorChat

TorChat era un instant messenger anonimo decentrato basato su Istantbird che utilizzava i servizi nascosti di Tor.
Fornisce un servizio di messaggistica istantanea e di invio di file crittografato. La caratteristica principale dei servizi nascosti del Tor è che tutto il traffico del client viene crittografato ed è estremamente difficile (se non impossibile) riuscire a scoprire gli utenti che comunicano tra loro e dove si trova fisicamente il client, ma soffre di perdita di metadati.
TorChat è un software gratuito concesso in licenza secondo i termini della GNU (GPL).

## Caratteristiche

In TorChat ogni utente ha un ID alfanumerico univoco composto da 16 caratteri. Questo ID viene creato casualmente da Tor quando il client viene attivato per la prima volta, ed è fondamentalmente l'indirizzo .onion di un servizio nascosto. I client di TorChat comunicano tra loro utilizzando il Tor per contattare l'altro servizio nascosto (derivato dal suo ID) e scambiare messaggi, informazioni ed altri dati su questa connessione. I servizi nascosti Tor possono ricevere connessioni in entrata anche dietro un router utilizzando la network address translation (NAT), TorChat non ha bisogno di nessuna porta per funzionare.

## Storia

Torchat è un software libero rilasciato sotto la licenza pubblica GNU. La prima versione pubblica di TorChat è stata distribuita nel novembre 2007 da Bernd Kreuß e da allora è stata costantemente migliorata.
È scritta in Python ed utilizza la libreria multipiattaforma wxPython, che la rende compatibile con numerosi sistemi operativi. Al momento esistono versioni disponibili per Microsoft Windows e Linux. Le versioni più vecchie di TorChat per Windows sono state scritte con py2exe (dalla versione 0.9.9.292 è stato rimpiazzato con pyinstaller) e viene fornito con una copia della Tor onion router già configurata affinché possa essere utilizzata facilmente e messa in un dispositivo USB senza installazione, configurazione o creazione di account.
A partire dal 5 febbraio 2013 lo sviluppatore Prof7bit ha spostato TorChat su GitHub per protesta contro la censura selettiva di Google che impediva di scaricare il programma ad utenti di determinati paesi. Successivamente, l'utente Prof7bit ha iniziato a lavorare su torchat2, che è una riscrittura del programma da zero, utilizzando Lazarus e Free Pascal.

## Modifiche (Fork)

Un fork è stato rilasciato per OS X nell'estate del 2010 da uno sviluppatore francese. Il binario (un'applicazione Cocoa) e il codice sorgente (Obiettivo-C) in bundle in un progetto Xcode 7 possono essere scaricati su SourceMac. All'inizio del 2012 è stata creata una riscrittura del protocollo TorChat in Java , denominata jTorChat su Google Code . Contiene l'ultimo Tor.exe ed ha lo scopo di emulare tutte le funzionalità del protocollo TorChat originale, oltre ad estendere i protocolli per le funzionalità specifiche di jTorChat. La condivisione di file, sebbene implementata in TorChat originale, non è ancora implementata in jTorChat. Una nuova funzionalità in jTorChat è la modalità di trasmissione, che consente a un utente di inviare messaggi a tutti nella rete, anche se non sono nella loro lista di amici. Viene implementata anche la modalità di richiesta amico, che consente a un utente di richiedere a un utente casuale nella rete jTorChat di aggiungerli. In questa fase jTorChat è progettato per funzionare efficacemente su Windows senza alcuna configurazione. Può essere eseguito su qualsiasi piattaforma supportata da Tor e Java, rendendolo molto portabile. Il progetto è attivamente alla ricerca di contributori Java, in particolare per aiutare a eseguire il debug dell'interfaccia GUI.

## Sicurezza

Nel 2015 è stata condotta un'analisi di sicurezza del protocollo TorChat e della sua implementazione in Python. È stato riscontrato che sebbene il design di TorChat sia valido, la sua implementazione presenta diversi difetti, che rendono gli utenti di TorChat vulnerabili alla rappresentazione, alla conferma della comunicazione e agli attacchi denial-of-service. Nonostante i difetti riscontrati, l'uso di TorChat potrebbe essere ancora sicuro in uno scenario in cui l'indirizzo onion del peer non viene conosciuto da un avversario interessato ad attaccare la persona dietro l'indirizzo TorChat.