Tips

  • El desarrollador de Bitcoin John Cantrell se reveló como el hacker que descifró la dirección de Bitcoin de Alistair Milne, como parte de su desafío.
  • Para reclamar el premio, Cantrell creó toda una orquesta de GPUs basadas en la nube.
  • Tuvo que comprobar más de un billón de combinaciones de palabras para abrir la cartera, y casi dejó de intentarlo.

John Cantrell, el desarrollador del protocolo de mensajería de Lightning Network Juggernaut, descifró una dirección de Bitcoin ayer y se llevó los 9.300 dólares en monedas para él. Pero esto no fue un robo, fue parte de un juego que ganó. Ahora ha revelado cómo lo hizo.

Como Decrypt informó ayer, Alistair Milne, CIO del Altana Digital Currency Fund, orquestó un desafío en Twitter en el que el ganador obtendría un Bitcoin entero. A partir de mayo, publicó periódicamente pistas sobre una frase de 12 palabras para una dirección de cartera que contenía un Bitcoin. Quienquiera que recogiera todas las pistas podía usar la frase para desbloquear la wallet de Bitcoin y llevar el Bitcoin dentro.

Sin embargo, Milne planeaba publicar las últimas tres o cuatro palabras de una sola vez. Esto era un intento de evitar que alguien forzara bruscamente la dirección para abrirla (adivinando continuamente las palabras hasta que la combinación funcionara). Pero su plan fracasó. Con sólo ocho palabras, Cantrell fue capaz de adivinar las palabras restantes, encontrar la combinación correcta y abrir la cartera.

Hackeando la dirección de Bitcoin

Antes de que se publicara la octava palabra, Cantrell comenzó a prepararse. Escribió en su post de Medium que, con ocho palabras, habría "aproximadamente 1,1 billones de mnemotécnicos posibles", que debían ser comprobados.

Un mnemotécnico es una frase semilla de 12 o 24 palabras para una clave privada de Bitcoin que otorga acceso total a los fondos que se mantienen en ella. Hay una lista limitada de 2048 palabras que tales frases podrían contener, pero eso no hace que hackear una cartera de Bitcoin sea mucho más fácil.

Para probar una sola frase, Cantrell necesitaba generar una semilla a partir del mnemotécnico, una llave privada maestra a partir de la semilla y una dirección a partir de la llave privada maestra. Después de escribir un programa especial y ejecutar algunos puntos de referencia, resultó que el hardware que tenía en ese momento no estaba a la altura de la tarea.

El portátil de Cantrell sólo podía comprobar unos 1.250 mnemotécnicos por segundo, un total de 108 millones al día. "Esto significa que mi CPU tardaría unos 25 años en generar y comprobar el billón de posibilidades necesarias para forzar la mnemotécnica, mientras que sólo conozco 8 de las palabras", señaló. Y eso que sólo faltaban cuatro palabras.

Para resolver el problema, Cantrell recurrió a la computación en nube. Alquiló varias docenas de tarjetas gráficas en un mercado de GPUs y en el servicio de computación en nube de Microsoft, Azure, y escribió un software que distribuía el trabajo por lotes en cada tarjeta gráfica.

Al probar este sistema, se publicó la octava palabra y el juego comenzó. Puso en marcha las máquinas.

"En el pico estaba probando unos 40 mil millones de mnemotécnicos por hora. Esto significa que debería haber tomado alrededor de 25 horas para probar el 1 billón de mnemotécnicos. Sabía que en promedio sólo debería tomar el 50% del tiempo", dijo Cantrell.

Pero tuvo una mala suerte increíble. Después de probar el 85% de las combinaciones, no tuvo suerte. Y se dio cuenta de que podía haber un fallo fundamental. Su plan dependía de que las palabras estuvieran en el orden correcto, lo cual no estaba garantizado. Si no fuera así, "¡habrían sido 8! (factorial) más posibilidades," haciendo imposible que se rompiera.

Más tarde, durante un día de intensos cálculos, Cantrell "había perdido en gran medida la esperanza de que funcionara" y "literalmente casi lo apagó tofo.

"No pude conseguir que me detuviera en ese momento, ya que había llegado tan lejos, así que dejé que continuara. Para mi sorpresa un poco más tarde esa noche (al 91%) y después de casi 30 horas y exactamente 1 trillón de chequeos (1.000.710.602.752) había encontrado una solución!" Cantrell dijo.

Luego pagó una tarifa excesivamente alta de 0,01 Bitcoin (94 dólares) para transferir el dinero a su propio monedero, en caso de que alguien más lo hubiera adivinado (quería que los mineros de Bitcoin dieran preferencia a su transacción).

Milne confirmó que alguien había tomado sus Bitcoin. "Sabía que iba contrarreloj, pero la mayoría de la gente pensaba que se tardarían unas pocas semanas en hacer fuerza bruta con 4 palabras clave", escribió en el Twitter.

Ahora, Cantell planea "pagar por adelantado" con un concurso propio que "no puede ser ganado por el software", por supuesto.