Este documento describe DUST, una aplicación que permite leer feeds RSS de forma anónima y descentralizada a través de redes P2P. Actualmente DUST puede leer feeds tanto de HTTP como firmados a través de P2P e imágenes. El documento discute las tecnologías utilizadas como Java, JDOM, GNUTella y propone mejoras futuras como una interfaz mejorada, soporte para más redes P2P y privacidad mejorada.
3. … y nos lo creímos… Internet es un espacio libre Todas las opiniones permitidas Libertad de prensa Nadie controla Internet Neutralidad Anonimato No Rules ….
14. HBGaryOwnage Backdoors a la carta: Task B y 12 monkeys «Incitadores» en FaceBook Propaganda viral en Inet
15. Internet tiene puntos debiles Conexiones de red Gran Firewall de China Ataque BGP Egipto Sistemas DNS Wikileaks.org Tarjetaroja.org Legislaciones Nacionales (LSSI, Ley Sinde, Código Penal…) Continentales (….)
17. ¿Cómo estar conectados siempre? El objetivo es desconectar la fuente de la información con la audiencia Arrancando de raíz la fuente Owneando el sistema Haciéndola inaccesible DDOS Que no sea localizable Quitando nombre de dominio Eliminando cuentas de servicios Facebook, twitter, … Infosecwar: Eliminación de Buscadores Por la ley y cerrado de cuentas
26. Del Blog al lector Nombre de dominio Entrada directamente a la web Suscripciones RSS Lectores conectan al Feed XML Autoría Cuenta del sistema de blogs Nombre Http Feed RSS
30. DUST: Feeds RSS por P2P Sistema de publicación de feeds RSS firmados por redes P2P. Cliente de lectura de Feeds RSS Http P2P Republicación de contenido por P2P Republicación de Feed RSS Republicación de posts e imágenes
31. DUST: Cómo se hace todo Los feeds se manejan mediante las bibliotecas rome (desaparecerá) y jdom. Son software libre. Rome sólo sirve para leer feeds, no para modificarlos. Jdom es la biblioteca estándar para manejar XMLs mediante DOM. Los feeds se reciben tanto por HTTP como por P2P de manera indiferente para el usuario (para el programador es bien distinto).
32. DUST: Cómo se hace todo La creación de claves, firma y comprobación de firmas se realiza con la biblioteca estándar de J2SE (java.security). Sólo como prueba de concepto, se pretende usar una biblioteca más segura (se está analizando BouncyCastle). Java.security tiene (al menos) un CVE publicado, CVE-2008-5659
33. DUST: Cómo se hace todo La compartición de archivos se realiza a través de GNUTellausando la biblioteca Jtella. Red totalmente decentralizada (a diferencia de ed2k o bittorrent). Jtella con una pequeña modificación echa por nosotros. Se comparten feeds e imágenes. GNUTella es un protocolo para la búsqueda de ficheros, no para la compartición. El busca en la red e informa (si encuentra) de que IP:puerto tiene el fichero.
34. DUST: Cómo se hace todo Para la descarga de los ficheros se ha implementado un servidor simplísimo. Está a la escucha de nuevas conexiones. Espera recibir un nombre de fichero y devuelve la ristra de bytes correspondiente a ese fichero. Si no tiene el fichero pedido cierra la conexión. Sólo es una prueba de concepto, se está pensando eliminar y poner un servidor de ficheros más robusto, flexible y seguro.
35. DUST: Cómo se hace todo La interfaz gráfica usa SWT (Standard WidgetToolkit) de Java. Bien documentada. Suficientemente potente para lo que necesitamos. Implementación para múltiples plataformas. Cada plataforma necesita su implementación concreta de SWT, esto hace que Dust no sea un único paquete que corre múltiples plataformas, sino muchos paquetes, cada uno para una plataforma.
36. DUST: Recordatorio de qué hace Carácterísticas actuales de Dust: Lector de feeds que permite leer los feeds tanto de HTTP como firmados a través de P2P (e imágenes). Múltiples fuentes para un mismo feedpara hacer más difícil la censura. Es (será en muy poco tiempo) software libre, probablemente bajo licencia Apache. Pensado para que la comunidad lo pueda “destripar” y proponer características (e incluso hacerlas ellos :).
37. DUST: Ideas para el futuro Mejorar el manejo de claves, utilizar una biblioteca más segura. Mejorar el cliente GNUTella, que un peer informa a sus peers de nuevos peers en la red según se conecten. Implementar un sistema de “ranking” de peers para evitar el file pollution. Si un peer te pasa muchos ficheros falsos (mal firmados) bajarle su ranking. Implementar un sistema para evitar que se llene el disco por bajarse demasiados ficheros. Cambiar el servidor de transferencia de ficheros por uno “de verdad”. Diseñar e implementar una interfaz decente.
38. DUST: Ideas para el futuro Refactorizar mucha parte del código (código que ya no se usa eliminarlo, código que no sigue las normas de estilo reescribirlo, documentar el código que no lo esté). Dejar de usar rome y usar sólo jdom (rome hace fácil la lectura de feeds, pero también hace falta modificación y no lo permite). Mejora de ciertos aspecto del DustInternals. DustDispatcher, DustTask, DustConf, DustLog. Mejorar la forma de informar de la aparición de excepciónes y/o situaciones de warning.
39. DUST: Ideas para el futuro Dar soporte a otros tipos de redes P2P (ed2k, bittorrent, etc…) Integrar con la red TOR. Permitir exportar ficheros de perfiles de otros lectores de feeds. Mil características más.