RetroShare

Da EigenWiki.

RetroShare è un software per comunicare con pochi amici fidati (f2f) senza l'utilizzo di server centrali (distribuito, da portatile a portatile) e cifrato.

Installazione

Alcune delle distribuzioni Linux (ad esempio OpenSUSE) lo distribuiscono direttamente sui loro repository, per altre distribuzioni Linux e per altri sistemi operativi si può scaricare l'eseguibile/pacchetto gia compilato direttamente dal sito ufficiale, oppure lo si può compilare, ma non è semplicissimo.

Ottenere il sorgente

Sei davvero sicuro di volerci provare? Non ti basta la versione scaricabile da qui?

Qui ci sono le indicazioni per scaricare il codice sorgente, MAI MAI MAI fidarsi ad installare versioni compilate da sconosciuti e/o trovate all'interno di RetroShare, fidarsi SOLO del sito ufficiale.

sudo apt-get install subversion
svn co svn://svn.code.sf.net/p/retroshare/code/trunk retroshare-trunk

oppure

 svn co svn://svn.code.sf.net/p/retroshare/code/branches/v0.5.5 retroshare-0.5.5

per avere una versione meno recente ma più stabile.

Compilare su Linux

Sei davvero sicuro di volerci provare? Non ti basta la versione scaricabile da qui?

Installa millemila dipendenze randomiche, dipendono da quale Linux hai, puoi provar ad installare la lista che c'è sotto per Debian/Ubuntu, poi durante la compilazione compariranno errori per ogni pacchetto necessario da cui capirai quali dipendenze ti mancano.

Compilare su altri OS

Indicazioni per Linux qui consigliano di compilarsi pure rsctrl e retroshare-nogui ma credo che alla maggior parte della gente non servano.

Compilare RS con interfaccia grafica su Debian Linux o Ubuntu

Sei davvero sicuro di volerci provare? Non ti basta la versione scaricabile da qui?

Questa guida è basata su quella ufficiale, differisce per essere mirata alla compilazione di solo retroshare-GUI cioè del minimo che serve per avere un retroshare con interfaccia grafica.


Per compilare:

- installa il software da cui dipende retroshare. Su ubuntu e debian:

sudo apt-get install subversion libglib2.0-dev libupnp-dev qt4-dev-tools libqt4-dev libssl-dev libxss-dev \
libgnome-keyring-dev libbz2-dev libqt4-opengl-dev libqtmultimediakit1 qtmobility-dev libspeex-dev libsqlcipher-dev \
libspeexdsp-dev libxslt1-dev libprotobuf-dev protobuf-compiler cmake libcurl4-openssl-dev tcl libsqlite3-dev 

- crea una nuova cartella (es. ~/retroshare-trunk) e scarica il codice sorgente (se non già fatto, come indicato sopra)

svn co svn://svn.code.sf.net/p/retroshare/code/branches/v0.5.5 retroshare-0.5.5

oppure, se vuoi provare a compilare l'ultimissima, instabile versione:

svn co svn://svn.code.sf.net/p/retroshare/code/trunk retroshare-trunk

- spostati nella nuova cartella

cd retroshare-0.5.5

A questo punto può avvenire la compilazione delle componenti di retroshare. Ci metterà un po', a seconda di quanto è veloce il computer.

- libbitdht

cd libbitdht/src && qmake && make clean && make -j 2 

- openpgpsdk

cd ../../openpgpsdk/src && qmake && make clean && make -j 2

- libretroshare

cd ../../libretroshare/src && qmake && make clean && make -j 2

- pegmarkdown (serve solo se volete compilare la versione trunk)

cd ../../supportlibs/pegmarkdown && qmake && make clean && make -j 2

- retroshare-gui (gui = con interfaccia grafica)

cd ../../retroshare-gui/src && qmake && make clean && make -j 2

Compilare RS i plugin su Debian Linux

VOIP = Voice Over IP

Sono disponibili diversi plugin, FeedReader, LinksCloud e VOIP.

Il plugin VOIP necessita di qtmobility e libspeexdsp

sudo apt-get install qtmobility-dev libspeexdsp-dev

Puoi compilare tutti i plugin insieme

cd src/plugins/ && qmake && make clean && make

oppure separatamente, spostandoti nelle relative cartelle, ad esempio

cd src/plugins/VOIP && qmake && make clean && make

Il risultato della compilazione, i file lib*.so* vanno copiati nella cartella ~/.retroshare/extensions/

mkdir -p ~/.retroshare/extensions
cp -P {FeedReader,LinksCloud,VOIP}/lib*.so* ~/.retroshare/extensions/
oppure
cd VOIP && cp -P libVOIP.so*  ~/.retroshare/extensions/

Retroshare, come misura di sicurezza, mostra un avviso ogni volta che questi file cambiano, quindi se li hai appena copiato o aggiornato i file non preoccuparti.

Compilare RS con interfaccia testuale su Debian Linux

Prova a seguire le istruzioni presenti qui (ma perché non usano libssh pacchettizzato che c'è nei repository?).

Problemi di compilazione

Solitamente gli errori sono lamentele per pacchetti mancanti che dovrete installare, sono spesso una quantità snervante di errori simili a questi:

fatal error: bzlib.h: File o directory non esistente (cioè ti serve libbz2-dev)
fatal error: gnome-keyring-1/gnome-keyring.h: File o directory non esistente (cioè ti serve libgnome-keyring-dev)
make: /usr/bin/uic-qt4: Command not found (cioè ti serve libqt4-dev-bin)
fatal error: QObject: File o directory non esistente (cioè ti serve libqt4-dev)
fatal error: X11/extensions/scrnsaver.h: File o directory non esistente (cioè ti serve libxss-dev)

In questo caso dovrete andar a scoprire in quale pacchetto della vostra distribuzione è contenuto il file mancante, ad esempio per Debian potete usare l'ultimo campo di ricerca in fondo a questa pagina o per Ubuntu su questa.

Se alcuni errori non scompaiono dopo aver installato la dipendenza potete provar a ricominciare la compilazione dall'inizio con

make clean

che cancellerà tutti i file compilati, e dunque ricominciare.

Se fin qui non vi siete bloccati per errori randomici (impossibile) potete lanciare RetroShare con

Lanciare RetroShare

Aprite la cartella retroshare-trunk/src/retroshare-gui e fate doppio click sul file "RetroShare" sennò potete aprire da terminale:

retroshare-trunk/src/retroshare-gui/src/RetroShare 2> /dev/null &

(il 2> /dev/null & serve per non avere troppo output inutile sul terminale).

Malfunzionamenti

Come quasi tutti i programmi che fanno uso della rete, molti problemi possono essere causati dall'avere l'orologio del pc non sincronizzato con gli orologi dei propri amici, per cui assicuratevi di aver configurato bene l'orologio e il fuso orario di sistema.

Utilizzo

La sicurezza di RetroShare è basata sul connettersi direttamente ( in modo non anonimo ) solo ad amici fidati certificando l'identità dei peers, qui sta il fulcro della sua "sicurezza", nell'essere certi di comunicare direttamente solo con persone fidate.

Dunque RetroShare cerca di impedire che le tue comunicazioni vengano viste da peers di cui non ti fidi (GDF, D1g0s, etc). Se il processo di aggiunta degli amici viene fatto con troppa leggerezza (ad esempio usando le chiavi presenti su un wiki modificabile da cani e porci) senza verificarne il fingerprint ci si gioca la propria sicurezza e l'utilizzo di RetroShare diventa completamente inutile producendo solo un senso di falsa sicurezza.

Aggiungi solo chiavi PGP/GPG che sei sicuro/a essere di amici fidati. Per esser sicuri che una chiave PGP/GPG sia di un amico fidato dovresti chiedergli di persona il fingerprint (una stringa di una decina di caratteri e numeri) della sua chiave PGP/GPG e poi controllare di aggiungere solo la chiave col fingerprint corrispondente.

Rischi

Come in ogni programma e ancor di più in quelli che cercano di proteggere la vostra privacy, ciascuna funzione è concepita per esser utilizzata in un certo modo, non studiarne bene il funzionamento può compromettere seriamente la propria privacy. Come al solito non ci si può fidare di qualcosa che non si conosce perché potrebbe funzionare MOLTO diversamente da come ci si immagina.

Aggiunta di contatti fidati senza verificarne l'identità

Quando si aggiunge il certificato di un amico bisogna essere sicuri al 100% che il certificato sia il suo, il modo più naturale di fare ciò è controllare la catena di fiducia dalla propria chiave alla chiave dell'amico. Tradotto: se hai firmato la sua chiave pgp con la tua chiave pgp verificando di persona che quello che stavi firmando fosse proprio la sua chiave, allora ti puoi fidare; se hai firmato la chiave di un amico in comune che a sua volta ha firmato la chiave di chi stai aggiungendo (in questo modo indicandoti che ne ha verificato la corrispondenza persona-chiave) ti puoi fidare abbastanza (dipende da quanto ti fidi dell'amico in comune e da quanto questo abbia capito come funziona una rete di fiducia).

Riassumendo: o si verificano le firme o si verifica di persona il fingerprint del certificato o il certificato stesso.

Chiaramente se non si fa così ci si espone ad attacchi man in the middle, in cui un tizio malvagio legge in chiaro e senza fatica tutte le comunicazioni private e lo scambio di contenuti che avviene tra te e l'altro amico e nessuno dei due se ne accorgerebbe.

Assenza di plausible deniability

Quando usi messaggi firmati stai certificando a chi leggerà che il messaggio è stato scritto proprio da chi lo firma, e quindi se questo stesso messaggio venisse ricevuto anche da un malintenzionato (ad esempio un backup finito nelle mani sbagliate o una persona che usa il tuo pc o un man in the middle), l'autore non potrebbe negarne la paternità, è firmato con PGP/GPG dunque solo lui ne può essere l'autore e il responsabile.

Contromisure

Non date il vostro computer a cani porci e simili. Mettete i vostri backup solo in posti fidati. In casi estremi andate in vettovaglie a dare la vostra chiave publica e privata a tonino (quello che suona le pentole) in modo da poter dimostrare che chiunque avrebbe potuto firmare quel messaggio e non solo voi visto che la chiave privata e' compromessa (Invece di darla a tonino potreste pensare che sia efficace anche pubblicarla su un sito, pero' cosi' potrebbe anche andare a finire in mani smaliziate che potrebbero usarla per decifrare i vostri messaggi (mentre se la date a tonino non credo che lo faccia, pero' credo basti per dimostrare che qualcun'altro avrebbe potuto))

Condivisione files

Se si vuole condividere un file privato solo con poche persone bisogna fare molta attenzione: in assenza di accortezze mirate è certo che nel giro di pochi minuti quel file potrà essere scaricato da un ampissimo numero di persone.

Anche se il file in questione si trovasse in una cartella in cui è stato disabilitata l'opzione "Directory is accessible by anonymous tunnels from any friend" (che tradotto dal retrosharese vuol dire: il tizio della GdF che è amico dell'amico dell'amico che hai tra gli amici può trovare questo file tramite la funzione cerca e scaricarlo passando dagli amici in comune a te, non capirà che il file glielo passi tu (tu lo passi al tuo amico, che lo passa al suo amico che lo passa al finanziere), ma ne può leggere il contenuto) o se passi il file da dentro una chat, quando la persona a cui vuoi passare il file lo scaricherà questo file verrà salvato nella cartella Downloads, che di default è "accessible by anonymous tunnels from any friend" dunque chiunque al mondo riuscirebbe a trovarlo tramite la funzione cerca ed a scaricarlo. Paradossalmente era meglio allegarlo ad una email.

Per essere sicuri che un file venga condiviso solo con una ristretta cerchia di amici, bisogna che TUTTI in quella ristretta cerchia di amici scarichino il file in una cartella visibile solo alla cerchia ristretta, e non nella cartella di Download (che e` il defualt e per default e' condivisa anche anonimamente(=chiunque puo` scaricare in modo anonimo quello che c'e` dentro)).

Diffusione di link retroshare://

RetroShare permette di ottenere dei link ai contenuti che assomigliano a questo

retroshare://file?name=rapina-15-gennaio-2014-poste-via-del-pontiere.pdf&size=51795&hash=a79351527b56663357899a7211dd22d954c00110

che può essere cifrato quanto volete ma nel testo del link riportato qui sopra è contenuto il nome del file, che spesso è indicatore del contenuto, per cui se volete condividere dei link compromettenti cambiategli la parte name visto che il file non viene identificato dal nome ma dalla dimensione e dall'hash, per esempio il link precedente diventerebbe

retroshare://file?name=immanuel_casto-come_e_bella_la_cappella-lyrics.pdf&size=51795&hash=a79351527b56663357899a7211dd22d954c00110

potete notare hash e size invariati, i vostri amici potranno successivamente rinominare il file

Chat lobby

Nelle chat lobbies pubbliche può entrare chiunque e con il nick che gli pare, per cui non ti puoi fidare di nessuno, i nickname che vedi potrebbero essere falsificati senza difficoltà. Due modi, come esempio: quando sei in una chat lobby puoi cambiare il tuo nickname in qualcos'altro di tuo gradimento; oppure puoi creare una nuova identità (una nuova chiave pgp/gpg) con il nome che desideri e poi entrare nella chat lobby spacciandoti per chi vuoi.

Tracciamento tramite DHT

Aprendo RetroShare di default partecipiamo ad una DHT (si puo' disabilitare), una tabella accessibile pubblicamente in cui pubblichiamo il nostro IP, per semplificare la connessione con gli altri peer. Questo rende molto più efficace la connessione con gli amici ma il fatto di pubblicare il nostro IP permette una geolocalizzazione ogni volta che apriamo RS. Per interrogare la DHT serve conoscere una certa stringa che ci identifica, pare che questa stringa venga comunicata solo agli amici. Il contenuto della DHT può anche essere modificato utilizzando 8 fonti che inseriscono informazioni false usando quella stringa identificativa, dunque possono scriverci dentro un ip sbagliato per farsi contattare dai tuoi amici (che poi non ci comunicano perché la chiave pgp non corrisponde) e segnarsi i loro IP. Gli IP pubblici e statici presenti nel sorgente di RS che servono per fare il bootstrap della DHT, cosa possono sapere su di noi? Quasi zero anche perche` la DHT che viene usata e` quella di bittorrent che potrebbe essere usata per altre 10000 applicazioni diverse quindi l'unica informazione che stai pubblicando e', "questo id DHT" corrisponde "a questo ip:porta".

Aggiunta di contatti non fidati

RetroShare è una rete friend2friend, il caso in cui aggiungi come contatto uno che non è tuo amico non è nemmeno contemplato tra le situazioni in cui difendersi. Se aggiungi un peer non fidato o se un peer clicca su "ricorda la password" quando fa il login su RS (e dunque salta buona parte della sicurezza) o se un peer perde la sua chiave privata di RS (ad esempio lasciando accedere ad altri ad un backup del suo pc) beh, questo contatto malvagio può sapere con chi comunichi, quando sei attivo alla tastiera, chi altro hai aggiunto come amico, può sfogliare parte dei tuoi files, può sapere a quali chat lobby, quali forum e quali canali sei iscritto etc etc.

Installazione di versioni di RetroShare compilate da estranei

All'interno di RS sono molto popolari canali in cui vengono condivise versioni precompilate di RS, ad esempio molti utenti windows utilizzano questi file per avere l'ultimissima versione di RS. Ovviamente chi compila può decidere di modificare RS per far fare al nostro pc qualsiasi cosa lui voglia.

Leak della chiave PGP/GPG e della password

Dobbiamo essere consapevoli che anche RetroShare può avere dei bug (che magari hanno le potenzialità di essere usarti come backdoor, come tutti i software, ma retroshare con la sua crescita vertiginosa potrebbe essere peggio) o sviluppatori in malafede che introducono backdoors (come tutti i software?) o potremmo aver installato una versione compilata da sconosciuti che possono aver modificato il sorgente. In questo caso sia la chiave privata PGP/GPG che la password che la protegge potrebbero venirci rubati. Senza dubbio è consigliabile usare la chiave di RetroShare solo per RetroShare, in modo che in caso di furto i danni siano limitati e non venga compromessa la chiave principale (usata per decifrare mail, firmare mail, accedere a server etc).