RetroShare
RetroShare è un software per comunicare con pochi amici fidati (f2f) senza l'utilizzo di server centrali (distribuito, da portatile a portatile) e cifrato.
Installazione
Si può scaricare direttamente dal sito ufficiale, OPPURE 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
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.
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
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.
To compile:
- install the package dependencies. On ubuntu:
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 \ libspeexdsp-dev libxslt1-dev libprotobuf-dev protobuf-compiler cmake libcurl4-openssl-dev
- create project directory (e.g. ~/retroshare-trunk) and check out the source code (se non già fatto, come indicato sopra)
svn co svn://svn.code.sf.net/p/retroshare/code/trunk retroshare-trunk
- go to your svn base directory
cd retroshare-trunk
- create a new directory named lib
mkdir lib
- get source code for sqlcipher, and build it (only needed for GXS) GXS è il nuovo sistema di cache che avrà RetroShare, che userà sqlcipher per avere un database cifrato
cd lib git clone git://github.com/sqlcipher/sqlcipher.git cd sqlcipher ./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="-lcrypto" make cd ..
- go to your retroshare source base directory
cd src
- go to libbitdht and compile it
cd libbitdht/src && qmake && make clean && make -j 4
- go to openpgpsdk and compile it
cd ../../openpgpsdk/src && qmake && make clean && make -j 4
- go to supportlibs and compile it
cd ../../supportlibs/pegmarkdown && qmake && make clean && make -j 4
- go to libretroshare and compile it
cd ../../libretroshare/src && qmake && make clean && make -j 4
- go to retroshare gui and compile it
cd ../../retroshare-gui/src && qmake && make clean && make -j 4
Compilare RS il plugin VOIP su Debian Linux
VOIP = Voice Over IP
sudo apt-get install qtmobility-dev libspeexdsp-dev cd retroshare-trunk/src/plugins/VOIP qmake make mkdir -p ~/.retroshare/extensions cp -P libVOIP.so* ~/.retroshare/extensions/
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
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
Molti problemi possono essere causati dall'avere l'orologio del pc non sincronizzato con gli orologi dei propri amici. Sistemare l'orologio e il fuso orario.
Utilizzo
RetroShare non protegge l'anonimato, al contrario assicura e certifica l'identità dei peers, qui sta il fulcro della sua "sicurezza", nell'essere certi di comunicare con persone fidate.
Dunque RetroShare cerca di impedire che i tuoi dati vengano visti da sconosciuti. Se il processo di aggiunta degli amici viene fatto con troppa leggerezza (ad esempio fidandosi delle chiavi presenti su un wiki modificabile da cani e porci) 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
Ciascuna funzione in RetroShare è 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
Il fatto che RetroShare certifichi (non in tutte le sue funzioni) che il messaggio che stai leggendo sia stato scritto proprio da chi lo firma implica che 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.
Condivisione files
Se si vuole condividere un file privato solo con poche persone, RetroShare è lo strumento sbagliato. Nel giro di poche ore quel file potrebbe essere scaricato da chiunque.
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.
Il modo sicuro per inviare via internet un file in modo privato è cifrarlo con PGP/GPG ed inviare in un qualsiasi modo il file cifrato (è circa quello che si fa allegando un file ad una email cifrata con Thunderbird + EnigMail).
Chat lobby
Quando sei su una chat lobby, 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.
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.
Tracciamento tramite DHT
Aprendo RetroShare partecipiamo ad una DHT, una tabella accessibile pubblicamente in cui pubblichiamo il nostro IP, per semplificare la connessione con gli altri peer. Questo rende molto più efficace la connessine 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, non ho ancora capito chi ha accesso a questa stringa) Gli IP pubblici e statici presenti nel sorgente di RS che servono per fare il bootstrap della DHT, cosa possono sapere su di noi?
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.
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?). In questo caso sia la chiave privata PGP/GPG che la password che la protegge potrebbero venirci rubati. Secondo me è meglio 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).