SlideShare una empresa de Scribd logo
1 de 72
Descargar para leer sin conexión
ENRUTAMIENTO SEGURO EN SISTEMAS P2P BASADOS EN DHT
RICARDO LUIS VILLANUEVA POLANCO
UNIVERSIDAD DE LOS ANDES
FACULTAD DE INGENIER´IA
DEPARTAMENTO DE INGENIER´IA DE SISTEMAS Y COMPUTACI´ON
2010
1
ENRUTAMIENTO SEGURO EN SISTEMAS P2P BASADOS EN DHT
RICARDO LUIS VILLANUEVA POLANCO
Trabajo de Grado Presentado como Requisito para Optar por el Titulo de:
Mag´ıster en Ingenier´ıa de Sistemas y Computaci´on
ASESOR:
MAR´IA DEL PILAR VILLAMIL GIRALDO
UNIVERSIDAD DE LOS ANDES
FACULTAD DE INGENIER´IA
DEPARTAMENTO DE INGENIER´IA DE SISTEMAS Y COMPUTACI´ON
2010
2
Dedico este trabajo a mi familia
3
Agradecimientos
A Dios, ser Supremo y Todopoderoso, porque es el motor de mi vida, quien me gu´ıa y me
ilumina.
A mis padres, RICARDO VILLANUEVA T. y DORIS POLANCO R., quienes con su
apoyo incondicional me permiten hoy culminar con ´exito este proyecto. A mi hermano,
SAMIR VILLANUEVA POLANCO, por mostrarme una manera distinta de ver la vida
lo cual me ayud´o a desestresarme.
A mi directora de tesis, Mar´ıa del Pilar Villamil Giraldo, por la oportunidad que me
ofreci´o para trabajar en este tema, por sus aportes y consejos los cuales me ayudaron a
organizar, construir y culminar con ´exito este trabajo de grado.
A los profesors, Yesid Donoso y Harold Castro, por darme la oportunidad de trabajar con
ellos, el cual fue esencial para alcanzar este objetivo.
A Mile Arnedo, por sus consejos, paciencia y colaboraci´on que me ayudaron a sobrepon-
erme en momentos dificiles.
4
Tabla de Contenido
1. INTRODUCCI´ON 9
2. OBJETIVOS 10
3. GENERALIDADES EN SISTEMAS P2P Y TEM´ATICA DE SEGURI-
DAD 11
3.1. Sistemas P2P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.1.1. Sistemas P2P basados en DHT . . . . . . . . . . . . . . . . . . . . 11
3.1.2. Estilos de enrutamiento tradicionales . . . . . . . . . . . . . . . . . 13
3.2. Conceptos de Seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2.1. Confidencialidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2.2. Integridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2.3. Disponibilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3. Criptograf´ıa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3.1. Algoritmos de cifrado . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3.2. Funciones hash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.3.3. C´odigos de autenticaci´on de mensajes (MAC) . . . . . . . . . . . . 17
3.3.4. Firma digital . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.3.5. T´ecnicas para compartir un secreto . . . . . . . . . . . . . . . . . . 18
3.3.6. Criptograf´ıa basada en identidad (CBI) . . . . . . . . . . . . . . . 18
4. SEGURIDAD EN SISTEMAS P2P DHT 19
4.1. Generalidades de seguridad en sistemas P2P DHT . . . . . . . . . . . . . . 19
4.1.1. Disponibilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.1.2. Autenticidad de los datos . . . . . . . . . . . . . . . . . . . . . . . 20
4.1.3. Anonimidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.1.4. Control de acceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.2. Ataques en la capa de enrutamiento . . . . . . . . . . . . . . . . . . . . . . 22
4.2.1. Ataques de identidad . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.2.2. Ataques de enrutamiento . . . . . . . . . . . . . . . . . . . . . . . . 23
4.2.3. Ataque de entrada/salida de nodos . . . . . . . . . . . . . . . . . . 24
4.3. Ataques en las capas de almacenamiento y aplicaci´on . . . . . . . . . . . . 24
4.3.1. Almacenamiento y recuperaci´on de informaci´on . . . . . . . . . . . 24
4.3.2. Comportamiento inconsistente . . . . . . . . . . . . . . . . . . . . . 25
4.3.3. Generaci´on de mensajes no solicitados . . . . . . . . . . . . . . . . 25
4.4. Discusi´on sobre ataques en sistemas P2P . . . . . . . . . . . . . . . . . . . 25
5. SOLUCIONES A ATAQUES DE IDENTIDAD Y ECLIPSE 27
5.1. Ataques de asignaci´on de identificadores y sybil . . . . . . . . . . . . . . . 27
5.1.1. Estrategias centralizadas . . . . . . . . . . . . . . . . . . . . . . . . 27
5.1.2. Estrategias jer´arquicas . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.1.3. Estrategias descentralizadas . . . . . . . . . . . . . . . . . . . . . . 30
5.1.4. Discusi´on de las soluciones al ataque de identidad . . . . . . . . . . 31
5.2. Ataque Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.2.1. Estrategias basadas en restricciones sobre los nodos . . . . . . . . . 33
5.2.2. Estrategias basadas en induci´on de entradas y salidas de nodos . . . 34
5
5.2.3. Discusi´on de las soluciones al ataque eclipse . . . . . . . . . . . . . 35
6. SOLUCIONES A ATAQUE DE ENRUTAMIENTO 37
6.1. Estrategias basadas en Redundancia . . . . . . . . . . . . . . . . . . . . . 37
6.1.1. Multi-path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.1.2. Wide-path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.2. Estrategias basadas en Detecci´on . . . . . . . . . . . . . . . . . . . . . . . 42
6.3. Estrategias basadas en Calidad del Camino . . . . . . . . . . . . . . . . . . 44
6.3.1. Informaci´on del propio sistema . . . . . . . . . . . . . . . . . . . . 44
6.3.2. Informaci´on de otros sistemas . . . . . . . . . . . . . . . . . . . . . 45
6.4. Discusi´on de las soluciones al ataque de enrutamiento . . . . . . . . . . . . 47
7. SecureRoutingDHT: ENRUTAMIENTO SEGURO EN SISTEMAS P2P
DHT 49
7.1. Nivel Funcional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.1.1. Estructura de nodos y protocolo de enrutamiento . . . . . . . . . . 49
7.1.2. Mecanismo de reputaci´on . . . . . . . . . . . . . . . . . . . . . . . 52
7.2. Nivel de atributos de calidad en seguridad . . . . . . . . . . . . . . . . . . 57
7.2.1. Compatibilidad con estrategias de sybil . . . . . . . . . . . . . . . . 57
7.2.2. Ataque de almacenamiento y recuperaci´on de informaci´on . . . . . 58
8. EVALUACI´ON 59
8.1. An´alisis te´orico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
8.1.1. Enrutamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
8.1.2. Mantenimiento de la estructura de quorums . . . . . . . . . . . . . 60
8.1.3. Tolerancia a nodos maliciosos . . . . . . . . . . . . . . . . . . . . . 61
8.2. Simulaci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
8.2.1. Escenarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
8.2.2. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
9. CONCLUSIONES Y TRABAJO FUTURO 66
9.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
9.2. Trabajo Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
6
Lista de Tablas
1. Resumen de estilos de enrutamiento . . . . . . . . . . . . . . . . . . . . . . 15
2. Ataques a sistemas P2P . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3. Soluciones del ataque Sybil . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4. Soluciones del ataque Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . 35
5. Estrategias basadas en multi-path . . . . . . . . . . . . . . . . . . . . . . . 40
6. Estrategias basadas en wide-path . . . . . . . . . . . . . . . . . . . . . . . 42
7. Estrategias basadas en detecci´on . . . . . . . . . . . . . . . . . . . . . . . . 44
8. Estrategias basadas en calidad del camino . . . . . . . . . . . . . . . . . . 46
9. Valores de reputaci´on que mantiene N1 . . . . . . . . . . . . . . . . . . . . 54
10. N´umero de mensajes esperado . . . . . . . . . . . . . . . . . . . . . . . . . 59
7
Lista de Figuras
1. Estilos de enrutamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2. Clasificaci´on y relaci´on de los ataques en sistemas P2P . . . . . . . . . . . 22
3. Tabla de enrutamiento del nodo 1030220 en Pastry . . . . . . . . . . . . . 32
4. Tabla de enrutamiento del nodo N8 en Chord . . . . . . . . . . . . . . . . 33
5. Taxonom´ıa de soluciones al ataque de enrutamiento . . . . . . . . . . . . . 37
6. Proceso de enrutamiento de Cyclone . . . . . . . . . . . . . . . . . . . . . 39
7. Proceso de enrutamiento en la topolog´ıa de quorum con enrutamiento re-
cursivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
8. Enrutamiento de SecureRoutingDHT . . . . . . . . . . . . . . . . . . . . . 51
9. N´umero de mensajes esperado . . . . . . . . . . . . . . . . . . . . . . . . . 60
10. Comparaci´on de probabilidades de ´exito . . . . . . . . . . . . . . . . . . . 63
11. Simulaci´on del n´umero de mensajes . . . . . . . . . . . . . . . . . . . . . . 64
12. Simulaci´on de la tolerancia a nodos maliciosos . . . . . . . . . . . . . . . . 65
8
1. INTRODUCCI´ON
Los sistemas peer-to-peer (P2P) basados en tablas de hash distribuidas (DHT, por sus si-
glas en ingl´es) son una clase especial de sistemas distribuidos con caracter´ısticas interesantes
como escalabilidad, descentralizaci´on y auto-organizaci´on, para el desarrollo de aplicaciones so-
bre redes p´ublicas. De manera general, los sistemas P2P se caracterizan por proveer diversas
funciones al nivel de aplicaci´on, tales como localizaci´on y mensajer´ıa de nodos (enrutamiento),
y almacenamiento y recuperaci´on de datos. Los niveles de aplicaci´on y almacenamiento utilizan
los m´etodos que provee el nivel de enrutamiento para realizar sus funciones.
Las funciones de enrutamiento en un sistema P2P basado en DHT son determinantes para
que las funciones en niveles superiores se realizan de manera correcta. Sin embargo, ´estas no
proveen niveles de seguridad que permitan construir aplicaciones robustas. De hecho, el problema
de seguridad en sistemas P2P basados en DHT es cr´ıtico porque no s´olo existen problemas
inherentes al sistema P2P, sino que tambi´en se derivan los problemas de seguridad en la red
subyacente (red IP) y los requerimientos de seguridad de cierto tipo de aplicaciones. Esto es
com´un a todos los sistemas distribuidos, pero la naturaleza abierta y aut´onoma de un sistema
P2P lo hace m´as vulnerable a varios tipos de ataque
Dentro del componente que maneja la localizaci´on y mensajer´ıa entre nodos, existen varias
funciones como la asignaci´on de identificadores de red, procesos de mantenimiento de la infor-
maci´on de enrutamiento y procesos de enrutamiento, que se pueden ver afectados en presencia
de adversarios con prop´ositos espec´ıficos. Es importante que se controlen la mayor´ıa de estos
procesos porque de esta manera se disminuye el impacto sobre el desempe˜no del sistema. Se
han definido varios estilos de enrutamiento en el contexto de sistemas P2P basados en DHT,
donde cada uno provee caracter´ısticas espec´ıficas que permiten definir protocolos seguros para
el proceso de enrutamiento.
Se han propuesto varios estilos de soluciones, pero com´unmente enfocadas a resolver o dis-
minuir el impacto de un ataque espec´ıfico, lo cual seguramente se hace as´ı por la complejidad que
requiere resolver m´as de un problema. Algunas estrategias utilizan mecanismos que no pueden
ser implementados f´acilmente sobre otros sistemas P2P basados en DHT, lo cual dificulta la ex-
tensibilidad de las soluciones. Finalmente, algunas estrategias al incluir seguridad a los procesos
de enrutamiento, disminuyen la eficiencia del sistema, evidenciando la necesidad de hacer un
balance entre la eficiencia y el nivel de seguridad requerido por el proceso
En este trabajo se presenta un protocolo de enrutamiento seguro en sistemas P2P basados en
DHT llamado SecureRoutingDHT, que afecta de manera controlada la eficiencia del proceso de
enrutamiento. Este protocolo tiene como objetivo mitigar ataques en los niveles de enrutamiento
y de almacenamiento. Adicionalmente, es escalable, compatible con soluciones a otros ataques
y extensible a diferentes sistemas P2P basados en DHT.
Este documento se organiza de la siguiente manera. La secci´on 2 presenta los objetivos de
este trabajo. La secci´on 3 presenta generalidades sobre los sistemas P2P basados en DHT y la
tem´atica de seguridad. La secci´on 4 presenta la tem´atica de seguridad en sistemas P2P basados
en DHT, espec´ıficamente los ataques a los cuales es vulnerable un sistema P2P. Las secciones 5 y 6
presentan las soluciones que se han propuesto a los ataques en el componente de enrutamiento.
La secci´on 7 presenta el protocolo de enrutamiento seguro SecureRoutingDHT. La secci´on 8
muestra la evaluaci´on de desempe˜no y por ´ultimo, la secci´on 9 concluye y da perspectivas sobre
el trabajo futuro.
9
2. OBJETIVOS
Este trabajo est´a enmarcado en las tem´aticas de sistemas P2P y seguridad. Los sistemas P2P
basados en DHT son naturalmente abiertos y aut´onomos, lo cual da entrada a una gran canti-
dad de amenazas que pueden degradar el buen desempe˜no de estos sistemas. Las aplicaciones
construidas sobre estos sistemas funcionan correctamente cuando las propiedades ofrecidas por
el sistema P2P DHT subyacente se mantienen en el tiempo de manera correcta. Es necesario
entonces, proveer mecanismos que garanticen el buen funcionamiento del sistema, el cual es el
objetivo de este trabajo. El ´enfasis sobre las soluciones que se presentan en este trabajo se realiza
sobre aquellas que mitigan ataques en el nivel de localizaci´on de nodos y mensajer´ıa.
Objetivo general
Dise˜nar y desarrollar un protocolo de enrutamiento seguro en sistemas P2P basados en DHT.
Objetivos espec´ıficos
1. Identificar las vulnerabilidades de los sistemas P2P DHT.
2. Analizar las diferentes estrategias de soluci´on propuestas para mitigar los ataques sistemas
P2P basados en DHT.
3. Proponer una clasificaci´on para las soluciones a los ataques estudiados en el nivel de
enrutamiento.
4. Proponer una estrategia de enrutamiento seguro que mitigue los efectos del ataque de
enrutamiento.
5. Evaluar el funcionamiento de la estrategia propuesta mediante simulaciones.
10
3. GENERALIDADES EN SISTEMAS P2P Y TEM´ATICA DE
SEGURIDAD
3.1. Sistemas P2P
Seg´un [2] los sistemas P2P son sistemas distribuidos que consisten en nodos interconectados
capaces de auto-organizarse en alguna topolog´ıa de red con el prop´osito de compartir recursos
tales como contenidos, ciclos de CPU, almacenamiento y ancho de banda. Adem´as, son capaces
de tolerar fallos sin la intervenci´on de entidades centralizadas o intermediarios. Por esto, han
sido utilizados para desplegar aplicaciones para compartir archivos, m´usica y otros datos sobre
Internet. El n´ucleo de estos sistemas es un red de millones de usuarios o sistemas, que de manera
din´amica descubren datos almacenados en cualquier nodo.
Existen dos grandes grupos de sistemas P2P, los no estructurados y estructurados. Los
primeros no imponen ninguna restricci´on sobre la ubicaci´on de nodos y datos en la red. Por
esto, para la localizaci´on de datos utilizan t´ecnicas tales como inundaci´on y random walks.
Pero en general, son bastante impredecibles para encontrar items en el sistema y para algunas
aplicaciones en tiempo real. Por el contrario, los sistemas estructurados imponen restricciones
sobre la ubicaci´on de nodos y datos en la red, lo cual hace los procesos de b´usqueda m´as eficientes.
En particular, este trabajo se enfoca en sistemas P2P basados en DHT, los cuales se presentan
a continuaci´on.
3.1.1. Sistemas P2P basados en DHT
Un sistema P2P basado en DHT es un sistema distribuido que utiliza funciones hash para
la localizaci´on de nodos y datos. Este sistema es estructurado ya que impone restricciones en la
forma como se organizan los nodos y como se distribuyen los datos en el sistema mediante el
uso de una funci´on hash. Usualmente un sistema DHT tiene las siguientes propiedades:
1. Eficiencia en enrutamiento. Como utilizan funciones hash para la localizaci´on de nodos
y objetos, las b´usquedas se pueden resolver f´acilmente. Estos sistemas proveen O(log n)
como l´ımite superior en la longitud del camino de b´usqueda.
2. Balanceo de carga. Existen un balanceo entre el n´umero de datos asignados a los nodos
del sistema. Esto se debe al uso de una funci´on hash de distribuci´on uniforme tal como
SHA-1. Con esto, la sobrecarga en almacenamiento y mantenimiento de nodos crece s´olo
logar´ıtmicamente de acuerdo al n´umero de nodos en el sistema.
3. Auto-organizaci´on. El sistema DHT es totalmente distribuido. La entrada y salida de
los nodos se maneja autom´aticamente sin la necesidad de la coordinaci´on de una entidad
central.
A continuaci´on se presentan Chord [50], Pastry [38] y Kademlia [32], tres ejemplos de sis-
temas P2P basados en DHT proveedores de servicios de localizaci´on de nodos, que ilustran las
caracter´ısticas presentadas anteriormente. Para cada uno se describe el espacio de direcciones,
la informaci´on de la tabla de enrutamiento y los procesos de estabilizaci´on.
11
Chord.
Chord [50] fue uno de los primeros sistemas basados en DHT que fueron creados. ´Este utiliza
una funci´on de hash consistente para asignar a cada nodo y llave un identificador de m bits del
espacio de identificadores, donde m es un par´ametro pre-definido del sistema. Los identificadores
caen sobre un rango entre 0 y 2m − 1. Los nodos se ordenan en un c´ırculo de identificadores
m´odulo 2m. Una llave se almacena en su nodo sucesor, el cual se define como el siguiente nodo
en el c´ırculo en direcci´on a las manecillas del reloj. El nodo predecesor a un nodo o llave es el
pr´oximo nodo en el c´ırculo en direcci´on contraria de las manecillas del reloj.
La tabla de enrutamiento de los nodos en Chord contiene un conjunto m fingers (entradas),
y el predecesor de este nodo. Asuma que el identificador de un nodo es n. La i-´esima entrada en
la tabla de fingers de n, es el sucesor del identificador n + 2i - 1. Se puede notar que la primera
entrada en la tabla de cada nodo es su sucesor. Toda esa informaci´on (predecesor y tabla de
fingers) garantiza el funcionamiento del servicio de lookup. La segunda parte de la tabla de
enrutamiento es una lista de sucesores de tama˜no r.
Un nuevo nodo que ingresa a Chord, primero usa la funci´on de hash para generar su iden-
tificador. Luego contacta al nodo bootstrap (un nodo que ya se encuentra en la red), para que
localice al sucesor de su identificador, quien se convierte en el sucesor del nuevo nodo. La fun-
ci´on de estabilizaci´on, que le permite actualizar sus sucesores, predecesores y fingers, se realiza
peri´odicamente.
Pastry.
Pastry [38] es uno de los sistemas basados en DHT m´as utilizado actualmente. Varias aplica-
ciones tales como SCRIBE [11] y PAST [39], se han desplegado utilizando Pastry como el sistema
DHT subyacente. Cada nodo en Pastry tiene un ´unico identificador de 128 bits. Los identifi-
cadores se escogen de manera aleatoria y uniforme. Una manera de generar identificadores para
los nodos es aplicando una funci´on de hash a las direcciones IP.
Pastry utiliza prefix-matching para enrutar mensajes. Cada nodo mantiene una tabla de
enrutamiento con logb
2 N filas y 2b − 1 columnas. Las entradas en la fila n, de la tabla de
enrutamiento de un nodo, comparten los primeros n d´ıgitos con ese nodo. Adem´as, cada nodo
mantiene un conjunto de leaf que contiene las direcciones IP de los l
2 nodos cuyos identificadores
son los m´as cercanos num´ericamente m´ayores, y los l
2 nodos cuyos identificadores son los m´as
cercanos num´ericamente menores.
Para ingresar al sistema, un nuevo nodo debe conocer a alg´un nodo que hace parte del
sistema. El nuevo nodo puede inicializar su estado contactando al nodo existente y enviando
un mensaje de ingreso con su identificador como la llave. El mensaje se enruta a otro nodo
existente cuyo identificador es num´ericamente m´as cercano al del nuevo nodo. Luego, todos los
nodos encontrados durante el camino env´ıan sus tablas de enrutamiento al nuevo nodo. ´Este
luego inicializa sus propias tablas basadas en la informaci´on recibida. Finalmente, el nuevo nodo
informa a aquellos nodos que necesitan saber de su llegada.
12
El proceso de mantenimiento se maneja peri´odicamente intercambiando mensajes de vida
entre los nodos vecinos. Cuando se detecta una falla de un nodo, todos los miembros del conjunto
leaf del nodo que ha fallado son notificados y estos actualizan sus respectivos conjuntos.
Kademlia.
El principio b´asico de Kademlia [32] es encontrar los nodos que est´an a la mitad de distancia
al nodo destino. Kademlia se diferencia de Pastry y otros sistemas simlares en dos aspectos
principalmente. Una diferencia es la nueva noci´on de cercan´ıa entre nodo basada en la operaci´on
XOR de los identificadores de los nodos. La otra diferencia es que los nodos en Kademlia con-
tienen listas de entradas (buckets), las cuales son usadas para enviar solicitudes paralelas.
El sistema Kademlia asigna identificadores de 160 bits. El algoritmo de b´usqueda usa cercan´ıa
basada en la operac´on XOR con el objetivo de reducir el espacio de lookup. La idea intuitiva
detr´as de esta operaci´on es que los identificadores de nodos que son diferentes en los bits de orden
superior importan m´as que los que son diferentes en los bits de orden inferior, y por tanto, la
distancia ser´ıa mayor XOR. Usando esta m´etrica, la topolog´ıa de Kademlia ordena nodos como
un ´arbol donde los nodos de los sub-´arboles est´an m´as cercanos entre ellos que otros sub-´arboles.
Las tablas de enrutamiento contienen listas separadas para cada bit en el identificador del
nodo. Por esto, si la red usa 128 bits, cada nodo tendr´a 128 listas. Cada lista corresponde a una
distancia particular a nodos. La distancia se mide en el nivel de emparejamiento de los bits en
los identificadores. Kademlia usa m´etricas XOR para definir distancia entre nodos. El resultado
de la operaci´on XOR aplicados a dos identificadores de nodos (retorna 0 para bits d´enticos y
1 para bits diferentes) es la distancia entre dos nodos. Como Chord, los nodos en Kademlia
conocen m´as acerca de nodos m´as cercanos y menos de nodos lejanos.
Cuando un nodo p que desea ingresar al sistema, a˜nade a un nodo conocido, q, a su bucket y
realiza un lookup de nodo. Esto permite llenar su tabla de enrutamiento basado en las respuestas
y se inserta en los k buckets de otros nodos en el sistema. A continuaci´on se presentan los estilos
de enrutamiento tradicionales utilizados por los sistemas P2P basados en DHT.
3.1.2. Estilos de enrutamiento tradicionales
Los mecanismos de enrutamiento requieren de dos procesos importantes: mantenimiento de
tablas de enrutamiento y env´ıo de mensajes. Existen tres estilos de implementaci´on para el env´ıo
de mensajes: recursivo, iterativo y tracer.
En el enrutamiento recursivo, un nodo x, utilizando su informaci´on de enrutamiento, env´ıa
una solicitud por una llave k a un nodo intermedio y, el cual verifica si es responsable por la
llave. Si la respuestas es negativa, se repite el proceso anterior. Cuando la solicitud llega al nodo
responsable por k, digamos r, el puede enviar el resultaso directamente al iniciador o usar el
camino inverso. Ver Figura 1(a). Usando el enrutamiento recursivo, el nodo iniciador no tiene
ning´un control. sobre el proceso de enrutamiento, y por tanto, detecci´on de nodos malicious no
puede realizarse f´acilmente. Trabajos que usan este estilo son Pastry [38], Chord [50] y Kademlia
[32].
13
(a) Recursivo (b) Iterativo
(c) Tracer
Figura 1: Estilos de enrutamiento
A diferencia del estilo recursivo, en el enrutamiento iterativo, cada nodo intermedio y env´ıa
de vuelta a x (iniciador), la direcci´on IP del siguiente salto. Ver Figura 1(b). Utilizando este
estilo, x tiene control total sobre el proceso de enrutamiento. De esta manera, puede detectar
nodos maliciosos. Algunas soluciones que utilizan este estilo son SeChord [34] y Myrmic [52].
Finalmente, el enrutamiento tracer es una combinaci´on de los estilos recursivo e iterativo
[53]. Aqu´ı, cada nodo intermedio y env´ıa dos mensajes, uno al siguiente salto con la solicitud
y otro, al iniciador x, con la informaci´on acerca del siguiente salto. Ver Figura 1(c). Este estilo
provee cierto conocimiento al iniciador, pero no control total.
La Tabla 1 resume los estilos de enrutamiento presentados, describiendo su latencia, n´umero
de mensajes generados y el control que permiten sobre el proceso de enrutamiento, donde h
y l representan el n´umero de saltos esperados y la latencia entre dos nodos, respectivamente.
Por una parte, el estilo recursivo ofrece menor latencia y n´umero de mensajes, pero sin control
sobre el proceso de enrutamiento. De esta manera, la detecci´on de nodos maliciosos no se puede
realizar de manera f´acil. Por otra parte, los estilos iterativo y tracer proveen m´as control sobre
el proceso de enrutamiento pero aumentando el n´umero de mensajes. ´Este ´ultimo mejora la
latencia sobre el estilo iterativo.
14
N´umero de Control sobre el proceso
Estilo mensajes Latencia de enrutamiento
Recursivo
(Directo) h + 1 l(h + 1) Ninguno
Recursivo
(Camino inverso) 2h 2lh Ninguno
Iterativo 2h 2lh Total
Tracer 2h l(h + 1) Medio
Tabla 1: Resumen de estilos de enrutamiento
3.2. Conceptos de Seguridad
La seguridad en computaci´on tiene tres pilares fundamentales: confidencialidad, integridad y
disponibilidad. A continuaci´on se describe cada concepto en las subsecciones 3.2.1, 3.2.2 y 3.2.3,
respectivamente [6].
3.2.1. Confidencialidad
La confidencialidad consiste en ocultar informaci´on o recursos de entidades no autorizadas. La
necesidad de mantener dicha informaci´on secreta se deriva del uso de computadores en campos
sensitivos tales como el gobierno o la industria. De hecho, el primer trabajo formal en este
´ambito estuvo motivado por necesidades militares. Los mecanismos de control de acceso soportan
confidencialidad. Un mecanismo que ayuda a preservar la confidencialidad es la criptograf´ıa, la
cual busca encapsular los datos con el objetivo de hacerlos incomprensibles. Una llave de cifrado
controla el acceso a la informaci´on cifrada, pero esto hace que la llave se convierta en otro dato
que debe protegerse.
3.2.2. Integridad
La integridad hace referencia a la confiabilidad de los datos o recursos, y est´a orientado en
t´erminos de prevenir cambios inapropiados o no autorizados. Este concepto incluye integridad
en dos niveles: en los datos, se refiere al contenido de la informaci´on, y en el origen, se refiere a
la fuente de los datos (autenticaci´on). En ´esta ´ultima, la fuente de informaci´on puede influir en
la exactitud y credibilidad de los datos en cuesti´on.
Existen dos tipos de mecanismos para asegurar la integridad: los de prevenci´on y los de
detecci´on. Por una parte, los mecanismos de prevenci´on buscan mantener la integridad de los
datos mediante el bloqueo a dos tipos de acciones: el cambio de informaci´on por entidades no
autorizadas y el cambio de informaci´on de manera no autorizada. Por otra parte, los mecanismos
de detecci´on se encargan de reportar que la integridad de un dato ha dejado de ser confiable.
Estos mecanismos pueden analizar eventos del sistema (acciones de los usuarios o del sistema)
para detectar alg´un problema. El reporte puede proveer varios tipos de informaci´on: la causa de
la violaci´on de integridad o s´olo reportar que el dato ahora est´a corrupto.
15
Como la integridad necesita que los datos adem´as de correctos sean confiables, existen varios
factores que afectan la integridad: el origen de los datos (c´omo y de donde se obtienen), la forma
como se protege la informaci´on antes que llegue a la entidad actual y la forma como se protege
la informaci´on en la entidad actual.
3.2.3. Disponibilidad
La disponibilidad se refiere a la capacidad de usar la informaci´on o el recurso deseado cuando
se solicita. Este concepto es importante para el aspecto de confiabilidad y del buen funcionamien-
to de un sistema, porque el que un sistema no est´e disponible produce el mismo efecto que si
no existiera. El aspecto de disponibilidad que es relevante en el ´ambito de seguridad es que, un
adversario podr´ıa deliberadamente disponer lo necesario para negar el acceso a los datos o a un
servicio haciendo que no est´e disponible.
3.3. Criptograf´ıa
Criptograf´ıa es el estudio de las t´ecnicas matem´aticas relacionadas con aspectos de seguridad
de la informaci´on tales como confidencialidad, integridad de los datos, autenticaci´on de entidades
y autenticaci´on de la fuente de los datos. Sus objetivos son 4: (1) privacidad o confidencialidad,
(2) integridad de los datos, (3) autenticaci´on y (4) no repudio [7]. El concepto de confidencialidad
fue presentado en la subsecci´on 3.2.1 , por su parte los conceptos de integridad de los datos y
autenticaci´on fueron discutidos en la subsecci´on 3.2.2. El no repudio es el servicio que previene
que una entidad niegue acciones previas, un caso particular de integridad. A continuaci´on se
presentan, de forma general, las caracter´ısticas de las estrategias desarrolladas para solucionar
aspectos relacionados con la criptograf´ıa.
3.3.1. Algoritmos de cifrado
Com´unmente, para lograr confidencialidad, se utilizan esquemas de cifrado, los cuales con-
sisten de 3 conjuntos: uno de llaves K, otro de mensajes M y otro de textos cifrados C. Adem´as
utiliza tres algoritmos que se enumeran a continuaci´on.
1. Algoritmo para generar un par de llaves, una para cifrado, k, y otra para descifrado, k−1.
2. Algoritmo de cifrado que toma como entrada un mensaje m ∈ M y una llave de cifrado
k ∈ K y retorna un mensaje cifrado c ∈ C, donde c = Ek{m}.
3. Algoritmo de descifrado que toma como entrada un mensaje cifrado c ∈ C y una llave de
descifrado k−1 ∈ K y retorna un mensaje m ∈ M, donde m = Dk−1 {m}.
Y se cumple que Dk−1 {Ek{m}} = m. De esta definici´on, se identifican dos estilos de cifrado,
sim´etrico y asim´etrico. Un algoritmo con par de llaves k y k−1 se dice sim´etrico, si es computa-
cionalmente f´acil calcular k−1 dada k y viceversa. Ejemplos de algoritmos sim´etricos son: AES
(Advanced Encryption Standard), DES (Data Encryption Standard) y 3DES.
16
Por el contrario, si es dif´ıcil obtener k−1 (llave privada) dada k (llave p´ublica), el algoritmo
es asim´etrico. Ejemplos de algoritmos asim´etricos son: RSA (Rivest, Shamir, Adleman), ElGa-
mal y ECIES (Elliptic Curve Integrated Encryption Scheme). Es claro que, para los algoritmos
sim´etricos es fundamental mantener el par de llaves de manera secreta porque al comprometer
una, se obtiene la otra r´apidamente. Por su parte, en los asim´etricos solo hay que mantener k−1
de manera secreta.
3.3.2. Funciones hash
Para lograr integridad de los datos se define el concepto de funciones hash. Una funci´on hash
es una funci´on computacionalmente eficiente que mapea cadenas binarias de longitud variable a
cadenas binarias de longitud fija. Adem´as para el uso en criptograf´ıa, cumple con las siguientes
propiedades: (1) dado h, es dif´ıcil computar un m tal que h = H(m), (2) dado m es dif´ıcil
encontrar m tal que H(m) = H(m ) y (3) es computacionalmente dif´ıcil encontrar dos cadenas
m1 y m2, tales que H(m1) = H(m2).
De esta definici´on es f´acil ver que un cambio en la cadena de entrada m, genera otro valor
H(m). Por lo tanto, para garantizar la integridad de m el algoritmo toma la cadena recibida
m y H(m), y verifica si H(m ) = H(m). En tal caso, acepta la cadena. En caso contrario, la
rechaza. SHA-1, RIPEMD-160 son ejemplos de funciones hash [49].
3.3.3. C´odigos de autenticaci´on de mensajes (MAC)
Para lograr autenticaci´on de origen de los datos se define una funci´on llamada c´odigos de
autenticaci´on de mensajes (MAC, por sus siglas en ingl´es), la cual es una funci´on hash que recibe
una cadena de caracteres y una llave y obtiene MACk{m}. Al enviar un mensaje se agrega el
valor MAC y el receptor puede recalcular el valor MAC del mensaje con la llave compartida y
comparar con lo recibido.
3.3.4. Firma digital
La propiedad de no repudio se provee a trav´es de mecanismos de firma digital. Las firmas
digitales tambi´en proveen autenticaci´on e integridad de los datos por el uso de llaves p´ublicas
en su implementaci´on. Un algoritmo de firma digital consiste de tres conjuntos: uno de llaves
K, otro de mensajes M y otro de firmas S. Adem´as utiliza tres algoritmos que se enumeran a
continuaci´on.
1. Un algoritmo de generaci´on de llaves que retorna una llave v´alida para firmar k y una llave
v´alida para verificaci´on k−1.
2. Un algoritmo de generaci´on de firma, la cual recibe como entrada un mensaje m y una
llave para firmar k ∈ K, y retorna una firma s ∈ S. SigA{m} denota la firma de la entidad
A sobre el mensaje m.
3. Un algoritmo de verificaci´on que recibe como entrada una firma s ∈ S, un mensaje m y
una llave de verificaci´on k−1 ∈ K, y retorna un valor binario que representa la validez de
la firma.
17
La firma digital necesita de otros requerimientos para que pueda ser implementada, tales
como: facilidad computacional de generaci´on y verificaci´on de las firmas y debe ser computa-
cionalmente dif´ıcil falsificar una firma digital. En ambientes reales, el mensaje m puede tener
longitud variable, por esto se utilizan funciones hash para reducir el tama˜no a un valor fijo
peque˜no y la firma digital se hace sobre el valor el hash obtenido. Algunos ejemplos de firmas
digitales son RSA y ECDSA (Elliptic Curve Digital Signature Algorithm) [49].
3.3.5. T´ecnicas para compartir un secreto
Las t´ecnicas para compartir un secreto permiten que el propietario de un secreto distribuya
partes del mismo (shares) entre un grupo de participantes. Cada parte por separado no ayuda a
recuperar el secreto, pero un subconjunto de participantes de manera colectiva pueden encontrar
el secreto.
Un esquema de umbral Tn es un esquema para compartir llaves en la cual n partes se
distribuyen de tal manera que cualquier conjunto de t participantes es suficiente para obtener
el secreto, mientras que t − 1 o menos participantes no pueden reconstruir el secreto. El m´as
conocido esquema de umbral fue propuesto por Shamir y se basa en interpolaci´on de polinomios
[49].
3.3.6. Criptograf´ıa basada en identidad (CBI)
La idea principal de CBI es que la llave p´ublica de un usuario u se obtiene a trav´es de una
funci´on hash p´ublica que se aplica sobre una cadena de caracteres asociada a la identidad del
usuario. La correspondiente llave privada se genera por una autoridad central (AC). Esta llave
se le entrega al usuario despu´es que ´este prueba su identidad a AC. La generaci´on de esta llave
reemplaza la expedici´on de certificados. Este par de llaves pueden ser usados para prop´ositos de
cifrado, firmas digitales u otro esquema criptogr´afico. El esquema de cifrado basado en identidad
Cocks [49] es un ejemplo de estos esquemas. Su seguridad reside en la intratabilidad de encontrar
residuos cuadr´aticos compuestos en Zn.
18
4. SEGURIDAD EN SISTEMAS P2P DHT
La seguridad en sistemas P2P permite que este tipo de sistemas se utilicen en un may-
or n´umero de aplicaciones. Desafortunadamente, proveer seguridad en aplicaciones desplegadas
sobre sistemas P2P es m´as dif´ıcil que hacerlo en esquemas cliente/servidor o aplicaciones dis-
tribuidas tradicionales. En este cap´ıtulo se presenta la tem´atica de seguridad en sistemas P2P
DHT. En particular, los atributos de calidad de las aplicaciones en seguridad y las vulnerabil-
idades que poseen los sistemas P2P DHT en las capas de enrutamiento, de almacenamiento y
aplicaci´on.
4.1. Generalidades de seguridad en sistemas P2P DHT
Proveer seguridad a las aplicaciones desplegadas sobre sistemas P2P es un reto debido a su
naturaleza abierta y aut´onoma. Comparado con sistemas cliente/servidor en los cuales se pueden
confiar que las entidades seguir´an los protocolos definidos, los nodos en sistemas P2P no proveen
esa garant´ıa. El ambiente en el cual cada nodo debe funcionar es uno en donde cualquier nodo es
bienvenido a la red, no se puede confiar que los dem´as nodos van a enrutar consultas y respuestas
correctamente, ni que guardar´an los objetos cuando se les solicite, o responder´an a consultas de
las cuales son responsables. A continuaci´on se presentan los atributos de calidad en seguridad
que las aplicaciones actuales requieren: disponibilidad, autenticidad de objetos, anonimidad y
control de acceso.
En la actualidad, los sistemas P2P no proveen todos los atributos de calidad en seguridad
necesarios en cualquiera de estas ´areas. Para cada ´area, es importante desarrollar t´ecnicas que
permitan la prevenci´on, detecci´on, manejo y recuperaci´on de los ataques. Es importante el dise˜no
de protocolos que no dejen puertas abiertas a nuevas oportunidades de ataques.
4.1.1. Disponibilidad
Cada nodo en el sistema P2P debe ser capaz de comunicarse con otros nodos y proveer acceso
a los recursos por los cuales es responsable. El ataque de denegaci´on de servicio (DoS) busca
que un nodo y sus recursos no est´en disponibles, para lo cual utiliza la sobrecarga. Este ataque
es similar al ataque DoS tradicional de la capa de red. Si el ancho de banda disponible de un
nodo se usa para transferir mensajes inservibles que son creados directa o indirectamente por
un nodo malicioso, los dem´as recursos que el nodo ofrece no estar´an disponibles para el resto de
los nodos en el sistema.
Un nodo malicioso puede atacar directamente cualquiera de los recursos de un nodo. La
disponibilidad de CPU de un nodo se puede atacar enviando un n´umero considerable de consultas
complejas para disminuir la capacidad de respuesta a otras solicitudes. La disponibilidad de
almacenamiento se puede atacar por nodos maliciosos que tienen la capacidad de solicitar el
almacenamiento de objetos falsos. A´un cuando se asegure la disponibilidad de los objetos en el
sistema, un ataque de denegaci´on de servicio puede hacerse en contra de la calidad del servicio
con la cual est´an disponibles, por ejemplo, un nodo podr´ıa decir que est´a entregando el objeto
solicitado cuando no es as´ı.
19
Los adversarios que construyen ataques de denegaci´on de servicio necesitan encontrar y
tomar ventaja de mecanismos de ampliaci´on en la red para poder causar mayor da˜no que el que
podr´ıan causar con sus propios recursos. Para esto, ellos podr´ıan comunicarse con nodos zombie
(conjunto de nodos que est´an a disposici´on de un adversario m´as poderoso) que los ayuden a
lograr su cometido y comprometer la disponibilidad de una mayor cantidad de datos o servicios.
4.1.2. Autenticidad de los datos
La autenticidad de datos consiste en determinar cu´ales de las respuestas a una consulta son
aut´enticas. Este problema es diferente al de integridad de los datos, porque ´este ´ultimo busca
asegurar que los datos no se corrompan por fallas en la comunicaci´on. Para el problema de
autenticidad de los datos, se utiliza un algoritmo para determinar si las respuestas a una consulta
poseen una firma aut´entica. Existen cuatro m´etodos para seleccionar los datos aut´enticos en un
sistema P2P:
1. Dato m´as antiguo: Considera al dato m´as antiguo que fue almacenado en el sistema con
un conjunto de metadatos a ser la copia aut´entica de dicho dato.
2. Basado en experto: La autenticidad de un dato la determina un nodo autoritativo o experto.
3. Basado en voto: El uso de un experto induce un ´unico punto de falla, entonces, esta
estrategia utiliza la votaci´on de varios expertos.
4. Basado en reputaci´on: Como algunos expertos pueden ser m´as confiables que otros, el peso
de los votos de este grupo de nodos deber´ıa ser mayor que el de los dem´as. Entonces, se
define una funci´on que permita asignar pesos a las votaciones de cada nodo y de esta
manera obtener la autenticidad de un dato.
4.1.3. Anonimidad
Muchos usuarios est´an interesados en la tem´atica de anonimidad porque les permite com-
ercializar ilegalmente datos de manera que no sea f´acil rastrearlos, pero existen varias razones
leg´ıtimas por las cuales anonimidad es un atributo de calidad de las aplicaciones P2P. Si se
provee anonimidad, se puede prevenir que entidades maliciosas creen, publiquen y distribuyan
datos y que los usuarios que acceden a sus datos puedan mantener protegida su privacidad.
Existen diferentes tipos de anonimidad que se pueden proveer en un sistema P2P.
1. Anonimidad de emisor: ¿Qu´e usuarios crean mensajes?
2. Anonimidad de almacenamiento: ¿Qu´e nodos guardan datos espec´ıficos?
3. Anonimidad de consulta: ¿Qu´e usuarios acceden a qu´e datos?
4. Anonimidad de documento: ¿Qu´e documentos se guardan en un nodo espec´ıfico?
20
En un ambiente ideal, las aplicaciones deben proveer anonimidad mientras se mantienen
otras propiedades asociadas al proceso de b´usqueda y a la seguridad tales como, eficiencia,
descentralizaci´on y descubrimiento de recursos y nodos. Desafortunadamente, proveer varios
tipos de anonimidad crea conflictos con estos elementos de dise˜no de los sistemas P2P.
Por ejemplo, considere la anonimidad de almacenamiento y b´usqueda eficiente. Si se provee
anonimidad de almacenamiento, ser´ıa imposible determinar qu´e nodos son responsables por
guardar un dato. Por otra parte, si se desea buscar de manera eficiente un dato, se deber´ıa
conocer exactamente cu´ales nodos son responsables de almacenar ese dato. Free Haven [57] y
Freenet [58] son sistemas P2P, donde el primero provee anonimidad de almacenamiento y utiliza
inundaci´on (flooding) para la b´usqueda, y el segundo tiene b´usqueda eficiente pero no provee
anonimidad de almacenamiento. Es por esto que se debe definir un equilibrio entre b´usqueda
eficiente y anonimidad de almacenamiento.
4.1.4. Control de acceso
El control de acceso consiste en controlar qu´e usuarios tienen acceso a qu´e recursos del
sistema (qu´e datos puede leer, qu´e programas pueden ejecutar, c´omo comparten los datos, etc.).
Es importante explorar si es razonable o no hacer que la red P2P asegure control de acceso,
o si el control de acceso se debe asegurar en los endpoints de la red. En cualquier caso, s´olo
los usuarios que tienen el derecho para acceso a los datos pueden hacerlo. Los mecanismos de
control de acceso que se implementan en el nivel de aplicaci´on expresan altos niveles de pol´ıticas
de seguridad, debido a la utilizaci´on de roles y transacciones definidas en el sistema.
Existen varias aplicaciones que utilizan controles de acceso, tal es el caso de OceanStore [30]
y PriServ [23]. En el primero, los datos que no son p´ublicos son cifrados. Para prevenir lecturas
no autorizadas, se distribuyen permisos (llaves de cifrado) a aquellos usuarios que tienen accesos
de lectura a ese grupo de datos. Para prevenir escrituras no autorizadas, cada modificaci´on o
escritura se firma. De esta manera, cualquier nodo puede verificar si la modificaci´on fue realizada
por nodos autorizados. En esta aplicaci´on se pierde el contenido original y quedan ´unicamente
los modificados.
En PriServ, la idea es que para que un nodo obtenga datos, ellos deben especificar el prop´osito
y la operaci´on que realizar´a sobre los datos. Con esta informaci´on, los clientes pueden usar la
informaci´on para fines espec´ıficos seg´un el rol que desempe˜nen. Para esto, la generaci´on de las
llaves asignadas a los datos incluye la informaci´on descrita arriba. Como se puede notar, el
mismo grupo de datos puede tener diferentes llaves dependiendo de los distintos prop´ositos de
acceso y operaciones que se realizan sobre ellos.
A continuaci´on se muestran los ataques a los cuales es vulnerable un sistema P2P basado en
DHT. La figura 2 muestra una clasificaci´on de los ataques en estos sistemas. Las subsecciones
4.2 y 4.3 muestran los diferentes ataques en las capas de enrutamiento y de almacenamiento y
aplicaci´on, respectivamente.
21
Figura 2: Clasificaci´on y relaci´on de los ataques en sistemas P2P
4.2. Ataques en la capa de enrutamiento
La capa de enrutamiento provee las funciones principales para la construcci´on de aplica-
ciones en sistemas P2P. En particular, maneja las operaciones de entrada/salida de nodos y
enrutamiento de mensajes. En esta secci´on se discuten los ataques identificados en la literatu-
ra sobre estos procesos. Los ataques de identidad, enrutamiento y entrada/salida de nodos se
presentan en las subsecciones 4.2.1, 4.2.2 y 4.2.3 respectivamente.
4.2.1. Ataques de identidad
Los ataques de identidad vulneran el mecanismo de identificaci´on de los sistemas P2P debido
a la flexibilidad del proceso de asignaci´on de identificadores a nodos. Se distinguen dos estilos
de ataque: asignaci´on de identificadores y Sybil.
Asignaci´on de identificadores. Este ataque ocurre cuando un nodo puede escoger su propio
identificador. Si esto sucede, un atacante puede ubicarse arbitrariamente en el camino de un
nodo v´ıctima con el objetivo de monitorear todo el tr´afico desde y hacia este nodo. Por ejemplo,
en Chord, el identificador de un nodo, nodeId, es una funci´on sobre la direcci´on IP. Un nodo
malicioso puede escoger una direcci´on IP que lo ayude a ubicarse donde ´el desee. De igual manera,
en Pastry, los nodeIds son n´umeros de 128 bits escogidos aleatoriamente y de esta manera, un
nodo puede escoger su identificador maliciosamente.
22
Ataque Sybil. A´un cuando exista un mecanismo que provea asignaci´on segura de identifi-
cadores, esto no asegura que un nodo no pueda obtener m´ultiples identificadores. Si esto sucede,
este nodo podr´ıa controlar gran parte de la red P2P y de esta manera inducir cualquiera de los
ataques que se mencionan en esta secci´on. En particular, si no existen mecanismos para limitar
el n´umero de identidades por nodo, un atacante con acceso a millones de computadores puede
comprometer a un gran n´umero de nodos en la red.
4.2.2. Ataques de enrutamiento
Los sistemas P2P estructurados como Chord [50], CAN [35], Pastry [38] y Baton [22], aplican
el mismo principio durante el proceso de enrutamiento: cuando un nodo p recibe una solicitud
de consulta, si p no posee el resultado de la consulta, busca en su tabla de enrutamiento alg´un
nodo m´as cercano a la respuesta y reenv´ıa la solicitud a ese nodo. El proceso termina cuando se
llega al nodo responsable por el resultado de la consulta. De lo anterior, se puede deducir que
cuando la red es estable (la tasa de entrada/salida de nodos es moderada), una consulta que
viaja de un mismo nodo fuente a un mismo nodo destino, sigue la misma ruta. Es por esto que
en estos sistemas es necesario garanizar la correcta ejecuci´on de las funciones de enrutamiento.
Los ataques de enrutamiento ocurren cuando un nodo no sigue el mecanismo de enrutamiento
de manera correcta. Como se puede notar, un nodo malicioso juega un rol activo en el sistema,
debido a que no s´olo participa en el proceso de enrutamiento de mensajes, sino que su informaci´on
aparece tambi´en en las tablas de enrutamiento de otros nodos. Sit y Morris [47] han clasificado
los ataques de enrutamiento en tres tipos: enrutamiento incorrecto, actualizaciones incorrectas
de informaci´on de enrutamiento y particionamiento incorrecto de la red.
Enrutamiento Incorrecto. El enrutamiento incorrecto se presenta cuando un nodo malicioso
reenv´ıa una solicitud a un nodo incorrecto o retorna un resultado incorrecto al nodo que inici´o la
consulta, por ejemplo, retorna un nodo afirmando que es el responsable del resultado buscado,
esto es conocido como robo de identidad. Para el primer estilo de ataque, una soluci´on es
que, el nodo que inicia el proceso monitoree el proceso. De esta manera, si un nodo reenv´ıa la
solicitud hacia otro nodo diferente del correcto, se puede identificar un nodo malicioso. Con esta
informaci´on, un nodo podr´ıa excluir a este nodo malicioso de ´este y otros procesos de b´usqueda
y escoger rutas alternas. Para el segundo estilo de ataque, el nodo que inicia el proceso puede
obtener el rango de valores por los cuales un nodo es responsable y verificar el resultado obtenido.
Sin embargo, este estilo de soluci´on requiere que el identificador de los nodos sea asignado de
manera que sea verificable.
Actualizaciones incorrectas de informaci´on de enrutamiento. La tabla de enrutamiento
de un nodo honesto debe ser protegida para asegurar que no contiene muchas entradas de
nodos maliciosos. De otra forma, ese grupo de nodos estar´an controlados por un grupo de
nodos maliciosos. La actualizaci´on incorrecta de informaci´on de enrutamiento ocurre cuando
un nodo malicioso corrompe las tablas de enrutamiento de otros nodos mediante el env´ıo de
informaci´on incorrecta. Como consecuencia de esto, nodos honestos pueden desviar solicitudes
a nodos inapropiados o que no existen.
23
Una soluci´on a este ataque es verificar que al nodo remoto se puede llegar antes de incorporar
la actualizaci´on a la tabla de enrutamiento. Otro ataque de este tipo ocurre cuando el sistema
provee flexibilidad en la escogencia de nodos durante el reenv´ıo de solicitudes. Este ataque no
afecta lo correcto del protocolo de enrutamiento pero puede afectar la calidad del servicio. Por
ejemplo, en vez de escoger el nodo m´as r´apido, el nodo malicioso puede enrutar la solicitud
hacia un nodo con bajo ancho de banda. En este caso, un modelo de confianza efectivo puede
ofrecer una buena soluci´on. Una generalizaci´on de este ataque se conoce con el nombre de Ataque
Eclipse [46].
Particionamiento incorrecto de la red. El particionamiento incorrecto de la red ocurre
cuando un nodo que ingresa a la red P2P es inducido a otra partici´on de la red formada por
un grupo de nodos maliciosos. Esto puede ocurrir porque cuando un nodo entra al sistema, lo
hace a trav´es de alg´un nodo (bootstrap) conocido que se encuentra en el sistema. Este nodo
podr´ıa hacer parte de la partici´on de nodos maliciosos. Igualmente, un nodo malicioso en una
partici´on leg´ıtima puede desviar nuevos nodos hacia la partici´on maliciosa. Una soluci´on es que
un nuevo nodo mantenga informaci´on sobre nodos honestos que conoce con anterioridad y use
alguno de estos nodos como bootstrap. Si el nodo va a ingresar por primera vez, puede contactar
nodos conocidos p´ublicamente. Otra soluci´on simple y efectiva es la asignaci´on de identificadores
usando su llave p´ublica. Aunque este estilo de soluci´on incurre en operaciones adicionales, nodos
maliciosos no pueden f´acilmente comprometer el sistema.
4.2.3. Ataque de entrada/salida de nodos
Como los nodos entran y salen del sistema, se requiere un proceso de reasignaci´on de re-
sponsabilidades, con el objetivo de que el proceso de lookup trabaje correctamente. Un nodo
malicioso puede enga˜nar al sistema, haci´endolo re-balancearse innecesariamente causando exce-
so de transferencia de datos y tr´afico. Mas a´un, un adversario podr´ıa convencer que un nodo
no est´a disponible o que alg´un nodo ha ingresado, cuando no es cierto. Como consecuencia,
la eficiencia y el desempe˜no del sistema se ven comprometidos. Es importante mencionar que
cualquier sistema P2P basado en DHT debe proveer un mecanismo para tratar este problema,
independientemente si nodos maliciosos est´an presentes.
4.3. Ataques en las capas de almacenamiento y aplicaci´on
En la capa de aplicaci´on se construyen servicios que hacen uso del sistema de localizaci´on
ofrecido por la capa subyacente. Por este motivo, se introducen nuevos estilos de ataque dependi-
endo considerablemente de la aplicaci´on construida. En esta secci´on se discuten los ataques m´as
representativos identificados en la literatura. Los ataques de almacenamiento y recuperaci´on de
informaci´on, comportamiento inconsistente y generaci´on de mensajes no solicitados se presentan
en las subsecciones 4.3.1, 4.3.2 y 4.3.3 respectivamente.
4.3.1. Almacenamiento y recuperaci´on de informaci´on
Los sistemas P2P (estructurados y no estructurados) desplegados como repositorios de infor-
maci´on distribuida son vulnerables a varios tipos de ataques de almacenamiento y recuperaci´on
de informaci´on, incluyendo los siguientes:
24
1. Un nodo malicioso se reh´usa a almacenar informaci´on de la cual es responsable.
2. Un nodo malicioso puede aceptar el almacenamiento de informaci´on, pero luego borrarla.
Este es un problema cr´ıtico porque la informaci´on se puede perder para siempre.
3. Un nodo malicioso puede ser responsable del almacenamiento de la informaci´on solicitada,
pero se reh´usa a entregarla, o peor a´un, entrega una copia alterada.
4. Un nodo malicioso puede coordinar ataques con otros nodos.
Los ataques anteriores tambi´en aplican a sistemas donde los metadatos (en vez de los datos)
se guardan. En particular, los metadatos m´as comunes son los que se usan como ´ındices de
b´usqueda, y son cr´ıticos para asegurar la completitud de las solicitudes.
4.3.2. Comportamiento inconsistente
Cualquiera de los ataques que se presentan aqu´ı, pueden ser m´as dif´ıciles de detectar si un
nodo malicioso act´ua bien para una parte de la red. Esto es, un nodo malicioso puede escoger
maximizar su impacto, asegurando que trabaja correctamente para algunos nodos, por ejemplo,
nodos cercanos a ´el. Estos nodos no tendr´ıan ning´un motivo para excluir al nodo de sus tablas
de enrutamiento a pesar del hecho que otros nodos (distantes) lo detecten como malicioso. Esto
podr´ıa no ser un gran problema si las consultas se enrutan a trav´es de nodos cercanos antes
de llegar al destino. Sin embargo, la mayor´ıa de los protocolos de enrutamiento hacen saltos a
nodos m´as lejanos con el objetivo de llegar m´as r´apido al destino.
En un contexto ideal, nodos lejanos podr´ıan convencer a nodos cercanos que uno de ellos es
un nodo malicioso. Sin embargo, sin llaves p´ublicas ni firmas digitales, no es posible distinguir
un reporte bueno de uno malicioso que busca excluir a nodos que son buenos.
4.3.3. Generaci´on de mensajes no solicitados
En este ataque, un nodo malicioso puede ser capaz de dise˜nar una situaci´on en la que puede
enviar una respuesta a una pregunta no solicitada. La mejor defensa contra este tipo de ataque es
la de emplear t´ecnicas de autenticaci´on est´andar como firmas digitales o c´odigos de autenticaci´on
de mensajes (MAC). Sin embargo, las firmas digitales son bastante costosas y los MACs requieren
llaves compartidas. Una defensa m´as razonable podr´ıa ser la de usar n´umeros aleatorios (nonces)
para asegurar que mensajes antiguos no puedan ser re-usados maliciosamente.
4.4. Discusi´on sobre ataques en sistemas P2P
La Tabla 2 muestra que pilar(es) se ve(n) afectado(s) por la presencia de alguno de los ataques
presentados en esta secci´on. Como se puede observar, todos los ataques afectan la disponibilidad
del sistema, buscando denegar los servicios de un nodo o grupo de nodos. En cuanto a los ataques
que afectan la capa de enrutamiento, los ataques de manejo de identidad son los m´as fuertes
debido a que tienen control sobre partes del sistema, lo cual implica que se pueden comprometer
todos los servicios que se est´en ofreciendo.
25
Tabla 2: Ataques a sistemas P2P
Ataque Capa Confidencialidad Integridad Disponibilidad
Asignaci´on de identificadores Enrutamiento X X X
Sybil Enrutamiento X X X
Enrutamiento incorrecto Enrutamiento X X
Actualizaciones incorrectas Enrutamiento X X
Particionamiento incorrecto Enrutamiento X
Entrada/Salida de nodos Enrutamiento X
Almacenamiento y recuperaci´on
de informaci´on Aplicaci´on X X X
Comportamiento inconsistente Aplicaci´on X
Generaci´on de mensajes
no solicitados Aplicaci´on X
Asumiendo la existencia de una prevenci´on contra este tipo de ataques, es importante notar
que el resto de ataques en las capas de enrutamiento y aplicaci´on podr´ıan existir, debido a que
esto no asegura que varios nodos que han ingresado al sistema, decidan actuar maliciosamente
a causa de factores propios o externos, como virus, suplantaciones, etc.
Cabe anotar, que bajo la presencia de un ataque se pueden inducir nuevos ataques, lo cual
crea cadenas de relaci´on entre el grupo de ataques presentado. Como resultado, si un sistema P2P
no se protege contra este grupo de ataques, son m´as las vulnerabilidades que podr´ıa explotar un
adversario. Por esto, para que la protecci´on en ese ambiente sea m´as completa, se deben conocer
estas relaciones y prestar mayor atenci´on a la fuente de los mismos. La Figura 2 muestra la
relaci´on entre los ataques presentados, las l´ıneas punteadas indican relaci´on. Por ejemplo, si no
se protege contra el ataque de actualizaci´on de informaci´on de enrutamiento esto podr´ıa afectar
el enruamiento de nodos honestos. Por su parte, si hay una prevenci´on al ataque, los nodos
maliciosos a´un podr´ıan enrutar de manera incorrecta.
El protocolo de enrutamiento es la funci´on principal de los sistemas P2P y de esta manera
se convierte en uno de los procesos m´as cr´ıticos para el funcionamiento correcto del sistema.
Es por esto que ha sido objeto de mucha atenci´on y se convierte en el foco de este trabajo. En
las siguientes secciones se presentan soluciones a los ataques en la capa de enrutamiento m´as
representativos: ataques sybil y eclipse y ataque de enrutamiento, descritos en las secciones 5 y
6, respectivamente.
26
5. SOLUCIONES A ATAQUES DE IDENTIDAD Y ECLIPSE
En esta secci´on se presentan soluciones a los ataques de identidad y eclipse, descritos en las
secciones 5.1 y 5.2, respectivamente.
5.1. Ataques de asignaci´on de identificadores y sybil
El ataque Sybil fue estudiado por Douceur[16], quien discute un modelo abstracto de sistema
distribuido y demuestra que la mejor soluci´on para defenderse de ese ataque es mediante el uso
de una entidad central confiable. Adem´as sugiere el uso de pruebas de recursos computacionales,
de almacenamiento o de red para limitar el ataque sybil en un ambiente totalmente distribuido.
Varios estilos de soluci´on al ataque sybil en sistemas P2P, redes ad-hoc y otras aplicaciones
se identifican en la literatura [29]. En este trabajo solo se discutir´an las soluciones encontradas
para sistemas P2P basados en DHT dividas en grupos seg´un su grado de centralizaci´on. Cada
estrategia presentada se analizar´a teniendo en cuenta tres criterios: asignaci´on, la cual define
la forma como los participantes obtienen un identificador, verificaci´on, la cual permite a otros
nodos distinguir si un identificador es v´alido o no, y limitaci´on, la cual restringe el n´umero de
identificadores por participante (esto es necesario para prevenir el ataque Sybil).
5.1.1. Estrategias centralizadas
Este grupo de estrategias utiliza una entidad centralizada para generar los identificadores
de los nodos participantes. Existen muchos trabajos que suponen la existencia de una soluci´on
centralizada para mitigar el ataque sybil. En su mayor´ıa, estas soluciones apuntan a los estilos
descritos en [10] y [8].
En las estrategia descrita por Castro et al. [10], el proceso de asignaci´on de identificadores
se delega a una entidad certificadora confiable, la cual genera un certificado que contiene: un
identificador generado de forma aleatoria, una llave p´ublica y la direcci´on IP del nodo. Esta
entidad asegura que los identificadores se escogen de manera aleatoria y previene la falsificaci´on
de los mismos. Cada nodo del sistema conoce la llave p´ublica de la entidad certificadora y con ella
puede verificar la validez de un certificado. Los nodos con certificados v´alidos pueden ingresar
a la red, participar en el proceso de enrutamiento, y dejar la red sin consultar a la entidad
certificadora.
Castro et al. propone dos soluciones para el proceso de limitaci´on. La primera, requiere que
un adversario pague dinero por certificados. Con esta soluci´on, el costo de un ataque crece a
medida que la red crece. Por ejemplo, si un certificado cuesta $30 pesos, controlando 10 % de
una red con 1000 nodos cuesta $3000 pesos y el costo se aumenta a $3000000 cuando la red tiene
1000000 de nodos. Para realizar un ataque a un nodo espec´ıfico, el costo es de aproximadamente
$30000 para obtener el identificador de un nodo particular en una red de 1000 nodos. La segunda
soluci´on es ligar identificadores en la red a identidades en el mundo real (por ejemplo, c´edula
del participante).
27
En [8] se presentan tres protocolos que usan criptograf´ıa basada en identidad (CBI) durante
el proceso de asignaci´on, para dar soluci´on a los ataques de identidad. Estos protocolos se
diferencian en los roles y las entidades a cargo de esos roles durante el proceso de asignaci´on.
A continuaci´on se describe el proceso de asignaci´on para cada protocolo y luego los procesos de
verificaci´on y limitaci´on debido a que son iguales en los tres casos.
En el primer protocolo (P1) existen dos entidades. La primera es una entidad confiable
adicional llamada GLP que se encarga de la generaci´on de llaves privadas y la segunda es un
nodo bootstrap, llamado NB, el cual genera un token de autenticaci´on para ingresar e interactuar
en el sistema.
Durante el proceso de asignaci´on se realizan los siguientes pasos. Primero, un participante
N contacta a GLP y le env´ıa su direcci´on IP. GLP autentica d´ebilmente a N verificando si
tiene control sobre la IP. Este proceso consiste en el env´ıo y recepci´on de un mensaje espec´ıfico.
Luego, a trav´es de un protocolo de acuerdo de llaves, como Diffie-Hellman [49], intercambian
una llave privada sim´etrica Sk. El segundo paso consiste en que GLP env´ıa a N un identificador
aleatorio (id) y la llave privada del participante cifrada con Sk. Durante el tercer paso, N descifra
la informaci´on usando Sk y env´ıa a NB su id, una estampa de tiempo (ET) y la firma de la
concatenaci´on del id con ET, SigN (id ET). Por ´ultimo, NB verifica la firma y genera una firma
con la misma concatenaci´on, SigNB (id ET).
A diferencia del primer protocolo, en este (P2) los nodos GLP y NB son una misma entidad,
llam´emosla NB. Durante el proceso de asignaci´on, NB autentica a N mediante la direcci´on
IP e intercambian una llave sim´etrica Sk. Luego, NB env´ıa un identificador aleatorio id, llave
privada de N cifrado con Sk, una estampa de tiempo ET y la firma del id junto con la estampa,
SigNB (id ET).
El tercer protocolo (P3), al igual que el primero usa dos entidades. La primera entidad es
la encargada de generar identificadores (AS) y la segunda de proveer la entrada de los nodos
al sistema (NB). Antes de la inicializaci´on se generan llaves privadas entre las dos entidades,
digamos Sk1 . Durante el proceso de asignaci´on, el participante contacta a AS, ´este autentica
a N y env´ıa un identificador aleatorio id, una estampa de tiempo ET1 y MACSk1
(id||ET1). N
reenv´ıa esta informaci´on a NB, quien verifica esta informaci´on. Luego, NB y N intercambian
una llave sim´etrica Sk2 , NB env´ıa la llave privada del participante cifrada con Sk2 , una estampa
de tiempo ET2, y la firma del id junto con la estampa SigNB (id||ET2).
Para los tres protocolos, al finalizar el proceso de asignaci´on, cada nodo posee un identificador
id, una estampa de tiempo ET y la firma SigNB (id||ET), los cuales sirven como un token de
verificaci´on. Durante una interacci´on entre nodos, uno de ellos presenta el token, y el otro puede
verificar la firma debido a que conoce la llave p´ublica de NB. El proceso de limitaci´on se hace a
trav´es de la direcci´on IP, es decir, se genera un identificador aleatorio por cada IP.
28
Los tres protocolos utilizan un nodo bootstrap (NB) que debe ser confiable, lo cual se convierte
en un punto de falla cuando se compromete la integridad de dicho nodo. El protocolo P3 se puede
hacer m´as escalable debido a que la entidad AS pueden ser varios equipos, pero eso implica que
cada uno de estos equipos debe intercambiar una llave sim´etrica con NB. Este proceso se puede
realizar offline o a trav´es de un protocolo de acuerdo de llaves como Diffie-Hellman. La ventaja de
usar CBI es que se eliminan los certificados debido a que la llave p´ublica puede ser el identificador
del nodo, la direcci´on IP, etc, es decir, cualquier cadena de caracteres que identifique al nodo.
5.1.2. Estrategias jer´arquicas
Este grupo de estrategias se basan en el establecimiento de jerarqu´ıas para dar soluci´on al
ataque Sybil. En [37] se presenta un control de admisi´on jer´arquico para limitar este ataque
mediante el uso de una estructura arb´orea donde la ra´ız es una entidad confiable. El objetivo de
la estrategia es utilizar poder de c´omputo para el ingreso de un nodo al sistema. Con esto, busca
aumentar el costo computacional para reducir el n´umero de entidades asignadas. A continuaci´on
se describe la estrategia.
Durante el proceso de asignaci´on, si un nodo A desea unirse al sistema, ´este genera un par
de llaves p´ublica y privada, Spub y Spriv. Luego, contacta una hoja del ´arbol1 Xn y le env´ıa Spub.
Xn genera un rompecabezas (puzzle), se lo env´ıa a A, quien lo resuelve y devuelve a Xn. De esta
manera, Xn le env´ıa un token a A para que lo use como prueba de la soluci´on del puzzle ante
Xn−1 (padre de Xn). Este proceso se repite hasta alcanzar la ra´ız, donde A recibe el identificador
id y un token de aceptaci´on al sistema.
Durante el proceso de verificaci´on, como el nodo ra´ız es conocido por todos (llave p´ublica),
cualquier nodo del sistema puede verificar el token generado durante la asignaci´on. En el proceso
de limitaci´on se exige que cada nodo realice el proceso de asignaci´on cada cierto intervalo de
tiempo.
La siguiente estrategia se basa en invitaciones sociales para limitar el ataque [28]. La idea es
mantener un arbol n-ario que representa las invitaciones hechas por los miembros. La ra´ız del
arbol es inicializada por un conjunto S de miembros, quienes genera un par de llaves p´ublica
y privada. La llave privada es distribuida usando un esquema de criptografia de umbral cuan-
do |S| > 1. Adem´as posee un certificado auto-firmado con su llave privada y el conjunto de
invitaciones son los n´umeros naturales N.
Durante el proceso de asignaci´on, el nuevo miembro genera un par de llaves p´ublica Spub y
privada Spriv, y recibe una invitaci´on representada por un certificado firmado por el padre en el
´arbol y la cadena de certificados desde el padre hasta la ra´ız. Este certificado contiene un n´umero
uid ∈ Uidf , el hash de la llave p´ublica H(Spub) y posiblemente un intervalo Uidnew ⊆ Uidf de
n´umeros naturales representando las invitaciones que este nodo puede hacer, el conjunto Uidf
representa el intervalo de invitaciones del padre.
1
Se supone la existencia de un mecanismo que permite conocer alguna de las hojas del ´arbol.
29
Un nodo puede verificar la membres´ıa de otro nodo con identificador id, validando la cadena
de certificados desde el nodo hasta la ra´ız y comprobando que id es igual al hash del campo uid.
Este proceso no requiere que los nodos est´en en l´ınea debido a que el nodo tiene la cadena de
certificados y todos los nodos conocen la llave p´ublica del nodo ra´ız. El proceso de limitaci´on es
basado en las invitaciones y la moderaci´on de su entrega, la cual se logra tratando de balancear
el ´arbol que representa el proceso de invitaciones.
5.1.3. Estrategias descentralizadas
A diferencia del primer grupo de estrategias, este grupo no utiliza una entidad centralizada
para generar los identificadores de los nodos participantes. Por el contrario, el proceso se realiza
de manera descentralizada.
Las estrategia descrita en [5] utiliza la resoluci´on de rompecabezas (puzzles) para hacer
pruebas computacionales con el fin de limitar la generaci´on arbitraria de nodos. A continuaci´on
se describen los procesos de asignaci´on, verificaci´on y limitaci´on para la estrategia. S/Kademlia
[5] usa dos estilos de puzzles, uno est´atico para la asignaci´on con par´ametro de seguridad c1, y
otro din´amico para el proceso de limitaci´on con par´ametro de seguridad c2.
Durante el proceso de asignaci´on, para ingresar al sistema, un nodo debe generar una pareja
de llaves p´ublica spub y privada spriv con la caracter´ıstica que H(H(spub)) da como resultado un
valor cuyos c1 primeros bits son cero (H es una funci´on hash). El identificador id se define como
H(spub).
Durante el proceso de verificaci´on, cuando un nodo interact´ua con otro, ´este verifica la firma
del mensaje2 y evidencia la ejecuci´on del puzzle din´amico. Durante el proceso de limitaci´on,
se utiliza un puzzle din´amico, el cual consiste en encontrar un X tal que H(id ⊕ X) da como
resultado un valor cuyos c2 primeros bits son cero. Luego, la evidencia de que un nodo resolvi´o el
puzzle din´amico es la tupla < id, X >.
Este trabajo propone el uso de auto registro en chord [15]. Durante el proceso de asignaci´on
cada nodo escoge su id = H(ip : puerto) y se auto registra en r nodos del DHT, estos nodos
son los responsables por el identificador idj = H(ip prefix j) para 1 ≤ j ≤ r. Por su
parte el proceso de verificaci´on es simple, un nodo valida a otro si cumple con la invariante
id − H(ip : puerto) = 0.
El proceso de limitaci´on es realizado durante el registro y la entrada de un nodo al sistema.
Cada nodo mantiene una estructura de datos que asocia por direcci´on ip los ids registrados, de
esta manera durante el proceso de registro, se puede verificar si la direcci´on IP no sobrepasa un
umbral a de registros. En el proceso de entrada de un nodo con identificador id al sistema, se
envia un mensaje join al nodo responsable por id en el DHT, digamos p. Al recibir el mensaje p
verifica el id y contacta los r nodos del registro preguntando sobre la validez del id. Si p recibe
mas de r
2 respuestas positivas, acepta al nuevo peer y actualiza sus respectivas entradas.
2
La firma contiene la direcci´on IP, puerto y una estampa de tiempo.
30
Tabla 3: Soluciones del ataque Sybil
Grado de Persistencia
Estrategia Centralizaci´on Asignaci´on Verificaci´on Limitaci´on de identificadores
Castro Validaci´on de Precio
[10] Centralizado Certificados certificados Id externo S´ı
CBI Token firmado Validaci´on
[8] Centralizado por NB del token Id externo No
Rowaihy Token firmado Validaci´on
[37] Jer´arquico por la ra´ız del token C´omputo No
Lesueur Certificado Validaci´on
[28] Jer´arquico firmado por de la cadena Invitaciones S´ı
el padre de certificados
Rompecabezas Validaci´on del
S/KADEMLIA Descentralizado sobre la rompecabezas C´omputo No
[5] llave p´ublica est´atico y din´amico
Validaci´on de
Dinger Descentralizado id=H(Ip:puerto) id-H(Ip:puerto)=0 Id externo No
[15]
5.1.4. Discusi´on de las soluciones al ataque de identidad
En la tabla 3 se resume las estrategias analizadas para resolver el ataque sybil. Las estrate-
gias centralizadas son vulnerables a ataques de DoS, representan un ´unico punto de falla, su
administraci´on puede ser complicada en sistemas muy grandes como los sistemas peer to peer,
pero se tiene mayor control sobre los nodos que se encuentran en el sistema, lo cual puede ayudar
a identificar los nodos maliciosos. Las estrategias jer´arquicas ayudan a distribuir la carga pero
a´un se puede presentar ataques de DoS, estos van dirigidos a comprometer los nodos con mayor
jerarqu´ıa debido a que son los mas confiables. Por ´ultimo, las estrategias descentralizadas debido
a la falta de control no son muy resistente al ataque sybil.
Todas las estrategias analizadas a excepci´on de [15] proveen al nodo una llave p´ublica y
privada, esto es importante debido a que los nodos pueden firmar sus mensajes y cifrar sus
mensajes en las operaciones entre los peers del sistema. El proceso de verificaci´on no solo es
importante para la membres´ıa de un nodo, sino que a trav´es de este proceso se pueden descartar
paquetes que no sean del sistema. Por ejemplo, si se recibe un paquete cuya firma no es v´alida
o cuya direcci´on origen no este relacionada con el id, el mensaje se descarta.
En cuanto al proceso de limitaci´on, las estrategias que usan un identificador externo trasladan
el problema al sistema donde se apoya para obtener el identificador. De esta manera, el uso de
una direcci´on IP para limitar el ataque no es efectivo, porque si un atacante posee una red clase
B [27] a su disposici´on puede generar muchas identidades y si se usa IPV6 [27] el efecto es el
mismo. De esto se concluye que el uso de identificadores externo para limitar el ataque se debe
hacer con mucha precauci´on.
Las soluciones que usan costo computacional, limitan el ataque pero le imponen a un peer
no malicioso un constante uso de recurso computacional, lo cual puede afectar a estos nodos
con limitados recursos. Por su parte, las soluciones basadas en costo social y costo monetario,
limitan el ataque dado que hacen la entrada al sistema muy dif´ıcil.
31
Figura 3: Tabla de enrutamiento del nodo 1030220 en Pastry
La persistencia de los identificadores se refiere al hecho que un miembro siempre use el mismo
identificador cuando ingresa al sistema, esta caracter´ıstica le quita flexibilidad en cuanto a usar
otros ids pero ayuda a identificar nodos maliciosos, debido a que si un nodo es sospechoso de
ser malicioso puede seguir siendo monitoreado aun cuando salga y entre nuevamente al sistema.
5.2. Ataque Eclipse
Como se ha descrito anteriormente este ataque va dirigido a la forma como se actualizan las
tablas de enrutamiento de un sistema P2P DHT, este ataque ocurre cuando se desea encontrar
el nodo correspondiente a entrada en la tabla de enrutamiento. A continuaci´on se ilustra la
importancia del ataque a trav´es de un ejemplo.
Considere un anillo de Pastry con tama˜no N=4096 y base b=4. Un posible estado de la tabla
de enrutamiento del nodo 103220 se ilustra en la Figura 3. De la definici´on, la entrada (4,1) debe
tener como prefijo 10321, es decir los nodos con identificadores 103210, 103211, 10322, 103213
pueden ocupar esta entrada. Pastry escoge el nodo con menor latencia en la red entre ese grupo.
Es claro que los primeros niveles en la tabla de enrutamiento tienen m´as posibilidades de
escogencia. De esta manera, durante el proceso de estabilizaci´on, un atacante con muchos identi-
ficadores en el sistema puede aparecer con frecuencia en las tablas de enrutamiento. Un atacante
inteligentemente puede interceptar los paquetes enviados durante el proceso de estabilizaci´on y
dar como respuesta un identificador que cumpla con la petici´on. Adem´as podr´ıa atacar el proceso
de estimaci´on de la latencia para hacer parecer estar m´as cerca y aumentar la probabilidad de
ser incluido.
Considere ahora un anillo de Chord (Figura 4). El finger n´umero 4 del nodo N8 es el sucesor
de N8 + 8 = 16, para el ejemplo, N21. Es decir, para un atacante es m´as dif´ıcil llenar la tabla
de enrutamiento sino se encuentra en un lugar espec´ıfico del sistema. Claramente esto es cierto
si el nodo malicioso no puede escoger su identificador, es decir, que la ubicaci´on del atacante se
escoja de manera uniforme y se limite el n´umero de identificadores por nodo.
32
Figura 4: Tabla de enrutamiento del nodo N8 en Chord
El objetivo de las estrategias para mitigar este tipo de amenaza es limitar la fracci´on de
nodos maliciosos en la tabla de enrutamiento, muchas de estas estrategias son construidas para
DHTs como Pastry y Tapestry debido a que la selecci´on de nodos en estos sistemas es m´as
flexible y tienen en cuenta m´etricas de proximidad geogr´afica. A continuaci´on se presentan
varias estrategias que mitigan el ataque Eclipse. Estas estrategias se clasifican de acuerdo al
estilo de soluci´on: (1) basadas en restriciones sobre los nodos y (2) induci´on de entrada y salida
de nodos, presentadas en la subsecciones 5.2.1 y 5.2.2 respectivamente.
5.2.1. Estrategias basadas en restricciones sobre los nodos
La idea intuitiva de este grupo de estrategias consiste en definir un mecanismo para restringir
la escogencia de los nodos de tal manera que se pueda limitar el ataque. Este mecanismo se puede
definir como un funci´on que toma como parametro un identificador nodeId y retorna un valor
de verdad que indica si el nodo se debe ingresar o mantener en la tabla de enrutamiento.
Castro et al. [10] proponen una soluci´on para Pastry, introduciendo una tabla adicional llama-
da tabla restringida. La idea es que las entradas de la tabla de enrutamiento se escojan de acuerdo
a la ubicaci´on de los nodos en el anillo (similar a Chord). La entrada (i, j) para un nodo con
identificador nodeId=x1x2 · · · xi · · · xn, es el nodo ms cercano al punto p=x1x2 · · ·xij · · ·xn. Con
esta nueva tabla se realizan procesos de enrutamiento seguro cuando el enrutamiento tradicional
de Pastry falla, m´as adelante se discute este proceso (subsecci´on 6.1.2). Dadas las restricciones
de la tabla, cuando los nodos se distribuyen uniformemente y la fracci´on de nodos maliciosos es
f, es claro que la probabilidad de que una entrada sea maliciosa tambi´en es f.
Por su parte, Hildrum y Kubiatowicz [20] proponen aumentar cada entrada en la tabla de
enrutamiento de Pastry a un conjunto r de los nodos m´as cercanos en t´erminos de distancia. Los
autores asumen que existe una t´ecnica segura para medir la latencia entre nodos. Su propuesta se
basa en la dificultad de que varios atacantes est´en cerca en la red subyacente. Adem´as, introducen
protocolos de enrutamiento seguro que ser´an descritos en la subsecci´on 6.1.2.
33
Singh et al. [46] proponen una estrategia para Pastry basada en la observaci´on que bajo un
ataque Eclipse, el n´umero de nodos que apuntan a un nodo malicioso (in-degree) es mayor que
el n´umero de nodos que apuntan a un nodo no malicioso. La estrategia consiste en que un nodo
correcto debe apuntar s´olo a nodos cuyo in-degree y out-degree es menor que un umbral. Limitar
el out-degree es importante debido a que un atacante podr´ıa consumir el in-degree de un nodo
y por tanto no se tendr´ıan en cuenta.
Para esto cada nodo x debe mantener una lista de backpointers que se define como los nodos
que apuntan a x en la red. Un nodo es auditado de manera an´onima para verificar su out-degree
y in-degree. Cada nodo x, de forma peri´odica y an´onima, pide la lista de backpointers S de alg´un
nodo entre sus contactos y verifica si ´el se encuentra en S, si el tama˜no de S es menor que un
umbral. De manera similar, pide la lista de contactos de alg´un nodo en su lista de backpointers y
verifica los mismos criterios. En el caso que no se cumplan las restricciones, las comunicaciones
hacia y desde el nodo son removidas.
Como se puede observar, la anonimidad en el proceso de auditaci´on es esencial para limitar
que un atacante no pueda falsificar su respuesta f´acilmente. En este trabajo se propone el
uso de relays, es decir, que un tercero haga la pregunta. Para esto, el nodo relay se escoge
aleatoriamente del conjunto de l nodos m´as cercano a h(x), donde x es el nodo auditado. Los
autores analizan el hecho que un relay es malicioso y proponen una estrategia basada en votaci´on.
5.2.2. Estrategias basadas en induci´on de entradas y salidas de nodos
La idea intuitiva de estas estrategias es asignar un nuevo identificador a cada nodo del
sistema, con el objetivo de que el nodo vuelva entrar al sistema y recalcule su informaci´on de
enrutamiento, limitando el impacto de los atacantes.
Condie et al. [12] proponen un mecanismo de defensa para el ataque Eclipse basado en la
reubicaci´on de nodos que trata algunos problemas de la estrategia presentada en [10]. Peri´odica-
mente se restaura la informaci´on de la tabla optimizada con la informaci´on de la tabla verificada.
Para mantener controlado el aumento de las entradas alteradas en la tabla de enrutamiento op-
timizada, ellos limitan la raz´on a la cual se actualizan las tablas de enrutamiento.
Adicionalmente, para prevenir ataques que buscan conocer c´omo se actualizan las tablas de
enrutamiento en el tiempo, esta estrategia introduce un m´etodo de asignaci´on de identificadores
no predecible. En cada actualizaci´on, cada nodo obtiene un identificador aleatorio, lo cual lo
posiciona en una zona distinta del sistema. Para esto, se basan en el hecho que si nodos buenos
se mueven constantemente, es muy dif´ıcil para un nodo malicioso atacarlos de la misma manera
en cada actualizaci´on.
Es importante que los nodos del sistema no se reubiquen al mismo tiempo porque esto da
como resultado un sistema inestable y sobrecargado durante ese per´ıodo. Por esto, se define un
estado en donde los nodos se particionan en grupos basados en los prefijos de sus direcciones IP,
y cada grupo se reubica en diferentes per´ıodos de tiempo.
34
Tabla 4: Soluciones del ataque Eclipse
Tipo de Recursos
Estrategia Estrategia Adicionales DHT Extensible
Castro Resticci´on Tabla restringida Pastry
[10] estructural a espacios del DHT Tapestry S´ı
Hildrum peers m´as l peers m´as Pastry
[20] cercanos cercano por entrada Tapestry S´ı
Singh Limitar el indegree Conjunto de nodos Pastry
[46] y outdegree de un peer que apuntan al nodo Tapestry S´ı
Condie Entrada y salida de los Tabla restringida Pastry
[12] nodos peri´odicamente a espacios del DHT Tapestry S´ı
Cuckoo Entrada y salida de los Chord definido en
[3] nodos en una regi´on Ninguno en el interv´alo (0,1] No
Por su parte, Awerbuch y Scheideler proponen un esquema basado en DHT seguro que
introduce el concepto de regiones en un espacio de identificadores [0, 1) [3]. Cada vez que un
nodo ingresa al sistema, recibe un identificador aleatorio generado por un grupo de nodos que
utilizan una t´ecnica para compartir un secreto. Un nodo malicioso podr´ıa ingresar continuamente
al sistema hasta obtener alg´un identificador deseado, lo cual permitir´ıa que un atacante se
concentre en atacar una o m´as zonas del sistemas.
Para tratar este problema, la estrategia define un protocolo llamado regla cuckoo. Este pro-
tocolo establece que cuando un nuevo nodo entra a una regi´on, todos los nodos en esa regi´on
deben dejar el sistema y reingresar para obtener nuevos identificadores. Este protocolo garantiza
que las regiones est´an balanceadas con referencia al n´umero de nodos en cada regi´on y que cada
regi´on posee una mayor´ıa de nodos honestos.
5.2.3. Discusi´on de las soluciones al ataque eclipse
En la Tabla 4 se muestra un resumen de las estrategias descritas que limitan el ataque
Eclipse. Como se puede observar, muchas de las estrategias han sido dise˜nadas para sistemas
P2P basados en DHT que tienen en cuenta m´etricas de proximidad a excepci´on de [3] que
est´a dise˜nado para un DHT similar a Chord, en el cual no se tienen en cuenta optimizaciones
de red, lo cual lo hace que no sea extensible a sistemas P2P basados en DHT como Pastry o
Tapestry.
Las estrategias que usan restricciones estructurales no aprovechan las optimizaciones que se
puedan hacer en la red subyacente. Es por esto que [10] hace uso de dos tablas, optimizada y
restringida, y solo usa la tabla restringida cuando el proceso que utiliza la tabla optimizada ha
fallado. Por su parte, Condie et al [12] afirma que como esta estrategia no tiene en cuenta el
envenenamiento progresivo de la tabla optimizada, el rendimiento se ve afectado debido al uso
frecuente de la tabla restringida.
35
Para solucionar este problema ellos proponen restaurar la tabla optimizada e inducir de
forma peri´odica la entrada y salida de nodos. Cabe anotar, que esta estrategia tambi´en afecta el
rendimiento debido a la continua actualizaci´on de informaci´on de enrutamiento y la migraci´on
de datos. En general, cualquier estrategia que use entrada y salida de nodos de forma inducida
se ve afectada si ese proceso se realiza de manera frecuente.
Por otra parte, la estrategia propuesta por Hildrum y Kubiatowicz [20] es simple en t´erminos
de implementaci´on, pero depende de la confiabilidad de la medici´on de la m´etrica de distancia
en la red, el cual puede ser complicado debido a diferentes ataques que se pueden presentar en
la red subyacente. Por su parte, La estrategia que controla el in-degree y el out-degree de los
nodos [46], es totalmente distribuida pero puede afectar el n´umero de mensajes en el sistema
P2P basado en DHT debido a que si se toman valores de umbral no adecuados, se pueden tener
muchas entradas vac´ıas. De esta discusi´on se deja claro que debe haber un buen balanceo entre
seguridad y rendimiento, no vale la pena tener una estrategia muy segura pero que sea ineficiente
y/o dif´ıcil de implementar.
36
6. SOLUCIONES A ATAQUE DE ENRUTAMIENTO
Castro et al. [10] proponen un esquema de enrutamiento seguro para mitigar el impacto de
los ataques de enrutamiento. El esquema explota la redundancia y la replicaci´on para asegurar
que un mensaje que se env´ıa desde un nodo honesto, con alta probabilidad, llegar´a a todos
los nodos destino. Este esquema logra su prop´osito mediante la soluci´on a tres sub-problemas:
asignaci´on segura de identificadores a nodos (nodeId), mantenimiento seguro de las tablas de
enrutamiento y reenv´ıo de mensajes seguros.
Los ataques de enrutamiento pueden ocurrir en sistemas P2P no estructurados, por ejemplo,
un nodo que recibe un mensaje puede descartarlo o desviarlo a nodos incorrectos. Sin embargo,
como estos sistemas t´ıpicamente env´ıan el mensaje a un gran n´umero de vecinos, a menos que
todos los vecinos sean maliciosos, el sistema es menos vulnerable a este tipo de ataques. Muchas
de las estrategias de enrutamiento seguro que se han implementado, se basan en los componentes
introducidos por Castro et al.
Esta secci´on se centra en el an´alisis de las estrategias de enrutamiento seguro (reenv´ıo de
mensajes seguros) y propone una taxonom´ıa para clasificarlas. La Figura 5 ilustra la taxonom´ıa
propuesta. A continuaci´on se describe cada grupo de estrategias en las subsecciones 6.1, 6.2, 6.3.
6.1. Estrategias basadas en Redundancia
Las estrategias basadas en redundancia env´ıan m´ultiples mensajes a trav´es de la red para
aumentar la probabilidad de llegar al nodo responsable de almacenar la llave solicitada. En este
grupo de estrategias se identifican dos estilos: multi-path y wide-path, las cuales se presentan
en las subsecciones 6.1.1 y 6.1.2 respectivamente.
Figura 5: Taxonom´ıa de soluciones al ataque de enrutamiento
37
6.1.1. Multi-path
Las estrategias que utilizan multi-path usan varios caminos para enviar un mismo mensaje
desde un nodo fuente a un nodo destino. Estos caminos se pueden caracterizar de dos maneras,
la relaci´on fuente-destino (el conjunto de nodos destino tiene cardinalidad ´unica o m´ultiple) y
la independencia (determinar si la intersecci´on entre caminos es vac´ıa o no). Aqu´ı, discutiremos
algunas estrategias representativas que usan multi-path como las descritas en [10, 19, 26, 41].
Castro et al. busca resolver los problemas que definieron: proponen el uso de una entidad
central para asignaci´on de identificadores, agregan una tabla restringida para el mantenimiento
de las tablas de enrutamiento, y rutas diversas y prueba de fallas para b´usqueda incorrecta. Para
el problema de reenv´ıo de mensajes seguro, el nodo fuente usa la tabla optimizada de Pastry y
obtiene como resultado el conjunto de candidatos (replica roots), y le aplica una prueba para
comparar las densidades de los nodos en el conjunto de vecinos del nodo fuente con las densidades
de los nodos cercanos a los replica roots del destino. Si la prueba es negativa, el conjunto de
candidatos se aceptan como los correctos. De otra forma, los mensajes se env´ıan a los replica
roots a trav´es de diferentes caminos usando la tabla restringida.
En esta estrategia, los caminos no son independientes y la relaci´on fuente-destino tiene
cardinalidad ´unica. Como resultado, si nodos maliciosos se ubicaran en las intersecciones de los
caminos o en el nodo fuente esta t´ecnica puede verse comprometida. Con el objetivo de construir
caminos independientes, dos estilos de soluciones se han propuesto, las que usan particiones y
las que contactan nodos espec´ıficos durante el proceso de enrutamiento. Todas las estrategias
asumen que los identificadores de nodos se escogen de manera aleatoria. En el primer grupo se
encuentra Cyclone [41].
Este trabajo define una relaci´on de equivalencia sobre el espacio de identificadores de nodos
de la siguiente manera: cada nodo x pertenece a una clase de equivalencia [r], donde x ≡ r mod
k (k es el n´umero de particiones y generalmente se escoge como una potencia de 2). En la tabla
de contactos, cada nodo mantiene apuntadores a nodos en la misma clase de equivalencia y una
lista de vecinos con al menos k nodos, con lo cual asegura llegar a cualquier nodo en otra clase
de equivalencia.
El proceso de enrutamiento en Cyclone se hace a trav´es de distintas particiones, es decir,
usando los vecinos en distintas clases de equivalencia. La Figura 6 ilustra el proceso de en-
rutamiento donde [k] representa el conjunto de nodos cuyos identificadores id, cumplen id ≡ k
mod 4. Aqu´ı, el nodo N0 va a enrutar un mensaje al nodo N25 usando 3 caminos. Primero, N1
solicita a N1 y N2 el enrutamiento del mensaje hacia N25. Luego, el mensaje se enruta a trav´es
de cada partici´on, hasta llegar al nodo N25. Como se puede observar los caminos son independi-
entes. El proceso de mantenimiento de las tablas de enrutamiento es similar a los implementados
en Chord.
38
Figura 6: Proceso de enrutamiento de Cyclone
En el segundo grupo se encuentran las estrategias decritas en [19] y [26]. Este grupo de
estrategias construye caminos independientes a trav´es del contacto de nodos especiales en la
red de manera simult´anea. Harvesf and Blough [19] introducen un mecanismo de ubicaci´on de
r´eplicas de una fuente a m´ultiples destinos para sistemas DHT como Chord, Pastry y Tapestry.
Para generar d caminos diferentes, se introduce el algoritmo MaxDisjoint. En particular, para
un Chord completo con tama˜no N = 2m, un objeto identificado con llave k debe ser replicado
en las siguientes 2d−1 ubicaciones:
k, k+ N
2d−1 , k+2· N
2d−1 , . . ., k+(2d−1 -1)· N
2d−1
Otra estrategia llamada Halo [26], construye m´ultiples caminos usando el hecho que el destino
solicitado aparece en la tabla de enrutamiento de varios nodos, los cuales se llaman knuckles.
Para encontrar al nodo sucesor de k usando l caminos redundantes, un nodo p enruta varios
mensajes hacia los knuckles. En Chord, los knuckles se definen como el grupo de nodos que tienen
apuntadores hacia el sucesor de k. Formalmente, este conjunto se define como los predecesores
o sucesores de ri=k-2m−i donde m es el tama˜no de Chord, para todo 1 ≤ i ≤ l.
Discusi´on La Tabla 5 resume las estrategias que se presentan arriba. Todas las estrategias usan
el estilo de enrutamiento recursivo debido al comportamiento inherente de estas soluciones. En
t´erminos de flexibilidad para construcci´on de caminos, Halo ofrece un mejor desempe˜no porque
el n´umero de caminos se puede escoger en tiempo de ejecuci´on.
39
Tabla 5: Estrategias basadas en multi-path
Recursos Modifica
Estrategia nuevos y/o Independencia proceso de Mantenimiento
modificados de Caminos enrutamiento
Pastry-Mod I [10] Tabla Restringida No S´ı Tabla Restringida
Cyclone [41] Ninguno S´ı S´ı Igual que Chord
Depende del tama~no
Replica [19] Ninguno de la red No Igual que Chord
Depende del tama~no
Halo [26] Ninguno de la red S´ı Igual que Chord
En cuanto a la implementaci´on, las estrategias de ubicaci´on de r´eplicas y Halo requieren
menor esfuerzo en comparaci´on con las dos restantes, porque estos no cambian los protocolos
del sistema DHT subyacente. Sin embargo, la estrategia de ubicaci´on de r´eplicas requiere un
n´umero exponencial de r´eplicas, las cuales pueden degradar el desempe˜no del sistema. Por su
parte, como cada r´eplica se puede acceder de manera independiente en la estrategia de ubicaci´on
de r´eplicas, ´esta tiene la ventaja sobre Halo y Cyclone de mitigar el ataque de almacenamiento
y recuperaci´on de datos.
Para estas estrategias, el n´umero de mensajes generados es proporcional al n´umero de
caminos. Cuando d rutas se usan, el n´umero de mensajes es O(d*h), donde h es el n´umero
de saltos esperados en el sistema DHT subyacente. Ahora, sea f la probabilidad de que un nodo
sea malicioso, entonces, la probabilidad de llegar al destino es (1 − f)h. Si d caminos indepen-
dientes se consideran y siendo X la variable binomial aleatoria que representa el n´umero de
caminos exitosos, entonces
Pr(fallo)≤Pr(X=0)=(1 − (1 − f)h)d (1)
De la Ecuaci´on 1 se sigue que Pr(Failure) disminuye cuando d aumenta. Este tipo de
soluciones no son escalables porque, para obtener Pr(Failure) ≤ δ, donde δ es una constante,
el n´umero de rutas debe ajustarse en un polinomio de n, lo cual resulta en tr´afico excesivo. De
hecho, si h = c logb n, se cumple que (1 − (1 − f)c logb n)d exp(−dn
c ln(1−f)
ln(b) ), lo cual implica que
para que Pr(Failure)≤ δ, d debe ser por lo menos ln(1
δ )n
−
c ln(1−f)
ln(b) .
6.1.2. Wide-path
Las estrategias que utilizan wide-path buscan enviar mensajes a un grupo de nodos (quorum)
en cada paso. Una solicitud s´olo falla si todos los nodos dentro de un quorum son maliciosos.
En cuanto a implementaci´on, se pueden utilizar los estilos de enrutamiento iterativo y recursivo.
En el primero, el iniciador solicita a un quorum de l nodos, el conjunto de nodos con los cuales
se construir´a el pr´oximo quorum. En la segunda, cada quorum intermedio env´ıa el mensaje
directamente al pr´oximo quorum.
40
Debido a la importancia de la estructura de quorums, varios estudios como [3, 4, 45] buscan
mantener invariantes en los quorums, tales como que un quorum de tama˜no Θ(log(n)) posee a
lo m´as una fracci´on de nodos adversarios, donde < k y k son constantes peque˜nas. Varios
trabajos [3, 33, 40, 44] han utilizado wide-paths para mitigar el ataque de enrutamiento, pero
la mayor´ıa son te´oricos. Aqu´ı, se discutir´an trabajos que se han desarrollado en sistemas P2P
DHT tradicionales.
Hildrum y Kubiatowicz buscan resolver dos problemas: mantenimiento de tablas de en-
rutamiento y b´usqueda incorrecta [20]. El primero se soluciona incrementando el n´umero de
nodos por entrada en la tabla de enrutamiento, porque cuando la fracci´on de nodos maliciosos
es peque˜no, es dif´ıcil para un nodo malicioso ser vecino de muchos nodos honestos. El segundo lo
solucionan usando wide-path con enrutamiento iterativo. Su propuesta se define para Pastry y
Tapestry como el sistema DHT subyacente, donde cada entrada de la tabla de enrutamiento es
ahora un conjunto de los l nodos m´as cercanos (en t´erminos de distancia de red) con ese prefijo.
S-Chord propone una modificaci´on para Chord resistente al ataque bizantine join [18]. Este
ataque ocurre sobre un per´ıodo de tiempo en donde (1/4− )z nodos maliciosos ingresan a la red
(z es el l´ımite inferior del n´umero de nodos en la red) y el n´umero de nodos correctos que entran y
salen de la red es a lo m´as zk para alg´un par´ametro k. La estrategia asume que los identificadores
en Chord est´an en el intervalo (0,1]. Cada nodo p obtiene un identificador aleatorio, incrementa
su lista de vecinos para mantener apuntadores a nodos en el intervalo [p − 2C ln(n)
n , p + 2C ln(n)
n ]
y cada finger i mantiene nodos en los intervalos [p + 2i − C ln(n)
n , p + 2i + C ln(n)
n ] y [p − 2i −
C ln(n)
n , p − 2i + C ln(n)
n ], donde C es un par´ametro del sistema y n el n´umero de nodos.
Para el proceso de enrutamiento, cada quorum es un swarm3 y este proceso se realiza de
forma recursiva usando el camino inverso para la respuesta. Durante cualquier paso intermedio,
cada nodo puede verificar si una solicitud proviene de nodos vecinos que se encuentran en su
lista de backpointers. Como el proceso tiene una latencia de O(log(n)) y requiere O(log3
(n))
mensajes, ellos proponen una manera para minimizar estos valores mediante el uso de funciones
hash. Para esto, cada nodo p en un swarm intermedio, s´olo env´ıa un mensaje para otro nodo
q en el siguiente swarm si h(p) = h(q) mod log(n), donde h es la funci´on de hash que mapea
nodos a enteros positivos y log(n) es el tama˜no del swarm, y de la misma manera un nodo puede
descartar solicitudes. Con este filtro el n´umero de mensajes esperado es O((log(n))2).
Una estrategia que usa topolog´ıa de quorum como la descrita en la propuesta anterior se
encuentra en [54]. Cada quorum Qi tiene una llave privada y p´ublica que se comparte entre
los nodos usando t´ecnicas para compartir un secreto y un algoritmo de distribuci´on de llaves.
Cada nodo dentro del quorum Qi conoce la llave p´ublica de los quorums vecinos. El proceso de
enrutamiento usa el estilo iterativo, pero en el primer paso el iniciador, p, env´ıa su direcci´on IP,
id, un time-stamp y la llave solicitada. Luego, p recibe las partes de las firmas y la informaci´on
de enrutamiento, y genera la firma correspondiente. Luego, contacta el conjunto de nodos del
pr´oximo quorum y les env´ıa la firma y time-stamp. Con esto se puede verificar si p ha contactado
quorums previos y de esta manera prevenir ataques de denegaci´on de servicios (DoS).
3
Conjunto de nodos en el intervalo (p, p + C ln(n)
n
].
41
Enrutamiento seguro DHT
Enrutamiento seguro DHT
Enrutamiento seguro DHT
Enrutamiento seguro DHT
Enrutamiento seguro DHT
Enrutamiento seguro DHT
Enrutamiento seguro DHT
Enrutamiento seguro DHT
Enrutamiento seguro DHT
Enrutamiento seguro DHT
Enrutamiento seguro DHT
Enrutamiento seguro DHT
Enrutamiento seguro DHT
Enrutamiento seguro DHT
Enrutamiento seguro DHT
Enrutamiento seguro DHT
Enrutamiento seguro DHT
Enrutamiento seguro DHT
Enrutamiento seguro DHT
Enrutamiento seguro DHT
Enrutamiento seguro DHT
Enrutamiento seguro DHT
Enrutamiento seguro DHT
Enrutamiento seguro DHT
Enrutamiento seguro DHT
Enrutamiento seguro DHT
Enrutamiento seguro DHT
Enrutamiento seguro DHT
Enrutamiento seguro DHT
Enrutamiento seguro DHT
Enrutamiento seguro DHT

Más contenido relacionado

La actualidad más candente

Redestelecomunicacion
RedestelecomunicacionRedestelecomunicacion
RedestelecomunicacionHALCON NEGRO
 
Teaching tool for searching algorithms in artificial intelligence
Teaching tool for searching algorithms in artificial intelligenceTeaching tool for searching algorithms in artificial intelligence
Teaching tool for searching algorithms in artificial intelligenceJosé Carlos Martínez Velázquez
 
Rey manrique fernando_cctv_ip_inalambrica
Rey manrique fernando_cctv_ip_inalambricaRey manrique fernando_cctv_ip_inalambrica
Rey manrique fernando_cctv_ip_inalambricaGallegos Vazquez Omar
 
Diseño sistema telecomunicacion bpl sistema aislado valles cruceños
Diseño sistema telecomunicacion bpl sistema aislado valles cruceñosDiseño sistema telecomunicacion bpl sistema aislado valles cruceños
Diseño sistema telecomunicacion bpl sistema aislado valles cruceñosYerko Navarro Flores
 
chVhdl univ valencia
chVhdl univ valenciachVhdl univ valencia
chVhdl univ valenciajjebmiz
 
Conteo e identificación de pasajeros por radiofrecuencia
Conteo e identificación de pasajeros por radiofrecuenciaConteo e identificación de pasajeros por radiofrecuencia
Conteo e identificación de pasajeros por radiofrecuenciaPaulo R
 
Problemasresueltosioi c
Problemasresueltosioi cProblemasresueltosioi c
Problemasresueltosioi cVacio Vacio
 
Television digital al_alcance_de_todos
Television digital al_alcance_de_todosTelevision digital al_alcance_de_todos
Television digital al_alcance_de_todosLeonardo Vera López
 
Juniper denegacion de servicio (DoS) (y)
Juniper denegacion de servicio (DoS) (y)Juniper denegacion de servicio (DoS) (y)
Juniper denegacion de servicio (DoS) (y)Jherdy
 
Introducción a la_neuro_computación
Introducción a la_neuro_computaciónIntroducción a la_neuro_computación
Introducción a la_neuro_computaciónAlex Pin
 
Benchmarking Informatico de sistemas de gestión de video open source
Benchmarking Informatico de sistemas de gestión de video open sourceBenchmarking Informatico de sistemas de gestión de video open source
Benchmarking Informatico de sistemas de gestión de video open sourceVale Perez Cepeda
 

La actualidad más candente (15)

Redestelecomunicacion
RedestelecomunicacionRedestelecomunicacion
Redestelecomunicacion
 
Teaching tool for searching algorithms in artificial intelligence
Teaching tool for searching algorithms in artificial intelligenceTeaching tool for searching algorithms in artificial intelligence
Teaching tool for searching algorithms in artificial intelligence
 
Rey manrique fernando_cctv_ip_inalambrica
Rey manrique fernando_cctv_ip_inalambricaRey manrique fernando_cctv_ip_inalambrica
Rey manrique fernando_cctv_ip_inalambrica
 
Diseño sistema telecomunicacion bpl sistema aislado valles cruceños
Diseño sistema telecomunicacion bpl sistema aislado valles cruceñosDiseño sistema telecomunicacion bpl sistema aislado valles cruceños
Diseño sistema telecomunicacion bpl sistema aislado valles cruceños
 
chVhdl univ valencia
chVhdl univ valenciachVhdl univ valencia
chVhdl univ valencia
 
Conteo e identificación de pasajeros por radiofrecuencia
Conteo e identificación de pasajeros por radiofrecuenciaConteo e identificación de pasajeros por radiofrecuencia
Conteo e identificación de pasajeros por radiofrecuencia
 
Garbarino
GarbarinoGarbarino
Garbarino
 
Bsc_Thesis
Bsc_ThesisBsc_Thesis
Bsc_Thesis
 
Problemasresueltosioi c
Problemasresueltosioi cProblemasresueltosioi c
Problemasresueltosioi c
 
Topo gralmana
Topo gralmanaTopo gralmana
Topo gralmana
 
Television digital al_alcance_de_todos
Television digital al_alcance_de_todosTelevision digital al_alcance_de_todos
Television digital al_alcance_de_todos
 
Juniper denegacion de servicio (DoS) (y)
Juniper denegacion de servicio (DoS) (y)Juniper denegacion de servicio (DoS) (y)
Juniper denegacion de servicio (DoS) (y)
 
Introducción a la_neuro_computación
Introducción a la_neuro_computaciónIntroducción a la_neuro_computación
Introducción a la_neuro_computación
 
Benchmarking Informatico de sistemas de gestión de video open source
Benchmarking Informatico de sistemas de gestión de video open sourceBenchmarking Informatico de sistemas de gestión de video open source
Benchmarking Informatico de sistemas de gestión de video open source
 
M2 programacion grafica_2ed
M2 programacion grafica_2edM2 programacion grafica_2ed
M2 programacion grafica_2ed
 

Destacado

===A Survey Of Trust And Reputation
===A Survey Of Trust And Reputation===A Survey Of Trust And Reputation
===A Survey Of Trust And Reputationguestc12d53
 
Sistema de Computación Distribuida Peer to Peer
Sistema de Computación Distribuida Peer to PeerSistema de Computación Distribuida Peer to Peer
Sistema de Computación Distribuida Peer to PeerTensor
 
Peer to-peer
Peer to-peerPeer to-peer
Peer to-peerMohd Arif
 
Introducción al ecosistema de React.js
Introducción al ecosistema de React.jsIntroducción al ecosistema de React.js
Introducción al ecosistema de React.jsJoaquín Salvachúa
 

Destacado (6)

Doctorado P2P Dht
Doctorado P2P DhtDoctorado P2P Dht
Doctorado P2P Dht
 
Bd nosql tecnicas III
Bd nosql tecnicas IIIBd nosql tecnicas III
Bd nosql tecnicas III
 
===A Survey Of Trust And Reputation
===A Survey Of Trust And Reputation===A Survey Of Trust And Reputation
===A Survey Of Trust And Reputation
 
Sistema de Computación Distribuida Peer to Peer
Sistema de Computación Distribuida Peer to PeerSistema de Computación Distribuida Peer to Peer
Sistema de Computación Distribuida Peer to Peer
 
Peer to-peer
Peer to-peerPeer to-peer
Peer to-peer
 
Introducción al ecosistema de React.js
Introducción al ecosistema de React.jsIntroducción al ecosistema de React.js
Introducción al ecosistema de React.js
 

Similar a Enrutamiento seguro DHT

Similar a Enrutamiento seguro DHT (20)

Compresión y encriptación
Compresión y encriptaciónCompresión y encriptación
Compresión y encriptación
 
Fundamentos de Programación con Lenguaje de Programación C++
Fundamentos de Programación con Lenguaje de Programación C++Fundamentos de Programación con Lenguaje de Programación C++
Fundamentos de Programación con Lenguaje de Programación C++
 
El lenguaje de programación c++
El lenguaje de programación c++El lenguaje de programación c++
El lenguaje de programación c++
 
tesis de Garbarino
tesis de Garbarinotesis de Garbarino
tesis de Garbarino
 
371 recomendaciones
371 recomendaciones371 recomendaciones
371 recomendaciones
 
371 recomendaciones
371 recomendaciones371 recomendaciones
371 recomendaciones
 
Redestelecomunicacion
RedestelecomunicacionRedestelecomunicacion
Redestelecomunicacion
 
DataMining_lastfm
DataMining_lastfmDataMining_lastfm
DataMining_lastfm
 
Ciberseguridad
CiberseguridadCiberseguridad
Ciberseguridad
 
TFM_MJVillanueva
TFM_MJVillanuevaTFM_MJVillanueva
TFM_MJVillanueva
 
Tfg g3750
Tfg g3750Tfg g3750
Tfg g3750
 
Analysis of MATSim as a tool for the study of urban mobility
Analysis of MATSim as a tool for the study of urban mobilityAnalysis of MATSim as a tool for the study of urban mobility
Analysis of MATSim as a tool for the study of urban mobility
 
Tesis pre - grado
Tesis pre - gradoTesis pre - grado
Tesis pre - grado
 
Algoritmo de filtrado adaptable
Algoritmo de filtrado adaptableAlgoritmo de filtrado adaptable
Algoritmo de filtrado adaptable
 
Manual referencia cxx
Manual referencia cxxManual referencia cxx
Manual referencia cxx
 
HARDWARE Y SOFTWARE
HARDWARE Y SOFTWAREHARDWARE Y SOFTWARE
HARDWARE Y SOFTWARE
 
Resumen transporte de datos
Resumen transporte de datosResumen transporte de datos
Resumen transporte de datos
 
Tfm javier eduardo_carrillo_plaza
Tfm javier eduardo_carrillo_plazaTfm javier eduardo_carrillo_plaza
Tfm javier eduardo_carrillo_plaza
 
Diagnostico de Fallas Red Area Local
Diagnostico de Fallas Red Area LocalDiagnostico de Fallas Red Area Local
Diagnostico de Fallas Red Area Local
 
Trabajo de investigacion ing de sistemas
Trabajo de investigacion  ing de sistemasTrabajo de investigacion  ing de sistemas
Trabajo de investigacion ing de sistemas
 

Enrutamiento seguro DHT

  • 1. ENRUTAMIENTO SEGURO EN SISTEMAS P2P BASADOS EN DHT RICARDO LUIS VILLANUEVA POLANCO UNIVERSIDAD DE LOS ANDES FACULTAD DE INGENIER´IA DEPARTAMENTO DE INGENIER´IA DE SISTEMAS Y COMPUTACI´ON 2010 1
  • 2. ENRUTAMIENTO SEGURO EN SISTEMAS P2P BASADOS EN DHT RICARDO LUIS VILLANUEVA POLANCO Trabajo de Grado Presentado como Requisito para Optar por el Titulo de: Mag´ıster en Ingenier´ıa de Sistemas y Computaci´on ASESOR: MAR´IA DEL PILAR VILLAMIL GIRALDO UNIVERSIDAD DE LOS ANDES FACULTAD DE INGENIER´IA DEPARTAMENTO DE INGENIER´IA DE SISTEMAS Y COMPUTACI´ON 2010 2
  • 3. Dedico este trabajo a mi familia 3
  • 4. Agradecimientos A Dios, ser Supremo y Todopoderoso, porque es el motor de mi vida, quien me gu´ıa y me ilumina. A mis padres, RICARDO VILLANUEVA T. y DORIS POLANCO R., quienes con su apoyo incondicional me permiten hoy culminar con ´exito este proyecto. A mi hermano, SAMIR VILLANUEVA POLANCO, por mostrarme una manera distinta de ver la vida lo cual me ayud´o a desestresarme. A mi directora de tesis, Mar´ıa del Pilar Villamil Giraldo, por la oportunidad que me ofreci´o para trabajar en este tema, por sus aportes y consejos los cuales me ayudaron a organizar, construir y culminar con ´exito este trabajo de grado. A los profesors, Yesid Donoso y Harold Castro, por darme la oportunidad de trabajar con ellos, el cual fue esencial para alcanzar este objetivo. A Mile Arnedo, por sus consejos, paciencia y colaboraci´on que me ayudaron a sobrepon- erme en momentos dificiles. 4
  • 5. Tabla de Contenido 1. INTRODUCCI´ON 9 2. OBJETIVOS 10 3. GENERALIDADES EN SISTEMAS P2P Y TEM´ATICA DE SEGURI- DAD 11 3.1. Sistemas P2P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.1.1. Sistemas P2P basados en DHT . . . . . . . . . . . . . . . . . . . . 11 3.1.2. Estilos de enrutamiento tradicionales . . . . . . . . . . . . . . . . . 13 3.2. Conceptos de Seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.2.1. Confidencialidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.2.2. Integridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.2.3. Disponibilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.3. Criptograf´ıa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.3.1. Algoritmos de cifrado . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.3.2. Funciones hash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.3.3. C´odigos de autenticaci´on de mensajes (MAC) . . . . . . . . . . . . 17 3.3.4. Firma digital . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.3.5. T´ecnicas para compartir un secreto . . . . . . . . . . . . . . . . . . 18 3.3.6. Criptograf´ıa basada en identidad (CBI) . . . . . . . . . . . . . . . 18 4. SEGURIDAD EN SISTEMAS P2P DHT 19 4.1. Generalidades de seguridad en sistemas P2P DHT . . . . . . . . . . . . . . 19 4.1.1. Disponibilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.1.2. Autenticidad de los datos . . . . . . . . . . . . . . . . . . . . . . . 20 4.1.3. Anonimidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.1.4. Control de acceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.2. Ataques en la capa de enrutamiento . . . . . . . . . . . . . . . . . . . . . . 22 4.2.1. Ataques de identidad . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.2.2. Ataques de enrutamiento . . . . . . . . . . . . . . . . . . . . . . . . 23 4.2.3. Ataque de entrada/salida de nodos . . . . . . . . . . . . . . . . . . 24 4.3. Ataques en las capas de almacenamiento y aplicaci´on . . . . . . . . . . . . 24 4.3.1. Almacenamiento y recuperaci´on de informaci´on . . . . . . . . . . . 24 4.3.2. Comportamiento inconsistente . . . . . . . . . . . . . . . . . . . . . 25 4.3.3. Generaci´on de mensajes no solicitados . . . . . . . . . . . . . . . . 25 4.4. Discusi´on sobre ataques en sistemas P2P . . . . . . . . . . . . . . . . . . . 25 5. SOLUCIONES A ATAQUES DE IDENTIDAD Y ECLIPSE 27 5.1. Ataques de asignaci´on de identificadores y sybil . . . . . . . . . . . . . . . 27 5.1.1. Estrategias centralizadas . . . . . . . . . . . . . . . . . . . . . . . . 27 5.1.2. Estrategias jer´arquicas . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.1.3. Estrategias descentralizadas . . . . . . . . . . . . . . . . . . . . . . 30 5.1.4. Discusi´on de las soluciones al ataque de identidad . . . . . . . . . . 31 5.2. Ataque Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.2.1. Estrategias basadas en restricciones sobre los nodos . . . . . . . . . 33 5.2.2. Estrategias basadas en induci´on de entradas y salidas de nodos . . . 34 5
  • 6. 5.2.3. Discusi´on de las soluciones al ataque eclipse . . . . . . . . . . . . . 35 6. SOLUCIONES A ATAQUE DE ENRUTAMIENTO 37 6.1. Estrategias basadas en Redundancia . . . . . . . . . . . . . . . . . . . . . 37 6.1.1. Multi-path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 6.1.2. Wide-path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 6.2. Estrategias basadas en Detecci´on . . . . . . . . . . . . . . . . . . . . . . . 42 6.3. Estrategias basadas en Calidad del Camino . . . . . . . . . . . . . . . . . . 44 6.3.1. Informaci´on del propio sistema . . . . . . . . . . . . . . . . . . . . 44 6.3.2. Informaci´on de otros sistemas . . . . . . . . . . . . . . . . . . . . . 45 6.4. Discusi´on de las soluciones al ataque de enrutamiento . . . . . . . . . . . . 47 7. SecureRoutingDHT: ENRUTAMIENTO SEGURO EN SISTEMAS P2P DHT 49 7.1. Nivel Funcional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 7.1.1. Estructura de nodos y protocolo de enrutamiento . . . . . . . . . . 49 7.1.2. Mecanismo de reputaci´on . . . . . . . . . . . . . . . . . . . . . . . 52 7.2. Nivel de atributos de calidad en seguridad . . . . . . . . . . . . . . . . . . 57 7.2.1. Compatibilidad con estrategias de sybil . . . . . . . . . . . . . . . . 57 7.2.2. Ataque de almacenamiento y recuperaci´on de informaci´on . . . . . 58 8. EVALUACI´ON 59 8.1. An´alisis te´orico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 8.1.1. Enrutamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 8.1.2. Mantenimiento de la estructura de quorums . . . . . . . . . . . . . 60 8.1.3. Tolerancia a nodos maliciosos . . . . . . . . . . . . . . . . . . . . . 61 8.2. Simulaci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 8.2.1. Escenarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 8.2.2. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 9. CONCLUSIONES Y TRABAJO FUTURO 66 9.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 9.2. Trabajo Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 6
  • 7. Lista de Tablas 1. Resumen de estilos de enrutamiento . . . . . . . . . . . . . . . . . . . . . . 15 2. Ataques a sistemas P2P . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3. Soluciones del ataque Sybil . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4. Soluciones del ataque Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . 35 5. Estrategias basadas en multi-path . . . . . . . . . . . . . . . . . . . . . . . 40 6. Estrategias basadas en wide-path . . . . . . . . . . . . . . . . . . . . . . . 42 7. Estrategias basadas en detecci´on . . . . . . . . . . . . . . . . . . . . . . . . 44 8. Estrategias basadas en calidad del camino . . . . . . . . . . . . . . . . . . 46 9. Valores de reputaci´on que mantiene N1 . . . . . . . . . . . . . . . . . . . . 54 10. N´umero de mensajes esperado . . . . . . . . . . . . . . . . . . . . . . . . . 59 7
  • 8. Lista de Figuras 1. Estilos de enrutamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2. Clasificaci´on y relaci´on de los ataques en sistemas P2P . . . . . . . . . . . 22 3. Tabla de enrutamiento del nodo 1030220 en Pastry . . . . . . . . . . . . . 32 4. Tabla de enrutamiento del nodo N8 en Chord . . . . . . . . . . . . . . . . 33 5. Taxonom´ıa de soluciones al ataque de enrutamiento . . . . . . . . . . . . . 37 6. Proceso de enrutamiento de Cyclone . . . . . . . . . . . . . . . . . . . . . 39 7. Proceso de enrutamiento en la topolog´ıa de quorum con enrutamiento re- cursivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 8. Enrutamiento de SecureRoutingDHT . . . . . . . . . . . . . . . . . . . . . 51 9. N´umero de mensajes esperado . . . . . . . . . . . . . . . . . . . . . . . . . 60 10. Comparaci´on de probabilidades de ´exito . . . . . . . . . . . . . . . . . . . 63 11. Simulaci´on del n´umero de mensajes . . . . . . . . . . . . . . . . . . . . . . 64 12. Simulaci´on de la tolerancia a nodos maliciosos . . . . . . . . . . . . . . . . 65 8
  • 9. 1. INTRODUCCI´ON Los sistemas peer-to-peer (P2P) basados en tablas de hash distribuidas (DHT, por sus si- glas en ingl´es) son una clase especial de sistemas distribuidos con caracter´ısticas interesantes como escalabilidad, descentralizaci´on y auto-organizaci´on, para el desarrollo de aplicaciones so- bre redes p´ublicas. De manera general, los sistemas P2P se caracterizan por proveer diversas funciones al nivel de aplicaci´on, tales como localizaci´on y mensajer´ıa de nodos (enrutamiento), y almacenamiento y recuperaci´on de datos. Los niveles de aplicaci´on y almacenamiento utilizan los m´etodos que provee el nivel de enrutamiento para realizar sus funciones. Las funciones de enrutamiento en un sistema P2P basado en DHT son determinantes para que las funciones en niveles superiores se realizan de manera correcta. Sin embargo, ´estas no proveen niveles de seguridad que permitan construir aplicaciones robustas. De hecho, el problema de seguridad en sistemas P2P basados en DHT es cr´ıtico porque no s´olo existen problemas inherentes al sistema P2P, sino que tambi´en se derivan los problemas de seguridad en la red subyacente (red IP) y los requerimientos de seguridad de cierto tipo de aplicaciones. Esto es com´un a todos los sistemas distribuidos, pero la naturaleza abierta y aut´onoma de un sistema P2P lo hace m´as vulnerable a varios tipos de ataque Dentro del componente que maneja la localizaci´on y mensajer´ıa entre nodos, existen varias funciones como la asignaci´on de identificadores de red, procesos de mantenimiento de la infor- maci´on de enrutamiento y procesos de enrutamiento, que se pueden ver afectados en presencia de adversarios con prop´ositos espec´ıficos. Es importante que se controlen la mayor´ıa de estos procesos porque de esta manera se disminuye el impacto sobre el desempe˜no del sistema. Se han definido varios estilos de enrutamiento en el contexto de sistemas P2P basados en DHT, donde cada uno provee caracter´ısticas espec´ıficas que permiten definir protocolos seguros para el proceso de enrutamiento. Se han propuesto varios estilos de soluciones, pero com´unmente enfocadas a resolver o dis- minuir el impacto de un ataque espec´ıfico, lo cual seguramente se hace as´ı por la complejidad que requiere resolver m´as de un problema. Algunas estrategias utilizan mecanismos que no pueden ser implementados f´acilmente sobre otros sistemas P2P basados en DHT, lo cual dificulta la ex- tensibilidad de las soluciones. Finalmente, algunas estrategias al incluir seguridad a los procesos de enrutamiento, disminuyen la eficiencia del sistema, evidenciando la necesidad de hacer un balance entre la eficiencia y el nivel de seguridad requerido por el proceso En este trabajo se presenta un protocolo de enrutamiento seguro en sistemas P2P basados en DHT llamado SecureRoutingDHT, que afecta de manera controlada la eficiencia del proceso de enrutamiento. Este protocolo tiene como objetivo mitigar ataques en los niveles de enrutamiento y de almacenamiento. Adicionalmente, es escalable, compatible con soluciones a otros ataques y extensible a diferentes sistemas P2P basados en DHT. Este documento se organiza de la siguiente manera. La secci´on 2 presenta los objetivos de este trabajo. La secci´on 3 presenta generalidades sobre los sistemas P2P basados en DHT y la tem´atica de seguridad. La secci´on 4 presenta la tem´atica de seguridad en sistemas P2P basados en DHT, espec´ıficamente los ataques a los cuales es vulnerable un sistema P2P. Las secciones 5 y 6 presentan las soluciones que se han propuesto a los ataques en el componente de enrutamiento. La secci´on 7 presenta el protocolo de enrutamiento seguro SecureRoutingDHT. La secci´on 8 muestra la evaluaci´on de desempe˜no y por ´ultimo, la secci´on 9 concluye y da perspectivas sobre el trabajo futuro. 9
  • 10. 2. OBJETIVOS Este trabajo est´a enmarcado en las tem´aticas de sistemas P2P y seguridad. Los sistemas P2P basados en DHT son naturalmente abiertos y aut´onomos, lo cual da entrada a una gran canti- dad de amenazas que pueden degradar el buen desempe˜no de estos sistemas. Las aplicaciones construidas sobre estos sistemas funcionan correctamente cuando las propiedades ofrecidas por el sistema P2P DHT subyacente se mantienen en el tiempo de manera correcta. Es necesario entonces, proveer mecanismos que garanticen el buen funcionamiento del sistema, el cual es el objetivo de este trabajo. El ´enfasis sobre las soluciones que se presentan en este trabajo se realiza sobre aquellas que mitigan ataques en el nivel de localizaci´on de nodos y mensajer´ıa. Objetivo general Dise˜nar y desarrollar un protocolo de enrutamiento seguro en sistemas P2P basados en DHT. Objetivos espec´ıficos 1. Identificar las vulnerabilidades de los sistemas P2P DHT. 2. Analizar las diferentes estrategias de soluci´on propuestas para mitigar los ataques sistemas P2P basados en DHT. 3. Proponer una clasificaci´on para las soluciones a los ataques estudiados en el nivel de enrutamiento. 4. Proponer una estrategia de enrutamiento seguro que mitigue los efectos del ataque de enrutamiento. 5. Evaluar el funcionamiento de la estrategia propuesta mediante simulaciones. 10
  • 11. 3. GENERALIDADES EN SISTEMAS P2P Y TEM´ATICA DE SEGURIDAD 3.1. Sistemas P2P Seg´un [2] los sistemas P2P son sistemas distribuidos que consisten en nodos interconectados capaces de auto-organizarse en alguna topolog´ıa de red con el prop´osito de compartir recursos tales como contenidos, ciclos de CPU, almacenamiento y ancho de banda. Adem´as, son capaces de tolerar fallos sin la intervenci´on de entidades centralizadas o intermediarios. Por esto, han sido utilizados para desplegar aplicaciones para compartir archivos, m´usica y otros datos sobre Internet. El n´ucleo de estos sistemas es un red de millones de usuarios o sistemas, que de manera din´amica descubren datos almacenados en cualquier nodo. Existen dos grandes grupos de sistemas P2P, los no estructurados y estructurados. Los primeros no imponen ninguna restricci´on sobre la ubicaci´on de nodos y datos en la red. Por esto, para la localizaci´on de datos utilizan t´ecnicas tales como inundaci´on y random walks. Pero en general, son bastante impredecibles para encontrar items en el sistema y para algunas aplicaciones en tiempo real. Por el contrario, los sistemas estructurados imponen restricciones sobre la ubicaci´on de nodos y datos en la red, lo cual hace los procesos de b´usqueda m´as eficientes. En particular, este trabajo se enfoca en sistemas P2P basados en DHT, los cuales se presentan a continuaci´on. 3.1.1. Sistemas P2P basados en DHT Un sistema P2P basado en DHT es un sistema distribuido que utiliza funciones hash para la localizaci´on de nodos y datos. Este sistema es estructurado ya que impone restricciones en la forma como se organizan los nodos y como se distribuyen los datos en el sistema mediante el uso de una funci´on hash. Usualmente un sistema DHT tiene las siguientes propiedades: 1. Eficiencia en enrutamiento. Como utilizan funciones hash para la localizaci´on de nodos y objetos, las b´usquedas se pueden resolver f´acilmente. Estos sistemas proveen O(log n) como l´ımite superior en la longitud del camino de b´usqueda. 2. Balanceo de carga. Existen un balanceo entre el n´umero de datos asignados a los nodos del sistema. Esto se debe al uso de una funci´on hash de distribuci´on uniforme tal como SHA-1. Con esto, la sobrecarga en almacenamiento y mantenimiento de nodos crece s´olo logar´ıtmicamente de acuerdo al n´umero de nodos en el sistema. 3. Auto-organizaci´on. El sistema DHT es totalmente distribuido. La entrada y salida de los nodos se maneja autom´aticamente sin la necesidad de la coordinaci´on de una entidad central. A continuaci´on se presentan Chord [50], Pastry [38] y Kademlia [32], tres ejemplos de sis- temas P2P basados en DHT proveedores de servicios de localizaci´on de nodos, que ilustran las caracter´ısticas presentadas anteriormente. Para cada uno se describe el espacio de direcciones, la informaci´on de la tabla de enrutamiento y los procesos de estabilizaci´on. 11
  • 12. Chord. Chord [50] fue uno de los primeros sistemas basados en DHT que fueron creados. ´Este utiliza una funci´on de hash consistente para asignar a cada nodo y llave un identificador de m bits del espacio de identificadores, donde m es un par´ametro pre-definido del sistema. Los identificadores caen sobre un rango entre 0 y 2m − 1. Los nodos se ordenan en un c´ırculo de identificadores m´odulo 2m. Una llave se almacena en su nodo sucesor, el cual se define como el siguiente nodo en el c´ırculo en direcci´on a las manecillas del reloj. El nodo predecesor a un nodo o llave es el pr´oximo nodo en el c´ırculo en direcci´on contraria de las manecillas del reloj. La tabla de enrutamiento de los nodos en Chord contiene un conjunto m fingers (entradas), y el predecesor de este nodo. Asuma que el identificador de un nodo es n. La i-´esima entrada en la tabla de fingers de n, es el sucesor del identificador n + 2i - 1. Se puede notar que la primera entrada en la tabla de cada nodo es su sucesor. Toda esa informaci´on (predecesor y tabla de fingers) garantiza el funcionamiento del servicio de lookup. La segunda parte de la tabla de enrutamiento es una lista de sucesores de tama˜no r. Un nuevo nodo que ingresa a Chord, primero usa la funci´on de hash para generar su iden- tificador. Luego contacta al nodo bootstrap (un nodo que ya se encuentra en la red), para que localice al sucesor de su identificador, quien se convierte en el sucesor del nuevo nodo. La fun- ci´on de estabilizaci´on, que le permite actualizar sus sucesores, predecesores y fingers, se realiza peri´odicamente. Pastry. Pastry [38] es uno de los sistemas basados en DHT m´as utilizado actualmente. Varias aplica- ciones tales como SCRIBE [11] y PAST [39], se han desplegado utilizando Pastry como el sistema DHT subyacente. Cada nodo en Pastry tiene un ´unico identificador de 128 bits. Los identifi- cadores se escogen de manera aleatoria y uniforme. Una manera de generar identificadores para los nodos es aplicando una funci´on de hash a las direcciones IP. Pastry utiliza prefix-matching para enrutar mensajes. Cada nodo mantiene una tabla de enrutamiento con logb 2 N filas y 2b − 1 columnas. Las entradas en la fila n, de la tabla de enrutamiento de un nodo, comparten los primeros n d´ıgitos con ese nodo. Adem´as, cada nodo mantiene un conjunto de leaf que contiene las direcciones IP de los l 2 nodos cuyos identificadores son los m´as cercanos num´ericamente m´ayores, y los l 2 nodos cuyos identificadores son los m´as cercanos num´ericamente menores. Para ingresar al sistema, un nuevo nodo debe conocer a alg´un nodo que hace parte del sistema. El nuevo nodo puede inicializar su estado contactando al nodo existente y enviando un mensaje de ingreso con su identificador como la llave. El mensaje se enruta a otro nodo existente cuyo identificador es num´ericamente m´as cercano al del nuevo nodo. Luego, todos los nodos encontrados durante el camino env´ıan sus tablas de enrutamiento al nuevo nodo. ´Este luego inicializa sus propias tablas basadas en la informaci´on recibida. Finalmente, el nuevo nodo informa a aquellos nodos que necesitan saber de su llegada. 12
  • 13. El proceso de mantenimiento se maneja peri´odicamente intercambiando mensajes de vida entre los nodos vecinos. Cuando se detecta una falla de un nodo, todos los miembros del conjunto leaf del nodo que ha fallado son notificados y estos actualizan sus respectivos conjuntos. Kademlia. El principio b´asico de Kademlia [32] es encontrar los nodos que est´an a la mitad de distancia al nodo destino. Kademlia se diferencia de Pastry y otros sistemas simlares en dos aspectos principalmente. Una diferencia es la nueva noci´on de cercan´ıa entre nodo basada en la operaci´on XOR de los identificadores de los nodos. La otra diferencia es que los nodos en Kademlia con- tienen listas de entradas (buckets), las cuales son usadas para enviar solicitudes paralelas. El sistema Kademlia asigna identificadores de 160 bits. El algoritmo de b´usqueda usa cercan´ıa basada en la operac´on XOR con el objetivo de reducir el espacio de lookup. La idea intuitiva detr´as de esta operaci´on es que los identificadores de nodos que son diferentes en los bits de orden superior importan m´as que los que son diferentes en los bits de orden inferior, y por tanto, la distancia ser´ıa mayor XOR. Usando esta m´etrica, la topolog´ıa de Kademlia ordena nodos como un ´arbol donde los nodos de los sub-´arboles est´an m´as cercanos entre ellos que otros sub-´arboles. Las tablas de enrutamiento contienen listas separadas para cada bit en el identificador del nodo. Por esto, si la red usa 128 bits, cada nodo tendr´a 128 listas. Cada lista corresponde a una distancia particular a nodos. La distancia se mide en el nivel de emparejamiento de los bits en los identificadores. Kademlia usa m´etricas XOR para definir distancia entre nodos. El resultado de la operaci´on XOR aplicados a dos identificadores de nodos (retorna 0 para bits d´enticos y 1 para bits diferentes) es la distancia entre dos nodos. Como Chord, los nodos en Kademlia conocen m´as acerca de nodos m´as cercanos y menos de nodos lejanos. Cuando un nodo p que desea ingresar al sistema, a˜nade a un nodo conocido, q, a su bucket y realiza un lookup de nodo. Esto permite llenar su tabla de enrutamiento basado en las respuestas y se inserta en los k buckets de otros nodos en el sistema. A continuaci´on se presentan los estilos de enrutamiento tradicionales utilizados por los sistemas P2P basados en DHT. 3.1.2. Estilos de enrutamiento tradicionales Los mecanismos de enrutamiento requieren de dos procesos importantes: mantenimiento de tablas de enrutamiento y env´ıo de mensajes. Existen tres estilos de implementaci´on para el env´ıo de mensajes: recursivo, iterativo y tracer. En el enrutamiento recursivo, un nodo x, utilizando su informaci´on de enrutamiento, env´ıa una solicitud por una llave k a un nodo intermedio y, el cual verifica si es responsable por la llave. Si la respuestas es negativa, se repite el proceso anterior. Cuando la solicitud llega al nodo responsable por k, digamos r, el puede enviar el resultaso directamente al iniciador o usar el camino inverso. Ver Figura 1(a). Usando el enrutamiento recursivo, el nodo iniciador no tiene ning´un control. sobre el proceso de enrutamiento, y por tanto, detecci´on de nodos malicious no puede realizarse f´acilmente. Trabajos que usan este estilo son Pastry [38], Chord [50] y Kademlia [32]. 13
  • 14. (a) Recursivo (b) Iterativo (c) Tracer Figura 1: Estilos de enrutamiento A diferencia del estilo recursivo, en el enrutamiento iterativo, cada nodo intermedio y env´ıa de vuelta a x (iniciador), la direcci´on IP del siguiente salto. Ver Figura 1(b). Utilizando este estilo, x tiene control total sobre el proceso de enrutamiento. De esta manera, puede detectar nodos maliciosos. Algunas soluciones que utilizan este estilo son SeChord [34] y Myrmic [52]. Finalmente, el enrutamiento tracer es una combinaci´on de los estilos recursivo e iterativo [53]. Aqu´ı, cada nodo intermedio y env´ıa dos mensajes, uno al siguiente salto con la solicitud y otro, al iniciador x, con la informaci´on acerca del siguiente salto. Ver Figura 1(c). Este estilo provee cierto conocimiento al iniciador, pero no control total. La Tabla 1 resume los estilos de enrutamiento presentados, describiendo su latencia, n´umero de mensajes generados y el control que permiten sobre el proceso de enrutamiento, donde h y l representan el n´umero de saltos esperados y la latencia entre dos nodos, respectivamente. Por una parte, el estilo recursivo ofrece menor latencia y n´umero de mensajes, pero sin control sobre el proceso de enrutamiento. De esta manera, la detecci´on de nodos maliciosos no se puede realizar de manera f´acil. Por otra parte, los estilos iterativo y tracer proveen m´as control sobre el proceso de enrutamiento pero aumentando el n´umero de mensajes. ´Este ´ultimo mejora la latencia sobre el estilo iterativo. 14
  • 15. N´umero de Control sobre el proceso Estilo mensajes Latencia de enrutamiento Recursivo (Directo) h + 1 l(h + 1) Ninguno Recursivo (Camino inverso) 2h 2lh Ninguno Iterativo 2h 2lh Total Tracer 2h l(h + 1) Medio Tabla 1: Resumen de estilos de enrutamiento 3.2. Conceptos de Seguridad La seguridad en computaci´on tiene tres pilares fundamentales: confidencialidad, integridad y disponibilidad. A continuaci´on se describe cada concepto en las subsecciones 3.2.1, 3.2.2 y 3.2.3, respectivamente [6]. 3.2.1. Confidencialidad La confidencialidad consiste en ocultar informaci´on o recursos de entidades no autorizadas. La necesidad de mantener dicha informaci´on secreta se deriva del uso de computadores en campos sensitivos tales como el gobierno o la industria. De hecho, el primer trabajo formal en este ´ambito estuvo motivado por necesidades militares. Los mecanismos de control de acceso soportan confidencialidad. Un mecanismo que ayuda a preservar la confidencialidad es la criptograf´ıa, la cual busca encapsular los datos con el objetivo de hacerlos incomprensibles. Una llave de cifrado controla el acceso a la informaci´on cifrada, pero esto hace que la llave se convierta en otro dato que debe protegerse. 3.2.2. Integridad La integridad hace referencia a la confiabilidad de los datos o recursos, y est´a orientado en t´erminos de prevenir cambios inapropiados o no autorizados. Este concepto incluye integridad en dos niveles: en los datos, se refiere al contenido de la informaci´on, y en el origen, se refiere a la fuente de los datos (autenticaci´on). En ´esta ´ultima, la fuente de informaci´on puede influir en la exactitud y credibilidad de los datos en cuesti´on. Existen dos tipos de mecanismos para asegurar la integridad: los de prevenci´on y los de detecci´on. Por una parte, los mecanismos de prevenci´on buscan mantener la integridad de los datos mediante el bloqueo a dos tipos de acciones: el cambio de informaci´on por entidades no autorizadas y el cambio de informaci´on de manera no autorizada. Por otra parte, los mecanismos de detecci´on se encargan de reportar que la integridad de un dato ha dejado de ser confiable. Estos mecanismos pueden analizar eventos del sistema (acciones de los usuarios o del sistema) para detectar alg´un problema. El reporte puede proveer varios tipos de informaci´on: la causa de la violaci´on de integridad o s´olo reportar que el dato ahora est´a corrupto. 15
  • 16. Como la integridad necesita que los datos adem´as de correctos sean confiables, existen varios factores que afectan la integridad: el origen de los datos (c´omo y de donde se obtienen), la forma como se protege la informaci´on antes que llegue a la entidad actual y la forma como se protege la informaci´on en la entidad actual. 3.2.3. Disponibilidad La disponibilidad se refiere a la capacidad de usar la informaci´on o el recurso deseado cuando se solicita. Este concepto es importante para el aspecto de confiabilidad y del buen funcionamien- to de un sistema, porque el que un sistema no est´e disponible produce el mismo efecto que si no existiera. El aspecto de disponibilidad que es relevante en el ´ambito de seguridad es que, un adversario podr´ıa deliberadamente disponer lo necesario para negar el acceso a los datos o a un servicio haciendo que no est´e disponible. 3.3. Criptograf´ıa Criptograf´ıa es el estudio de las t´ecnicas matem´aticas relacionadas con aspectos de seguridad de la informaci´on tales como confidencialidad, integridad de los datos, autenticaci´on de entidades y autenticaci´on de la fuente de los datos. Sus objetivos son 4: (1) privacidad o confidencialidad, (2) integridad de los datos, (3) autenticaci´on y (4) no repudio [7]. El concepto de confidencialidad fue presentado en la subsecci´on 3.2.1 , por su parte los conceptos de integridad de los datos y autenticaci´on fueron discutidos en la subsecci´on 3.2.2. El no repudio es el servicio que previene que una entidad niegue acciones previas, un caso particular de integridad. A continuaci´on se presentan, de forma general, las caracter´ısticas de las estrategias desarrolladas para solucionar aspectos relacionados con la criptograf´ıa. 3.3.1. Algoritmos de cifrado Com´unmente, para lograr confidencialidad, se utilizan esquemas de cifrado, los cuales con- sisten de 3 conjuntos: uno de llaves K, otro de mensajes M y otro de textos cifrados C. Adem´as utiliza tres algoritmos que se enumeran a continuaci´on. 1. Algoritmo para generar un par de llaves, una para cifrado, k, y otra para descifrado, k−1. 2. Algoritmo de cifrado que toma como entrada un mensaje m ∈ M y una llave de cifrado k ∈ K y retorna un mensaje cifrado c ∈ C, donde c = Ek{m}. 3. Algoritmo de descifrado que toma como entrada un mensaje cifrado c ∈ C y una llave de descifrado k−1 ∈ K y retorna un mensaje m ∈ M, donde m = Dk−1 {m}. Y se cumple que Dk−1 {Ek{m}} = m. De esta definici´on, se identifican dos estilos de cifrado, sim´etrico y asim´etrico. Un algoritmo con par de llaves k y k−1 se dice sim´etrico, si es computa- cionalmente f´acil calcular k−1 dada k y viceversa. Ejemplos de algoritmos sim´etricos son: AES (Advanced Encryption Standard), DES (Data Encryption Standard) y 3DES. 16
  • 17. Por el contrario, si es dif´ıcil obtener k−1 (llave privada) dada k (llave p´ublica), el algoritmo es asim´etrico. Ejemplos de algoritmos asim´etricos son: RSA (Rivest, Shamir, Adleman), ElGa- mal y ECIES (Elliptic Curve Integrated Encryption Scheme). Es claro que, para los algoritmos sim´etricos es fundamental mantener el par de llaves de manera secreta porque al comprometer una, se obtiene la otra r´apidamente. Por su parte, en los asim´etricos solo hay que mantener k−1 de manera secreta. 3.3.2. Funciones hash Para lograr integridad de los datos se define el concepto de funciones hash. Una funci´on hash es una funci´on computacionalmente eficiente que mapea cadenas binarias de longitud variable a cadenas binarias de longitud fija. Adem´as para el uso en criptograf´ıa, cumple con las siguientes propiedades: (1) dado h, es dif´ıcil computar un m tal que h = H(m), (2) dado m es dif´ıcil encontrar m tal que H(m) = H(m ) y (3) es computacionalmente dif´ıcil encontrar dos cadenas m1 y m2, tales que H(m1) = H(m2). De esta definici´on es f´acil ver que un cambio en la cadena de entrada m, genera otro valor H(m). Por lo tanto, para garantizar la integridad de m el algoritmo toma la cadena recibida m y H(m), y verifica si H(m ) = H(m). En tal caso, acepta la cadena. En caso contrario, la rechaza. SHA-1, RIPEMD-160 son ejemplos de funciones hash [49]. 3.3.3. C´odigos de autenticaci´on de mensajes (MAC) Para lograr autenticaci´on de origen de los datos se define una funci´on llamada c´odigos de autenticaci´on de mensajes (MAC, por sus siglas en ingl´es), la cual es una funci´on hash que recibe una cadena de caracteres y una llave y obtiene MACk{m}. Al enviar un mensaje se agrega el valor MAC y el receptor puede recalcular el valor MAC del mensaje con la llave compartida y comparar con lo recibido. 3.3.4. Firma digital La propiedad de no repudio se provee a trav´es de mecanismos de firma digital. Las firmas digitales tambi´en proveen autenticaci´on e integridad de los datos por el uso de llaves p´ublicas en su implementaci´on. Un algoritmo de firma digital consiste de tres conjuntos: uno de llaves K, otro de mensajes M y otro de firmas S. Adem´as utiliza tres algoritmos que se enumeran a continuaci´on. 1. Un algoritmo de generaci´on de llaves que retorna una llave v´alida para firmar k y una llave v´alida para verificaci´on k−1. 2. Un algoritmo de generaci´on de firma, la cual recibe como entrada un mensaje m y una llave para firmar k ∈ K, y retorna una firma s ∈ S. SigA{m} denota la firma de la entidad A sobre el mensaje m. 3. Un algoritmo de verificaci´on que recibe como entrada una firma s ∈ S, un mensaje m y una llave de verificaci´on k−1 ∈ K, y retorna un valor binario que representa la validez de la firma. 17
  • 18. La firma digital necesita de otros requerimientos para que pueda ser implementada, tales como: facilidad computacional de generaci´on y verificaci´on de las firmas y debe ser computa- cionalmente dif´ıcil falsificar una firma digital. En ambientes reales, el mensaje m puede tener longitud variable, por esto se utilizan funciones hash para reducir el tama˜no a un valor fijo peque˜no y la firma digital se hace sobre el valor el hash obtenido. Algunos ejemplos de firmas digitales son RSA y ECDSA (Elliptic Curve Digital Signature Algorithm) [49]. 3.3.5. T´ecnicas para compartir un secreto Las t´ecnicas para compartir un secreto permiten que el propietario de un secreto distribuya partes del mismo (shares) entre un grupo de participantes. Cada parte por separado no ayuda a recuperar el secreto, pero un subconjunto de participantes de manera colectiva pueden encontrar el secreto. Un esquema de umbral Tn es un esquema para compartir llaves en la cual n partes se distribuyen de tal manera que cualquier conjunto de t participantes es suficiente para obtener el secreto, mientras que t − 1 o menos participantes no pueden reconstruir el secreto. El m´as conocido esquema de umbral fue propuesto por Shamir y se basa en interpolaci´on de polinomios [49]. 3.3.6. Criptograf´ıa basada en identidad (CBI) La idea principal de CBI es que la llave p´ublica de un usuario u se obtiene a trav´es de una funci´on hash p´ublica que se aplica sobre una cadena de caracteres asociada a la identidad del usuario. La correspondiente llave privada se genera por una autoridad central (AC). Esta llave se le entrega al usuario despu´es que ´este prueba su identidad a AC. La generaci´on de esta llave reemplaza la expedici´on de certificados. Este par de llaves pueden ser usados para prop´ositos de cifrado, firmas digitales u otro esquema criptogr´afico. El esquema de cifrado basado en identidad Cocks [49] es un ejemplo de estos esquemas. Su seguridad reside en la intratabilidad de encontrar residuos cuadr´aticos compuestos en Zn. 18
  • 19. 4. SEGURIDAD EN SISTEMAS P2P DHT La seguridad en sistemas P2P permite que este tipo de sistemas se utilicen en un may- or n´umero de aplicaciones. Desafortunadamente, proveer seguridad en aplicaciones desplegadas sobre sistemas P2P es m´as dif´ıcil que hacerlo en esquemas cliente/servidor o aplicaciones dis- tribuidas tradicionales. En este cap´ıtulo se presenta la tem´atica de seguridad en sistemas P2P DHT. En particular, los atributos de calidad de las aplicaciones en seguridad y las vulnerabil- idades que poseen los sistemas P2P DHT en las capas de enrutamiento, de almacenamiento y aplicaci´on. 4.1. Generalidades de seguridad en sistemas P2P DHT Proveer seguridad a las aplicaciones desplegadas sobre sistemas P2P es un reto debido a su naturaleza abierta y aut´onoma. Comparado con sistemas cliente/servidor en los cuales se pueden confiar que las entidades seguir´an los protocolos definidos, los nodos en sistemas P2P no proveen esa garant´ıa. El ambiente en el cual cada nodo debe funcionar es uno en donde cualquier nodo es bienvenido a la red, no se puede confiar que los dem´as nodos van a enrutar consultas y respuestas correctamente, ni que guardar´an los objetos cuando se les solicite, o responder´an a consultas de las cuales son responsables. A continuaci´on se presentan los atributos de calidad en seguridad que las aplicaciones actuales requieren: disponibilidad, autenticidad de objetos, anonimidad y control de acceso. En la actualidad, los sistemas P2P no proveen todos los atributos de calidad en seguridad necesarios en cualquiera de estas ´areas. Para cada ´area, es importante desarrollar t´ecnicas que permitan la prevenci´on, detecci´on, manejo y recuperaci´on de los ataques. Es importante el dise˜no de protocolos que no dejen puertas abiertas a nuevas oportunidades de ataques. 4.1.1. Disponibilidad Cada nodo en el sistema P2P debe ser capaz de comunicarse con otros nodos y proveer acceso a los recursos por los cuales es responsable. El ataque de denegaci´on de servicio (DoS) busca que un nodo y sus recursos no est´en disponibles, para lo cual utiliza la sobrecarga. Este ataque es similar al ataque DoS tradicional de la capa de red. Si el ancho de banda disponible de un nodo se usa para transferir mensajes inservibles que son creados directa o indirectamente por un nodo malicioso, los dem´as recursos que el nodo ofrece no estar´an disponibles para el resto de los nodos en el sistema. Un nodo malicioso puede atacar directamente cualquiera de los recursos de un nodo. La disponibilidad de CPU de un nodo se puede atacar enviando un n´umero considerable de consultas complejas para disminuir la capacidad de respuesta a otras solicitudes. La disponibilidad de almacenamiento se puede atacar por nodos maliciosos que tienen la capacidad de solicitar el almacenamiento de objetos falsos. A´un cuando se asegure la disponibilidad de los objetos en el sistema, un ataque de denegaci´on de servicio puede hacerse en contra de la calidad del servicio con la cual est´an disponibles, por ejemplo, un nodo podr´ıa decir que est´a entregando el objeto solicitado cuando no es as´ı. 19
  • 20. Los adversarios que construyen ataques de denegaci´on de servicio necesitan encontrar y tomar ventaja de mecanismos de ampliaci´on en la red para poder causar mayor da˜no que el que podr´ıan causar con sus propios recursos. Para esto, ellos podr´ıan comunicarse con nodos zombie (conjunto de nodos que est´an a disposici´on de un adversario m´as poderoso) que los ayuden a lograr su cometido y comprometer la disponibilidad de una mayor cantidad de datos o servicios. 4.1.2. Autenticidad de los datos La autenticidad de datos consiste en determinar cu´ales de las respuestas a una consulta son aut´enticas. Este problema es diferente al de integridad de los datos, porque ´este ´ultimo busca asegurar que los datos no se corrompan por fallas en la comunicaci´on. Para el problema de autenticidad de los datos, se utiliza un algoritmo para determinar si las respuestas a una consulta poseen una firma aut´entica. Existen cuatro m´etodos para seleccionar los datos aut´enticos en un sistema P2P: 1. Dato m´as antiguo: Considera al dato m´as antiguo que fue almacenado en el sistema con un conjunto de metadatos a ser la copia aut´entica de dicho dato. 2. Basado en experto: La autenticidad de un dato la determina un nodo autoritativo o experto. 3. Basado en voto: El uso de un experto induce un ´unico punto de falla, entonces, esta estrategia utiliza la votaci´on de varios expertos. 4. Basado en reputaci´on: Como algunos expertos pueden ser m´as confiables que otros, el peso de los votos de este grupo de nodos deber´ıa ser mayor que el de los dem´as. Entonces, se define una funci´on que permita asignar pesos a las votaciones de cada nodo y de esta manera obtener la autenticidad de un dato. 4.1.3. Anonimidad Muchos usuarios est´an interesados en la tem´atica de anonimidad porque les permite com- ercializar ilegalmente datos de manera que no sea f´acil rastrearlos, pero existen varias razones leg´ıtimas por las cuales anonimidad es un atributo de calidad de las aplicaciones P2P. Si se provee anonimidad, se puede prevenir que entidades maliciosas creen, publiquen y distribuyan datos y que los usuarios que acceden a sus datos puedan mantener protegida su privacidad. Existen diferentes tipos de anonimidad que se pueden proveer en un sistema P2P. 1. Anonimidad de emisor: ¿Qu´e usuarios crean mensajes? 2. Anonimidad de almacenamiento: ¿Qu´e nodos guardan datos espec´ıficos? 3. Anonimidad de consulta: ¿Qu´e usuarios acceden a qu´e datos? 4. Anonimidad de documento: ¿Qu´e documentos se guardan en un nodo espec´ıfico? 20
  • 21. En un ambiente ideal, las aplicaciones deben proveer anonimidad mientras se mantienen otras propiedades asociadas al proceso de b´usqueda y a la seguridad tales como, eficiencia, descentralizaci´on y descubrimiento de recursos y nodos. Desafortunadamente, proveer varios tipos de anonimidad crea conflictos con estos elementos de dise˜no de los sistemas P2P. Por ejemplo, considere la anonimidad de almacenamiento y b´usqueda eficiente. Si se provee anonimidad de almacenamiento, ser´ıa imposible determinar qu´e nodos son responsables por guardar un dato. Por otra parte, si se desea buscar de manera eficiente un dato, se deber´ıa conocer exactamente cu´ales nodos son responsables de almacenar ese dato. Free Haven [57] y Freenet [58] son sistemas P2P, donde el primero provee anonimidad de almacenamiento y utiliza inundaci´on (flooding) para la b´usqueda, y el segundo tiene b´usqueda eficiente pero no provee anonimidad de almacenamiento. Es por esto que se debe definir un equilibrio entre b´usqueda eficiente y anonimidad de almacenamiento. 4.1.4. Control de acceso El control de acceso consiste en controlar qu´e usuarios tienen acceso a qu´e recursos del sistema (qu´e datos puede leer, qu´e programas pueden ejecutar, c´omo comparten los datos, etc.). Es importante explorar si es razonable o no hacer que la red P2P asegure control de acceso, o si el control de acceso se debe asegurar en los endpoints de la red. En cualquier caso, s´olo los usuarios que tienen el derecho para acceso a los datos pueden hacerlo. Los mecanismos de control de acceso que se implementan en el nivel de aplicaci´on expresan altos niveles de pol´ıticas de seguridad, debido a la utilizaci´on de roles y transacciones definidas en el sistema. Existen varias aplicaciones que utilizan controles de acceso, tal es el caso de OceanStore [30] y PriServ [23]. En el primero, los datos que no son p´ublicos son cifrados. Para prevenir lecturas no autorizadas, se distribuyen permisos (llaves de cifrado) a aquellos usuarios que tienen accesos de lectura a ese grupo de datos. Para prevenir escrituras no autorizadas, cada modificaci´on o escritura se firma. De esta manera, cualquier nodo puede verificar si la modificaci´on fue realizada por nodos autorizados. En esta aplicaci´on se pierde el contenido original y quedan ´unicamente los modificados. En PriServ, la idea es que para que un nodo obtenga datos, ellos deben especificar el prop´osito y la operaci´on que realizar´a sobre los datos. Con esta informaci´on, los clientes pueden usar la informaci´on para fines espec´ıficos seg´un el rol que desempe˜nen. Para esto, la generaci´on de las llaves asignadas a los datos incluye la informaci´on descrita arriba. Como se puede notar, el mismo grupo de datos puede tener diferentes llaves dependiendo de los distintos prop´ositos de acceso y operaciones que se realizan sobre ellos. A continuaci´on se muestran los ataques a los cuales es vulnerable un sistema P2P basado en DHT. La figura 2 muestra una clasificaci´on de los ataques en estos sistemas. Las subsecciones 4.2 y 4.3 muestran los diferentes ataques en las capas de enrutamiento y de almacenamiento y aplicaci´on, respectivamente. 21
  • 22. Figura 2: Clasificaci´on y relaci´on de los ataques en sistemas P2P 4.2. Ataques en la capa de enrutamiento La capa de enrutamiento provee las funciones principales para la construcci´on de aplica- ciones en sistemas P2P. En particular, maneja las operaciones de entrada/salida de nodos y enrutamiento de mensajes. En esta secci´on se discuten los ataques identificados en la literatu- ra sobre estos procesos. Los ataques de identidad, enrutamiento y entrada/salida de nodos se presentan en las subsecciones 4.2.1, 4.2.2 y 4.2.3 respectivamente. 4.2.1. Ataques de identidad Los ataques de identidad vulneran el mecanismo de identificaci´on de los sistemas P2P debido a la flexibilidad del proceso de asignaci´on de identificadores a nodos. Se distinguen dos estilos de ataque: asignaci´on de identificadores y Sybil. Asignaci´on de identificadores. Este ataque ocurre cuando un nodo puede escoger su propio identificador. Si esto sucede, un atacante puede ubicarse arbitrariamente en el camino de un nodo v´ıctima con el objetivo de monitorear todo el tr´afico desde y hacia este nodo. Por ejemplo, en Chord, el identificador de un nodo, nodeId, es una funci´on sobre la direcci´on IP. Un nodo malicioso puede escoger una direcci´on IP que lo ayude a ubicarse donde ´el desee. De igual manera, en Pastry, los nodeIds son n´umeros de 128 bits escogidos aleatoriamente y de esta manera, un nodo puede escoger su identificador maliciosamente. 22
  • 23. Ataque Sybil. A´un cuando exista un mecanismo que provea asignaci´on segura de identifi- cadores, esto no asegura que un nodo no pueda obtener m´ultiples identificadores. Si esto sucede, este nodo podr´ıa controlar gran parte de la red P2P y de esta manera inducir cualquiera de los ataques que se mencionan en esta secci´on. En particular, si no existen mecanismos para limitar el n´umero de identidades por nodo, un atacante con acceso a millones de computadores puede comprometer a un gran n´umero de nodos en la red. 4.2.2. Ataques de enrutamiento Los sistemas P2P estructurados como Chord [50], CAN [35], Pastry [38] y Baton [22], aplican el mismo principio durante el proceso de enrutamiento: cuando un nodo p recibe una solicitud de consulta, si p no posee el resultado de la consulta, busca en su tabla de enrutamiento alg´un nodo m´as cercano a la respuesta y reenv´ıa la solicitud a ese nodo. El proceso termina cuando se llega al nodo responsable por el resultado de la consulta. De lo anterior, se puede deducir que cuando la red es estable (la tasa de entrada/salida de nodos es moderada), una consulta que viaja de un mismo nodo fuente a un mismo nodo destino, sigue la misma ruta. Es por esto que en estos sistemas es necesario garanizar la correcta ejecuci´on de las funciones de enrutamiento. Los ataques de enrutamiento ocurren cuando un nodo no sigue el mecanismo de enrutamiento de manera correcta. Como se puede notar, un nodo malicioso juega un rol activo en el sistema, debido a que no s´olo participa en el proceso de enrutamiento de mensajes, sino que su informaci´on aparece tambi´en en las tablas de enrutamiento de otros nodos. Sit y Morris [47] han clasificado los ataques de enrutamiento en tres tipos: enrutamiento incorrecto, actualizaciones incorrectas de informaci´on de enrutamiento y particionamiento incorrecto de la red. Enrutamiento Incorrecto. El enrutamiento incorrecto se presenta cuando un nodo malicioso reenv´ıa una solicitud a un nodo incorrecto o retorna un resultado incorrecto al nodo que inici´o la consulta, por ejemplo, retorna un nodo afirmando que es el responsable del resultado buscado, esto es conocido como robo de identidad. Para el primer estilo de ataque, una soluci´on es que, el nodo que inicia el proceso monitoree el proceso. De esta manera, si un nodo reenv´ıa la solicitud hacia otro nodo diferente del correcto, se puede identificar un nodo malicioso. Con esta informaci´on, un nodo podr´ıa excluir a este nodo malicioso de ´este y otros procesos de b´usqueda y escoger rutas alternas. Para el segundo estilo de ataque, el nodo que inicia el proceso puede obtener el rango de valores por los cuales un nodo es responsable y verificar el resultado obtenido. Sin embargo, este estilo de soluci´on requiere que el identificador de los nodos sea asignado de manera que sea verificable. Actualizaciones incorrectas de informaci´on de enrutamiento. La tabla de enrutamiento de un nodo honesto debe ser protegida para asegurar que no contiene muchas entradas de nodos maliciosos. De otra forma, ese grupo de nodos estar´an controlados por un grupo de nodos maliciosos. La actualizaci´on incorrecta de informaci´on de enrutamiento ocurre cuando un nodo malicioso corrompe las tablas de enrutamiento de otros nodos mediante el env´ıo de informaci´on incorrecta. Como consecuencia de esto, nodos honestos pueden desviar solicitudes a nodos inapropiados o que no existen. 23
  • 24. Una soluci´on a este ataque es verificar que al nodo remoto se puede llegar antes de incorporar la actualizaci´on a la tabla de enrutamiento. Otro ataque de este tipo ocurre cuando el sistema provee flexibilidad en la escogencia de nodos durante el reenv´ıo de solicitudes. Este ataque no afecta lo correcto del protocolo de enrutamiento pero puede afectar la calidad del servicio. Por ejemplo, en vez de escoger el nodo m´as r´apido, el nodo malicioso puede enrutar la solicitud hacia un nodo con bajo ancho de banda. En este caso, un modelo de confianza efectivo puede ofrecer una buena soluci´on. Una generalizaci´on de este ataque se conoce con el nombre de Ataque Eclipse [46]. Particionamiento incorrecto de la red. El particionamiento incorrecto de la red ocurre cuando un nodo que ingresa a la red P2P es inducido a otra partici´on de la red formada por un grupo de nodos maliciosos. Esto puede ocurrir porque cuando un nodo entra al sistema, lo hace a trav´es de alg´un nodo (bootstrap) conocido que se encuentra en el sistema. Este nodo podr´ıa hacer parte de la partici´on de nodos maliciosos. Igualmente, un nodo malicioso en una partici´on leg´ıtima puede desviar nuevos nodos hacia la partici´on maliciosa. Una soluci´on es que un nuevo nodo mantenga informaci´on sobre nodos honestos que conoce con anterioridad y use alguno de estos nodos como bootstrap. Si el nodo va a ingresar por primera vez, puede contactar nodos conocidos p´ublicamente. Otra soluci´on simple y efectiva es la asignaci´on de identificadores usando su llave p´ublica. Aunque este estilo de soluci´on incurre en operaciones adicionales, nodos maliciosos no pueden f´acilmente comprometer el sistema. 4.2.3. Ataque de entrada/salida de nodos Como los nodos entran y salen del sistema, se requiere un proceso de reasignaci´on de re- sponsabilidades, con el objetivo de que el proceso de lookup trabaje correctamente. Un nodo malicioso puede enga˜nar al sistema, haci´endolo re-balancearse innecesariamente causando exce- so de transferencia de datos y tr´afico. Mas a´un, un adversario podr´ıa convencer que un nodo no est´a disponible o que alg´un nodo ha ingresado, cuando no es cierto. Como consecuencia, la eficiencia y el desempe˜no del sistema se ven comprometidos. Es importante mencionar que cualquier sistema P2P basado en DHT debe proveer un mecanismo para tratar este problema, independientemente si nodos maliciosos est´an presentes. 4.3. Ataques en las capas de almacenamiento y aplicaci´on En la capa de aplicaci´on se construyen servicios que hacen uso del sistema de localizaci´on ofrecido por la capa subyacente. Por este motivo, se introducen nuevos estilos de ataque dependi- endo considerablemente de la aplicaci´on construida. En esta secci´on se discuten los ataques m´as representativos identificados en la literatura. Los ataques de almacenamiento y recuperaci´on de informaci´on, comportamiento inconsistente y generaci´on de mensajes no solicitados se presentan en las subsecciones 4.3.1, 4.3.2 y 4.3.3 respectivamente. 4.3.1. Almacenamiento y recuperaci´on de informaci´on Los sistemas P2P (estructurados y no estructurados) desplegados como repositorios de infor- maci´on distribuida son vulnerables a varios tipos de ataques de almacenamiento y recuperaci´on de informaci´on, incluyendo los siguientes: 24
  • 25. 1. Un nodo malicioso se reh´usa a almacenar informaci´on de la cual es responsable. 2. Un nodo malicioso puede aceptar el almacenamiento de informaci´on, pero luego borrarla. Este es un problema cr´ıtico porque la informaci´on se puede perder para siempre. 3. Un nodo malicioso puede ser responsable del almacenamiento de la informaci´on solicitada, pero se reh´usa a entregarla, o peor a´un, entrega una copia alterada. 4. Un nodo malicioso puede coordinar ataques con otros nodos. Los ataques anteriores tambi´en aplican a sistemas donde los metadatos (en vez de los datos) se guardan. En particular, los metadatos m´as comunes son los que se usan como ´ındices de b´usqueda, y son cr´ıticos para asegurar la completitud de las solicitudes. 4.3.2. Comportamiento inconsistente Cualquiera de los ataques que se presentan aqu´ı, pueden ser m´as dif´ıciles de detectar si un nodo malicioso act´ua bien para una parte de la red. Esto es, un nodo malicioso puede escoger maximizar su impacto, asegurando que trabaja correctamente para algunos nodos, por ejemplo, nodos cercanos a ´el. Estos nodos no tendr´ıan ning´un motivo para excluir al nodo de sus tablas de enrutamiento a pesar del hecho que otros nodos (distantes) lo detecten como malicioso. Esto podr´ıa no ser un gran problema si las consultas se enrutan a trav´es de nodos cercanos antes de llegar al destino. Sin embargo, la mayor´ıa de los protocolos de enrutamiento hacen saltos a nodos m´as lejanos con el objetivo de llegar m´as r´apido al destino. En un contexto ideal, nodos lejanos podr´ıan convencer a nodos cercanos que uno de ellos es un nodo malicioso. Sin embargo, sin llaves p´ublicas ni firmas digitales, no es posible distinguir un reporte bueno de uno malicioso que busca excluir a nodos que son buenos. 4.3.3. Generaci´on de mensajes no solicitados En este ataque, un nodo malicioso puede ser capaz de dise˜nar una situaci´on en la que puede enviar una respuesta a una pregunta no solicitada. La mejor defensa contra este tipo de ataque es la de emplear t´ecnicas de autenticaci´on est´andar como firmas digitales o c´odigos de autenticaci´on de mensajes (MAC). Sin embargo, las firmas digitales son bastante costosas y los MACs requieren llaves compartidas. Una defensa m´as razonable podr´ıa ser la de usar n´umeros aleatorios (nonces) para asegurar que mensajes antiguos no puedan ser re-usados maliciosamente. 4.4. Discusi´on sobre ataques en sistemas P2P La Tabla 2 muestra que pilar(es) se ve(n) afectado(s) por la presencia de alguno de los ataques presentados en esta secci´on. Como se puede observar, todos los ataques afectan la disponibilidad del sistema, buscando denegar los servicios de un nodo o grupo de nodos. En cuanto a los ataques que afectan la capa de enrutamiento, los ataques de manejo de identidad son los m´as fuertes debido a que tienen control sobre partes del sistema, lo cual implica que se pueden comprometer todos los servicios que se est´en ofreciendo. 25
  • 26. Tabla 2: Ataques a sistemas P2P Ataque Capa Confidencialidad Integridad Disponibilidad Asignaci´on de identificadores Enrutamiento X X X Sybil Enrutamiento X X X Enrutamiento incorrecto Enrutamiento X X Actualizaciones incorrectas Enrutamiento X X Particionamiento incorrecto Enrutamiento X Entrada/Salida de nodos Enrutamiento X Almacenamiento y recuperaci´on de informaci´on Aplicaci´on X X X Comportamiento inconsistente Aplicaci´on X Generaci´on de mensajes no solicitados Aplicaci´on X Asumiendo la existencia de una prevenci´on contra este tipo de ataques, es importante notar que el resto de ataques en las capas de enrutamiento y aplicaci´on podr´ıan existir, debido a que esto no asegura que varios nodos que han ingresado al sistema, decidan actuar maliciosamente a causa de factores propios o externos, como virus, suplantaciones, etc. Cabe anotar, que bajo la presencia de un ataque se pueden inducir nuevos ataques, lo cual crea cadenas de relaci´on entre el grupo de ataques presentado. Como resultado, si un sistema P2P no se protege contra este grupo de ataques, son m´as las vulnerabilidades que podr´ıa explotar un adversario. Por esto, para que la protecci´on en ese ambiente sea m´as completa, se deben conocer estas relaciones y prestar mayor atenci´on a la fuente de los mismos. La Figura 2 muestra la relaci´on entre los ataques presentados, las l´ıneas punteadas indican relaci´on. Por ejemplo, si no se protege contra el ataque de actualizaci´on de informaci´on de enrutamiento esto podr´ıa afectar el enruamiento de nodos honestos. Por su parte, si hay una prevenci´on al ataque, los nodos maliciosos a´un podr´ıan enrutar de manera incorrecta. El protocolo de enrutamiento es la funci´on principal de los sistemas P2P y de esta manera se convierte en uno de los procesos m´as cr´ıticos para el funcionamiento correcto del sistema. Es por esto que ha sido objeto de mucha atenci´on y se convierte en el foco de este trabajo. En las siguientes secciones se presentan soluciones a los ataques en la capa de enrutamiento m´as representativos: ataques sybil y eclipse y ataque de enrutamiento, descritos en las secciones 5 y 6, respectivamente. 26
  • 27. 5. SOLUCIONES A ATAQUES DE IDENTIDAD Y ECLIPSE En esta secci´on se presentan soluciones a los ataques de identidad y eclipse, descritos en las secciones 5.1 y 5.2, respectivamente. 5.1. Ataques de asignaci´on de identificadores y sybil El ataque Sybil fue estudiado por Douceur[16], quien discute un modelo abstracto de sistema distribuido y demuestra que la mejor soluci´on para defenderse de ese ataque es mediante el uso de una entidad central confiable. Adem´as sugiere el uso de pruebas de recursos computacionales, de almacenamiento o de red para limitar el ataque sybil en un ambiente totalmente distribuido. Varios estilos de soluci´on al ataque sybil en sistemas P2P, redes ad-hoc y otras aplicaciones se identifican en la literatura [29]. En este trabajo solo se discutir´an las soluciones encontradas para sistemas P2P basados en DHT dividas en grupos seg´un su grado de centralizaci´on. Cada estrategia presentada se analizar´a teniendo en cuenta tres criterios: asignaci´on, la cual define la forma como los participantes obtienen un identificador, verificaci´on, la cual permite a otros nodos distinguir si un identificador es v´alido o no, y limitaci´on, la cual restringe el n´umero de identificadores por participante (esto es necesario para prevenir el ataque Sybil). 5.1.1. Estrategias centralizadas Este grupo de estrategias utiliza una entidad centralizada para generar los identificadores de los nodos participantes. Existen muchos trabajos que suponen la existencia de una soluci´on centralizada para mitigar el ataque sybil. En su mayor´ıa, estas soluciones apuntan a los estilos descritos en [10] y [8]. En las estrategia descrita por Castro et al. [10], el proceso de asignaci´on de identificadores se delega a una entidad certificadora confiable, la cual genera un certificado que contiene: un identificador generado de forma aleatoria, una llave p´ublica y la direcci´on IP del nodo. Esta entidad asegura que los identificadores se escogen de manera aleatoria y previene la falsificaci´on de los mismos. Cada nodo del sistema conoce la llave p´ublica de la entidad certificadora y con ella puede verificar la validez de un certificado. Los nodos con certificados v´alidos pueden ingresar a la red, participar en el proceso de enrutamiento, y dejar la red sin consultar a la entidad certificadora. Castro et al. propone dos soluciones para el proceso de limitaci´on. La primera, requiere que un adversario pague dinero por certificados. Con esta soluci´on, el costo de un ataque crece a medida que la red crece. Por ejemplo, si un certificado cuesta $30 pesos, controlando 10 % de una red con 1000 nodos cuesta $3000 pesos y el costo se aumenta a $3000000 cuando la red tiene 1000000 de nodos. Para realizar un ataque a un nodo espec´ıfico, el costo es de aproximadamente $30000 para obtener el identificador de un nodo particular en una red de 1000 nodos. La segunda soluci´on es ligar identificadores en la red a identidades en el mundo real (por ejemplo, c´edula del participante). 27
  • 28. En [8] se presentan tres protocolos que usan criptograf´ıa basada en identidad (CBI) durante el proceso de asignaci´on, para dar soluci´on a los ataques de identidad. Estos protocolos se diferencian en los roles y las entidades a cargo de esos roles durante el proceso de asignaci´on. A continuaci´on se describe el proceso de asignaci´on para cada protocolo y luego los procesos de verificaci´on y limitaci´on debido a que son iguales en los tres casos. En el primer protocolo (P1) existen dos entidades. La primera es una entidad confiable adicional llamada GLP que se encarga de la generaci´on de llaves privadas y la segunda es un nodo bootstrap, llamado NB, el cual genera un token de autenticaci´on para ingresar e interactuar en el sistema. Durante el proceso de asignaci´on se realizan los siguientes pasos. Primero, un participante N contacta a GLP y le env´ıa su direcci´on IP. GLP autentica d´ebilmente a N verificando si tiene control sobre la IP. Este proceso consiste en el env´ıo y recepci´on de un mensaje espec´ıfico. Luego, a trav´es de un protocolo de acuerdo de llaves, como Diffie-Hellman [49], intercambian una llave privada sim´etrica Sk. El segundo paso consiste en que GLP env´ıa a N un identificador aleatorio (id) y la llave privada del participante cifrada con Sk. Durante el tercer paso, N descifra la informaci´on usando Sk y env´ıa a NB su id, una estampa de tiempo (ET) y la firma de la concatenaci´on del id con ET, SigN (id ET). Por ´ultimo, NB verifica la firma y genera una firma con la misma concatenaci´on, SigNB (id ET). A diferencia del primer protocolo, en este (P2) los nodos GLP y NB son una misma entidad, llam´emosla NB. Durante el proceso de asignaci´on, NB autentica a N mediante la direcci´on IP e intercambian una llave sim´etrica Sk. Luego, NB env´ıa un identificador aleatorio id, llave privada de N cifrado con Sk, una estampa de tiempo ET y la firma del id junto con la estampa, SigNB (id ET). El tercer protocolo (P3), al igual que el primero usa dos entidades. La primera entidad es la encargada de generar identificadores (AS) y la segunda de proveer la entrada de los nodos al sistema (NB). Antes de la inicializaci´on se generan llaves privadas entre las dos entidades, digamos Sk1 . Durante el proceso de asignaci´on, el participante contacta a AS, ´este autentica a N y env´ıa un identificador aleatorio id, una estampa de tiempo ET1 y MACSk1 (id||ET1). N reenv´ıa esta informaci´on a NB, quien verifica esta informaci´on. Luego, NB y N intercambian una llave sim´etrica Sk2 , NB env´ıa la llave privada del participante cifrada con Sk2 , una estampa de tiempo ET2, y la firma del id junto con la estampa SigNB (id||ET2). Para los tres protocolos, al finalizar el proceso de asignaci´on, cada nodo posee un identificador id, una estampa de tiempo ET y la firma SigNB (id||ET), los cuales sirven como un token de verificaci´on. Durante una interacci´on entre nodos, uno de ellos presenta el token, y el otro puede verificar la firma debido a que conoce la llave p´ublica de NB. El proceso de limitaci´on se hace a trav´es de la direcci´on IP, es decir, se genera un identificador aleatorio por cada IP. 28
  • 29. Los tres protocolos utilizan un nodo bootstrap (NB) que debe ser confiable, lo cual se convierte en un punto de falla cuando se compromete la integridad de dicho nodo. El protocolo P3 se puede hacer m´as escalable debido a que la entidad AS pueden ser varios equipos, pero eso implica que cada uno de estos equipos debe intercambiar una llave sim´etrica con NB. Este proceso se puede realizar offline o a trav´es de un protocolo de acuerdo de llaves como Diffie-Hellman. La ventaja de usar CBI es que se eliminan los certificados debido a que la llave p´ublica puede ser el identificador del nodo, la direcci´on IP, etc, es decir, cualquier cadena de caracteres que identifique al nodo. 5.1.2. Estrategias jer´arquicas Este grupo de estrategias se basan en el establecimiento de jerarqu´ıas para dar soluci´on al ataque Sybil. En [37] se presenta un control de admisi´on jer´arquico para limitar este ataque mediante el uso de una estructura arb´orea donde la ra´ız es una entidad confiable. El objetivo de la estrategia es utilizar poder de c´omputo para el ingreso de un nodo al sistema. Con esto, busca aumentar el costo computacional para reducir el n´umero de entidades asignadas. A continuaci´on se describe la estrategia. Durante el proceso de asignaci´on, si un nodo A desea unirse al sistema, ´este genera un par de llaves p´ublica y privada, Spub y Spriv. Luego, contacta una hoja del ´arbol1 Xn y le env´ıa Spub. Xn genera un rompecabezas (puzzle), se lo env´ıa a A, quien lo resuelve y devuelve a Xn. De esta manera, Xn le env´ıa un token a A para que lo use como prueba de la soluci´on del puzzle ante Xn−1 (padre de Xn). Este proceso se repite hasta alcanzar la ra´ız, donde A recibe el identificador id y un token de aceptaci´on al sistema. Durante el proceso de verificaci´on, como el nodo ra´ız es conocido por todos (llave p´ublica), cualquier nodo del sistema puede verificar el token generado durante la asignaci´on. En el proceso de limitaci´on se exige que cada nodo realice el proceso de asignaci´on cada cierto intervalo de tiempo. La siguiente estrategia se basa en invitaciones sociales para limitar el ataque [28]. La idea es mantener un arbol n-ario que representa las invitaciones hechas por los miembros. La ra´ız del arbol es inicializada por un conjunto S de miembros, quienes genera un par de llaves p´ublica y privada. La llave privada es distribuida usando un esquema de criptografia de umbral cuan- do |S| > 1. Adem´as posee un certificado auto-firmado con su llave privada y el conjunto de invitaciones son los n´umeros naturales N. Durante el proceso de asignaci´on, el nuevo miembro genera un par de llaves p´ublica Spub y privada Spriv, y recibe una invitaci´on representada por un certificado firmado por el padre en el ´arbol y la cadena de certificados desde el padre hasta la ra´ız. Este certificado contiene un n´umero uid ∈ Uidf , el hash de la llave p´ublica H(Spub) y posiblemente un intervalo Uidnew ⊆ Uidf de n´umeros naturales representando las invitaciones que este nodo puede hacer, el conjunto Uidf representa el intervalo de invitaciones del padre. 1 Se supone la existencia de un mecanismo que permite conocer alguna de las hojas del ´arbol. 29
  • 30. Un nodo puede verificar la membres´ıa de otro nodo con identificador id, validando la cadena de certificados desde el nodo hasta la ra´ız y comprobando que id es igual al hash del campo uid. Este proceso no requiere que los nodos est´en en l´ınea debido a que el nodo tiene la cadena de certificados y todos los nodos conocen la llave p´ublica del nodo ra´ız. El proceso de limitaci´on es basado en las invitaciones y la moderaci´on de su entrega, la cual se logra tratando de balancear el ´arbol que representa el proceso de invitaciones. 5.1.3. Estrategias descentralizadas A diferencia del primer grupo de estrategias, este grupo no utiliza una entidad centralizada para generar los identificadores de los nodos participantes. Por el contrario, el proceso se realiza de manera descentralizada. Las estrategia descrita en [5] utiliza la resoluci´on de rompecabezas (puzzles) para hacer pruebas computacionales con el fin de limitar la generaci´on arbitraria de nodos. A continuaci´on se describen los procesos de asignaci´on, verificaci´on y limitaci´on para la estrategia. S/Kademlia [5] usa dos estilos de puzzles, uno est´atico para la asignaci´on con par´ametro de seguridad c1, y otro din´amico para el proceso de limitaci´on con par´ametro de seguridad c2. Durante el proceso de asignaci´on, para ingresar al sistema, un nodo debe generar una pareja de llaves p´ublica spub y privada spriv con la caracter´ıstica que H(H(spub)) da como resultado un valor cuyos c1 primeros bits son cero (H es una funci´on hash). El identificador id se define como H(spub). Durante el proceso de verificaci´on, cuando un nodo interact´ua con otro, ´este verifica la firma del mensaje2 y evidencia la ejecuci´on del puzzle din´amico. Durante el proceso de limitaci´on, se utiliza un puzzle din´amico, el cual consiste en encontrar un X tal que H(id ⊕ X) da como resultado un valor cuyos c2 primeros bits son cero. Luego, la evidencia de que un nodo resolvi´o el puzzle din´amico es la tupla < id, X >. Este trabajo propone el uso de auto registro en chord [15]. Durante el proceso de asignaci´on cada nodo escoge su id = H(ip : puerto) y se auto registra en r nodos del DHT, estos nodos son los responsables por el identificador idj = H(ip prefix j) para 1 ≤ j ≤ r. Por su parte el proceso de verificaci´on es simple, un nodo valida a otro si cumple con la invariante id − H(ip : puerto) = 0. El proceso de limitaci´on es realizado durante el registro y la entrada de un nodo al sistema. Cada nodo mantiene una estructura de datos que asocia por direcci´on ip los ids registrados, de esta manera durante el proceso de registro, se puede verificar si la direcci´on IP no sobrepasa un umbral a de registros. En el proceso de entrada de un nodo con identificador id al sistema, se envia un mensaje join al nodo responsable por id en el DHT, digamos p. Al recibir el mensaje p verifica el id y contacta los r nodos del registro preguntando sobre la validez del id. Si p recibe mas de r 2 respuestas positivas, acepta al nuevo peer y actualiza sus respectivas entradas. 2 La firma contiene la direcci´on IP, puerto y una estampa de tiempo. 30
  • 31. Tabla 3: Soluciones del ataque Sybil Grado de Persistencia Estrategia Centralizaci´on Asignaci´on Verificaci´on Limitaci´on de identificadores Castro Validaci´on de Precio [10] Centralizado Certificados certificados Id externo S´ı CBI Token firmado Validaci´on [8] Centralizado por NB del token Id externo No Rowaihy Token firmado Validaci´on [37] Jer´arquico por la ra´ız del token C´omputo No Lesueur Certificado Validaci´on [28] Jer´arquico firmado por de la cadena Invitaciones S´ı el padre de certificados Rompecabezas Validaci´on del S/KADEMLIA Descentralizado sobre la rompecabezas C´omputo No [5] llave p´ublica est´atico y din´amico Validaci´on de Dinger Descentralizado id=H(Ip:puerto) id-H(Ip:puerto)=0 Id externo No [15] 5.1.4. Discusi´on de las soluciones al ataque de identidad En la tabla 3 se resume las estrategias analizadas para resolver el ataque sybil. Las estrate- gias centralizadas son vulnerables a ataques de DoS, representan un ´unico punto de falla, su administraci´on puede ser complicada en sistemas muy grandes como los sistemas peer to peer, pero se tiene mayor control sobre los nodos que se encuentran en el sistema, lo cual puede ayudar a identificar los nodos maliciosos. Las estrategias jer´arquicas ayudan a distribuir la carga pero a´un se puede presentar ataques de DoS, estos van dirigidos a comprometer los nodos con mayor jerarqu´ıa debido a que son los mas confiables. Por ´ultimo, las estrategias descentralizadas debido a la falta de control no son muy resistente al ataque sybil. Todas las estrategias analizadas a excepci´on de [15] proveen al nodo una llave p´ublica y privada, esto es importante debido a que los nodos pueden firmar sus mensajes y cifrar sus mensajes en las operaciones entre los peers del sistema. El proceso de verificaci´on no solo es importante para la membres´ıa de un nodo, sino que a trav´es de este proceso se pueden descartar paquetes que no sean del sistema. Por ejemplo, si se recibe un paquete cuya firma no es v´alida o cuya direcci´on origen no este relacionada con el id, el mensaje se descarta. En cuanto al proceso de limitaci´on, las estrategias que usan un identificador externo trasladan el problema al sistema donde se apoya para obtener el identificador. De esta manera, el uso de una direcci´on IP para limitar el ataque no es efectivo, porque si un atacante posee una red clase B [27] a su disposici´on puede generar muchas identidades y si se usa IPV6 [27] el efecto es el mismo. De esto se concluye que el uso de identificadores externo para limitar el ataque se debe hacer con mucha precauci´on. Las soluciones que usan costo computacional, limitan el ataque pero le imponen a un peer no malicioso un constante uso de recurso computacional, lo cual puede afectar a estos nodos con limitados recursos. Por su parte, las soluciones basadas en costo social y costo monetario, limitan el ataque dado que hacen la entrada al sistema muy dif´ıcil. 31
  • 32. Figura 3: Tabla de enrutamiento del nodo 1030220 en Pastry La persistencia de los identificadores se refiere al hecho que un miembro siempre use el mismo identificador cuando ingresa al sistema, esta caracter´ıstica le quita flexibilidad en cuanto a usar otros ids pero ayuda a identificar nodos maliciosos, debido a que si un nodo es sospechoso de ser malicioso puede seguir siendo monitoreado aun cuando salga y entre nuevamente al sistema. 5.2. Ataque Eclipse Como se ha descrito anteriormente este ataque va dirigido a la forma como se actualizan las tablas de enrutamiento de un sistema P2P DHT, este ataque ocurre cuando se desea encontrar el nodo correspondiente a entrada en la tabla de enrutamiento. A continuaci´on se ilustra la importancia del ataque a trav´es de un ejemplo. Considere un anillo de Pastry con tama˜no N=4096 y base b=4. Un posible estado de la tabla de enrutamiento del nodo 103220 se ilustra en la Figura 3. De la definici´on, la entrada (4,1) debe tener como prefijo 10321, es decir los nodos con identificadores 103210, 103211, 10322, 103213 pueden ocupar esta entrada. Pastry escoge el nodo con menor latencia en la red entre ese grupo. Es claro que los primeros niveles en la tabla de enrutamiento tienen m´as posibilidades de escogencia. De esta manera, durante el proceso de estabilizaci´on, un atacante con muchos identi- ficadores en el sistema puede aparecer con frecuencia en las tablas de enrutamiento. Un atacante inteligentemente puede interceptar los paquetes enviados durante el proceso de estabilizaci´on y dar como respuesta un identificador que cumpla con la petici´on. Adem´as podr´ıa atacar el proceso de estimaci´on de la latencia para hacer parecer estar m´as cerca y aumentar la probabilidad de ser incluido. Considere ahora un anillo de Chord (Figura 4). El finger n´umero 4 del nodo N8 es el sucesor de N8 + 8 = 16, para el ejemplo, N21. Es decir, para un atacante es m´as dif´ıcil llenar la tabla de enrutamiento sino se encuentra en un lugar espec´ıfico del sistema. Claramente esto es cierto si el nodo malicioso no puede escoger su identificador, es decir, que la ubicaci´on del atacante se escoja de manera uniforme y se limite el n´umero de identificadores por nodo. 32
  • 33. Figura 4: Tabla de enrutamiento del nodo N8 en Chord El objetivo de las estrategias para mitigar este tipo de amenaza es limitar la fracci´on de nodos maliciosos en la tabla de enrutamiento, muchas de estas estrategias son construidas para DHTs como Pastry y Tapestry debido a que la selecci´on de nodos en estos sistemas es m´as flexible y tienen en cuenta m´etricas de proximidad geogr´afica. A continuaci´on se presentan varias estrategias que mitigan el ataque Eclipse. Estas estrategias se clasifican de acuerdo al estilo de soluci´on: (1) basadas en restriciones sobre los nodos y (2) induci´on de entrada y salida de nodos, presentadas en la subsecciones 5.2.1 y 5.2.2 respectivamente. 5.2.1. Estrategias basadas en restricciones sobre los nodos La idea intuitiva de este grupo de estrategias consiste en definir un mecanismo para restringir la escogencia de los nodos de tal manera que se pueda limitar el ataque. Este mecanismo se puede definir como un funci´on que toma como parametro un identificador nodeId y retorna un valor de verdad que indica si el nodo se debe ingresar o mantener en la tabla de enrutamiento. Castro et al. [10] proponen una soluci´on para Pastry, introduciendo una tabla adicional llama- da tabla restringida. La idea es que las entradas de la tabla de enrutamiento se escojan de acuerdo a la ubicaci´on de los nodos en el anillo (similar a Chord). La entrada (i, j) para un nodo con identificador nodeId=x1x2 · · · xi · · · xn, es el nodo ms cercano al punto p=x1x2 · · ·xij · · ·xn. Con esta nueva tabla se realizan procesos de enrutamiento seguro cuando el enrutamiento tradicional de Pastry falla, m´as adelante se discute este proceso (subsecci´on 6.1.2). Dadas las restricciones de la tabla, cuando los nodos se distribuyen uniformemente y la fracci´on de nodos maliciosos es f, es claro que la probabilidad de que una entrada sea maliciosa tambi´en es f. Por su parte, Hildrum y Kubiatowicz [20] proponen aumentar cada entrada en la tabla de enrutamiento de Pastry a un conjunto r de los nodos m´as cercanos en t´erminos de distancia. Los autores asumen que existe una t´ecnica segura para medir la latencia entre nodos. Su propuesta se basa en la dificultad de que varios atacantes est´en cerca en la red subyacente. Adem´as, introducen protocolos de enrutamiento seguro que ser´an descritos en la subsecci´on 6.1.2. 33
  • 34. Singh et al. [46] proponen una estrategia para Pastry basada en la observaci´on que bajo un ataque Eclipse, el n´umero de nodos que apuntan a un nodo malicioso (in-degree) es mayor que el n´umero de nodos que apuntan a un nodo no malicioso. La estrategia consiste en que un nodo correcto debe apuntar s´olo a nodos cuyo in-degree y out-degree es menor que un umbral. Limitar el out-degree es importante debido a que un atacante podr´ıa consumir el in-degree de un nodo y por tanto no se tendr´ıan en cuenta. Para esto cada nodo x debe mantener una lista de backpointers que se define como los nodos que apuntan a x en la red. Un nodo es auditado de manera an´onima para verificar su out-degree y in-degree. Cada nodo x, de forma peri´odica y an´onima, pide la lista de backpointers S de alg´un nodo entre sus contactos y verifica si ´el se encuentra en S, si el tama˜no de S es menor que un umbral. De manera similar, pide la lista de contactos de alg´un nodo en su lista de backpointers y verifica los mismos criterios. En el caso que no se cumplan las restricciones, las comunicaciones hacia y desde el nodo son removidas. Como se puede observar, la anonimidad en el proceso de auditaci´on es esencial para limitar que un atacante no pueda falsificar su respuesta f´acilmente. En este trabajo se propone el uso de relays, es decir, que un tercero haga la pregunta. Para esto, el nodo relay se escoge aleatoriamente del conjunto de l nodos m´as cercano a h(x), donde x es el nodo auditado. Los autores analizan el hecho que un relay es malicioso y proponen una estrategia basada en votaci´on. 5.2.2. Estrategias basadas en induci´on de entradas y salidas de nodos La idea intuitiva de estas estrategias es asignar un nuevo identificador a cada nodo del sistema, con el objetivo de que el nodo vuelva entrar al sistema y recalcule su informaci´on de enrutamiento, limitando el impacto de los atacantes. Condie et al. [12] proponen un mecanismo de defensa para el ataque Eclipse basado en la reubicaci´on de nodos que trata algunos problemas de la estrategia presentada en [10]. Peri´odica- mente se restaura la informaci´on de la tabla optimizada con la informaci´on de la tabla verificada. Para mantener controlado el aumento de las entradas alteradas en la tabla de enrutamiento op- timizada, ellos limitan la raz´on a la cual se actualizan las tablas de enrutamiento. Adicionalmente, para prevenir ataques que buscan conocer c´omo se actualizan las tablas de enrutamiento en el tiempo, esta estrategia introduce un m´etodo de asignaci´on de identificadores no predecible. En cada actualizaci´on, cada nodo obtiene un identificador aleatorio, lo cual lo posiciona en una zona distinta del sistema. Para esto, se basan en el hecho que si nodos buenos se mueven constantemente, es muy dif´ıcil para un nodo malicioso atacarlos de la misma manera en cada actualizaci´on. Es importante que los nodos del sistema no se reubiquen al mismo tiempo porque esto da como resultado un sistema inestable y sobrecargado durante ese per´ıodo. Por esto, se define un estado en donde los nodos se particionan en grupos basados en los prefijos de sus direcciones IP, y cada grupo se reubica en diferentes per´ıodos de tiempo. 34
  • 35. Tabla 4: Soluciones del ataque Eclipse Tipo de Recursos Estrategia Estrategia Adicionales DHT Extensible Castro Resticci´on Tabla restringida Pastry [10] estructural a espacios del DHT Tapestry S´ı Hildrum peers m´as l peers m´as Pastry [20] cercanos cercano por entrada Tapestry S´ı Singh Limitar el indegree Conjunto de nodos Pastry [46] y outdegree de un peer que apuntan al nodo Tapestry S´ı Condie Entrada y salida de los Tabla restringida Pastry [12] nodos peri´odicamente a espacios del DHT Tapestry S´ı Cuckoo Entrada y salida de los Chord definido en [3] nodos en una regi´on Ninguno en el interv´alo (0,1] No Por su parte, Awerbuch y Scheideler proponen un esquema basado en DHT seguro que introduce el concepto de regiones en un espacio de identificadores [0, 1) [3]. Cada vez que un nodo ingresa al sistema, recibe un identificador aleatorio generado por un grupo de nodos que utilizan una t´ecnica para compartir un secreto. Un nodo malicioso podr´ıa ingresar continuamente al sistema hasta obtener alg´un identificador deseado, lo cual permitir´ıa que un atacante se concentre en atacar una o m´as zonas del sistemas. Para tratar este problema, la estrategia define un protocolo llamado regla cuckoo. Este pro- tocolo establece que cuando un nuevo nodo entra a una regi´on, todos los nodos en esa regi´on deben dejar el sistema y reingresar para obtener nuevos identificadores. Este protocolo garantiza que las regiones est´an balanceadas con referencia al n´umero de nodos en cada regi´on y que cada regi´on posee una mayor´ıa de nodos honestos. 5.2.3. Discusi´on de las soluciones al ataque eclipse En la Tabla 4 se muestra un resumen de las estrategias descritas que limitan el ataque Eclipse. Como se puede observar, muchas de las estrategias han sido dise˜nadas para sistemas P2P basados en DHT que tienen en cuenta m´etricas de proximidad a excepci´on de [3] que est´a dise˜nado para un DHT similar a Chord, en el cual no se tienen en cuenta optimizaciones de red, lo cual lo hace que no sea extensible a sistemas P2P basados en DHT como Pastry o Tapestry. Las estrategias que usan restricciones estructurales no aprovechan las optimizaciones que se puedan hacer en la red subyacente. Es por esto que [10] hace uso de dos tablas, optimizada y restringida, y solo usa la tabla restringida cuando el proceso que utiliza la tabla optimizada ha fallado. Por su parte, Condie et al [12] afirma que como esta estrategia no tiene en cuenta el envenenamiento progresivo de la tabla optimizada, el rendimiento se ve afectado debido al uso frecuente de la tabla restringida. 35
  • 36. Para solucionar este problema ellos proponen restaurar la tabla optimizada e inducir de forma peri´odica la entrada y salida de nodos. Cabe anotar, que esta estrategia tambi´en afecta el rendimiento debido a la continua actualizaci´on de informaci´on de enrutamiento y la migraci´on de datos. En general, cualquier estrategia que use entrada y salida de nodos de forma inducida se ve afectada si ese proceso se realiza de manera frecuente. Por otra parte, la estrategia propuesta por Hildrum y Kubiatowicz [20] es simple en t´erminos de implementaci´on, pero depende de la confiabilidad de la medici´on de la m´etrica de distancia en la red, el cual puede ser complicado debido a diferentes ataques que se pueden presentar en la red subyacente. Por su parte, La estrategia que controla el in-degree y el out-degree de los nodos [46], es totalmente distribuida pero puede afectar el n´umero de mensajes en el sistema P2P basado en DHT debido a que si se toman valores de umbral no adecuados, se pueden tener muchas entradas vac´ıas. De esta discusi´on se deja claro que debe haber un buen balanceo entre seguridad y rendimiento, no vale la pena tener una estrategia muy segura pero que sea ineficiente y/o dif´ıcil de implementar. 36
  • 37. 6. SOLUCIONES A ATAQUE DE ENRUTAMIENTO Castro et al. [10] proponen un esquema de enrutamiento seguro para mitigar el impacto de los ataques de enrutamiento. El esquema explota la redundancia y la replicaci´on para asegurar que un mensaje que se env´ıa desde un nodo honesto, con alta probabilidad, llegar´a a todos los nodos destino. Este esquema logra su prop´osito mediante la soluci´on a tres sub-problemas: asignaci´on segura de identificadores a nodos (nodeId), mantenimiento seguro de las tablas de enrutamiento y reenv´ıo de mensajes seguros. Los ataques de enrutamiento pueden ocurrir en sistemas P2P no estructurados, por ejemplo, un nodo que recibe un mensaje puede descartarlo o desviarlo a nodos incorrectos. Sin embargo, como estos sistemas t´ıpicamente env´ıan el mensaje a un gran n´umero de vecinos, a menos que todos los vecinos sean maliciosos, el sistema es menos vulnerable a este tipo de ataques. Muchas de las estrategias de enrutamiento seguro que se han implementado, se basan en los componentes introducidos por Castro et al. Esta secci´on se centra en el an´alisis de las estrategias de enrutamiento seguro (reenv´ıo de mensajes seguros) y propone una taxonom´ıa para clasificarlas. La Figura 5 ilustra la taxonom´ıa propuesta. A continuaci´on se describe cada grupo de estrategias en las subsecciones 6.1, 6.2, 6.3. 6.1. Estrategias basadas en Redundancia Las estrategias basadas en redundancia env´ıan m´ultiples mensajes a trav´es de la red para aumentar la probabilidad de llegar al nodo responsable de almacenar la llave solicitada. En este grupo de estrategias se identifican dos estilos: multi-path y wide-path, las cuales se presentan en las subsecciones 6.1.1 y 6.1.2 respectivamente. Figura 5: Taxonom´ıa de soluciones al ataque de enrutamiento 37
  • 38. 6.1.1. Multi-path Las estrategias que utilizan multi-path usan varios caminos para enviar un mismo mensaje desde un nodo fuente a un nodo destino. Estos caminos se pueden caracterizar de dos maneras, la relaci´on fuente-destino (el conjunto de nodos destino tiene cardinalidad ´unica o m´ultiple) y la independencia (determinar si la intersecci´on entre caminos es vac´ıa o no). Aqu´ı, discutiremos algunas estrategias representativas que usan multi-path como las descritas en [10, 19, 26, 41]. Castro et al. busca resolver los problemas que definieron: proponen el uso de una entidad central para asignaci´on de identificadores, agregan una tabla restringida para el mantenimiento de las tablas de enrutamiento, y rutas diversas y prueba de fallas para b´usqueda incorrecta. Para el problema de reenv´ıo de mensajes seguro, el nodo fuente usa la tabla optimizada de Pastry y obtiene como resultado el conjunto de candidatos (replica roots), y le aplica una prueba para comparar las densidades de los nodos en el conjunto de vecinos del nodo fuente con las densidades de los nodos cercanos a los replica roots del destino. Si la prueba es negativa, el conjunto de candidatos se aceptan como los correctos. De otra forma, los mensajes se env´ıan a los replica roots a trav´es de diferentes caminos usando la tabla restringida. En esta estrategia, los caminos no son independientes y la relaci´on fuente-destino tiene cardinalidad ´unica. Como resultado, si nodos maliciosos se ubicaran en las intersecciones de los caminos o en el nodo fuente esta t´ecnica puede verse comprometida. Con el objetivo de construir caminos independientes, dos estilos de soluciones se han propuesto, las que usan particiones y las que contactan nodos espec´ıficos durante el proceso de enrutamiento. Todas las estrategias asumen que los identificadores de nodos se escogen de manera aleatoria. En el primer grupo se encuentra Cyclone [41]. Este trabajo define una relaci´on de equivalencia sobre el espacio de identificadores de nodos de la siguiente manera: cada nodo x pertenece a una clase de equivalencia [r], donde x ≡ r mod k (k es el n´umero de particiones y generalmente se escoge como una potencia de 2). En la tabla de contactos, cada nodo mantiene apuntadores a nodos en la misma clase de equivalencia y una lista de vecinos con al menos k nodos, con lo cual asegura llegar a cualquier nodo en otra clase de equivalencia. El proceso de enrutamiento en Cyclone se hace a trav´es de distintas particiones, es decir, usando los vecinos en distintas clases de equivalencia. La Figura 6 ilustra el proceso de en- rutamiento donde [k] representa el conjunto de nodos cuyos identificadores id, cumplen id ≡ k mod 4. Aqu´ı, el nodo N0 va a enrutar un mensaje al nodo N25 usando 3 caminos. Primero, N1 solicita a N1 y N2 el enrutamiento del mensaje hacia N25. Luego, el mensaje se enruta a trav´es de cada partici´on, hasta llegar al nodo N25. Como se puede observar los caminos son independi- entes. El proceso de mantenimiento de las tablas de enrutamiento es similar a los implementados en Chord. 38
  • 39. Figura 6: Proceso de enrutamiento de Cyclone En el segundo grupo se encuentran las estrategias decritas en [19] y [26]. Este grupo de estrategias construye caminos independientes a trav´es del contacto de nodos especiales en la red de manera simult´anea. Harvesf and Blough [19] introducen un mecanismo de ubicaci´on de r´eplicas de una fuente a m´ultiples destinos para sistemas DHT como Chord, Pastry y Tapestry. Para generar d caminos diferentes, se introduce el algoritmo MaxDisjoint. En particular, para un Chord completo con tama˜no N = 2m, un objeto identificado con llave k debe ser replicado en las siguientes 2d−1 ubicaciones: k, k+ N 2d−1 , k+2· N 2d−1 , . . ., k+(2d−1 -1)· N 2d−1 Otra estrategia llamada Halo [26], construye m´ultiples caminos usando el hecho que el destino solicitado aparece en la tabla de enrutamiento de varios nodos, los cuales se llaman knuckles. Para encontrar al nodo sucesor de k usando l caminos redundantes, un nodo p enruta varios mensajes hacia los knuckles. En Chord, los knuckles se definen como el grupo de nodos que tienen apuntadores hacia el sucesor de k. Formalmente, este conjunto se define como los predecesores o sucesores de ri=k-2m−i donde m es el tama˜no de Chord, para todo 1 ≤ i ≤ l. Discusi´on La Tabla 5 resume las estrategias que se presentan arriba. Todas las estrategias usan el estilo de enrutamiento recursivo debido al comportamiento inherente de estas soluciones. En t´erminos de flexibilidad para construcci´on de caminos, Halo ofrece un mejor desempe˜no porque el n´umero de caminos se puede escoger en tiempo de ejecuci´on. 39
  • 40. Tabla 5: Estrategias basadas en multi-path Recursos Modifica Estrategia nuevos y/o Independencia proceso de Mantenimiento modificados de Caminos enrutamiento Pastry-Mod I [10] Tabla Restringida No S´ı Tabla Restringida Cyclone [41] Ninguno S´ı S´ı Igual que Chord Depende del tama~no Replica [19] Ninguno de la red No Igual que Chord Depende del tama~no Halo [26] Ninguno de la red S´ı Igual que Chord En cuanto a la implementaci´on, las estrategias de ubicaci´on de r´eplicas y Halo requieren menor esfuerzo en comparaci´on con las dos restantes, porque estos no cambian los protocolos del sistema DHT subyacente. Sin embargo, la estrategia de ubicaci´on de r´eplicas requiere un n´umero exponencial de r´eplicas, las cuales pueden degradar el desempe˜no del sistema. Por su parte, como cada r´eplica se puede acceder de manera independiente en la estrategia de ubicaci´on de r´eplicas, ´esta tiene la ventaja sobre Halo y Cyclone de mitigar el ataque de almacenamiento y recuperaci´on de datos. Para estas estrategias, el n´umero de mensajes generados es proporcional al n´umero de caminos. Cuando d rutas se usan, el n´umero de mensajes es O(d*h), donde h es el n´umero de saltos esperados en el sistema DHT subyacente. Ahora, sea f la probabilidad de que un nodo sea malicioso, entonces, la probabilidad de llegar al destino es (1 − f)h. Si d caminos indepen- dientes se consideran y siendo X la variable binomial aleatoria que representa el n´umero de caminos exitosos, entonces Pr(fallo)≤Pr(X=0)=(1 − (1 − f)h)d (1) De la Ecuaci´on 1 se sigue que Pr(Failure) disminuye cuando d aumenta. Este tipo de soluciones no son escalables porque, para obtener Pr(Failure) ≤ δ, donde δ es una constante, el n´umero de rutas debe ajustarse en un polinomio de n, lo cual resulta en tr´afico excesivo. De hecho, si h = c logb n, se cumple que (1 − (1 − f)c logb n)d exp(−dn c ln(1−f) ln(b) ), lo cual implica que para que Pr(Failure)≤ δ, d debe ser por lo menos ln(1 δ )n − c ln(1−f) ln(b) . 6.1.2. Wide-path Las estrategias que utilizan wide-path buscan enviar mensajes a un grupo de nodos (quorum) en cada paso. Una solicitud s´olo falla si todos los nodos dentro de un quorum son maliciosos. En cuanto a implementaci´on, se pueden utilizar los estilos de enrutamiento iterativo y recursivo. En el primero, el iniciador solicita a un quorum de l nodos, el conjunto de nodos con los cuales se construir´a el pr´oximo quorum. En la segunda, cada quorum intermedio env´ıa el mensaje directamente al pr´oximo quorum. 40
  • 41. Debido a la importancia de la estructura de quorums, varios estudios como [3, 4, 45] buscan mantener invariantes en los quorums, tales como que un quorum de tama˜no Θ(log(n)) posee a lo m´as una fracci´on de nodos adversarios, donde < k y k son constantes peque˜nas. Varios trabajos [3, 33, 40, 44] han utilizado wide-paths para mitigar el ataque de enrutamiento, pero la mayor´ıa son te´oricos. Aqu´ı, se discutir´an trabajos que se han desarrollado en sistemas P2P DHT tradicionales. Hildrum y Kubiatowicz buscan resolver dos problemas: mantenimiento de tablas de en- rutamiento y b´usqueda incorrecta [20]. El primero se soluciona incrementando el n´umero de nodos por entrada en la tabla de enrutamiento, porque cuando la fracci´on de nodos maliciosos es peque˜no, es dif´ıcil para un nodo malicioso ser vecino de muchos nodos honestos. El segundo lo solucionan usando wide-path con enrutamiento iterativo. Su propuesta se define para Pastry y Tapestry como el sistema DHT subyacente, donde cada entrada de la tabla de enrutamiento es ahora un conjunto de los l nodos m´as cercanos (en t´erminos de distancia de red) con ese prefijo. S-Chord propone una modificaci´on para Chord resistente al ataque bizantine join [18]. Este ataque ocurre sobre un per´ıodo de tiempo en donde (1/4− )z nodos maliciosos ingresan a la red (z es el l´ımite inferior del n´umero de nodos en la red) y el n´umero de nodos correctos que entran y salen de la red es a lo m´as zk para alg´un par´ametro k. La estrategia asume que los identificadores en Chord est´an en el intervalo (0,1]. Cada nodo p obtiene un identificador aleatorio, incrementa su lista de vecinos para mantener apuntadores a nodos en el intervalo [p − 2C ln(n) n , p + 2C ln(n) n ] y cada finger i mantiene nodos en los intervalos [p + 2i − C ln(n) n , p + 2i + C ln(n) n ] y [p − 2i − C ln(n) n , p − 2i + C ln(n) n ], donde C es un par´ametro del sistema y n el n´umero de nodos. Para el proceso de enrutamiento, cada quorum es un swarm3 y este proceso se realiza de forma recursiva usando el camino inverso para la respuesta. Durante cualquier paso intermedio, cada nodo puede verificar si una solicitud proviene de nodos vecinos que se encuentran en su lista de backpointers. Como el proceso tiene una latencia de O(log(n)) y requiere O(log3 (n)) mensajes, ellos proponen una manera para minimizar estos valores mediante el uso de funciones hash. Para esto, cada nodo p en un swarm intermedio, s´olo env´ıa un mensaje para otro nodo q en el siguiente swarm si h(p) = h(q) mod log(n), donde h es la funci´on de hash que mapea nodos a enteros positivos y log(n) es el tama˜no del swarm, y de la misma manera un nodo puede descartar solicitudes. Con este filtro el n´umero de mensajes esperado es O((log(n))2). Una estrategia que usa topolog´ıa de quorum como la descrita en la propuesta anterior se encuentra en [54]. Cada quorum Qi tiene una llave privada y p´ublica que se comparte entre los nodos usando t´ecnicas para compartir un secreto y un algoritmo de distribuci´on de llaves. Cada nodo dentro del quorum Qi conoce la llave p´ublica de los quorums vecinos. El proceso de enrutamiento usa el estilo iterativo, pero en el primer paso el iniciador, p, env´ıa su direcci´on IP, id, un time-stamp y la llave solicitada. Luego, p recibe las partes de las firmas y la informaci´on de enrutamiento, y genera la firma correspondiente. Luego, contacta el conjunto de nodos del pr´oximo quorum y les env´ıa la firma y time-stamp. Con esto se puede verificar si p ha contactado quorums previos y de esta manera prevenir ataques de denegaci´on de servicios (DoS). 3 Conjunto de nodos en el intervalo (p, p + C ln(n) n ]. 41