Noticias 

CoinJoin: la combinación de transacciones Bitcoin para aumentar la privacidad

Aunque es útil, la plataforma presenta problemas ligados al poco uso por parte de los usuarios de carteras y a que el sistema encubre las direcciones pero no las cantidades enviadas, lo que sigue constituyendo un problema de resguardo


Bitcoin en este momento no es realmente anónimo. Aunque que las direcciones Bitcoin no están necesariamente vinculadas a las identidades del mundo real, sí podían estarlo. La supervisión de la red sin cifrar peer-to-peer, el análisis del Blockchain público, la política de “Conoce a tus Clientes” (“Know Your Costumer”, KYC por sus siglas en inglés) o las medidas contra el lavado de dinero (“Anti-Money Laundering”, AML) y la regulación de los clientes puede revelar mucho sobre quién está usando Bitcoin y para qué.

Esto no es algo bueno desde la perspectiva de la privacidad. Los usuarios de Bitcoin podrían no querer que el mundo sepa dónde gastan su dinero, lo que ganan o cuánto poseen, mientras que las empresas pueden no querer tener fugas de detalles de las transacciones que realizan y que beneficien a los competidores -por nombrar algunos ejemplos.

Además, al ser rastreables, y posiblemente “viciadas”, esto podría incluso desafiar propuesta de valor de Bitcoin como dinero.

Pero hay soluciones posibles para aumentar la privacidad y mejorar la fungibilidad. Una solución que ha estado orbitando por un tiempo es CoinJoin.

Antecedentes

En el fondo, el protocolo Bitcoin consiste en varias operaciones. Todas estas transacciones son completamente públicas en Blockchain, lo que significa que cualquiera puede ver qué dirección envió bitcoins a cuál otra dirección. Si alguna de estas direcciones se vincula a las identidades del mundo real, se podría revelar quién hizo las operaciones, con quién o con qué fin. Esto está en contradicción con la privacidad y -sobre todo- con la fungibilidad (capacidad de un bien consumible de ser intercambiado por otro tanto de igual cantidad -como el dinero-).

Además, cada transacción en particular pasa por una o varias “entradas”, en referencia a las direcciones Bitcoin desde las cuales se envía un monto. Estas entradas se transfieren a unas “salidas”, en referencia a las direcciones Bitcoin a las cuales se envía un monto). Esto plantea otro desafío a la privacidad y la fungibilidad, ya que todas las direcciones de entrada típicamente pertenecen a un mismo usuario: el remitente de la transacción. Si una sola de todas las direcciones de entrada agrupadas se puede vincular a una identidad del mundo real, todas las demás lo son.

CoinJoin -propuesto en 2013 por el desarrollador de Bitcoin Core y Blockstream Gregory Maxwell- está diseñado para resolver estos dos problemas. Se ofusca el rastro de bitcoins y se rompe el supuesto de que todas las direcciones de entrada pertenecen al mismo usuario.

La idea

El concepto CoinJoin es bastante sencillo. En esencia, permite que varios usuarios CoinJoin combinen todas las entradas y salidas de varias transacciones en una sola transacción grande. Esta sola transacción pasa bitcoins desde diferentes direcciones a otras diferentes direcciones, y puesto que ninguna de las direcciones que envía paga nada a ninguna de las otras particulares que reciben, no hay ninguna relación entre ellas.

(Esto puede ser comparado con un grupo de personas que tiran su dinero juntos y van de compras. Mientras que todo el mundo pudiera asegurarse de que nadie gasta más de lo debido, los compradores no necesariamente gastan las cuentas exactas que originalmente pusieron en la cartera compartida).

En Bitcoin, esto se puede lograr perfectamente de manera segura. Todas las entradas requieren una firma correspondiente de sus respectivos propietarios, mientras que el contenido de una transacción no se puede cambiar después de que se añade una firma. Como tal, los participantes de una transacción CoinJoin simplemente anuncian qué entradas y salidas desean incluir en la transacción, y firman el agregado sólo si estas entradas y salidas se incluyen correctamente. Una vez que todos los participantes hayan firmado (y sólo una vez que hayan firmado), la transacción se lleva a cabo.

Una característica clave de CoinJoin: una vez que la transacción se transmite y se incluye en Blockchain, no hay manera de saber a dónde fueron los bitcoins; ni siquiera los beneficiarios de la operación sabrán quién es el que pagó.

Además, CoinJoin mejora la privacidad, incluso de aquellos que no lo usan en absoluto. Ya que una combinación de entradas no necesariamente significa que todas las direcciones de entrada pertenecen a un mismo usuario, la agrupación se ha convertido en una herramienta para un análisis menos potente en general.

En la práctica

CoinJoin no requiere ningún cambio en el protocolo de Bitcoin, y ya cuenta con varias implementaciones. La principal diferencia entre algunas otras versiones es cómo se crea la transacción en CoinJoin.

La forma más fácil de crear una transacción CoinJoin es a través de un servidor dedicado. Cualquier persona que quiera utilizar CoinJoin simplemente debe conectarse al servidor para indicar qué entradas y salidas de la transacción desea incluir. Después, el servidor crea una gran operación agregada, y la envía de vuelta para que todos los participantes la firmen. DarkWallet -la cartera Bitcoin centrada en privacidad, que parece estar anclada en su fase alfa- emplea un modelo basado en servidor, como lo hace la popular web de la cartera Blockchain, aunque su eficacia se ha cuestionado en el pasado.

El principal problema con el modelo basado en servidor, es que quien controla el servidor normalmente tendría acceso a los datos proporcionados por los participantes individuales. Como tal, este servidor presenta un único punto de fallo desde una perspectiva de la privacidad y la fungibilidad. Hay soluciones posibles que enmascaren criptográficamente los datos de transacción incluso desde el servidor, pero esto sigue siendo teórico por los momentos.

También existen soluciones CoinJoin descentralizadas, que construyen operaciones CoinJoin peer-to-peer, o al menos sin ningún intermediario central en particular. Ha habido varios intentos en esta dirección, en particular Coinmux, Coinjumble, CoinJoiner y la herramienta del ex desarrollador de CoinJoin, Amir Taaki, DarkWallet. Pero ninguno de estos han sido ampliamente utilizados, y por lo tanto no han sido muy útiles -“coinjoining” tiene sentido sólo cuando hay alguien que se una.

Un intento más reciente sobre la estrategia CoinJoin que tiene la intención de abordar este problema es JoinMarket: un mercado para las transacciones CoinJoin. Los usuarios pueden ofrecer un espacio en una transacción CoinJoin a cambio de una pequeña cuota -o comprar el acceso a una transacción CoinJoin por sí mismos-. Los creadores de JoinMarket creen que el incentivo para mezclar las monedas a cambio de honorarios debe generar liquidez suficiente para hacer que el mercado sea un éxito -mientras que la naturaleza competitiva de la misma debe mantener las tarifas bajas. De hecho, JoinMarket está siendo relativamente bien utilizado en comparación con las alternativas, y la cartera de pedidos (en el momento de escribir esto) ofrece miles de bitcoins para mezclar.

Por último, otra cartera centrada privacidad, Samourai Wallet, actualmente incluye un tipo de imitación de CoinJoin, diseñado para deshacerse de todo el que está analizando la data Blockchain. Esta opción hace que las transacciones aparezcan como transacciones CoinJoin, mientras que, en realidad, todas las entradas y salidas pertenecen al mismo usuario. (Samourai Wallet tiene previsto ampliar y construir una opción de cartera cruzada a finales de este año, lo que también podría utilizar la funcionalidad CoinJoin).

Inconvenientes y soluciones

Aunque útil, CoinJoin no es perfecto. Lo más importante: aunque que CoinJoin hace un gran trabajo mezclando las entradas y salidas, esto no es suficiente si las cantidades son reveladoras. Si una entrada envía 4,9 bitcoins, otra entrada envía 2,7 bitcoins y un tercio entradas envía 0,8 bitcoins, mientras que una salida recibe 4,9 bitcoins, uno recibe 2,7 bitcoins y un tercero recibe 0,8 bitcoins, entonces es fácil de conectar las entradas a las salidas.
Una posible solución a este problema, por supuesto, son transacciones confidenciales. Dado que las transacciones confidenciales enmascaran las cantidades enviadas (pero no las entradas y salidas), CoinJoin y transacciones confidenciales son una combinación potencialmente poderosa.

Otro riesgo es el de los ataques Sybil. Al parecer, entre varios participantes en una transacción CoinJoin realmente puede haber una y la misma entidad analizando y estableciendo un seguimiento a un participante en particular.

(Si las entradas y salidas de nueve de cada diez pertenecen a un envío de bitcoins de una agente NSA a sí mismo, él sabría qué salida restante envió bitcoins y en qué salida que queda).

No existe una solución fácil para el problema de los ataques Sybil, pero a medida que los usuarios más genuinos mezclan sus monedas, hace que llevarlos a cabo sea más difícil.
Lo que nos lleva al siguiente punto: CoinJoin sigue siendo una molestia. Casi no hay carteras que lo tengan incorporada, y las que lo tienen no la utilizan mucho (y se basan en un servidor central). JoinMarket es probablemente la aplicación más exitosa hasta la fecha, pero todavía requiere un software especial y tarifas adicionales (aunque pequeñas).

Pero un desarrollo interesante en el horizonte podría sesgar estos incentivos: las firmas Schnorr. Habilitado por Segregated Witness, firmas Schnorr podría permitir la agregación de todas las firmas en una transacción CoinJoin de una sola firma. Esta eficiencia debe resultar en tasas de transacción más bajas por entrada, y tal vez estimular el uso de soluciones más privadas y fungibles.

Fuente: Bitcoin Magazine
Traductor: Robert Hazlitt

Advertisements

Related posts