Diferencia entre revisiones de «Tor»

De FdIwiki ELP
Saltar a: navegación, buscar
m (Danruiz movió la página RedTor a Red Tor (Funcionamiento))
(Células)
(No se muestran 23 ediciones intermedias de 8 usuarios)
Línea 1: Línea 1:
TOR (The Onion Router), también conocida como la Darknet o DeepWeb es 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.
+
{| border="0" class="infobox" style="width:350px; line-height: 2em; text-align:left; padding:.23em;border: 1px solid #B4BBC8;background-color: #f9f9f9;color: #000;margin: .5em 0 .7em 1.2em;padding: .4em;clear: right;float: right;font-size: 90%;line-height: 1.5em;"
En la red Tor los mensajes viajan desde el origen al destino a través de una serie de routers especiales llamados 'routers de cebolla' (en inglés onion routers)
+
|+ align="center" style="background:DarkSlateBlue; color:white"|<big>'''TOR'''</big>
La red Tor es posible gracias a un conjunto de organizaciones e individuos que donan su ancho de banda y poder de procesamiento.
+
! colspan="2" align="center"| [[Archivo:Tor-logo-2011.png|400px|right]]
 +
|-
 +
|-
 +
|colspan="2" style="text-align:center;background-color:#DCEAEC;" | 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]]''' || [[Licencia BSD |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.
  
== Objetivo ==
+
Para conseguir este objetivo se propuso el uso del encaminamiento de cebolla <ref>[https://www.onion-router.net/] Web oficial Onion Routing</ref>, 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.
El objetivo principal de Tor  es conseguir que internet pueda usarse de forma anónima  de manera 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)
+
La red Tor cifra la información a su entrada y la descifra a la salida de dicha red. 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
+
  
== Componentes ==
+
== Introducción ==
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:
+
=== Historia ===
  
• '''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
+
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.
  
• '''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
+
Syverson fue más allá y el 20 de septiembre de 2002 lanzó una versión alpha <ref>[http://archives.seul.org/or/dev/Sep-2002/msg00019.html] Web archivada del lanzamiento de la versión Alpha de Tor</ref> de Tor, junto con los científicos Roger Dingledine y Nick Mathewson <ref>[https://pando.com/2014/07/16/tor-spooks/] ''Almost Everyone Involved in Developing Tor was (or is) Funded by the US Government''</ref>, al que llamaron "The Onion Routing Project", más conocido como "TOR Project".
  
== Servicios de Directorio ==
+
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 <ref>[https://lists.torproject.org/pipermail/tor-dev/2003-October/002185.html] Web archivada de la primera versión pública de Tor</ref> y el 13 de agosto de 2004 Syverson, Dingledine y Mathewson presentaron la llamada ''Segunda Generación del Onion Routing'' <ref>[https://www.usenix.org/legacy/events/sec04/tech/dingledine.html] ''Tor: The Second-Generation Onion Router''</ref>. Además, fue en 2004 cuando el ''Naval Research Laboratory'' liberó el código de Tor como licencia libre.
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. dirección IP, nombre amigable para el usuario, versión del software TOR, sistema operativo, clave pública,
+
En 2006 Dingledine, Mathewson y otras 5 personas fundaron The Tor Project <ref>[https://www.torproject.org/] Web oficial de Tor Project</ref>, una organización sin ánimo de lucro orientada a la investigación y que es la responsable del mantenimiento de Tor.
Los servidores de directorio son en realidad un grupo establecido de ORs confiables.  
+
 
 +
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<ref>[https://motherboard.vice.com/en_us/article/3daqxb/study-claims-dark-web-sites-are-most-commonly-used-for-crime] ''Study Claims Dark Web Sites Are Most Commonly Used for Crime''</ref>. 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)<ref>[http://web.archive.org/web/20140623203436/https://www.torproject.org/projects/torbrowser.html.en] Web archivada de Tor Browser Bundle</ref> 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<ref>[https://www.torproject.org/docs/torbutton/] ¿Qué es TorButton?</ref>, TorLauncher, NoScript<ref>[https://noscript.net/] Web oficial NoScript</ref> y HTTPS Everywhere<ref>[https://www.eff.org/es/https-everywhere] Web oficial HTTPS Everywhere</ref>, además de Tor Proxy. Es compatible con los sistemas operativos de Windows, macOS y Linux<ref>[https://www.torproject.org/projects/torbrowser/design/] ''The Design and Implementation of the Tor Browser''</ref>
 +
 
 +
=== [https://gitweb.torproject.org/tor-messenger-build.git Tor Messenger] ===
 +
 
 +
El 29 de octubre de 2015 se lanzó Tor Messenger Beta<ref>[https://blog.torproject.org/blog/tor-messenger-beta-chat-over-tor-easily] ''Tor Messenger Beta: Chat over Tor, Easily''</ref>, una aplicación de mensajería instantánea basada en Instantbird<ref>[https://en.wikipedia.org/wiki/Instantbird] Wikipedia: Instantbird</ref>, que permite la comunicación entre usuarios de forma anónima
 +
 
 +
=== Aplicaciones de terceros ===
 +
 
 +
Vuze<ref>[https://www.vuze.com/] Web oficial Vuze</ref>, BitTorrent, Bitmessage<ref>[https://bitmessage.org/wiki/Main_Page] Web oficial BitMessage</ref> y TorChat<ref>[https://github.com/prof7bit/TorChat] GitHub de TorChat</ref> son algunas de las cuáles incluyen soporte para Tor.
  
 
== Funcionamiento ==
 
== Funcionamiento ==
 +
[[Archivo:Htw1.png|300px|right]]
 +
[[Archivo:Htw2.png|300px|right]]
 +
[[Archivo:Htw3.png|300px|right]]
 
La red Tor funciona de la siguiente manera:
 
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 tienen 3 nodos OR.
+
* 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 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.
+
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:
 
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.
+
'''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.
 
