fbpx
Wikipedia

Encaminamiento cebolla

El encaminamiento cebolla o enrutamiento cebolla,[1]​ en inglés onion routing, fue introducido por David M. Goldshlag, Michael Reed y Paul Syverson[2]​ aplicando las ideas de las redes de mezclado de David Chaum a los sistemas de encaminamiento, para conseguir redes que preserven la privacidad (tanto del mensaje en si como de los interlocutores) de forma transparente a las entidades que se comunican. De esta forma podemos tener infraestructuras para comunicaciones privadas sobre una red pública.

Con este sistema las comunicaciones pueden ser bidireccionales, casi en tiempo real y pueden ser usadas para tráfico orientado a conexión o no.

A las redes que utilizan esta forma de encaminamiento se las llama redes cebolla (en inglés onion networks). Ejemplos de este tipo de redes, algunas de las cuales nunca han sido implementadas, son Freedom Network, Onion Routing, MixMaster, Babel, Mixminion, Zach Brown's Onion, PipeNet, IronKey, MorphMix, Tarzan y Tor, la más importante red que usa esta tecnología y que actualmente está desplegada en internet.

Objetivo

El objetivo principal para el que se diseñó el encaminamiento cebolla es separar la identificación del enrutado de los mensajes y por tanto perseguir el enrutado anónimo (en inglés anonymous routing). Para enrutar no es necesario tener en todo momento identificado tanto el origen como el destino de la comunicación. Cuando hablamos de 'identidad' nos referimos a cualquier datos que ayude identificar a un individuo. Por ejemplo la dirección IP ayuda a identificar ya que a través de ella se puede obtener información como el usuario particular u organización a la que estaba asignada esa IP en ese momento o el país desde el que se envía el mensaje.[3]

Para tener una buena protección de la identidad de los interlocutores, es necesario que la ruta de nodos por los que pasa el mensaje para ir desde el origen al destino, sea impredecible a priori y se oculte todo lo posible. Por esta razón se persigue que cada entidad solo conozca la entidad desde la que recibe el mensaje y la entidad a la que tiene que enviar el mensaje. Esto se puede aplicar no solo a los nodos enrutado sino también a las propias entidades que se comunican. El destino no tiene que saber la identidad del que se quiere comunicar con él. El origen de la comunicación puede no saber la identidad de la entidad con la que se quiere comunicar, son los definidos como servicios ocultos (en inglés hidden services). Los servicios ocultos no son soportados por la mayoría de sistemas de encaminamiento de cebolla. Sin embargo sí hay sistemas que los soportan como Tor.

Observar que para ocultar la ruta no es necesario confiar en todos los nodos de la ruta, teóricamente (si los nodos tuvieran un comportamiento ideal) con que hubiera un solo nodo confiable no comprometido, la privacidad de los interlocutores estaría garantizada debido a que sería imposible establecer correspondencia entre los mensajes que le llegan y los que salen de él.

Para que sea efectiva la protección de la identidad es necesario que se preserve la confidencialidad de la propia información que el origen quiere enviar al destino. Si no se hiciera, un simple análisis de tráfico podría identificar cual es el recorrido que hace cada mensaje desde el origen al destino.

Observar que el enrutado 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 (ej. deshabilitando cookies, no permitiendo plugins Java 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 (ej. cookies o cabeceras HTTP que puedan ser usadas para identificar).[3]

Implementación

 
Estructura de la transmisión de los datos con encaminamiento cebolla.

El encaminamiento cebolla aprovecha la idea de Chaum de esconder la relación entre el origen y el destino de una información encapsulando los mensajes en capas de criptografía de clave pública. Aplicando esta idea para implementar un modo de encaminamiento, lo que hacemos es transmitir mensajes con distintas capas de cifrado (por ese ligero parecido resultante y coincidente con ese interior enrollado del bulbo con un diagrama de la explicación de su viaje, a éstas redes se les conoce como 'de cebolla') sobre un camino compuesto por nodos de mezclado (mixes) convertidos ahora en routers (enrutador de cebolla) donde cada enrutador del camino lo que hace es descifrar ('pela' una capa de la cebolla), transmitir y reordenar los mensajes antes de transmitir al siguiente enrutador.

Cuando un enrutador descifra una capa obtiene una cabecera que puede interpretar y un fragmento cifrado (siguiente capa de la cebolla). A continuación el enrutador envía el fragmento cifrado al próximo salto de acuerdo al contenido de la cabecera y el estado interno del propio enrutador.

Idea primigenia

En el encaminamiento cebolla se persigue que cada nodo intermedio (enrutador) conozca solo lo que es estrictamente necesario: La dirección de la entidad que le envía el mensaje y la dirección a la que tiene que redirigir el mensaje. Los mensajes que se intercambian los routers no tienen que proporcionar ninguna información adicional. De esta forma ningún enrutador intermedio sabrá quien es el emisor ni el destinatario de la comunicación. Por ser el último enrutador de la ruta el que directamente se comunica con el destinatario, este será el único que sabrá quien es el destinatario y el contenido del mensaje original que tenía que entregar.[4]

Para conseguir este objetivo la idea original era seguir el siguiente esquema:

  • El emisor origen de la comunicación establece una conexión de inicialización con un proxy de aplicación (en inglés Application Proxy) que convierte los mensajes del protocolo específico de la aplicación a un formato genérico que pueda ser manejado por los routers.
  • A continuación el proxy de aplicación envía los mensajes a un Onion Proxy (se le suele llamar nodo OP), el cual decide la ruta hacia el destino y construye la estructura de datos que se va a enviar al siguiente nodo y a la que se llama onion ('cebolla' en inglés) o onion forward ('cebolla hacia adelante', para indicar el sentido de la comunicación). La estructura de datos tiene una capa cifrada por cada enrutador que vaya a formar parte del circuito.
Si   representa el cifrado usando la clave pública PK,   representa el descifrado usando la clave privada y el onion proxy inicial decide que se va a usar la ruta <4,3,5> de routers, entonces el paquete que se envía al siguiente enrutador puede ser representado por:
 .
  • La estructura de datos es enviada por el onion proxy al entry funnel (punto de entrada al canal). El cual es un onion enrutador (nodo OR) usado como punto de entrada a la red de encaminadores de la red cebolla. Este enrutador descifra el paquete (pela su capa de la 'cebolla') y obtiene la dirección del siguiente nodo OR en el camino del mensaje.
  • A continuación el entry funnel coge el resto del mensaje y lo manda al siguiente onion router.
  • Así se continúa hasta llegar al onion router que actúa como nodo de salida al que llama exit funnel. Este nodo descifra y obtiene el mensaje que originalmente produjo el proxy de aplicación. Este mensaje se envía a la dirección destino especificada.
  • Cuando el receptor envía una respuesta a un mensaje particular, el exit funnel lo convierte al protocolo genérico, lo cifra con su clave privada y lo envía de vuelta al onion router del que le vino el mensaje original.
  • Cada onion router opera de forma similar cifrando la respuesta y lo envía de vuelta obteniendo una estructura de datos, a la que se llama reply onion o onion forward, que tiene la siguiente estructura:
 
  • El mensaje llega al onion proxy el cual descifra usando las claves públicas de los onion routers que escogió como camino del mensaje original.

Problemas

Actualmente hacer que los sistemas que usan encaminamiento cebolla sean seguros es un área de investigación en activo. Se están desarrollando muchos estudios de mejoras, pero se siguen teniendo puntos débiles que hay que subsanar. Aunque no hay propuesta definitiva se han desarrollado una serie de técnicas que han demostrado ser efectivas para mejorar las prestaciones y el grado de seguridad.

Confusión entre paquetes de entrada y de salida en los routers

Si analizamos el tráfico de entrada y salida de cada enrutador podemos llegar a establecer una correspondencia y establecer qué paquete de salida se corresponde con cierto paquete de entrada. Aplicando este análisis a todos los routers podemos llegar a establecer quien se está comunicando con quien. Para evitar que se pueda llegar a este tipo de conclusiones se pueden tomar distintas estrategias:

  • Introducir retardos artificiales en el tiempo de proceso de los mensajes en los routers
  • Introducir tráfico de relleno, esto es, paquetes que tienen información inútil y que su única función es confundir al posible atacante.
  • Hacer que el tráfico se realice a través de mensajes de tamaño fijo. A estos paquetes se les suele llamar células. Si los mensajes que circulan por la red no son de tamaño fijo nos podríamos basar en este tamaño para hacer conjeturas sobre que paquete de entrada se corresponde con qué paquete de salida.[5]
  • Hacer que los paquetes, en lugar de viajar en solitario, viajen agrupados y junto a ellos viaje información de relleno e información de control (por ejemplo instrucciones para los retardos en los nodos). Todo ello se encapsula en un paquete cifrado. A esta forma de encaminamiento se la conoce como encaminamiento de ajo. Este sistema lo usan por ejemplo I2P o Perfect Dark.[6]

Proxy de aplicación

En este sistema se requiere un proxy de aplicación para cada protocolo de aplicación soportado. Esto conlleva mucho trabajo y provoca que algunos proxys no sean escritos nunca y por tanto algunas aplicaciones nunca sean soportadas. Por este motivo, en posteriores diseños de redes que usan encaminamiento o enrutación cebolla (Ej. TOR), se suele usar un protocolo como interfaz genérico (Ej. SOCKS) de forma que toda aplicación con soporte en ese protocolo genérico puede usar la red cebolla para realizar comunicaciones anónimas sin necesidad de modificaciones adicionales. Ese protocolo genérico tiene que dar soporte a distintos protocolos y al final los múltiples posibles protocolos de entrada se convierten en uno solo. Por ejemplo el protocolo SOCKS permite tener por debajo cualquier tipo de tráfico TCP/IP.

Posible reinyección de mensajes

Los sistemas con encaminamiento de cebolla son vulnerables a ataques de replay que se basan en capturar mensajes y luego los reinyectan en la red con el objetivo de sobrecargarla y que deje de funcionar (ataque de denegación de servicio). Para evitar este tipo de ataques es habitual que los routers detecten cuando un paquete ya ha sido procesado (y por tanto descarten ese paquete) y que los propios mensajes tengan un tiempo de validez que una vez agotado permita que los routers eliminen esos mensajes.[5]

Publicación de datos de configuración

Observar que los nodos necesitan saber una serie de valores de configuración (Ej. routers activos, direcciones y claves públicas). Si esos valores de configuración son fijos, podemos decidir que, como parte de la configuración del nodo, se cargue un fichero con esa lista de valores y a partir de ahí se utilizan.

Sin embargo en la realidad esto no es operativo ya que los valores de configuración cambian (por ejemplo caducan las claves asimétricas), se añaden o desaparecen nodos etc. Por eso es necesario el uso de un sistema que permita tener disponible para los distintos nodos esos valores de configuración necesarios para el correcto funcionamiento. Algunos sistemas publican esa información mediante un sitio Web.[7]​Otros, como Tor o Mixminion, usan un servicio de directorio para publicar esa información. Los servidores que proporcionan estos servicios son autoridades confiables y se encargan de mantener el servicio actualizado y de distribuir la información, normalmente de forma firmada. Esta información firmada a veces también puede ser distribuida a modo de mirror por otros routers de la red para así reducir la carga del servicio de directorio.

Observar que tener un servicio para dar valores de configuración puede ser usado para protegerse contra ataques basados en introducir en la red routers malintencionados. Esto es debido a que cada enrutador para entrar efectivamente en la red (se publiquen sus datos de configuración) tiene que ser aprobado por el proveedor del servicio.

Políticas de entrada y salida

Algunos sistemas (Ej. Tor) permiten establecer un conjunto de restricciones de funcionamiento del nodo en el caso de que este sea el último nodo de un circuito de datos. A esto se le suele llamar políticas de salida o en inglés exit policies. Por ejemplo puede definir una lista de posibles direcciones IP o una serie de puertos a los cuales tiene que estar dispuesto el nodo de salida para llevar el tráfico. La exit-policy puede ser variable a lo largo del tiempo.

Análogamente se pueden establecer políticas de entrada o entry policy. Por ejemplo podríamos usarlas en una organización para obligar a que se use un punto de entrada a la red de encaminamiento cebolla.

Observar que las políticas de salida son críticas en infraestructuras distribuidas de voluntarios ya que cada OR puede restringir el tipo de tráfico que puede salir de su nodo.[8]

Control de congestión

En las redes del mundo real es necesario balancear la carga y realizar control del flujo. Esto provoca que sea necesarias comunicaciones de control entre los nodos y una visión del tráfico de forma global. Para ello algunos sistemas (Ej. Tor) permite a los nodos en los bordes de la red detectar congestiones y enviar allí menos datos hasta que esto se haya subsanado.[8]

Integridad extremo a extremo

Muchos sistemas (Ej. Tor) proveen integridad extremo a extremo para evitar que algún nodo del circuito pueda cambiar el contenido de los mensajes de datos que pasan por ellas, para por ejemplo alterar el servidor web al que se está pidiendo conexión o cualquier otra utilidad. Esta integridad se verifica antes de que los datos salgan de la red.[8]

Compartición de circuitos entre distintos flujos

Para mejorar la eficiencia y el anonimato algunos sistemas (Ej. Tor) permiten que varios flujos sean multiplexados sobre el mismo circuito de comunicación.[8]

Número de saltos variable

Algunos sistemas (Ej Tor) permiten a los iniciadores cambiar parcialmente la topología del circuito. Por ejemplo se puede aprovechar para permitir la salida del circuito usando un nodo intermedio (Leaky-pipe circuit topology) y de este modo frustrar ataques que se basan e detectar y atacar el último nodo de un circuito.[8]

Ineficiencia

Utilizar exclusivamente criptografía de clave pública para cifrar cada capa de la cebolla es muy costoso a nivel de computación. Esto es especialmente importante para aplicaciones de baja latencia. Por esta razón en muchos casos es necesario el uso de criptografía simétrica la cual es, en general, mucho más 'barata' computacionalmente.[3]

Para poder usar criptografía simétrica es necesario que todas las partes que se comunican compartan una clave que mantienen en secreto. Se puede aprovecha la criptografía de clave pública para en un primer paso establecer esta clave (simétrica) compartida y que a partir de ahí se use ésta a modo de clave de sesión. Por esta razón, en estos casos, se dice que usamos la criptografía de clave pública, computacionalmente más cara, para establecer un circuito (ruta) de claves simétricas compartidas. Una vez establecido el circuito, este puede ser utilizado para ir transportando los mensajes usando criptografía simétrica.[3]​ El circuito construido puede usarse de forma bidireccional. Un ejemplo de esquema usando claves simétricas podría ser el siguiente:

  • Se establecen una serie de claves simétricas compartidas entre los routers.
  • A continuación los datos son enviados 'envueltos' en capas creadas usando las claves simétricas. Cada enrutador quitará una capa de cifrado de los datos que le pasan, usando la clave simétrica que obtuvo cuando se estableció el circuito. De esta forma los datos original emergerán en claro al final del circuito.
  • El destinatario puede responder con otro mensaje. Este mensaje en cada nodo se le añadirá una capa de cifrado simétrico y luego se mandará al siguiente. Cuando llega al destino (el iniciador de la comunicación) llegará como una estructura de datos con las distintas capas de cifrado. El iniciador de la comunicación, para obtener el mensaje de vuelta en claro, quita las distintas capas descifrando con las distintas claves simétricas utilizadas.

Entre los enfoques que se han ido proponiendo para conseguir encaminamiento de cebolla, se han propuesto distintas formas de establecimiento de circuito usando claves simétricas construidos a partir de criptografía de clave pública. Sin embargo los sistemas utilizados no son la panacea teniendo cada uno sus propios inconvenientes por lo que se considera un problema abierto habiendo actualmente nuevas propuestas de formas de establecer los circuitos, algunos usando solo criptografía asimétrica.

Uso de la criptografía para implementar el encaminamiento cebolla

En una red que usa encaminamiento cebolla la decisión más importante es el tipo de criptografía que se usa y la forma en que esta se usa. Esto es debido a que esta decisión será crucial en la eficiencia y en la seguridad del sistema. Veamos algunos de los ejemplos más representativos y sus repercusiones en la seguridad

Enfoque usando criptografía asimétrica tradicional

Sería el enfoque utilizado en la idea primigenia.

Este sistema es vulnerable a ataques basados en capturar el tráfico. Efectivamente, supongamos que un atacante puede grabar todos los datos que intercambian los routers. Si finalmente el atacante consigue comprometer todos los routers (acceder 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. Serie bueno 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.

Enfoque usando claves simétricas de sesión establecidas desde el primer enrutador

Algunos sistemas, por ejemplo Onion Routing, establecen circuito de claves simétricas, a partir de criptografía de clave pública,[3]​ mediante una estructura de datos con capas que se pueden representar por el siguiente esquema (suponiendo que estamos en una camino de encaminamiento con tres saltos R1, R2, R3):

 
donde
  es la clave pública  
  es la dirección del nodo  
  es un 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) y   (en inglés se le llama key seed material).

Observar que la capa final se identifica porque no contiene ni dirección destino, ni datos con significado para ser transmitidos. Este sistema es el que se usa por ejemplo en Onion Routing.[9]​En este sistema, en las capas de cebolla, aparece lo que se llama key seed material el cual consiste en 128 bits que aplicándole SHA producen las claves simétricas que luego se usan para establecer las claves simétrica. Onion Routing introduce además en su formato de mensaje un campo que permite meter como parámetro el algoritmo de cifrado simétrico que se va a usar en cada sentido de la comunicación. El sistema soportaba DES OFB y RC4. Dependiendo del algoritmo que se seleccione se calcula la clave a partir del key seed material de distinta forma. En este sistema el número de mensajes necesarios para establecer el circuito entre los routers de la red es igual al número de routers que intervienen. Por ejemplo si A se quiere comunicar con B a través de R1,R2 y R3 y en ese orden, son necesarios los siguiente mensajes:

  • A-R1
  • R1-R2
  • R2-R3

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 enrutador 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.[10]

Una posible mejora para este problema es cambiar frecuentemente las claves públicas de cada nodo.[11]​ Esto limita la cantidad de tiempo que tiene A para comprometer B y C, pero requiere que los routers del sistema cotacten frecuentemente con un sistema que les actualice las nuevas claves lo cual puede tener problemas de escalabilidad.[10][11]

Enfoque telescópico

Otros sistemas (Ej Tor y Cebolla) realizan una construcción incremental e interactiva del circuito, a la que llaman enfoque telescópico (del inglés telescopic approach).[3][7]

En concreto Tor se apoya en el Tor Authentication Protocol (siglas TAP), cuya seguridad fue probada[12]​ en el modelo de oráculo aleatorio. Tor lo que hace es realizar una ejecución secuencial de múltiples instancias de TAP.[13]​Para establecer el circuito realiza una autenticación RSA (criptografía de clave pública) de un solo sentido (ya que el iniciador nunca se auténtica) y se aprovecha el protocolo de establecimiento de claves de Diffie-Hellman para establecer una clave simétrica entre cada enrutador de la ruta y el iniciador de la comunicación. 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). Por ejemplo, cuando se establece una clave para el primer salto, el iniciador de la conexión tunela a través de esa conexión para establecer otra clave de sesión con el segundo enrutador y así sucesivamente. Cuando el circuito ya no se usa, las claves de sesión se destruyen.[14]

