|
Freenet FAQ
Concetti e Filosofia
- 1.1 Cos'è Freenet ?
- 1.2 Perché Freenet è interessante ?
- 1.3 Chi c'è dietro Freenet ?
- 1.4 Dove posso sapere di più su Freenet?
2. Dettagli tecnici
- 2.1 Come vengono gestiti i nomi delle risorse in Freenet?
- 2.2 È possibile effettuare ricerche in Freenet?
- 2.3 I documenti possono venire inseriti e rimossi ?
- 2.4 Come gestisce Freenet i documenti e lo spazio su disco?
- 2.5 Cosa impedisce l'eliminazione di documenti importanti?
- 2.6 Freenet è accessibile attraverso il web?
- 2.7 Com'è Freenet confrontato con altri meccanismi di file sharing?
3. Questioni di sicurezza
- 3.1 Può l'attacco X compromettere l'anonimato in Freenet ?
- 3.2 Freenet è vulnerabile agli attacchi stile flooding ?
- 3.3 Perché gli hash come chiavi ed i dati cifrati se un operatore può comunque identificare le risorse se vuole ?
- 3.4 E riguardo ai nodi ostili all'interno della rete stessa ?
- 3.5 Se divento un nodo Freenet, altre persone possono accedere ad informazioni presenti sulla mia macchina ?
- 3.6 E l'attacco X ?
4. Contribuire al progetto
- 4.1 Ho questa bellissima idea ...
- 4.2 Posso contribuire al progetto ?
- 4.3 È necessario possedere una connessione permanente per essere un nodo?
- 4.4 Come posso accedere al codice sorgente ed al sito web?
- 4.5 Di quali tools necessito per contribuire allo sviluppo?
- 4.6 Perché java?
- 4.7 Posso scrivere software in altri linguaggi?
5. Installazione e utilizzo del software
- 5.1 Su quali piattaforme gira Freenet?
- 5.2 Perché Winzip non apre correttamente i file tar o tgz?
- 5.3 Perché mi segnala l'errore "Class Not Found" quando
- 5.4 Come faccio a trovare altri nodi a cui connettermi? (Cosa è "inform.php"?)
- 5.5 Come scopro quali chiavi esistono in Freenet?
- 5.6 Cosa vuol dire " Bad handshake from node "?
- 5.7 Cosa vuol dire " Newer build N is available than this build Y, please upgrade "?
1. Concetti e Filosofia
1.1 Cos'è Freenet ?
Freenet aspira a creare un sistema per pubblicare informazioni simile al World wide web (ma con diverse importanti migliorie rispetto ad esso) ed è basato su un protocollo ideato da Ian Clarke ed illustrato nel suo documento A Distribuited Decentralised Information Storage and Retrieval System. Un'informazione può essere inserita nel sistema associata ad un chiave (di solito qualcosa in grado di descriverla ad esempio "/testo/filosofia/sun tzu/l'arte della guerra"). In seguito chiunque può richiederla utilizzando la chiave appropriata. Sotto questo aspetto è simile al World Wide Web, dove per ottenere un qualche documento devo conoscere l'url corrispondente.
Al contrario del Web, in Freenet le informazioni non sono immagazzinate in un luogo fisso e non sono soggette ad alcun tipo di controllo centralizzato. Freenet è un unico contenitore di informazioni che immagazzina, mantiene e distribuisce su richiesta. Questo rende Freenet per alcuni versi più efficiente rispetto al Web, e soprattutto permette di pubblicare un'informazione senza dover temere qualche forma di censura, poiché non è possibile tracciare il percorso dei singoli documenti alla sorgente né capire dove questi risiedano fisicamente. Per partecipare a questo sistema gli utenti devono semplicemente lanciare un server sul proprio computer, e volendo utilizzare un client per inserire e rimuovere le informazioni. Chiunque può scrivere un client o anche un server perché Freenet si basa su di un protocollo aperto. Le implementazioni di riferimento per questi programmi sono state scritte in java.
1.2 Perché Freenet è interessante ?
- Freenet non possiede alcun sistema di controllo centralizzato.
- È teoricamente impossibile rimuove qualsiasi informazione da Freenet.
- Sia chi produce informazione che chi la usa può rimanere anonimo, se lo desidera.
- L'informazioni vengono distribuite all'interno della rete in modo che sia molto difficile capire dove risiedano.
- Chiunque può fornire informazioni. Non è necessario acquistare un dominio o avere una connessione permanente ad internet.
- L'accessibilità ad una certa risorsa cresce in base alla domanda.
- L'informazione viene spostata dalle aree di internet in cui vi è poca richiesta alle aree dove la domanda è maggiore.
1.3 Chi c'è dietro Freenet ?
Ian Clarke ne è il coordinatore. Altri sviluppatori sono elencati nella home page, e cambieranno nel tempo, in quanto Freenet è un progetto costruito da volontari, liberi di partecipare o lasciare il progetto in ogni momento.
1.4 Dove posso sapere di più su Freenet?
Dai un'occhiata alla http://encryptionhowto.sourceforge.org homepage di Freenet
Qui puoi trovare altra documentazione, visionare o iscriverti ai vari gruppi di discussione, scaricare il software, e altro.
2. Dettagli tecnici
2.1 Come vengono gestiti i nomi delle risorse in Freenet?
In nessuno modo. Diverse proposte sono state esaminate, ma permettere una qualche forma di gestione, significa introdurre un qualche elemento di controllo centralizzato. Fare in modo che le chiavi siano hash dei dati, risolve il problema, ma ne introduce di nuovi. Attualmente il meccanismo è basato su una regola stile "first-come-first-served", ma con un poco di democrazia, per prevenire abusi simili a quelli possibili con i DNS. Questo è uno degli argomenti principali che verranno discussi e si spera fissati nella prossima versione.
2.2 È possibile effettuare ricerche in Freenet?
Nessun meccanismo è stato ancora implementato. Uno dei principali obiettivi è rendere impossibile l'individuazione del luogo in cui le singole informazioni risiedono. Chiaramente questo rende molto difficile la ricerca. Attualmente la richiesta delle informazioni avviene attraverso delle chiavi, che dovrebbero essere facilmente indovinabili, o comunicate in altra maniera.
Alcune proposte per facilitare le ricerche in Freenet sono state prese in considerazione per il futuro. Ad esempio i documenti potrebbero contenere degli hyperlinks che potrebbero essere indicizzati con degli spider come avviene ora per il web. Altrimenti, liste di chiavi e o altro materiale che descriva il contenuto dei documenti potrebbe essere messo in circolazione all'interno della rete.
2.3 I documenti possono venire inseriti e rimossi ?
Attualmente l'inserimento di un documento con il medesimo nome di uno già presente serve alla maggiore diffusione della risorsa già esistente. Inoltre non esiste il modo di eliminare documenti da Freenet. Eventualmente un documento mai richiesto viene rimosso per il mancato utilizzo.
Alcune proposte per creare un meccanismo più utilizzabile sono state valutate, e una di esse verrà implementata in un prossima versione. Per esempio, i documenti potrebbero essere inseriti insieme alla loro chiave pubblica e soltanto i cambiamenti firmati con la corrispondente chiave privata verranno accettati. Non sarà possibile modificare documenti non firmati.
In alternativa, qualche sistema per la gestione delle versioni di un documento potrebbe mantenere traccia di tutte le sue precedenti versioni.
2.4 Come gestisce Freenet i documenti e lo spazio su disco?
Ciascun operatore specifica il limite massimo di risorse di sistema che potranno essere utilizzato da Freenet.
Lo spazio potrà essere su disco, o per i paranoici, direttamente in ram. Quando lo spazio viene esaurito, il documento meno richiesto, viene eliminato, per fare posto.
2.5 Cosa impedisce l'eliminazione di documenti importanti?
Freenet non vuole essere un archivio eterno. Dal momento che il sistema è completamente democratico non distingue tra la dichiarazione dei diritti dell'uomo e il mio libro sul giardinaggio - i documenti vengono ordinati solo in base al numero di richieste. Se il basso costo delle periferiche per la conservazione dei dati permetterà che vi sia abbastanza spazio in Freenet, soltanto di rado ci sarà bisogno di rimuovere un documento.
Attualmente Freenet non tiene conto delle dimensioni di un file, quindi un singolo grande file potrebbe essere spezzato in parti più piccole. Il meccanismo di contabilizzazione delle richieste è stato modificato per adattarsi a questo comportamento.
2.6 Freenet è accessibile attraverso il web?
Esiste un programma chiamato FCRC (incluso nei sorgenti di Freenet), che fa da gateway, consentendo di accedere a Freenet dal web. Alla data attuale (Marzo 2000) non è possibile per i nodi Freenet distribuire informazioni presenti sul web. I documenti in Freenet, possono chiaramente contenere URLS o riferimenti a risorse conservate in qualsiasi altro luogo.
2.7 Com'è Freenet confrontato con altri meccanismi di file sharing?
All'apparenza Freenet funziona in maniera simile ad altri software, come Napster o Gnutella. Ma dal momento che Freenet è stato progettato con scopi differenti, a più basso livello, ed in generale il suo comportamento, risultano differenti. Napster, ad esempio, gira su un singolo server centrale.
Freenet è decentralizzato, la sua capacità di adeguarsi a diversi scenari lo rende più efficiente rispetto ad altri sistemi, più scalabile, e meno vulnerabile agli attacchi.
3. Questioni di sicurezza
3.1 Può l'attacco X compromettere l'anonimato in Freenet ?
Freenet non garantisce un animato reale, almeno non come potrebbe fare un remailer Mixmaster o cypherpunk. La maggior parte degli attacchi non banali ( analisi avanzata del traffico, la compromissione della maggior parte dei nodi, etc ), avrebbero probabilemente successo nell'identificare una richiesta in freenet.
In Freenet, comunque sia, la tua identità viene rivelata al primo nodo col quale parli, ed anche se ti limiti a dialogare solo con nodi fidati ( una caratteristica che verrà implementata in futuro ), questi dovranno parlare col resto della rete prima o poi. L'anonimato che freenet è in grado di realizzare è in realtà soltanto una sorta di occultamento reso possibile dal fatto che è difficile che il tuo nodo non stia agendo da semplice proxy per la richiesta, o che non stia inserendo dati per conto di una terza parte ( che potrebbe però a sua volta agire da proxy ).
Il problema è che per garantire un'anonimato reale è necessario che il client controlli direttamente l'instradamento dei dati, e quindi li cifri con le chiavi corrispondenti ad i nodi che attraverserà ( stile Mixmaster ). Il routing dinamico di freenet non può offrire questo, per ottenere un anonimato reale, dovresti spedire il messaggio da un rete esterna a freenet attraverso una catena di anonymous remailer ( un futuro gateway Freenet->SMTP renderà possibile tutto ciò ).
3.2 Freenet è vulnerabile agli attacchi stile flooding ?
Risposta breve: no.
Risposta articolata: Pensiamo di no. Oltre a proteggere la libertà di parola, Freenet è inoltre studiato per essere un efficiente sistema di caching dinamico. Se una risorsa è molto richiesta da un numero limitato di nodi, i nodi attraverso i quali passa l'informazione la tengono in cache, diminuendo il carico della rete. Se le informazioni vengono inserite in un gruppo ristretto di nodi e successivamente richieste molto ed in maniera ripetitiva da un altro gruppo, nella topologia della rete entrambi i gruppi vengono fusi in un terzo, in quanto "vicini", e soltanto i nodi, obiettivi originali dell'attacco ne sono coinvolti.
In altre parole, al fine di piegare Freenet con un attacco stile flood dovresti costantemente cambiare il punto di accesso alla rete ed inserire e richiedere continuamente nuovi dati, e comunque accresceresti semplicemente il carico di lavoro per la rete in maniera lineare a quello delle macchine usate per l'attacco. Essendo fortemente determinati, data una disponibilità di risorse maggiore rispetto a quella totale della rete, è possibile paralizzare qualsiasi rete ( anche internet ), ma è nostra intenzione rendere Freenet il più robusto possibile di fronte a questo tipo di attacchi.
3.3 Perché gli hash come chiavi ed i dati cifrati se un operatore può comunque identificare le risorse se vuole ?
Cifrare i dati ed usare valori hash per le chiavi non vuole essere un modo per fare sì che gli amministratori non sappiano cosa risieda sulla loro macchina ( dopo tutto, possono risalire alla corrispondenza tra risorsa e valore hash come chiunque altro la richieda ), l'idea è piuttosto di sgravare gli amministratori dalla responsibilità di conoscere il contenuto delle informazioni che ospitano se non lo desiderano.
Questa è una distinzione più legale che tecnica. Non è realistico aspettarsi che l'amministratore di un nodo provi continuamente a ricercare od indovinare possibili chiavi e le confronti con quelle presenti sulla propria macchina ( anche se dal punto di vista della sicurezza questo potrebbe essere la base per un qualche tipo di attacco ), quindi nell'ambito di una società ragionevole è piuttosto verosimile ritenere un amministratore non responsabile per le informazioni che circolano in rete.
3.4 E riguardo ai nodi ostili all'interno della rete stessa ?
L'esistenza di nodi nocivi all'interno della rete è uno dei problemi più grossi che un sistema distribuito deve affrontare, ed il flagello di tutte le mie precedenti idee. Molti sistemi ( come le reti per i giochi multiplayers ) tentano di risolvere mantenendo segreto il protocollo ed il codice che lo implementa, ma non ho mai visto un sistema siffatto durare nel tempo. E comunque questo approccio è diametralmente opposto alla filosofia di Freenet.
Freenet è basato su di un equilibrio costruito in base ai cicli di risposte positive o negative che consegnano le richieste ad un nodo se questo funziona correttamente e lo evitano se non è attivo. La chiave per risolvere il problema dei nodi ostili è ( come per il corpo ) di essere sicuri che questi cicli possano correttamente identificare anche un nodo maligno progettato con molta cura e di conseguenza lo escludano dalla consegna dei dati. Questa caratteristica non è stata ancora aggiunta al codice attuale, ma una serie di possibili soluzioni ( per esempio permette ai clients di votare la validità di un'informazione ricevuta in seguito ad una richiesta, e fare in modo che tutte le informazioni vengano indicizzate in base ad un hash calcolato sul contenuto già a basso livello ) sono in fase di discussione fin da ora.
3.5 Se divento un nodo Freenet, altre persone possono accedere ad informazioni presenti sulla mia macchina ?
No i nodi pubblicano soltanto le informazioni che si è deliberatamente scelto di condividere. Dal momento che il codice per il progetto è aperto, è possibile esaminarlo e verificare. Naturalmente se voi o qualcun'altro mettete in rete informazioni che dovrebbere invece rimanere riservate, c'è poco da fare. In ogni caso i danni causati da fuga di dati personali in Freenet sono piuttosto limitati. Quando la sorgente dei dati è nota è possibile applicare le normali vie legali. In caso di anonimato l'informazione non avrà grossa credibilità.
3.6 E l'attacco X ?
Freenet è in fase di testing ed è possibile esistano attacchi che non abbiamo ancora considerato. Se pensi di aver trovato realmente un nuovo tipo di attacco, noi siamo interessati a parlarne. Tieni solo presente che cosa è Freenet e cosa non è. Nessuna rete può offrire tutto a tutti, e ci sono alcune tematiche relative alla sicurezza ( come l'anonimato, discusso sopra ) che per la natura stessa di Freenet, non è possibile estendere a piacimento. Se questo ti infastidisce, tutto il codice è disponibile liberamente, è possibile dunque riusarlo e modificarlo per costruire una rete che soddisfi i propri bisogni.
4. Contribuire al progetto
4.1 Ho questa bellissima idea ...
Figo! Primo: leggi gli archivi della lista. Ci sono buone probabilità che qualcuno abbia già avuto la stessa idea e l'abbia discussa con il gruppo. Quindi o è stata trovata una falla, o si è deciso di rimandarne l'implementazione. Alcuni esempi di idee già discusse: immagazzinare le informazione ricavando un hash del contenuto del file, redirezione delle chiavi, firmare chiavi/dati, utilizzo di UDP, ricerca dei server, URLS, gestire la versione dei documenti, e altri. Se non vedi la tua idea tra le precedenti, inviala comunque nella lista appropriata.
4.2 Posso contribuire al progetto ?
Minchia sì. Se non hai tempo per diventare un co-sviluppatore, puoi contribuire in altra maniera: aiutare a testare Freenet installando e configurando il server sulla tua macchina.
Installare il client e provare a recuperare dei documenti ed inserire i propri.
Lavorare sul sito di Freenet (comprese queste FAQ).
Contribuire alla discussione con le proprie idee.
Sviluppare applicazioni che girano in Freenet.
4.3 È necessario possedere una connessione permanente per essere un nodo?
No, ma è meglio. Puoi far girare il software e testarlo anche da una connessione non fissa (tipico scenario modem/ISP), ma perché la rete sia veramente utile, abbiamo bisogno di nodi permanenti.
Una prossima versione di Freenet sfrutterà al meglio anche le connessioni non fisse.
4.4 Come posso accedere al codice sorgente ed al sito web?
Il progetto Freenet viene ospitato da Sourceforge. Dovrai crearti un account, quindi mandare un email al coordinatore del progetto chiedendogli di aggiungerti al gruppo. Maggiori dettagli sono disponibili sul sito.
4.5 Di quali tools necessito per contribuire allo sviluppo?
Per quanto riguarda il server hai bisogno di un qualche tools java compatibile con il JDK 1.1 o successive. Per scaricare ed aggiornare il codice da SourceForge serve una qualche versione di CVS (questo non è strettamente necessario se vuoi solo scaricare, compilare e far girare il server, senza contribuire al suo sviluppo). Per contribuire al sito devi aver SSH. Altre informazioni sul server sono incluse nel codice.
4.6 Perché java?
- È uno dei maggiori linguaggi multi-piattaforma attualmente disponibili.
- Esistono implementazioni free come Kaffe. Ed assicuriamo che Freenet sarà sempre compatibile con queste, anche se la Sun tenta di rendere difficile lo sviluppo di versioni free, per mantenere forte la propria versione proprietaria.
- Ha un ottimo supporto per il networking.
- È più facile da debuggare rispetto ad altri linguaggi, tipo il c++. Questo ci permette di sviluppare in maniera veloce ed efficiente.
4.7 Posso scrivere software in altri linguaggi?
Certamente, attualmente ad esempio, esiste un client Freenet chiamato Liberator (disponibile tra i sorgenti di Freenet) scritto in perl. Nulla nel protocollo è legato al java, quindi sino a quando si segue il protocollo il programma sarà compatibile.
Sfortunatamente (alla data attuale marzo 2000) il protocollo non è ancora molto ben documentato.
5. Installazione e utilizzo del software
5.1 Su quali piattaforme gira Freenet?
Il codice iniziale del server di Freenet è stato scritto in Java, quindi in teoria dovrebbe girare su qualsiasi piattaforma con un ambiente runtime java.
Gli sviluppatori del core operano su linux,ma ci sono anche parecchi utenti Windows. È stato segnalato che può funzionare anche su Macintosh, ma le implementazioni java disponibili sono limitate e con bachi e si hanno poche informazioni a riguardo.
5.2 Perché Winzip non apre correttamente i file tar o tgz?
Qualche web browser salva erroneamente i file .tgz (tipo gli snapshots giornalieri di CVS) con un'estensione .tar dopo il downloading. Basta rinominare il file in .tgz così WinZip saprà riconoscerlo correttamente.
WinZip potrebbe segnalare che l'archivio contiene un singolo file .tar, e ti chiederà se lo vuoi decomprimere in un file temporaneo ed aprirlo. È corretto il .tgz è una versione compressa del file .tar, proprio quello che vuoi aprire.Rispondi di si e farà la cosa giusta.
5.3 Perché mi segnala l'errore "Class Not Found" quando attivo il nodo?
Probabilmente dipende dal settaggio del CLASSPATH.
Nella Java VM basata sul Sun's JDK 1.1, ogni directory, file .JAR o .ZIP dal quale dovrebbero essere caricate le classi (comprese quelle standard) deve essere specificato come argomento nella riga di comando.
java -classpath....
Ad esempio, se il JDK 1.1 risiede nella directory /usr/jdk11, e hai creato un file Node.class in /home/lee/Freenet, allora il comando (Unix) risulterà essere:
java -classpath /usr/jdk11/lib/classes.zip:/home/lee \
Freenet.node.Node &
In particolare c'è da notare che nel path non dovrebbe comparire la directory di Freenet ma solo quella a livello superiore. Un comando simile può essere utilizzato per attivare il nodo sotto il JDK 1.1 per Windows, omettendo però la "&", e sostituendo ";" a ":" tra il classpath ed il resto.
Con la Java VM basata su Sun's JDK 1.2 o successivi (the "Java 2 Platform") l'utilizzo è più semplice, perché puoi usare l'opzione "-cp" per aggiungere una directory al CLASSPATH standard
java -cp /home/lee Freenet.node.Node &
Una delle priorità correnti del progetto è la creazione di un sistema d'installazione più user-friendly.
5.4 Come faccio a trovare altri nodi a cui connettermi? (Cosa è "inform.php"?)
Per entrare in Freenet, devi scoprire l'indirizzo di almeno un altro nodo a cui connetterti attraverso un qualche intermediario out-of-band. L'indirizzo di questo primo nodo può essere comunicato a voce, via email, attraverso un sito web, anche facendo pubblicità. Una volta instaurata la connessione iniziale il tuo nodo comincerà automaticamente a prendere informazioni sugli altri nodi dal nodo vicino, e così via. Per semplificare la fase di test, abbiamo una pagina temporanea contenente la lista dei nodi attivi. Questa pagina si trova su:
http://www.octayne.com/inform.php
Di default il tuo nodo si aggiunge automaticamente alla lista all'avvio e legge l'elenco per prendere il set di nodi a cui connettersi. Se vuoi puoi disabilitare queste azioni: usa le opzioni -informWrite o -informRead. Se decidi di stoppare il tuo nodo o se si blocca è meglio se ti escludi dalla lista.
Sui sistemi unix dovrebbe essere automatico, invece se sei su altri sistemi o se per qualche ragione non funziona, visita la pagina:
http://www.octayne.com//inform.php?remove=1
e sarai rimosso dalla lista.
5.5 Come scopro quali chiavi esistono in Freenet?
Ragionando per analogia, hai bisogno di poter contattare un URL attraverso un qualche intermediario out-of-band per cominciare a navigare nel web, ma una volta scoperti alcuni punti di partenza potrai muoverti tra i links dove preferisci.
Fonti esterne possono indicizzare Freenet nello stesso modo in cui Yahoo e Altavista indicizzano il web. Stiamo lavorando per implementare sistemi di ricerca interni a Freenet, per evitare di doversi affidare a server centralizzati. Vedi anche la sezione È possibile effettuare ricerche in Freenet?. Durante la fase di test, per facilitare le cose, abbiamo creato una coppia di indici di chiavi, nei quali puoi trovare quelle esistenti ed inserirne di nuove.
La lista degli indici è alla pagina:
http://uts.cc.utexas.edu/~blanu/keyindex.html
Puoi visualizzare questa pagina in un browser oppure usare l'opzione -keyindex, ad esempio:
freenet_request -keyindex \
http://azrael.dyn.cheapnet.net/cgi-bin/keyindex.pl
Da notare che la lista di chiavi non è esaustiva o precisa ed i file a cui si riferisce potrebbero non essere disponibili se ci sono troppi nodi inattivi, oppure le chiavi potrebbero non essere corrette (non vengono inserite automaticamente per motivi di sicurezza). Se vuoi effettuare l'inserimento nell'indice in maniera automatica nel momento in cui pubblichi l'informazione in freenet
freenet_insert -keyindex \
http://azrael.dyn.cheapnet.net/cgi-bin/keyindex.pl \
some/key/in/freenet filename
5.6 Cosa vuol dire " Bad handshake from node "?
Significa che il tuo client non riconosce il messaggio restituito dal nodo. Al momento la causa sembra essere un sovraccarico di connessioni che non permettono al nodo di stabilirne di nuove. Butta giù il nodo, attendi uno o due minuti il flush delle connessioni e riavvia. Un'altra causa potrebbe essere l' utilizzo di una versione del protocollo di comunicazione diversa dalla tua; dunque uno dei due dovrebbe effettuare l'upgrade.
5.7 Cosa vuol dire " Newer build N is available than this build Y, please upgrade "?
Vuol dire che è stata rilasciata una nuova versione per il server del nodo. Controllare la home page di Freenet per vedere se ci sono novità o cambiamenti che rendono impossibile la compatibilità con le versioni precedenti. In ogni caso se potete, effettuate l'upgrade dell'ultima snapshot dal CVS.