'''2.''' Alice escoge a∈Zp−1 al azar, calcula A=g^amodp, y envía A a Bob.
Línea 38: Línea 102:
 
'''4.''' Ambos saben el valor de K que es el que usan para cifrar y descifrar.
 
'''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 cifra el paquete con la clave para el último OR del circuito.
  
 
* A continuación hace lo propio del penúltimo.
 
* A continuación hace lo propio del penúltimo.
Línea 50: Línea 114:
 
* 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.
 
* 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.
  
== Células ==
+
=== Componentes ===
Una vez que se establece la conexión TLS, las entidades se envían paquetes de información estructurada llamadas células. Formato:
+
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:
  
    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
+
'''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.
  
    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
+
'''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.
 +
<!--  dirección IP, nombre amigable para el usuario, versión del software TOR, sistema operativo, clave pública, -->
 +
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'''
 
'''Células de control'''
Línea 61: Línea 138:
 
Comandos que tienen estas células:
 
Comandos que tienen estas células:
  
•   CREATE :Para crear circuito
+
*CREATE : para crear circuito
  
•   CREATED :Para indicar que se ha cerrado el circuito
+
*CREATED : para indicar que se ha cerrado el circuito
  
•   DESTROY :Destruir circuito
+
*DESTROY : destruir circuito
  
•   CREATE_FAST :Para crear un circuito reaprovechando operaciones de clave pública existentes)
+
*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
+
*CREATED_FAST : para indicar que se ha creado el circuito de una manera rápida
  
 
'''Células de transmisión'''
 
'''Células de transmisión'''
Línea 76: Línea 153:
  
 
* Relay command.- El el subcomando RELAY que indica el funcionamiento de la celda.
 
* Relay command.- El el subcomando RELAY que indica el funcionamiento de la celda.
Hay tres tipos de subcomandos relay:
+
: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.
  
• forward: Son enviados desde el OP origen del circuito
+
::*RELAY_DATA: de tipo forward o backward.
  
• backward: Son enviados desde los OR del circuito al OP origen
+
::*RELAY_END: de tipo forward o backward.
  
• ambos: Pueden funcionar como forward o como backward
+
::*RELAY_CONNECTED (código 4): de tipo backward.
  
Posibles subcomandos:
+
::*RELAY_SENDME: de tipo forward o backward. A veces se usa para funciones de control (streamID=0).
  
• RELAY_BEGIN De tipo forward
+
::*RELAY_EXTEND: de tipo forward. Se usa para funciones de control (como veremos streamID=0).
  
• RELAY_DATA De tipo forward o backward
+
::*RELAY_EXTENDED: de tipo backward. Se usa para funciones de control (streamID=0).
  
• RELAY_END De tipo forward o backward.  
+
::*RELAY_TRUNCATE: de tipo forward. Se usa para funciones de control (streamID=0).
  
• RELAY_CONNECTED (código 4).- De tipo backward
+
::*RELAY_TRUNCATED: de tipo backward. Se usa para funciones de control (streamID=0).
  
• RELAY_SENDME De tipo forward o backward. A veces se usa para funciones de control (streamID=0)
+
::*RELAY_DROP: de tipo forward o backward. Se usa para funciones de control (streamID=0).
  
• RELAY_EXTEND De tipo forward. Se usa para funciones de control (como veremos streamID=0)
+
::*RELAY_RESOLVE: de tipo forward.
  
• RELAY_EXTENDED De tipo backward. Se usa para funciones de control (streamID=0)
+
::*RELAY_RESOLVED: de tipo backward.
  
• RELAY_TRUNCATE De tipo forward. Se usa para funciones de control (streamID=0)
+
::*RELAY_BEGIN_DIR: de tipo forward.
  
• RELAY_TRUNCATED De tipo backward. Se usa para funciones de control (streamID=0)
+
* 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.
  
• RELAY_DROP De tipo forward o backward. Se usa para funciones de control (streamID=0)
+
* 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.
  
• RELAY_RESOLVE De tipo forward
+
* 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.
 
+
• 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 NUL
+
 
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.
 
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 transimisión es que las primeras pueden ser leidas por cualquiera mientras que las segundas solo por un nodo concreto. Por ejemplo cuando se envía una celula 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
+
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 celularelay el OP asigna el digest y después encripta la celula con cada una de las claves delos nodos OR. Como el digest esta 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 celula
+
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 celula comprueba si al dessencriptar la celula con su clave da un código correcto de digest, sino es asi comprueba el siguiente nodo, cambia el valor de CircID de la celula por el del siguiente nodo
+
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==
 
==IRC de Tor==
Línea 129: Línea 201:
 
[https://webchat.oftc.net/]
 
[https://webchat.oftc.net/]
 
el canal es #tor-dev
 
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 ==
 +
{{listaref}}
 +
*Cuestionarios: [[Trabajo:_La_Red_Tor]]
 +
*Trabajo de clase sobre la red Tor: [[Archivo:TorCharoRoberto.pdf]]

Revisión de 14:05 9 jul 2017

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