¿Se pueden usar las tablas de arco iris para encontrar claves privadas a partir de claves públicas?

Entiendo que la clave pública se mantiene oculta hasta que se realiza una transacción de bitcoin, momento en el que se debe revelar la clave pública para demostrar que creó la transacción con su clave privada. Hasta entonces, solo se comparte un hash de su clave pública, conocido como su dirección de bitcoin.

Una vez que se conozca mi clave pública, ¿sería posible que alguien busque mi clave privada en una tabla de arco iris?

Tal tabla de arcoíris ya existe en directory.io . ;) Sin embargo, encontrará que el sitio es una broma irónica explicada por la respuesta de Pieter a continuación.
Técnicamente, directory.io no es una tabla de arcoíris, ya que calcula las claves sobre la marcha. Es casi imposible almacenar todas las claves en una tabla.

Respuestas (4)

No.

Una tabla arcoíris es simplemente una compensación entre la memoria y la CPU que le permite encontrar imágenes previas de una función más rápido al tener una tabla precalculada con algunas de las entradas.

Para construir una tabla de arcoíris para claves privadas/públicas de bitcoin, primero debe iterar todas las claves al menos una vez. No importa que solo una parte de los pares de llaves terminen en su tabla de arcoíris, todavía tiene que revisarlos todos.

Esa es una tarea imposible. Hay 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 claves privadas válidas para pasar. Para poner eso en perspectiva: si pusieras una computadora en cada micrómetro cuadrado de la tierra (1/1600 de la sección transversal de un cabello humano) que puede calcular tantas claves públicas por segundo como hashes por segundo en toda la red minera de Bitcoin en el momento de escribir (4 exhash/s), le llevaría 120000 veces la edad del universo pasar por todas las claves.

Y, incluso si de alguna manera tuviera un oráculo que pudiera darle la tabla del arco iris, tendría que ser imposiblemente grande para que el descifrado de claves privadas sea práctico. Si su tabla tuviera un billón de entradas, solo haría que el descifrado fuera un billón de veces más rápido. Eso sigue siendo completamente imposible.

En lo alto del norte, en la tierra llamada Svithjod, hay una roca. Tiene cien millas de alto y cien millas de ancho. Una vez cada mil años un pajarito viene a esta roca a afilarse el pico. Cuando la roca se haya desgastado , el cálculo de Pieter estará completo.
Sí, pero ¿y si Bitcoin existe en 120000 veces la edad del universo? Estoy preocupado porque podríamos darnos un chapuzón.

Gracias por el enlace del gran colisionador de bitcoin (LBC). Lo miré detenidamente, pero está muy por encima de mi cabeza. Parece que están encontrando claves privadas regularmente que se ajustan a cuentas activas con algunos BTC en ellas. Esa es una vista alarmante. Especialmente porque esto todavía se está ejecutando en una pequeña escala.

Luego me encontré con esta excelente publicación: https://www.reddit.com/r/btc/comments/65mjm3/bitcoin_wallets_under_siege_from_collider_attack/dgbudsk/ En cuanto a por qué LBC parece haber encontrado claves privadas para cuentas activas, respondió:

Las billeteras que han atacado hasta ahora no son billeteras genéricas de bitcoin de clave privada aleatoria como las habituales, pero han sido diseñadas específicamente para ser rotas. Pertenecen principalmente a la transacción de rompecabezas que contiene muchas claves privadas "fáciles".

¿Qué significa eso?

No estoy completamente seguro de que todos estén hablando del mismo enfoque/problema, pero creo que al final es similar: ¿Qué tan difícil es encontrar una clave privada para una dirección de bitcoin activa específica o cualquiera de las direcciones de bitcoin activas? Espero que dyoniziz de reddit sea correcto.

LBC solo encontrará claves que se generaron con generadores de números aleatorios inseguros. Cualquier otra cosa requiere cantidades astronómicas de poder de cómputo que la tecnología está diseñada para soportar, así que no dejes que te asuste.
¿Puedes elaborar? No entiendo por qué es más probable que el LBC encuentre las claves generadas con generadores de números aleatorios. Pensé que LBC simplemente analiza las posibles claves metódicamente, de principio a fin, por así decirlo.
Las cosas generadas con generadores de números aleatorios inseguros son más fáciles de encontrar al tratar de imitar el algoritmo que usaron. Un buen generador de números aleatorios produce números que no se pueden distinguir de los aleatorios, por lo que cada patrón de búsqueda es tan bueno como cualquier otro. Y el espacio clave es tan enorme que es imposible volver a tocar uno por casualidad.
@PieterWuille " solo lo hará ": cuando calculan durante el tiempo suficiente, encontrarán todo. Veremos qué tan rápida puede ser la computación en nuestro tiempo de vida y si Bitcoin se rompe. También me siento bastante cómodo en este momento, pero eso puede cambiar, tenemos que enfrentar eso.
Buena suerte, entonces.

Digamos que tengo 101 claves privadas generadas por un pseudo-RNG, pero perdí una. Teóricamente, creo que es posible usar 100 pares privados/públicos para descifrar el que falta. Porque, mientras que el espacio numérico real es muy grande, el espacio numérico pseudo-RNG está limitado por el espacio de punto flotante del propio hardware. Además, creo que es posible crear una tabla arcoíris a partir de la 100, lo que la hace más accesible. Si me equivoco, que alguien me explique.

Voté negativo. Esta respuesta es completamente incorrecta. Un PRNG correctamente diseñado no permite que nadie obtenga información sobre el estado u otros resultados dados unos resultados conocidos; estaría completamente roto si ese fuera el caso. No se usa punto flotante en ninguna parte. Las tablas Rainbow son completamente inútiles, como explico en mi propia respuesta a continuación.
Tengo un libro de texto universitario, "Hacer y descifrar códigos", escrito por Paul Garrett y es un texto de cuarto año en el grado de encriptación matemática que dice lo contrario. Algunos viejos son crackeables. También hay software de descifrado de PRNG como Mandarino que ha permitido a algunas personas ganar dinero haciendo trampa en los casinos en línea. El estado interno del PRNG supuestamente se puede descubrir ya que en realidad es un algoritmo determinista. Por lo tanto, un diseño adecuado incluiría algunos datos aleatorios, como la temperatura de la CPU, la velocidad del ventilador, los movimientos del mouse, etc. Pero PRNG del año 2000 podría no haber incluido eso.

de hecho eso sería teóricamente posible. una mesa así por suerte es muy grande. para obtener más información, por ejemplo, sobre el gran colisionador de bitcoin . si una dirección activa significa que gasta dinero, entonces se revela la clave pública, lo que facilita el ataque. siempre que una dirección solo haya recibido dinero, está mejor protegida por la segunda capa de hashing.

lbc puede ignorarse, pero recorren sistemáticamente el espacio de claves desde una dificultad pequeña a una grande por entropía. Las claves fáciles de encontrar son solo un cebo para involucrar a más personas. @Pieter: por supuesto, el RNG débil es un problema, pero eso no estaba en duda; será mejor que obtengamos algunos estándares de hardware abiertos para TRNG.

Curiosamente, la gente vota esto hacia abajo. tenemos que enfrentarlo: hay problemas con la implementación de bitcoin además de la escalabilidad. el hashing no estaba bien pensado y el algoritmo ecc (Secp256k1: T=(p,a,b,G,n,h); a=0 , b=7 … h=1. ver diapositiva de ruedi ) obtuvo el parámetro anulado sin ninguna buena razón (el rendimiento no es un buen argumento en absoluto en términos de criptografía). la criptografía no respeta las debilidades, por pequeñas que sean.

Ningún cambio en el algoritmo hash haría seguras las claves generadas con un RNG inseguro. No tengo idea de qué parámetros ecc estás hablando.
@PieterWuille Primero, nadie afirmó, si es así, indícamelo, por favor, y segundo, espero que lo sepas. las matemáticas no son un secreto: ruedi en 31c3 ; Secp256k1: T=(p,a,b,G,n,h); a=0 , b=7 … h=1.
Sí, a=0 es una elección consciente que hace que ciertas operaciones sean más rápidas. No se conocen ataques contra esa elección.
Lo sé, lo sabes, pero todavía no es un buen argumento. Ve a preguntar a los criptógrafos, te dirán como lo hizo ese si están cuerdos. La alteración de la implementación criptográfica para el rendimiento es simplemente una de las cosas que no debe hacer si tiene la opción.
Nada fue alterado. Secp256k1 era una curva elíptica estandarizada por la SECG antes de que existiera Bitcoin. Satoshi solo eligió una curva antes de que EC fuera genial, y terminó eligiendo un estándar diferente al que siguió el resto del mundo. Fue una elección inusual en el peor de los casos, pero no mala.
He votado a la baja, porque esta respuesta no proporciona información útil. "Teóricamente posible" debe cuantificarse correctamente y los "problemas con la implementación de bitcoin" deben justificarse con evidencia creíble, porque como se presenta aquí, la publicación exagera por completo la posibilidad real de tal ataque y podría alarmar a los lectores desinformados.