martes, 19 de febrero de 2019

Prueba de Algoritmos de Correlación

Habiendo establecido los efectos que tiene el tráfico de red en Tor, regresamos a nuestro objetivo original: Poner a prueba métodos de correlación de sincronización en un tráfico real de Tor.

Modelo de Ataque


Para todas las siguientes definiciones, diremos que y son el primer y último router en un circuito, los cuales son controlados por un atacante cuya meta es violar el anonimato de Tor para un subconjunto de usuarios. Diremos que son flujos de células Tor observados en , y que son flujos de células Tor observados en , el router de entrada. Para cada , la meta del atacante es determinar si existe un tal que y sean el mismo flujo. Debido a que todos los algoritmos de correlación trabajan únicamente en dos flujos registrados al mismo tiempo, nos referiremos a los flujos a considerar como x y y por cuestiones de simplicidad.

Definiciones de Algoritmo de Correlación 


Consideramos dos métodos existentes de correlación -escogidos porque están bien definidos y trabajan de forma distinta- y un método de correlación que desarrollamos. Primero consideramos el método de correlación de Levine et al. [6], el cual es un producto de vector normalizado que tiene en cuenta datos de sincronización de todas la células Tor observadas, y que fue originalmente puesto a prueba en una simulación. Posteriormente consideramos el método propuesto por Murdoch y Zieliński [8], que funciona sin valorar los datos de sincronización de células individuales, y que originalmente fue testeado en datos reales. Finalmente, proponemos un nuevo y simplificado algoritmo de correlación que también funciona sin considerar información de células individuales, y que es significativamente menos intensivo computacionalmente que cualquiera de los otros dos métodos. 
Correlación de Levine et al. El método propuesto por Levine et al. utiliza datos de sincronización de todas las células Tor observadas. Mientras algunos ataques publicados previamente intentaban usar la sincronización entre células adyacentes como vectores de correlación, Levine et al. observaron que ese método es frágil porque es sensible a paquetes caídos. Su método es un producto de vector normalizado en una serie de tiempo generado a partir de los datos de sincronización observados, en vez de hacerlo directamente en los datos de sincronización.
Para construir una serie de tiempo , escogemos un margen de tamaño w, dividimos el flujo de paquetes z entre márgenes no-superpuestos de tamaño w (Con padding-cero (Zero-padded) para que la serie de tiempo inicie y termine al mismo tiempo), y contamos el número de paquetes en cada margen. El vector de conteo de paquetes es la serie de tiempo.
Definen la correlación-cruzada con el retardo d de la serie de tiempo de los flujos x y y como


con siendo el elemento i-ario () de la serie de tiempo , y siendo el promedio entre todos los en . Para sus análisis, Levine et al. usaron un retraso de 0 y un margen de tamaño 10 segundos.
Aquí, consideramos dos vectores y . La fórmula de correlación es el producto de de vector normalizado de estos dos vectores. El producto normalizado de dos vectores es más grande cuanto más cerca de ser vectores paralelos, por lo que un resultado grande indica que los dos vectores ( y, por lo tanto, los dos flujos de paquetes) están mucho más correlacionados. No obstante, el valor del producto de vectores estándar variará dependiendo de la magnitud de los vectores que se
comparen, así que es útil normalizar los valores. Esto puede ser hecho tomando ventaja de la relación entre el valor del vector normalizado y el ángulo entre los dos vectores.
Donde, a y b son vectores, es el producto de los vectores a y b, y es la magnitud del vector a . Para aislar y obtener el ángulo, podemos reescribir la fórmula de la siguiente manera:
Debido a que el dominio de arccos es (y ya que conocemos que el argumento es válido por la desigualdad de Cauchy-Schwarz), conocemos que el argumento también está en el rango . Puesto que arccos cambia y decrece constantemente de en ese intervalo, los dos vectores son paralelos cuando el argumento es 1, y antiparalelos cuando el valor es -1. El argumento para arccos en la fórmula anterior es el equivalente a la función de correlación, ya que el numerador en la fraction corresponde a la definición de producto de vectores, y el denominador es el producto de las magnitudes, calculadas usando el caso n-dimensional del teorema de Pitágoras.
Un problema con el método de correlación de Levine et al. es que el resultado no está definido en ciertos casos. Ya que el algoritmo sustrae el valor promedio de una serie de tiempo de cada index antes de hacer la correlación, una serie de tiempo con el mismo número en cada index terminará teniendo ceros, resultando en una indeterminación por dividir entre cero. Cuando eso ocurre, retornamos una correlación de -1, que significa que en efecto no tenemos en cuenta ese resultado. Asimismo, sólo consideraremos correlaciones con un retraso d de 0, ya que eso fue lo que Levine et al. descubrieron era efectivo.
Correlación de Murdoch y Zieliński. El método propuesto por Murdoch y Zieliński es una derivación de la fórmula de Bayes. Ellos modelan cada flujo p como un proceso Poisson con un tiempo inicial s, duración l, y una tasa r (paquetes promedio por segundo). Ya que el flujo real p no es observable, consideran entonces dos flujos x y y. Ambos pueden ser directamente observados por el atacante, y son modelados como procesos Poisson independientes desde los parámetros de p. Ellos pueden entonces derivar la probabilidad de que x y sean del mismo flujo usando la fórmula de Bayes:


Debido a que sólo desean probabilidades relativas (más que absolutas), ignoran todos los factores independientes de k, lo que les permite derivar la probabilidad final:


Π(n) = (n - 1)!, es el número total de paquetes en y, , es la magnitud observada de x , y , es la magnitud total observada de x y y.
La fórmula tiene tres partes, las cuales se multiplican entre sí para encontrar la probabilidad. La primera parte está basada en la tasa de paquetes observados en x y y, la segunda es un factor de corrección para la tasa, y la tercera parte es dependiente de la magnitud, lo cual ayuda a asegurar que sólo los flujos que ocurrieron casi al mismo tiempo y que duraron casi lo mismo son considerados.
Este método de correlación fue originalmente propuesto para ser usado por un adversario que controla los intercambios de Internet, fuera de la red Tor, y que pudiese observar únicamente muestras pequeñas (cerca de 1 de cada 2000 paquetes para cada flujo) de tráfico para un flujo dado. Sin embargo, este método de correlación puede ser usado dentro de la red Tor por un atacante que controle routers Tor, el cual es nuestro modelo de ataque. Un problema al usar este método de correlación en nuestro modelo es que sus probabilidades son estrictamente relativas y no normalizadas, así que no podemos establecer un punto de referencia que consideremos “suficientemente bueno” para que dos flujos se consideren correlacionados. Esto es problemático en casos donde quizá no necesariamente estemos viendo todas los flujos en la red, y por lo tanto no seamos capaces de correlacionar correctamente un x dado con un y observable.
El resultado final del cálculo de ésta correlación muchas veces tiene un exponente extremadamente pequeño (usualmente de miles negativos o decenas de miles). Ya que ésta fórmula sólo calcula probabilidades relativas, podemos tomar su logaritmo sin perder información. Tomamos ventaja de este hecho y usamos una aproximación de Stirling para factoriales grandes que puedan acelerar de forma significativa el cálculo de la correlación.
Correlación Simplificada. En el capítulo 3, cuantificamos los efectos de Tor en el tráfico de red, y descubrimos dos cosas al respecto. Primero, aprendimos que la latencia de células individuales viajando a través de Tor es variable, incluso dentro de un circuito dado. Segundo, aprendimos que el tiempo total que le toma a un flujo de paquetes entrar a Tor por un extremo es usualmente menor que el que le toma a dicho flujo salir completamente de Tor por el otro extremo. El primero de estos factores puede afectar a los algoritmos de correlación que dependan en la sincronización de paquetes individuales (como el algoritmo presentado por Levine et al.), y el segundo de estos factores puede afectar algoritmos de correlación que dependan de la sincronización general del circuito, como el presentado por Murdoch y Zieliński.
En un intento por contrarrestar ambos problemas, presentamos y probamos nuestro propio algoritmo de correlación. Este algoritmo tiene en cuenta dos factores: el tiempo inicial del circuito, y el número total de células Tor enviadas por el circuito. Para nuestro algoritmo de correlación, definimos la correlación c como


En el capítulo 3 observamos que el tiempo inicial del circuito es relativamente único, y por eso lo usamos como la primera parte de nuestra correlación. Nuestra correlación. Nuestra correlación se enfoca en la diferencia de tiempo inicial entre x y y, y toma en cuenta la diferencia como un porcentaje de un tiempo fijado. Ya que nuestras medidas de tiempo están en milisegundos, y debido a que, como vimos en el capítulo 3, 20 segundos es muchísimo más tiempo que cualquier retraso que se pueda presentar en un circuito, usamos 20 segundos (o 20.000 milisegundos) como nuestro tiempo fijado T. Cuando la diferencia de tiempo es pequeña, el primer factor será muy cercano a 1. A medida que la diferencia entre tiempos incrementa, esta se vuelve negativa, así que se localiza en el rango .
También sabemos que Tor garantiza la entrega de células de Tor, así que el número de células Tor en x y y debería ser el mismo después de tomar en cuenta cualquier célula usada para comunicarse con el router intermedio. (El proceso por el que se hace esto se explica en la siguiente sección). Por ende, usamos el conteo de células Tor (el número de células en el flujo x se denota ). Puesto que este factor es un porcentaje inverso del total de número de células enviadas en ambos flujos, su rango es [0,1].
Cuando se multiplican, los resultados varían en un rango de , Sin embargo, debido a que los resultados negativos significan que los circuitos tuvieron tiempos iniciales muy distintos, en realidad sólo necesitamos considerar resultados en un rango de [0,1]. Esto implica que los valores de correlación positivos son absolutos en vez de ser relativos, y que pueden ser comparados directamente durante múltiples tests del algoritmo, en vez de relativamente en una ejecución dada.
Además de ser más simple y usar menos información que los otros dos métodos previos, nuestro método de correlación simplificado también es significativamente más veloz al computar, pues depende únicamente en operaciones aritméticas básicas, y opera sólo con números que entran en la clase estándar int, haciéndolo una operación O(1) para realizar una única correlación de dos flujos. A diferencia de la correlación de Levine et al., que es O(n) en el número de paquetes observados para realizar una sola correlación porque necesita calcular un producto de vectores. La correlación de Murdoch y Zieliński es O(1) también cuando se usa la aproximación de Stirling, pero sigue siendo significativamente más lenta que nuestro método de correlación en la práctica.

Organización del Test


Controlamos un único router Tor abierto al público, el cual usaremos para recolectar datos para el test. Nuestro router es estable y un guardia, esto significa que algunos clientes lo usarán como su router de entrada. Lo usaremos para recoger información mientras éste sea el router de entrada o el router intermedio de un circuito. Así mismo, reuniremos datos de un router privado de salida usado exclusivamente por nosotros. Los datos agrupados consisten de las marcas de tiempo de las células RELAY enviadas y recibidas, junto con las direcciones y las identificaciones (ids) de circuito asociadas a cada célula. Puesto que no deseamos comprometer el anonimato de las personas utilizando nuestro router Tor, reemplazaremos cada dirección IP (que es la única información que registramos) con un string aleatorio único.
Crearemos flujos con nuestro router público como la entrada, un router intermedio aleatorio, y nuestra salida privada. Realizaremos una correlación mucho-a-uno, correlacionando todos los datos observados (llamados anteriormente) en nuestro router público de entrada con cada flujo individual (un dado) en nuestro router privado de salida.
La correlación para un flujo dado registrado en nuestro router privado de salida (y un algoritmo de correlación dado) será considerada parcialmente exitosa cuando el algoritmo de correlación sea capaz de identificar correctamente el flujo correspondiente al router de entrada. No obstante, esta información sólo le es útil a un atacante cuando saben que existe un tal que y provienen del mismo flujo, y así la correlación sólo será considerada totalmente exitosa cuando el valor incorrecto más elevado de correlación sea menor que todos los valores correctos de correlación (para todo ) en una ejecución dada. Si el algoritmo es completamente exitoso de manera consistente entonces el atacante puede establecer una marca para la correlación, lo que les permite determinar si existe o no un que provino del mismo flujo que , además de determinar qué flujo es.
Realizaremos tests con tres tipos de tráfico. Los primeros dos son el archivo de descarga de 1MiB y cliente ping discutidos en el capítulo 3, y el tercero es un archivo de descarga de 10KiB, que nos permite testear si la correlación puede ser hecha de forma exitosa en flujos muy pequeños.

Resultados

Los resultados de los test de algoritmos de correlación en 3 tipos de tráfico se presentan en la Figura 4.1 y la Figura 4.2. Aunque un atacante en realidad correlacionaría flujos que estén en el primer router del circuito, mostramos en el Capítulo 3 que los flujos de no-entrada no son esencialmente diferentes, así que presentamos los resultados combinados también para que podamos observar el desempeño de los algoritmos cuando se correlaciona un número mucho mayor de circuitos al mismo tiempo.

Resultados de la Correlación de Levine et al. Como podemos observar la correlación de Levine et al. sólo es efectiva para tráfico ping y las variaciones de margen de tiempo no son suficiente para hacerlo competitivo frente a los otro dos algoritmos de correlación para otros tipos de tráfico. Es muy probable que sea porque la correlación de Levine et al. depende en la sincronización de paquetes individuales, y, como ilustramos en el capítulo 3, la latencia del tráfico en Tor es altamente variable, incluso dentro del flujo de un paquete dado.
Resultados de la Correlación de Murdoch y Zieliński. El algoritmo Bayesiano tiene una tasa alta de éxito parcial, pero una tasa baja de éxito total. 
Esto implica que un atacante que utiliza el algoritmo Bayesiano habría tenido que correlacionar flujos correctamente casi todo el tiempo mientras el atacante posea información de todos (o casi todos) los flujos de paquetes posibles. Sin embargo, ya que el atacante controla routers Tor directamente en nuestro modelo de ataque, un atacante necesitaría controlar la mayor parte de la red Tor para que esto sea factible, por lo tanto es improbable que el algoritmo Bayesiano sea efectivo para un atacante que controla un pequeño número de routers si le importa prevenir falsos positivos. Debido a que el algoritmo Bayesiano solo ofrece correlaciones relativas, este resultado no es sorprendente: el algoritmo no está diseñado para manejar posibles falsos positivos, porque es mucho menos probable que ocurran en el caso de uso original. Esto se debe a que el algoritmo Bayesiano fue originalmente propuesto para el uso por un atacante que controle los intercambios de Internet que sirvan como nodos de conexión entre países. Dicho atacante sería capaz de observar cantidades de tráfico mayores a la vez que aquellos controlando un pequeño número de routers Tor.
Resultados de la Correlación Simplificada. Nuestro algoritmo presenta el mejor desempeño. Tiene una tasa casi perfecta de éxito parcial para todos los tipos de tráfico, esto significa que si un atacante es capaz de observar tanto el flujo de entrada como de salida, muy probablemente podrá realizar la correlación. Así mismo, presenta una alta tasa de éxito total, por lo tanto un atacante usando el algoritmo simplificado será capaz de identificar la mayoría de casos en los que intente correlacionar un flujo del cual no conoce el otro extremo. Tiene sentido, ya que nuestro algoritmo simplificado produce un valor de correlación absoluto que puede ser comparado de manera significativa entre flujos. Esto hace de nuestro algoritmo simplificado la mejor opción para el modelo de ataque especificado, pues le permite a los atacantes que controlen un pequeño número de routers algún grado de protección contra falsos positivos. Además los resultados de nuestro algoritmo simplificado son consistentes entre los tres tipos de tráfico que pusimos a prueba, indicando que la correlación de sincronización puede ser realizada en Tor incluso en casos donde hay tan poca información siendo enviada por un circuito. Los usuarios no pueden evadir atacantes que usen el algoritmo simplificado de correlación enviando menos tráfico. 
Aplicación de los Resultados. Un problema con nuestros resultados es que están basados en un único router público. Nuestros resultados no necesariamente se generalizan a atacantes ejecutando muchos routers, porque estarán observando significativamente mayor tráfico. Nuestro algoritmo simplificado depende de dos factores -el tiempo inicial de flujo y el número de células del flujo- que son relativamente únicos para la cantidad de datos que fuimos capaces de poner a prueba. Estos dos factores dejarán de ser tan únicos cuanta mayor información tengamos, y por lo tanto suponemos que nuestro método de correlación simplificado no se desempeñará tan bien.
Consideremos nuestro arreglo del test con un único router Tor. Basados en el número de circuitos creados a través de nuestro router en un período de tiempo t, el ancho de banda de nuestro router b, el total de ancho de banda de la red B, podemos estimar aproximadamente el número de circuitos en todo Tor en este tiempo: . (Dividimos entre 3 porque los circuitos Tor estándar tienen 3 routers de longitud, indicando que la creación de circuito tuvo que ocurrir en 3 routers para que un solo router fuese creado.) En nuestro caso, durante el test nuestro router tuvo un ancho de banda de aproximadamente 1MB/s, y el total de ancho de banda de la red fue aproximadamente 900MB/s. Esto significa que un atacante potencialmente tendría que correlacionar 300 veces los flujos que correlacionamos en el mismo margen de tiempo.
No obstante, nuestros modelos de ataque controlan directamente routers Tor, y pueden reunir información adicional para tener esto en cuenta. Más importante aún, tanto el router de entrada como el router de salida conocen la identidad del router intermedio para cualquier tráfico que envíen o reciban. Esto implica que el atacante sólo requiere intentar correlacionar tráficos de flujo que tengan el mismo router intermedio, lo cual reduce drásticamente el número de flujos que necesitan ser correlacionados. Incluso si excluimos los routers de salida completamente (y el mecanismo de selección de ruta de Tor no lo hace), bien hay más de 1.000 routers que puedan ser usados como router intermedio. Si pudiesemos asumir que cada uno de los 1.000 routers fueron escogidos equitativamente, eso significaría que tendríamos que ser capaces de reducir el número de flujos a correlacionar por un factor de 1.000, lo cual niega de sobremanera el hecho de que hay 300 veces tantos flujos promedio como observa nuestro router. Mientras algunos serán usados con mayor frecuencia que otros pues la selección de ruta de Tor se basa en el ancho de banda (junto con otros factores), aún habrá una reducción significativa en el número de flujos que necesitamos correlacionar.
Igualmente, un atacante puede tomar ventaja del control de un router Tor lo que le permite asociar flujos yendo en direcciones opuestas en el mismo circuito.
Los algoritmos de correlación anteriormente mencionados toman en cuenta únicamente flujos que viajan en la misma dirección, y el par (conteo de células inward, conteo de células outward) será más distintivo que el conteo de células viajando en una dirección, que también ayudará a contrarrestar el incremento en la cantidad de información.
Por lo tanto, es improbable que un atacante controlando cientos o incluso miles de routers necesite correlacionar un número significativamente mayor de flujos de los que hemos hecho nosotros mismo con nuestro router, implicando que los factores que son lo suficientemente únicos para realizar la correlación de nuestros datos permanecerán así para realizar la correlación cuando un atacante controle más routers.

por
Sam DeFabbia-Kane

No hay comentarios.: