Autor:
fillipponeHilo original:
There are 2^256 private keys out there: how big is that number?
Ayer mientras navegaba por la madriguera de conejo de Bitcoin me topé con la famosa página web keys.lol
https://keys.lol(Atención: ¡aquí el tiempo vuela!)
Básicamente, se trata de una página web que genera aleatoriamente 128 claves privadas en cada página, comprueba el balance de las direcciones relacionadas (comprimidas y descomprimidas) en la blockchain y finalmente reporta los balances positivos o las transacciones pasadas.
¡Guau!
Si encuentras saldo positivo en las páginas generadas en esta parte del cliente, de hecho eres el propietario de las claves privadas y, por lo tanto, dueño legítimo de dicho saldo, y nada te quita de transferirlo a tu propia cartera. (N del T: esto puede variar en función de diferentes interpretaciones y de la jurisdicción y legislación aplicables).
Pasé unas cuantas horas en dicha página web, generando miles de claves privadas, por supuesto sin encontrar nada, ni una sola dirección usada, y ni que decir de alguna con saldo.
Después empecé a pensar que podrían aplicar un poco de ingeniería en el proceso, y tras hablar con algunos amigos usuarios de aquí del foro, pensé que podríamos tener un script que generara claves privadas aleatorias, luego preguntarle a mi propio nodo de Bitcoin el saldo en dichas direcciones y finalmente transferir cualquier saldo a mi propia cartera. Trabajar en local debería acelerar un poco el proceso, pensé.
Conocía desde el principio que las probabilidades de encontrar algo eran muy pequeñas, pero quise probar porque buscar saldos y no encontrar nada me reafirmaría en la creencia de que nadie podría hacer lo mismo con mis propios Bitcoin tan celosamente almacenados en mi cartera fría.
Mientras esperaba por @babo para que publicara su script, pensé para mí "Fillippone es solo un peón en el juego de la vida"... ¿cómo a nadie se le había ocurrido nunca esto?
De vuelta a la madriguera de conejo, rápidamente descubrí el Gran Colisionador de Bitcoin.
https://lbc.cryptoguru.org/about¡Guau! este es un proyecto serio.
Básicamente, miles de servidores distribuidos generando y comprobando 2,6 trillones (!!!) de claves privadas diariamente.
Durante los primeros tres años, consiguieron encontrar 7 claves privadas. ¡Eso es un montón! Imaginé que las probabilidades serían mucho menores, pero seguramente hay algún tipo de bug en alguna cartera utilizando un generador de números aleatorios sub-óptimo para crear las claves. (¡Es necesaria una mayor investigación aquí!)
Revisemos rápidamente unos pocos números:
Número de claves privadas teóricamente posibles: 2^256 o alrededor de 10^77
Número de direcciones de Bitcoin: 2^160
Número de claves privadas buscadas en el Colisionador de Bitcoin: 2^160
Número de átomos en el universo: de 10^78 a 10^82
Número de
direcciones Bitcoin usadas: 18.000.000
El número de claves privadas REALMENTE posibles es un poco menor de 2^256, como se especifica
aquí.
Imaginémonos unos pocos ejemplos:
- Supongamos que tenemos mil millones de direcciones activas, cada una de ellas con saldo positivo: sabemos que esto es cerca de 10^3 veces mayor que el número real.
Probablemente el número de átomos en el universo sea 10^3 veces mayor que el número de direcciones, por lo que es justo decir que encontrar una clave privada con una cantidad positiva es prácticamente tan probable como encontrar uno de esos átomos esparcidos por todo el universo conocido.
¿Cómo de grande son mil millones de átomos? De acuerdo con esta respuesta de Quora, es más pequeño que una bacteria E.Coli. Así que imagina coger dicha bacteria, dividirla a nivel atómico, esparcirla en el universo y tratar de encontrar uno de esos átomos. Bastante difícil, ¿no crees?
- El segundo ejemplo proviene de este artículo. Supongamos que queremos escanear todas las claves privadas en busca de un saldo positivo y supongamos que cada habitante de la Tierra tiene una velocidad de escaneo mil millones de veces mayor que el doble de la potencia de computación actual de la red de Bitcoin, por tanto:
* 1 billón de personas;
* multiplicado por mil millones;
* multiplicado por el doble de la potencia de computación de Bitcoin, alrededor de 100 mil terahash por segundo;
obtenemos: 1.000.000.000.000*1.000.000.000*100.000*100.000.000.000 = 10^10*10^9*10^5*10^12 = 10^36
Por simplificar, redondeamos a la baja de ‘115.792.089.237.316.195.423.570.985.008.687.907.852.837.564.279.074.904.382.605.163.141.518.161.494.336’ a 10^77, y obtenemos que, si comprobáramos todas y cada una de las claves privadas en busca de saldo positivo, nos llevaría 10^77/10^36 = 10^41 segundos, ¿cuántos años sería esto?
Teniendo en cuenta que un año tiene unos 31.557.600 segundos, le corresponderían unos 10^41/31.557.600 = 31^33 años, que es más o menos 10^23 veces la edad estimada del universo (estimada actualmente en 1.382 billones de años), en resumen 100.000.000.000.000.000.000.000, i.e. unos 100 mil trillones de veces la edad del universo.
- Este vídeo muestra cómo de seguro es el algoritmo SHA 256.
https://youtu.be/S9JGmA5_unY
- Ninguno de los ejemplos previos tuvo en cuenta la energía necesaria para dichos cálculos. Lógicamente, todas esas máquinas tan potentes deberían ser alimentadas por algún tipo de energía. ¿Cuánta energía sería necesaria? Pues bien, mucha, si hacemos caso de esta infografía:
Enlace a RedditOtros ejemplos sobre cuánto se tardaría en adivinar aleatoriamente una clave privada:
Otras referencias:
Otros números muy grandes:
Estos son solo unos pocos ejemplos, si tienes fuentes adicionales o comentarios que hacer, ¡no dudes en postearlos a continuación y los añadiré a la lista! (N del T: no aquí, bueno aquí también, pero se refiere al
hilo original).
Traducción ofrecida a iniciativa de: