-[ 0x08 ]------------------------------------------------------------------- -[ Cinco horas con Fred ]--------------------------------------------------- -[ lindir ]---------------------------------------------------------SET-28-- Cinco horas con Fred Por Lindir 0. Contenidos --------------------------------------------------------------------------- 1. Quien es Fred? 2. Como se habla con Fred? 3. Como accedemos a Freenet? 4. Como es Fred? 4.1. URIs y claves. 4.2. Mejoras al sistema. 4.2.1. Ediciones de un freesite. 4.2.2. DBRs. 4.2.3. Splitfiles. 4.2.4. FEC. 5. Amigos y parientes de Fred. 5.1. FCPTools. 5.2. FMB. 5.3. NIM. 5.4. El proyecto Invisible IRC. 5.6. Entropy. 6. Lo que sabe Fred. 7. Conclusiones. --------------------------------------------------------------------------- 1. Quien es Fred? Fred (Freenet Reference Daemon) es el nombre del programa Java que actua como cliente/servidor para acceder a la red Freenet. La version mas moderna de Fred en el momento de escribir estas lineas es la 0.5.2, que podeis obtener ya precompilada de la direccion: freenet.sourceforge.net Fred actua como proxy, gateway personal y router dentro de la propia red. Puesto que esta hecho en Java solo necesitais una maquina virtual Java que sea compatible (hay problemas de incompatibilidad con algunas maquinas virtuales Java) en tu sistema operativo. Bajo linux (que es el sistema con el que he realizado las pruebas) arrancar Fred es tan sencillo como ejectuar "sh start-freenet.sh". El propio script start-freenet se ocupa de todo lo necesario. Para pararlo, basta con ejecutar mas tarde "sh stop-freenet.sh". El script de inicio almacena el PID del proceso en el archivo freenet.pid, asi que no toques ese archivo si quieres pararlo con stop-freenet (si lo tocas, vas a tener que pararlo a mano con un kill). La primera vez que se ejecute Fred se iniciara la configuracion del mismo, mediante una serie de preguntas a las que el usuario debe contestar. Entre ellas estan los limites sobre el regimen binario que Fred debe mantener, el tamanyo de la cache en disco duro y la mas importante: si el nodo es de tipo transitorio (transient) o no. Un nodo transient es aquel que no puede estar continuamente conectado a la red, de modo que no es completamente funcional a la hora de actuar como servidor/router. Los autores y desarrolladores de Freenet ruegan a toda persona que considere que la red merece la pena y que pueda permitirselo que mantengan nodos fijos de modo que la red sea mayor. En mi caso, yo no tengo conectado todo el dia el PC a la red, por lo tanto mi nodo es de tipo transient, y si vas a hacer pruebas es mejor que lo configures asi hasta que consideres si de verdad deseas formar parte de Freenet de forma permanente. Durante la configuracion tambien se pide una lista de nodos "semilla" (seed nodes) que no son mas que nodos fijos en la red a los que conectarse, algo asi como la lista de servers en el e-Donkey. El archivo que contiene esta lista es seednodes.ref, que debe estar en el paquete bajado de sourceforge. Toda la configuracion de Fred se almacena en el archivo freenet.conf, que puedes editar a mano si deseas cambiar algo mas tarde. Tendras que arrancar Fred de nuevo si quieres que la nueva configuracion entre en funcionamiento. En Windows, dicho archivo se llama freenet.ini. 2. Como se habla con Fred? Una vez configurado y corriendo Fred, ya podemos conectarnos a Freenet. Y la pregunta es... como se hace? Sencillo. Lo primero que debemos hacer es dejar pasar un pequenyo tiempo (un minuto bastara normalmente) para que Fred sea capaz de encontrar nodos a los que pueda conectarse. Una vez se haya conectado, entrar en Freenet es tan sencillo como arrancar un navegador Web cualquiera y realizar una conexion a http://localhost:8888 Precisamente es en ese puerto por defecto en el que Fproxy -un interfaz entre nuestro nodo Freenet y el navegador web- permanece a la espera de nuestras peticiones. En este punto aparece el interfaz Web de Fred (si no aparece, espera un poco mas y reintenta la conexion, posiblemente aun la red no este operativa). Este interfaz nos permite monitorizar el funcionamiento de la red: lista de conexiones, estadisticas sobre las peticiones y las claves, etc. Tambien da informacion sobre las opciones en linea de comandos que podemos pasar a Fred y sobre la version del software, la maquina virtual Java... es bastante completo. 3. Como accedemos a Freenet? Vale, hasta ahora tenemos a Fred en nuestro ordenador y podemos monitorizar que esta haciendo. Pero todavia no hemos accedido a ningun "freesite". Para que podamos empezar, el propio interfaz Web de Fred nos muestra unos "bookmarks" a los que podemos conectarnos. En mi version de Fred aparecen "The Freedom Engine", "The Freenet Help Index", "The Tower", "Content of Evil" y "Yoyo!". Todos son "freesites" que almacenan enlaces a otros sitios dentro de Freenet. Podemos por ejemplo acceder a "The Freedom Engine". Si seleccionais el enlace, posiblemente os deis cuenta de que tarda bastante en acceder a la pagina (y bastante es *bastante*, puede que varios minutos). Esto es asi porque no sabemos donde esta la misma, y hay que lanzar peticiones a lo largo de la red hasta que alguien conteste. Y eso tarda. Incluso puede ocurrir que aparezca una pagina (procedente de Fred) que nos indique que no se ha podido encontrar la informacion. En tal caso, se ofrece la opcion de volver a intentarlo modificando el numero de "Hops To Live". Si os ha ocurrido esto, cambiad el numero de Hops To Live (por ejemplo, a 25 o mas) y pulsad el boton de reintentar la busqueda. Puesto que The Freedom Engine es un freesite muy solicitado, deberiais poder acceder a el. Bueno, ya estamos dentro de nuestro primer freesite. Ahora que? Seguro que os habeis dado cuenta de que vuestro navegador tarda muchisimo en cargar toda la pagina al completo. No os preocupeis mucho por las fotos y mirad los enlaces. En TFE (The Freedom Engine) estan divididos en dos secciones: paginas de reciente creacion y paginas consolidadas. Podeis intentar acceder a cualquiera de los freesites a los que TFE enlaza. En algunos casos (pocos, segun mi experiencia) la pagina aparecera a los pocos segundos/minutos. En otros aparecera el mensaje indicando que no se ha podido encontrar el freesite y podremos cambiar los Hops To Live a un numero mayor y, con un poco de suerte, finalmente obtener la informacion. En otros (haberlos haylos) simplemente no podremos acceder a lo que queremos. Esa es precisamente una de las principales diferencias entre Freenet y la World Wide Web: no siempre podremos acceder a lo que queremos y la informacion puede desaparecer de la red. 4. Como es Fred? 4.1. URIs y claves. Otra diferencia importante con la web que de momento he obviado es el hecho de que los archivos que obtenemos de Freenet no tienen identificadores del tipo: http://host.domain/path/file.extension como ocurre con la web o los ftp. En Freenet, las URIs (Uniform Resource Identifier) son claves de tres tipos: - CHK (Content Hash Key) - KSK (Keyword Signed Key) - SSK (SubSpace Key) Estas claves no son identificadores jerarquicos como ocurre con direcciones html o con numeros de telefono. Cuando Fred recibe de nosotros una peticion lo unico que le damos es una clave, y puesto que esta clave no es jerarquica, Fred no sabe en principio donde esta el fichero asociado a la misma. Lo unico que puede hacer es comprobar si el fichero asociado a esa clave esta en la cache local o, si no es asi, pasar la peticion a otros nodos de la red. En una peticion HTTP nuestro ordenador sabe que tiene que consultar un DNS para obtener la direccion IP del destino, y los nombres DNS estan jerarquizados, con lo cual cada servidor DNS siempre sabe a quien debe reencaminar la peticion en caso de no saber la respuesta. En Freenet no es asi. Se requiere que no sea asi para no saber donde esta la informacion y garantizar el anonimato. Las claves CHK tienen el mismo cometido que un checksum: evitar que un fichero se confunda con otro. Esto es, son una firma digital de los contenidos de los archivos de freenet. Cada archivo que existe en Freenet tiene asociada una clave CHK. De esta forma, si alguien intenta suplantar un archivo que hemos subido a la red con otro distinto, los CHK de ambos seran diferentes y no podra confundir a posibles receptores de la informacion. Cual es el problema de dichas claves? Que cuando vemos una no sabemos que es lo que vamos a recibir. Es decir, la clave no aporta ninguna informacion acerca del contenido del archivo. Las claves KSK son el otro extremo. Al contrario que las CHK, no son generadas automaticamente, sino que los usuarios las crean para aportar informacion sobre el contenido del archivo asociado. En realidad lo unico que contiene una clave KSK es una referencia a la CHK correspondiente. Cual es el problema con estas claves? Pues que no son unicas. Cualquiera puede crear una clave KSK que en realidad contenga una referencia a una CHK erronea. El ejemplo mas famoso que hay es la clave KSK@gpl.txt. En principio esta clave contenia una referencia a una clave CHK que pertenecia a una version en ASCII del texto de la licencia GPL de la Free Software Foundation. Hubo personas que intentaron insertar referencias a otras claves CHK (y, por tanto, a otros archivos) y lo consiguieron. Ahora, si intentas obtener el archivo asociado a la clave KSK@gpl.txt puede ser que recibas el texto de la licencia GPL u otras cosas (el resultado de esta operacion se deja a la comprobacion del lector, quiza el resultado obtenido le parezca mas interesante... :-) Por ultimo, las claves SSK son las que permiten mayor potencia. Una clave SSK consiste en realidad en una pareja clave publica-clave privada que puede ser generada por varios programas (el propio archivo .jar de Fred contiene una utilidad que lo hace). Cuando queremos introducir un archivo en Freenet, utilizamos una entrada: SSK@//file.ext Y para obtener el archivo nuestros receptores deberan usar: SSK@//file.ext Las claves SSK son sitios privados donde poner claves KSK. Para que los receptores de tu informacion puedan obtenerla, les das tu clave publica. Pero la clave privada, que es la que te permite añadir nuevos contenidos, solo la conoces tu. 4.2. Mejoras al sistema. Mediante las claves SSK ya podemos tener freesites a los que unicamente nosotros podemos anyadir nuevos archivos y que ademas den una idea de que es lo que el usuario se esta bajando. Pero aun se puede mejorar el sistema mucho mas. Para ello, se introducen metadatos (metadata). Los metadatos son introducidos por Freenet junto con los archivos insertados de forma que aportan mas informacion al cliente de lo que esta recibiendo, o incluso pueden servir para redireccionar la peticion a otro archivo. 4.2.1. Ediciones de un freesite. Puesto que una web estatica suele ser bastante pobre y poco interesante en la mayoria de los casos, existe una tecnica llamada "freesites editions" que permite distintas versiones de un mismo freesite. Para crear ediciones, lo unico que tenemos que hacer es anyadir a nuestro archivo una referencia a una clave inexistente (aun). Es decir, si por ejemplo nuestro sitio tiene la clave: SSK@/mi_pagina_1.html, podemos anyadir en el html un enlace a la clave: SSK@/mi_pagina_2.html, de forma que solo cuando el nuevo archivo exista lo insertaremos y se podra acceder al mismo desde la edicion antigua. Hasta aqui, vale, sencillo. Pero como el usuario se va a dar cuenta de que existe una nueva version? Pues porque en realidad lo que se suele introducir es una imagen que aun no existe, de forma que cuando obtengamos la pagina html y veamos dicha imagen eso significara que ya hay una edicion mas moderna de la misma. Si bajamos la pagina pero la imagen no aparece, significa que aun no existe ninguna edicion nueva. Esto tiene dos problemas importantes: el primero, que necesitaremos bajar las dos versiones del mismo freesite para acceder a la mas moderna. Y el segundo, que puede ser que el freesite antiguo si este accesible pero la imagen no, aunque exista (hay que recordar que puede ocurrir que un archivo exista pero no consigamos obtenerlo, por ejemplo debido a que el numero de HTL es muy bajo). Aun asi, las ediciones de freesites son una tecnica muy utilizada por sus creadores. 4.2.2. DBRs. Los DBRs vienen a solucionar los problemas de modificacion de archivos de una forma mas elegante, proporcionada por la misma Freenet de forma transparente al usuario. DBR son las siglas de Date Base Redirection, redireccion de la base con la fecha. El mecanismo se basa en traducir las claves solicitadas como SSK@/// a: SSK@/