Si os pregunto sobre una tecnología para navegar anónimamente por la red y entrar en la deep web, probablemente me respondáis "Tor". Ahora bien, ¿es la única? Hoy vamos a ver que no explorando I2P, una red anónima con más de una década a sus espaldas (surgió en 2003) pero que últimamente ha saltado a la palestra por ser el sitio donde se ha realojado Silk Road.
La idea es a grandes rasgos la misma: usar comunicaciones cifradas saltando entre varios nodos de la red para que no se pueda saber quién mira qué páginas. Ahora bien, por debajo las cosas cambian.
Entra por aquí, sal por allá: los túneles de I2P
En Tor, cuando un ordenador se quiere conectar a otro nodo de la red, lo que hace es elegir un conjunto de nodos intermedios - lo que se llama un circuito - entre ambos ordenadores y mandar las comunicaciones por ahí. En I2P la cosa es algo diferente: se usan túneles de entrada y salida.
¿En qué consiste esto? Cuando un ordenador, llamémosle A, se conecta a I2P elige dos nodos para crear un túnel de salida, y pongamos que se llaman B y C. De la misma forma, elige otros dos nodos, C y D, para crear un túnel de entrada. Si A quiere enviar una petición a la red, la enviará a B, que se la pasará a C (el final del túnel) que ya la reenviará a su destino.
¿Quién será su destino? Pues será el nodo de entrada del servidor al que se quiera hacer la petición. Esto es, lo enviará a un nodo de la red, que lo reenviará a un intermediario que hará llegar la petición al servidor de destino.
Así visto, no hay mucha diferencia con Tor: se crea un camino cifrado con intermediarios para conectarse entre un sitio y otro, ¿no? Lo cierto es que no. La ventaja de los túneles se ve cuando pensamos en que, en una red, no sólo te conectas con un ordenador sino con varios.
Con Tor, habría que construir un circuito para ordenador con el que te quieres conectar. En el caso de I2P no es así: el mismo túnel de salida te sirve para enviar a todos. Incluso, si se le quiere sacar algo más de jugo, se pueden abrir varios túneles de salida en paralelo.
En la práctica, esto hace que las conexiones dentro de I2P sean más rápidas que el equivalente en Tor de los servicios ocultos, que tienen un montaje bastante más complejo para establecer la conexión.
El hecho de usar túneles también tiene ventajas en cuanto a privacidad. Los túneles son unidireccionales, así que si se quieren realizar análisis de tráfico, se necesitan el doble de nodos que en Tor. Por poner un ejemplo práctico, digamos que en Tor se necesitan 100.000 mensajes para decir si A y B están conectados o no. Si vamos a un mensaje por segundo por cada sentido (de A a B y viceversa, de B a A), necesitaríamos 50 nodos comprometidos (cada nodo recibe 2 mensajes por segundo) monitorizando durante 1000 segundos. Sin embargo, en I2P los túneles son unidireccionales y cada nodo recibiría sólo 1 mensaje por segundo. Es decir, que o bien se ponen el doble de nodos o se duplica el tiempo de monitorización. Si los ataques de análisis en Tor ya son difíciles e impracticables para el 99% de la población (hola, NSA) imaginaos en I2P.
Además, esos túneles duran poco tiempo (10 minutos) y el hecho de que cada túnel "pertenezca" a un único usuario permite activar técnicas de "evasión", como añadir retrasos intencionados en cada punto del túnel y así evitar análisis de tráfico.
En I2P, todos participan
Otra diferencia importante de I2P frente a Tor es cómo se organizan los nodos que participan en la red. En Tor no todos son intermediarios y transmiten tráfico de otros: en I2P sí. Esto, que en un principio puede parecer bueno, en la práctica no lo es tanto.
Por un lado, Tor cuenta con nodos con un ancho de banda bastante considerable. Por otro, para llevar a cabo esa idea de que todos los nodos aporten ancho de banda, en I2P se toma la decisión de descentralizar la base de datos de nodos (está repartida en varios nodos llamados _floodfill_) y eso lleva a ciertos problemas.
No deja de ser curioso que, hablando de anonimato, diga que descentralizar es un problema, pero en este caso lo es. Resulta que es bueno llevar un control sobre quién está aportando ancho de banda para evitar ataques. Si un mismo individuo u organización puede ver qué nodos se añaden a la red, entonces puede detectar nodos sospechosos y "banearlos" más fácilmente.
En I2P se hace más difícil controlar esos posibles nodos malignos. Por ejemplo, un nodo puede convertirse en _floodfill_ y entonces denegar peticiones de búsqueda en la base de datos de nodos, ralentizando la red para los usuarios que se conecten a él. También se pueden añadir nodos que intencionadamente corten conexiones o ralenticen el tráfico para así llevar a cabo ataques de denegación de servicio, para los cuales I2P no está especialmente preparado.
¿Y a nivel práctico, en qué se diferencia?
A nivel práctico, la diferencia de I2P con Tor es principalmente en la cantidad de usuarios. I2P es relativamente desconocido, tiene menos ancho de banda conjunto, sus desarrolladores son menos y con menos experiencia, y ha sido estudiado, atacado y corregido menos veces (y esto lo dicen los propios desarrolladores de I2P). Además, la mayoría de los que se planteen usar Tor o I2P lo querrán para conectarse a Internet, a modo de proxy, tarea para la que Tor está más preparado que I2P.
Por otra parte, precisamente el tener menos usuarios y ser menos visible hace a I2P, en cierto modo, ser más privado. En cuanto a diseño, I2P es más resistente a ataques contra la privacidad de los usuarios. Precisamente por eso es probable que Silk Road haya decidido mudarse ahí, pero tardaremos en saber si les resulta efectivo o no.
Más información | I2P Technical Introduction
En Genbeta | ¿Cómo funciona Tor? | Kit de supervivencia en la deep
web
En Xataka | Una semana en la deep web
Imagen | Yuri Samoilov
Ver 4 comentarios