Análisis de datos de privacidad en bitcoin (I)

9 abril, 2018

Trobareu la versió en català més avall.

Aunque el público general tiene la impresión de que el bitcoin es una moneda anónima, esta impresión dista bastante de la realidad de la criptomoneda más popular. En los siguientes dos post sobre este tema, veremos que usando algunas técnicas analíticas podemos inferir información de las transacciones con bitcoins.

Para empezar y situarnos, vamos a dar una pincelada sobre cómo funciona bitcoin. Bitcoin es una moneda virtual que funciona por internet, que está soportada por una estructura de datos denominada blockchain (cadena de bloques), la cual es mantenida y guardada por una gran cantidad de nodos de una red P2P. Los usuarios de bitcoin, cuando desean realizar una transacción, hacen llegar los datos de la transacción a algunos de los nodos de la red P2P, a los que llamamos mineros. Los mineros recopilan las transacciones de varios usuarios y las empaquetan en un bloque que intentan publicar en la blockchain. Cada 10 minutos aproximadamente, se publica un nuevo bloque en la blockchain, con lo que los mineros compiten entre ellos resolviendo pruebas criptográficas para tener el derecho a publicar el siguiente bloque. Como incentivo para que los nodos de la red compitan, el minero que logre publicar el siguiente bloque recibe una recompensa en bitcoins y tiene el derecho a quedarse las comisiones que pagan los usuarios por hacer las transferencias.

En la red de bitcoin existen muchos mineros que reciben muchas transacciones de muchos usuarios diferentes, con lo que cada minero generará un bloque diferente. Por este motivo, entre todos los nodos de la red se ejecuta un protocolo de consenso para decidir qué bloque de qué minero será aceptado por todos y se convertirá en el último bloque publicado de la blockchain. Una de las características esenciales de un nuevo bloque aceptado es que debe incluir el resultado de computar un hash del último bloque ya aceptado, con lo que forma una especie de enlace criptográfico entre bloques. Es por estos enlaces que la estructura de datos de bitcoin se conoce como cadena de bloques (blockchain). Así, esta manera de construir la blockchain hace que sea una estructura de datos inmutable. O sea, podemos añadir nuevas transacciones a la cadena, pero no podemos ni borrar ni modificar transacciones ya existentes, ya que cualquier cambio de los datos ya publicados haría variar el resultado de computar las funciones hash de los bloques modificados, y por lo tanto, los bloques dejarían de quedar enlazados. Además, otra característica importante de bitcoin es que la cadena es pública, con lo que cualquiera puede consultar su contenido (por ejemplo usando exploradores como blockchain.info), y no sólo eso, sino que cualquiera puede desplegar un nuevo nodo en la red para validar las transacciones, verificar que no hay pagos incorrectos y convertirse en un minero.

Además, también es necesario saber que las transacciones en bitcoin pueden tener varias entradas y varias salidas. Así, las transferencias de bitcoins entre usuarios se construyen gastando salidas de transacciones previas que ya estuvieran registradas en la blockchain. Por ejemplo, si un usuario A es propietario de una transacción con una sola salida, a la que nos referiremos como T1[0], por valor de 4 bitcoins y otra T2[0] por valor de 6 bitcoins, entonces podría comprar algo en un e-commerce por 7 bitcoins juntando T1[0] y T2[0], con lo que construiría una transacción T3 con estas dos entradas que tendría un valor de 10 bitcoins. Entonces, esta nueva transacción T3 tendría dos salidas: T3[0] con un valor de 7 bitcoins y otra T3[1] con valor de 3 bitcoins. Así, podría asignar T3[0] a una dirección de bitcoin del e-commerce y T3[1] a una dirección controlada por el propio usuario. De esta manera cuando se incluyera T3 en la blockchain el usuario habría transferido los 7 bitcoins al e-commerce y se habría transferido 3 a él mismo.

En este punto del artículo, ya podemos plantearnos cuestiones de anonimidad y privacidad en este sistema. Primero, aclarar que bitcoin no es anónimo, sino que es pseudoanónimo, ya que en vez de usar nuestra identidad en las transacciones, lo que se usa es una dirección extraída de una clave pública que actúa como un alias nuestro. Además, como hemos visto antes, la blockchain es pública y los datos no se guardan encriptados, así que tampoco podemos decir que bitcoin es privado ya que, observando las transacciones, es posible ver directamente datos con el valor de las transacciones y los pseudónimos del emisor y del receptor. De esta manera, si en algún punto alguien consigue vincular una dirección de bitcoin con un usuario, entonces es posible estirar la cadena y acabar descubriendo incluso más información que, posiblemente, al usuario le gustaría mantener confidencial, como por ejemplo, su balance o el origen del dinero.

Sabiendo todo esto, vamos a ver qué técnicas podemos usar para inferir información de la blockchain de bitcoin más allá de la información obvia de una transacción que podemos observar directamente observando la cadena de bloques. Básicamente, hay dos tipos de técnicas para extraer información: técnicas de des-anonimización en la capa de red y técnicas basadas en el análisis del grafo de transacciones. Las primeras técnicas se basan en usar la información transmitida en la capa de red del protocolo para inferir información del usuario. Al enviar las transacciones a los nodos de la red P2P, el usuario está también enviando información de su IP. Por lo tanto, aprovechando otras conexiones a otros servicios (e.g. Facebook) hechas desde la misma IP, un adversario podría fácilmente des-anonimizar a un usuario. Adversarios que podrían tener acceso a este tipo de información son ISPs o nodos maliciosos de la red de bitcoin. Estos problemas de privacidad en la capa de red han sido estudiados ampliamente y se han presentado soluciones como el uso de Tor, aunque para realizar pagos con bitcoin se han reportado algunos problemas con este sistema, problemas que van más allá del ámbito de este post.

Y por hoy, con esta introducción al problema, ya tenemos suficiente. En el siguiente post dedicado a este tema veremos la parte más interesante, las técnicas de análisis del grafo de las transacciones.

Victor Garcia-Font es profesor de los Estudios de Informática, Multimedia y Telecomunicación de la Universitat Oberta de Catalunya.

 

Anàlisi de dades de privacitat a bitcoin (I)

Tot i que el públic general té la impressió que el bitcoin és una moneda anònima, aquesta impressió dista bastant de la realitat de la criptomoneda més popular. En els propers dos post sobre aquest tema veurem que, usant algunes tècniques analítiques, podem inferir informació de les transaccions amb bitcoins.

Per començar i situar-nos, farem una pinzellada sobre com funciona bitcoin. Bitcoin és una moneda virtual que funciona per internet i que està suportada per una estructura de dades anomenada blockchain (cadena de blocs), la qual és mantinguda i guardada per una gran quantitat de nodes d’una xarxa P2P. Els usuaris de bitcoin, quan volen realitzar una transacció, fan arribar les dades de la transacció a alguns dels nodes de la xarxa P2P, als quals anomenem miners. Els miners recopilen les transaccions de diversos usuaris i les empaqueten en un bloc que intenten publicar a la blockchain. Cada 10 minuts, aproximadament, es publica un nou bloc a la blockchain, de manera que els miners competeixen entre ells resolent proves criptogràfiques per tenir el dret a publicar el següent bloc. Com a incentiu perquè els nodes de la xarxa competeixin, el miner que aconsegueixi publicar el següent bloc rep una recompensa en bitcoins i té el dret a quedar-se les comissions que paguen els usuaris per fer les transferències.

A la xarxa de bitcoin hi ha molts miners que reben moltes transaccions de molts usuaris diferents, de manera que cada miner generarà un bloc diferent. Per aquest motiu, entre tots els nodes de la xarxa s’executa un protocol de consens per decidir quin bloc de quin miner serà acceptat per tots i es convertirà en l’últim bloc publicat de la blockchain. Una de les característiques essencials d’un nou bloc acceptat és que ha d’incloure el resultat de computar un hash de l’últim bloc ja acceptat, de manera que es forma una espècie d’enllaç criptogràfic entre blocs. Per aquests enllaços, l’estructura de dades de bitcoin es coneix com a cadena de blocs (blockchain). Així, aquesta manera de construir la blockchain fa que sigui una estructura de dades immutable. O sigui, podem afegir noves transaccions a la cadena, però no podem ni esborrar ni modificar transaccions ja existents, ja que qualsevol canvi de les dades ja publicades faria variar el resultat de computar les funcions hash dels blocs modificats i, per tant, els blocs deixarien de quedar enllaçats. A més, una altra característica important de bitcoin és que la cadena és pública, de manera que qualsevol pot consultar el seu contingut (per exemple usant exploradors com blockchain.info), i no només això, sinó que qualsevol pot desplegar un nou node a la xarxa per validar les transaccions, verificar que no hi ha pagaments incorrectes i esdevenir un miner.

A més, també cal saber que les transaccions en bitcoin poden tenir diverses entrades i diverses sortides. Així, les transferències de bitcoins entre usuaris es construeixen gastant sortides de transaccions prèvies que ja estiguessin registrades a la blockchain. Per exemple, si un usuari A és propietari d’una transacció amb una sola sortida, a la qual ens referirem com T1 [0], per valor de 4 bitcoins i una altra T2 [0] per valor de 6 bitcoins, llavors podria comprar alguna cosa en un e-commerce per 7 bitcoins ajuntant T1 [0] i T2 [0], de manera que construiria una transacció T3 amb aquestes dues entrades que tindria un valor de 10 bitcoins. Aquesta nova transacció T3 tindria dues sortides: T3 [0] amb un valor de 7 bitcoins i una altra T3 [1] amb valor de 3 bitcoins. Així, podria assignar T3 [0] a una adreça de bitcoin de l’e-commerce i T3 [1] a una adreça controlada pel propi usuari. D’aquesta manera, quan s’inclogués T3 a la blockchain, l’usuari hauria transferit 7 bitcoins a l’e-commerce i s’hauria transferit 3 a ell mateix.

En aquest punt de l’article, ja podem plantejar qüestions d’anonimitat i privacitat en aquest sistema. Primer, aclarir que bitcoin no és anònim, sinó pseudoanònim, ja que en comptes d’usar la nostra identitat en les transaccions, el que es fa servir és una adreça extreta d’una clau pública que actua com un àlies nostre. A més, com hem vist abans, la blockchain és pública i les dades no es guarden xifrades, així que tampoc podem dir que bitcoin és privat, ja que observant les transaccions és possible veure directament dades amb el valor de les transaccions i els pseudònims de l’emissor i del receptor. D’aquesta manera, si en algun punt algú aconsegueix vincular una adreça de bitcoin amb un usuari, llavors és possible estirar la cadena i acabar descobrint fins i tot més informació que, possiblement, a l’usuari li agradaria mantenir confidencial, com ara, el seu balanç o l’origen dels diners.

Sabent tot això, veiem ara quines tècniques podem utilitzar per inferir informació de la blockchain de bitcoin més enllà de la informació òbvia d’una transacció, que podem observar directament observant la cadena de blocs. Bàsicament, hi ha dos tipus de tècniques per extreure informació: tècniques de des-anonimització a la capa de xarxa i tècniques basades en l’anàlisi del graf de transaccions. Les primeres tècniques es basen en utilitzar la informació transmesa a la capa de xarxa del protocol per inferir informació de l’usuari. En enviar les transaccions als nodes de la xarxa P2P, l’usuari està també enviant informació de la seva IP. Per tant, aprofitant altres connexions a altres serveis (e.g. Facebook) fetes des de la mateixa IP, un adversari podria fàcilment des-anonimitzar a un usuari. Adversaris que podrien tenir accés a aquest tipus d’informació són ISPs o nodes maliciosos de la xarxa de bitcoin. Aquests problemes de privacitat a la capa de xarxa han estat àmpliament estudiats i s’han presentat solucions com l’ús de Tor, encara que per realitzar pagaments amb bitcoin s’han reportat alguns problemes amb aquest sistema, problemes que van més enllà de l’àmbit d’aquest post.

I per avui, amb aquesta introducció al problema, ja en tenim suficient. En el següent post dedicat a aquest tema veurem la part més interessant, les tècniques d’anàlisi del graf de les transaccions.

Victor Garcia-Font és professor des Estudis de Informàtica, Multimèdia y Telecomunicació de la Universitat Oberta de Catalunya.

(Visited 15 times, 1 visits today)
Autor / Autora
Victor Garcia-Font
Profesor de los Estudios de Informática, Multimedia y Telecomunicación e investigador del grupo KISON del IN3 de la UOC.
Comentarios
Deja un comentario