# StealthNet

StealthNet è un client P2P libero basato sulla rete anonima RShare. È distribuito sotto i termini della licenza libera GNU General Public License.
Nel 2007, delle operazioni di criptoanalisi scoprirono delle falle di sicurezza nel proprio protocollo. Tali problemi furono risolti nelle versioni successive.

## Caratteristiche
### Sicurezza ed anonimato

StealthNet, tramite la rete RShare, fornisce un buon grado di sicurezza ed anonimato agli utenti che lo utilizzano.
Nell'uso dei programmi P2P non anonimi è facile tracciare l'indirizzo IP di un utente, ed i dati che sta scambiando, provocando una lesione dei diritti alla privacy. Questo accade perché nei P2P non anonimi il trasferimento dei dati avviene in modo diretto tra mittente e destinatario. Quindi è facile, analizzando il flusso di pacchetti trasmessi, rintracciare chi sta inviando, chi sta ricevendo e cosa si sta scambiando.
Questo comportamento è tipico delle associazioni Anti-P2P che analizzano il traffico P2P per scoprire trasferimenti di materiale coperto da copyright, andando però in tal modo a ledere la privacy degli utenti che non usano i programmi di file sharing in modo illegale. L'analisi del traffico è resa più difficile, se non impossibile, nella rete RShare perché lo scambio di dati non avviene principalmente in modo diretto tra mittente e destinatario. Infatti, prima di arrivare a destinazione, i dati vengono instradati attraversano altri nodi della rete RShare. Ciò indica che ogni nodo della rete RShare non utilizza la propria banda solo per lo scambio dei propri file, ma anche per instradare ulteriori informazioni/dati riguardanti altri nodi della rete.
Secondo questo principio, pur controllando il flusso di dati scambiato tra due nodi, non si può imputare a codesti di essere, uno il mittente, e l'altro il destinatario. Inoltre, nel protocollo della rete RShare non si utilizzano gli indirizzi IP per identificare univocamente i nodi in linea, ma degli appositi RShare ID non associabili all'indirizzo IP del medesimo nodo.

### Cifratura

Nella rete RShare tutti gli scambi di dati vengono criptati point-to-point (punto-punto, da client a client), al fine di rendere inefficace l'analisi dei trasferimenti e tutelare maggiormente la privacy. Tale principio è anche adottato per aggirare le tecniche di traffic shaping messe in atto da alcuni ISP per identificare il traffico P2P e limitarlo o bloccarlo.

### Serverless

La rete RShare, a differenza dei più comuni P2P non anonimi, non si appoggia su server dedicati per la memorizzazione dei file condivisi e per la ricerca di fonti per un file in download.
I client RShare si affidano a delle web cache che posseggono il solo compito di tenere traccia dell'indirizzo IP, e la relativa porta TCP, dei nodi in linea. Nient'altro viene memorizzato riguardo ad un singolo nodo. Ciò avviene per supportare i client nella ricerca dei nodi col quale stabilire una connessione diretta. Di norma la ricerca di nodi per la connessione diretta viene eseguita sempre all'avvio del programma, e di rado viene ripetuta quando un nodo diretto viene perso o si è disconnesso.
Le web cache comunque non memorizzano i file condivisi da un nodo e non servono per la funzione di ricerca di file o di fonti per un download, diversamente da come sono pensati e gestiti i server per le reti P2P non anonime.
Ogni utente può utilizzare il proprio host come una web cache della rete RShare, basta avere installato sul proprio sistema operativo un webserver PHP e MySQL. Per chi volesse realizzare una web cache è possibile consultare una su Planet Peer Wiki redatta dagli sviluppatori del programma.

## Requisiti per l'utilizzo

* Per il funzionamento su Microsoft Windows, StealthNet necessita dell'installazione del pacchetto .NET Framework versione 2.0 o superiore;
* per il funzionamento su Linux e macOS, StealthNet necessita dell'installazione del pacchetto Mono, compatibile con .NET Framework su altri sistemi operativi;
* anche per Linux e macOS è possibile eseguire la GUI, basta scaricare la versione per Windows ed eseguire il comando mono StealthNet.exe avendo installato precedentemente il pacchetto Mono;
* non è necessario attivare il Port forwarding (anche se è altamente consigliato), infatti StealthNet funziona anche senza una specifica porta aperta sul router/firewall, ed è quindi indicato anche per quelle persone abbonate a ISP che offrono una connessione dietro NAT.

## Cronologia

| Versione | Sommario | Pubblicazioni |
| 0.8 | La 0.8 fu la prima versione del client RShare che fu distribuita col nuovo nome StealthNet. Essa includeva l'aggiunta e la rimozione di cartelle condivise, supportava il resume dei download alla chiusura e possedeva un'interfaccia multilingua (tedesco/inglese). | 0.8 (7/6/2007) |
| 0.8.1 | La versione 0.8.1 includeva molte riparazioni di bug. Nella 0.8.1.1 la massima dimensione di un file condivisibile fu incrementata a 4 GB ed il numero massimo di ricerche simultanee fu alzato a 10. La 0.8.1.2 fu la prima pubblicazione nel quale fu distribuita anche una versione a riga di comando. Questo rese utilizzabile StealthNet anche su Linux. La 0.8.1.3 riparò molti bug legati alla sicurezza. | 0.8.1 (22/6/2007) 0.8.1.1 (1/9/2007) 0.8.1.2 (18/9/2007) 0.8.1.3 (28/9/2007) |
| 0.8.2 | La 0.8.2 introdusse il supporto a due nuove lingue, il turco ed il francese, e riparò molti bug. La 0.8.2.1 introdusse molte nuove funzionalità come la gestione della coda ed il supporto alle collezioni (SNCollection). La funzionalità di gestione della coda permise di aggiungere più di 5 file in download. Le SNCollection sono un tipo specifico di file che contiene le informazioni su uno o più file da aggiungere in download. Non appena una SNCollection viene scaricata, tutti i file all'interno possono essere aggiunti in testa alla coda di download, e verranno scaricati in una sottocartella della cartella Incoming. Infine, fu aggiunto anche il supporto per l'Online Signature (firma online). | 0.8.2 (2/2/2008) 0.8.2.1 (6/4/2008) |
| 0.8.3 | La 0.8.3 conteneva molte riparazioni di bug ed introdusse la funzione di swarming. Inoltre, i file potevano essere automaticamente mandati in coda se dopo un certo periodo questi non avevano trovato almeno una fonte. La 0.8.3.1 riparò 3 bug. | 0.8.3 (16/6/2008) 0.8.3.1 (22/6/2008) |
| 0.8.4 | La 0.8.4 conteneva più di 10 riparazioni di bug. La successiva 0.8.4.1 ne conteneva ancora di più e fu la prima versione che poteva essere eseguita su Linux con l'interfaccia grafica col supporto del pacchetto Mono. | 0.8.4 (25/10/2008) 0.8.4.1 (2/11/2008) |
| 0.8.5 | Nella 0.8.5 la funzione di swarming fu migliorata in modo da scaricare ed inviare parti di un file in modo casuale e non sequenziale. | 0.8.5 (27/1/2009) |
| 0.8.6 | La 0.8.6 introdusse molte riparazioni di bug, la traduzione in lingua italiana ed il supporto sperimentale al database dei risultati di ricerca che salvava tutti i nomi dei file trovati dalle ricerche o dall'instradamento. Questa funzione permise di ricavare tutti i file disponibili sulla rete in poco tempo. Nel database si potevano anche effettuare ricerche. Le versioni 0.8.6.1 e 0.8.6.2 ripararono molti bug. | 0.8.6 (22/3/2009) 0.8.6.1 (7/4/2009) 0.8.6.2 (30/5/2009) |
| 0.8.7 | La 0.8.7 introdusse molti cambiamenti nel modo in cui i client comunicano l'un l'altro. Inoltre, il numero massimo di download attivi poteva essere da allora impostato su un numero tra 1 e 12. Più erano i download attivi, minore era il numero di fonti permesso per ogni file. Le versioni dalla 0.8.7.1 alla 0.8.7.3 contenevano solo riparazioni di bug e l'aggiunta di nuove lingue (spagnolo). | 0.8.7 (19/6/2009) 0.8.7.1 (4/7/2009) 0.8.7.2 (29/8/2009) 0.8.7.3 (7/12/2009) 0.8.7.4 (21/2/2010) 0.8.7.5 (6/3/2010) 0.8.7.6 (19/6/2010) 0.8.7.7 (3/7/2010) 0.8.7.8 (25/9/2010) 0.8.7.9 (15/3/2011) |