En busca de una mejora de la privacidad en las criptodivisas con Dash, Zcash y Monero

martes, 24 de abril de 2018

Cuando se habla de criptodivisas a menudo nos encontramos con la creencia de que su uso es completamente anónimo. Quienes hayan investigado un poco sobre alguna de ellas (porque sobre todas las que existen es imposible), sabrán que no es necesariamente así teniendo en cuenta que las operaciones de muchas de ellas son perfectamente trazables en las correspondientes cadenas de bloques.

De esta manera, si en una presunta actividad delictiva nos encontramos con direcciones de Bitcoin o Litecoin, podremos trazar las operaciones en las que se ha encontrado involucrada, así como navegar en el tiempo hacia adelante o hacia atrás en la cadena de bloques. Asimismo, también debemos conocer la intrahistoria de dicha criptodivisa ya que si se ha producido algún hard fork podrían estar gastando dichos bitcoins en diferentes cadenas de bloques bajo reglas diferentes. Un ejemplo de ello ha sido la investigación que publicamos hace unas semanas sobre las direcciones de Wannacry siguiendo la pista tanto a través de la cadena de bloques de Bitcoin como de la de Bitcoin Cash.

¿Y qué hacemos si en el transcurso de una investigación terminamos encontrándonos con una dirección de una criptodivisa que no tenemos en el radar o que no conocemos? Lo primero, como casi siempre, buscaremos en Google. Sin embargo, una primera referencia puede ser el proyecto de Coinmarketcap.com, porque además de facilitar información sobre la cotización media incluye links a las webs oficiales del proyecto y a algunos exploradores de la cadena de bloques de cada criptodivisa.

Información proporcionada por coinmarketcap sobre Bitcoin Cash imagen
Figura 1. Información proporcionada por coinmarketcap sobre Bitcoin Cash.

¿Por qué se insiste tanto en la capa de anonimato?
La pregunta puede parecer lógica a priori. ¿De dónde surge el concepto de anonimato si las transacciones son trazabales? La respuesta reside en que, pese a que es posible relacionar operaciones entre direcciones a través de la cadena de bloques, la asociación de cada dirección con una persona u organización es realmente compleja si no hay una manifestación en ese sentido por el propietario de la misma por error u omisión o haya pasado por algún exchange.

Incluso aunque así fuera, es recomendable la generación de direccioens diferentes siguiendo las recomendaciones de la comunidad de Bitcoin. De esta manera, la persona a la que pagamos no tendrá información sobre la cantidad total de dinero que tenemos cuando le hacemos un pago como sí ocurriría si tuviéramos toda nuestra fortuna en la misma dirección. Al fin y al cabo, cuando pagamos en efectivo en un comercio no le decimos a la persona a la que pagamos cuánto dinero tenemos en el banco, sino que solo le pagamos la cantidad justa para cubrir el importe del producto. Por tanto, es precisamente en la posibilidad de generar numerosas direcciones donde reside el anonimato en Bitcoin. De ahí también la aparición de servicios denominados como mixers que se dedican exclusivamente a realizar esta operación. Si el saldo de las direcciones empieza a circular entre decenas de direcciones, es difícil que un observador externo pueda establecer cuándo ha cambiado de manos el dinero teniendo información solamente de la cadena de bloques.

Dash, Zcash y Monero
Para afrontar el problema del anonimato que proporciona Bitcoin, han ido surgiendo distintos proyectos como Dash, Zcash y Monero.

Dash surge en 2014 y está basada en el código fuente de Bitcoin. Cuenta con dos tipos de nodos: nodes (mineros) y masternodes (a cargo de la gobernanza y de usos extra como los envíos instantáneos y anónimos). Estos últimos son nodos especiales encargados de ejecutar determinadas funciones específicas propias de la criptodivisa:

  • PrivateSend. A diferencia de Monero, el anonimato en DASH es opcional. Las transacciones se enrutan a través de los masternodes de forma similar a un mixer. La cantidad máxima a enviar por este método son 1000 DASH.
  • InstantSend. En otras criptodivisas es necesario esperar a que una transacción sea añadida en un bloque. Con esta funcionalidad lo que se pretende es agilizar el plazo si hay consenso entre los masternodes.

Para tener un masternode y tener derecho a votar las propuestas, se debe contar con 1000 DASH (alrededor de 300K USD en abril de 2018). Los beneficios de cada bloque se reparten 45% para los mineros, 45% para los masternodes y 10% para financiar el proyecto (nuevos desarrolladores o acciones de comerciales).

Zcash surge en 2016 a raíz de un fork del código fuente de Bitcoin poniendo foco en la privacidad. Los usuarios pueden (opcionalmente) usar zk-Snarks para enmascarar el emisor, receptor y saldo de una transacción. Sin embargo, solamente el 3,5% de las monedas están en manos de direcciones privadas. De esta manera, J. Quesnelle en un estudio consigue asociar el 31% de las operaciones que implican estas transacciones con sus propietarios.

Monero. Ya hemos hablado en este blog sobre la privacidad implementada por Monero. En resumidas cuentas, Monero no facilita información sobre quién es el emisor y receptor de una transacción al utilizar firmas circulares o en anillo que mezclan las transacciones de distintos usuarios a nivel de protocolo. La implementación Ring Confidential Transactions en enero de 2017 añadió la posibilidad de ocultar también el saldo de las operaciones.

Los rastreadores de huellas
A falta de información adicional sobre el origen de las transacciones, los exploradores de las cadenas de bloques de criptodivisas como Monero todavía manejan más información jugosa entre manos. Para empezar, si un usuario consulta información sobre un txid en su explorador ellos ya tienen la capacidad para asociar una dirección IP con una transacción. Si en el caso de Monero, además de percibir una consulta a un txid, reciben una petición de verificación del pago de una dirección de Monero en esa transacción junto con la correspondiente clave privada de vista, esa plataforma tendrá la capacidad de conocer el saldo recibido por esa cuenta, no solamente en esa transacción sino que también en el resto de operaciones de la cadena de bloques de Monero después de reescanearlo. Por este motivo, es recomendable realizar la verificación del saldo en nodos locales y no depender de la reputación de terceros a la hora de verificar los saldos recibidos.

Ejemplo de explorador de Monero imagen
Figura 2. Ejemplo de explorador de Monero. 

Incluso así, no hay que perder de vista que el hecho de realizar conexiones con nodos de la red de estas criptodivisas puede ser indicador del uso de las mismas. Por este motivo, y siendo conocedores de que el anonimato de las transacciones no es suficiente para generar un sistema de pagos completamente anónimo, los desarrolladores principales de Monero Project también están trabajando en un proyecto destinado a mejorar la privacidad a nivel de red. Basado en i2P y y conocido como Kovri (en esperanto, encubrir u ocultar), este proyecto aún en desarrollo pretende cubrir el vacío existente a nivel de red para anonimizar el origen de las conexiones.


Félix Brezo
Equipo de Innovación y Laboratorio de ElevenPaths
Yaiza Rubio
Equipo de Innovación y Laboratorio de ElevenPaths
@yrubiosec
yaiza.rubio@11paths.com

No hay comentarios:

Publicar un comentario