En el TAP la clave pública del nodo solo 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 enrutador (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 almacenado. Por tanto tenemos perfect forward secrecy.[7][15]

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 es un ataque efectivo.[7]

Otra ventaja de estos sistemas es que son más robustos frente a nodos que no acepten conexiones, siendo la información que tiene que aportar el sistema, por ejemplo mediante un servicio de directorio, menos importante. Por ejemplo si el tercer enrutador intermedio está caído durante el establecimiento del circuito, los dos primeros y el iniciador solo tienen que escoger un nodo alternativo para sustituirlo.[10]

En este sistema el número de mensajes necesarios para establecer el circuito entre los routers de la red es de complejidad O(n2). Por ejemplo si A se quiere comunicar con B a través de R1,R2 y R3 y en ese orden, son necesarios los siguiente mensajes:

  • A-R1
  • A-R1 (tunelado de conexión con R2)
  • R1-R2
  • A-R1 (tunelado de conexión con R3)
  • R1-R2 (tunelado de conexión con R3)
  • R2-R3
Observar que el establecimiento de la conexión tiene una complejidad O(n2) para el número de mensajes transmitidos como para el número de cifrados/descifrados. Esta forma de trabajar en sistemas de baja latencia suele ser solo viable si el número de nodos intermedios se mantiene bajo. Por ejemplo cuando se usa Tor se suele restringir el número de nodos intermedios a 3.

Øverlier and Syverson[15][10]​ mejoran la eficiencia de Tor usando un protocolo de establecimiento de clave Diffie-Hellman medio certificada.[7]​Para ello confía en parámetros de Diffie-Hellman precalculados cuyos componentes públicos son publicados y actualizados regularmente por cada enrutador en el servicio de directorio. Los clientes pueden entonces generar sus propios parámetros de Diffie-Hellman y, usando la información publicada por los routers, calcular las claves de sesión que se compartirán con los routers en los circuitos. Estas propuestas reducen el coste de computación pero mantienen la complejidad de comunicación en O(n2).

Enfoques basados en criptografía asimétrica no basada en PKI

Se han hecho diversas propuestas que persiguen establecer los circuitos en un solo paso para reducir la sobrecarga de coste de computación y de comunicaciones que tienen los sistemas que se basan en establecer circuitos en varios pasos (Enfoque telescópico).

Sin embargo el enfoque telescópico proporciona buenas propiedades como el secreto-hacia-adelante (en inglés forward-secrecy).[16][17][14]​ Informalmente, se dice que esta propiedad es la que se da cuando se garantiza que las propiedades de seguridad permanecen incluso si el adversario puede corromper todas las partes que intervienen y aprender sus claves secretas después de que éstas hayan caducado. Sobre la base de esta propiedad podemos precisar aún más y diferenciar así entre dos propiedades:

  • Se dice que hay secreto-hacia-adelante inmediato (en inglés immediate forward-secrecy) si se mantiene el secreto-hacia-adelante de todas las sesiones pasadas que han finalizado incluso si un adversario compromete un enrutador. Observar que el secreto permanece aunque las claves privadas no hayan cambiado porque están en su periodo de validez. Este tipo de propiedad es satisfecha por Tor usando su Enfoque telescópico.
  • Se dice que hay secreto-hacia-adelante eventual (en inglés eventual eventual forward-secrecy) si se mantiene el secreto-hacia-adelante aunque un adversario pueda corromper un enrutador después de un específico periodo de tiempo (después de que las claves privadas de los routers hayan cambiado).

Se ha demostrado[18]​ que es imposible obtener secreto-hacia-adelante immediato usando establecimiento de circuito con un solo paso (de un modo no interactivo). Por tanto lo que intentamos buscar es secreto-hacia-adelante eventual.[16][14]

Es evidente que es posible conseguir secreto-hacia-adelante eventual cambiando frecuentemente las claves asimétricas de los routers (criptografía asimétrica) de forma que se minimice el periodo de tiempo, y por tanto el impacto, de que se comprometiera la clave de un enrutador. Una vez que se tiene la clave privada de un enrutador entonces el atacante solo puede violar la seguridad de la comunicación en el periodo de validez de esa clave. Implementar esta idea usando una PKI tradicional (cambiando las claves privada/pública asociada a cada enrutador) es muy complicado en la práctica ya que fuerza a los enrutador a generar nuevas claves, a generar su correspondiente certificado válido, a publicar dicho certificado y a que los usuario repetidamente obtengan dicho certificado.[16]

Para conseguir secreto-hacia-adelante eventual de una forma más eficiente se han hecho varias propuestas usando criptografía asimétrica que no usa PKI: criptografía basada en identidad, criptografía sin certificado.[16]

Usando criptografía basada en identidad

Aniket Kate y otros[10][18]​ han propuesto usar esquemas de criptografía basada en identidad para construir un protocolo con encaminamiento cebolla al que han llamado PB-OR (del inglés pairing-based onion routing). En la criptografía basada en identidad las claves públicas y las claves privadas de las partes se obtienen a través de un confiable Centro de Generación de Claves o KGC (del inglés Key Generation Center) que suministra claves con un periodo de validez determinado. PB-OR usa la idea original del encaminamiento cebolla para cifrar mensajes usando la clave pública del enrutador, con la peculiaridad de que en este caso las claves son suministradas mediante el KGC y tienen asociadas el periodo de validez. Este sistema tiene dos problemas:

  • La existencia de un KGC confiable hace que este pueda descifrar cualquier mensaje de la red (key scrow problem). Esto puede ser resuelto utilizando por ejemplo un KGC distribuido.[19]​ Construir este sistema no es para nada trivial y tiene sus propios problemas.
  • Se requiere que los routers interactúen con el KGC para obtener las nuevas claves secretas cada vez que acaba el periodo de validez. Aunque tienen la ventaja de no tener que gestionar y verificar certificados.[16]

Mario Catalano, Mario Di Raimondo, Dario Fiore, Rosario Gennaro y Orazio Puglisi han propuesto[20]​ un sistema, al que llaman fs-ID-OR, que usa un sistema de cifrado basado en identidad seguro hacia adelante (siglas fs-IBE) para las claves públicas de los routers. El circuito se forma de forma no interactiva y en un solo paso. Este sistema logra eventual forward secrecy sin tener que usar KGC (como necesitabla PB-OR), ni tiene que comunicar ninguna clave pública ya que permanece estática (como necesitaban PB-OR o CL-OR). Al no ser interactivo, tampoco tiene una complejidad cuadrática sino lineal (como tenía el enfoque telescópico). El problema que tiene este sistema es que la KGC tiene que ser confiable ya que puede descifrar cualquier mensaje (key scrow problem). Para resolver este problema propone hacer modificaciones al esquema usando Criptografía sin certificados o PKI.

Usando criptografía sin certificados

Catalano y otros[17]​ han sugerido usar criptografía sin certificados y han definido dos protocolos con encaminamiento cebolla (CL-OR y 2-CL-OR). Sin embargo este sistema resucita los problemas de escalabilidad que tenían los sistemas que usaban PKI con claves cambiantes. En efecto, cada enrutador tiene que generar una clave asimétrica y comunicarse con otra entidad, por ejemplo un servidor de directorio, para que publique la parte pública y que pueda ser descargada por el resto de usuarios para su uso.[16][11]

Anonimato en la localización de la entidad que responde

Las redes con encaminaminamiento cebolla tradicionalmente proporcionan anonimato en la localización del que inicia la comunicación (el iniciador). Sin embargo también es interesante perseguir el anonimato en la localización de la entidad que responde. Ha habido algunas propuestas interesantes para conseguir esto. Veamos algunas de ellas.

Reply onions

La red Onion Routing disponía de lo que llamaba reply onion.[21][22]​ La red Onion Routing usa un enfoque usando criptografía simétrica establecida a través de las claves asimétricas para establecer una conexión. Esta conexión se puede aprovechar para transmitir mensajes en ambos sentidos de la comunicación.

Si A se quiere comunicar con B a través de los nodos W, X, Y y Z, el onion que construiría el nodo W y que enviaría a X tendría la siguiente estructura:

 

donde:

  •   indica cifrar con la clave pública de X un tupla formada por el tiempo de caducidad, el destinatario del siguiente salto, el par de configuración de la comunicación hacia (forward) X   y el par de configuración de la comunicación desde (backward) X  .
  • Una comunicación unidireccional queda configurada por un par formado por   que especifican el algoritmo de cifrado a usar (F) y la clave (K).
  • Si el destinatario es NULL entonces quiere decir que no hay enrutador siguiente.

[21]

Sin embargo ¿Qué pasa si el iniciador espera una respuesta que puede demorarse bastante tiempo?. Por ejemplo, esta situación se puede dar para responder a correos electrónicos anónimos enviados usando la red. Una solución obvia es mantener la conexión abierta para permitir esa respuesta. Sin embargo esto lleva a un desaprovechamiento de recursos. Otra solución es utilizar reply onions después de que la conexión original haya sido terminada.[22]

Los reply onions construyen un circuito desde el destinatario hasta el iniciador de una petición anterior en la que ese iniciador quería mantener su localización oculta. El reply onion es creado por el iniciador en la comunicación original y se lo envía al destinatario para que pueda posteriormente usarlo. Posteriormente ese 'reply onion' es enviado por el destinatario al enrutador que le sirvió la petición para que llegue hasta el iniciador original para así establecer la conexión. Una vez establecida la conexión cada enrutador funciona de la misma forma que actúa con un 'onion' normal. La estructura de datos del 'reply onion' es similar que la de los 'onion' normales y los routers la procesan de la misma forma.[22]

Usando la misma notación que antes, el 'onion replay' para que B responda a A usando la ruta W, Z, Y y X tendría la siguiente estructura:

 
La diferencia fundamental entre las dos estructura es la capa más interna. Ahora no estamos ante un relleno, sino que contiene suficiente información para permitir al enrutador del iniciador alcanzar al iniciador y toda la información criptográfica necesaria para cifrar los datos que recorren el circuito virtual.

[21]

Los 'reply onion' también se pueden usar para dar acceso a servicios que quieren mantener su localización oculta. En este caso el iniciador publica un 'reply onion' el cual puede ser obtenido y usado por el destinatario. A continuación el destinatario envía el 'reply onion' al enrutador designado para establecer el circuito hasta el iniciador.[22]

Un problema abierto en este tipo de configuraciones es que el 'reply onion' puede no ser funcional en el momento en que el destinatario decida usarlo.[3]

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.

Ejemplos de sistemas que soportan esta funcionalidad es la antigua Onion Routing y su evolución Tor.[3]

Servicios que ocultan la localización

Los servicios que ocultan la localización (por ejemplo, la dirección IP) de quien provee el servicio (Ej. un servicio web accesible solo desde la red de encaminamiento 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).

Por ejemplo esta funcionalidad es soportada por Tor. Para ello 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 Base32 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 al cliente y el servidor y se establece una comunicación normal.[8][23]

Clasificación

Los distintos sistemas que implementan este tipo de encaminamiento se distinguen por cómo se gestionan las claves, en cómo se construyen y procesan los mensajes, en cómo los nodos se conocen entre sí, en cómo se eligen los caminos o paths que recorren los mensajes, en si hay retardos intencionados y de qué tipo, en si hay tráfico de relleno, en el protocolo al que dan servicio (Ej IP, TCP, HTTP), etcétera. Veamos algunas de esas clasificaciones según distintos criterios

Según los retardos

Podemos clasificar las redes que usan encaminamiento cebolla según los retardos que introducen los routers desde que el mensaje llega a un nodo hasta que ese mensaje sale del nodo. Podemos distinguir dos tipos:

  • De alta latencia.- Este tipo de redes introducen de forma intencionada retardos comparativamente largos y variables. Son más resistentes a ataques pero introducen demasiados retardo para tráfico interactivo (Ej navegación web, chat o conexiones SSH). Ejemplos de este tipo de redes son MixMaster, Babel y Mixminion
  • De baja latencia.- Este tipo de redes son adecuadas a tráfico interactivo. Debido a esta restricción no introducen retardos artificiales o los introducen pero son de muy pequeña duración. Este tipo de redes tienen dificultades en contrarrestar ataques:
    • Basados en escuchar los dos extremos de la comunicación y hacer correlaciones de tiempo y volumen de tráfico
    • Que introducen tráfico entrante con patrones de tiempo y buscan patrones relacionados con ellos en el tráfico de salida.

Ejemplos de este tipo de redes son Freedom Network, Onion Routing y Tor

Según los circuitos

Podemos clasificar las redes de cebolla atendiendo a si se establecen o no circuitos desde el origen al destino, también llamados caminos o túneles, por los que circulan mensajes. De esta forma podemos distinguir:

  • Redes en las que se establecen circuitos. La mayoría de redes de cebolla funcionan de esta manera. A su vez podemos dividir este tipo de redes según el número de pasos realizados para elegir el circuito
    • Redes en las que el camino que tiene que recorrer un mensaje se decide en un solo paso. Ejemplos de este tipo de redes son Freedom Network y Onion Routing
    • Redes en las que el camino se va decidiendo poco a poco en varios pasos. Ejemplo de este tipo de redes es TOR.
  • Redes es las que no se establecen circuitos.[24]​ Se trata del llamado Encaminamiento cebolla de caminos dinámicos (en inglés Dynamic Multipath Onion Routing). En estas redes cada paquete desde el origen al destino puede elegir un camino diferente. Ejemplo de este tipo de redes es MORE.

Según la naturaleza de los routers

Marc Rennhard propone[25]​ clasificar las redes con encaminamiento de cebolla en función de la naturaleza de los nodos. Basándose en esto distingue entre:

  • Redes estáticas: Estos sistemas tienen unos relativamente escasos y bien conocidos routers de cebolla que son usados por un número mucho más grande de usuarios. Por eso decimos que son estáticas. Ejemplos de este tipo de sistemas son Onion Routing, Freedom Network y Tor. Este tipo de redes se pueden clasificar a su vez en función de quien proporciona los routers. Podemos distinguir:
    • Redes estáticas con routers proporcionados por voluntarios. En muchas redes estáticas los onion routers son proporcionados por voluntarios individuales o entidades colaboradoras. Es difícil encontrar voluntario o entidades independientes que aporten sus recursos para proporcionar desinteresadamente onion routers a la red. En especial en este tipo de redes que proporcionan cierto grado de anonimato y que pueden ser usadas como soporte para actividades controvertidas (Ej. publicación de información comprometida) o simplemente delictivas (Ej. tráfico de drogas). Ejemplo de este tipo de redes son MixMaster o Tor.
    • Redes estáticas con routers proporcionados como un servicio comercial. En estos sistemas una compañía proporciona un servicio de anonimato para el que es necesario el pago de cierta cantidad para usarlo. Para realizar el servicio la empresa realiza unas inversiones y proporciona el servicio directamente o a través subcontratas. La ventaja de este tipo de sistemas es que el servicio está controlado por una sola organización y se pueden tomar medidas centralizadas para paliar cualquier problema que pudiera haber. La gran desventaja de estos sistemas es que, debido al gran control que ejerce la organización, es necesario tener confianza en que ella misma no va a comprometer nuestra privacidad. Otra desventaja es que estos sistemas stán enfocados a ser rentables y proporcionar un alto grado de anonimato suele estar reñido con la rentabilidad (necesitaría mucho tráfico de relleno). Un problema para el éxito de este tipo de redes es que es difícil vender una servicio de anonimato no confiable al 100%. Un ejemplo de este tipo de sistemas fue la red Freedom Network cerrada en 2001.
  • Redes dinámicas: Estos sistemas están compuestos por onion routers que aparecen y desaparecen una y otra vez. Por eso decimos que son dinámicas. Ejemplos de este tipo de sistemas son los sistemas peer-to-peer Tarzan y MorphMix en los que cada usuario es al mismo tiempo un onion router.

Debilidades

El encaminamiento de cebolla no proporciona un anonimato total de los interlocutores contra todo tipo de atacantes que escuchan las comunicaciones. Sin embargo dificulta bastante esta tarea. El grado de dificultad que aporta es generalmente función del número de routers de la ruta elegida y del número de esos routers que son maliciosos o que han sido comprometidos.

Ejemplos de ataques

  • Análisis de tiempos (en inglés Timing analysis): Analizando el flujo de mensaje que pasan a través de un nodo poco cargado podemos deducir la correspondencia entre ciertos mensajes de entrada y otros de salida. Para evitar esto se propone el uso de mensajes del mismo tamaño, tráfico de relleno y la introducción tiempos de espera artificiales que lo dificulten.
  • Ataques para la denegación de servicio (en inglés Denial Of Sevices attacks): En este tipo de redes es fácil desarrollar ataques de denegación de servicio por ejemplo forzando a muchos routers a realizar una fuerte cantidad de operaciones criptográficas o agotando el ancho de banda. Para evitar este tipo de ataques de forma radical se han propuesto sistemas en los que se establece alguna forma de 'moneda digital' que los clientes tienen que 'pagar' para usar los servicios del sistema. Por ejemplo se podrían usar sistemas que obligaran a los usuario a realizar un esfuerzo importante y que fueran fáciles de verificar. Es aplicar la misma idea que Hashcash.
Hay distintas formas de implementar ataques de denegación de servicio, veamos un ejemplo:
  • Ataques de replay:[26]​Los sistemas con encaminamiento de cebolla son vulnerables a ataques de replay que se basan en capturar mensajes y luego los reinyectan en la red con el objetivo de sobrecargarla y que deje de funcionar (ataque de denegación de servicio). Para evitar este tipo de ataques es habitual que los routers detecten cuando un paquete ya ha sido procesado (y por tanto descarten ese paquete) y que los propios mensajes tengan un tiempo de validez que una vez agotado permita que los routers eliminen esos mensajes.
  • Ataques de intersección (en inglés Intersection attacks):[27][28]​ Este ataque se basa en obtener una colección de conjuntos de nodos que sabe que contienen el iniciador de la comunicación. A partir de este conjunto podemos sacar conclusiones válidas simplemente hallando la intersección de estos conjuntos. Si la intersección es solo un nodo entonces se puede estar seguro de quien es el iniciador. Para que los distintos conjuntos de nodos que vamos obteniendo sean distintos, y por tanto tenga sentido la hacer la intersección, podemos analizar los nodos que se desconectan o entran en la red mientras cierto circuito continúa funcionando sin ningún tipo de problema. El coste de este tipo de ataques es significante si el tamaño de la red es grande, pero puede ser factible en algunos escenarios.
  • Ataques de predecesor (en inglés Predecessor attacks):[29][30][31]​ Este tipo de ataques se basan en dos suposiciones:
  • Hay una conexión recurrente entre un iniciador y un destinatario que se intercambian mensajes.
  • En los mensajes transportados hay información que puede ser utilizada por el atacante para identificar esa conexión recurrente.
Podemos justificar estas suposiciones basándonos en como se comportan las aplicaciones que usan ciertos protocolos. Por ejemplo cuando usamos HTTP, FTP, SSH, Telnet o IRC normalmente nos conectamos recurrentemente al mismo servidor.
En general los routers de una red con encaminamiento de cebolla no tienen conexiones totalmente estables. Cuando un nodo se desconecta, cualquier circuito en el que participara ese nodo se ve afectado y tiene que volver a configurarse (en inglés se le llama chain reformation). A este evento le vamos a llamar reset. Al periodo de tiempo entre dos resets lo vamos a llamar una ronda.
Los ataques de predecesor se basan en los siguiente: Si un nodo comprometido intercepta un mensaje, el nodo predecesor tendrá una probabilidad más alta de ser el nodo iniciador comparado con otros nodos. Por tanto para realizar el ataque el atacante estudia las rondas en las cuales se envían mensajes que son parte del flujo que estamos estudiando y que pasan a través de nodos comprometidos (los cuales almacenan de forma pasiva toda la información para poder hacer luego el análisis). A partir de ahí se establece el nodo predecesor con probabilidad más alta.
  • Ataque basado en capturar el tráfico de los nodos de salida: Los nodos de salida (los últimos de la cadena de routers) tienen un acceso completo al contenido que se transmite desde el origen al destino. Basándose en esto ha habido[32]​ ataques que han capturado información privilegida. Este tipo de ataques pueden ser resueltos empleando cifrado extremo a extremo, por ejemplo unsando SSL.
  • Los sistemas que se han ido añadiendo al esquema para mejorar las presentaciones tienen sus propios puntos débiles que pueden ser objeto de ataque. Ej. de ataques sobre estos elementos:

Véase también

Referencias

  1. Sumoza Matos, Rodolfo (Septiembre de 2008). «Sistemas anónimos en escenarios globales». Universidad Complutense de Madrid. p. 50. Consultado el 16 de noviembre de 2015. 
  2. D. Goldschlag, M. Reed y P. Syverson. "Hiding Routing Informations", In proceedings of the First International Workshop on Information Hiding, 1996, LNC vol 1174 pp. 137-150
  3. Paul Syverson, "A peel of Onion", ACSAC'11. Orlando, Florida USA. Diciembre de 2011
  4. Marc O'Morain et all,"Onion Routing for Anonymous Communications el 6 de mayo de 2012 en Wayback Machine."
  5. B V V Sri Raj Dutt et all,"Implementation of Onion Routing"
  6. Bassam Zantout y Ramzi A. Haraty,"I2P Data Communication System", Lebanese American University, ICN 2011
  7. M. Edman y B. Yener."On Anonymity in an Electronic Society: A Survey of Anonymous Communication Systems".ACM Journal Name, Vol. V, No. N, Month 2008, Paginas 1–39.
  8. Roger Dingledine et al. "Tor: The Second-Generation Onion Router"
  9. Paul F. Syverson et all, "Anonymous Connections and Onion Routing"
  10. Aniket Kate et al."Pairing-Based Onion Routing"
  11. Aniket Kate y Ian Goldberg,"Using Sphinx to Improve Onion Routing Circuit Construction"
  12. Goldberg, I.,"On the security of the Tor Authentication protocol". In Danezis, G.,Golle, P., eds.: Privacy Enhancing Technologies. Volume 4258 of Lecture Notes in Computer Science., Springer (2006) 316–331
  13. Ian Goldberg,"On the Security of the Tor Authentication Protocol".David R. Cheriton School of Computer Science, University of Waterloo
  14. M. Backes et al."Provably Secure and Practical Onion Routing"
  15. Lasse Øverlier y Paul Syverson,"Improving efficiency and simplicity of Tor circuit establishment and hidden services"
  16. Dario Catalano et al.,"Fully Non-Interactive Onion Routing with Forward-Secrecy".
  17. Dario Catalano et al."Certificateless Onion Routing"
  18. Aniket Kate et al.,"Pairing-Based Onion Routing with Improved Forward Secrecy"
  19. A. Kate y I. Goldberg. "Distributed Private-Key Generators for Identity-Based Cryptography". In Proc 7th Conference on Security and Cryptography for Networks (SCN) pages 436-453, 2010
  20. Dario Catalano, Mario Di Raimondo, Dario Fiore, Rosario Gennaro y Orazio Puglisi,"Fully Non-Interactive Onion Routing with Forward-Secrecy"
  21. Paul F. Syverson et al, "Hiding Routing Information". Workshop on Information Hiding, Cambridge UK, May 1996
  22. Michael G. Reed, Paul F. Syverson, and David M. Goldschlag. Proxies for Anonymous Routing, 12th Annual Computer Security Applications Conference, San Diego, CA, December 9-13, 1996
  23. Peter Wayne,"Disappearing Cryptography: Information Hiding: Steganography & Watermarking" .Third Edition. Morgan Kaufmann 2009
  24. Heiko Niedermayer, "Architecture and Components of secure and anonymous Peer-to-Peer Systems". Department of Computer Science. Technische Universität München
  25. Marc Rennhard,"Practical Anonymity for the Masses with Mix-Networks".Swiss Federal Institute of Technology, Computer Engineering and Networks Laboratory;Zurich Switzerland. Febrero 2003
  26. B V V Sri Raj Dutt et all,"Implementation of Onion Routing"
  27. M. Wright et al.,"Defending anoymous Communications Against Passive Logging"
  28. Mohan Balaji Areti et al."Attacks on Anonymous Systems"
  29. Matthew Wright et al."An Analysis of the Degradation of Anonymous Protocols"
  30. The Predecessor Attack: An Analysis of a Threat to Anonymous Communications Systems, by MATTHEW K. WRIGHT, MICAH ADLER, BRIAN NEIL LEVINE (University of Massachusetts Amherst) and CLAY SHIELDS (Georgetown University)
  31. Fengjun Li et al."A Node-failure-resilient Anonymous Communication Protocol through Commutative Path Hopping"
  32. Bangeman, Eric (30 de agosto de 2007). «Security researcher stumbles across embassy e-mail log-ins». Arstechnica.com. Consultado el 17 de marzo de 2010. 
  33. ØVERLIER, L. AND SYVERSON, P., "Locating hidden servers". In Proceedings of the IEEE Symposium on Security and Privacy
  •   Datos: Q392095

encaminamiento, cebolla, encaminamiento, cebolla, enrutamiento, cebolla, inglés, onion, routing, introducido, david, goldshlag, michael, reed, paul, syverson, aplicando, ideas, redes, mezclado, david, chaum, sistemas, encaminamiento, para, conseguir, redes, pr. El encaminamiento cebolla o enrutamiento cebolla 1 en ingles onion routing fue introducido por David M Goldshlag Michael Reed y Paul Syverson 2 aplicando las ideas de las redes de mezclado de David Chaum a los sistemas de encaminamiento para conseguir redes que preserven la privacidad tanto del mensaje en si como de los interlocutores de forma transparente a las entidades que se comunican De esta forma podemos tener infraestructuras para comunicaciones privadas sobre una red publica Con este sistema las comunicaciones pueden ser bidireccionales casi en tiempo real y pueden ser usadas para trafico orientado a conexion o no A las redes que utilizan esta forma de encaminamiento se las llama redes cebolla en ingles onion networks Ejemplos de este tipo de redes algunas de las cuales nunca han sido implementadas son Freedom Network Onion Routing MixMaster Babel Mixminion Zach Brown s Onion PipeNet IronKey MorphMix Tarzan y Tor la mas importante red que usa esta tecnologia y que actualmente esta desplegada en internet Indice 1 Objetivo 2 Implementacion 2 1 Idea primigenia 2 2 Problemas 2 2 1 Confusion entre paquetes de entrada y de salida en los routers 2 2 2 Proxy de aplicacion 2 2 3 Posible reinyeccion de mensajes 2 2 4 Publicacion de datos de configuracion 2 2 5 Politicas de entrada y salida 2 2 6 Control de congestion 2 2 7 Integridad extremo a extremo 2 2 8 Comparticion de circuitos entre distintos flujos 2 2 9 Numero de saltos variable 2 2 10 Ineficiencia 2 3 Uso de la criptografia para implementar el encaminamiento cebolla 2 3 1 Enfoque usando criptografia asimetrica tradicional 2 3 2 Enfoque usando claves simetricas de sesion establecidas desde el primer enrutador 2 3 3 Enfoque telescopico 2 3 4 Enfoques basados en criptografia asimetrica no basada en PKI 2 3 4 1 Usando criptografia basada en identidad 2 3 4 2 Usando criptografia sin certificados 2 4 Anonimato en la localizacion de la entidad que responde 2 4 1 Reply onions 2 4 2 Puntos de encuentro 2 4 3 Servicios que ocultan la localizacion 3 Clasificacion 3 1 Segun los retardos 3 2 Segun los circuitos 3 3 Segun la naturaleza de los routers 4 Debilidades 4 1 Ejemplos de ataques 5 Vease tambien 6 ReferenciasObjetivo EditarEl objetivo principal para el que se diseno el encaminamiento cebolla es separar la identificacion del enrutado de los mensajes y por tanto perseguir el enrutado anonimo en ingles anonymous routing Para enrutar no es necesario tener en todo momento identificado tanto el origen como el destino de la comunicacion Cuando hablamos de identidad nos referimos a cualquier datos que ayude identificar a un individuo Por ejemplo la direccion IP ayuda a identificar ya que a traves de ella se puede obtener informacion como el usuario particular u organizacion a la que estaba asignada esa IP en ese momento o el pais desde el que se envia el mensaje 3 Para tener una buena proteccion de la identidad de los interlocutores es necesario que la ruta de nodos por los que pasa el mensaje para ir desde el origen al destino sea impredecible a priori y se oculte todo lo posible Por esta razon se persigue que cada entidad solo conozca la entidad desde la que recibe el mensaje y la entidad a la que tiene que enviar el mensaje Esto se puede aplicar no solo a los nodos enrutado sino tambien a las propias entidades que se comunican El destino no tiene que saber la identidad del que se quiere comunicar con el El origen de la comunicacion puede no saber la identidad de la entidad con la que se quiere comunicar son los definidos como servicios ocultos en ingles hidden services Los servicios ocultos no son soportados por la mayoria de sistemas de encaminamiento de cebolla Sin embargo si hay sistemas que los soportan como Tor Observar que para ocultar la ruta no es necesario confiar en todos los nodos de la ruta teoricamente si los nodos tuvieran un comportamiento ideal con que hubiera un solo nodo confiable no comprometido la privacidad de los interlocutores estaria garantizada debido a que seria imposible establecer correspondencia entre los mensajes que le llegan y los que salen de el Para que sea efectiva la proteccion de la identidad es necesario que se preserve la confidencialidad de la propia informacion que el origen quiere enviar al destino Si no se hiciera un simple analisis de trafico podria identificar cual es el recorrido que hace cada mensaje desde el origen al destino Observar que el enrutado anonimo 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 informacion sobre la identidad Por ejemplo un servicio web puede usar cookies o simplemente pedir que nos identifiquemos Cuando queremos un anonimato a nivel de aplicacion es bueno configurar el cliente adecuadamente y protegernos usando proxys que modifican los contenidos en este sentido Por ejemplo para conseguir mas privacidad cuando navegamos por la web es recomendable configurar el navegador adecuadamente ej deshabilitando cookies no permitiendo plugins Java o deshabilitando el historial y redirigir el trafico hacia un proxy web intermedio Ej privoxy o polipo que nos filtre contenido que puede ser aprovechado para violar nuestra privacidad ej cookies o cabeceras HTTP que puedan ser usadas para identificar 3 Implementacion Editar Estructura de la transmision de los datos con encaminamiento cebolla El encaminamiento cebolla aprovecha la idea de Chaum de esconder la relacion entre el origen y el destino de una informacion encapsulando los mensajes en capas de criptografia de clave publica Aplicando esta idea para implementar un modo de encaminamiento lo que hacemos es transmitir mensajes con distintas capas de cifrado por ese ligero parecido resultante y coincidente con ese interior enrollado del bulbo con un diagrama de la explicacion de su viaje a estas redes se les conoce como de cebolla sobre un camino compuesto por nodos de mezclado mixes convertidos ahora en routers enrutador de cebolla donde cada enrutador del camino lo que hace es descifrar pela una capa de la cebolla transmitir y reordenar los mensajes antes de transmitir al siguiente enrutador Cuando un enrutador descifra una capa obtiene una cabecera que puede interpretar y un fragmento cifrado siguiente capa de la cebolla A continuacion el enrutador envia el fragmento cifrado al proximo salto de acuerdo al contenido de la cabecera y el estado interno del propio enrutador Idea primigenia Editar En el encaminamiento cebolla se persigue que cada nodo intermedio enrutador conozca solo lo que es estrictamente necesario La direccion de la entidad que le envia el mensaje y la direccion a la que tiene que redirigir el mensaje Los mensajes que se intercambian los routers no tienen que proporcionar ninguna informacion adicional De esta forma ningun enrutador intermedio sabra quien es el emisor ni el destinatario de la comunicacion Por ser el ultimo enrutador de la ruta el que directamente se comunica con el destinatario este sera el unico que sabra quien es el destinatario y el contenido del mensaje original que tenia que entregar 4 Para conseguir este objetivo la idea original era seguir el siguiente esquema El emisor origen de la comunicacion establece una conexion de inicializacion con un proxy de aplicacion en ingles Application Proxy que convierte los mensajes del protocolo especifico de la aplicacion a un formato generico que pueda ser manejado por los routers A continuacion el proxy de aplicacion envia los mensajes a un Onion Proxy se le suele llamar nodo OP el cual decide la ruta hacia el destino y construye la estructura de datos que se va a enviar al siguiente nodo y a la que se llama onion cebolla en ingles o onion forward cebolla hacia adelante para indicar el sentido de la comunicacion La estructura de datos tiene una capa cifrada por cada enrutador que vaya a formar parte del circuito Si E P K d a t o s displaystyle E PK rm langle datos rangle representa el cifrado usando la clave publica PK D S K d a t o s displaystyle D SK rm langle datos rangle representa el descifrado usando la clave privada y el onion proxy inicial decide que se va a usar la ruta lt 4 3 5 gt de routers entonces el paquete que se envia al siguiente enrutador puede ser representado por E P K 4 direccionderouter 3 E P K 3 direccionderouter 5 E P K 5 d a t o s displaystyle E PK 4 mbox direccionderouter 3 E PK 3 mbox direccionderouter 5 E PK 5 rm langle datos rangle dd La estructura de datos es enviada por el onion proxy al entry funnel punto de entrada al canal El cual es un onion enrutador nodo OR usado como punto de entrada a la red de encaminadores de la red cebolla Este enrutador descifra el paquete pela su capa de la cebolla y obtiene la direccion del siguiente nodo OR en el camino del mensaje A continuacion el entry funnel coge el resto del mensaje y lo manda al siguiente onion router Asi se continua hasta llegar al onion router que actua como nodo de salida al que llama exit funnel Este nodo descifra y obtiene el mensaje que originalmente produjo el proxy de aplicacion Este mensaje se envia a la direccion destino especificada Cuando el receptor envia una respuesta a un mensaje particular el exit funnel lo convierte al protocolo generico lo cifra con su clave privada y lo envia de vuelta al onion router del que le vino el mensaje original Cada onion router opera de forma similar cifrando la respuesta y lo envia de vuelta obteniendo una estructura de datos a la que se llama reply onion o onion forward que tiene la siguiente estructura E S K 4 E S K 3 E S K 5 d a t o s displaystyle E SK 4 E SK 3 E SK 5 rm langle datos rangle dd El mensaje llega al onion proxy el cual descifra usando las claves publicas de los onion routers que escogio como camino del mensaje original Problemas Editar Actualmente hacer que los sistemas que usan encaminamiento cebolla sean seguros es un area de investigacion en activo Se estan desarrollando muchos estudios de mejoras pero se siguen teniendo puntos debiles que hay que subsanar Aunque no hay propuesta definitiva se han desarrollado una serie de tecnicas que han demostrado ser efectivas para mejorar las prestaciones y el grado de seguridad Confusion entre paquetes de entrada y de salida en los routers Editar Si analizamos el trafico de entrada y salida de cada enrutador podemos llegar a establecer una correspondencia y establecer que paquete de salida se corresponde con cierto paquete de entrada Aplicando este analisis a todos los routers podemos llegar a establecer quien se esta comunicando con quien Para evitar que se pueda llegar a este tipo de conclusiones se pueden tomar distintas estrategias Introducir retardos artificiales en el tiempo de proceso de los mensajes en los routers Introducir trafico de relleno esto es paquetes que tienen informacion inutil y que su unica funcion es confundir al posible atacante Hacer que el trafico se realice a traves de mensajes de tamano fijo A estos paquetes se les suele llamar celulas Si los mensajes que circulan por la red no son de tamano fijo nos podriamos basar en este tamano para hacer conjeturas sobre que paquete de entrada se corresponde con que paquete de salida 5 Hacer que los paquetes en lugar de viajar en solitario viajen agrupados y junto a ellos viaje informacion de relleno e informacion de control por ejemplo instrucciones para los retardos en los nodos Todo ello se encapsula en un paquete cifrado A esta forma de encaminamiento se la conoce como encaminamiento de ajo Este sistema lo usan por ejemplo I2P o Perfect Dark 6 Proxy de aplicacion Editar En este sistema se requiere un proxy de aplicacion para cada protocolo de aplicacion soportado Esto conlleva mucho trabajo y provoca que algunos proxys no sean escritos nunca y por tanto algunas aplicaciones nunca sean soportadas Por este motivo en posteriores disenos de redes que usan encaminamiento o enrutacion cebolla Ej TOR se suele usar un protocolo como interfaz generico Ej SOCKS de forma que toda aplicacion con soporte en ese protocolo generico puede usar la red cebolla para realizar comunicaciones anonimas sin necesidad de modificaciones adicionales Ese protocolo generico tiene que dar soporte a distintos protocolos y al final los multiples posibles protocolos de entrada se convierten en uno solo Por ejemplo el protocolo SOCKS permite tener por debajo cualquier tipo de trafico TCP IP Posible reinyeccion de mensajes Editar Los sistemas con encaminamiento de cebolla son vulnerables a ataques de replay que se basan en capturar mensajes y luego los reinyectan en la red con el objetivo de sobrecargarla y que deje de funcionar ataque de denegacion de servicio Para evitar este tipo de ataques es habitual que los routers detecten cuando un paquete ya ha sido procesado y por tanto descarten ese paquete y que los propios mensajes tengan un tiempo de validez que una vez agotado permita que los routers eliminen esos mensajes 5 Publicacion de datos de configuracion Editar Observar que los nodos necesitan saber una serie de valores de configuracion Ej routers activos direcciones y claves publicas Si esos valores de configuracion son fijos podemos decidir que como parte de la configuracion del nodo se cargue un fichero con esa lista de valores y a partir de ahi se utilizan Sin embargo en la realidad esto no es operativo ya que los valores de configuracion cambian por ejemplo caducan las claves asimetricas se anaden o desaparecen nodos etc Por eso es necesario el uso de un sistema que permita tener disponible para los distintos nodos esos valores de configuracion necesarios para el correcto funcionamiento Algunos sistemas publican esa informacion mediante un sitio Web 7 Otros como Tor o Mixminion usan un servicio de directorio para publicar esa informacion Los servidores que proporcionan estos servicios son autoridades confiables y se encargan de mantener el servicio actualizado y de distribuir la informacion normalmente de forma firmada Esta informacion firmada a veces tambien puede ser distribuida a modo de mirror por otros routers de la red para asi reducir la carga del servicio de directorio Observar que tener un servicio para dar valores de configuracion puede ser usado para protegerse contra ataques basados en introducir en la red routers malintencionados Esto es debido a que cada enrutador para entrar efectivamente en la red se publiquen sus datos de configuracion tiene que ser aprobado por el proveedor del servicio Politicas de entrada y salida Editar Algunos sistemas Ej Tor permiten establecer un conjunto de restricciones de funcionamiento del nodo en el caso de que este sea el ultimo nodo de un circuito de datos A esto se le suele llamar politicas de salida o en ingles exit policies Por ejemplo puede definir una lista de posibles direcciones IP o una serie de puertos a los cuales tiene que estar dispuesto el nodo de salida para llevar el trafico La exit policy puede ser variable a lo largo del tiempo Analogamente se pueden establecer politicas de entrada o entry policy Por ejemplo podriamos usarlas en una organizacion para obligar a que se use un punto de entrada a la red de encaminamiento cebolla Observar que las politicas de salida son criticas en infraestructuras distribuidas de voluntarios ya que cada OR puede restringir el tipo de trafico que puede salir de su nodo 8 Control de congestion Editar En las redes del mundo real es necesario balancear la carga y realizar control del flujo Esto provoca que sea necesarias comunicaciones de control entre los nodos y una vision del trafico de forma global Para ello algunos sistemas Ej Tor permite a los nodos en los bordes de la red detectar congestiones y enviar alli menos datos hasta que esto se haya subsanado 8 Integridad extremo a extremo Editar Muchos sistemas Ej Tor proveen integridad extremo a extremo para evitar que algun nodo del circuito pueda cambiar el contenido de los mensajes de datos que pasan por ellas para por ejemplo alterar el servidor web al que se esta pidiendo conexion o cualquier otra utilidad Esta integridad se verifica antes de que los datos salgan de la red 8 Comparticion de circuitos entre distintos flujos Editar Para mejorar la eficiencia y el anonimato algunos sistemas Ej Tor permiten que varios flujos sean multiplexados sobre el mismo circuito de comunicacion 8 Numero de saltos variable Editar Algunos sistemas Ej Tor permiten a los iniciadores cambiar parcialmente la topologia del circuito Por ejemplo se puede aprovechar para permitir la salida del circuito usando un nodo intermedio Leaky pipe circuit topology y de este modo frustrar ataques que se basan e detectar y atacar el ultimo nodo de un circuito 8 Ineficiencia Editar Utilizar exclusivamente criptografia de clave publica para cifrar cada capa de la cebolla es muy costoso a nivel de computacion Esto es especialmente importante para aplicaciones de baja latencia Por esta razon en muchos casos es necesario el uso de criptografia simetrica la cual es en general mucho mas barata computacionalmente 3 Para poder usar criptografia simetrica es necesario que todas las partes que se comunican compartan una clave que mantienen en secreto Se puede aprovecha la criptografia de clave publica para en un primer paso establecer esta clave simetrica compartida y que a partir de ahi se use esta a modo de clave de sesion Por esta razon en estos casos se dice que usamos la criptografia de clave publica computacionalmente mas cara para establecer un circuito ruta de claves simetricas compartidas Una vez establecido el circuito este puede ser utilizado para ir transportando los mensajes usando criptografia simetrica 3 El circuito construido puede usarse de forma bidireccional Un ejemplo de esquema usando claves simetricas podria ser el siguiente Se establecen una serie de claves simetricas compartidas entre los routers A continuacion los datos son enviados envueltos en capas creadas usando las claves simetricas Cada enrutador quitara una capa de cifrado de los datos que le pasan usando la clave simetrica que obtuvo cuando se establecio el circuito De esta forma los datos original emergeran en claro al final del circuito El destinatario puede responder con otro mensaje Este mensaje en cada nodo se le anadira una capa de cifrado simetrico y luego se mandara al siguiente Cuando llega al destino el iniciador de la comunicacion llegara como una estructura de datos con las distintas capas de cifrado El iniciador de la comunicacion para obtener el mensaje de vuelta en claro quita las distintas capas descifrando con las distintas claves simetricas utilizadas Entre los enfoques que se han ido proponiendo para conseguir encaminamiento de cebolla se han propuesto distintas formas de establecimiento de circuito usando claves simetricas construidos a partir de criptografia de clave publica Sin embargo los sistemas utilizados no son la panacea teniendo cada uno sus propios inconvenientes por lo que se considera un problema abierto habiendo actualmente nuevas propuestas de formas de establecer los circuitos algunos usando solo criptografia asimetrica Uso de la criptografia para implementar el encaminamiento cebolla Editar En una red que usa encaminamiento cebolla la decision mas importante es el tipo de criptografia que se usa y la forma en que esta se usa Esto es debido a que esta decision sera crucial en la eficiencia y en la seguridad del sistema Veamos algunos de los ejemplos mas representativos y sus repercusiones en la seguridad Enfoque usando criptografia asimetrica tradicional Editar Seria el enfoque utilizado en la idea primigenia Este sistema es vulnerable a ataques basados en capturar el trafico Efectivamente supongamos que un atacante puede grabar todos los datos que intercambian los routers Si finalmente el atacante consigue comprometer todos los routers acceder a sus claves privadas entonces este puede descifrar todo el trafico almacenado anteriormente Para acotar este problema podriamos cambiar periodicamente las claves publica y privada de los routers Para ello estableceriamos un periodo de tiempo a la finalizacion del cual las claves caducarian y seria necesario establecer nuevas claves La clave publica habria que difundirla y la antigua clave privada se destruiria para que no pudiera ser obtenida nunca asegurando asi la persistencia de la seguridad del trafico que se realizo usando la antigua clave Serie bueno que el cambio de claves fuera frecuente ya que esto limitaria la cantidad de tiempo que tiene A para comprometer B y C pero a la vez requeriria que los routers del sistema contactaran frecuentemente con un sistema que les actualizara las nuevas claves lo que llevaria a problemas de escalabilidad Enfoque usando claves simetricas de sesion establecidas desde el primer enrutador Editar Algunos sistemas por ejemplo Onion Routing establecen circuito de claves simetricas a partir de criptografia de clave publica 3 mediante una estructura de datos con capas que se pueden representar por el siguiente esquema suponiendo que estamos en una camino de encaminamiento con tres saltos R1 R2 R3 E P K R 1 K 1 R 2 E P K R 2 K 2 R 3 E P K R 3 K 3 Pad displaystyle E PK R 1 K 1 R 2 E PK R 2 K 2 R 3 E PK R 3 K 3 mbox Pad dd dondeP K R i displaystyle PK R i es la clave publica R i displaystyle R i R i displaystyle R i es la direccion del nodo R i displaystyle R i K i displaystyle K i es un material que permite establecer la s clave s de sesion compartida puede haber una para cada sentido de la comunicacion entre el origen de la comunicacion el iniciador y R i displaystyle R i en ingles se le llama key seed material dd Observar que la capa final se identifica porque no contiene ni direccion destino ni datos con significado para ser transmitidos Este sistema es el que se usa por ejemplo en Onion Routing 9 En este sistema en las capas de cebolla aparece lo que se llama key seed material el cual consiste en 128 bits que aplicandole SHA producen las claves simetricas que luego se usan para establecer las claves simetrica Onion Routing introduce ademas en su formato de mensaje un campo que permite meter como parametro el algoritmo de cifrado simetrico que se va a usar en cada sentido de la comunicacion El sistema soportaba DES OFB y RC4 Dependiendo del algoritmo que se seleccione se calcula la clave a partir del key seed material de distinta forma En este sistema el numero de mensajes necesarios para establecer el circuito entre los routers de la red es igual al numero de routers que intervienen Por ejemplo si A se quiere comunicar con B a traves de R1 R2 y R3 y en ese orden son necesarios los siguiente mensajes A R1 R1 R2 R2 R3La 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 enrutador malicioso y por tanto el atacante puede descifrar todo lo que pasa y ha pasado por el Si A graba todo el trafico y en el ultimo momento se compromete B el cual sabe quien es el ultimo nodo C entonces se compromete C y A puede saber con quien se esta comunicando el iniciador 10 Una posible mejora para este problema es cambiar frecuentemente las claves publicas de cada nodo 11 Esto limita la cantidad de tiempo que tiene A para comprometer B y C pero requiere que los routers del sistema cotacten frecuentemente con un sistema que les actualice las nuevas claves lo cual puede tener problemas de escalabilidad 10 11 Enfoque telescopico Editar Otros sistemas Ej Tor y Cebolla realizan una construccion incremental e interactiva del circuito a la que llaman enfoque telescopico del ingles telescopic approach 3 7 En concreto Tor se apoya en el Tor Authentication Protocol siglas TAP cuya seguridad fue probada 12 en el modelo de oraculo aleatorio Tor lo que hace es realizar una ejecucion secuencial de multiples instancias de TAP 13 Para establecer el circuito realiza una autenticacion RSA criptografia de clave publica de un solo sentido ya que el iniciador nunca se autentica y se aprovecha el protocolo de establecimiento de claves de Diffie Hellman para establecer una clave simetrica entre cada enrutador de la ruta y el iniciador de la comunicacion Para ello se utiliza el circuito parcialmente construido hasta ese momento Podemos decir que en cada tramo sucesivo del circuito se realiza una negociacion interactiva de claves protocolo de establecimiento de claves de Diffie Hellman Por ejemplo cuando se establece una clave para el primer salto el iniciador de la conexion tunela a traves de esa conexion para establecer otra clave de sesion con el segundo enrutador y asi sucesivamente Cuando el circuito ya no se usa las claves de sesion se destruyen 14 En el TAP la clave publica del nodo solo se utiliza para iniciar la comunicacion durante la cual se establece la clave temporal de sesion via 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 sesion finalice el circuito ha dejado de usarse y se destruyan las claves de sesion si se compromete un enrutador se obtiene su clave privada esto no permite al adversario recuperar las claves de sesion eliminadas y descifrar asi el trafico cifrado bajo esa clave que pudiera tener almacenado Por tanto tenemos perfect forward secrecy 7 15 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 sesion diferentes y por tanto ya no es un ataque efectivo 7 Otra ventaja de estos sistemas es que son mas robustos frente a nodos que no acepten conexiones siendo la informacion que tiene que aportar el sistema por ejemplo mediante un servicio de directorio menos importante Por ejemplo si el tercer enrutador intermedio esta caido durante el establecimiento del circuito los dos primeros y el iniciador solo tienen que escoger un nodo alternativo para sustituirlo 10 En este sistema el numero de mensajes necesarios para establecer el circuito entre los routers de la red es de complejidad O n2 Por ejemplo si A se quiere comunicar con B a traves de R1 R2 y R3 y en ese orden son necesarios los siguiente mensajes A R1 A R1 tunelado de conexion con R2 R1 R2 A R1 tunelado de conexion con R3 R1 R2 tunelado de conexion con R3 R2 R3Observar que el establecimiento de la conexion tiene una complejidad O n2 para el numero de mensajes transmitidos como para el numero de cifrados descifrados Esta forma de trabajar en sistemas de baja latencia suele ser solo viable si el numero de nodos intermedios se mantiene bajo Por ejemplo cuando se usa Tor se suele restringir el numero de nodos intermedios a 3 Overlier and Syverson 15 10 mejoran la eficiencia de Tor usando un protocolo de establecimiento de clave Diffie Hellman medio certificada 7 Para ello confia en parametros de Diffie Hellman precalculados cuyos componentes publicos son publicados y actualizados regularmente por cada enrutador en el servicio de directorio Los clientes pueden entonces generar sus propios parametros de Diffie Hellman y usando la informacion publicada por los routers calcular las claves de sesion que se compartiran con los routers en los circuitos Estas propuestas reducen el coste de computacion pero mantienen la complejidad de comunicacion en O n2 Enfoques basados en criptografia asimetrica no basada en PKI Editar Se han hecho diversas propuestas que persiguen establecer los circuitos en un solo paso para reducir la sobrecarga de coste de computacion y de comunicaciones que tienen los sistemas que se basan en establecer circuitos en varios pasos Enfoque telescopico Sin embargo el enfoque telescopico proporciona buenas propiedades como el secreto hacia adelante en ingles forward secrecy 16 17 14 Informalmente se dice que esta propiedad es la que se da cuando se garantiza que las propiedades de seguridad permanecen incluso si el adversario puede corromper todas las partes que intervienen y aprender sus claves secretas despues de que estas hayan caducado Sobre la base de esta propiedad podemos precisar aun mas y diferenciar asi entre dos propiedades Se dice que hay secreto hacia adelante inmediato en ingles immediate forward secrecy si se mantiene el secreto hacia adelante de todas las sesiones pasadas que han finalizado incluso si un adversario compromete un enrutador Observar que el secreto permanece aunque las claves privadas no hayan cambiado porque estan en su periodo de validez Este tipo de propiedad es satisfecha por Tor usando su Enfoque telescopico Se dice que hay secreto hacia adelante eventual en ingles eventual eventual forward secrecy si se mantiene el secreto hacia adelante aunque un adversario pueda corromper un enrutador despues de un especifico periodo de tiempo despues de que las claves privadas de los routers hayan cambiado Se ha demostrado 18 que es imposible obtener secreto hacia adelante immediato usando establecimiento de circuito con un solo paso de un modo no interactivo Por tanto lo que intentamos buscar es secreto hacia adelante eventual 16 14 Es evidente que es posible conseguir secreto hacia adelante eventual cambiando frecuentemente las claves asimetricas de los routers criptografia asimetrica de forma que se minimice el periodo de tiempo y por tanto el impacto de que se comprometiera la clave de un enrutador Una vez que se tiene la clave privada de un enrutador entonces el atacante solo puede violar la seguridad de la comunicacion en el periodo de validez de esa clave Implementar esta idea usando una PKI tradicional cambiando las claves privada publica asociada a cada enrutador es muy complicado en la practica ya que fuerza a los enrutador a generar nuevas claves a generar su correspondiente certificado valido a publicar dicho certificado y a que los usuario repetidamente obtengan dicho certificado 16 Para conseguir secreto hacia adelante eventual de una forma mas eficiente se han hecho varias propuestas usando criptografia asimetrica que no usa PKI criptografia basada en identidad criptografia sin certificado 16 Usando criptografia basada en identidad Editar Aniket Kate y otros 10 18 han propuesto usar esquemas de criptografia basada en identidad para construir un protocolo con encaminamiento cebolla al que han llamado PB OR del ingles pairing based onion routing En la criptografia basada en identidad las claves publicas y las claves privadas de las partes se obtienen a traves de un confiable Centro de Generacion de Claves o KGC del ingles Key Generation Center que suministra claves con un periodo de validez determinado PB OR usa la idea original del encaminamiento cebolla para cifrar mensajes usando la clave publica del enrutador con la peculiaridad de que en este caso las claves son suministradas mediante el KGC y tienen asociadas el periodo de validez Este sistema tiene dos problemas La existencia de un KGC confiable hace que este pueda descifrar cualquier mensaje de la red key scrow problem Esto puede ser resuelto utilizando por ejemplo un KGC distribuido 19 Construir este sistema no es para nada trivial y tiene sus propios problemas Se requiere que los routers interactuen con el KGC para obtener las nuevas claves secretas cada vez que acaba el periodo de validez Aunque tienen la ventaja de no tener que gestionar y verificar certificados 16 Mario Catalano Mario Di Raimondo Dario Fiore Rosario Gennaro y Orazio Puglisi han propuesto 20 un sistema al que llaman fs ID OR que usa un sistema de cifrado basado en identidad seguro hacia adelante siglas fs IBE para las claves publicas de los routers El circuito se forma de forma no interactiva y en un solo paso Este sistema logra eventual forward secrecy sin tener que usar KGC como necesitabla PB OR ni tiene que comunicar ninguna clave publica ya que permanece estatica como necesitaban PB OR o CL OR Al no ser interactivo tampoco tiene una complejidad cuadratica sino lineal como tenia el enfoque telescopico El problema que tiene este sistema es que la KGC tiene que ser confiable ya que puede descifrar cualquier mensaje key scrow problem Para resolver este problema propone hacer modificaciones al esquema usando Criptografia sin certificados o PKI Usando criptografia sin certificados Editar Catalano y otros 17 han sugerido usar criptografia sin certificados y han definido dos protocolos con encaminamiento cebolla CL OR y 2 CL OR Sin embargo este sistema resucita los problemas de escalabilidad que tenian los sistemas que usaban PKI con claves cambiantes En efecto cada enrutador tiene que generar una clave asimetrica y comunicarse con otra entidad por ejemplo un servidor de directorio para que publique la parte publica y que pueda ser descargada por el resto de usuarios para su uso 16 11 Anonimato en la localizacion de la entidad que responde Editar Las redes con encaminaminamiento cebolla tradicionalmente proporcionan anonimato en la localizacion del que inicia la comunicacion el iniciador Sin embargo tambien es interesante perseguir el anonimato en la localizacion de la entidad que responde Ha habido algunas propuestas interesantes para conseguir esto Veamos algunas de ellas Reply onions Editar La red Onion Routing disponia de lo que llamaba reply onion 21 22 La red Onion Routing usa un enfoque usando criptografia simetrica establecida a traves de las claves asimetricas para establecer una conexion Esta conexion se puede aprovechar para transmitir mensajes en ambos sentidos de la comunicacion Si A se quiere comunicar con B a traves de los nodos W X Y y Z el onion que construiria el nodo W y que enviaria a X tendria la siguiente estructura P K X exptime X Y F f x K f x F b x K b x P K Y exptime Y Z F f y K f y F b y K b y P K Z exptime Z NULL F f z K f z F b z K b z PADDING displaystyle PK X mbox exptime X Y F fx K fx F bx K bx PK Y mbox exptime Y Z F fy K fy F by K by PK Z mbox exptime Z mbox NULL F fz K fz F bz K bz mbox PADDING dd donde P K X exptime X Y F f x K f x F b x K b x datos displaystyle PK X mbox exptime X Y F fx K fx F bx K bx langle mbox datos rangle indica cifrar con la clave publica de X un tupla formada por el tiempo de caducidad el destinatario del siguiente salto el par de configuracion de la comunicacion hacia forward X F f x K f x displaystyle F fx K fx y el par de configuracion de la comunicacion desde backward X F b x K b x displaystyle F b x K b x Una comunicacion unidireccional queda configurada por un par formado por F K displaystyle F K que especifican el algoritmo de cifrado a usar F y la clave K Si el destinatario es NULL entonces quiere decir que no hay enrutador siguiente 21 Sin embargo Que pasa si el iniciador espera una respuesta que puede demorarse bastante tiempo Por ejemplo esta situacion se puede dar para responder a correos electronicos anonimos enviados usando la red Una solucion obvia es mantener la conexion abierta para permitir esa respuesta Sin embargo esto lleva a un desaprovechamiento de recursos Otra solucion es utilizar reply onions despues de que la conexion original haya sido terminada 22 Los reply onions construyen un circuito desde el destinatario hasta el iniciador de una peticion anterior en la que ese iniciador queria mantener su localizacion oculta El reply onion es creado por el iniciador en la comunicacion original y se lo envia al destinatario para que pueda posteriormente usarlo Posteriormente ese reply onion es enviado por el destinatario al enrutador que le sirvio la peticion para que llegue hasta el iniciador original para asi establecer la conexion Una vez establecida la conexion cada enrutador funciona de la misma forma que actua con un onion normal La estructura de datos del reply onion es similar que la de los onion normales y los routers la procesan de la misma forma 22 Usando la misma notacion que antes el onion replay para que B responda a A usando la ruta W Z Y y X tendria la siguiente estructura P K Z exptime Z Y F b z K b z F f z K f z P K Y exptime Y X F b y K b y F f y K f y P K X exptime X W F b x K b x F f x K f x P K W exptime W NULL NULL NULL NULL NULL IDENTITY F b x K b x F f x K f x F b y K b y F f y K f y F b z K b z F f z K f z PADDING displaystyle PK Z mbox exptime Z Y F bz K bz F fz K fz PK Y mbox exptime Y X F by K by F fy K fy PK X mbox exptime X W F bx K bx F fx K fx PK W mbox exptime W mbox NULL mbox NULL mbox NULL mbox NULL mbox NULL mbox IDENTITY F bx K bx F fx K fx F by K by F fy K fy F bz K bz F fz K fz mbox PADDING dd La diferencia fundamental entre las dos estructura es la capa mas interna Ahora no estamos ante un relleno sino que contiene suficiente informacion para permitir al enrutador del iniciador alcanzar al iniciador y toda la informacion criptografica necesaria para cifrar los datos que recorren el circuito virtual 21 Los reply onion tambien se pueden usar para dar acceso a servicios que quieren mantener su localizacion oculta En este caso el iniciador publica un reply onion el cual puede ser obtenido y usado por el destinatario A continuacion el destinatario envia el reply onion al enrutador designado para establecer el circuito hasta el iniciador 22 Un problema abierto en este tipo de configuraciones es que el reply onion puede no ser funcional en el momento en que el destinatario decida usarlo 3 Puntos de encuentro Editar La idea de los puntos de encuentro denominados por las siglas RP del ingles Rendezvous Points es en lugar de explicitamente enviar un paquete a un destino establecer un punto de encuentro que actue como nivel de indireccion De esta forma desacoplamos el acto de enviar del acto de recibir Cada extremo de la comunicacion envia sus mensajes a ese punto de encuentro y desde ahi son enviados a donde corresponda usando circuitos que esconden la localizacion del destino Por ejemplo podriamos usar este sistema para conectarnos a un servidor de chat IRC Ejemplos de sistemas que soportan esta funcionalidad es la antigua Onion Routing y su evolucion Tor 3 Servicios que ocultan la localizacion Editar Los servicios que ocultan la localizacion por ejemplo la direccion IP de quien provee el servicio Ej un servicio web accesible solo desde la red de encaminamiento cebolla se les suele llamar servicios de localizacion oculta en ingles location hidden services o simplemente servicios ocultos en ingles hidden services Por ejemplo esta funcionalidad es soportada por Tor Para ello los proveedores de servicios generan una clave publica y privada para identificar su servicio A continuacion anuncian su servicio a distintos routers haciendo peticiones firmadas con su clave publica para que sirvan como punto de contacto A los routers con esta funcion se les llama puntos de introduccion en ingles 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 lt valorhash gt onion donde el valor hash es de 16 caracteres en Base32 y esta generado usando una funcion hash sobre la clave publica del servicio Cuando un cliente se quiere conectar a cierta FQDN por ejemplo ha encontrado la direccion a traves de un sitio web consulta un servicio de busqueda lookup service y este le indica un punto de introduccion introduction point y la clave publica del servicio Observar que para mantener el anonimato es necesario que la consulta del servicio de busqueda se realice a traves de Tor A continuacion el cliente se conecta con un punto de encuentro esto lo podria haber hecho antes y se establece un identificador de esa conexion rendezvous cookie A continuacion el cliente le envia un mensaje firmado con la clave publica del servidor al punto de introduccion indicandole el punto de encuentro donde esta 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 continuacion el punto de introduccion envia 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 el 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 continuacion el punto de encuentro conecta al cliente y el servidor y se establece una comunicacion normal 8 23 Clasificacion EditarLos distintos sistemas que implementan este tipo de encaminamiento se distinguen por como se gestionan las claves en como se construyen y procesan los mensajes en como los nodos se conocen entre si en como se eligen los caminos o paths que recorren los mensajes en si hay retardos intencionados y de que tipo en si hay trafico de relleno en el protocolo al que dan servicio Ej IP TCP HTTP etcetera Veamos algunas de esas clasificaciones segun distintos criterios Segun los retardos Editar Podemos clasificar las redes que usan encaminamiento cebolla segun los retardos que introducen los routers desde que el mensaje llega a un nodo hasta que ese mensaje sale del nodo Podemos distinguir dos tipos De alta latencia Este tipo de redes introducen de forma intencionada retardos comparativamente largos y variables Son mas resistentes a ataques pero introducen demasiados retardo para trafico interactivo Ej navegacion web chat o conexiones SSH Ejemplos de este tipo de redes son MixMaster Babel y Mixminion De baja latencia Este tipo de redes son adecuadas a trafico interactivo Debido a esta restriccion no introducen retardos artificiales o los introducen pero son de muy pequena duracion Este tipo de redes tienen dificultades en contrarrestar ataques Basados en escuchar los dos extremos de la comunicacion y hacer correlaciones de tiempo y volumen de trafico Que introducen trafico entrante con patrones de tiempo y buscan patrones relacionados con ellos en el trafico de salida Ejemplos de este tipo de redes son Freedom Network Onion Routing y Tor Segun los circuitos Editar Podemos clasificar las redes de cebolla atendiendo a si se establecen o no circuitos desde el origen al destino tambien llamados caminos o tuneles por los que circulan mensajes De esta forma podemos distinguir Redes en las que se establecen circuitos La mayoria de redes de cebolla funcionan de esta manera A su vez podemos dividir este tipo de redes segun el numero de pasos realizados para elegir el circuito Redes en las que el camino que tiene que recorrer un mensaje se decide en un solo paso Ejemplos de este tipo de redes son Freedom Network y Onion Routing Redes en las que el camino se va decidiendo poco a poco en varios pasos Ejemplo de este tipo de redes es TOR Redes es las que no se establecen circuitos 24 Se trata del llamado Encaminamiento cebolla de caminos dinamicos en ingles Dynamic Multipath Onion Routing En estas redes cada paquete desde el origen al destino puede elegir un camino diferente Ejemplo de este tipo de redes es MORE Segun la naturaleza de los routers Editar Marc Rennhard propone 25 clasificar las redes con encaminamiento de cebolla en funcion de la naturaleza de los nodos Basandose en esto distingue entre Redes estaticas Estos sistemas tienen unos relativamente escasos y bien conocidos routers de cebolla que son usados por un numero mucho mas grande de usuarios Por eso decimos que son estaticas Ejemplos de este tipo de sistemas son Onion Routing Freedom Network y Tor Este tipo de redes se pueden clasificar a su vez en funcion de quien proporciona los routers Podemos distinguir Redes estaticas con routers proporcionados por voluntarios En muchas redes estaticas los onion routers son proporcionados por voluntarios individuales o entidades colaboradoras Es dificil encontrar voluntario o entidades independientes que aporten sus recursos para proporcionar desinteresadamente onion routers a la red En especial en este tipo de redes que proporcionan cierto grado de anonimato y que pueden ser usadas como soporte para actividades controvertidas Ej publicacion de informacion comprometida o simplemente delictivas Ej trafico de drogas Ejemplo de este tipo de redes son MixMaster o Tor Redes estaticas con routers proporcionados como un servicio comercial En estos sistemas una compania proporciona un servicio de anonimato para el que es necesario el pago de cierta cantidad para usarlo Para realizar el servicio la empresa realiza unas inversiones y proporciona el servicio directamente o a traves subcontratas La ventaja de este tipo de sistemas es que el servicio esta controlado por una sola organizacion y se pueden tomar medidas centralizadas para paliar cualquier problema que pudiera haber La gran desventaja de estos sistemas es que debido al gran control que ejerce la organizacion es necesario tener confianza en que ella misma no va a comprometer nuestra privacidad Otra desventaja es que estos sistemas stan enfocados a ser rentables y proporcionar un alto grado de anonimato suele estar renido con la rentabilidad necesitaria mucho trafico de relleno Un problema para el exito de este tipo de redes es que es dificil vender una servicio de anonimato no confiable al 100 Un ejemplo de este tipo de sistemas fue la red Freedom Network cerrada en 2001 Redes dinamicas Estos sistemas estan compuestos por onion routers que aparecen y desaparecen una y otra vez Por eso decimos que son dinamicas Ejemplos de este tipo de sistemas son los sistemas peer to peer Tarzan y MorphMix en los que cada usuario es al mismo tiempo un onion router Debilidades EditarEl encaminamiento de cebolla no proporciona un anonimato total de los interlocutores contra todo tipo de atacantes que escuchan las comunicaciones Sin embargo dificulta bastante esta tarea El grado de dificultad que aporta es generalmente funcion del numero de routers de la ruta elegida y del numero de esos routers que son maliciosos o que han sido comprometidos Ejemplos de ataques Editar Analisis de tiempos en ingles Timing analysis Analizando el flujo de mensaje que pasan a traves de un nodo poco cargado podemos deducir la correspondencia entre ciertos mensajes de entrada y otros de salida Para evitar esto se propone el uso de mensajes del mismo tamano trafico de relleno y la introduccion tiempos de espera artificiales que lo dificulten Ataques para la denegacion de servicio en ingles Denial Of Sevices attacks En este tipo de redes es facil desarrollar ataques de denegacion de servicio por ejemplo forzando a muchos routers a realizar una fuerte cantidad de operaciones criptograficas o agotando el ancho de banda Para evitar este tipo de ataques de forma radical se han propuesto sistemas en los que se establece alguna forma de moneda digital que los clientes tienen que pagar para usar los servicios del sistema Por ejemplo se podrian usar sistemas que obligaran a los usuario a realizar un esfuerzo importante y que fueran faciles de verificar Es aplicar la misma idea que Hashcash Hay distintas formas de implementar ataques de denegacion de servicio veamos un ejemplo Ataques de replay 26 Los sistemas con encaminamiento de cebolla son vulnerables a ataques de replay que se basan en capturar mensajes y luego los reinyectan en la red con el objetivo de sobrecargarla y que deje de funcionar ataque de denegacion de servicio Para evitar este tipo de ataques es habitual que los routers detecten cuando un paquete ya ha sido procesado y por tanto descarten ese paquete y que los propios mensajes tengan un tiempo de validez que una vez agotado permita que los routers eliminen esos mensajes dd Ataques de interseccion en ingles Intersection attacks 27 28 Este ataque se basa en obtener una coleccion de conjuntos de nodos que sabe que contienen el iniciador de la comunicacion A partir de este conjunto podemos sacar conclusiones validas simplemente hallando la interseccion de estos conjuntos Si la interseccion es solo un nodo entonces se puede estar seguro de quien es el iniciador Para que los distintos conjuntos de nodos que vamos obteniendo sean distintos y por tanto tenga sentido la hacer la interseccion podemos analizar los nodos que se desconectan o entran en la red mientras cierto circuito continua funcionando sin ningun tipo de problema El coste de este tipo de ataques es significante si el tamano de la red es grande pero puede ser factible en algunos escenarios Ataques de predecesor en ingles Predecessor attacks 29 30 31 Este tipo de ataques se basan en dos suposiciones Hay una conexion recurrente entre un iniciador y un destinatario que se intercambian mensajes En los mensajes transportados hay informacion que puede ser utilizada por el atacante para identificar esa conexion recurrente Podemos justificar estas suposiciones basandonos en como se comportan las aplicaciones que usan ciertos protocolos Por ejemplo cuando usamos HTTP FTP SSH Telnet o IRC normalmente nos conectamos recurrentemente al mismo servidor En general los routers de una red con encaminamiento de cebolla no tienen conexiones totalmente estables Cuando un nodo se desconecta cualquier circuito en el que participara ese nodo se ve afectado y tiene que volver a configurarse en ingles se le llama chain reformation A este evento le vamos a llamar reset Al periodo de tiempo entre dos resets lo vamos a llamar una ronda Los ataques de predecesor se basan en los siguiente Si un nodo comprometido intercepta un mensaje el nodo predecesor tendra una probabilidad mas alta de ser el nodo iniciador comparado con otros nodos Por tanto para realizar el ataque el atacante estudia las rondas en las cuales se envian mensajes que son parte del flujo que estamos estudiando y que pasan a traves de nodos comprometidos los cuales almacenan de forma pasiva toda la informacion para poder hacer luego el analisis A partir de ahi se establece el nodo predecesor con probabilidad mas alta Ataque basado en capturar el trafico de los nodos de salida Los nodos de salida los ultimos de la cadena de routers tienen un acceso completo al contenido que se transmite desde el origen al destino Basandose en esto ha habido 32 ataques que han capturado informacion privilegida Este tipo de ataques pueden ser resueltos empleando cifrado extremo a extremo por ejemplo unsando SSL Los sistemas que se han ido anadiendo al esquema para mejorar las presentaciones tienen sus propios puntos debiles que pueden ser objeto de ataque Ej de ataques sobre estos elementos Ataques contra el servicio de que directorio que suele usarse para proveer de informacion de configuracion Ataques contra los puntos de encuentro 33 Vease tambien EditarTor Peer to peer anonimoReferencias Editar Sumoza Matos Rodolfo Septiembre de 2008 Sistemas anonimos en escenarios globales Universidad Complutense de Madrid p 50 Consultado el 16 de noviembre de 2015 D Goldschlag M Reed y P Syverson Hiding Routing Informations In proceedings of the First International Workshop on Information Hiding 1996 LNC vol 1174 pp 137 150 a b c d e f g h Paul Syverson A peel of Onion ACSAC 11 Orlando Florida USA Diciembre de 2011 Marc O Morain et all Onion Routing for Anonymous Communications Archivado el 6 de mayo de 2012 en Wayback Machine a b B V V Sri Raj Dutt et all Implementation of Onion Routing Bassam Zantout y Ramzi A Haraty I2P Data Communication System Lebanese American University ICN 2011 a b c d e M Edman y B Yener On Anonymity in an Electronic Society A Survey of Anonymous Communication Systems ACM Journal Name Vol V No N Month 2008 Paginas 1 39 a b c d e f Roger Dingledine et al Tor The Second Generation Onion Router Paul F Syverson et all Anonymous Connections and Onion Routing a b c d e Aniket Kate et al Pairing Based Onion Routing a b c Aniket Kate y Ian Goldberg Using Sphinx to Improve Onion Routing Circuit Construction Goldberg I On the security of the Tor Authentication protocol In Danezis G Golle P eds Privacy Enhancing Technologies Volume 4258 of Lecture Notes in Computer Science Springer 2006 316 331 Ian Goldberg On the Security of the Tor Authentication Protocol David R Cheriton School of Computer Science University of Waterloo a b c M Backes et al Provably Secure and Practical Onion Routing a b Lasse Overlier y Paul Syverson Improving efficiency and simplicity of Tor circuit establishment and hidden services a b c d e f Dario Catalano et al Fully Non Interactive Onion Routing with Forward Secrecy a b Dario Catalano et al Certificateless Onion Routing a b Aniket Kate et al Pairing Based Onion Routing with Improved Forward Secrecy A Kate y I Goldberg Distributed Private Key Generators for Identity Based Cryptography In Proc 7th Conference on Security and Cryptography for Networks SCN pages 436 453 2010 Dario Catalano Mario Di Raimondo Dario Fiore Rosario Gennaro y Orazio Puglisi Fully Non Interactive Onion Routing with Forward Secrecy a b c Paul F Syverson et al Hiding Routing Information Workshop on Information Hiding Cambridge UK May 1996 a b c d Michael G Reed Paul F Syverson and David M Goldschlag Proxies for Anonymous Routing 12th Annual Computer Security Applications Conference San Diego CA December 9 13 1996 Peter Wayne Disappearing Cryptography Information Hiding Steganography amp Watermarking Third Edition Morgan Kaufmann 2009 Heiko Niedermayer Architecture and Components of secure and anonymous Peer to Peer Systems Department of Computer Science Technische Universitat Munchen Marc Rennhard Practical Anonymity for the Masses with Mix Networks Swiss Federal Institute of Technology Computer Engineering and Networks Laboratory Zurich Switzerland Febrero 2003 B V V Sri Raj Dutt et all Implementation of Onion Routing M Wright et al Defending anoymous Communications Against Passive Logging Mohan Balaji Areti et al Attacks on Anonymous Systems Matthew Wright et al An Analysis of the Degradation of Anonymous Protocols The Predecessor Attack An Analysis of a Threat to Anonymous Communications Systems by MATTHEW K WRIGHT MICAH ADLER BRIAN NEIL LEVINE University of Massachusetts Amherst and CLAY SHIELDS Georgetown University Fengjun Li et al A Node failure resilient Anonymous Communication Protocol through Commutative Path Hopping Bangeman Eric 30 de agosto de 2007 Security researcher stumbles across embassy e mail log ins Arstechnica com Consultado el 17 de marzo de 2010 OVERLIER L AND SYVERSON P Locating hidden servers In Proceedings of the IEEE Symposium on Security and Privacy Datos Q392095 Obtenido de https es wikipedia org w index php title Encaminamiento cebolla amp oldid 131389678, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos