=Paper=
{{Paper
|id=Vol-1727/ssn16-final1
|storemode=property
|title=Implementation and Analysis of a DC-Net Based Anonymous Messaging System
|pdfUrl=https://ceur-ws.org/Vol-1727/ssn16-final1.pdf
|volume=Vol-1727
|authors=Camilo Gómez
|dblpUrl=https://dblp.org/rec/conf/ssn/Gomez16
}}
==Implementation and Analysis of a DC-Net Based Anonymous Messaging System==
Implementation of a DC-Net Based Anonymous Messaging System Camilo Gómez N. NIC Chile Research Labs University of Chile camilo@niclabs.cl Bajo ese panorama, se ha hecho necesario contar con herramientas que aseguren el anonimato en la red. Abstract Sin embargo, garantizar anonimato ante adversarios sofisticados requiere dos condiciones: (1) uso y testeo A DC-Net allows parties to communicate masivo por parte de un significativo número de usuar- anonymously in a point-to-point network. ios, y (2) garantı́as matemáticas (criptográficas) de la Even though DC-Nets where proposed by seguridad del protocolo que se está utilizando. Chaum (CACM 1985) more than thirty years El software más popular y utilizado para per- ago, only lately the protocol has gained more manecer anónimo mientras se navega en Internet es attention because of both efficiency improve- TOR “The Onion Router”3 . Onion-routing [GRS96], ments in point to point communication, and el protocolo implementado por TOR, ha sufrido re- several attacks discovered in onion routing, cientes cuestionamientos, tales como si es o no realista the most popular anonymous protocol. This suponer que el adversario no es capaz de monitorear to- work describes an implementation of a practi- dos los canales de comunicación – uno de los supuestos cal variant of DC-Nets (proposed by Franck, más cruciales de TOR. La pregunta es sin duda ra- Hevia, and van Der Graaf 2016) which in- zonable dada la extensa capacidad de monitoreo que cludes a useful API. Preliminary experiments poseen organismos de inteligencia para con todos los indicate that the protocol is better suited for usuarios de Internet4 . Aun ası́, en la práctica TOR non-interactive applications such as an anony- sigue siendo la herramienta más popular para nave- mous bulletin board. We indeed implement gar de manera anónima en Internet, siendo incluso re- such a mobile app and discuss possible exten- comendada por el mismo Snowden5 para evitar las in- tions. tromisiones de la NSA y otras organismos similares. Dado que concentrar nuestra privacidad en una sola 1 Introducción herramienta puede ser riesgoso, se hace necesario eval- uar la factibilidad de protocolos alternativos que tol- Mantener el anonimato navegando en Internet se ha eran adversarios globales (capaces de monitorear todos vuelto una demanda significativamente más popular los canales de comunicación) tales como las DC-nets. en los último años. Usuarios de todas las latitudes Este trabajo busca aportar en este estudio de alterna- reclaman que se respete su derecho a la privacidad1 ; tivas. posiblemente como consecuencia de las revelaciones realizadas tanto por el grupo Wikileaks como por el ex-empleado de la CIA Edward Snowden. Estas rev- 2 Anonimato via DC-Nets elaciones ilustraron el masivo monitoreo por parte de 2.1 Dining Cryptographers Problem organismos de inteligencia2 a la actividad diaria de El problema de la Cena de Criptógrafos (Dining millones de personas que hacen uso de la red. Cryptographers Problem) fue propuesto por David Copyright c by the paper’s authors. Copying permitted for 3 https://www.torproject.org/ private and academic purposes. 4 http://apps.washingtonpost.com/g/page/world/ 1 http://www.livescience.com/37398-right-to-privacy. nsa-slideshow-on-the-tor-problem/499/ html 5 http://www.inc.com/larry-kim/ 2 http://www.huffingtonpost.com/news/nsa-spying/ 5-online-privacy-tips-from-edward-snowden.html Chaum en el año 1985 [Cha85, Cha88] para ejempli- pendiendo de que valor tomó la moneda (el “O Exclu- ficar un protocolo de envı́o de mensajes de manera sivo” o XOR entre el mensaje y el valor de la moneda), anónima entre un grupo de participantes. el mensaje a enviar y las llaves compartidas que posee El problema es el siguiente: tres criptógrafos están el participante son sumadas módulo un valor fijo sufi- cenando en su restaurante favorito. Al terminar la cientemente grande. cena, el mesero se acerca a su mesa y les informa que En la práctica, primero es necesario establecer el el maı̂tre indica que su cuenta ya está pagada. Los anonymity-set, esto es, quiénes serán los participantes criptógrafos, sorprendidos, quieren resolver si la cuenta del protocolo, los responsables de enviar y aportar con fue pagada por alguno de ellos, o si simplemente fue sus mensajes para asegurar el anonimato del potencial pagada por algún agente externo (la NSA, por ejem- emisor. Luego, se utiliza una ronda de compartimiento plo). Obviamente, como buenos criptógrafos, desean de llaves, donde cada par de participantes comparten que su protocolo no revele la identidad del criptógrafo una llave secreta (este proceso podrı́a realizarse uti- pagador (si existiera) pero al mismo tiempo permita lizando protocolo Diffie-Hellman). Una vez que todos dilucidar si uno de ellos pagó o fue un agente externo. poseen llaves compartidas entre sı́, cada uno de los par- Luego de pensarlo, el problema es resuelto con el sigu- ticipantes enviará uno de los dos siguientes mensajes iente protocolo: al resto: un valor K igual a la suma de las llaves que (1) Cada uno de los criptógrafos lanza una moneda posee compartidas, ó un valor K + M igual a la suma al aire, de forma secreta. Luego de esto, le muestra de las llaves que posee compartidas más un mensaje M la moneda al compañero que está inmediatamente a que quiere enviar de manera anónima. Con esto, cada su derecha. (2) Cada criptógrafo informa al resto si participante envı́a un valor m = K si es que no quiere las dos monedas que puede ver (la propia y la de su transmitir nada y solo quieren aportar en el anonimato compañero a la izquierda) son iguales o no, pero con del resto, ó m = K + M si es que sı́ desea enviar un una condición: si el criptógrafo viendo las monedas mensaje M . Finalmente, cada uno de los participantes no pagó la cuenta, simplemente dice la verdad. Si no, suma los valores que recibió, lo que hará que las llaves si no fue el (o ella) quien hizo el pago, el criptógrafo compartidas se cancelen y sólo quede visible el mensaje revela lo contrario a lo que ve (si eran iguales dice que que compartió uno de los participantes. De esta man- eran distintas y viceversa). (3) Si un número impar era, el emisor se mantiene anónimo tanto para el resto de criptógrafos revela que las monedas eran distintas, de los participantes como para cualquier observador implica que fue uno de ellos quien pagó la cuenta, de externo que monitoree todos los valores intercambia- lo contrario significa que la NSA fue la que realizó el dos en el protocolo. pago. En el artı́culo original se demuestra que este pro- 2.2.1 Colisión de Mensajes tocolo (posteriormente rebautizado como DC-Net). Lo anterior funciona siempre y cuando a lo más un brinda anonimato incondicional: aún si un atacante participante envı́e un mensaje. A priori, no es claro tuviera todo el poder de cómputo posible, le es im- que los participantes puedan ponerse de acuerdo re- posible poder identificar al emisor del mensaje. Este specto a quién de los participantes enviará el mensaje, anonimato se mantiene tanto para todos los partici- sin violar el anonimato del protocolo. Por ello, una col- pantes del protocolo como para cualquier observador isión de mensajes – esto es, el envı́o de un mensaje por externo. parte de dos o más participantes – es normal en la eje- Con lo anterior, Chaum brinda un protocolo que cución de una DC-Net. Cuando una colisión ocurre, al hace posible transmitir mensajes públicos de man- realizar la suma los valores enviados por todos los par- era anónima. Chaum también propuso algunas varia- ticipantes, las llaves se cancelan resultando la suma de ciones, tales como protocolos que permiten enviar los dos (o más) mensajes enviados. Dado que este valor mensajes de largo arbitrario. es tı́picamente un mensaje ininteligible, una colisión implica un fracaso en la transmisión de los mensajes 2.2 DC-Net Generalizada involucrados. Esto es un problema conocido. Varias implementaciones y diseños propuestos han buscado Existe una generalización práctica para utilizar el hacerse cargo y resolverlo para poder permitir el envı́o protocolo DC-Net con mensajes de largo mayor a 1 de varios mensajes en una misma iteración. bit. En vez de manifestar un bit (pagó o no la cuenta), cada participante envı́a un mensaje (cadena de bits) 2.2.2 Participantes Maliciosos arbitrario. Además se reemplaza el lanzamiento de una moneda vista entre dos participantes con una llave Otro aspecto importante de la seguridad de los pro- aleatoria compartida entre ambos participantes. Por tocolos basados en DC-Net es su tolerancia a los par- último, en vez de reemplazar el mensaje enviado de- ticipantes maliciosos. Tales participantes envı́an men- sajes erróneos – que no se ajustan al protocolo acor- igualdad de diferentes logaritmos con distintas bases, dado – o omiten enviarlos cuando debieran. Si es que además de combinaciones con operadores lógicos, en- no se evita este comportamiento, podrı́a resultar en tre otros. Además existen maneras para poder de- un protocolo erróneo, que nunca concluya con un men- mostrar propiedades genéricas sobre logaritmos discre- saje transmitido, o bien que entregue mensajes equiv- tos [CS97]. ocados. Afortunadamente, la mayor parte de los pro- tocolos resuelven este problema integrando primitivas 3.2 Compartición de Llaves criptográficas al envı́o de los mensajes. El protocolo comienza con cada participante Pi in- tercambiando dos valores kij , rij con cada otro par- 3 Variante Práctica de DC-Net ticipante Pj dentro del anonymity-set. Además se Este trabajo se basa en una variante práctica del establece que kij = −kji y kii = 0 (ı́dem para r). protocolo DC-Net propuesta por J. van de Graaf y Finalmente Pn cada participante Pi calculará el valor Christian Franck [FvdG14], que hace uso de prim- Ki = j=1 kij , donde n es el número total de par- itivas criptográficas (Pedersen commitments y zero- ticipantes (ı́dem para calcular ri ). knowledge proofs principalmente) para sortear los problemas de colisión de mensajes y participantes ma- 3.3 Envı́o de Commitments y ZKP liciosos. El diseño que se explicará a continuación es un tra- 3.3.1 Llaves Compartidas bajo en curso realizado en conjunto con los autores Cada Pi calculará cKi = g ki hrKi (commitment so- antes mencionados, y se omitirán los detalles corre- bre Ki ). Luego de esto deberá enviar al resto de los spondientes a demostraciones de seguridad, debido a participantes cKi junto con una PoK 6 indicando que que lo importante a destacar son los desafı́os que im- conoce los valores (Ki , rKi ) dentro de cKi . plican realizar la implementación del protocolo. Al recibir los commitment y las PoK de cada participante Pi , se deben verificar cada Qn una de las 3.1 Primitivas Criptográficas PoK, además debe comprobarse que i=1 cKi = 1 3.1.1 Pedersen Commitments [Ped91] (propiedad que se tiene debido a que las llaves deben cancelarse unas con otras). De no tenerse esta última Sea Gq un grupo de orden q, en donde el prob- propiedad (lo que significa que al menos un partici- lema del logaritmo discreto se crea difı́cil de resolver. pante envió valores erróneos), existen maneras que per- Sean g, h generadores de Gq elegidos aleatoriamente. miten encontrar al participante malicioso en cuestión. Sea s ∈ Zq un secreto que no se desea comprometer. En la actual implementación se priorizó encontrar par- Además sea r ∈ Zq elegido aleatoriamente. Se le llama ticipantes maliciosos en etapas subsecuentes del pro- un Pedersen commitment sobre s al valor: tocolo, debido a que un participante malicioso en esta c := g s hr etapa no puede comprometer el anonimato que brinda el mensaje, sino simplemente retrasar el desarrollo del Los Pedersen commitments brindan dos protocolo. propiedades importantes: ocultamiento perfecto (unconditionally hiding) y vinculación computacional 3.3.2 Valores Individuales (computationally binding). Esto quiere decir que, si una persona calcula un commitment sobre un cierto Cada participante Pi debe establecer tres valores valor s, (1) la persona se compromete a dicho valor distintos (dependiendo si enviará o no un mensaje): (pero sin revelarlo), ya que, por un lado es imposible • mi : mensaje plano que enviará el participante. Si para un tercero conocer s a partir de c, y (2) es no enviará ningún mensaje, mi = 0. computacionalmente difı́cil demostrar que dentro de c existe un valor distinto a s. • padi : cadena aleatoria de bits que se utiliza para reducir la posibilidad de enviar dos mensajes 3.1.2 Zero-Knowledge Proofs iguales (más adelante en el protocolo se explicará Una zero-knowledge proof permite a una persona su uso). Si no enviará ningún mensaje, padi = 0. poder demostrar el conocimiento de cierto valor α que cumple una propiedad (en Inglés, statement), sin rev- • bi : bit estableciendo si se enviará o no un mensaje, elar el valor de α (el testigo) en esa demostración. bi = 1 si se enviará un mensaje, 0 si no. Se pueden construir demostraciones para diferentes 6 Proof of Knowledge es una Zero-Knowledge Proof donde tipos de propiedades (statements), como por ejem- el participando demuestra el conocimiento de un cierto valor plo: el conocimiento de un logaritmo discreto; la dentro de un statement, sin revelar dicho valor. Luego de establecer estos valores, cada Pi formará mensaje, el cual fue recibido por todos los partic- el mensaje Mi , que resulta ser una concatenación de ipantes y se mantiene el anonimato de su emisor. los 3 valores anteriores (la concatenación de valores 0n El protocolo finaliza. es para prevenir que se produzcan overflow al sumarlos posteriormente): 3. t > 1: Dos o más participantes enviaron un men- saje, por lo que se ha producido una colisión Mi = 0n || mi || 0n || padi || 0n || bi de mensajes (M ∗ consiste en la suma de varios mensajes mi ). Para resolver esto se correrá un Posteriormente cada Pi deberá escoger 3 valores protocolo de resolución de colisiones basado en aleatorios: rmi , rpadi y rbi , para luego calcular com- superposed-receiving [Wai89] explicado a contin- mitments sobre los 3 valores anteriores: cmi , cpadi y uación. cbi (utilizando como valores aleatorios los escogidos previamente). Con estos commitments cada Pi de- 3.5 Resolución de Colisiones berá realizar una demostración de que el mensaje Mi está bien formateado, esto es que: “el último bit es Para resolver la colisión, la idea principal es correr 1 o el último bit es 0 al igual que todo el mensaje” nuevamente el protocolo pero solamente un subcon- (bi = 1 ∨ (bi = 0 ∧ mi = 0)). Se envı́a al resto de los junto de los participantes que tienen su mensaje in- participantes los 3 commitments calculados junto con volucrado en la colisión enviarán mensajes. Para ello la demostración anterior. se calcula el valor M̄ = M ∗ /t. Si el mensaje Mi < M̄ , Posteriormente se verifican las demostraciones en- entonces se reenviará en la ronda 2k (donde k es el viadas por cada uno de los participantes. número de la ronda donde se produce la colisión). En caso contrario se reenviará en la ronda 2k + 1. 3.3.3 Mensaje formateado Una parte importante de superposed-receiving es que la ronda 2k + 1 puede ser calculada como función El próximo paso es enviar una PoK sobre el men- de los mensajes enviados en las rondas k y 2k de la saje Mi . El punto importante a destacar aquı́ es que siguiente manera: C 2k+1 = C k − C 2k . Por ello las ron- no se envı́a un commitment asociado a Mi , sino que das 2k + 1 se le llaman rondas virtuales, y las rondas éste se calcula en base a los 3 commitments enviados 2k se llaman rondas reales. De esta manera se dismin- anteriormente cmi , cpadi y cbi . Por ello cada Pi envı́a uye la cantidad de rondas reales a realizarse para la la PoK correspondiente, y es verificada por el resto de resolución de las colisiones. los participantes calculando el commitment correspon- De esta manera, en las rondas subsecuentes la can- diente. tidad de mensajes involucrados irá disminuyendo, ha- ciendo que posibles colisiones que se produzcan (que 3.3.4 Mensaje de Salida se resuelven recursivamente de la misma manera) sean Finalmente cada Pi formará el mensaje de salida menores, implicando que después de t rondas reales Oi = Mi + Ki . Al igual que antes, debe además crear se habrán enviados los t mensajes involucrados en la una PoK sobre Oi en el commitment cOi (que también primera colisión. Importante a destacar es que en las se puede calcular como función de los commitments an- rondas siguientes deben enviarse PoK indicando que teriormente enviados). Se enviará el mensaje Oi junto el mensaje que se envı́a en dicha ronda es el mismo con la PoK correspondiente y será revisada por el resto que estuvo involucrado en alguna colisión anterior (o de los participantes. se envı́a un mensaje vacı́o). Con esto, al enviarse los t mensajes involucrados 3.4 Envı́o de Mensaje de Salida en la primera colisión, el protocolo finaliza y todos los Todos los participantes enviaron su respectivo men- participantes pueden ver que su mensaje fue enviado saje de salida Oi , los cuáles deben ser sumados entre y se mantiene su anonimato frente tanto a los otros Pn todos formando el valor C 1 = (M ∗ , t) = i=1 Oi (M ∗ participantes como a observadores externos que vean es la suma de los valores mi y padi de todos los par- el desarrollo del protocolo de manera pasiva. Como ticipantes, mientras que t corresponde a la suma de fue dicho anteriormente, el diseño de este protocolo es cada uno de los valores bi ). Teniendo estos valores, se un trabajo en curso, por lo que mayores detalles de de- pueden producir tres casos: mostraciones de seguridad se están actualmente inves- tigando y preparando una publicación más especı́fica. 1. t = 0: Ningún participante quiso enviar un men- saje, por lo que el protocolo finaliza. 4 Detalles de Implementación 2. t = 1: Solamente un participante envió un men- El objetivo principal de este trabajo viene siendo saje, por lo que el valor M ∗ corresponde a ese la implementación del protocolo explicado anterior- mente como API, de manera tal que pueda ser uti- se priorizó la facilidad de implementar la variante uti- lizado en variadas aplicaciones que necesiten contar lizando el nodo adicional, correr alguna variante de con un protocolo de mensajerı́a anónima entre varios gossip protocol para informar la identidad de partic- participantes. Algunos detalles y desafı́os que impli- ipantes nuevos que vayan entrando a la sala podrı́a can la implementación de un protocolo de DC-NET solucionar el problema. Esta segunda variante además son explicados a continuación. tiene la ventaja de no poseer un punto vulnerable (que serı́a el nodo Directorio), evitando ataques directos 4.1 Tecnologı́as Involucradas al nodo Directorio, retrasando (o incluso imposibili- La implementación se está desarrollando en Java tando) la creación del anonimity-set. Reiterar que se principalmente por el hecho que una primera prueba implementó el nodo Directorio por simplicidad, pero se de concepto será utilizar la API implementada en una tienen en cuenta los posibles ataques que puede recibir aplicación móvil Android (basado en Java), por lo que el sistema, que no tienen incidencia en romper el anon- su integración serı́a más simple y rápida. No existe imato que brinda el protocolo. ninguna razón de fondo (performance o alcance del Actualmente el nodo Directorio inicializa estable- lenguaje) por lo que se escogió dicho lenguaje de pro- ciendo los parámetros públicos del protocolo y pub- gramación, por lo que los mismos resultados se ob- lica su dirección IP. Luego, cada nodo Participante tendrı́an si es que se implementara en otro lenguaje que se quiera unir se conecta a la dirección pública más común en otras implementaciones de DC-NET, del Directorio y espera que se complete la cuota de como lo es C++. participantes establecida en un comienzo. Cuando se Para la conexión entre los participantes se utiliza conectan n participantes al Directorio, éste informa la ZeroMQ 7 , que, en palabras de sus autores, “son sock- dirección IP de cada uno de los participantes a todo ets en esteroides”. Funciona para abstraer la imple- el resto, para que posteriormente inicien el protocolo mentación de la capa de transporte de la aplicación y solo enviándose mensajes entre ellos, finalizando ası́ la despreocuparse de reconexiones o manejar pérdidas de labor del Directorio. datos. Con ZeroMQ se simplifica la implementación de broadcasting o conexiones punto a punto entre los dis- 4.3 Primitivas Criptográficas tintos participantes (ambos tipos de conexiones nece- En la implementación actual, la gran mayorı́a de sarias para el protocolo). las primitivas criptográficas han sido implementadas desde cero, valiéndose principalmente de la biblioteca 4.2 Nodo Directorio y Nodos Participantes para manejar números grandes de Java, BigInteger 8 . Un desafı́o importante a considerar en la imple- Si bien esto no es una práctica recomendada (lo ideal mentación (y que el diseño del protocolo no se pre- es utilizar bibliotecas criptográficas ya probadas por la ocupa) es como descubrir la locación del resto de los comunidad), no se ha descubierto ninguna por parte participantes que formarán parte del anonymity-set. de los autores que se adecúe a las necesidades requeri- Para ello se tomó la decisión de contar, además de das por el protocolo (Pedersen Commitments y ZKP los nodos participantes, con un nodo Directorio. Este asociadas). Este punto es algo importante a resolver nodo funcionará como punto de entrada al anonymity- ya que, como fue dicho, la implementación de primi- set y será el responsable de informar la dirección IP tivas criptográficas no es recomendado y es imperante de cada uno de los nodos participantes. Además de utilizar implementaciones ya probadas y verificadas esto, el nodo Directorio tiene como responsabilidad por la comunidad, como lo podrı́a ser Charm-Crypto9 establecer los parámetros necesarios para correr el o Scapi10 . De todas maneras, la criptografı́a imple- protocolo (número de participantes, valores públicos mentada se desarrolló utilizando interfaces, por lo que para realizar los commitments, entre otros), por lo que cuando se descubra una librerı́a que cumpla los requer- también se vuelve un punto de control dentro del pro- imientos criptográficos que se buscan, su implantación tocolo. Un aspecto importante es que todo lo que rela- sea realizada de manera fácil. ciona el protocolo con mantener anonimato (envı́o y verificaciones de demostraciones de seguridad) no pasa 4.4 API Resultante por el nodo Directorio, por lo que su incorporación La API que se tiene actualmente engloba los aspec- no altera en nada el requisito de seguridad buscado tos básicos del diseño del protocolo explicado anteri- (emisores de mensajes anónimos). ormente. Aun faltan ciertas demostraciones a imple- Esta tarea también se puede realizar entre los pro- pios nodos participantes, sin la necesidad de incorpo- 8 https://docs.oracle.com/javase/7/docs/api/java/ rar un nodo Directorio. Si bien en esta investigación math/BigInteger.html 9 http://charm-crypto.com/index.html 7 http://zeromq.org/ 10 https://scapi.readthedocs.io/en/latest/ mentar (que aun no están listas en el diseño), pero volucrados, además de que el 100% de los nodos la parte medular del protocolo está implementado y enviaron mensajes. funcional, dejando como única gran labor al usuario final de la API establecer ciertos parámetros de se- 2. Tamaño del anonymity-set fijo: siempre se man- guridad (número de bits de los grupos necesarios para tuvieron 23 nodos participantes, pero se iba var- las demostraciones, por nombrar a alguno) además del iando la cantidad de mensajes que se enviaban. mensaje a enviar por cada participante. Luego de es- En cada uno de los 2 experimentos se midieron 3 tablecer esos valores, el protocolo empieza a funcionar variables: tiempo total de la ejecución (hasta que se y corre perfectamente, revelando (a medida que van envı́an todos los mensajes involucrados), tiempo que saliendo) los mensajes salientes del protocolo. Como demora en llegar el primer mensaje y tiempo promedio es un trabajo en curso, queda como trabajo futuro por mensaje. Los resultados se muestran y analizan en la realización de pruebas de seguridad (atacar el sis- la próxima sección. tema) para poder detectar leaks de información que derivarı́an en la pérdida de anonimato por parte de los 6 Análisis de los Resultados emisores de mensajes. En la Figura 1 vemos que a medida que el 4.5 Aplicación Móvil anonymity-set va creciendo (y donde todos los nodos envı́an un mensaje), el tiempo total va aumentando Como prueba de concepto de la API implemen- paulatinamente de manera exponencial. Esto se debe tada se creó una aplicación Android que ofrece la fun- a que como existen conexiones punto a punto entre cionalidad de establecer el envı́o de mensajes anónimos los nodos deben realizarse n2 conexiones distintas. Lo basado en el protocolo DC-NET explicado anterior- rescatable en este punto es que tanto el tiempo de lle- mente. gada del primer mensaje como el tiempo promedio por Existen dos funcionalidades de la aplicación: ser mensaje no aumentan considerablemente, otorgando un nodo Directorio o ser nodo Participante. Al ser una cierta homogeneidad al protocolo. Directorio, es necesario establecer parámetros básicos Por otro lado, en la Figura 2 se ve que teniendo del protocolo (número de participantes a aceptar en un tamaño fijo del anonymity-set (23 en este caso), el el anonymity-set y largo máximo de los mensajes). tiempo total a medida que más nodos van enviando Luego de esto la aplicación queda esperando que se mensajes va aumentando de manera lineal. Este esce- conecten los participantes, para posteriormente enviar nario hace más próspero el uso del protocolo, ya que la dirección IP de todos los participantes al resto de serı́a algo más común tener una cierta cantidad de par- ellos. Por otro lado, al ser Participante, es necesario ticipantes fijos, y habrán veces que algunos transmitan primero conectarse a un Directorio, y luego de que el y otras veces no. Directorio informa la dirección de cada otro partici- pante, se establece un mensaje y se envı́a. El proto- colo corre y los mensajes anónimos se van mostrando en pantalla a medida que van llegando. Con esto, podemos argumentar que la API imple- mentada sirve para poder ser utilizar por otra apli- cación que necesite contar con mensajerı́a anónima en- tre un grupo de usuarios en particular. 5 Experimentos La API se puso a prueba simulando una red local utilizando el software Common Open Research Emu- lator (CORE) 11 , que permite simular redes de manera simple y visual. La red se configuró para soportar 23 nodos participantes y 1 nodos directorio, conectados Figure 1: Tamaño de Anonymity-Set Variable a través de una red local (latencia y ancho de banda standard de red local). Se realizaron 2 tipos de experimentos: 7 Conclusiones y Trabajo Futuro 1. Tamaño del anonymity-set creciente: se fue au- El trabajo detallado hay que entenderlo como un mentando la cantidad de nodos participantes in- trabajo en curso, por lo que aun queda mucho tramo 11 http://www.nrl.navy.mil/itd/ncs/products/core por recorrer. Claramente queda como trabajo futuro ient untraceability. Journal of cryptology, 1(1):65–75, 1988. [CS97] Jan Camenisch and Markus Stadler. Proof systems for general statements about dis- crete logarithms. Technical report, Citeseer, 1997. [FvdG14] Christian Franck and Jeroen van de Graaf. Dining cryptographers are practical. arXiv preprint arXiv:1402.2269, 2014. [GRS96] David M Goldschlag, Michael G Reed, and Figure 2: Tamaño de Anonymity-Set Fijo Paul F Syverson. Hiding routing informa- tion. In International Workshop on In- (una vez diseñado e implementado todo el protocolo) formation Hiding, pages 137–150. Springer, realizar un análisis de seguridad a la API implemen- 1996. tada, tratar de atacarla y buscar posibles leaks de in- formación que comprometan el anonimato, ya que el [Ped91] Torben Pryds Pedersen. Non-interactive protocolo puede que funcione correctamente, pero la and information-theoretic secure verifi- implementación de éste requiere otro tipo de ataques able secret sharing. In Annual Interna- y pruebas para ser considerada correcta. Otro aspecto tional Cryptology Conference, pages 129– importante a realizar es poder hacer un profiling a 140. Springer, 1991. la implementación, encontrar zonas de ejecución que [Wai89] Michael Waidner. Unconditional sender and estén tomando mucho tiempo y realizarle mejoras para recipient untraceability in spite of active poder disminuir los tiempos. Por último serı́a impor- attacks. In Workshop on the Theory and tante realizar pruebas de la implementación en esce- Application of of Cryptographic Techniques, narios reales (comunicación a través de Internet, no en pages 302–319. Springer, 1989. una red local) y observar como se comporta en dicho escenario. Los tiempos obtenidos en las pruebas son tiem- pos razonables para pensar en una aplicación de foro anónimo (bulletin-board ), donde la inmediatez de los mensajes no es un aspecto crucial, como lo serı́a un sistema de mensajerı́a instantánea (sala de chat). Lo importante a destacar del trabajo es que es uno de los primeros que implementa y dejarı́a a la comunidad un sistema basado en DC-NET, el cual si bien ya lleva bastantes años desde su aparición, ha sido tomado en cuenta con mucha más importancia últimamente de- bido a los cuestionamientos y ataques descubiertos al protocolo por excelencia en anonimato, onion-routing. La necesidad por anonimato siempre estará, y es re- sponsabilidad de la academia dotar de protocolos se- guros que permitan a los usuarios ejercer su derecho a la privacidad. Referencias [Cha85] David Chaum. Security without iden- tification: Transaction systems to make big brother obsolete. Commun. ACM, 28(10):1030–1044, 1985. [Cha88] David Chaum. The dining cryptographers problem: Unconditional sender and recip-