Tor

From FdIwiki ELP
Jump to: navigation, search
TOR
Tor-logo-2011.png
Información general
página principal https://www.torproject.org
Desarrollador(es) El Proyecto Tor
Lanzamiento Inicial 2001
Última versión 7.0.2
Sistema operativo Multiplataforma
Licencias BSD

Tor, de las siglas "The Onion Router" (encaminamiento de cebolla), es un software libre que permite la comunicación de manera anónima en Internet redirigiendo el tráfico a través de una red virtual compuesta por más de siete mil nodos, gracias a un conjunto de organizaciones e individuos que donan su ancho de banda y poder de procesamiento. El objetivo es permitir que los usuarios puedan usar Internet sin revelar su dirección de IP ni el contenido de la información de que buscan o comparten.

Para conseguir este objetivo se propuso el uso del encaminamiento de cebolla [1], protocolo de red diseñado por David M. Goldshlag, Michael Reed y Paul Syverson, que encripta los mensajes originales por capas (como las de una cebolla) y que hace que los mensajes viajen desde el origen a su destino a través de una serie de nodos que se encargan de decodificar parte del mismo, revelando el siguiente nodo al que hay que mandar la información encriptada, hasta que llega al último nodo que se encarga de decodificar por completo el resto del mensaje y así poder enviar la información original al destinatario, sin revelar, o incluso conocer, la IP de origen.

Introducción

Historia

A mediados de la década de los 90 los matemáticos David M. Goldshlag, Michael Reed y Paul Syverson crearon el protocolo de enrutamiento de cebolla como proyecto para marina estadounidense, con el objetivo de proteger las comunicaciones de inteligencia de Estados Unidos.

Syverson fue más allá y el 20 de septiembre de 2002 lanzó una versión alpha [2] de Tor, junto con los científicos Roger Dingledine y Nick Mathewson [3], al que llamaron "The Onion Routing Project", más conocido como "TOR Project".

Un año después de esta versión alpha, el 8 de octubre de 2003, se lanzó la primera versión pública de Tor [4] y el 13 de agosto de 2004 Syverson, Dingledine y Mathewson presentaron la llamada Segunda Generación del Onion Routing [5]. Además, fue en 2004 cuando el Naval Research Laboratory liberó el código de Tor como licencia libre.

En 2006 Dingledine, Mathewson y otras 5 personas fundaron The Tor Project [6], una organización sin ánimo de lucro orientada a la investigación y que es la responsable del mantenimiento de Tor.

En marzo de 2011 recibió el premio de la Free Software Fundation para proyectos de beneficio social al haber permitido que, aproximadamente, 36 millones de personas en todo el mundo experimentaran libertad de acceso y expresión en Internet manteniendo su privacidad y anonimato.

Objetivo y usos

Para más información visitar el artículo Red_Tor_y_Deep_Web

Tor busca conseguir el anonimato en la red, permitiendo a los usuarios navegar, chatear y mandar mensajes instantáneos sin conocer la dirección IP de los participantes. El problema que encuentra Tor es que, debido a la gran variedad de usuarios que la utilizan, sus usos son tanto lícitos como ilícitos.

Por ejemplo, Tor es usado por empresas criminales, hacktivismo, pornografía infantil y tráfico de drogas o armas[7]. The Tor Project se defiende de este uso ilegal alegando que su objetivo de anonimato en la red busca ayudar a gente normal que se preocupa por su privacidad, el ciber-espionaje o que busca evadir las censuras de su país de origen.

¿Quiénes donan su ancho de banda?

Es donado sin ánimo de lucro por un conjunto de organizaciones e individuos. Desde 2006 ha habido más de 4300 donaciones individuales y se calcula que hay alrededor de 6000 ordenadores de voluntarios vinculados en la red Tor, que hacen las funciones de routers OR y Servicios de directorio.

Desde que se inició el proyecto Tor ha habido varias organizaciones que han financiado este proyecto, actualmente son las siguientes:

  • SRI International
  • US Department of State Bureau of Democracy, Human Rights, and Labor
  • National Science Foundation (junto con el Instituto de Tecnología de Georgia y la Universidad de Princeton)
  • Radio Free Asia
  • Un ISP anónimo de América del Norte
  • Fundación Ford
  • Google Summer of Code

Aplicaciones

Navegador Tor

El Navegador de Tor, conocido anteriormente como Tor Browser Bundle (TBB)[8] es la piedra angular de Tor Project. Se trata de una versión modificada del navegador de Mozilla Firefox ESR al que se le han incluido las extensiones TorButton[9], TorLauncher, NoScript[10] y HTTPS Everywhere[11], además de Tor Proxy. Es compatible con los sistemas operativos de Windows, macOS y Linux[12]

Tor Messenger

El 29 de octubre de 2015 se lanzó Tor Messenger Beta[13], una aplicación de mensajería instantánea basada en Instantbird[14], que permite la comunicación entre usuarios de forma anónima

Aplicaciones de terceros

Vuze[15], BitTorrent, Bitmessage[16] y TorChat[17] son algunas de las cuáles incluyen soporte para Tor.

Funcionamiento

Htw1.png
Htw2.png
Htw3.png

La red Tor funciona de la siguiente manera:

  • 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 tiene 3 nodos OR.
  • El OP negocia, , 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 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 algoritmo de Diffie-Hellman funciona de la siguiente manera:

Para dos partes Alice y Bob que intentan establecer una clave secreta y un adversario Mallory, la versión básica es como sigue:

1. Se establecen un primo p y un generador g∈Zp (2 ). Estos son públicos, conocidos no solo por las partes Alice y Bob sino también por el adversario Mallory.

2. Alice escoge a∈Zp−1 al azar, calcula A=g^amodp, y envía A a Bob.

3. Bob escoge b∈Zp−1 al azar, calcula B=g^bmodp, y envía B a Alice.

4. Ambos saben el valor de K que es el que usan para cifrar y descifrar.

  • A continuación cifra el paquete con 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 la de primer nodo.
  • Envía el paquete resultante al primer nodo del circuito. El paquete enviado queda envuelto en capas, cada una con la clave de uno de los nodos OR, de ahí en nombre de 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.

Componentes

La red está formada por una serie de nodos que se comunican mediante el protocolo TLS que es un protocolo de cifrado sobre TCP/IP que es el protocolo con el que funciona Internet. Hay dos tipos de entidades:

Nodos OR o simplemente OR: funcionan como encaminadores y en algunos casos además como servidores de directorio. 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.

Nodos OP o simplemente OP: 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. Funciona como software local con el que el usuario se comunica. 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.

Servicios de Directorio

Un servicio de directorio (SD) es una aplicación o un conjunto de aplicaciones que almacena y organiza la información sobre los usuarios de una red. En el caso de Tor el servicio de directorio publica una base de datos que asocia a cada OR una serie de información. 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. Los servidores de directorio son en realidad un grupo establecido de ORs confiables.

Células

Una vez que se establece la conexión TLS, las entidades se envían paquetes de información estructurada llamadas células. Su formato es el siguiente:

  • circID.- Es el identificador de circuito y especifica el circuito a el que se refiere la célula. Cada circuito tiene un un CircId distinto para cada OR y OP del circuito.
  • CMD.- Indica el comando que especifica el significado de la célula. Atendiendo al tipo de comando (valor de CMD) hay 2 tipos de células: Células de control y Células de transmisión.

Células de control Las células de control (en inglés control cell) son siempre interpretadas por el nodo que las recibe y permiten controlar la comunicación. Comandos que tienen estas células:

  • CREATE : para crear circuito
  • CREATED : para indicar que se ha cerrado el circuito
  • DESTROY : destruir circuito
  • CREATE_FAST : para crear un circuito reaprovechando operaciones de clave pública existentes)
  • CREATED_FAST : para indicar que se ha creado el circuito de una manera rápida

Células de transmisión Las células de transmisión son usadas para la comunicación entre el OP y cualquiera de los OR del circuito, normalmente el exit node. En este tipo de células el formato tiene campos que forman parte de la carga útil (PAYLOAD):

  • Relay command.- El el subcomando RELAY que indica el funcionamiento de la celda.
Hay tres tipos de subcomandos relay:
  • forward: son enviados desde el OP origen del circuito.
  • backward: son enviados desde los OR del circuito al OP origen.
  • ambos: pueden funcionar como forward o como backward.
Posibles subcomandos:
  • RELAY_BEGIN: de tipo forward.
  • RELAY_DATA: de tipo forward o backward.
  • RELAY_END: de tipo forward o backward.
  • RELAY_CONNECTED (código 4): de tipo backward.
  • RELAY_SENDME: de tipo forward o backward. A veces se usa para funciones de control (streamID=0).
  • RELAY_EXTEND: de tipo forward. Se usa para funciones de control (como veremos streamID=0).
  • RELAY_EXTENDED: de tipo backward. Se usa para funciones de control (streamID=0).
  • RELAY_TRUNCATE: de tipo forward. Se usa para funciones de control (streamID=0).
  • RELAY_TRUNCATED: de tipo backward. Se usa para funciones de control (streamID=0).
  • RELAY_DROP: de tipo forward o backward. Se usa para funciones de control (streamID=0).
  • RELAY_RESOLVE: de tipo forward.
  • RELAY_RESOLVED: de tipo backward.
  • RELAY_BEGIN_DIR: de tipo forward.
  • Recognized: campo que junto con el campo digest permite identificar si la celda es para ser procesada localmente.
  • StreamID: es el identificador de flujo. De esta forma se permite que varios flujos puedan ser multiplexados en un solo circuito. Este campo permite identificar el stream al que nos referimos entre los múltiples streams del circuito. Es seleccionado por el OP y permite al OP y al exit node distinguir entre múltiples streams en un circuito. Las células que afectan al circuito entero en lugar de a un streamID particular tienen este campo a 0 y se pueden considerar como de control.
  • Digest.- Permite el control de integridad extremo a extremo (end-to-end integrity checking). Contiene los primeros cuatro bytes de ejecutar SHA-1 sobre TODOS los bytes de células relay que han sido enviados a este nodo del circuito o originados desde este nodo del circuito (sólo conocidos por el origen y el destino ya que van cifrados.
  • length.- Indica el número de bytes del campo DATA que contiene carga útil real. El resto del campo irá rellenado por bytes a NULL.

Una célula se considera completamente descifrada si el campo Recognized está a ceros y el campo Digest es el primero de los 4 bytes resultado de ejecutar la función de digest de todos los bytes 'destinados a' o 'originados desde' este salto del circuito. Si una celda no está completamente descifrada se pasa al siguiente salto del circuito. Si la célula se ha comprobado que está completamente descifrada pero el comando de la célula no se entiende la célula será borrada e ignorada pero su contenido todavía cuenta respecto a los digests. Observar que el campo Recognized permite, de una forma muy rápida, descartar ciertas células como candidatas a estar completamente descifradas.

La diferencia principal entre las células de control y las de transmisión es que las primeras pueden ser leídas por cualquiera mientras que las segundas solo por un nodo concreto. Por ejemplo cuando se envía una célula destroy el OP la envía al primer OR este la recibe, cierra todos los flujos y la manda al siguiente. Así hasta llegar al final. Para células de transmisión el OP asigna el digest y después encripta la célula con cada una de las claves de los nodos OR. Como el digest está encriptado con distintos valores en cada paso solo el nodo objetivo podrá recibir el valor adecuado y por tanto hacer la función que le indique la célula. Cuando un nodo OR recibe una célula comprueba si al desencriptar la célula con su clave da un código correcto de digest, sino es así comprueba el siguiente nodo, cambia el valor de CircID de la célula por el del siguiente nodo.

IRC de Tor

Actualmente existe un canal IRC de Tor donde muchos usuarios se conectan para tratar problemas y contar al resto los avances y mejoras que se van consiguiendo en la red [18] el canal es #tor-dev


Mantener la privacidad

En el navegador Tor, se avisa que la utilización del mismo no es lo único que se necesita para mantener la privacidad en Internet, sino que hay que cambiar diferentes hábitos de navegación para conseguirlos:

1. Usar el navegador Tor:

Tor no te protege de todo el tráfico en internet que genere tu ordenador cuando lo utilizas. Sólo protege las aplicaciones que están correctamente configuradas para desviar su tráfico a través de Tor. Para evitar problemas con la configuración de Tor, recomendamos no usar dicho navegador. Esta pre-configurado para proteger tu privacidad y anonimato en la web siempre que hagas esta tarea a través del mismo Navegador Tor. Casi todas las configuraciones de los demás navegadores son inseguras para utilizar con Tor.

2. No utilizar Torrent en Tor:

Las aplicaciones de compartición de archivos mediante Torrent ignoran las configuraciones proxy y hacen conexiones directas incluso si se está utilizando Tor. Incluso si tu aplicación Torrent se conecta solo a través de Tor, solo mandaras tu dirección IP real cuando el tracker haga una petición GET, porque así es cómo funcionan los Torrent. No solamente hará que pierdas en anonimato en tu navegación, sino que vulnerarás el de toda la red Tor.

3. No permitas instalar plugins en el navegador:

El navegador Tor bloqueará los plugins como Flash, RealPlayer, Quicktime, y otros: pueden ser manipulados para revelar tu dirección IP. De manera similar, tampoco se recomienda instalar otros addons por la misma razón: pueden dañar el anonimato y la privacidad del usuario.

4. Usar las versiones HTTPS de las páginas:

Tor encriptará tu trafico dentro de la red Tor, pero la encriptación del tráfico para el destino final depende de la web que lo reciba. Para ayudar a la correcta encriptación, el navegador Tor incluye HTTPS Everywhere para forzar el uso de encriptación HTTPS en la mayoría de webs que lo soporte. Sin embargo, deberás observar la URL del navegador para asegurar que la web a la que estas proporcionando información muestre un botón en la barra de direcciones de color azul o verde, incluya https:// en la dirección, y muestre el nombre esperado de la web correctamente. Se recomienda mirar la página interactiva de la EFFS donde explica cómo se relacionan Tor y HTTPS.

5. No abrir documentos descargados de Tor mientras se está online:

El navegador Tor te avisará antes de abrir automáticamente documentos en aplicaciones externas. NO IGNORES ESTE AVISO. Deberás ser muy cuidadoso cuando descargues documentos vía Tor (especialmente archivos DOC y PDF) ya que pueden contener fuentes de internet que pueden descargar fuera de Tor por la aplicación que las abra. Esto revelara tu verdadera IP. Si debes trabajar con dichos documentos, te recomendamos utilizarlos cuando no se tenga conexión a internet, descargar Virtual Box, y utilizarlos a través de una máquina virtual con la conexión de red deshabilitada. Bajo ninguna circunstancia es seguro utilizar BitTorrent y Tor, tampoco.

6. Usar puentes and/or Find Company

Tor intenta prevenir a los atacantes de conocer cuáles son a las webs que te conectas. Sin embargo, por defecto, no previene que alguien este observando tu tráfico de Internet para ver que estás utilizando Tor. Si esto te importa, puedes reducir este riesgo configurando Tor para que use un "puente Tor" en vez de conectarse directamente a la red Tor. Por último, la mejor protección es un acercamiento social: cuantos más usuarios Tor haya cerca de ti y más diversos sean sus intereses, menos peligroso será que se sepa que se es uno de ellos. ¡Convence a más gente para que use Tor!

Referencias

  1. [1] Web oficial Onion Routing
  2. [2] Web archivada del lanzamiento de la versión Alpha de Tor
  3. [3] Almost Everyone Involved in Developing Tor was (or is) Funded by the US Government
  4. [4] Web archivada de la primera versión pública de Tor
  5. [5] Tor: The Second-Generation Onion Router
  6. [6] Web oficial de Tor Project
  7. [7] Study Claims Dark Web Sites Are Most Commonly Used for Crime
  8. [8] Web archivada de Tor Browser Bundle
  9. [9] ¿Qué es TorButton?
  10. [10] Web oficial NoScript
  11. [11] Web oficial HTTPS Everywhere
  12. [12] The Design and Implementation of the Tor Browser
  13. [13] Tor Messenger Beta: Chat over Tor, Easily
  14. [14] Wikipedia: Instantbird
  15. [15] Web oficial Vuze
  16. [16] Web oficial BitMessage
  17. [17] GitHub de TorChat