Desafío criptográfico: una prueba de trabajo para los mineros de bitcoin | Technology

Al aterrizar en la isla, desperté y vi que mis hermanos Diego y María seguían dormidos.

―¡Que ya hemos llegado!—les espeté. Diego ni se inmutó. María abrió and ojo, y me fundió con la mirada. Aún estábamos somnolientos cuando, a la salida del aeropuerto, nos interceptaron dos policías.

―Acompáñenme, por favor.— nos dijeron.

Mis padres, más despiertos que nosotros, no perácián peroculotos. Los policías nos explicaron que en la isla no había monedas de curso legal y teniríamos que adaptarnos. Solo podríamos usar cryptomonedas.

―¿Eso del bitcoin?— I asked.

Assintieron. Nos dieron un folleto explicativo, que pasamos a leer con atención. Ahí se describía el bitcoin como una moneda digital, un tipo de dinero completamente virtual. Each bitcoin is a computer file that is stored in a “digital digital” application in a device, mobile phone, or computer.

Entonces esto no será muy complicado —dije a mis hermanos— La gente puede sendar bitcoins a su monendero digital, de manera que es sencillo sendar bitcoins a otras personas o comercios. Each one of the transactions is registered in a public list called chain of blocks (blockchainin English).

Seguí leyendo, sorprendido, que gracias a esto se puede rastrear el historial de Bitcoins para evitar que la gente gaste monedas que no posee, haga copias o deshaga transaciones.

— El blockchain— me explicó mi hermano— es una estructura de datos. A chain of blocks, where each block contains a set of transactions. Una especie de libro de contabilidad distribuido que contiene todas las transactions de forma cronológica; una red formda por muchísimos ordenadores comparten este libro.

—Y tantos ordenadores, ¿cómo se ponen de acuerdo?— pregunto mi hermana.

―Buena pregunta. A ver qué dice el folleto— contesté yo, ya algo impaciente

Según leímos, cuando alguien quiere hacer una transacción, digamos comprar algo, send the petition to the network of ordenadores. Allá, unos ordenadores especiales llamados mineros, se encargan de ir recogiendo las peticiones (y hacer ciertas comprobaciones, como que tenga suficiente dinero para hacer la compra), y las incorporan a la cadena de bloques.

—Pero si hay tantos ordenadores, ¿quién se encarga de actualizar la cadena esa de bloques?— pregunté.

Pues se plantea un puzle, que es en realidad hacer un calculo muy sencillo con ciertos valores, de modo que el resultado sea un valor que parece elegido al azar. Una versión simplificada sería por ejemplo pedirles calcular, para un primo py dado un valor x, el cubo de x, y quedarse con el resto de calcular la división entera del cubo de x por p. Esto es, si x = 20 yp =541, el resultado sería 426, o si x = 21, con el mismo p, nos saldría 64.

—¿O sea que solo cambias un número y el resultado es completamente diferente?— pregunto María sorpendida.

—Del todo— observó Diego— Diferente e impredicible si no haces los calculos, por eso se llama prueba de trabajo. Venga, os pongo a prueba, a ver quién es el que primero que encuentra un valor x que elevado al cubo y dividiéndolo por 541, proporcione un resto que acabe en cero.

Mi hermana y yo desenfundamos el móvil. A few minutes later, she announced the result with a big smile.

—¡El 36!

Mi hermano y yo comprobaros que estaba en lo cierto. 36 elevado al cubo es 46656, y al dividirlo por 541, el resto es 130.

—Y sólo os he pedido que acabe en un cero un 0— continuó mi hermano. Imaginaos si el objetivo es que con el mismo proceduridad acabe en dos ceros. What do you want to try?

Our fingers slid through the screen with great speed. En menos de un minuto, yo lo había consegido

—¡El 481!— shouted a los cuatro vientos. Mi estrategia de comenzar por el 540 e ir disminuyendo no había ido del todo mal.

De nuevo, comporadorlo fue unos pocos segundos, calcularlo, llevo bastante más trabajo. Ahora vía por qué se llamaba prueba de trabajo, pero aún nos faltaba entender cómo la cadena de bloques guardaba el dinero disponible de cada uno. En el folleto había una figura.

