Últimamente se han dado todo tipo de leyendas urbanas sobre la deep web. “Criminales”, “tráfico de armas”, “porno ilegal” o “tráfico de drogas” son algunos de los términos que suelo escuchar cuando alguien me cuenta algo sobre la deep web. En realidad, el concepto es mucho mas sencillo que todo eso.

Los sitios web que pertenecen a la deep web son sitios web que no son accesibles mediante un buscador, y a los que sólo podemos acceder si conocemos la forma concreta de hacerlo (ya sea por una dirección IP hacia la máquina, una URL en concreto, un acceso con contraseña…). Al resto de páginas, indexables por navegadores, que enlazan con las demás páginas y que visitamos día a día se les conoce como “surface web”, o la “web superficial”.

Sin embargo, es cierto que existen soluciones que se encargan de ocultar tanto la identidad del origen, como la del destino. Estas soluciones aportan anonimato y cifrado a comunicaciones que comparten información sensible. También se utilizan para garantizar derechos como la libertad de expresión o la libertad de prensa, sobre todo en países donde el gobierno suele interceptar comunicaciones, protegiendo la identidad del emisor y del receptor de la información.

Darknets y la distribución anónima de contenido

Una darknet es una red virtual que intenta garantizar un cierto grado de anonimato a ambos extremos de la comunicación. Se denomina red virtual porque no utiliza una red privada, sino que intentan montar un red privada a partir de una red pública. Los nodos de la red virtual son nodos corrientes de Internet. La única diferencia es que para obtener recursos de esos servidores se utilizan protocolos y puertos no estándares, de forma que solo las pocas personas que conozcan los protocolos, puertos y mecanismos a utilizar pueden acceder a la información disponible en la red virtual.

Darknet
Una darknet (los elementos rojos) que funciona sobre Internet (los elementos azules). La darknet es como una red privada (para los elementos rojos es como si solo existieran 4 elementos en la red, porque son los únicos capaces de entender el tráfico que intercambian) sin embargo, utilizan Internet para crear esta red virtual.

Puesto que los nodos están conectados a Internet, los paquetes que se envían entre los nodos de una darknet pasan por todos los routers de Internet hasta llegar al nodo destino de la red virtual. Para evitar que cualquier usuario/empresa/organización/gobierno pueda escuchar la información compartida, se suelen utilizar suites criptográficas para que la información que transmiten entre ellos sea incomprensible a ojos del resto de nodos de Internet.

Para garantizar anonimato en una darknet, se suelen utilizar algunas técnicas especiales. En Internet, todos los paquetes IP van marcados con una dirección IP de origen y otra dirección IP de destino. En un darknet, lo que se suele hacer es aprovechar la cantidad de tráfico que circulan por ellas para aportar anonimato a la comunicación. Por ejemplo, colocando muchos proxys cifrados entre emisor y receptor, o haciendo que todos los nodos de la red reciban y envíen todos los paquetes, para evitar una traza directa entre emisor y receptor. El nivel de anonimato nunca es del 100%, por eso se suele denominar “pseudoanonimato”, y depende en gran medida del tipo de darknet y del método que se utilice.

La red Tor. Navegar de forma “anonima”.

Dentro de las redes virtuales anónimas, una red muy famosa y que, por sus características, suele denominarse “darknet” es la red Tor (siglas de “The Onion Router”). Esta red hace uso de un mecanismo denominado el encaminamiento cebolla, para conseguir una comunicación cifrada entre dos extremos pseudoanónimos.

En la red Tor hay dos tipos de nodos: los nodos encaminadores de tráfico, y los nodos usuarios, que son los que hacen uso de la red. Los nodos encaminadores son proxies o intermediarios de la comunicación. Cada vez que un paquete IP pasa por un proxy, cambia la dirección IP origen del paquete por la suya propia.

Secuencia de paquetes en una darknet basada en proxies
Secuencia de paquetes en una darknet basada en proxies. El destino no pertenece a la darknet. La comunicación es segura desde A hasta P3, pero no desde P3 hasta B.

Cuando un nodo usuario envía un paquete a un servidor, hace circular ese paquete por varios de sus proxies (con el contenido cifrado). De esta forma, si un ISP fuera capaz de escuchar la conversación entre dos proxies de la red Tor no podría comprender el mensaje intercambiado (porque va cifrado) y además no sería capaz de saber quien es el origen o el destino (porque los proxies cambian las direcciones IP de origen y destino de los paquetes).

¿Podría un ISP saber el origen y destino de una comunicación cifrada si conoce todos los nodos por los que nuestro paquete ha pasado y puede ver los paquetes que intercambian? Depende del tráfico que compartan entre los proxies de la red Tor. Si el tráfico que circula por la red es elevado (y de hecho lo es) conseguir trazar todos los paquetes IP desde origen a destino en una marabunta de paquetes IPs en los que el origen y el destino son nodos de la propia red, resulta algo bastante improbable.

El encaminamiento cebolla

El funcionamiento de este método de encaminamiento es bastante especial y sobre todo, curioso. Cuando A quiere enviar un paquete a B, elige un número de proxies por los que va a circular su paquete de datos, y cifra ese paquete tantas veces como proxies haya elegido. El nombre de “encaminamiento cebolla” hace referencia a que la información tiene varias capas de cifrado, como las capas de una cebolla.

Supongamos que queremos enviar un paquete de datos por la red Tor, y se elige un número de  4 proxies por los que el paquete tiene que pasar. Es decir, el paquete saldría de A, iría al proxy 1, luego al 2, después al 3, después al 4 y finalmente llegaría al destino B. La vuelta sería igual pero en sentido contrario.

En primer lugar, construye un paquete IP con la dirección IP origen del último proxy, y dirección IP destino de B. Ese paquete lo cifra de forma que solo el último proxy pueda descifrarlo. Una vez cifrado le coloca una nueva cabecera IP, con la dirección IP origen del penúltimo proxy, y la dirección IP destino del último proxy. Así continuamente hasta que tenemos un paquete IP con dirección origen A, y dirección destino la del proxy 1. Una vez hecho esto enviamos el paquete. Los encaminadores de Tor hacen un proceso contrario, para llevar la información hasta el destino.

Paquetes en Tor

Debilidades de la red Tor

A pesar de todo lo expuesto, hay que tener en cuenta que ningún sistema es completamente anónimo o seguro y todos tienen sus debilidades. En la red Tor, el punto débil se encuentra al final de la comunicación, donde no podemos controlar quien hay escuchando la conversación en ese tramo. En el ejemplo anterior, al proxy 3 se le suele denominar el “exit node”, porque es el nodo de salida de la red Tor.

P3 es el exit node de la red Tor en este ejemplo. Además, el tramo entre P3 y B es inseguro, porque la conexión entre estos no está cifrada y es posible leerla desde el router que los une.
P3 es el exit node de la red Tor en este ejemplo. Además, el tramo entre P3 y B es inseguro, porque la conexión entre estos no está cifrada y es posible leer la información compartida desde el router que los une.

El problema se acentúa aún más si no utilizamos protocolos cifrados como SSL/TLS al navegar en sitios webs a través de la red Tor. Alguien ubicado entre el último proxy y el punto B podría escuchar la conversación con el servidor, y a partir de datos intercambiados obtener nuestra identidad o robarnos datos de la comunicación.

En Marzo de 2011 unos investigadores franceses documentaron un ataque al anonimato de la red Tor (paper). Colocaron un exit-node controlado por ellos en la red Tor y analizaron el tráfico cursado. A los 23 días, habían recopilado información suficiente para identificar más de 10.000 direcciones IP de usuarios de la red Tor que utilizaban clientes Bittorrent.

En general, este estudio demostró que la seguridad y el anonimato de una conexión en la red Tor podía perderse completamente si desde el mismo nodo se utilizaba algún medio inseguro para compartir información.

Conclusión

Internet es un medio inseguro por definición, en el que no solo es posible que resto de usuarios de la red roben o manipulen la información que trasmites, sino que además hay organizaciones, gobiernos o empresas que podrían controlar toda la información que pasa por las redes. Para evitar esto, se generaron las “darknets”. Un ejemplo es la red Tor, que utiliza el encaminamiento cebolla para garantizar un porcentaje de anonimato y seguridad a las comunicaciones.

Estas redes se utilizan para evitar cualquier bloqueo o seguimiento por parte de gobiernos u organizaciones, por lo que es habitual que se usen para compartir material ilegal, y para garantizar derechos como la libertad de expresión o la libertad de prensa.

Aún así, ningún sistema es completamente seguro, y este también tiene sus debilidades. Os dejo a vosotros la tarea de aportarle un mayor o menor grado de confianza a estas tecnología en función de lo aquí expuesto y el resto de material sobre el tema que encontréis por la red.

**EDIT: **Aquí tenéis la página oficial de la red Tor: https://www.torproject.org/
Ahí podéis encontrar un navegador directamente configurado para navegar a través de Tor, y así probar como funciona. Tened en cuenta que todas estas medidas de seguridad y anonimato se basan en “marear” mucho los paquetes y eso repercute mucho en el rendimiento, así que es normal que notéis que va un poco lento.

**EDIT 2: **Una lista bastante amplia con información sobre los nodos encaminadores de Tor.
Enlace: http://torstatus.blutmagie.de/

EDIT 3: Me he encontrado varias veces con la duda de qué método se utiliza para cifrar en el encaminamiento cebolla. Mi amigo Eugenio ha encontrado la respuesta: se utiliza cifrado asimétrico. Antes de enviar los paquetes, se obtiene una lista de todos los proxies disponibles en la red Tor y se eligen aleatoriamente algunos de ellos para que reenvien nuestro paquete hacia el destino. En esa lista se incluye la dirección IP de cada proxy, y la clave pública para cifrar los paquetes hacia ese proxy, de forma que solo el proxy (con su clave privada) es capaz de descifrar el contenido del paquete.