Contextualización teórica sobre la técnica de Tor y sus problemas de seguridad
26 de abril de 2018 • fjbalon
Tor son las siglas de The Onion Routing, algo que podríamos traducir al español como enrutamiento cebolla; denominado así por su criptografía en capas, como veremos más adelante. Se trata de un proyecto de software libre creado originalmente con fines militares por parte del ejército y la inteligencia norteamericanas, con el objetivo de dar comunicaciones seguras, privadas y anónimas entre espías y agentes en campo enemigo orientado a las operaciones realizadas en territorios, principalmente soviéticos.
Tor consiste en una gran red descentralizada compuesta por nodos repartidos por todo el mundo, a través de los cuales viajan nuestros paquetes de red dotando de anonimato, como veremos más tarde. Tras ser abandonado por el ejército fue reciclado por la Electronic Frontier Foundation y, finalmente soportado por su propia comunidad.
El objetivo de Tor es preservar la privacidad y el anonimato (diferenciados) de los que navegan por su red, manteniendo comunicaciones seguras, asegurando la integridad de la información, pretendiendo evitar monitorización y registro de actividad, etc. Con el fin de proteger la libertad de los usuarios en Internet y evitar la censura. Actualmente es utilizado por diversos perfiles, desde disidentes políticos de países autoritarios, denunciantes, periodistas, gobiernos, hackers --tanto de sombrero blanco como de sombrero negro--, vendedores de diversa índole e, incluso narcotraficantes, delincuentes, etc. El anonimato ofrecido, como en cualquier herramienta, es un arma de doble filo.
Es necesario continuar esta contextualización definiendo la red profunda de la que tanto se habla -y con tan poco fundamento en muchas ocasiones-. La definición es clara y concisa: la deep web es el contenido de internet que no está indexado por los motores de búsqueda convencionales, sea por la razón que sea. Como podemos ver, no existe delincuencia ni malicia en la propia definición de esta. Un servidor privado conectado mediante Dynamic DNS que permite trabajar con direcciones IP dinámicas. de un particular o cualquier base de datos empresarial (que lógicamente no es accesiblemediante indexadores) podría considerarse y, de hecho, se considera parte de la red profunda.
Cuando la cultura popular se refiere a la red Tor como homóloga a la Deep Web, lo hace erróneamente. Sí es cierto que debemos admitir a la red Tor (y cualquier red semejante o parecida, como las redes i2p o freenet) como parte de la deep web. Para solucionar este conflicto de conceptos, se ideó la conocida como darknet o red oscura, haciéndo referencia exclusivamente a estas redes especiales; concepto que vuelve a ser salpicado por la leyenda negra que lo absorve -que no exime de la existencia de inmoralidad y delincuencia en ella, hay que admitir-. Por ello, en el presente documento se hablará con propiedad a la hora de mencionar la deep web y la darknet.
A priori la técnica detrás de Tor puede parecer muy complejo, pero en lo que avanza el desarrollo de este documento podremos comprobar que su funcionamiento es sencillo; no eximiendo un grandísimo potencial de uso y, como veremos más adelante, un gran margen de mejora.
Si nos conectamos a Internet de manera habitual, nuestra dirección IP pública y un conjunto de información más quedará expuesta, tanto para el destino de la conexión como para Man in the Middle, las propias empresas que nos proveen servicios, autoridades, gobiernos, etc. Además si la conexión no se encuentra cifrada podrá incluso filtrarse contraseñas y mensajes secretos y confidenciales. Todo lo que hacemos en Internet puede ser --y se encuentra, de hecho-- monitorizado y almacenado.
Por contraposición, Tor crea una ruta al azar de nodos distribuidos por el mundo, a través de los cuales viajarán nuestras peticiones, de esta forma el destino de nuestros paquetes no conocerá nuestra dirección IP, sino la del nodo de salida (al igual que usando un proxy o una VPN), y de la misma forma, el nodo de salida no conocerá la dirección IP del origen, sino del nodo anterior a él en la ruta. A su vez, el nodo de entrada no conocerá el destino de la conexión, simplemente su destino será el segundo nodo. De esta forma se permite alcanzar un alto grado de anonimato, ya que, en el caso de ser vulnerado o amenazado un nodo, nuestra información se mantendrá anónima.
Anteriormente comentamos el origen del nombre de Tor: el enrutador cebolla. Esto se debe a su peculiar forma de usar la criptografía sobre la información que realiza para que proteger la confidencialidad e integridad de la información de los propios servidores, incluso: cifrado por capas. Completando la explicación anterior, nuestro cliente de Tor alojado en nuestra máquina calculará al azar la ruta antes mencionada, que en este caso digamos que corresponde a 3 nodos para agilizar la explicación, el nodo de entrada en Washington, el segundo nodo en Praga y el nodo de salida en Moscú. Con la ruta ya calculada, cifrara el paquete, digamos, la petición de una simple página HTML con la clave pública del nodo de salida, posteriormente volverá a cifrar el paquete ya cifrado con la clave pública del segundo nodo y, finalmente, con la clave del nodo de entrada y, una vez terminado el cifrado por capas, será enviado al nodo de entrada, donde usará su clave privada para descifrarlo y lo reenviará al segundo nodo, que hará lo mismo.
El proceso continuará hasta llegar al nodo de salida y este (Moscú) pedirá la página deseada (recordamos que este servidor verá como cliente a Moscú y no a nosotros) y realizará el mismo proceso de cifrado pero a la inversa, para devolverla al cliente de Tor. A continuación será desglosado este tema tan amplio como la criptografía, en concreto lógicamente la de la red que estamos estudiando.
Tor es el heredero del sistema desarrollado por el Departamento de Defensa de Estados Unidos. Ahondando un poco más en el tema, podemos llamar a David M. Goldshlag, Michael Reed y Paul Syverson los padres del encaminamiento cebolla, idea algorítmica que precede y, es a su vez, núcleo del concepto y de la técnica de Tor. Éstos se basaron y aplicaron las ideas de redes de mezclado de David Chaum. El objetivo fundamental y sin añadidos de estos conceptos criptográficos no es más que permitir infraestructuras para comunicaciones privadas sobre redes públicas.
Tor no es la única red basada en estos conceptos criptográficos y algorítmicos, pero sí es la más conocida, la más utilizada y, en principio, la que mejor resultados otorgan a los usuarios. Además, el tratarse de una red de software libre y de código abierto ha permitido la afluencia de una gran comunidad de desarrolladores que la han hecho crecer y mejorar. Dicho esto, podemos hacer menciones honoríficas a otras redes que, como Tor, siguen esta idea: Freedom Network, Onion Routing, MixMaster, Babel, Mixminion, Zach Brown's Onion, PipeNet, IronKey, MorphMix, y Tarzan.
La idea primigenia era utilizar criptografía de clave asimétrica tradicional. Este sistema es vulnerable a ataques basados en sniffing de tráfico. Efectivamente, supongamos que un atacante puede esnifar todos los datos que son intercambiados entre los nodos. Si finalmente el atacante consigue comprometer todos los routers (accediendo a sus claves privadas) entonces este puede descifrar todo el tráfico almacenado anteriormente.
Para acotar este problema podríamos cambiar periódicamente las claves (pública y privada) de los routers. Para ello estableceríamos un periodo de tiempo a la finalización del cual las claves caducarían y sería necesario establecer nuevas claves. La clave pública habría que difundirla y la antigua clave privada se destruiría para que no pudiera ser obtenida nunca, asegurando así la persistencia de la seguridad del tráfico que se realizó usando la antigua clave. Sería acertado que el cambio de claves fuera frecuente ya que esto limitaría la cantidad de tiempo que tiene A para comprometer B y C, pero a la vez requeriría que los routers del sistema contactaran frecuentemente con un sistema que les actualizara las nuevas claves lo que llevaría a problemas de escalabilidad. En resumidas cuentas: viable pero poco práctico.
Onion Routing establece un circuito de claves simétricas, a partir de una criptografía de clave pública mediante una estructura de datos con capas (de ahí la denominación de cebolla - onion que posteriormente fue reutilizada por nuestro objeto de estudio).
Donde Ki es material que permite establecer la/s clave/s de sesión compartida (puede haber una para cada sentido de la comunicación) entre el origen de la comunicación (el iniciador).
Observe que la capa final se identifica porque no contiene ni dirección destino, ni datos con significado para ser transmitidos.
La principal desventaja de este enfoque es que no provee de perfect forward secrecy. Supongamos que un circuito se construye desde el iniciador con la secuencia de nodos A,B,C y que A es un router malicioso y por tanto el atacante puede descifrar todo lo que pasa y ha pasado por él. Si A graba todo el tráfico y en el último momento se compromete B (el cual sabe quien es el último nodo C), entonces se compromete C y A puede saber con quien se está comunicando el iniciador.
Y finalmente llegamos a la criptografía utilizada por Tor. Ésta utiliza una construcción incremental e interactiva del circuito, a la que llaman enfoque telescópico.
En concreto Tor se apoya en el Tor Authentication Protocol (siglas TAP), cuya seguridad fue probada en el modelo de oráculo aleatorio. Tor lo que hace es realizar una ejecución secuencial de múltiples instancias de TAP, estableciendo un circuito de autenticación RSA de un solo sentido (el iniciador no se autentica nunca). Para ello se utiliza el circuito parcialmente construido hasta ese momento. Podemos decir que en cada tramo sucesivo del circuito se realiza una negociación interactiva de claves (protocolo de establecimiento de claves de Diffie-Hellman).
En el TAP la clave pública del nodo sólo se utiliza para iniciar la comunicación durante la cual se establece la clave temporal de sesión vía el protocolo de establecimiento de claves de Diffie-Hellman. Las claves se forman a partir del intercambio de mensajes en lugar de ser enviadas de forma cifrada. Por tanto, una vez que la sesión finalice (el circuito ha dejado de usarse) y se destruyan las claves de sesión, si se compromete un router (se obtiene su clave privada) esto no permite al adversario recuperar las claves de sesión eliminadas y descifrar así el tráfico cifrado bajo esa clave que pudiera tener almacenada. Por tanto tenemos perfect forward secrecy. Por otra parte ya no es necesario almacenar hashes de las estructuras de datos previamente procesadas para evitar ataques de replay. Reinyectando uno de los mensajes del handshake del protocolo de establecimiento de claves de Diffi-Hellman provoca unos resultados de clave de sesión diferentes y por tanto ya no sería un ataque efectivo.
Tor permite la salida a Internet utilizando los repetidores que se encuentran dentro de la red. Esto es una solución outproxy en donde los usuarios pueden salir hacia Internet utilizando la plataforma de anonimato, los repetidores que se encuentran disponibles en la red.
Las redes inproxy, por el contrario no permiten esto, solamente permiten la navegación dentro de la red. Es el concepto más puro de una VPN es una tecnología que permite la extracción cifrada y tunelada de una red de área local (LAN) a una red pública. en donde todos los repetidores se pueden comunicar entre ellos pero no permiten salir de ella.
Por ello podemos concluir en que Tor es una red inproxy a la misma vez que es una red outproxy; dependiendo del uso que le demos podemos obtener las ventajas de una u otra, o ambas simultáneamente.
Tor implementa además un protocolo que permite la configuración de servidores dentro de la misma red, sin necesidad de salir de ella (algo que aumenta notoriamente la privacidad y el anonimato, tanto del lado del cliente, como del lado del servidor). Podemos considerarlo quizás, una red privada, una intranet propia de la red. Estos servidores se conocen como hidden services (Servicios ocultos, en castellano).
Un hidden service es un servidor común, la mayor parte de ellos corriendo sobre GNU/Linux y el resto FreeBSD, Unix, GNU/Hurd, etc. En ocasiones incluso podemos encontrar servidores ocultos corriendo sobre Microsoft Windows Server, aunque es algo poco común. Estas máquinas ofrecen los mismos servicios que un servidor convencional (web, mail, FTP, etc).
Pero, al contrario de un servidor común, el cliente no conoce la dirección IP del mismo. Los nodos de Tor cumplen la función de servidores DNS, que de mediante intercambio de claves criptográficas obtiene la clave pública que identifica a este servidor dentro de la red de nombres de dominio. Esta clave seguida de la extensión .onion constituye el dominio del servidor.
x67ebbbjksjdjsl.onion
Como podemos ver, el dominio asociado no es fácil de recordar, no sigue una lógica semántica ni sintáctica. Por esta misma razón, existen las llamadas Hidden wiki's, que no son más que bases de datos de servidores y dominios, normalmente clasificados en categorías. Es una forma sencilla de indexar en la medida de lo posible estos contenidos, aunque de una forma burda, costosa y rudimentaria.
A pesar de que Tor está basado y construido con base en la seguridad, el anonimato y la privacidad de sus usuarios, como todo sistema no está extenso de problemas generales y específicos de seguridad, de riesgos y vulnerabilidades.
En cuanto a la seguridad general, evidentemente por mucho que nos conectemos a Tor si accedemos a servicios no seguros o no privados (Facebook tiene su propio dominio onion -facebookcorewwwi.onion-, algo curioso), los paquetes que salen por el nodo final serán inseguros o poco privados. En este caso, sólo protegerás tu conexión de salida a Internet. Esto es así porque quien tenga acceso -sea propietario o hackeado- al nodo de salida, tiene acceso a los paquetes en bruto, pudiendo espiar la conexión no cifrada o realizar otro tipo de ataques a este nivel. Es decir, un actor malicioso que controle el nodo de salida de Tor podría ser un riesgo potencial para el anonimato. Por contraposición, un actor que controla el nodo de entrada, aún manteniendo la privacidad del usuario, podría ser un riesgo en el intercambio de paquetes y manipulación de estos.
Del mismo modo, la descarga de código local como javascript en diversas páginas se puede convertir en un riesgo para el anonimato. También complementos como Adobe Flash y aplicaciones externas como Adobe Reader o incluso un reproductor de video podrían potencialmente filtrar su dirección IP real a un sitio web que intenta adquirirla. El paquete del navegador Tor evita todos estos problemas con su configuración predeterminada, pero podría deshabilitar estas protecciones y usar JavaScript o complementos en el navegador Tor.
Debido al propio diseño estructural de Tor, permitiría que la realización de ataques Man in the Middle complejos, que permitirían -si una persona u organización controla el nodo de salida y de entrada- relacionar las direcciones IP con las peticiones enviadas al servidor, así como los timestamps y los tiempos de comunicación, y llegando a corresponder la conexión de entrada con la conexión de salida; rompiendo el anonimato y la privacidad del usuario. Aunque esto parece un riesgo mínimo por tratarse de una causística muy concreta, no lo es tanto. Véase KAX17 ha llegado a controlar hasta el 10% de nodos de salida con motivos maliciosos, lo que le da a KAX17 un alto control de la red. Este tipo de ataque se denomina Sybil; aquel que controle mayor número de nodos tiene más posibilidades de formar parte en más circuitos. No obstante la propia red dispone de un sistema de scripts que automatiza y comprueba si hay un aumento repentino o anormal de nodos, y un equipo de revisión de nodos para mitigar el riesgo potencial.
Otro ataque a tener en cuenta es el ataque predecesor, que tiene como objetivo identificar a los clientes de la red Tor aprovechando la reconstrucción de los circuitos. Uno o varios nodos hacen un seguimiento de las conexiones. Cada vez que un usuario reconstruye (aleatoriamente cada 10 minutos de conexión) un circuito, se vuelve a conectar a nuevos nodos haciendo que el atacante identifique al cliente porque tenderá a conectarse más veces que cualquier otro nodo. Conectado con el ataque Sybil, aquel que controle muchos nodos podría hacerlos fallar habitualmente para obligar a los clientes a reconectarse una y otra vez aumentando el éxito del ataque hasta obtener un circuito totalmente controlado por él (ataque de reconstrucción circuital).
El ataque por atasco es también un elemento de riesgo. Una conexión a través de n routers tiene un efecto en las otras conexiones a través de ese mismo router, personalmente me gusta llamarlo onda lógica. El usuario atacante tiene que controlar un router Tor y ser capaz de observar una conexión intermedia entre la salida del router y el destino final. Mediante el router Tor, el atacante, puede crear circuitos en todos los demás routers Tor uno por uno para comprobar la latencia de la conexión si incrementa o no. En el momento que encuentre un router donde sí aumente, ese router está en el circuito. Aun así, debido al número de nodos actual es un ataque que por infraestructura tiene un bajo riesgo, pero alto impacto.
El ataque Round-Trip Travel Time depende del tiempo de ida y vuelta de los clientes a los servidores. También hay que tener en cuenta posibles ataques de envenenamiento DNS, parcheo de archivos añadiendo código malicioso, sustitución de certificados SSL...
Evidentemente, también el uso de aplicaciones vulnerables, o posibles apariciones de ataques 0-day contra éstas, que usan la red Tor entablaría un riesgo potencial para la privacidad y el anonimato. El navegador de Tor, basado en Firefox, no está exento de estas vulnerabilidades. Véase CVE Details, Tor Browser: Security Vulnerabilities.
Como conclusiones, la red Tor ofrece una estructura estable para dotar de seguridad, privacidad y anonimato a los usuarios. Pero como hemos visto no está exenta de vulnerabilidades y riesgos. Cualquier usuario conectado a Tor deberá tomar medidas de seguridad, igual que si de una conexión por la surface web se tratase. Tor es combinable con otros elementos de seguridad de conexión, como VPN, combinando los circuitos de Tor y encadenando la salida de Tor -insegura- con la conexión cifrada de la VPN. También el uso de sistemas y softwares fiables es fundamental para garantizar un alto nivel de seguridad.
Y finalmente, evidentemente tener sentido común a la hora de realizar conexiones, evitando ataques de ingeniería social o errores humanos que pongan en peligro la seguridad. El hombre es siempre el eslabón más débil en la cadena de la seguridad, por lo que es un elemento crítico a tener en cuenta y a proteger.
Puede profundizar el tema en: