\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 aborda 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 y la posibilidad 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.
\begin{comment}
Es pertinente un punto de atención aquí. El párrafo anterior parece
sugerir una prevalencia o preferencia del espacio privado sobre el
espacio público, lo cual tiene profundas implicaciones en el
paradigma de organización social. Cuando la cosa privada prevalece
sobre la cosa pública entonces los intereses individuales están sobre
los colectivos, lo cual ha conducido a la degradación y perversión del orden
social en la que estamos inmersos.
\end{comment}

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 basada en el anonimato.

\section{Técnicas para proporcionar privacidad}

Tal como se menciona en \cite{ico2006} muchas personas 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 las 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 Complementos de software que permiten a los navegadores detectar
automáticamente las políticas de privacidad de los sitios web y
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 de 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 se correspondería con el 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. Hay además 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
a un 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 Mixers 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 mezcladores a excepción de uno.

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

Este concepto funciona aun cuando se dispone de un solo mezclador,
pero en este caso el usuario debe confiar en este mezclador.
Típicamente hay más de un mezclador 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
mezclador exista independientemente en la red y los participantes
libremente decidan a través de cuál de ellos enrutarán sus mensajes.
De esa forma cada nodo puede comunicarse con el resto conformando
lo que se denomina una topología de red de mezcla o red mix.

Otra posibilidad es utilizar una cadena de mezcladores predefinida.
A esta cadena se le denomina mezcla 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 de mezcla, el usuario puede decidir con cuáles mezcladores
desea interactuar, proporcionando de esta manera un buen nivel de
escalabilidad y flexibilidad. Además, debido a que los usuarios
escogen aleatoriamente los mezcladores, 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 mezcladores 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 mezclador en la red lograr detener todo el sistema.

Por otro lado en \cite{rlsm:berthold} exponen que la red de mezcla
(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 mezcladores a excepción de uno. Mencionan que este
tipo de red es vulnerable a los ataques $n-1$. Otra desventaja
es que algunos mezcladores 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 de mezcla provee protección contra atacantes
que pueden observar toda la red y que pueden controlar
muchos mezcladores. 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 mezclador 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 mezcladores.
Para poder ocultar la comunicación de los participantes, los mezcladores
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 mezcladores en la red. Un
observador que puede ver todos los mensajes entrantes y salientes
de un mismo mezclador 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 mezclador.
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 mezcladores 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 mezclador en cada camino. El siguiente paso, es utilizar
las claves públicas de los mezcladores 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 ultimo mezclador,
luego con la del penúltimo, y así sucesivamente hasta cifrar por
ultima vez con la clave pública del primer mezclador 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 mezclador). Así cuando el primer mezclador 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 mezclador recibe la dirección del siguiente mezclador y
el mensaje que está destinado a ese siguiente mezclador. 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 mezclador, 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 mezclador 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 mezclador 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 mezclador, 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 mezclador.
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 mezclador
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 mezclador niega el reenvío del mensaje. Otra
posibilidad es que el mezclador 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 sustituto o dummy}}\hfill\\

Aun cuando ninguna información está siendo transmitida,
es posible enviar información 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 sustituto. Con
respecto a la idea de los mezcladores, un mezcladore podrá
aleatoriamente enviar tráfico sustituto a otro en la red.
Este mecanismo también beneficiaría a los mezcladores que
trabajan en el modo por lotes, ya que normalmente estos mezcladores
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 mezclador,
y éste puede hacer su respectivo reenvío. Es decir, el tráfico sustituto
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 cuáles mezcladores y
el orden en que ellos 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 mezclador
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 mezcladores (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 mezcladores $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 mezcladores 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
mezcladores $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 mezclador puede identificar a cada participante, así de
una forma confiable el mezclador 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 de Mezcla}}\hfill\\

Los canales de mezcla o 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 mezcladores.
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 mezclador. Con esto, se define un canal
de igual forma para todos los mezcladores, 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 mezclador $Mix_1$.
Cada mezclador $Mix_i$ para $(i = 1, ..., n-1)$ decodifica
los mensajes recibidos continuamente utilizando $k_i$ y
transmitiendo el resultado de la decodificación al mezclador
$Mix_{i+1}$. El mezclador $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 mezclador
$Mix_m$ la cadena $N$ de información que no está
especialmente codificada por el mezclador $Mix_m$, luego
lo codifica utilizando la clave $k_m$ y conduce $k_m(N)$
un paso atrás, hacia el mezclador $Mix_{m-1}$. Los otros mezcladores
hacen lo mismo, por ejemplo, el mezclador $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 de mezcla como enlaces de los
canales de envío y recepción. El emisor establece un canal de
envío que finaliza en el mezclador $Mix_m$ y el receptor establece
un canal de recepción que inicia en el $Mix_m$. El mezclador $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 mezclador $Mix_m$. Los datos transferidos están
coordinados con un mensaje de entrada al mezclador cifrado
asimétricamente, el cual contiene la información del mezclador que
conecta a los dos canales, y el usuario emisor del mensaje de
entrada al mezclador actúa como un emisor o un receptor. Cada
mezclador en la cadena puede descifrar este mensaje de entrada
al mezclador 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 mezcladores por el canal
de transferencias de datos del mezclador $Mix_m$ y los mantienen
en secreto. Así todos conocen sólo la mitad del
camino y el mezclador $Mix_m$ reenvía los mensajes entrantes
del canal de envío del mezclador al canal de recepción del mezclador.
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 sustitutos o “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 de Mezcla}
\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 mezcladores, 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
\begin{comment}
No hay una referencia reciente a ISDN y la mención
parece estar  descontexualizada.
\end{comment}
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 mezcladores 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 mezcladores, 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). Éste 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 sustituto 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}
