¿Es posible crear una dirección de bitcoin por fuerza bruta para robar dinero?

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?

Para darle una idea de los números involucrados: hay 1,921,075 direcciones diferentes en la cadena de bloques. Eso es menos del 0.000000000000000000000000000000000000001 % de todas las direcciones que se pueden generar.
@Artefact2 Sí, actualmente hay 2 millones de direcciones diferentes. Si queremos que BitCoin escale a 7b, 8b, 9b o 10b personas, cada una generando 10k direcciones diferentes al día, eso es 100 billones de direcciones creadas diariamente.
@Pacerier ¿Por qué cada usuario necesitaría 10k direcciones diferentes por día?
@Murch, 10k puede ser una subestimación severa . En cualquier caso, ahora no es el mejor momento para responder a esa pregunta, por la misma razón que hace 4 décadas no era el mejor momento para responder "¿Por qué nos quedaremos sin direcciones IP?"
@Pacerier: Esa es una declaración interesante, pero estoy más interesado en saber por qué espera que eso suceda que cuál podría ser la cifra exacta al final. ;) He abierto una nueva pregunta aquí: ¿Por qué necesitaríamos 10k direcciones nuevas en promedio por día?
James D'Angelo ha creado un video para visualizar la magnitud del espacio de la clave privada de Bitcoin: Bitcoin 101 - Quindecillones y la asombrosa matemática de las claves privadas de Bitcoin
un tipo creó un sitio web que genera claves privadas aleatorias. Debe visitar bitcoindoubler.cf

Respuestas (11)

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,

La especificación de la dirección se encuentra en en.bitcoin.it/wiki/Protocol_specification#Addresses si alguien quiere verificar dos veces mis ediciones :)
Vuelva a verificar y vuelva a publicar lo que encuentre, este sitio es mejor que el wiki, pongamos la información aquí en lugar de allí.
Votado a la baja porque este uso de "posible" es diferente al que cualquier lector supondría.
Alteré mi oración inicial para indicar que "posible" se entiende solo en el sentido científico más estricto de la palabra.
@DavidPerry El hash RIPEMD de la clave pública no proporciona seguridad. Actualizaría su respuesta (no es necesario dejar un párrafo de edición). La clave pública es el SHA256 de la clave privada. Si un atacante se compromete, puede generar la dirección (hash RIPEMD) de la clave pública de forma trivial como si fuera su propia clave.
@theUnhandledException Si intentáramos crear una colisión de direcciones, todos los pasos serían necesarios, ya que podría haber varias claves públicas que RIPEMD entrarían en la misma dirección; si la dirección es el único dato que un atacante tiene disponible, el RIPEMD- 160 hash sería un paso necesario ya que no pueden derivar la clave pública de la dirección.
@DavidPerry. El RIPEMD tiene un espacio de direcciones más pequeño que la clave pública (2^160 frente a 2^256). Se tarda un poco más en cada intento (clave privada -> pública -> dirección) frente a (privada -> pública), pero las probabilidades de encontrar una colisión en cada intento son 79228162514264300000000000000x más probables (8E28). Ahora bien, esto es algo académico porque 2^160 y 2^256 están más allá de nuestra capacidad computacional de fuerza bruta, pero el hash de la clave pública SHA-256 a la dirección RIPEMD-160 reduce la seguridad. Como ejemplo, imagine que la clave pública es de 256 bits pero la dirección es de 8 bits, ¿sería difícil encontrar una colisión?
Lo que digo es que para poder gastar el contenido de la dirección x tenemos que conocer la clave privada y y la clave pública z. Lo que digo es que x = RIPEMD160(z) y que sin calcular RIPEMD160(z) no hay forma de determinar si una clave pública x coincide con nuestra dirección de destino. Dado que todo en la cadena de bloques se almacena en referencia a x en lugar de y o z, debemos calcular RIPEMD160 (z) para cada valor de z para verificar su saldo o compararlo con una dirección conocida de la que pretendemos robar. Necesitaríamos calcular RIPEMD160(SHA256(z)) para cada valor de z, aumentando así la potencia necesaria para BF.
@DavidPerry Creo que te estás perdiendo el punto. No tienes que encontrar la clave privada. Solo tiene que encontrar una clave privada que corresponda a una clave pública con el hash de 160 bits correcto. Eso es 2^(256-160) veces más fácil que encontrar una clave privada que corresponda a la clave pública correcta. Y si bien agregar el paso adicional de hashing hará que las cosas tomen el doble de tiempo, el factor 2^106 que reduce la dificultad inunda eso.
@DavidPerry Su error está en "para poder gastar el contenido de la dirección x, tenemos que conocer la clave privada y y la clave pública z". Para gastar el contenido de una dirección, solo necesita satisfacer el scriptPubKey que generalmente dice: "OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG", es decir. asegúrese de que el hash dado en la entrada tenga los mismos 160 bits que <pubKeyHash> y luego verifique que la firma dada fue producida por el hash dado. En ningún momento comprueba que se haya utilizado la clave pública "correcta", ya que ni siquiera sabemos cuál es la clave pública "correcta", solo su hash de 160 bits.
Mierda, ¿la gente sigue discutiendo sobre esta pregunta? La nigromancia, gente, es algo malo. Reconozco el punto solo para no tener que discutir más sobre una respuesta de 7 meses. También porque tienes razón. Todavía es mucho más rentable minar que buscar pares de claves de todos modos, y mientras eso sea cierto, probablemente podamos considerar que el sistema es seguro. Similar a cómo no es imposible robar un banco, pero generalmente (a largo plazo) es más seguro y rentable conseguir un trabajo que sea legal.
@DavidPerry Dijiste que es más rentable minar que hackear. Pero, ¿es eso probable en el futuro cuando todas las monedas ya se hayan extraído y la única "ganancia" sean las tarifas de transacción?
@Pacerier, si bien es difícil hacer predicciones sobre variables futuras (número de claves que mantienen un saldo, etc.), las probabilidades de encontrar una clave privada que contenga fondos son escandalosamente bajas. Multiplique la probabilidad de encontrar dicha clave (efectivamente cero) por el saldo promedio (imposible de adivinar) y siempre que esa cantidad sea menor que el valor de un tiempo equivalente dedicado a la minería, todos deberíamos estar seguros, básicamente siempre que la computación cuántica se queda estancada en el laboratorio.
@DavidPerry IC. Pero la computación cuántica no se quedará estancada en el laboratorio, ¿no es así? Las computadoras no estuvieron atrapadas en los laboratorios por mucho tiempo.
@Pacerier solo para su información, el valor de los esfuerzos de un día para generar claves privadas es n u a donde n es la cantidad de claves generadas, u es el porcentaje de todas las claves realmente en uso y a es el saldo promedio de una cuenta determinada. Ahora mismo n~=2.030.400.000.000 para una buena tarjeta Radeon, u~=3,28*e-43, y a~=19,22 BTC, lo que significa que un día completo descifrando una tarjeta Radeon 5xxx vale ~1,28e-29 BTC, o 1,28 e-21 de un satoshi: la seguridad está en el tamaño total de 2^160, es probable que ninguna cantidad de direcciones en uso represente un porcentaje significativo de un número tan grande.
@Pacerier si la computación cuántica alguna vez deja el laboratorio y se vuelve asequible, Bitcoin no es la única tecnología que depende del cifrado que está en problemas. Incluso entonces, surgirá una nueva criptografía que es resistente al algoritmo de Shor y Bitcoin puede cambiar de ECC a otra cosa. La belleza es que es lo suficientemente flexible como para evitar este tipo de problemas.

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.

+1 por la toma interesante (aunque prácticamente inútil), por la salchicha y por la frase final genial.
Muy buena explicación sobre "carteras deterministas". ¡Gracias!
¿Qué pasaría si en lugar de usar frases de contraseña tan simples (basadas en el diccionario y de 2 palabras como máximo) uno basara su dirección en una frase de contraseña de 6 palabras con la mayoría de las palabras inexistentes en los diccionarios de idiomas?
Obviamente, eso sería más seguro que usar "salchicha" como frase de contraseña, pero no tan seguro como usar una clave privada de 256 bits completamente aleatoria. La fuerza bruta de una frase de contraseña de 6 palabras es más fácil que la fuerza bruta de una clave arbitraria de 256 bits. Es decir, su lista de palabras tiene una longitud de 64k (16 bits por palabra). Entonces su frase de 6 palabras tiene 16*6 = 96 bits en entropía. Una clave aleatoria tiene los 160 bits completos (las direcciones de bitcoin se derivan de un hash de 160 bits de la clave privada).
Me tomó tres minutos... Todavía me estoy recuperando de la experiencia... 'bitcoins gratis', muchachos, 'bitcoins gratis'. Todo en minúsculas, con un espacio y sin puntuación. Puedes encontrar la historia completa aquí: igor.host/index.php/goldendustproject , con fotos y todo... ¡Uf! no puedo explicarlo yo mismo

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!

