Hablando sobre BI, Big Data y Machine Learning en Compilando Podcast

Muchos de los profesores de la UOC no solo colaboran este blog o el blog de los estudios Informatica++, también participamos en conferencias, congresos, eventos (como el pasado UOC D^2 – en próximas semanas publicaremos las charlas –  y entrevista en diferentes medios.

En esta ocasión he participado en Compilando Podcast hablando sobre Business Intelligence, Big Data y Machine Learning (y en realidad de muchos otros temas). No es la primera vez que participo en un podcast, en el pasado participé en PRNoticias hablando sobre Customer Analytics.

Agradezco la invitación de Paco Estrada, creador de este interesante podcast sobre open source que recomendamos. La charla fue muy interesante y divertida. Espero que los oyentes lo disfrutaran (o lo disfruten) también.

Aquí el enlace al podcast: https://compilando.audio/index.php/2018/05/21/business-intelligence-big-data-y-machine-learning-con-josep-curto-akademy-es-y-gnulinux-valencia/

¡Espero que os guste!

Posted in Big Data, Business Intelligence, Machine learning, podcast | Tagged , , , | Leave a comment

Visualizando representaciones de capas internas en Redes Neuronales

La redes neuronales artificiales están en el “ojo del huracán”, tanto en temas de investigación pura y dura, como en aplicaciones empresariales e industriales. Continuamente aparecen nuevas aplicaciones donde sorprende su uso y permite mejorar, de forma considerable, los resultados obtenidos previamente con otros modelos de aprendizaje automático.

Uno de los principales problemas de las redes neuronales está relacionado con la falta de interpretación y “explicabilidad” de los modelos generados. En este post veremos un método que nos permitirá, de alguna forma, poder representar y ver la información contenida en las capas internas de una red neuronal.

El detalle del proceso completo, junto con el código fuente completo para el ejemplo, está disponible aquí.

La idea que subyace en este proceso es sencilla:

  1. En primer lugar, entrenaremos el modelo, de la forma habitual.
  2. Una vez el modelo esté entrenado, lo que nos interesa (de alguna forma) es “cortar” la red en el punto que queremos analizar (en principio, alguna de las capas ocultas) y poder ver cuales son los valores que se están generando en las capas ocultas. Es decir, queremos ver como se van “agrupando” o “clasificando” los datos en las diferentes capas ocultas.
  3. Para realizar esta acción, lo que haremos será crear un nuevo modelo truncado que sólo incluirá las capas iniciales hasta la capa que queremos analizar.
  4. A partir de del modelo original y completo, copiaremos los valores (pesos y bias) entrenados al modelo truncado, de forma que tendremos acceso a los valores generados por la red neuronal en el punto de salida de la capa deseada.
  5. Finalmente, si queremos poder visualizar estos datos, deberemos realizar una reducción de la dimensionalidad para poder representarlos en un gráfico 2D o 3D.

A continuación mostramos parte del código, empleando Python y la librería Keras.

En primer lugar, como hemos comentado, creamos el modelo original (una red recurrente con varias capas, incluyendo una LSTM) y lo entrenamos con los parámetros requeridos hasta conseguir un nivel de precisión (accuracy) aceptable.

model = Sequential()
model.add(Embedding(max_features, 128, input_length=maxlen))
model.add(Bidirectional(LSTM(64)))
model.add(Dropout(0.5))
model.add(Dense(1, activation='sigmoid'))

# try using different optimizers and different optimizer configs
model.compile('adam', 'binary_crossentropy', metrics=['accuracy'])

print('Train...')
model.fit(x_train, y_train,
          batch_size=batch_size,
          epochs=4,
          validation_split=0.2)

Y definimos el modelo truncado con la misma configuración de capas hasta llegar a la capa que queremos analizar. Ésta quedará como la capa de salida del modelo, para poder ver y analizar las salidas de la capa en cuestión. La siguiente función nos permite crear esta red truncada y copiar los valores (pesos y bias) de la red original (una vez entrenada).

def create_truncated_model(trained_model):
   model = Sequential()
   model.add(Embedding(max_features, 128, input_length=maxlen))
   model.add(Bidirectional(LSTM(64)))
   for i, layer in enumerate(model.layers):
      layer.set_weights(trained_model.layers[i].get_weights())

   model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
   return model

truncated_model = create_truncated_model(model)
hidden_features = truncated_model.predict(x_test)

A partir de la salida de la red truncada podremos analizar los resultados obtenidos y ver como se está comportando nuestra red en cada una de las capas, teniendo en cuenta los cálculos realizados en las capas anteriores.

Aún así, en ciertos casos nos puede interesar representar esta información de una forma visual, que permita un análisis rápido de como se están agrupando los datos después del proceso en cada una de las capas.

Para realizar esto, es necesario reducir la dimensionalidad de los datos para poder representarlos en un gráfico 2D o 3D. Una opción es utilizar los métodos de reducción de dimensionalidad, como por ejemplo PCA o T-SNE (o una combinación de ambos).

A continuación mostramos en ejemplo de visualización después de realizar una reducción de dimensionalidad empleando PCA + T-SNE.

En la figura podemos ver como las dos clases de instancias están “bastante” separadas en esta capa, aunque con cierto grado de solapamiento. Esto nos indica que no será posible obtener valores de accuracy cercanos al 100% en esta capa.

Posted in Artificial Intelligence, Data Science, Deep Learning, Machine learning | Tagged , , | Leave a comment

El resurgir de los notebooks en la ciencia de datos

Cuando se trabaja en el ámbito de la ciencia de los datos, hay varios aspectos importantes como la reproducibilidad, la explicabilidad, la experimentación, soporte a múltiples lenguajes de programación,…

Para intentar responder a este tema, han aparecido los notebooks (como Jupyter) que muchas de las más modernas plataformas o soluciones para ciencia de datos incluyen por defecto. Este es un tema que ahora se está volviendo recurrente en múltiples artículos como el de Edd Wilder-James o en Towards Data Science pero es un tema que ya se ha tratado en datami hace tiempo.

El objetivo es ayudar en la productividad del científico de datos. En defintiva, este tema está ligado al hecho de poder experimentar y compartir nuestros desarrollos en equipos.

¡Pero aún hay más!

El siguiente paso es la puesta en producción. Y aquí las cosas cambian, los ciclos que combinan el desarrollo y la puesta de producción de ML requieren estar orquestrados.

Respecto este tema Shengyu Chen ilustra en este artículo muy bien como evoluciona el ciclo de un algoritmo cuando pasamos del desarrollo a las operaciones.

De hecho del ciclo inicial:

Fuente: Towards Data Science

Se pasa a:

Fuente: Towards Data Science

Puede parecer que hemos incorporado muchísima complicación, pero nada más lejos de la realidad. Aunque pueda parece mentira los algoritmos tienen fecha de caducidad (como los yogures y por múltiples motivos) y es necesario retirarlos y sustituirlos cuando dejan de tener validez (indicado por las métricas).

Así que la siguiente ve que pensemos en la aplicación de la ciencia de los datos debemos también ir mucho más allá de tan solo pensar en el algoritmo que nos proporcionará la respuesta adecuada.

Posted in Data Science | Tagged | Leave a comment

¿Multidisciplinar o especialista?

Uno de los retos a los que se enfrentan los profesionales que deben generar valor a partir de los datos es tener un carácter multidisplicinar. Para el contexto de inteligencia de negocio desde hace tiempo llevamos hablando de conocer estadística, informática y negocio. En el contexto de ciencia de los datos se recalca lo mismo aunque de formas diferentes (ya lo recalcamos hace tiempo aquí y aquí).

En esencia:

  • Se pide dominar todo el ciclo del dato: desde la captura (que significa comprender cómo se genera -o se debe generar- el dato y cómo se puede extraer) hasta la presentación (que significa identificar el mejor mecanismo para comunicar y/o integrar el conocimiento generado en el negocio).
  • Se pide ser un maestro de un conocimiento amplio y extenso y con unas capacidades que se encuentran en dos categorías: hard y soft. Capacidades que incluso en muchos escenarios son antagónicas y requieren sangre, sudor y lágrimas para conseguirlas.
  • Se pide incluso que ante cualquier pregunta uno sea capaz de responder a niveles de profundidad sobrehumanos.
  • Se pide ser jack-of-all-trades.

Esta disciplina (en general y sin hacer distinciones académicas o profesionales) está evolucionando a toda velocidad que los que trabajamos en ella nos vemos obligados a estar en un proceso de formación continua. En realidad, en un proceso que incluye tanto aprender como desaprender competencias.

Aunque la realidad es mucho peor. Los conocimientos deben ser tan sumamente amplios que frecuentemente se encuentran en dominos muy alejados. A los campos anteriormente podemos añadir tranquilamente otros como biología (redes neuronales artificiales), visualización (psicología de la percepción) o teoría de juegos (interpretación algorítmica) por comentar algunos.

Por ello es interesante lo que nos comentaba Jose Ramón Cajide en el pasado UOC Meet Data Science: es necesario decir no. A veces el profesional del dato, no tiene todo el conocimiento del mundo y, aunque aprende rápido, necesita de un tiempo. Es sin duda alguna un buen consejo.

Lo de siempre, se recomienda tener un equipo disciplinar, lo más amplio posible. Y dar tiempo al equipo para aprender los conocimientos necesarios como nos comentaba Mar Cabra. Fue sinceramente un placer moderar la mesa redonda con estos excelentes profesionales.

Excelentes consejos para los que se inician en esta profesión en la que ser multidisciplinar es importante pero también es necesario ser un especialista. ¡Nada más contradictorio!

Posted in Big Data, Business Intelligence, Data Science | Tagged , , | Leave a comment

Póngame un duplex (de Google)

Esta semana se celebró la I/O Conference 2018 de Google de igual forma que hace unos días hubo la primera conferencia de Facebook, tras el caso de Cambridge Analytica.

Uno de los puntos fuertes de la conferencia fue la presentación de Google Duplex, un asistente virtual que podemos entender como una evolución, y que pone foco en la automatización de la conversación telefónica con un humano.

La presentación de Google Duplex, aunque grabada de antemano, muestra un sistema que introduce la imperfección humana en forma de titubeos, dicción, tono y palabras combinadas que hacen que sea complicado (por no decir, imposible) detectar que hay un asistente detrás de la llamada.

A nivel tecnológico, podemos pensar que es un ejemplo impresionante del uso de las tecnologías de big data y machine learning, y sin duda alguna lo es. Podemos imaginarnos múltiples casos de uso tanto para consumo como para las empresas condicionadas claramente por el conjunto de datos disponible para entrenar el sistema, el conocimiento del dominio y la capacidad de escalar este servicio. Por ejemplo a nivel empresarial:

  • Uso en call centers de soporte (para atender a quejas, dudas, etc).
  • Uso en servicios de telemarketing para venta.
  • Uso en servicios de información (por ejemplo, información turística)
  • Uso en hospitales,…

Pero esta presentación no ha tenido una gran acogida. La maravilla inicial (en el evento, dónde impera el positivismo tecnológico) ha derivado en una crítica vinculada a la ética y la moral del uso de AI en ciertos ámbitos. Esto no debería sorprendernos, tenemos demasiado fresco el caso de Cambridge Analytica, en el que se ha usado sistemáticamente los datos de Facebook para manipular al ciudadano (aunque no son los únicos que no lo han hecho) y la presentación de estos servicios (fundamentado en el dato) serán mirados con lupa (mientras no haya un mecanismo eficiente y una muestra clara de responsabilidad por parte de los creadores).

Desde mi humilde punto de vista, Google debe proporcionar mecanismos para que los casos de uso no sean solo una máquina de generar dinero (objetivo claro) y un mecanismo de mejora (de costes y de atención al cliente), sino deben evitar que se conviertan en otro mecanismo de spam, manipulación de la sociedad y de generación de posibles sociedades (como las descritas en anime y manga) de tintes profundamente negativos, como se está convirtiendo desafortunadamente Facebook.

Posted in Big Data, Ethics, Facebook, Machine learning | Tagged , , , | Leave a comment

MDM y Blockchain

El gobierno del dato (tema del que ya hemos hablado) incluye diversas áreas como la calidad del dato, la gestión de datos maestro, la seguridad del dato, etc.

Sin duda alguna, la calidad del dato suele ser un tema candente (por el ya manido garbage in-garbage out en el análisis) y porqué, en el caso de no haber cuidado los datos como un activo de valor, frecuentemente expande el tiempo necesario para generar valor (y se pone en tela el éxito de la iniciativa).

Otro aspecto que es muy relevante es la gestión de datos maestros (o Master Data Management -MDM-).  Esta estrategia busca crear un punto de referencia único, preciso y consistente de los atributos comunes de datos.

En esencia con la aplicación de MDM queremos evitar que existan diferentes visiones de la verdad en la organización al tener los datos comunes sincronizados entre todos aquellos sistemas que los usan. Esta sincronización puede conseguir usando diferentes patrones de sincronización (como centralización, co-existencia,… entre otros) incluso combinándolo con técnicas de modelado de datos (como data vault).

Dentro del MDM es importante tener trazabilidad del dato, es decir, conocer y tener un registro de todos los cambios del dato. En este línea del pensamiento es natural empezar a pensar si sería factible considerar blockchain como una tecnología que sustente MDM. Como ya sabéis blockchain es una tecnología de interés para nuestros profesores, entre ellos Victor García, que publica frecuentemente sobre el tema. Y la idea de combinar MDM y blochain es la línea de discusión que mantiente Erik Antezana en este interesante artículo.

La idea de fondo es si los smart contracts pueden usarse para controlar las operaciones que se realizan con los datos maestros (aspecto que tiene sentido desde el punto de vista teórico). Aunque se trate de una discusión, lo que es cierto es que entre los fabricantes también es un enfoque que se está considerando para incrementar el valor de MDM y se están realizando los primeros pilotos internos.

La viabilidad de este caso de uso de blockchain, que va muy en línea con casos de uso en la cadena de suministro, aún está por ver y vendrá condicionada por su facilidad de implantación y, sobretodo, por el valor que proporcione. Tendremos de estar muy atentos.

Posted in Blockchain, Data Governance, Data Quality, Master Data Management | Tagged , , | Leave a comment

UOC D^2 2018 – Barcelona

El año pasado hicimos dos sesiones sobre Big Data y Data Science. A estos eventos les llamamos UOC Data Day (D^2). Podéis revisar las sesiones aquí.

Recordemos qué son los UOC D^2:

El UOC Data Day es un evento gratuito enfocado a todas aquellas personas que tengan interés en las nuevas tecnologías relacionadas con los datos. Se llevaran a cabo charlas con académicos y profesionales apasionados por compartir conocimientos en este ámbito.

Empezamos con la edición en Barcelona el próximo 16 de Mayo, para la que creemos que hemos preparado un programa muy interesante.

16:00 – Bienvenida y presentación de la jornada

16:15 – Experiencias del uso de Kaggle en el entorno educativo superior, por Laia Subirats (Data science researcher en Eurecat (Technology Centre of Catalonia))

16:45 – Propagación de la mora en redes financieras,  por Jordi Nin (Senior Data Scientist en BBVA Data & Analytics)

17:15 – Networking & Coffee

17:45 – ¿Cómo estructurar un buen proyecto de Machine Learning?, por Anna Bosch Rué (VP Data Intelligence at Launchmetrics)

18:15 – Descifrar la red cerebral: el gran desafío de la neurociencia del S.XXI, por Eloy Martínez de las Heras (Investigador Postdoctoral en el grupo ImaginEM. Hospital Clínic de Barcelona e IDIBAPS)

18:45 – Q&A y clausura

Más información e inscripciones: https://symposium.uoc.edu/20699/detail/uoc-data-day-2018-barcelona.html

¡Os esperamos en el UOC Data Day (D^2)!

 

Posted in Big Data, Data Science, Evento, UOC, UOC D^2 | Tagged , , , | Leave a comment

Próximo jueves: UOCMeet Data Science

Os recordamos que el próximo día 19 de Abril, Josep Curto, participa como moderador en el evento UOCMeet: Data Science, compartiendo sesión con Mar Cabra y Jose Ramón Cajide.

Data Science es una de las estrategias relevantes para las organizaciones no solo para competir mejor en el mercado actual sino también para ser más eficiente en sus procesos, y conocer mejor a clientes, empleados, proveedores, etc.

Los casos de uso son múltiples y muy variados, y es un tema recurrente en nuestro blog en la que hemos tratado diversas de sus facetas (y ¡las que quedan por explicar!).

En el evento, se tratarán temas como el perfil del científico del dato, sus competencias, roles y profesiones, casos de uso,…  y otros temas que puedan salir en el coloquio a razón de vuestras preguntas que a bien seguro serán muy interesantes.

¡Esperamos veros en este evento presencial y tener la oportunidad de discutir estos temas con nuestros ponentes y asistentes!

Posted in Data Science, Evento | Tagged , | Leave a comment

¿Cómo ha ido la cuarta edición del MOOC de Business Intelligence y Big Data?

Como ya comentamos hace unos meses, hemos realizado la cuarta edición del MOOC de Business Intelligence y Big Data en la plataforma MiriadaX.

Como hicimos con la primera, segunda y tercera edición, es el momento de las reflexiones aprovechando que hemos terminado el pasado lunes.

Hemos compartido, con los estudiantes de esta cuarta edición, siete intensas semanas en hemos aprendido tanto de ellos (de sus intereses, qué hacen, porqué necesitan estos conocimientos y qué más quieren aprender).

Agradecemos profundamente tener la posibilidad de tener este tipo de interacción con tantos estudiantes como los que supone un entorno MOOC y, sobretodo, en un entorno diferente al que tenemos en nuestro campus.

En esta cuarta edición hemos mantenido los contenidos de la tercera edición y simplemente hemos actualizado alguno de los videos de presentación y promoción, y hemos mantenido los contenidos que reflejan los conocimientos que es posible aprender en nuestros programas: el programa propio Máster de Business Intelligence y Big Data,  así como en el Máster Universitario de Data Science, y el futuro grado de ciencia de datos aplicada que ofreceremos en breve (puesto que parece ser que es una de las profesiones más buscadas tal y como nos cuenta Teresa Sancho) aunque debemos ser cautos de no caer en la desilusión en esta profesión por múltiples motivos.

Se han tratado temas que van desde la inteligencia de negocio, la analítica de negocio, big data y data science.

En la siguiente tabla encontraréis los principales datos de seguimiento del curso:

Estadística 2018 2017 2016 2015
Inscripciones 10.897 9.799 31.737 18.339
Inician curso 6.086 6.367 20.717 15.594
Finalizan curso 1.376

(22,72%)

1.487

(23,35%)

5.256

(25,37%)

2.570

(16,48%)

Inician el primer módulo 6.056 6.311 21.124 15.117
Finalizan el primer módulo 3.094 3.177 10.952 6.399
Inician el segundo módulo 3.160 3.417 11.550 7.338
Finalizan el segundo módulo 2.119 2.166 7.706 4.815
Inician el tercer módulo 2.284 2.480 8.543 5.455
Finalizan el tercer módulo 1.695 1.750 6.153 3.341
Inician el cuarto módulo 1.950 2.129 7.369 4.263
Finalizan el cuarto módulo 1.590 1.642 5.767 3.134
Inician el quinto módulo 1.736 1.897 6.700 4.059
Finalizan el quinto módulo 1.436 1.519 5.367 2.925
Mensajes publicados 515 495 980 2.974

Tabla 1. Datos cuantitativos de las ediciones 2015, 2016, 2017 y 2018.

Cabe destacar que los últimos tres años la tasa de rendimiento se ha mantenido por encima del 20%. Por ello, de nuevo, y dentro de la moderación, podemos considerar que son resultados positivos y nos hace mucha ilusión no sólo los resultados actuales sino la visión retrospectiva de la realización del MOOC: más de 10.600 estudiantes han superado nuestras cuatro ediciones. ¡Nuestra más sincera felicitación!

Este año observamos un repunte del interés de estudiantes y como siempre muchos de ellos descubren el curso en las últimas y nos piden si podemos repetir los contenidos que recordamos son los siguientes:

  • 397 minutos de vídeos (más de 6 horas y media) registrados enteramente por el cuerpo docente de la UOC,
  • 244 páginas de material adicional en PDF
  • 17 tests de evaluación de los contenidos y la descarga opcional y gratuita de la primera versión del libro “Introducción al Business Intelligence”.

Damos de nuevo las gracias por la confianza depositada por tantas personas que buscan adquirir nuevos conocimientos, información complementaria o por curiosidad.

¿Qué hemos aprendido en esta edición?

  • Interés transversal: múltiples profesionales se acercan al análisis del dato desde diferentes bagajes profesionales, no en vano todas las profesiones están llamadas a usar las evidencias y los datos para mejorar su toma de decisiones.
  • La plataforma y el soporte: la plataforma elegida es importante y el soporte recibido más. En esta edición debemos felicitar MiriadaX por su excepcional soporte en las incidencias que hemos tenido y que han resuelto con gran celeridad.
  • Data First: hemos hablado ya del concepto,  y las dudas y discusiones con nuestros alumnos nos han dejado patente que sus organizaciones buscan convertirse en nuevas organizaciones.

Otra vez hemos llegado al final y, de nuevo, ya pensamos cuando será el siguiente curso. Conoceremos nuevos estudiantes que esperamos formen parte de nuestra gran familia. Cuando llegue el momento os informaremos de las nuevas fechas.

Posted in Big Data, Business Analytics, Business Intelligence, MOOC | Tagged , , , | Leave a comment

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

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

En el post anterior sobre este tema hemos introducido los componentes tecnológicos más destacados de bitcoin y también vimos brevemente como puede inferirse información del usuario analizando la capa de red. En este post nos centraremos en las técnicas de análisis del grafo de transacciones, las cuales permiten aprovecharse de los links que hay en la blockchain entre el emisor de una transacción y el receptor para ir siguiendo el camino entre transacciones. Así, si en algún punto de este camino podemos averiguar la identidad del usuario, entonces podremos extraer mucha información sobre su actividad económica.

Este tipo de análisis ha probado ser efectivo para extraer información que muchos usuarios creían confidencial. Por ejemplo, en la Figura 1 podemos ver las conexiones entre el creador de Silk Road (marketplace para la compra/venta de drogas, armas y otros artículos ilegales) y un agente de la DEA. Para protegerse en parte de este tipo de análisis, existen unas buenas prácticas al hacer transacciones. Una de las buenas prácticas más extendidas es el uso de direcciones de bitcoin diferentes para cada transacción. Aunque esto parece obvio para no vincular dos pagos diferentes a un mismo usuario, en los primeros años de bitcoin era algo muy normal, y de hecho todavía hay usuarios que lo siguen haciendo.  

 Figura 1: Conexión de transacciones entre el creador de Silk Road y un agente de la DEA condenado por el robo de bitcoins. Fuente Motherboard.

En la Figura 2 podemos ver otro trabajo donde se des-anonimizan transacciones. En este caso los autores clusterizan las transacciones y utilizan otras interacciones que hacen los autores del estudio con los servicios principales relacionados con bitcoin para poder poner nombre a los clusters.

Figura 2: Análisis con clusters que logró poner nombre de servicios a transacciones de bitcoin. Fuente Meiklejohn et al.  

Sin embargo, aunque usemos una dirección de bitcoin diferente para cada transacción, podemos dificultar un poco el rastreo de un pago, pero no lo hacemos imposible, ya que existen muchos otros elementos que pueden revelar información. Por ejemplo, el hecho de que juntemos varias transacciones para poder pagar un artículo caro, para el que no tenemos una sola transacción con el valor necesario, hace que sea probable que las transacciones juntadas sean propiedad de la misma persona. También, nos delatarían hechos como pagos regulares que generen patrones. Por ejemplo, una misma cantidad de bitcoins una vez al mes podría suponer el ingreso de una nómina, o una cantidad menor podría suponer el pago de una cuota (e.g. cuota del gimnasio). Y si un usuario utilizara la transacción recibida con su nómina para pagar el gimnasio, empresa que conoce nuestra identidad, entonces siguiendo el grafo de transacciones el gimnasio puede fácilmente conocer nuestra nómina. De una forma parecida, si una empresa pagara a todos los empleados desde la misma transacción, un empleado podría saber los salarios de sus compañeros, aunque no pudiera vincular exactamente cada salario con un compañero en concreto.   

Para intentar anonimizar un poco las transacciones se suelen usar métodos que se basan en intentar mezclar una transacción en un conjunto de transacciones parecidas y que desde fuera, no se pueda saber qué transacción es de cada usuario. Por ejemplo, los mixers son servicios donde muchas transacciones de varios usuarios se juntan en una sola transacción. Entonces esta transacción tiene como salida multitud de nuevas direcciones que están controladas por los mismos usuarios que aportaron las transacciones de entrada. De esta manera, se han mezclado muchas transacciones de muchos usuarios en un nodo del grafo, lo cual impide que podamos vincular el usuario de una transacción de salida con el de una transacción de entrada concreta. La Figura 3 representa de manera simplificada el funcionamiento de un mixer.

Figura 3: Representación simplificada de un servicio mixer.

Finalmente, destacar que la falta de privacidad en bitcoin ha sido uno de los motivos por el que han aparecido otras criptomonedas, las cuales tienen como característica especial que se focalizan en guardar la privacidad de sus usuarios. Por ejemplo, para que no sean necesarios los mixers, en otras criptomonedas se usan técnicas como las ring signatures (e.g. en Monero) para que cada vez que se haga un pago no se pueda linkar directamente un emisor con un receptor, ya que cada vez que un emisor firma una transacción lo hace mezclando su clave con la de otros usuarios. Esto hace que los mineros puedan validar que la transacción es válida, pero no saber cual de los usuarios es el que realmente ha firmado. Otra criptomoneda popular focalizada en la privacidad es Zcash, la cual utiliza zero knowledge proofs para esconder la identidad de los usuarios. Por mencionar algunas, otras monedas centradas en la privacidad son: Dash, Bytecoin, Pivx o Verge.  

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 (II)

En el post anterior sobre aquest tema hem introduït els components tecnològics més destacats de bitcoin i també hem vist breument com es pot inferir informació de l’usuari analitzant la capa de xarxa. En aquest post ens centrarem en les tècniques d’anàlisi del graf de transaccions, les quals permeten aprofitar-se dels links que hi ha a la blockchain entre l’emissor d’una transacció i el receptor per anar seguint el camí entre transaccions. Així, si en algun punt d’aquest camí podem esbrinar la identitat de l’usuari, llavors podrem extreure molta informació sobre la seva activitat econòmica.

Aquest tipus d’anàlisi ha provat ser efectiva per extreure informació que molts usuaris creien confidencial. Per Exemple, a la Figura 1 podem veure les connexions entre el creador de Silk Road (marketplace per a la compra / venda de drogues, armes i altres articles il·legals) i un agent de la DEA. Per protegir-se en part d’aquest tipus d’anàlisi, existeixen un conjunt de bones pràctiques a l’hora de realitzar transaccions. Una d’elles és l’ús d’adreces de bitcoin diferents per a cada transacció. Encara que això sembla obvi per a no vincular dos pagaments diferents a un mateix usuari, en els primers anys de bitcoin era una cosa molt normal, i de fet encara hi ha usuaris que ho continuen fent.

Figura 1: Connexió de transaccions entre el creador de Silk Road i un agent de la DEA condemnat per robatori de bitcoins. Font Motherboard.

A la Figura 2 podem veure un altre treball on es des-anonimizen transaccions. En aquest cas els autors clusterizen les transaccions i utilitzen altres interaccions que tenen els autors de l’estudi  amb els serveis principals relacionats amb bitcoin per poder posar nom als clústers.

Figura 2: Anàlisi amb clústers on es posen nom de serveis a transaccions en bitcoin. Font Meiklejohn et al.  

No obstant això, tot i que usem una adreça de bitcoin diferent per a cada transacció, podem dificultar una mica el rastreig d’un pagament, però no ho fem impossible, ja que hi ha molts altres elements que poden revelar informació. Per exemple, el fet que ajuntem diverses transaccions per poder pagar un article car, per al qual no tenim una sola transacció amb el valor necessari, fa que sigui probable que les transaccions ajuntades siguin propietat de la mateixa persona. També, ens delatarien fets com pagaments regulars que generin patrons. Per exemple, una mateixa quantitat de bitcoins un cop al mes podria suposar l’ingrés d’una nòmina, o una quantitat menor podria suposar el pagament d’una quota (e.g. quota del gimnàs). I si un usuari utilitzés la transacció rebuda amb la seva nòmina per pagar el gimnàs, empresa que coneix la nostra identitat, llavors seguint el graf de transaccions al gimnàs pot fàcilment conèixer la nostra nòmina. D’una manera semblant, si una empresa pagués a tots els empleats des de la mateixa transacció, un empleat podria saber els salaris dels seus companys, encara que no pogués vincular exactament cada salari amb un company en concret.

Per intentar anonimitzar una mica les transaccions es solen utilitzar mètodes que es basen en intentar barrejar una transacció en un conjunt de transaccions semblants i que des de fora, no es pugui saber quina transacció és de quin usuari. Per exemple, els mixers són serveis on moltes transaccions de diversos usuaris s’ajunten en una sola transacció. Llavors aquesta transacció té com a sortida multitud de noves direccions que estan controlades pels mateixos usuaris que han aportat les transaccions d’entrada. D’aquesta manera, s’han barrejat moltes transaccions de molts usuaris en un node del graf, la qual cosa impedeix que puguem vincular l’usuari d’una transacció de sortida amb el d’una transacció d’entrada concreta. La Figura 3 representa de manera simplificada el funcionament d’un mixer.

Figura 3: Representació simplificada d’un servei mixer.

Finalment, destacar que la manca de privacitat a bitcoin ha estat un dels motius pels qual han aparegut altres criptomonedes, les quals tenen com a característica especial que es focalitzen en guardar la privacitat dels seus usuaris. Per exemple, perquè no siguin necessaris els mixers, en altres monedes digitals s’usen tècniques com les ring signatures (e.g. en Monero) perquè cada vegada que es faci un pagament no es pugui linkar directament un emissor amb un receptor, ja que cada vegada que un emissor signa una transacció ho fa barrejant la seva clau amb la d’altres usuaris. Això fa que els miners puguin validar que la transacció és vàlida, però no saber quin dels usuaris és el que realment ha signat. Una altra moneda digital popular focalitzada en la privacitat és Zcash, la qual utilitza zero knowledge proofs per amagar la identitat dels usuaris. Per esmentar algunes, altres monedes centrades en la privacitat són:  Dash, Bytecoin, Pivx o Verge.

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

Posted in bitcoin, Blockchain | Tagged , | Leave a comment