The Onion Router, abreviado en inglés como ‘Tor’, es un proyecto cuyo objetivo principal es el desarrollo de una red de comunicaciones distribuida de baja latencia y superpuesta sobre internet en la que el encaminamiento de los mensajes intercambiados entre los usuarios no revela su identidad, es decir, su dirección IP (anonimato a nivel de red) y que, además, mantiene la integridad y el secreto de la información que viaja por ella. Por este motivo se dice que esta tecnología pertenece a la llamada darknet (colección de redes y tecnologías usadas para compartir información y contenidos digitales), o red oscura también conocida con el nombre de deep web o web profunda..
Para la consecución de estos objetivos se ha desarrollado un software libre específico. Tor propone el uso de “encaminamiento de cebolla” de forma que los mensajes viajen desde el origen al destino a través de una serie de routers especiales llamados ‘routers de cebolla’ (en inglés onion routers). El sistema está diseñado con la flexibilidad necesaria para que pueda implementar mejoras, se despliegue en el mundo real y pueda resistir diferentes tipos de ataque. Sin embargo, tiene puntos débiles y no puede considerarse un sistema infalible.
No es una red entre iguales (Per – to – Peer), ya que por un lado están los usuarios de la red y por otro lado los encaminadores del tráfico y algunos de los cuales hacen una función de servicio directorio..
La red funciona a partir de un conjunto de organizaciones e individuos que donan su ancho de banda y poder de procesamiento. Según información obtenida de los documentos de alto secreto filtrados por Edward Snowden por en el año 2013, la Agencia l de Seguridad Nacional de EE.UU (NSA) habría, supuestamente, conseguido «romper» Tor y así descubrir las identidades de los usuarios que buscan el anonimato.
HISTORIA
El 20 de septiembre de 2002 se anunció una versión alfa del software libre con la red del encaminamiento de cebolla en funcionamiento. Creado en el año 2003 por Roger Dingledine, Nick Mathewson y Paul Syverson surgió como la evolución del proyecto “Onion Routing del Laboratorio de Investigación Naval de los EE.UU (por eso se dice que es la segunda generación de Onion routing). Inicialmente[4]financiado por el Laboratorio de Investigación Naval de los EE.UU. A finales del año 2004 pasó a ser patrocinado por la Electronic Frontier Foundation, la organización de defensa de libertades civiles en el mundo digital, hasta noviembre de 2005. Actualmente el proyecto Tor está en manos del ‘Tor project’ una organización sin ánimo de lucro orientada a la investigación y la educación, radicada en Massuchusetts y que ha sido financiada por distintas organizaciones. Actualmente el proyecto está formado por un equipo liderado por Roger Dingledine.
En marzo de 2011, Tor recibió de la Free Sofware Foundation el premio para proyectos de beneficio social correspondiente a 2010 por haber permitido que, aproximadamente, 36 millones de personas de todo el mundo, usando software libre, hayan experimentado libertad de acceso y de expresión en Internet manteniendo su privacidad y anonimato. Su red ha resultado crucial en los movimientos disidentes de Irán y Egipto.
APLICACIÓN Y LIMITACIONES
El objetivo principal de Tor (no logrado al 100%) es conseguir que internet pueda usarse de forma que el encaminamiento de los mensajes proteja la identidad de los usuarios. Es decir, persigue que no se pueda rastrear la información que envía un usuario para llegar hasta él (su dirección IP)). Una dirección IP es una etiqueta numérica que identifica, de manera lógica y jerárquica, a una interfaz (elemento de comunicación/conexión) de un dispositivo (habitualmente una computadora) dentro de una red que utilice el protocolo IP (Internet Protocol), que corresponde al nivel de red del modelo OSI. Dicho número no se ha de confundir con la dirección MAC, que es un identificador de 48 bits para identificar de forma única la tarjeta red y no depende del protocolo de conexión utilizado ni de la red. La dirección IP puede cambiar muy a menudo por c
ambios en la red o porque el dispositivo encargado dentro de la red de asignar las direcciones IP decida asignar otra IP (por ejemplo, con el protocolo DHCP). A esta forma de asignación de dirección IP se denomina también dirección IP dinámica (normalmente abreviado como IP dinámica).
ambios en la red o porque el dispositivo encargado dentro de la red de asignar las direcciones IP decida asignar otra IP (por ejemplo, con el protocolo DHCP). A esta forma de asignación de dirección IP se denomina también dirección IP dinámica (normalmente abreviado como IP dinámica).
Los sitios de Internet que por su naturaleza necesitan estar permanentemente conectados generalmente tienen una dirección IP fija(comúnmente, IP fija o IP estática). Esta no cambia con el tiempo. Los servidores de correo, DNS, FTP públicos y servidores de páginas web necesariamente deben contar con una dirección IP fija o estática, ya que de esta forma se permite su localización en la red.
Las computadoras se conectan entre sí mediante sus respectivas direcciones IP. Sin embargo, a los seres humanos nos es más cómodo utilizar otra notación más fácil de recordar, como los nombres de dominio; la traducción entre unos y otros se resuelve mediante los servidores de nombres de dominio DNS, que a su vez facilita el trabajo en caso de cambio de dirección IP, ya que basta con actualizar la información en el servidor DNS y el resto de las personas no se enterarán, ya que seguirán accediendo por el nombre de dominio.
El uso más habitual de Tor es aprovechar sus características para lograr cierto grado de privacidad en la navegación Web en internet. Sin estar especialmente diseñado para ello, pronto se descubrió que Tor también hace más difícil la labor de programas que intentan censurar o vigilar el acceso a cierto tipo de contenidos. Todo esto ha provocado que Tor sea muy usado en entornos en los que los comunicantes están especialmente motivados en proteger su identidad y el contenido de sus comunicaciones (por ejemplo, conflictos políticos, restricciones en la difusión y acceso a ciertos tipos de contenido, comunicación de información confidencial, etcétera.)
El enrutador anónimo no asegura el que la entidad origen sea desconocida para la entidad destino. Esto es debido a que los protocolos de nivel superior pueden transmitir información sobre la identidad. Por ejemplo un servicio web puede usar cookies o simplemente pedir que nos identifiquemos. Cuando queremos un anonimato a nivel de aplicación es bueno configurar el cliente adecuadamente y protegernos usando proxys que modifican los contenidos en este sentido. Por ejemplo para conseguir más privacidad cuando navegamos por la web es recomendable configurar el navegador adecuadamente (por ejemplo, deshabilitando cookies, no permitiendo plugins, java, Flash o Active X, o deshabilitando el historial) y redirigir el tráfico hacia un proxy web intermedio (Ej. privoxy o polipo) que nos filtre contenido que puede ser aprovechado para violar nuestra privacidad (por ejemplo, cookies o cabeceras HTTP que puedan ser usadas para identificar).
La red Tor cifra la información a su entrada y la descifra a la salida de dicha red (encaminamiento cebolla). Por tanto el propietario de un router de salida puede ver toda la información cuando es descifrada antes de llegar a Internet, por lo que aunque no pueda conocer el emisor sí que puede acceder a la información. Esta debilidad ha sido aprovechada por algunos atacantes. Por ejemplo Dan Egerstad, un sueco experto en seguridad informática, creó un servidor en la red Tor y controlando toda la información que salía por él hacia Internet, pudo conseguir contraseñas de importantes empresas, embajadas de todo el mundo y otras instituciones. Para paliar esta debilidad y asegurarnos de que nadie accede a la información que se está enviando, es recomendable usar un protocolo que provea cifrado al protocolo de aplicación como SSL). Por ejemplo para tráficos HTTP es recomendable usarlo sobre SSL (HTTPS).
Como hemos comentado Tor es usado principalmente para ocultar la identidad de los usuarios que utilizan servicios habituales de internet. Sin embargo también proporciona características que permiten la comunicación interactiva de entidades que quieren ocultar su identidad (mediante los llamados puntos de encuentro) y proveer servicios ocultando la identidad de la entidad que provee dicho servicio (mediante los llamados servicios ocultos).
INTERFAZ DE ENTRADA
Tor sólo permite anonimizar tráfico TCP. Las aplicaciones acceden a la red TOR a través del interfaz SOCKS lo cual significa que toda aplicación con soporte SOCKS puede usar TOR para realizar comunicaciones anónimas sin necesidad de modificaciones adicionales. El cliente Tor recibe tráfico SOCKS desde nuestras aplicaciones y luego, de forma transparente, se encarga de comunicarse con los routers de la red Tor para enviar las peticiones y posteriormente devolvernos los resultados.
SOCKS es un protocolo que facilita el enrutamiento de paquetes que se envían entre un cliente y un servidor a través de un servidor proxy. Según la pila de protocolos OSI está en el nivel 5 (sesión). Según la pila de protocolos IP está en la capa de aplicación. En los primeros intentos de usar encaminamiento de cebolla se requería un proxy de aplicación para cada protocolo de aplicación soportado. Esto conllevaba mucho trabajo y provocaba que algunos proxys no fueran escritos nunca y por tanto algunas aplicaciones nunca fueron soportadas. Tor usa SOCKS para, de un plumazo, soportar la mayoría de programas basados en TCP sin hacer ninguna modificación.
Observar que cuando navegamos por internet hacemos dos tipos de peticiones:
- Peticiones DNS para que el servidor de DNS que nos diga la dirección IP de una URL.
- Peticiones HTTP a las direcciones IP del servidor web que aloja la información.
Si no pasamos por Tor las búsquedas con DNS que hacen los navegadores, pueden ser un problema de privacidad ya que si las peticiones se mandan directamente a través de la red regular un atacante podría deducir qué sitios se están visitando a través de Tor ya que antes de navegar por ellos se pregunta por DNS que IP tienen. Por tanto es necesario redirigir el tráfico de DNS por la red Tor.
Algunas aplicaciones convierten directamente el tráfico del protocolo la capa de aplicación en tráfico SOCKS. Por ejemplo Firefox permite convertir tanto el tráfico DNS como el HTTP a SOCKS y enviárselo al cliente Tor. Otras aplicaciones necesitan redirigir el tráfico del protocolo de la capa de aplicación hacia un proxy que realice la conversión al protocolo SOCKS. Por ejemplo si tuvieramos un navegador que no permitiera el tráfico HTTP y DNS vía SOCKS podría usar privoxy para realizar esta tarea (y podríamos aprovechar para filtrar las peticiones HTTP). Si tenemos una aplicación genérica que no soporta SOCKS y queremos que su tráfico TCP se convierta a formato SOCKS para luego pasarlo al cliente Tor es necesario utilizar una aplicación adicional. En linux podríamos usar el comando torify (de ahí viene el término torificar). En Windows podríamos usar Freecap (Sofware libre), Sockscap o Torcap.
COMPONENTES
La red está formada por una serie de nodos que se comunican mediante el protocolo TLS sobre TCP/IP manteniendo así secreta e íntegra, sin modificaciones externas, la información desde un nodo a otro. Hay dos tipos de entidades:
- Nodos OR o simplemente OR (del inglés Onion Router): Funcionan como encaminadores y en algunos casos además como servidores de directorio (DNC) de una especie de servicio de mantenimiento. Los nodos OR mantienen una conexión TLS con cada uno de los otros OR. Las conexiones OR-OR no son nunca cerradas deliberadamente salvo cuando pasa cierto tiempo de inactividad. Cuando un OR comienza o recibe nueva información de directorio él intenta abrir nuevas conexiones a cualquier OR que no esté conectado.
- Nodos OP o simplemente OP (del inglés Onion Proxy): Los usuarios finales ejecutan un software local que hace la función de nodo OP y que su función es obtener información del servicio de directorio, establecer circuitos aleatorios a través de la red y manejar conexiones de aplicaciones del usuario. Los OP aceptan flujos TCP de aplicaciones de usuarios y las multiplexa a través de la red OR’s. Las conexiones OR-OP no son permanentes. Un OP debería cerrar una conexión a un OR si no hay circuitos ejecutándose sobre la conexión y ha vencido cierto temporizador.
SERVICIO DE DIRECTORIO
El servicio de directorio publica una base de datos que asocia a cada OR una serie de información (router descriptor). Esta información es accesible a todos los OR y a todos los usuarios finales y la usan para tener un conocimiento de la red. Si se tienen pocos servidores de directorio se corre el riesgo tener un punto cuyo fallo puede ocasionar el fallo del sistema completo. Por motivos de backup y de latencia los OR que dan el servicio de directorio mantienen duplicada la información pasándosela de unos a otros. Hay una serie de OR principales (autoridades de directorio) y luego hay otros secundarios que hacen de caches y backup (directory caches). Una lista de algunos servidores de directorio son distribuidos con TOR para facilitar la suscripción a la red (bootstrapping). Los servidores de directorio son en realidad un grupo establecido de ORs confiables. Para dar fiabilidad a la información que da el servicio de directorio las entradas son protegidas criptográficamente con firmas y sólo la información que proviene de ORs aprobados será publicada en la base de datos. Por tanto todo nodo nuevo tiene que ser previamente aprobado y de esta forma se evitan ataques en los que alguien añade muchos nodos no confiables. No hay sistema automático para aprobar OR’s; Los administradores del servidor de directorio lo hace manualmente.
- Cuando un OR se arranca, recolecta un conjunto de datos que lo describen a él, a su modo de funcionamiento y capacidades. Ejemplos de este tipo de atributos son la dirección IP, nombre amigable para el usuario, versión del software TOR, sistema operativo, clave pública, exit policies (restricciones a cómo puede funcionar el nodo si es el último nodo de un circuito de datos Ej: definir una lista de direcciones IP y número de puertos a los cuales está dispuesto llevar el tráfico. Observar que usando esto se puede hacer que un nodo no pueda actuar como último nodo de un circuito nunca). Toda esta información se publica a través del servicio de directorio.
ESQUEMA BÁSICO
El funcionamiento a grandes rasgos es el siguiente:
- A partir de la información obtenida de su configuración y del servicio de directorio el OP decide un circuito por el que van a circular los paquetes. Por defecto el circuito tienen 3 nodos OR.
- El OP negocia, usando un enfoque telescópico, las claves de cifrado necesarias con cada OR del circuito para proteger sus datos en todo el camino antes de realizar transmisión alguna. La obtención de las claves simétricas (AES-128), una para cada sentido de comunicación (Kf<- forward key, Kb<-backward key), se realiza a partir del protocolo de establecimiento de claves Diffie-Hellman para obtener una clave compartida y a partir de ella derivar las dos claves simétricas El circuito es construido desde el punto de entrada (usuario) de la siguiente forma.
- Los mensajes para negociar las claves de la comunicación entre ORn y ORn+1 se realizadas a petición del OP y retransmitiendo paquetes a través de los nodos OR1,… ORn. En cada paso los mensajes son cifrados con las claves de sesión negociadas, o cuando no lo están, con la clave de cebolla del host que recibe el dato
- A continuación cifra el paquete que contiene la clave para el último OR del circuito.
- A continuación hace lo propio del penúltimo
- Hace lo mismo con todos los nodos hasta hacer lo propio con el paquete para el primer nodo.
- Envía el paquete resultante al primer nodo del circuito. Observar que el paquete construido con este proceso se puede considerar como un paquete envuelto en varias capas de cifrado. Por eso se usa la metáfora de la cebolla para describir este tipo de método de encaminamiento (encaminamiento de cebolla).
- El primer OR quita ‘su’ capa de la cebolla y envía el paquete al siguiente nodo
- Según va llegando el paquete a cada OR éste pela la capa externa. De esta forma ningún OR puede hacerse con la imagen completa del circuito ya que sólo conoce los OR/OP anterior y posterior.
Como terminología se llama ‘exit server’ o ‘exit node’ al último servidor del circuito (y por tanto el único que se comunica con el destino), el primer OR se le llama ‘entry node’ (único que se comunica con el origen de la comunicación) y al resto de nodos se les llama middle-node.
Podemos observar que la forma en la que se establecen las claves y todas estas capas de cebolla que se construyen con ellas permiten que la información permanezca secreta mientras va circulando por el circuito de nodos OR. Además, al estar el cifrado de las capas basado en claves de sesión, aunque un atacante recopilara todos los mensajes no podría descifrarlos una vez que estas claves de sesión son descartadas por el OR (perfect forward secrecy)).
PUNTOS DE ENCUENTRO
La idea de los puntos de encuentro, denominados por las siglas RP (del inglés Rendezvous Points), es, en lugar de explícitamente enviar un paquete a un destino, establecer un punto de encuentro que actúe como nivel de indirección. De esta forma desacoplamos el acto de enviar del acto de recibir. Cada extremo de la comunicación envía sus mensajes a ese punto de encuentro y desde ahí son enviados a donde corresponda usando circuitos que esconden la localización del destino. Por ejemplo podríamos usar este sistema para conectarnos a un servidor de chat IRC.
SERVICIOS OCULTOS
Los servicios que ocultan la localización (por ejemplo, la dirección IP) de quien provee el servicio (Ej. un servicio web accesible sólo desde la red de encaminamiento de cebolla) se les suele llamar servicios de localización oculta (en inglés location-hidden services) o simplemente servicios ocultos en inglés hidden services).
Para soportar esta funcionalidad los proveedores de servicios generan una clave pública y privada para identificar su servicio. A continuación anuncian su servicio a distintos routers, haciendo peticiones firmadas con su clave pública, para que sirvan como punto de contacto. A los routers con esta función se les llama puntos de introducción, en inglés introduction point. El proveedor de servicio asocia a su servicio una FQDN del pseudo . tld onion y la publica en un servidor de directorio. La FQDN tiene la forma “valorhash” onion donde el valor hash es de 16 caracteres en Base 32 y está generado usando una función hash sobre la clave pública del servicio.
Cuando un cliente se quiere conectar a cierta FQDN (por ejemplo ha encontrado la dirección a través de un sitio web) consulta un servicio de búsqueda (lookup service) y este le indica un punto de introducción (introduction point) y la clave pública del servicio. Observar que para mantener el anonimato es necesario que la consulta del servicio de búsqueda se realice a través de Tor. A continuación el cliente se conecta con un punto de encuentro (esto lo podría haber hecho antes) y se establece un identificador de esa conexión (rendezvous cookie). A continuación el cliente le envía un mensaje, firmado con la clave pública del servidor, al punto de introducción indicándole el punto de encuentro donde está, el identificador que permita identificar al cliente en el punto de encuentro(la rendezvous cookie) y parte del protocolo Diffie – Hellman ((start of a DH handshake). A continuación el punto de introducción envía el mensaje al servidor del servicio el cual determina si se conecta al punto de encuentro para proveerle el servicio o no. Si determina que quiere conectarse con él entonces se conecta al punto de encuentro y le indica a este el identificador del cliente con el que quiere conectarse (la rendezvous cookie), la segunda parte del Diffie – Hellman (the second half of the DH handshake) y un hash de la clave que comparten. A continuación el punto de encuentro conecta a el cliente y el servidor y se establece una comunicación normal
Bibliografía
- Tor Protocol Specification – Roger Dingledine, Nick Mathewson
- Tor:Design e Simulaziones – Carmelo Badalamenti
- Anonimato in Rete – Diodato Ferraioli, Enrico Rossomando
- Sitio Web oficial del proyecto Tor (en inglés)
- Traducción Dr. Roberto Donoso.
La DEPWEP Vinculada al Proyecto TOR pareciera que las policías internacionales no la tienen contralada y/o al menos estamos frente de un desafío gigante ante la red corruptiva a nivel mundial.