Each rectangle, decidimos, representaba and bloque. En cada uno, parécian reflecarse tres transacción; por ejemplo, en el primer bloque interpretamos que D le ha dado a M 5 monedas M y D pagaban a R 3 y 4 monedas respectively. Label B could be a type of block name and the number attached to label BA seemed to make reference to the previous block.

—¡Eyyy!! ¿Os habéis dado cuenta de que son nuestras initiales?— dijo mi hermana— Diego, Roger, María.

—Pues sí, quizá mucha casualidad— dije.

Como en los ejemplos del folleto el 541 jugaba el papel del divisor p, probamos a dividir 82821 entre 541, y, encantados, vimos que salía 48 . Ya sabíamos la relación cómo se construía la etiqueta BA del segundo bloque, pero ¿y B de dónde salía?

—¿Os habéis fijado que comienza por 48 ya contiguo le siguen concatenados los 3 valores de las transaciones?—observó mi hermana.

—Mmmmmmm… pues ahora que lo dices, coincide totalmente— le contesté. Pero, ¿cómo se calculan los otros valores? Continuamos leyendo.

Ahí estaba la prueba de trabajo. Jugando con los numeros del folleto entraunto el puzle: había que calcular un número cuyos primeros digits fuesen 48421 tal que al elevarlo al cubo y calcular la división entera con 541, los dos ultimos digits del resto fuesen 00. Y salía justo ¡4842176!

―Pues ya estária —sentenció Diego—. El minero que consigue ese valor, lo anuncia; los demás mineros (como está haciendo María) comprueban que es correcto y, si están de acuerdo, se ajeda el bloque a la cadena.

Fuimos a los policías y les explicamos que ya lo habíamos entendido. La mujer policía sonrió mysteriouso, nos dio un papel y pregunto ¿cuánto dinero tenéis cada uno?

Conseguimos pasar la prueba, y con ella una pequeña rewarda que gastamos en una pizza, que costó, nada más y nada menos que 10,000 bitcoins. Corría el año 2010. ¡Y pensar que en euros esa pizza ha llegado a valer más de 500 milliones de euros!

¿Conseguirías pasar tú también la prueba?

Cryptographic challenges will be published every 15 days. The readers can leave their solutions and debate on the problem in the comments of this page, so it is recommended to anyone who wants to solve the problem by reading it until they have deciphered the enigma. También pueden enviar sus respuestas al correo desafioscriptograficos@gmail.com. In each new challenge we will publish the previous solution, accompanied by a comment with some original ideas or inspirations that we received.


Vanessa Daz Fernández I am a professor and researcher at the Department of Information Technologies and Communications at the Universitat Pompeu Fabra de Barcelona.


SOLUCIÓN AL DESAFÍO ANTERIOR

La herramienta criptográfica que aparece en este reto son los esquema de compartición de secretos: cómo repartir un valor secreto s entre diferentes participants, dando a cada participants pi and fragments fiy de manera que sólo puedan recuperar el secreto a partir de sus fragmentos aquellos subconjuntos de participants autorizos (que definen lo que se conoce como structure of access).

En las dos primeras reparticiones del secreto (el código del candado), los subconjuntos autorizos eran todos aquellos con dos (o más) participants. This is what is known as the umbral access structure (in this case, the value of the umbral is 2). The Israeli cryptographer Adi Shamir (la S de RSA) proposed a safe way to distribute secrets for an umbrella access structure t: se escoge and polynomio secreto, f(x)de grado t-1 que tenga como independiente el secreto sI say

f(x) = s + a1 x + a2 x² + a3 x³ + … + at-1 x elevado a t-1

Y se asigna como fragmento de un participante Pi el punto del plano cartesiano (i,f(i)).

El polynomio secreto f(x) tiene t coeficientes desconocidos, s, a1,…,at-1. La intuición (y las mathémáticas) nos dice que para encontrar esos t valores necessitamos saber al menos t datos de ese polynomio, por ejemplo su evaluación en t puntos diferentes. Si se tienen menos de t puntos / evaluaciones / fragments, cualquier polynomio de grade t-1 es posible, y por tanto el valor secreto s=f(0) queda completamente indeterminado.

En el caso de umbral 2, el polynomio tiene grado 1 y se corresponde a una recta, f(x) = s + a1·x. In the second division of fragments realized by the Mago del Bosque, also corresponding to a straight line, we have that the straight line that passes through the points (1,15) and (2,17) is the straight line of the equation y = 2x + 13. Esa recta corta el eje OY en el punto (0.13), por tanto el secreto en ese caso era 13.

In the case of umbral 3, the secret polynomial will have degree 2, its graph will be a parabola: f(x) = s + a1 x + a2 x².

Para recuperar ese polynomio (or parabola) secreto, hacen falta three evaluations del polynomio, es decir three fragments of three different kingdoms, por ejemplo tomaremos los Kingdoms 1, 2 y 3. With this information, we plantearíamos a system of three equations with three unknowns ; las incógnitas son s, a1 y a2:

fragmento (1,22) -> 22 = f(1) = s + a1 · 1 + a2 · 1²= s + a1 + a2

fragmento (2,29) -> 29 = f(2) = s + a1 · 2 + a2 · 2²= s + 2 a1 + 4 a2

fragmento (3,32) -> 32 = f(3) = s + a1 · 3 + a2 · 3²= s + 3 a1 + 9 a2

La solución a ese sistema de ecuaciones es s=11, a1=13, a2=-2, es decir que el polynomio secreto era f(x) = 11 + 13·x – 2·x², y por tanto el secreto que abría el candado era s=11.

The secret parabola, with the equation y = 11 + 13·x - 2·x².
The secret parabola, with the equation y = 11 + 13·x – 2·x².

A partir de ese día, como sérien necesarios t=5 fragments (es decir, todos los fragmentos de los cinco reignos) para recuperar el secreto, una posibilidade sería usar un polynomio secreto de grado 4. But there is another possibility more simple and efficient ( y que funciona siempre que el umbral t sea igual al número total de participants): dado un secreto sa repartir, el Mago del Bosque simply debia elegir cuatro fragments al azar, por ejemplo f1, f2, f3 y f4, y definir el último como f5 = s – f1 – f2 – f3 – f4. Así, la suma de los cinco fragmentos dará el secreto, pero con 4 o menos fragmentos no se obtendrá ninguna información sobre el secreto.

Cuando se usan esos esquemas para compartir secretos en la vida real, los secrets y los fragments no tienen tamaño libre, sino que por ejemplo se elige el secreto en el conjunto de enteros {0,1,2,3,…,q-1} para and número primo qy se trabaja con operacións modulares módulo q, es decir que q equivalent to 0, q+3 equivalent to 3, etc. Así se consigue que el tamaño de los fragmentsos f(s) también esté controlado, puesto que pertenecen al mismo conjunto {0,1,2,3,…,q-1} que el secreto repartido.

Muchos de nuestros lectores (como Javier, Ramiro o Joaquín) han resuelto rapide este reto…asique os planteamos una pregunta additional: otra opción que hubiese tenido el Mago del Bosque para hacer realidad el deseo de los Reinos 1, 3 y 4 de que el subconjunto {2,5} no pudiese recuperar el secreto, habría sido repartir el secreto para la estructura de acceso que contiene todos los subconjuntos de cardinal 2 except el {2,5}. ¿Os atrevéis a buscar la manera de repartir el secreto en ese caso?

PS: Tenemos pendiente de resolver también el desafio cryptográfico musical que nos vió Salva Fuster en los comentarios a uno de estos retos. Ya hemos recibido alguna respuesta en nuestro correo desafioscriptograficos@gmail.com. Os animamos a resolverlo también. En el próximo desafício publicaremos la solution que nos ha remitido su author.

Puedes seguir a EL PAÍS TECNOLOGÍA en Facebook y Twitter o apuntarte aquí para recibir nuestra newsletter weekly.

Leave a Comment

Your email address will not be published. Required fields are marked *