Los usuarios de Bitcoin generan con frecuencia nuevas direcciones para cada transacción que realizan, lo que aumenta considerablemente la cantidad de direcciones de Bitcoin que se utilizan para recibir dinero.
¿Sería posible (y rentable) que alguien encontrara colisiones en el espacio de direcciones de bitcoin para robar dinero?
Puede ser "teóricamente" posible, pero en realidad es poco probable que se logre, como contar la cantidad de átomos en un edificio de oficinas.
Las direcciones de Bitcoin son en realidad el hash SHA de 256 bits de una clave pública ECDSA , por lo que cualquier vulnerabilidad en esos algoritmos constituiría una vulnerabilidad en Bitcoin mismo. Sin embargo, de manera realista, romper este nivel de cifrado requiere una gran cantidad de poder de procesamiento. Coincidentemente, requiere exactamente el mismo tipo de potencia de procesamiento que requiere la minería de bitcoins y, en casi todos los escenarios, sería mucho más rentable minar que hackear.
Editar: en realidad es RIPEMD-160 (SHA-256 (clave pública)) en lugar de solo SHA-256 (clave pública) como mencioné originalmente, por lo que es un hash de 160 bits de un hash de 256 bits de una clave pública. Si bien el espacio de claves de destino (160 bits) es más pequeño gracias a este paso final, también es un cálculo adicional que debe realizar un posible pirata informático. Si bien la complejidad computacional adicional ni siquiera se acerca a cancelar la eliminación de 96 bits de espacio de claves, debe tenerse en cuenta que encontrar una colisión en un espacio de claves de 160 bits sigue siendo increíblemente difícil y requiere mucho tiempo. Más importante aún, es más difícil y requiere más tiempo de lo que realmente sería extraer la misma cantidad de monedas,
Es posible usar la fuerza bruta en algunas direcciones de Bitcoin, porque algunas personas generan sus claves privadas de manera insegura. Cualquier (distinto de cero) 32 bytes puede ser una clave privada. Por lo tanto, ejecutar sha256 sobre una frase de contraseña da una clave privada aparentemente aleatoria, pero capaz de fuerza bruta.
Tome sha256 ("salchicha") por ejemplo:
$ echo -n 'sausage' | sha256sum
30caae2fcb7c34ecadfddc45e0a27e9103bd7cfc87730d7818cc096b1266a683 -
Cargue bitaddress y pegue esa clave privada en la pestaña 'detalles de la billetera' para obtener la dirección de Bitcoin correspondiente, luego búsquela en blockexplorer :
$ GET http://blockexplorer.com/q/getreceivedbyaddress/1TnnhMEgic5g4ttrCQyDopwqTs4hheuNZ; echo
0.01000000
y verá que la dirección mantuvo un bitcent durante aproximadamente 2 días en febrero de 2012.
Véase también: "fuckyou", que tuvo 2,5 bitcents durante 12 días festivos a finales del año pasado.
Entonces, en la práctica, es posible crear direcciones de bitcoin por fuerza bruta, pero solo para frases de contraseña mal elegidas. Probablemente solo eran personas jugando con la idea de "almacenar bitcoins en su cabeza", razón por la cual son para cantidades tan pequeñas y por qué no se mantuvieron financiados por mucho tiempo.
No se dañaron los saldos de direcciones al hacer esta respuesta.
Para gastar dinero enviado a una dirección de Bitcoin, solo necesita encontrar una clave pública ECDSA que tenga el mismo valor de 160 bits. Eso llevará, en promedio, 2 160 generaciones clave.
Suponiendo que pudieras generar mil millones (2 30 ) por segundo, necesitas 2 130 segundos.
Hacer esto en paralelo usando mil millones de máquinas requiere solo 2 100 segundos.
Lograr que mil millones de tus amigos más ricos se unan a ti lo reduce a solo 2 70 segundos.
Hay alrededor de 2 25 segundos por año, por lo que necesita 2 45 años.
La edad del Universo es de aproximadamente 2 34 años hasta ahora, ¡mejor ponte manos a la obra!
No, no es posible, por dos razones.
Primero, tendría que generar y codificar una cantidad inimaginablemente grande de pares de claves ECDSA para tener una posibilidad razonable de encontrar una colisión. Con la potencia informática actual, eso llevaría más tiempo que la edad del universo.
En segundo lugar, como se señaló en las otras respuestas, es mucho más rentable generar bitcoins si tiene mucha potencia informática.
Si desea ver alguna prueba para verificar que es realmente imposible generar un par de claves conocido, puede probarlo usted mismo, si lo desea.
Pavol Rusnak ha creado coinkit, una biblioteca de Python para interactuar con cosas relacionadas con Bitcoin. Allí, hay un ejemplo de cómo usarlo que hace exactamente lo que está pidiendo.
Lo que hace es generar un par de claves aleatorias y busca un saldo en blockchain.info.
Lo dejé funcionar hace aproximadamente un mes con ligeras modificaciones en aproximadamente 1 millón de direcciones y no encontré ninguna colisión.
Si prefiere diagramas: http://i.imgur.com/ag3KQ0L.png (hay más direcciones en el espacio de direcciones que zeptómetros, 1/1 000 000 000 000 000 000 de un metro, en el ancho del universo) .
Si prefiere las matemáticas: http://download.wpsoftware.net/bitcoin-birthday.pdf (por Andrew Poelstra ) dice (ligeramente editado):
Utilizando [matemáticas de ataque de cumpleaños], calculamos [arriba] que para una probabilidad de colisión del 0,1%, necesitaríamos 5,4 × 10^22 direcciones en existencia. Para una probabilidad del 99,9999%, necesitaríamos 6,35 × 10^24 direcciones.
Entonces, incluso si se generaron 10 ^ 22 direcciones de bitcoin, simplemente no ocurrirá una colisión. Pero si se generaran 10 ^ 25 direcciones, ocurriría absolutamente una colisión.
¿Deberíamos preocuparnos por esto? No, por estas razones independientes:
La posibilidad de obtener una colisión específica, digamos, una colisión con una de sus direcciones, sigue siendo de 1 en 2^160 o 1 en 10^48. Entonces, incluso si tiene un millón de millones de millones de direcciones, nadie tiene la posibilidad de chocar con usted.
En el momento de escribir este artículo, hay menos de 10^7 direcciones en uso en la red. Entonces, cualquier persona con 10 ^ 25 direcciones solo colisionaría con sus propias direcciones.
Cada dirección toma alrededor de 100 bytes para almacenar. (En realidad, aproximadamente la mitad, pero solo nos importan los órdenes de magnitud). Entonces, para que la red admita 10 ^ 25 direcciones, se necesitarían 10 millones de terabytes de almacenamiento solo para registrarlas. (Y esto ni siquiera toca el problema de buscar en un almacén de datos tan grande.
Según sipa, si la red minera actual (que tiene 25 THash y la red informática más poderosa en la historia del mundo) se cambiara a la generación de direcciones, la red podría generar 2.5 × 10^12 direcciones por segundo (una generación de direcciones correspondiente a aproximadamente 10 hashes). A ese ritmo, se necesitarían 127.000 años para obtener tantas direcciones. Es discutible si el homo sapiens ha caminado sobre la tierra durante tanto tiempo.
Con 21 millones de bitcoins existentes y 8 decimales de divisibilidad, como máximo 2,1 × 10^14 pueden tener dinero en ellos a la vez. Pero en un espacio de 10^24 direcciones, esto significa que solo una de cada 10^12 direcciones podría tener dinero. Entonces, un atacante, después de hacer lo físicamente imposible 3 billones de veces, solo tiene una posibilidad entre un billón de obtener un satoshi.
Teóricamente es posible (pero no rentable). Pero en realidad, la cantidad de dinero que tendría que gastar para hacerlo sería mucho más de lo que ganaría.
Posible: Sí.
probable: no
Muchos eventos son posibles aunque no sean probables. La probabilidad de fuerza bruta de una clave privada de bitcoin es tan improbable que con los estándares informáticos actuales es, para todos los efectos, imposible.
A medida que se desarrolle la ciencia de la criptografía y que la fuerza bruta se vuelva más poderosa, la infraestructura subyacente de bitcoin se mejorará para seguir el ritmo de la mejora de la tecnología. Esto puede requerir acceder a su billetera bitcoin utilizando un cliente mejorado en el futuro para mantener un alto nivel de seguridad.
Además, una dirección de bitcoin no es lo mismo que una clave privada. Generar una dirección de bitcoin le permitirá a un atacante enviarle monedas, pero no le permitirá firmar transacciones con su clave privada (es decir, eliminar monedas de su billetera).
Sí, siguiendo la progresión de la tecnología, una vez que el equipo esté disponible que pueda hacer 1 Thash/seg y más, será factible comenzar a encontrar colisiones con una tasa de éxito razonable. Calculo que en aproximadamente 2 o 3 años esto será viable, en cuanto a si alguien que lo intenta tiene suerte de obtener una dirección que tiene una cantidad decente de BTC asociada es otra cosa, y la cuestión de si sería incluso ser rentable es aún más lejos.
Estoy bastante seguro de que las probabilidades son mucho menores de lo que indican las matemáticas básicas. Si encuentra una coincidencia que tiene alrededor de 20 caracteres, las probabilidades son bastante altas de que la dirección completa coincida debido al proceso involucrado en la generación de la clave. par.
Avance una década, y esto será una preocupación mucho más realista, o en el momento en que Thash se vuelve normal, y Phash está en las cartas. Ni siquiera ha sido inventado pero será dentro de unos años.
2^80
claves para encontrar una colisión. Generar una clave lleva mucho más tiempo que un hash SHA-256 (y los ASIC de minería estándar no lo harán), por lo que "THash" no es una medida útil. Pero incluso si pudieras hacer 1 tera-clave por segundo, tienes que hacer 2^40
claves para promediar una colisión, eso es aproximadamente 34,000 años según mis cálculos, e incluso entonces, probablemente habrás encontrado una colisión con otra clave que generaste, que en realidad no contiene las monedas de nadie.2^256
posibles claves privadas se asignan solo a 2^117
las 2^160
direcciones posibles; eso parecería ser una gran debilidad en los algoritmos hash utilizados si es cierto, y debería publicarse en una revista criptográfica líder.Leí en bitcoin.org que una clave privada $d_A$ es cualquier número entero entre $1$ y $n-1$. También $n=FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE 0x00 = 18,446,744,073,709,551,615 0d00 $. Suponiendo 100 millones de direcciones diferentes, la probabilidad de seleccionar una dirección usada es de $5,42 e^{-12}$. Si tenemos $x$ conjeturas, necesitamos $x=$frac{1}{5.42e^{-12}}$ claves privadas para asegurarnos de encontrar una. Eso es $5,42 e^{12}$ generación de direcciones, luego para los 5,42 billones de claves privadas generadas aleatoriamente, tendría que multiplicar $G$ por cada clave privada $d_n$ en el campo elíptico para obtener el $Q_n$ y luego buscar el cadena de bloques de bitcoin para ese $Q_n$. Después de 5,42 billones de ellos, es casi seguro que encontrará uno y podrá robar su btc.
Podría calcular la informática de esto, como cuánto tiempo multiplicar $ d_n \times G $ y cuánto tiempo buscar en la cadena de bloques. Dado que casi todo no estará en él, serán todas las búsquedas del peor de los casos.
Artefacto2
marcapasos
muro
marcapasos
muro
muro
manan5439