Introducción al Coin Mixing y los CoinJoins
Inicio
Artículos
Introducción al Coin Mixing y los CoinJoins

Introducción al Coin Mixing y los CoinJoins

Avanzado
Publicación: Mar 25, 2020Actualización: Dec 28, 2022
6m

Contenido


Introducción

A menudo se habla de Bitcoin como una forma de dinero efectivo digital, pero se trata de una comparación cuestionable. Si Alice le paga a Bob diez dólares en efectivo, este último no tendrá ni idea de donde salió el dinero. Si a continuación Bob procede a dárselo a Carol, ella será incapaz de deducir que Alice estuvo alguna vez en posesión de él.
Bitcoin es diferente por su inherente naturaleza pública. La historia de una moneda concreta (o de forma más precisa, el output de una transacción no utilizada o UTXO) queda a la vista de cualquiera de un modo trivial. Sería algo así como escribir en un billete cada vez que se utiliza, la cantidad de la transacción y los participantes en la misma. 
Dicho esto, el seudonimato de una dirección pública garantiza que las identidades de los usuarios no serán reveladas con facilidad. Y sin embargo, Bitcoin no es completamente privado. La sofisticación del análisis blockchain va en aumento y cada vez es capaz de vincular direcciones e identidades de una forma más eficiente. Con la ayuda de otras técnicas de vigilancia, un ente especializado puede desanonimizar a los usuarios de criptomonedas. Para remediarlo, técnicas que permiten desvincular transacciones han emergido a lo largo de estos años.


¿Qué es el Coin Mixing?

En términos generales, el coin mixing puede designar cualquier actividad que involucre la ofuscación de fondos, mediante la substitución de los mismos por otros. Sin embargo, en el ámbito de las criptomonedas, el coin mixing normalmente designa un servicio ofrecido por un tercero. Habitualmente, los proveedores del servicio toman las monedas de los usuarios (y una pequeña comisión), y les devuelven otras sin vínculo alguno con las enviadas. Dichos servicios también se conocen como tumblers o mixers.

La seguridad y el anonimato de estos servicios centralizados son, por supuesto, cuestionables. Los usuarios no tienen ninguna garantía de que su dinero les será devuelto por el mixer, o que las monedas retornadas no estarán de algún modo "manchadas". Otro aspecto adicional a considerar al utilizar un mixer, es que las direcciones IP y de Bitcoin pueden ser registradas por un tercero. En definitiva, los usuarios ceden el control de sus fondos, esperando recibir a cambio otros que no estén vinculados.

Ahora bien, existe un enfoque presumiblemente más interesante bajo la forma de las llamadas transacciones CoinJoin -las cuales generan un grado significativo de "negación plausible". Lo que esto significa es que después de una CoinJoin ninguna evidencia puede vincular a un usuario con sus transacciones previas. Muchas soluciones de tipo CoinJoin ofrecen una alternativa descentralizada a los mixers. A pesar de que un coordinador puede verse involucrado en las mismas, los usuarios no necesitan sacrificar la custodia de sus fondos.


¿Qué es una CoinJoin?

Las transacciones CoinJoin fueron originalmente propuestas por Gregory Maxwell, desarrollador de Bitcoin, en 2013. En un hilo, haría un breve resumen sobre la forma en que estas transacciones se estructuran, y cómo pueden lograrse enormes beneficios en privacidad sin ningún cambio en el protocolo.
En esencia, una CoinJoin consiste en la combinación de inputs de múltiples usuarios en una transacción única. Antes de explicar cómo (y por qué), echemos un vistazo a la estructura de una transacción básica.

Las transacciones de Bitcoin están compuestas por inputs y outputs. Cuando un usuario quiere realizar una transacción, toma sus UTXOs como inputs, especifica los outputs y firma los inputs. Es importante señalar que cada input se firma de manera independiente, y que los usuarios pueden establecer múltiples outputs (que se dirijan a direcciones distintas).



Si nos fijamos en una transacción concreta, compuesta por cuatro inputs (de 0.2 BTC cada uno) y dos outputs (de 0.7 y 0.09 BTC), podemos hacer una serie de suposiciones distintas. La primera es que nos encontramos ante la realización de un pago –el emisor está enviando a alguien uno de los outputs, y recibiendo de vuelta una parte como cambio. Dado que se han utilizado cuatro inputs, el output más grande es probable que sea para el destinatario. Cabe señalar que en los outputs faltarían 0.01 BTC -se trataría de la comisión pagada al minero.

También es posible que el remitente quiera crear un UTXO grande a partir de los más pequeños, de modo que consolide entradas más pequeñas para obtener el resultado deseado de 0.7 BTC.

Otra suposición que podemos hacer se basa en el hecho de que cada entrada se firma de forma independiente. Esta transacción podría tener hasta cuatro partes diferentes que firman las entradas. Y ahí radica el principio que hace que CoinJoining sea efectivo.


¿Cómo funciona una CoinJoin?

La idea es que múltiples partes se coordinarán para crear una transacción, cada una de las cuales proporcionará entradas y salidas deseadas. Como todas las entradas se combinan, resulta imposible decir con certeza qué salida pertenece a qué usuario. Considera el siguiente diagrama:



Aquí, tenemos cuatro participantes que desean romper el vínculo entre las transacciones. Se coordinan entre ellos (o por medio de un coordinador dedicado) para anunciar las entradas y salidas que les gustaría incluir.

El coordinador tomará toda la información, la elaborará en una transacción y hará que cada participante firme antes de transmitirla a la red. Una vez que los usuarios han firmado, la transacción no se puede modificar sin que se invalide. Por lo tanto, no hay riesgo de que el coordinador se escape con los fondos.

La transacción sirve como una especie de caja negra para mezclar monedas. Recuerde que efectivamente destruimos los UTXO para crear otros nuevos. El único vínculo entre los viejos y nuevos UTXO que tenemos es la transacción en sí, pero, por supuesto, no podemos distinguir entre los participantes. En el mejor de los casos, podemos decir que un participante proporcionó una de las entradas y es quizás el nuevo propietario de una salida resultante.

Pero incluso eso de ninguna manera está garantizado. ¿Quién puede decir, al mirar la transacción anterior, que hay cuatro participantes? ¿Esta persona está enviando sus fondos a cuatro de su propia dirección? ¿Dos personas que realizan dos compras separadas y devuelven 0.2 BTC cada una a sus propias direcciones? ¿Cuatro personas enviando a nuevos participantes, o de regreso a sí mismos? No podemos estar seguros.


Privacidad a través de la negación

El hecho mismo de que existan implementaciones de CoinJoin es suficiente para poner en duda los métodos utilizados para analizar las transacciones. Puedes deducir que se ha producido un CoinJoin en muchos casos, pero aún no sabe quién es el propietario de los resultados. A medida que crecen en popularidad, la suposición de que todas las entradas son propiedad del mismo usuario se debilita, un salto masivo para la privacidad en el ecosistema más amplio.

En el ejemplo anterior, decimos que la transacción tenía un conjunto de anonimato de 4 – el propietario de una salida podría ser cualquiera de los cuatro participantes involucrados. Cuanto mayor sea el conjunto de anonimato, menos probable es que las transacciones se puedan vincular a su propietario original. Afortunadamente, las implementaciones recientes de CoinJoin hacen que sea trivial para los usuarios fusionar sus entradas con docenas de otras personas, lo que proporciona un alto grado de negación. Recientemente, se ejecutó con éxito una transacción de 100 personas.


Conclusión

Las herramientas para mezclar monedas son una adición importante al arsenal de cualquier usuario que se tome en serio su privacidad. A diferencia de las actualizaciones de privacidad propuestas (como las Transacciones confidenciales), son compatibles con el protocolo como lo es hoy. 

Para aquellos que confían en la integridad y la metodología de terceros, la combinación de servicios es una solución fácil. Para aquellos que prefieren una alternativa verificable y sin custodia, las alternativas de CoinJoin son superiores. Esto se puede hacer a mano para usuarios con conocimientos técnicos, o mediante el uso de herramientas de software que abstraen los mecanismos más complejos. Ya hay un puñado de estas herramientas que solo continúan creciendo en popularidad a medida que los usuarios luchan por una mayor privacidad.