http://marabunta.laotracara.com
http://enjambre.laotracara.com
David Gascón Cabrejas
[email protected]
http://www.laotracara.com
● Perspectiva Inicial
– ¿Qué es Marabunta?
● Plataforma P2P anónima y distribuida
– ¿Qué servicios ofrece actualmente Marabunta?
● Intercambio de mensajes de forma anónima
– ¿Finalidad de Marabunta?
● Contar con una red distribuida que no sea sensible a la
censura
● Mandar mensajes a todos los nodos de forma, que en pocos
segundos miles de nodos obtengan la información
– ¿Quién usa Marabunta?
● Toda aquella persona que quiere un canal de comunicación
no controlado por las empresas de servicios de comunicación
ni por organizaciones gubernamentales
● Perspectiva Inicial
– ¿Intercambio de mensajes?
● La idea es pensar en Marabunta como en un canal de
distribución de mensajes de forma que la gente pueda
expresar libremente sus ideas
– ¿Utilidad real?
● Programas similares se están usando en países como China,
debido al control que el gobierno ejerce sobre la
comunicación es ese país
● Cada día los gobiernos de los países occidentales,
especialmente EEUU está aplicando censura a la hora de
tratar temas conflictivos para el gobierno. Un ejemplo de esto
es la censura aplicada sobre las páginas web de los soldados
que estaban realizando misiones en Irak
● Redes P2P actuales: Conexiones
– Directas
● Se establecen entre 2 nodos, los cuales conocen la
información necesaria para conectar con su 'par'
–
+ Puerto
155.210.229.244 : 80
● Red GNUtella : esquema de P2P actual
● Redes anónimas (Perspectiva general): Conexiones
– Indirectas (Topologías: anillo, chord, grid ...)
● La idea es poder establecer una conexión virtual entre A y C
a través de B, de forma que A se conecta con B, y C se
conecta con B (ambas conexiones de forma directa)
– Hay que pensar en entornos limitados (NAT, Firewall ...)
● Marabunta: Conexiones Indirectas
– Indirectas
● Es como en el esquema de las redes anónimas pero en este
caso el destinatario es toda la red.
– Queremos hacer broadcast de mensajes
● Marabunta: Conexiones Indirectas
– La idea es que cada nodo se comporte como un servidor,
de forma que además de ocuparnos de nuestras
conexiones lo hagamos de las de los demás, reenviando
los mensajes que le llegan, por lo que en cada paso
incrementamos el anonimato
● Marabunta: Conexiones UDP/IP
– Todas conexiones son mediante UDP/IP ,debido a que la
comunicación de los datagramas se realiza NO orientada
a conexión
– Esto hace que sea imposible demostrar la veracidad del
origen o destino de los mensajes que viajan por la red
– La comunicación es tremendamente fluida
– Las cuestiones de fiabilidad de las comunicaciones , y
demás asuntos de conectividad y comunicación se
relegan al nivel de aplicación
● Marabunta: Organización de la Red
– Cada nodo conoce a un determinado número de
hermanos de la red: Actualmente Máximo 15 nodos
– Cada nodo sólo intercambia mensajes con sus hermanos
– Cada 3 segundos , la aplicación manda un datagrama (de
unos pocos bytes) a sus hermanos con 2 finalidades:
● Estoy vivo (ping ...)
● ¿Tienes nuevos hermanos que compartir conmigo?
– Como la comunicación es UDP/IP y los mensajes se
pueden perder pero a los 3 seg se volverá a mandar
– Hay 10 min de TimeOut para eliminar a un hermano en
caso de falta de respuesta
● Marabunta: Organización de la Red
– Cada uno de los nodos decide si darse a descubrir o no
– El tener un número máximo de nodos a los cuales nos
podemos conectar como hermanos hace que la red se
pueda ampliar guardando a su vez la identidad de gran
parte de los nodos
– NO hacemos reenvío de la petición “Busca Hermanos” a
todos nuestros hermanos, se aplica un algoritmo de
selección de hermanos a reenviar basado en la posición
de los hermanos en la lista de almacenaje
– Este algoritmo es la clave para mantener el anonimato en
la red
– Nunca reenviará mensaje de búsqueda de hermanos de
un nodo conocido por el mismo método, haciendo que no
pueda conocer a nodos más allá de 2 saltos
● Marabunta: Envío de Mensajes
– Ante la llegada de un mensaje:
● Miramos el ID del mismo, a ver si ya lo hemos tratado
● En caso afirmativo se elimina
● En caso negativo lo reenviamos a TODOS nuestros
hermanos
– Como el envío en mediante datagramas UDP/IP la
comunicación es tremendamente fluida y rápida
– Como la difusión es total no nos tenemos que preocupar de
reenviar los mensajes más de 1 vez
– Los TimeOut's usados a la hora de realizar el envío de
mensajes son de 1 seg, por lo que no sobrecargamos la red
● Marabunta: Envío de Mensajes
– Conexiones actuales
● Marabunta: Envío de Mensajes
– Envío de Mensajes
● Marabunta: Envío de Mensajes
– Reenvío de Mensajes
● Marabunta: Accediendo a la Red
– Conocer la IP de un nodo que está en la red
– Cargar un fichero de IP's (histórico) que algún
día estuvieron activas
– Acceder a uno de los NIDOS de hormigas
● son listas que reflejan los últimos nodos que acceden a
la red
● Utilizan el mismo algoritmo para su reparto que el que
se usa en Marabunta para promocionar a un hermano
en la red
● están implementados en php , y Marabunta accede de
igual forma que lo haría un navegador web (de hecho
realiza una petición http)
● Futuro de Marabunta
– Problemas actuales
● Comunicación mediante redes cableadas, el acceso
a la red sigue siendo un problema
● No podemos hacer broadcast a los nodos más allá
de nuestro gateway principal en el mejor de los
casos
● Las limitaciones de IPv4 ha hecho que se tengan
que usar apaños como los NATS , lo que dificulta la
comunicación si se usan routers que no soportan la
creación de rutas de comunicación de
entrada/salida para las comunicaciones UDP/IP
● Futuro de Marabunta
– Desarrollo paralelo de “ENJAMBRE”
(V.0.0 2006)
● Comunicación WIRELESS:
– Posibilita el desarrollo de comunicación 100 % anónima
– Podemos hacer broadcast para entrar en la red
– Cada uno de estos “enjambres” tiene la posibilidad de
ofrecer una serie de servicios
● Anonimato de los nodos
● Identificación
● Localización de los nodos
● Privacidad de la información : Cifrado,
cifrado, cifrado ...
● Redes auto-organizativas
● El Entorno Adhoc
– Comunicaciones Directas
● Acceso libre al medio (el aire)
● Difusión Total en todo el radio de Acción (Broadcast)
– Redes autoorganizadas
● Ausencia de servidor centralizado
● Los nodos son encaminadores
● No hay capa de seguridad intermedia
● Exige un nivel de confianza entre ellos
● Anonimato
– Privacidad
● Proteger la Identidad Origen / Destino
● Proteger la Localización Espacial Origen / Destino
● Asegurar la NO trazabilidad de las comunicaciones
– Confidencialidad
● Datos transmitidos
– Protección Ataques
● Evitar ataques personalizados
● Problemas Entorno Adhoc
– Niveles de la Comunicación
● Están pensados para funcionar en entornos confiables
● Modelo TCP/IP sobre 802.11 no es válido
● Robo de Identidad : MAC e IP falseables
– Recursos Limitados
● Fuentes de Energía Limitadas
● CPU y memoria limitada (móviles, PDA's ...)
– Sensible ante Ataques
● Denegación de Servicio (DOS)
● Problemas de las soluciones de Anonimato
– Cifrado en las Comunicaciones
● Uso continuo del nivel de Aplicación para tratarlo
● Pérdida del encaminamiento a nivel de Red
– Gasto continuo de Recursos
● Acceso al nivel de Aplicación para la resolución de todo
tipo de servicios (se sobrecarga el nivel más complejo)
– Dominio de Confianza
● Necesidad de un sistema de claves común
● Objetivos de la Solución Propuesta
– Anonimato eficiente
● Proceso Previo de Emparejamiento
– Poner en común los secretos sin decirlos
● Inundación Controlada
– Aumento de la calidad del Anonimato
– Disponibilidad
● Filtros de Nivel de Enlace y Red
– Técnicas eficientes frente a ataques (DOS)
● Múltiples Dominios de Confianza
– Conseguir una red heterogénea
● Proceso Previo de emparejamiento: PAIRING
– Broadcast
● Proceso Previo de emparejamiento: PAIRING
● Identificamos a que organizaciones pertenecemos con
técnicas de conocimiento cero
● C (“27/03/2006/04”)CSx
● Se crea un canal seguro de comunicación y pueden
intercambiarse las matrices de direcciones y la información
para su transformación
(
M 1
...
M i1
...
...
M 0
...
...
... M j + i 1
M j
...
...
M ni M ni+1 ...
M j+1
M n1
...
...
),(
T 1
...
T i1
...
...
T 0
...
...
... T j + i 1
T j
...
...
T ni T ni+1 ...
...
T n1
T j+1
...
)
● Proceso Previo de emparejamiento: IP-FLOODING
– Intercambio de Direcciones
● Una vez hemos establecido las conexiones seguras,
intercambiamos las matrices de direcciones IP que
usaremos para aumentar la Entropía de la Red
medinate el proceso de “Inundación Falsa Controlada”
● Las direcciones IP intercambiadas van acompañadas
de un valor probabilístico (0.0 .. 1.0)
●155.210.229.244 = P(0.75)
●201.150.189.007 = P(0.25)
● Filtrado de la Información
– Modelo de mensaje TCP / IP sobre 802.11 MAC
● Filtrado de la Información : Nivel de Enlace
● Filtrado de la Información : Nivel de Enlace
● Filtrado de la Información : Nivel de Enlace
● Filtrado de la Información : Nivel de Red
ProbEntrada(G) = "0.7"
ProbSalida(B) = 0.35 < 0.7 > Reenvío
ProbSalida(D) = 0.60 < 0.7 > Reenvío
ProbSalida(E) = 0.85 > 0.7 > NO Reenvío
Clave Pública
Nodo
@ IP Salientes
Probabilidad
PB
PB
PD
PD
215 . 050 . 039 . 133
234 . 152 . 203 . 076
076 . 098 . 133 . 175
136 . 238 . 073 . 128
0.75
0.35
0.75
0.25
● Filtrado de la Información : Nivel de Red
● Generación de Nuevas Direcciones Secretas
– Usamos la Información de Transformación
intercambiada (en Pairing e IP-Flooding)
– Finalid
Comentarios de: Marabunta y Enjambre (0)
No hay comentarios