¿Se puede revertir RIPEMD-160 (SHA-256 (clave pública)) solo probando diferentes claves públicas o hay una forma más eficiente (suponiendo que no hay debilidad)?
Para responderme a mí mismo: no. Sin embargo, si la dirección se usó anteriormente para enviar bitcoins, la clave pública completa se puede encontrar en la entrada de esa transacción. Eso reduce el problema a calcular la clave privada a partir de la clave pública y hay formas más eficientes de hacerlo que adivinar al azar. Pero tendrá que esperar al menos 30 años para que la ley de Moore se ponga al día. Mira mi pregunta aquí.
Su cálculo asume que la clave correcta será la última clave que genere, ¿verdad? Yo pensaría que después de 2^23 años tendrías un 50% de posibilidades de haberlo descifrado...
@Peter, tienes un punto allí ...
@Peter En realidad, no lo creo. Cada vez que agrega o elimina un poco de seguridad, está duplicando o reduciendo a la mitad el espacio de búsqueda, respectivamente. La fuerza bruta en la mitad del espacio de búsqueda significa buscar a través de 2 ^ 44, no 2 ^ 23.
Esta de aquí es la respuesta correcta.
¿Es este tiempo estimado para descifrar 1 clave privada o descifrarlas todas?

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.

Es posible, pero muy improbable y poco práctico.
¿Es posible hacer algo que llevaría más tiempo que la edad del universo? No por ningún significado de esa palabra con el que estoy familiarizado. Voté a favor de esta respuesta, por lo que la puntuación cero significa que alguien debe haberla votado a la baja. Tendría mucho cuidado al votar negativamente al desarrollador principal de BitCoin en el intercambio de pila de BitCoin;) .
@eMansipate Creo que el tiempo promedio o esperado es más largo que la edad del universo, pero, sin embargo, habría una probabilidad astronómicamente pequeña (lo suficientemente pequeña como para ignorarla por completo para cualquier propósito práctico) de terminar en una cantidad de tiempo menor.
Si alguien preguntara en un intercambio de pila de física "¿Es posible que mi cuerpo explote espontáneamente?", ¿diría que sí? Después de todo, es teóricamente posible que todos los átomos de tu cuerpo cambien repentinamente de estado cuántico y se separen...
Sí, lo haría, y cualquiera con un conocimiento decente de física me respaldaría en eso. Nunca debemos descartar algo como imposible simplemente porque es altamente improbable. Si tuviera que preguntar en un intercambio de pila de física, algún fanático de la Interpretación de Copenhague probablemente le diría que Bitcoin ya ha sido pirateado, solo que no en esta "bifurcación" del universo. Alguien aún puede intentarlo y aún puede tener éxito, solo que no es muy probable que lo haga: la probabilidad es tan baja que se puede descartar, pero "no" sigue siendo una respuesta incorrecta.
Ah, y @eMansipate: No tengo nada más que respeto por Gavin y todo lo que ha hecho, Bitcoin es un proyecto increíble y me alegra que esté trabajando en él. Sin duda es un estupendo programador y un hombre muy inteligente, pero todo eso no te hace inmune a equivocarte de vez en cuando. No tomo mis votos negativos o preguntas cerradas como algo personal y espero que Gavin tampoco lo haga.
@David Perry: acaba de convertir la palabra "posible" en sinónimo de "no contradictorio" e invalidó su uso más común. Apuesto a que en realidad no usas la palabra de esa manera, ya que ninguna persona en su sano juicio lo hace. "¿Es posible que cortes mi césped el domingo?" "Sí", una semana después, "¿Por qué no cortaste mi césped?" "Solo dije que era posible".
@David Schwartz: Este no es realmente un lugar apropiado para esta discusión, pero en realidad uso la palabra de esa manera. También digo "tengo una hipótesis" cuando, de hecho, no tengo algo que califique como una teoría. Tal vez sea pedante, pero la erosión del lenguaje es un problema grave. En cualquier caso, está fuera de tema aquí, así que no lo discutiré más.
@eMansipate no puede definir la duración de una prueba en particular, solo la prueba promedio o algún rango de probabilidad. Por ejemplo, es muy improbable, pero podría generar una colisión entre 2 hash SHA-256 consecutivos con un tiempo total de ejecución <1 segundo. Dado que con el poder computacional actual tener una posibilidad RAZONABLE de crear una colisión tomaría una gran cantidad de tiempo, sin embargo, eso no lo hace imposible porque uno podría formar una colisión en una sola prueba.
@theUn No puedo creer que esta respuesta tenga cinco votos negativos cuando responde de manera clara y precisa a la pregunta tal como realmente se hizo . Cuando se introduce una frase como "para robar dinero", se vuelve eminentemente claro que el alcance es una posibilidad práctica más que teórica. Si se le preguntara a Security SE si es posible usar certificados SSL de fuerza bruta para falsificar un sitio web, la respuesta sería "no, no es posible" porque hasta que se inventen nuevas matemáticas/hardware, la humanidad en su conjunto carece de eso. capacidad. Con la "potencia informática actual" claramente referenciada, lo mismo se aplica aquí.
O, para una comparación más directa, considere la pregunta: "¿Es posible ganarse la vida jugando a la ruleta en un casino?" Cualquiera que diga que sí porque puede ganar cada vez por el resto de su vida está dando la respuesta incorrecta: el contexto requerido por "ganarse la vida" deja en claro que estamos hablando de posibilidades prácticas en lugar de teorías.
@eMansipater Creo que es más la línea "Primero, tendría que generar y codificar una cantidad inimaginablemente grande de pares de claves ECDSA", esa afirmación es falsa. 100% falso. Podría generar una colisión con una pequeña cantidad de hash, posiblemente incluso 1 hash. Del mismo modo, "con la potencia informática actual, eso llevaría más tiempo que la edad del universo". No se puede definir la cantidad mínima de tiempo para encontrar una colisión.
Me preguntaba cómo sabes la edad del universo.
shoelessjoe: Sería mejor decir que nuestro sol envolverá la Tierra antes de que esto ocurra. DeathAndTaxes: No se puede definir el tiempo mínimo, pero sí el tiempo medio. Dicho esto, el tiempo promedio no determina si algo es "posible"; el tiempo mínimo sí lo hace, y el tiempo mínimo en este caso es un hash. eMansipater: Mi respuesta re: la ruleta sería "posible pero muy poco probable", ya que llamar a algo imposible te hace parecer muy estúpido cuando alguien realmente lo hace.
Y sí, Gavin, es posible que mi cuerpo explote repentinamente, especialmente en la víspera de Año Nuevo... tío, fue toda una fiesta... :-)

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.

¿Alguien puede explicar por qué esta respuesta está rechazada? Me gustaría evitar errores en el futuro y no tengo ni idea.
Dennis, aunque no fui yo quien rechazó tu respuesta, puedo ver por qué alguien podría hacerlo. Realmente no agrega nada que otra respuesta no describa ya, no proporciona ningún cálculo matemático e incluso es un poco grosero con el OP.
Oh, la mala educación fue mi intención y me disculpo sinceramente. Más bien estaba destinado a ser algo gracioso. De todos modos, en cuanto al 'no agregar' no estoy de acuerdo, apunta a un enlace donde puede ver lo que se teoriza arriba, en la práctica. Poner las cosas en práctica siempre es valioso. ¿No estarías de acuerdo? Edité mi respuesta en base a sus comentarios. ¡Gracias!
Hizo referencia a enlaces que no se encuentran en otros lugares y actualizó su respuesta con comentarios. ¡Gracias! Votado a favor.

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:

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

Existe el proyecto LBC (Large Bitcoin Collider) que intenta hacer eso. Según su sitio web, han creado más de 8000 billones de claves, hasta octubre de 2017.

Según un artículo de Motherboard de abril de 2017, LBC encontró más de 30 claves privadas de Bitcoin.

Esas claves privadas no son "reales". Fueron "plantadas" por el creador de LBC, es decir, financió esas claves privadas con el único propósito de que LBC las encontrara. Esas claves privadas no estaban realmente en uso por personas para transacciones reales. Esas claves privadas también eran muy cortas y tenían una alta probabilidad de ser encontradas.
@AndrewChow ¿puedes probar esa acusación "plantada"? Si toma el número de página de las páginas del backend, agrega el desplazamiento del número de línea y pasa ese número por el algoritmo, obtendrá exactamente el Wif y la dirección.
@Michael Está literalmente en el hilo LBC en Bitcointalk: bitcointalk.org/index.php?topic=1877935.msg18672178#msg18672178 . Las recompensas se crearon únicamente para LBC.

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).

-1 voto negativo. Técnicamente, una colisión de clave pública invalidaría la seguridad de una clave privada. Digamos que tiene una clave privada y un par de claves públicas xy. Si encuentro una colisión tal que una nueva clave privada z que tiene la misma clave pública y PUEDO firmar transacciones como usted. Al firmar una transacción (que involucra sus bitcoins) con la clave z, la red los validaría tal como lo harían si estuvieran firmados por x. Ambos parecerían igualmente válidos. Solo tu último párrafo está mal. Si modifica la respuesta, eliminaré el voto negativo.
"permitir que un atacante te envíe monedas"? Cualquiera puede enviarte monedas. Para gastar sus monedas, "todo" el atacante necesita una clave privada, de modo que la clave pública correspondiente tenga el mismo hash RIPEMD-160 (SHA-256 (x)) que su clave pública.

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.

Debo admitir que no sé lo suficiente acerca de cuántas direcciones se pueden generar con una computadora de 1 Th/s, pero una vez calculé la probabilidad de que ocurra una colisión cuando cada persona en este planeta tiene 100 direcciones. Si no recuerdo mal, todavía estaba en el rango de 10 ^ -27, por lo que la afirmación de que buscar colisiones se vuelve plausible con 1 Th / s se siente incorrecta por algunas magnitudes. Además, si la tecnología avanza lo suficiente, las direcciones pueden incrementarse a un espacio más grande.
Probablemente no estaba claro, ahora es bastante factible tener el equipo de Ghash/s en casa, cuando sea factible tener el equipo de Thash/s en casa, ya no es rentable usarlo para minar bitcoin, entonces habrá un incentivo para Inicie pools de minería de colisión con capacidades de xxx Thash/s. El equipo de minería rápidamente se vuelve inútil para la minería de bitcoin, la minería de bitcoin se vuelve más difícil, las recompensas se reducen: encontrar colisiones se vuelve más fácil ya que hay (a) más pares de claves/direcciones en uso con el tiempo (b) más poder de hash disponible a bajo costo (c) no aumento de la dificultad nunca.
Ese no era el problema, te sigo en eso. Mis problemas son: 1) ¿Se pueden reutilizar los mineros ASIC para generar direcciones? y 2) Creo que su propuesta subestima inmensamente la dificultad de encontrar una colisión.
Con respecto a (2), será necesario analizar algunos números, las variables son: la velocidad a la que los atacantes pueden crear claves públicas ECDSA y compararlas con una lista, la cantidad de direcciones de bitcoin financiadas para las cuales sería una clave útil: ciertas partes de la ecuación son bien conocidas, por ejemplo, podemos suponer razonablemente que la distribución de claves será bastante uniforme en todo el espacio (por lo tanto, atacar solo una parte del espacio sería viable), y que hay aproximadamente 2^96 privados claves para cada dirección.
Con respecto a (1), para cualquier dirección que haya gastado una entrada y le queden entradas sin gastar, la clave ECDSA pública está en la cadena de bloques, lo que facilita mucho la verificación, para cualquier dirección que solo haya recibido y no gastado, luego la clave madura- 160 en la cadena de bloques, lo que requiere 2 pasos adicionales de ripemd-160 (sha256 (ecdsa-public-key)), lo que lo hace mucho más costoso desde el punto de vista computacional, mucho menos que calcular una dirección completa para crear una dirección personal.
¿Existe una criptotecnología conectable integrada en la arquitectura de BitCoin que pueda eludir lo inevitable?
¿Puede justificar sus cálculos, por favor? Si RIPEMD-160 es seguro, debería requerir aproximadamente 2^80claves 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^40claves 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.
¿Y puede explicar su comentario sobre una coincidencia de 20 caracteres? Parece que está afirmando que las 2^256posibles claves privadas se asignan solo a 2^117las 2^160direcciones 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.

Siento que esto es algo que puede suceder ocasionalmente, aunque sea muy poco para ser considerado una amenaza importante, al menos por ahora, ya que este problema no escalará como lo hace la cadena de bloques. También puede incluso promediar la cantidad contenida en una billetera btc y calcular la rentabilidad, y sospecho que es baja. Como si pasaras por todo eso solo por las probabilidades de robar tal vez 500 dólares