\chapter{Sistemas An\'onimos}
\chapterauthors{Rodolfo Sumoza
\chapteraffil{Fundación Centro Nacional de Desarrollo e Investigación en Tecnologías Libres}
}

% Se crea un ambiente bibunit para el cual se creará la bibliografía
\begin{bibunit}[unsrt]

Tal como se plantea en \cite{cenditel_anonimato}, se puede indicar que la privacidad se trata de una necesidad natural e inherente de los seres humanos, la cual responde a la libre vo\-lun\-ta\-rie\-dad de escoger con quiénes cada uno se quiere relacionar, o se trata de elegir la información que se desea sea conocida en esa relación. Esto se deriva de la intimidad humana, como espacio de crecimiento y desarrollo personal, y de protección del ámbito privado personal, en el que la personas se pueden comportar y expresar de forma libre y sin temor o reticencia ante la presencia o intervención indeseada de terceras personas. Esto implica que se puede representar como la contraparte al ámbito público, el cual es un espacio en el que las interacciones sociales son constantes y necesarias, y se encuentran influenciadas y limitadas por normas y regulaciones jurídicas, sociales, culturales, religiosas, entre otras, las cuales determinan en todo momento las conductas a seguir y por lo general se establecen sanciones en los casos de violación de alguno de esos preceptos.

La privacidad también se puede pensar como una necesidad que se ha adquirido en el transcurso del tiempo, debido principalmente a factores como: 

\begin{enumerate}
\item El reconocimiento y protección de los derechos humanos fundamentales en el mundo. Históricamente, se observa que desde tiempos antiguos se manejaba la noción de un espacio propio de cada persona, que permitiera su crecimiento personal. Se penalizaban las violaciones a ese espacio, pero más por razones de seguridad pública y por relacionarlo a derechos patrimoniales. 
\item Las discusiones acerca de un derecho a la intimidad, a la vida privada, a la privacidad se presentan con mayor fuerza luego del surgimiento de la prensa escrita, ya que es el medio que empieza a posibilitar la transmisión de una misma información a gran número de personas. 
\item Se ha planteado como una necesidad que se ha visto influenciada y potenciada por la aparición, crecimiento y masificación de las TIC (computadores personales, la Internet, televisión, telefonía fija y móvil, etc), ya que éstas permiten la facil divulgación de gran cantidad de información en poco tiempo. 
\end{enumerate}

Sin embargo, no es necesario apelar a los artículos de la carta sobre los Derechos Humanos establecida por la Organización de las Naciones Unidas para darse cuenta que cada una de las personas que habitan este planeta tiene el derecho de decidir sobre el destino de su información privada. Esto incluye no sólo decidir quién, cómo, dónde y cuándo terceras partes puedan tener acceso a sus datos en general, sino que se debe prestar una particular atención a los que están relacionados con la identidad, el perfil social, cultural, personal, etc.

Tanto en las organizaciones privadas, como en las públicas, y a nivel individual, la protección de la información no sólo debe incluir los aspectos típicamente enmarcados dentro de la integridad, confidencialidad y disponibilidad de los datos, sino que debe ampliarse al resguardo de la privacidad donde, entre otros, se procura evitar que se devele la identidad de las partes comunicantes. Se han desarrollado varias estrategias, mecanismos, técnicas y sistemas que tienen ésto como objetivo, y que pueden enmarcarse en lo que se denomina las tecnologías que mejoran la privacidad (se conoce en inglés como \textit{Privacy Enhancing Technologies o PET}).

Este tipo de tecnologías han tenido sus frutos en escenarios de diversa índole, que van desde aplicaciones militares, donde se procura evitar que el adversario pueda des\-cu\-brir las conexiones estratégicas, pasando por aplicaciones cien\-tí\-fi\-cas/co\-mer\-cia\-les, que evitan revelar información sobre las comunicaciones hechas entre socios cien\-tí\-fi\-co/co\-mer\-cia\-les, hasta las aplicaciones de particulares que le ayudan a mantener en privado sus datos personales: los referentes a su salud, su estado financiero, sus preferencias de consumo, etc. Uno de los puntos críticos de la privacidad es el encubrimiento de la identidad de las partes comunicantes, es decir, es la procura de que las comunicaciones sean anónimas: anonimato.

Cada una de las técnicas y mecanismos utilizados tienen sus ventajas y desventajas en cuanto al perfil de ataque considerado. Es decir, dependiendo del tipo de atacante que se considere, cada una de éstas posee un conjunto de fortalezas y debilidades asociadas. Adicional al perfil del atacante, se debe incluir su radio de acción, esto quiere decir, que se debe considerar su capacidad para manejar ciertos volúmenes de usuarios, su heterogeneidad, su distribución y localización.

Además se debe considerar el tipo de comunicación anónima que se desea o necesita entablar: mensajería instantánea, correos electrónicos, servicios web, etc.

En las siguientes secciones se presentan algunas técnicas, sistemas y mecanismos que se orientan a proporcionar privacidad basándose en el anonimato.

\section{Técnicas para proporcionar privacidad}

Tal como se menciona en \cite{ico2006} las personas en general utilizan la Internet para poder comunicarse, para el envío de correo electrónico, para la investigación en diversas áreas de interés, para la interacción con distintos organismos públicos o privados, etc. Al mismo tiempo, gran cantidad de estos organismos públicos y privados en distintas regiones del planeta buscan maximizar la interacción electrónica en todos los niveles entre los usuarios y sus centros tecnológicos, intercambiando información a través del uso de bases de datos controladas por ellos mismos, buscando utilizar herramientas de la informática para tener el control de la información concerniente a innumerables aspectos relacionados a los individuos, tales como las preferencias en sus consumos diarios, la interacción con su alrededor, sus estilos de vida, sus opiniones, sus preferencias, y todo esto en niveles que en gran medida son desconocidos por los mismos usuarios. En respuesta a lo anterior, y procurando minimizar este tipo de control, se han propuestos diferentes mecanismos y sistemas que buscan reforzar o mejorar la privacidad (Privacy Enhancing Technologies) del individuo (visto en un contexto amplio, es decir, pudiéndose considerar como individuo a un conjunto de personas, e incluso a organizaciones completas). 

Este tipo de tecnologías pueden asistir a los organismos en su cumplimiento de los principios de protección de la privacidad establecidos en la declaración universal de los derechos humanos \cite{ONU1948}, dándole a los usuarios mayor poder para controlar su información, pudiendo éstos decidir cómo y cuándo puede ser utilizada por terceras partes. Existen sistemas tales como los navegadores web anónimos y servicios especiales de correo electrónico que le permiten comunicarse sin necesidad de revelar su verdadera identidad. Los sistemas para el manejo de la identidad potencialmente le permiten a los individuos acceder a los servicios y recursos sin tener que proveer información sobre ellos. Esto implica involucrar a una o varias organizaciones sobre las cuales se deba tener cierto grado de "confianza", que puedan verificar la identidad de los usuarios, y además puedan generar cierto tipo de certificación electrónica que no contenga información sobre la identidad, pero que permita acceder a los recursos y servicios ofrecidos por terceras partes.

Las tecnologías que mejoran o refuerzan la privacidad no son sólo aquellas destinadas a proveer un cierto grado de anonimato, sino que se extienden a la protección y mejora de la privacidad en general del individuo, incluyendo el cumplimiento de sus derechos sobre la protección de sus datos, en este sentido se pueden mencionar, como ejemplos de este tipo de tecnología, los siguientes:

\begin{itemize}
\item Los sistemas de acceso biométrico cifrado, que permiten el uso de las huellas dactilares como mecanismo para autenticar la identidad de un individuo sin necesidad de retener su huella dactilar actual.
\item Los accesos seguros a los datos personales de los usuarios en línea.
\item Programas que permiten a los navegadores detectar automáticamente las políticas de privacidad de los sitios web y permitan compararlas con las preferencias expresadas por los usuarios.
\item Sistemas de alertas y avisos que son anexados a la misma información y que previenen su uso en caso del no cumplimiento de las políticas de privacidad.
\end{itemize}

\subsection{Bases del Anonimato}

En la sección \ref{privacidad} se habla sobre los conceptos y bases del anonimato, y para comprenderlo de manera general es conveniente utilizar la configuración de un sistema general de comunicación tradicionalmente compuesto por un emisor, un receptor, quienes utilizan una red de comunicación para transmitir un mensaje. En la figura \ref{figura1} se muestra el diagrama general de este modelo.

\begin{figure}[h]
\begin{center}
%\includegraphics[scale=0.3]{./img/cap3_img2.png}
\includegraphics[scale=1]{./img/configuracionSistemaGeneral.JPEG}
\caption{Configuración del Sistema General}
\label{figura1}
\end{center}
\end{figure}


Este sistema está delimitado por los componentes antes mencionados, por lo cual los involucrados que se encuentren fuera de esta delimitación, en cada uno de los casos que se describen se consideran participantes externos.

Cada uno de los casos de estudio presentados serán considerados desde la perspectiva del atacante, quien puede monitorear las comunicaciones, estudiar sus patrones, e incluso puede hacerle cambios al manipular su contenido. El atacante puede estar dentro del sistema o puede ser uno de los participantes externos.

En todas las definiciones de los términos relacionados con las tecnologías asociadas a la mejora o refuerzo de la privacidad, se considera un sujeto (subject) a una entidad (ente o ser) que tiene la posibilidad de actuar en el sistema, por ejemplo, un ser humano, una persona jurídica, un computador, etc.

Como se mencionó en la sección \ref{anonimato} un sujeto es anónimo cuando no puede ser identificado dentro de un conjunto de sujetos, denominado el conjunto anónimo. Este conjunto está conformado por todos los posibles sujetos que pueden causar (o estar relacionados con) una acción. No ser identificado significa que ese sujeto no puede ser caracterizado de forma única o particular dentro de ese conjunto. Un sujeto actúa anónimamente cuando, desde el punto de vista del adversario, su acción no puede relacionarse con su identidad, dado que hay un conjunto de sujetos que podrían ser los causantes potenciales de la acción (y el adversario no puede distinguir a su verdadero causante). El anonimato debe permitirle a un sujeto utilizar un recurso o servicio sin revelar su identidad, esto implica que el anonimato por si mismo no procura proteger la identidad de un usuario en un ámbito general, lo que pretende es evitar que otros usuarios o sujetos puedan determinar la identidad de un usuario cuando éste genera una acción u operación en particular.

Con respecto a las entidades que podrían generar una acción, el conjunto anónimo se conforma por los sujetos que pueden generar una acción en un instante de tiempo específico; desde el punto de vista de las direcciones o ubicaciones de las entidades, el conjunto anónimo está conformado por los sujetos que pueden estar relacionados a una ubicación o dirección. Lo anterior quiere decir que el anonimato se podría clasificar según las entidades involucradas o según la ubicación de las mismas.

De esta forma, para permitir el anonimato de un sujeto siempre tiene que existir un conjunto apropiado de sujetos que posean potencialmente los mismos atributos. Ser los emisores y los receptores de mensajes particulares son ejemplos de estos atributos. Un emisor de un mensaje puede ser anónimo sólo si constituye parte de un conjunto de emisores potenciales (con atributos similares), el cual es su conjunto anónimo, y puede ser un subconjunto de todos los sujetos a nivel global quienes pueden enviar un mensaje en un tiempo específico. Lo mismo aplica para los receptores de mensajes. Este esquema se representa en la figura \ref{figura2}. El conjunto anónimo es relativo al tiempo, es decir, puede variar según los cambios que se den en el sistema. 

\begin{figure}[h]
\begin{center}
%\includegraphics[scale=0.3]{./img/cap3_img1.png}
\includegraphics[scale=1]{./img/conjuntosAnonimos}
\caption{Conjuntos Anónimos}
\label{figura2}
\end{center}
\end{figure}

Con lo anterior se especifica que existe un conjunto anónimo para el emisor de un mensaje, existe otro conjunto anónimo para el receptor de ese mensaje, y estos conjuntos pueden ser disjuntos, pueden solaparse o pueden ser el mismo conjunto.

Por otro lado el anonimato además de estar relacionado al conjunto anónimo y al tiempo en el que se está ejecutando la acción, también tiene relación al contexto donde se aplica, es decir, un sujeto puede ser anónimo en relación al contexto envío y recepción de correos electrónicos, pero puede no serlo en ese mismo instante de tiempo para el contexto interacción con una base de datos. Esto se debe a que según el contexto de estudio pueden existir distintos atributos que caractericen al conjunto anónimo, y por ende al anonimato del sujeto.

Como se mencionó el conjunto anónimo está directamente relacionado con el atacante, esto quiere decir, que el conjunto anónimo se delimita según el grado de conocimiento que posee el atacante. De esta forma, el fin último del anonimato es procurar que el atacante posea la misma información antes y después de su ataque.

Dado que el anonimato es dependiente del contexto, definido por sus atributos, las variaciones del mismo podrían cambiar los niveles de anonimato. Si se pretende diferenciar entre ``niveles'' de anonimato, es necesario poder cuantificarlo (medirlo) con el fin de poder hacer distinciones entre distintos sistemas anónimos. 

\subsection{Técnicas de Anonimato}

Tal como se mencionó en el apartado anterior el anonimato de un sujeto es el estado de no ser identificable dentro de un conjunto de sujetos, denominado el conjunto anónimo. También se ha mencionado, ver \cite{rlsm:terminology}, que el emisor de un mensaje puede ser anónimo sólo dentro de un conjunto de potenciales emisores, que corresponde al conjunto anónimo del emisor, el cual a su vez puede ser un subconjunto de todos los sujetos a nivel mundial quienes podrían enviar mensajes en determinados instantes de tiempo. Este tipo de anonimato es llamado anonimato del emisor. Lo mismo ocurre para el receptor, quien puede ser anónimo sólo dentro de un conjunto de receptores posibles, llamado el conjunto anónimo del receptor, y a este tipo de anonimato es llamado anonimato del receptor. Además hay un tercer tipo de anonimato, el de relación, el cual consiste en tener la propiedad de no poder relacionar quién se comunica con quién. La no relacionabilidad significa que dentro del sistema las distintas entidades, aquí denominadas ítems de interés o IDI (mensajes, emisores, receptores, etc.) no están ni más ni menos relacionadas con respecto a la información que se tenía antes de que el adversario ejecute un ataque (información a priori). En otras palabras, el anonimato del emisor/receptor puede ser definido como las propiedades de que un mensaje particular no pueda ser relacionado con ningún emisor/receptor, y que cualquier mensaje no pueda ser relacionado con ningún emisor/receptor en particular, entonces el anonimato de relación es la propiedad de no poder relacionar o determinar quién se comunica con quién.

El anonimato se fortalece mientras más grande sea su conjunto anónimo, y mientras más uniforme sea la distribución de probabilidad de la ejecución de las acciones por parte de los sujetos dentro del conjunto, es decir, el nivel de anonimato no sólo depende del tamaño del conjunto sino también de la probabilidad de que un sujeto en particular pueda generar cierta acción. De esta forma se puede definir el entorno de acción que acota las técnicas de anonimato para las comunicaciones: Colectar un conjunto apropiado de usuarios para que un usuario en particular pueda ser anónimo cuando se comunica con los demás.

Los sujetos no pueden tener el mismo nivel de anonimato contra todos los tipos de ataques posibles generados por participantes internos o externos. El conjunto de los posibles sujetos y la probabilidad de que ellos puedan causar una acción puede variar dependiendo del conocimiento del atacante. Se asume que desde el punto de vista del atacante, el nivel de anonimato sólo puede disminuir, es decir, se asume que el atacante no olvida la información que tiene y que ha logrado recolectar durante su observación e influencia sobre la comunicación en el sistema.

Para definir las diferentes técnicas de anonimato se utilizan los siguientes criterios: 

\begin{itemize}
\item Objetivo de la protección: define cuál tipo de anonimato puede ser provisto (del emisor, del receptor, o de la relación).
\item Nivel de seguridad: se debe definir cuál es el nivel de seguridad alcanzado por el objetivo de la protección (la seguridad desde la perspectiva de la teoría de la información o incondicional y la seguridad criptográfica/computacional con los supuestos asociados a mecanismos como los de clave pública).
\item Modelo de atacante: contra qué tipo de atacantes protege el sistema (externos, participantes, proveedores de servicios).
\item Modelo de confianza: en quién confía el usuario (en los proveedores de servicios, en los participantes externos, en otros usuarios, etc.).
\end{itemize} 

\subsubsection{Redes de mezcla:}\hfill\\

Esta idea se describe en \cite{rlsm:chaum-mix}. El método utiliza criptografía de clave pública y fue diseñado para que los sistemas de envío de correo electrónico proporcionaran anonimato del emisor, del receptor y de relación sin necesitar un servicio de confianza central (por ejemplo una autoridad certificadora). En general, los mezcladores o mixes pueden ser entendidos como una cadena de proxies seguidos uno detrás del otro. Se considera que el atacante puede observar todas las comunicaciones y puede controlar todos los mixes a excepción de uno.

%\textbf{Topología Mix:} 
\paragraph{\textbf{Topología Mix}}\hfill\\

Este concepto funciona aun cuando se dispone de un solo mix, pero en este caso el usuario debe confiar en este mix. Típicamente hay más de un mix en la red organizados en forma de cadena. Existen diferentes métodos para organizar la cooperación dentro de la red. Uno de ellos puede ser que cada mix existe independientemente en la red y los participantes libremente deciden a través de cuál de ellos enrutarán sus mensajes. Así cada nodo puede comunicarse con el resto conformando lo que se denomina una topología de red mix o red de mezcla.

Otra posibilidad es utilizar una cadena de mixes predefinida. A esta cadena se le denomina mix en cascada. Además de los dos extremos antes mencionados, se pueden utilizar variaciones que resulten en diseños híbridos. Un análisis y comparación de ambas ideas se presenta en \cite{rlsm:berthold,george-thesis}.

En una red mix, el usuario puede decidir con cuáles mixes desea interactuar, proporcionando de esta manera un buen nivel de escalabilidad y flexibilidad. Además, debido a que los usuarios escogen aleatoriamente los mixes, un atacante no podrá determinar cuáles de ellos debería controlar para poder observar un mensaje enviado, para esto debería controlar gran parte de la red.

Por otro lado, un atacante sabe con exactitud cuáles mixes debe controlar en una red en cascada (mix en cascada). Este diseño es vulnerable a los ataques de denegación de servicio, ya que al detener un solo mix en la red, lograr detener todo el sistema.

Por otro lado en \cite{rlsm:berthold} exponen que la red mix (pero no la red en cascada) es vulnerable a ciertos tipos de atacantes con altos niveles de control, es decir, que controlan a todos los mixes a excepción de uno. Mencionan que este tipo de red es vulnerable a los ataques $n-1$. Otra desventaja es que algunos mixes puede que no sean casi utilizados (se subutilizan) y otros se sobrecarguen. Los objetivos de protección que se logran son el de anonimato del emisor, y el de relación.

La topología mix provee protección contra atacantes que pueden observar toda la red y que pueden controlar muchos mixes. Es susceptible a ataques de denegación de servicio y ataques $n-1$. Desde el punto de vista de la confianza, se debe confiar en al menos un mix de la ruta seleccionada.

%\textbf{Funcionalidad básica:} 
\paragraph{\textbf{Funcionalidad básica}}\hfill\\

En este enfoque los usuarios o clientes no envían sus solicitudes directamente al servidor (o a otro destino), sino que las envía a nodos (enrutadores) intermedios denominados mix. Para poder ocultar la comunicación de los participantes, los mixes no envían instantáneamente los mensajes que reciben, en vez de esto, ellos almacenan varios mensajes de diferentes clientes por un tiempo definido, los transforman, y luego los reenvían simultáneamente a los servidores de destino o a otros mixes en la red. Un observador que puede ver todos los mensajes entrantes y salientes de un mismo mix no podrá determinar cuáles mensajes de entrada corresponden a cuáles mensajes de salida. 

%\textbf{Preprocesamiento:} 
\paragraph{\textbf{Preprocesamiento}}\hfill\\

El preprocesamiento es la transformación de los mensajes. El objetivo principal de la transformación de los mensajes es evitar que un atacante pueda trazar un mensaje (descubrir su recorrido) a través de la comparación de los patrones de bits correspondientes a los mensajes que entran y salen de un mix. Para poder enviar un mensaje, el cliente primero lo debe preparar. Para esto, el primer paso que debe dar es escoger el camino por el cual se transmitirá el mensaje, este camino estará compuesto por los mixes que haya escogido, y debe incluir el orden específico de reenvíos antes de que llegue a su destino final. Para mejorar la seguridad del sistema, se recomienda utilizar más de un mix en cada camino. El siguiente paso, es utilizar las claves públicas de los mixes escogidos para cifrar el mensaje, en el orden inverso en el que fueron escogidos, es decir, el mensaje se cifra primero con la clave pública del último mix, luego con la del penúltimo, y así sucesivamente hasta cifrar por ultima vez con la clave pública del primer mix en el camino seleccionado. Cada vez que se cifra se construye una capa, y se incluye la dirección del siguiente nodo (ya sea el destino final u otro mix). Así cuando el primer mix obtiene el mensaje preparado, lo descifra con su clave privada, y obtiene la dirección del siguiente nodo al que debe reenviarle el resto del contenido que quedó después de su descifrado.

Este esquema puede ser descrito de la siguiente manera:

$A_1 , ..., A_n$ pueden ser la secuencia de las direcciones y $c_1,...,c_n$ la secuencia de la claves de cifrado conocidas públicamente y pertenecientes a la secuencia $Mix_1,...,$ $Mix_n$ escogidos por el emisor. Incluso $c_1$ puede ser una clave secreta en un sistema de cifrado simétrico. $A_{n+1}$ puede ser la dirección del receptor o del destino final del mensaje, al cual se le denomina, por simplificación, $Mix_{n+1}$, y $c_{n+1}$ sería su clave de cifrado. $z_1,...,z_n$ puede ser una secuencia de bits aleatorias. El emisor crea los mensajes $N_i$ que son recibidos por el $Mix_i$, y en la base del mensaje $N$ es lo que el receptor final debe recibir ($Mix_{n+1}$) supuestamente:

\begin{equation}
N_{n+1}=c_{n+1}(N )
\end{equation}
\begin{equation}
N_i=c_i(z_i,A_{i+1},N_{i+1}) para i=n,...,1
\end{equation} 

El emisor le envía $N_1$ al $Mix_1$. Después que se decodifica, cada mix recibe la dirección del siguiente mix y el mensaje que está destinado a ese siguiente mix. Debido a las implementaciones de los sistemas de clave pública o asimétrica se necesitan las cadenas aleatorias de bits. Para asegurar que un atacante no pueda trazar un mensaje (seguir su trayectoria) a través de un mix, es necesario que todos los pares de entrada-salida de los mensajes no tengan características que permitan identificarlos, por ejemplo, el tamaño de los mismos. Una solución a esto es establecer tamaños fijos para los mensajes, y cuando los mensajes tengan un tamaño inferior al fijado, se deberán rellenar con información falsa, y cuando lo superan se deberán fragmentar en varias piezas.

%\textbf{Reordenamiento:} 
\paragraph{\textbf{Reordenamiento}}\hfill\\

Mezclas por grupos (pool) o mezclas por lotes (batch): Cuando un mix opera en modo "por lotes" o "batch", éste recolecta un número fijo $n$ de mensajes, cifrándolos y reordenándolos antes de reenviarlos a todos en un solo envío. En contraste, un mix que opera en modo “por grupos” o “pool” tiene siempre un número $n$ de mensajes almacenados en su memoria temporal o “buffer” denominado “pool”. Si un nuevo mensaje llega al mix, entonces se escoge aleatoriamente y se reenvía uno de los mensajes almacenados. El número $n$ representa al tamaño del “pool”.

%\textbf{Prueba de reenvío: }
\paragraph{\textbf{Prueba de reenvío}}\hfill\\

Uno de los tipos de ataques más frecuentes es el denominado ataque de reenvíos. Un atacante podrá copiar un mensaje que desea monitorear y enviarle una o varias copias de éste al mix. Estas copias del mensaje podrían tomar el mismo camino en la red que el mensaje original, dado que los algoritmos de envío y descifrado trabajan determinísticamente. Así puede ser encontrado un patrón característico del mensaje sólo con observar la red. Con el fin de evitar este tipo de ataque, las copias de los mensajes deben ser identificadas y eliminadas a través de un filtro. Una posibilidad para identificar los mensajes inválidos es a través del uso de estampas de tiempo. Cuando un mix obtiene un mensaje, también obtiene una etiqueta que le informa la franja de tiempo durante la cual el mensaje es válido. Si el mensaje llega muy tarde (después de lo que la franja de tiempo le indica), el mix niega el reenvío del mensaje. Otra posibilidad es que el mix almacene una copia de los mensajes que ya haya enviado, y así los mensajes nuevos que lleguen pueden ser comparados con esta base de datos. Por razones de seguridad y rendimiento, es conveniente restringir el tamaño de esta base de datos. Los mensajes deberían ser almacenados por un corto período de tiempo antes de que se borren.

%\textbf{Tráfico de relleno o dummy:} 
\paragraph{\textbf{Tráfico de relleno o dummy}}\hfill\\

Aun cuando ninguna información está siendo transmitida, es posible enviar información falsa o de relleno en la red. Esto tendría el mismo efecto de no enviar ningún mensaje, pero un observador (atacante) no podría distinguir entre los mensajes reales de los que se envían como relleno. El envío de este tipo de mensajes de relleno es denominado tráfico dummy. Con respecto a la idea de los mixes, un mix podrá aleatoriamente enviar tráfico dummy a otro en la red. Este mecanismo también beneficiaría a los mix que trabajan en el modo batch, ya que normalmente estos mixes tienen que esperar hasta que un número predefinido de mensajes hayan llegado antes de que todos los mensajes sean reenviados simultáneamente, y evitaría los posibles retrasos que podrían ocurrir cuando no hayan envíos suficientes de mensajes al mix, y éste puede hacer su respectivo reenvío. Es decir, el tráfico dummy evitaría estos retrasos, ya que si no hay suficientes mensajes reales enviados, el número de mensajes necesarios para 
hacer el reenvío se pudiese alcanzar con los mensajes de relleno.

%\textbf{Anonimato del receptor (Direcciones de retorno no trazables):} 
\paragraph{\textbf{Anonimato del receptor (Direcciones de retorno no trazables)}}\hfill\\

El hecho de permitir que un receptor pueda permanecer anónimo se le caracteriza por tener una dirección de retorno que no pueda ser registrada o trazada por un atacante. Esta dirección de retorno es un mensaje especial que tiene que ser creado por el receptor y tiene que ser utilizado por el emisor para el envío del mensaje al receptor anónimo. La idea de base de este tipo de direccionamiento es que el receptor, y no el emisor, define sobre cuáles mixes y el orden en el que van a ser utilizados para la entrega de cierto mensaje de respuesta. La dirección de retorno preparada por el receptor contiene una clave simétrica para cada mix en el camino que éste utilizará para cifrar el mensaje enviado por el emisor. Finalmente, el receptor recibirá un mensaje cifrado múltiples veces con claves simétricas como él mismo especificó. Dado que el receptor conoce todas las claves simétricas, para poder desarrollar esta técnica, éste puede descifrar el mensaje. Dado que la claves simétricas son desconocidas por el emisor y la codificación del mensaje cambia en cada uno de los mixes (debido al cifrado), el emisor no puede trazar el mensaje hacia el receptor.

Este esquema se explica de la siguiente forma: $A_1,...,A_m$ pueden ser la secuencia de las direcciones y $c_1,...,c_m$ pueden ser la secuencia de las claves públicas conocidas de la secuencia de mixes $Mix_1,...,Mix_m$ escogida por el receptor, donde $c_m$ puede ser una clave secreta de un sistema de cifrado simétrico. El mensaje añadido a la dirección de retorno pasará por estos mixes en orden ascendente dependiendo de sus índices. $A_{m+1}$ puede ser la dirección del receptor llamado $Mix_{m+1}$. De forma similar, al emisor se le llama $Mix_0$. El receptor crea una dirección de retorno no trazable ($k_0,A_1,R_1$) donde $k_0$ es una clave de un sistema de cifrado simétrico generada para este propósito. $Mix_0$ se supone que utiliza esta clave para codificar el contenido del mensaje con el fin de garantizar que el $Mix_1$ no sea capaz de leer este mensaje. $R_1$ es parte de la dirección de retorno, la cual se transmite a través del $Mix_0$ y contiene el mensaje generado y que ha sido cifrado utilizando $k_0$. $R_1$ inicialmente se crea escogiendo aleatoriamente un único nombre de la dirección de retorno en un esquema recursivo como el que se muestra a continuación:

\begin{itemize}
\item $R_j$ es la parte de la dirección de retorno que será recibida por el $Mix_j$.
\item $k_j$ es la clave de un sistema de cifrado simétrico, con el cual $Mix_j$ codifica la parte legible del mensaje.
\end{itemize}

\begin{equation}
R_{m+1}=e 
\end{equation}

\begin{equation}
R_j=c_j(k_j,A_{j+1},R_{j+1})\,para\,j=m,...,1.
\end{equation}

El mensaje $N_j$ está constituido por la parte de la dirección de retorno $R_j$ y el contenido $I$ del mensaje (codificado varias veces) generado por el emisor (también llamado parte $I_j$ del contenido). Los mensajes $N_j$ son creados por el $Mix_{j-1}$ y son enviados al $Mix_j$ de acuerdo al siguiente esquema recursivo. Estos son creados y enviados por el emisor $Mix_0$ y así, en secuencia, se pasan a través de los mixes $Mix_1,...,Mix_m$ 

\begin{equation}
N_1=R_1,I_1;\,I_1=k_0(I)
\end{equation}

\begin{equation}
N_j = R_j,Ij;\,I_j=k_{j-1}(I_{j-1})\,para\,j=2,...,m + 1
\end{equation}

El receptor $Mix_{m+1}$ recibe $e$, $N_{m+1}=e(km (...k1 (i))...)$ y puede descifrar y extraer el contenido $I$ ya que conoce todas las claves secretas $k_j$ asignadas para el nombre $e$ de la parte de la dirección de retorno en el orden correcto.

%\textbf{Verificación del tamaño del conjunto anónimo: }
\paragraph{\textbf{Verificación del tamaño del conjunto anónimo}}\hfill\\

Si un atacante bloquea el mensaje de un participante específico, este mensaje se aísla del conjunto anónimo. Lo mismo sucedería si un atacante rodea a un participante específico, manipulándolo a través de la generación de mensajes con fines "ilícitos" para el sistema. Este tipo de ataque es conocido como el ataque de mezcla o $n-1$. No existe una solución específica contra este tipo de ataques en ambientes abiertos, como por ejemplo en aquellos donde los participantes entran y salen del sistema a su discreción. Se podría utilizar una protección básica si el mix puede identificar a cada participante, así de una forma confiable el mix puede verificar si los mensajes que tiene almacenados en su memoria temporal (“buffer”) fueron enviados por un número relativamente adecuado de usuarios.

%\textbf{Canales Mix:}
\paragraph{\textbf{Canales Mix}}\hfill\\

Los canales mix son utilizados para manejar en tiempo real las cadenas continuas de datos o que contengan sólo pequeños retrasos a través de una cadena de mixes. Para este caso, es necesario que se divida el ancho de banda: una parte para la señalización y otra parte para el envío de los datos, ambos utilizados para la transmisión del mensaje.

Se podría asumir que existe un sólo canal para la señalización, y varios canales para la transmisión de datos. Con el fin de establecer el canal, se envía un mensaje sobre el canal de señalización, el cual contiene la clave $k_i$ que deberá ser utilizada entre el emisor y el $Mix_i$, la cual se cifra de forma asimétrica con la clave pública de dicho mix. Con esto, se define un canal de igual forma para todos los mixes, sobre el cual será transmitido el mensaje.

Se podría utilizar un canal para el envío y otro canal para la recepción. Un canal de envío es análogo a un cifrado híbrido: el emisor establece un canal, y codifica continuamente su información $N$, transformándola en $k_1(k_2(...k_m(N)...))$ y enviándola al mix $Mix_1$. Cada mix $Mix_i$ para $(i = 1, ..., n-1)$ decodifica los mensajes recibidos continuamente utilizando $k_i$ y transmitiendo el resultado de la decodificación al mix $Mix_{i+1}$. El mix $Mix_m$ crea el mensaje en texto plano en el final de la cadena. Esto le permite al emisor enviar anónimamente los mensajes, pero en este caso el receptor no será anónimo. Un canal de recepción es en realidad un canal de envío el cual se utiliza en dirección opuesta, es decir, el receptor es el que establece el canal. El emisor le envía al mix $Mix_m$ la cadena $N$ de información que no está especialmente codificada por el mix $Mix_m$, luego lo codifica utilizando la clave $k_m$ y conduce $k_m(N)$ un paso atrás, hacia el mix $Mix_{m-1}$. Los otros mixes hacen lo mismo, por ejemplo, el mix $Mix_1$ envía la cadena $k1(...km (N )...)$ codificada. Dado que el receptor conoce todas la claves públicas $k_i$, tiene la disponibilidad de descifrar $N$. Esto le permite al receptor recibir los mensajes anónimamente mientras que el emisor no es anónimo.

Para alcanzar ambos niveles de anonimato, en \cite{ISDN-mixes} sugieren la creación de canales Mix como enlaces de los canales de envío y recepción. El emisor establece un canal de envío que finaliza en el mix $Mix_m$ y el receptor establece un canal de recepción que inicia en el $Mix_m$. El mix $Mix_m$ traspasa las cadenas de información que llegan por el canal de envío hacia el canal de recepción. Los canales que están supuestamente enlazados, se etiquetan con una marca común que se recibe consistentemente en ambos canales que establecen los mensajes asociados al mix $Mix_m$. Los datos transferidos están coordinados con un mensaje de entrada al mix cifrado asimétricamente, el cual contiene la información del mix que conecta a los dos canales, y el usuario emisor del mensaje de entrada al mix actúa como un emisor o un receptor. Cada mix en la cadena puede descifrar este mensaje de entrada al mix y en el último paso, el texto plano se difunde a todos los suscriptores. Ahora, los canales pueden ser establecidos utilizando los mensajes de establecimiento de ambos participantes. Estos escogen los mixes por el canal de transferencias de datos del mix $Mix_m$ y los mantienen en secreto. Así todos conocen sólo la mitad del camino y el mix $Mix_m$ reenvía los mensajes entrantes del canal de envío del mix al canal de recepción del mix. Cada emisor/receptor debe tener el mismo número de canales de envío/recepción, porque de lo contrario serían observables, por tal razón convendrá utilizar canales “dummy”.

Para poder entender mejor el funcionamiento de la redes de mezcla se presentan las figuras \ref{figura3} y \ref{figura4}, en la que se puede observar que para el envío de un mensaje de un punto inicial a uno final, primero debe pasar por varios puntos intermedios, donde se realiza el proceso de mezclado con otros mensajes provenientes de otros nodos de origen y con diversos destinos. En cada nodo mezclador también se generan mensaje de relleno o dummy.

\begin{figure}[h]
\begin{center}
\includegraphics[scale=1]{./img/redesMezcla.JPEG}
\caption{Redes de Mezcla}
\label{figura3}
\end{center}
\end{figure}

\begin{figure}[h]
\begin{center}
\includegraphics[scale=1]{./img/topologiaMix.JPEG}
\caption{Topología Mix}
\label{figura4}
\end{center}
\end{figure}

\subsubsection{Enrutamiento cebolla:}\hfill\\

Este mecanismo fue propuesto y estudiado en \cite{esorics04-mauw,onion-discex00,onion-routingpet2000}. Es equivalente a una red de mixes, pero en el contexto de enrutamiento basado en circuitos. En vez de enrutar cada paquete separadamente, el primer mensaje lo que hace es abrir un circuito, etiquetando una ruta. Cada mensaje que tiene una etiqueta en particular se enruta por un camino predeterminado. Finalmente, un mensaje se envía para que cierre o clausure un camino. Con frecuencia se hace referencia a flujo anónimo como la información que viaja por estos circuitos. Su objetivo es dificultarle la tarea al análisis de tráfico, uno de los tipos de ataques más conocidos. Este sistema procura proteger la no relacionabilidad de dos participantes que se comunican a través de terceras partes, y procura proteger la identidad de las partes comunicantes. En vista de que las redes ISDN son difíciles de implementar en Internet, lo que procuró el enrutamiento cebolla es adaptar esta idea distribuyendo la red anónima y adaptándola para que se ejecute en el tope del modelo TCP/IP. El primer mensaje enviado en la red se cifra en capas, que pueden ser descifradas en una cadena de enrutadores cebolla (\textit{onion routers OR}) los cuales utilizan sus respectivas claves privadas.

El primer mensaje tiene el material que debe ser compartido entre el emisor y los enrutadores, también las etiquetas y la información de direccionamiento del próximo nodo. Tal como sucede en los mixes de Chaum \cite{rlsm:chaum-mix}, se provee la no relacionabilidad a nivel de bits, de esta forma el camino que toma el primer mensaje no es trivial de seguir con sólo observar el patrón de bits de los mensajes.

También se propuso un tipo de enrutamiento dinámico donde los enrutadores que reenvían el flujo a través del camino establecido no se especifican únicamente en el mensaje inicial, esto con el fin de incrementar el anonimato. Los datos que circulan por la red en un circuito establecido están cifrados con las claves simétricas de los enrutadores. Las etiquetes se utilizan para indicar a cuál circuito pertenece cada paquete. Se utilizan etiquetas diferentes para los distintos enlaces, asegurando así la no relacionabilidad, y además las etiquetas de los enlaces también se cifran utilizando una clave que se comparte entre los pares de enrutadores OR. Lo anterior previene los ataques de observadores pasivos que puedan determinar cuáles paquetes pertenecen al mismo flujo anónimo, pero no le oculta la información a un enrutador que pueda ser subversivo.

OR es susceptible a un conjunto de ataques, tal como el ataque de tiempo. Esto se debe a que los patrones pudiesen ser analizados por un atacante en ausencia de un gran volumen de tráfico pesado. Para este sistema se afirma proveer anonimato en la navegación web la cual requiere comunicaciones con baja latencia, por tal razón se ha excluido toda la dinámica de los mezcladores o mixes, dado que pudiese incrementar demasiado los tiempos de respuesta. En ausencia de este tipo de características, lo hace vulnerable a distintos tipos de ataques superados por los mixes, por ejemplo el ataque de correlación del tráfico de mensajes, donde se pudiese determinar cuáles mensajes entrantes corresponden con los salientes, con respecto a un enrutador.

Los enrutadores se pueden configurar para que trabajen sólo con un determinado subconjunto de clientes, ya sea por zonas o de forma particularizada. Además se puede configurar para que trabajen sólo con un subconjunto de otros enrutadores.

%\textbf{Tor: la segunda generación de OR:}
\paragraph{\textbf{Tor: la segunda generación de OR}}\hfill\\


El proyecto OR fue retomado en el año 2004, con el diseño e implementación de lo que se denominó la “segunda generación del onion router” o TOR, por sus siglas en inglés, la propuesta se muestra en \cite{rlsm:tor-design}. Su política es la del reenvío de flujo TCP sobre una red de reenvíos, y junto con la ayuda de otra herramienta, el Privoxy\footnote{http://www.privoxy.org}, está especialmente diseñada para el tráfico web.

Este sistema utiliza una arquitectura de red tradicional: una lista de servidores voluntarios se obtiene desde un servicio de directorio ofrecido por otro(s) servidor(es). De esta forma, los clientes crean caminos utilizando al menos tres nodos intermedios escogidos de forma aleatoria dentro de la lista, y sobre los cuales se hace la comunicación de la información. A diferencia de la arquitectura anterior, donde se enviaba y distribuía el material criptográfico, TOR utiliza un mecanismo interactivo: el cliente se conecta con el primer nodo, y le solicita a éste que se conecte con el segundo nodo, de esta forma un canal bidireccional se utiliza en cada paso para desarrollar un intercambio de claves autenticado mediante el algoritmo DF (Diffie-Hellman). Este garantiza el reenvío en forma secreta y la resistencia a la compulsión, debido principalmente a que solo son necesarias claves de corta duración. Este mecanismo fue inicialmente propuesto en Cebolla (ver \cite{cebolla}), y no está cubierto en la patente de OR (ver \cite{onion-discex00}). 

Otra notable diferencia entre TOR y los intentos anteriores por anonimizar el tráfico de flujo, es que TOR no ofrece seguridad contra los atacantes que pueden observar la red entera, es decir, contra atacantes pasivos globales. Un conjunto de técnicas de Análisis de Tráfico (ver \cite{danezispet2004,timing-fc2004,SS03,flow-correlation04,WangCJ05}) han sido desarrolladas a través de los años para trazar el flujo de tráfico continuo viajando por redes de baja latencia como TOR. En estos estudios se ha demostrado que este tipo de ataques son muy difíciles de contrarrestar, a menos que se utilicen técnicas que implicarían latencias elevadas, o que requieran la inyección de grandes cantidades de tráfico cubierto (tráfico inservible o “dummy”), los cuales representan soluciones muy costosas. Por esta razón en TOR se opta por obtener un nivel de seguridad que se pueda alcanzar en un sistema altamente utilizable y muy económico de utilizar (ver \cite{e2e-traffic,back01}). Como resultado si un adversario puede observar el flujo entre dos puntos de la red, puede de forma trivial generar el mismo tráfico, y lograr ataques del tipo etiquetado o “tagging”. Sin embargo, dada esta vulnerabilidad, aun se necesita estimar la probabilidad de que un adversario pueda estar monitoreando la red en múltiples puntos sobre un camino o ruta establecida.

TOR también ofrece mecanismos para ocultar los servidores. Un servidor oculto abre una conexión anónima y la utiliza para publicar un punto de contacto. Si un cliente quiere contactar a un servidor, debe conectarse con un punto de contacto y negociar un canal anónimo separado del que se utiliza para el reenvío de la comunicación actual. Un ataque propuesto en \cite{hs-attack06} demuestra la vulnerabilidad de esta idea. La intuición detrás de este ataque está en el hecho de que un adversario puede abrir múltiples conexiones hacia un mismo servidor oculto, y secuencialmente o en paralelo podría controlar el flujo hacia ese servidor. Para esto, el atacante necesitaría controlar al menos un enrutador, y debe esperar a que el servidor escoja una de las conexiones de su enrutador como un primer nodo de un camino anónimo cualquiera.


% el siguiente comando establece la ubicación de las referencias
\putbib[bibliografia]

% el siguiente comando cierra el ambiente bibunit para la cual se generan las
% referencias.
\end{bibunit}
