Dandelion ++ para Monero

Dandelion

EDICIÓN: Dandelion++ Ya ha sido implementando en Monero. ‼️

Monero esta a punto de implementar dandelion ++. Una nueva tecnología que mejorará aun mas la privacidad de Monero a nivel red, haciendo que sea mucho mas difícil para un atacante vincular una tx a un nodo en específico.

Monero confía en su red de conexión entre pares (P2P). Las computadoras que están conectadas a esta red y mantienen la blockchain de monero se les llama nodos, los cuales intercambian y comparten información para mantener el funcionamiento de Monero, esta información básicamente es: direcciones de nodos, datos históricos de la cadena de bloques, bloques a medida que se extraen y nuevas transacciones que se agregarán a los bloques. Además, los nodos se identifican utilizando direcciones de Protocolo de Internet (IP), lo que expone el riesgo de que los observadores puedan trazar direcciones IP a transacciones, desanonimizando los datos que contienen. Dandelion ++ es un método para ocultar esta conexión que está previsto para una próxima versión del software Monero. Este artículo describe cómo funciona Dandelion ++ y qué hará para los usuarios de Monero.

Red P2P de Monero

Monero tiene dos partes conceptuales: 1) una red P2P y 2) aplicaciones que se ejecutan en esta red. Las aplicaciones manejan direcciones, claves y transacciones, mientras que la red organiza y garantiza el flujo de información. Para comprender Dandelion ++, es importante tener en cuenta tanto la estructura de la red P2P como la forma en que las wallets la utilizan para comunicar las transacciones.

Estructura

Su estructura comprende miles de nodos en todo el mundo (decenas de miles si se incluyen nodos pasivos), cada uno conectado a través de Internet a un pequeño grupo de otros nodos llamados pares. Los nodos se comunican con sus pares utilizando el mismo Protocolo de Control de Transmisión (TCP) utilizado por los navegadores web y servidores web. Los pares de un nodo son seleccionados de manera aleatoria y no necesitan estar geográficamente cercanos. Un número común de pares es ocho, pero algunos nodos tienen cientos, cada nodo encuentra sus pares pidiendo primero estos (sus pares) a nodos maestros especiales (master nodes) , luego preguntando por nuevos pares, y así sucesivamente. El resultado es una red de muchas computadoras, cada una de las cuales se comunica a través de TCP con una colección dispersa, generalmente limitada, de las otras.

Como se comunican las wallets

Una wallet de Monero debe comunicarse con uno de estos nodos como puerta de entrada a la red P2P. Algunas wallets, como la billetera GUI oficial, pueden ejecutar su propio nodo, mientras que otras, como MyMonero en un teléfono inteligente, siempre usan un nodo remoto. Las billeteras gastan Monero creando y transmitiendo una transacción a través de su nodo de puerta de enlace, con el objetivo de que la transacción finalmente llegue al nodo de un minero para su inclusión en un bloque minado. Cada transacción contiene información limitada pero que contiene algunos datos significativos, incluido un conjunto de posibles fuentes de fondos gastados.

En este momento, el nodo de Monero que inicia la transmisión de una nueva transacción utiliza un proceso llamado “flooding”. Comunica la transacción a todos sus pares, quienes a su vez se comunican con todos sus pares, y así sucesivamente, con algunas comprobaciones para evitar la comunicación redundante y repetitiva. La información viaja en todas las direcciones a través de la red como una ola. Algunas criptomonedas, como Bitcoin, aleatorizan el momento de esta transmisión, pero Monero no.

¿Cual es el problema?

Tu dirección IP puede decir mucho sobre ti. (Para obtener una muestra de lo que se sabe sobre tu dirección IP, puedes visitar un sitio de información IP como whatismyipaddress.com). Con información proveniente de tu proveedor de servicios de Internet (ISP) o proveedor de red privada virtual (VPN), según sea el caso , podrían fácilmente identificarte por tu nombre. Es por ello que cualquier conexión entre tu dirección IP y las transacciones crea filtraciones de información. Incluso el simple hecho de realizar transacciones de Monero probablemente no sea algo que quieres que los extraños sepan. El problema es que el flooding de transacciones a través de la red P2P de Monero permite a otros, enlazar esa transacción con una dirección IP.

Enlazar una dirección IP a una transacción no es fácil ni perfecto. Se necesitan muchos observadores y mucho trabajo. Pero el uso de una botnet, por ejemplo, conectada a la red Monero P2P permite el cálculo de un posible origen de transacción a través del análisis de tiempos y la comparación con información conocida sobre pares. Cuando hay un ruido fuerte, sabes hacia dónde mirar porque tu cerebro extrae la dirección a partir del tiempo y la distorsión del sonido en cada oído. El análisis de los paquetes de criptomonedas basadas en flooding recibidos en diferentes ubicaciones permite que un adversario espía haga lo mismo. La creación de transacciones es como un ruido fuerte para los nodos de botnet que son como oídos.

Dandelion ++

Si un adversario que busca desanonimizar una transacción con direcciones IP, puede no ser pasivo y no seguir las reglas de la red, es decir, simplemente no ejecutar dandelion y aquí es cuando entra dandelion ++, el cual puede resistir estos ataques de desanonimización a gran escala que rompen las reglas.

Los creadores de Dandelion ++ modelaron a un adversario como una botnet con nodos espías distribuidos por toda la red, formando una fracción significativa de la red general. En su modelo, estos nodos no necesitan seguir las reglas. Pueden generar cualquier cantidad de conexiones salientes a nodos honestos o adversos. Utilizan toda la información disponible, incluidos el tiempo y las direcciones de los remitentes. Es en este entorno muy hostil donde Dandelion ++ logra proteger el anonimato.

Como mencionamos anteriormente Monero utiliza el método de propagación de las transacciones llamado flooding, mediante el cual comunica la transacción a todos sus nodos conectados, que a su vez se comunican con todos los demás nodos y así sucesivamente, propagando la transacción a toda la red como una ola.

Como hace el flooding

Dandelion dirige las transacciones a un nodo remoto de una manera especial indetectable antes de comenzar la propagación. Para hacer esto, los investigadores trabajaron en modelos matemáticos para el anonimato utilizados para estudiar las diversas técnicas de propagación de una transacción, teniendo en cuenta que una red espía puede estar presente en la red. Descubrieron que las técnicas de propagación actuales son inadecuadas para proteger la privacidad.

Para superar este problema, Dandelion define un proceso para encontrar un nodo proxy para transmitir (fase de anonimato) y establece otro proceso para la transmisión a los nodos restantes (fase de difusión). Las dos fases utilizan diferentes conjuntos de conexiones P2P con la diferencia de que la fase de anonimato cambia con el tiempo.

Dandelion

El proceso se ha denominado Diente de león (Dandelion) porque la propagación de la transacción se asemeja a la flor del diente de león al final de la maduración. Primero, existe la búsqueda de un nodo proxy a través de una ruta lineal especial (el tallo de la flor), luego la propagación desde este nodo proxy de forma rápida y simétrica (la parte esponjosa que contiene las semillas). Si Dandelion es utilizado por todos los nodos en la red, demuestra que resiste el espionaje de una red de nodos que se comportan como observadores pasivos.

Pero, ¿qué pasa si la red no está compuesta solo de nodos honestos que usan Dandelion?

Algunos nodos pueden no seguir las reglas y generar cualquier número de conexiones salientes a nodos honestos o contradictorios. Para superar este inconveniente, los investigadores han desarrollado Dandelion ++, introduciendo una conectividad de nodo dinámico que se realiza a intervalos discretos llamados épocas.

Cada nodo cambia la época de forma independiente cada pocos minutos, y en cada nueva época, selecciona dos conexiones nuevas al azar de sus conexiones salientes llamadas “relés”. Cada vez que el nodo crea su propia transacción, la envía a uno de estos dos relés, y cada vez que recibe una transacción de otro nodo para reenviarla durante la fase del “tallo o tronco”, la envía aleatoriamente a una de las dos nuevas conexiones de relé.

La fase de “fluff” en Dandelion ++ se ha mejorado al hacer que los tiempos de comunicación sean aleatorios para que sea más difícil para los nodos espías encontrar la fuente. En cualquier momento, un nodo se clasifica aleatoriamente como un relé o un altavoz. Si un nodo es un difusor, cada vez que recibe una transacción para transmitir en la fase madre, la transmite mediante difusión.

Además, existe un mecanismo a prueba de fallos, mediante el cual se dispara un temporizador cuando un nodo transmite una transacción durante la fase “stem” (Tallo o tronco, fase inicial). Si durante ese tiempo el nodo no recibe la transacción nuevamente en la fase de expansión, comienza una propia. La razón de esto es que los nodos maliciosos pueden descartar transacciones durante la fase madre en lugar de reenviarlas en un ataque de agujero negro.

Integración con Monero

Aunque Dandelion ++ se desarrolló explícitamente para Bitcoin, el desarrollador Lee Clagett (vtnerd) lo aplicó recientemente a Monero, con pruebas y revisión por parte del desarrollador moneromooo. Las discusiones y los cambios de archivos realizados por estos destacados desarrolladores de Monero se pueden ver como parte de la solicitud de un Pull request. Una solicitud de extracción o pull request es parte del proceso formal por el cual el nuevo código ingresa al codigo base de Monero. Aunque la solicitud del pull request para Dandelion ++ fue aprobada por moneromooo, al momento de escribir este documento aún no ha completado toda la revisión y no se ha fusionado en la base de código de Monero.

Algunos trade off:

Ten en cuenta que Dandelion ++ no te protege ante un análisis espiá de ISP/VPN, podrías usar TOR para ello, Dandelion++ tampoco encripta los paquetes P2P.

Dandelion añade un pequeño retraso a la propagación de las tx, sin embargo este retraso no debería afectar a la red de manera significativa.

Fuentes:

Opiniones e investigaciones propias sumado a información obtenida de:

Comunidad Rusa de Monero: https://xmr.ru/threads/1257/