Ya sabemos cómo se llama. Hemos encontrado la solución #retoElevenPaths

lunes, 9 de abril de 2018

Nadie sabe el recorrido que tendrá una tecnología en el futuro. Esto incluye a Blockchain. Pero la realidad hoy es que se percibe un interés muy evidente en esta tecnología y un ejemplo es la cantidad de personas que han participado en el reto que os propusimos el pasado lunes en nuestro blog. Veamos el fundamento técnico del ejercicio hasta llegar a la solución.

Un poco de teoría
En el caso de Bitcoin, la clave privada K no son más que 256 bits representados en un número que suele ser elegido de forma aleatoria. Esta aleatoriedad y la dificultad que existe de volverlo a generar es la que nos dará garantías de que nadie lo pueda volver a obtener.

A partir de la clave privada, y utilizando criptografía de curva elíptica en Bitcoin se genera la parte pública de la clave K. Este método se basa en la complejidad que entraña la resolución de un problema matemático como la identificación del valor b en la ecuación ab=c cuando a y c son valores conocidos mientras que el problema inverso, no presenta la misma dificultad. En el ámbito de Bitcoin, se utiliza la curva secp256k1. Pero lo relevante es que la función criptográfica que genera la clave pública K es unidireccional, como lo es también la función de hashing utilizada para generar (a partir de dicha clave pública K) la dirección de Bitcoin A vinculada a ella y a K.

Proceso de generación de las direcciones en Bitcoin a partir de una clave privada. 


La generación de direcciones Bitcoin y la solución al misterio
Para situarnos en el ámbito del "misterio", debemos conocer los fundamentos del formato de una dirección de Bitcoin. Están codificadas en Base58, y no por casualidad. Esta codificación evita el uso de caracteres como el 0 (cero) o la O (o mayúscula), la I (i mayúscula) y la l (ele minúscula) se vean de igual forma en diferentes fuentes (y exista la posibilidad de confundir direcciones a simple vista). La pista ofrecida (aparentemente un hash) se trataba en realidad de la identificación de una transacción de Bitcoin... se daban pistas al hablar de "públicamente verificable". En esta transacción aparecía una dirección donde realmente se encontraba la solución al reto: 17bo9qr44KDJ5k4Cs8LdYjHEAh9ZvbDnFY. Decodificada, obtendremos la siguiente secuencia de en hexadecimal:

Decodificación de una dirección a hexadecimal. 

  • El primer byte define la versión de la dirección. En el caso de las direcciones multifirma que veremos más adelante por ejemplo, este valor será 0x05.
  • Los 20 siguientes bytes representan el hash RIPEMD-160 de la parte pública de la clave.
  • Los últimos cuatro bytes de una dirección son el resultado de calcular el doble hash SHA-256 de los 21 bytes anteriores y de quedarse con los primeros cuatro bytes. De esta manera, actúan como checksum. Así, para para verificar la validez de una dirección de Bitcoin bastará con calcular el doble hash de los primeros 21 bytes y verificar si los cuatro últimos bytes facilitados se corresponden con este cálculo. En este caso, 6D5704BF son el "checksum" del resto, deben corresponder (por supuesto si no lo hacen, no será una dirección válida) y se muestran como esos extraños caracteres a los que muchos en el concurso os habéis referido.

Basta entonces con decodificar esa información de hexadecimal a caracteres ASCII.

solución al misterio imagen
La solución al misterio era Hello, I'm Aura. 
No resultaba complejo en realidad. Además, existen servicios que muestran todos los valores de la transacción directamente en hexadecimal y no complicaban el juego demasiado. Lo que sí nos resultaba interesante a la hora de diseñar el juego era la excusa de mostrar que, en una dirección de Bitcoin se puede esconder información... eso sí, a cambio tuvimos que perder el dinero invertido en esta transacción. Al no disponer de la clave privada con la que recuperarlo (hicimos el proceso contrario, inventarnos una pública sin privada), es como, literalmente, enviar el dinero a un limbo del que nunca podremos recuperarlo. Curiosamente, algo así le ha pasado a alguien no hace tanto... y han perdido bastante más dinero.


¿Habéis caído en la trampa?
Como muchos sabéis, no solo existe esa forma de anclar información en la cadena de bloques de Bitcoin. En 2013, se añadió una nueva funcionalidad que tenía como objetivo anclar una pequeña parte de información, como máximo 80 bytes, en la cadena de bloques. Es el conocido OP_RETURN, que es donde, sinceramente, pensamos que más concursantes curiosearían. Así que en ese espacio anclamos el siguiente identificador pero codificado en Base64:

/ipns/Qma9hju1k9veMZdieHvygMuRUTg2uUHRVzTVCvJczUkUdu

Este puntero no es más que un identificador que nos sugiere que cierta información podría estar anclada en la red de IPFS. Para consultarla tendríamos que habernos conectado a través de su gateway:

https://ipfs.io/ipns/Qma9hju1k9veMZdieHvygMuRUTg2uUHRVzTVCvJczUkUdu

El mensaje era el siguiente:

Enhorabuena por haber llegado hasta aquí. Seguro que has aprendido algo durante todo el proceso, pero sentimos decirte que aquí NO está la solución. 

Te damos una pista, la respuesta se encuentra en las direcciones de Bitcoin. 

¡Suerte!

Algunas respuestas interesantes
Hemos recibido muchas respuestas de todo tipo, la inmensa mayoría correctas. Os mostramos aquí diez respuestas de las más curiosas, de forma anónima. Lo mostrado en este "collage" es todo lo que recibimos como respuesta.

aniversario 11paths imagen

Otra respuesta interesante es esta persona que lo resolvió en una sola línea (aunque sin explicación técnica).

otras respuestas 11paths imagen

El ganador
En este caso ha sido Francisco Jiménez, que respondió a las 11:01 del mismo lunes que publicamos el reto (hora española). No habían pasado ni 30 minutos desde que publicamos el juego. ¡Enhorabuena!

Innovación y laboratorio









1 comentario:

  1. Eleven paths, un muy buen reto, como lo comenté por twitter, yo iba de mal en peor jejje... pensaba que era código hash, y además de no saber descifrarlo, e ir totalmente por el camino equivocado, y haberlo leído 5 horas después,pero de todas formas las excusas no te van a ayudar a aprender más, simplemente ponerte peros para no intentarlo más, pero de todas formas enhorabuena por los cinco años cumplidos, y por esta gran idea, la cual me gustaría que se repitiera en un futuro, para participar, ahora con la mentalidad de poder ganar!!

    ResponderEliminar