miércoles, marzo 09, 2011

DUST: Tu Feed RSS es tuyo (3 de 3)

*************************************************************************************************
- DUST: Tu Feed RSS es tuyo (1 de 3)
- DUST: Tu Feed RSS es tuyo (2 de 3)
- DUST: Tu Feed RSS es tuyo (3 de 3)
*************************************************************************************************

Para evitar un único punto de fallo, lo mejor es evita que el feed RSS esté accesible sólo desde un único punto, como está actualmente en una URL Http asociado a un path y un nombre de dominio. Si desaparece el dominio, el path, se cambia el nombre del archivo, se desconectó la audiencia, por eso pensamos en DUST.

DUST es un cliente P2P, actualmente solo de la red GNUTella, que sirve para leer y compartir feeds RSS con las siguientes características.

Distribución del feed a través de redes P2P

Cada autor pondrá su feed RSS en una o varias red/es P2P con un nombre de archivo reconocible mientras que el lector de RSS realizará una búsqueda periódica del feed por la red P2P para encontrar nuevas versiones. Para reconocimiento del feed RSS autentico, éste irá firmado mediante PGP con la clave privada del canal de subscripción, que podrá representar a una persona, o representar a una fuente de información genérica.

El autor puede firma y publicar su feed RSS que tiene desde la web o, en el caso de no tener ni web o haber perdido el control del sitio web, un feed desde otra web o hasta de un fichero en local.


Figura 1: Gestión de claves de fuentes para publicar feeds

Además, cada feed RSS podrá tener un nombre de canal, que funcionará como una segmentación de tags en feeds RSS, es decir, con la misma clave PGP se podrán firmar diferentes feeds RSS asociados a diferentes canales.

Así, por ejemplo, Informática 64 podría, con su clave PGP podrá firmar los blogs de Seguros con Forefront, Windows Técnico o Seguridad Apple, y publicar los feeds firmados todos ellos con la misma clave PGP, pero serán diferentes canales de la misma fuente.


Figura 2: Publicación de feeds RSS por una fuente DUST

En el proceso de publicación, se modifican las imagenes incrustadas en el código HTML del post, añadiendo el hash de la imagen, que también se firma, al campo alt de la etiqueta img.


Figura 3: Imagen en el feed RSS de DUST

Un lector RSS se subscribirá a una fuente por medio de su clave pública y, si lo desea, a un canal en concreto o a todos los que publique esa fuente.

El descubrimiento de un nuevo feed RSS actualizado se realizará mediante la búsqueda periódica de un nuevo archivo en la red P2P que lleve, en el nombre del fichero, el HASH SHA1 de la clave Pública PGP de la fuente, opcionalmente el nombre del canal, y una fecha más reciente que la que se tiene descargada.


Figura 4: Suscripción a un feed, por HTTP o por canal DUST

Cuando el fichero RSS se descarga lo primero que se hace es comprobar que el fichero es correcto, comprobándose la firma PGP del mismo. Después, automáticamente queda publicado en la red P2P para ofrecerlo a otros nodos que estén haciendo pooling de él y, al mismo tiempo, se elimina la versión anterior del feed, para mantener una estructura lo más higiénica posible de feeds en la red.


Figura 5: Dust es un lector de feeds RSS

Al final, para el usuario, Dust será, nada más, un lector de feeds RSS de blogs, mienras que por debajo, está descargando y compartiendo los feeds por P2P.


Figura 5: Compartición de feeds RSS e imágenes firmadas por P2P

Migración de audiencias al feed P2P

Evidentemente, el gran problema es migrar a la audiencia actual, que trabaja con el feed http a un feed p2p, por lo que hemos pensado en varias soluciones interesantes.

Cuando un usuario se subscriba con DUST a un feed RSS, puede marcar la opción de usar http y/o canal DUST con la clave Pública PGP de la fuente y, opcionalmente, el nombre del canal. Lo más habitual es que el usuario se suscriba como lo suele hacer, es decir, o poniendo la URL de la web o poniendo la URL al feed XML, para ello, en el proceso de subscripción a un blog, DUST, si recibe la URL del sitio, además de buscar el feed RSS, buscará un feed DUST, con la clave PGP pública y el nombre del canal.

En el caso de que no exista, se descargará el feed RSS por Http y buscará la información para la subscripción por DUST en el fichero XML. De esta forma, un autor de un canal RSS que tenga a sus subscriptores por, por ejemplo, Feedburner, cuando un nuevo usuario empiece a utilizar un cliente RSS DUST recibirá un mensaje que le informará de que se ha detectado información de publicación por DUST y que esto le permitirá tener acceso a la información incluso si cierran el canal http.

Ubicaciones redundantes

De esta manera, un autor de un feed solo deberá añadir su clave pública y el nombre del canal en el feed RSS actual para que sus clientes por DUST empiecen a migrar. Además, de la información redundante del feed en DUST, en el propio feed RSS podrán añadirse tantas ubicaciones redundantes como se desee, ya sean con URLs Http con claves PGP públicas y nombres de canales.

Por supuesto, para hacer más sencilla la migración, hemos pensado en añadir algunos wizzards para DUST, que permitan que te conectes a tus subscripciones de Google Reader, busque todos los feeds RSS a los que estás suscrito, y las importe, automáticamente, aparte de traerse todas las subscripciones, si traen la info para DUST, se migrará todo a un entorno mixto: HTTP y DUST.

El lector de feeds RSS de DUST hará una búsqueda periódica por las fuentes por todos los canales redundantes. Cuando se encuentre un feed nuevo, este será descargado, mostrado y compartido en la red P2P.

Ataques a P2P

En esta arquitectura hay muchos ataques que se pueden realizar y, algunos de ellos, difícilmente solucionables. En primer lugar, hay que tener en cuenta que puede suceder que un canal Http fuera comprometido, podría cambiar la fuente redundante DUST a una nueva clave PGP comprometida. Cuando esto suceda, el cliente DUST mostrará una alerta de seguridad en la que se avisa de que feed RSS pide cambiar las fuentes redundates. Si el cliente decide aceptar se cambiarán las fuentes, pero se dejarán grabadas las fuentes antiguas para poder revertir a la subscripción DUST anterior en caso de detectar que ha sido cerrado el feed.

Por otro lado, el gran problema de las redes P2P es la de la polución de ficheros, por lo que es necesario establecer políticas de pooling, restricciones de tamaño y políticas RBL dinámicas y temporales por nodos cuando se detecte que un nodo está haciendo file pollution que aún tenemos que trabajar.

Servicio de publicación feed RSS por DUST

Uno de los servicios que nos parecen más interesantes es el de ofrecer una aplicación web en la que un cliente pueda enviar su feed RSS firmado con PGP para DUST y que sea publicado automáticamente en la red GNUTella para todos los clientes DUST, así que será de lo primero que ofreceremos.

Sé que, a muchos se os ocurrirán nuevas preguntas, así que intentaremos ir contestándolas poco a poco para que tengáis toda la información. DUST será Open Source, está escrito en Java y podréis disponer del código a vuestro gusto. Por supuesto, cualquier sugerencia de mejora, apoyo para colaborar, o crítica será bien recibida.

Saludos Malignos!

*************************************************************************************************
- DUST: Tu Feed RSS es tuyo (1 de 3)
- DUST: Tu Feed RSS es tuyo (2 de 3)
- DUST: Tu Feed RSS es tuyo (3 de 3)
*************************************************************************************************

10 comentarios:

  1. Como diría cierto ¿artista?: "eto éh innnnnnnnncreible"

    ¡Muy buen trabajo!

    ResponderEliminar
  2. Chema buenas noches, antes q nada disculpa las molestias, te cuento que soy argentino, y vi la publicacion de inf. 64 sobre este libro "analisis forense 2da edicion" exite alguna libreria que lo comercialice aca? Estoy interesado leerlo muchas gracias

    ResponderEliminar
  3. @Mati, yo voy a argentina la semana que viene a dar unas charlas, si te pasas te lo llevo en persona.

    Saludos!

    ResponderEliminar
  4. me encantaria chema, pero no tengo info al respecto. ejeje siy fiel seguidor del blog pero se ve que no lei que venias para aca, me podras dar alguna info sobre costos y demas, jejeej si no llego con el dinero, seguramente pase a buscar el libro, a pos.. no dije soy de bueno aires

    ResponderEliminar
  5. Felicitaciones!

    Esperemos mejore y se masifique ya que la idea está de 10

    ResponderEliminar
  6. @Mati, solicita un prespuesto con la página de compra del libro ;)

    ResponderEliminar
  7. Una pregunta tonta ¿dónde puedo descargarlo? o es que aun no ha sido liberada la versión. Gracias.

    ResponderEliminar
  8. Antes de nada una muy buena ídea, enhorabuena por todo lo que estaís haciendo.

    ¿Se podria dividir la aplicación en dos partes?

    - Chequeo RSS por tanto por HTTP cómo por P2P, y almacenado a disco. Junto con API para cifrado y compartición y API que desencripta los datos.

    - Luego el cliente que accede a los APIS del servidor para leer los feeds y para compartir/cifrarlos.

    De esa forma en un servidor personal podrías tener trabajando el que se descarga feeds y el acceso luego lo podrías hacer por web, o por otro cliente que se conecte al servidor.

    Imagino que depende como lo esteis desarrollando. Pero este tipo de desarrollo os haría encontrar más facilidad a la hora de que la gente lo usara. Sería cómo un GoogleReader personal.

    Yo llevo tiempo mirando soluciones para no usar el GoogleReader y está complicado:

    http://rsslounge.aditu.de/
    http://tt-rss.org/redmine/

    Una de las pegas que tienen es poder compartir feeds y si separais ambas capas yo intentaría usarlo y sería una "opción" contra el GoogleReader.

    Mucho ánimo con esto que ya lleva bastante trabajo.

    ResponderEliminar
  9. @BIO, tomamos nota de tus sugerencias, la verdad es que sí que lleva trabajo, y solo el parsear todos los tipos de RSS es un pain in the ass...

    iremos informando más adelante...

    Saludos!

    ResponderEliminar