¿Pueden dos claves privadas generar la misma dirección (pública) de Bitcoin?

Sé que la billetera genera aleatoriamente la clave privada. ¿Es posible que la billetera genere la misma dirección que se usa en Bitcoin?

En otras palabras: dadas dos claves privadas k a ≠ k b , ¿es posible que ambas generen la misma dirección pública de Bitcoin?

Respuestas (2)

Sí, puede hacer que dos claves generen la misma dirección .

Hay 2^160 direcciones posibles y 2^256 claves privadas posibles, por lo que cada dirección corresponde aproximadamente a 2^(256-160)=2^96 claves privadas. Cualquiera de estos generará la misma dirección y así poder gastar el dinero que posee esa dirección. Sin embargo, dado que 2^160 es tan grande, se necesitaría casi una eternidad para encontrar colisiones.

Si dos claves privadas pueden generar la misma clave pública es otra cuestión. Creo que la respuesta es sí, pero no estoy seguro de eso. La clave pública sin comprimir consta de dos números de 256 bits, que son las coordenadas X e Y en una curva elíptica. Sin embargo, la forma comprimida es solo la coordenada X más un bit , a partir de la cual puede calcular la clave pública completa. Esto significa que el espacio es (como máximo) 2^257. A menos que haya un mapeo uno a uno debido a las propiedades matemáticas de la criptografía utilizada, cada clave pública comprimida corresponde a aproximadamente 0,5 claves privadas (con la misma distribución que obtendría al elegir un número aleatorio de 1 a 2^257 , 2^256 veces), por lo que algunas claves privadas colisionarán, mientras que otras no.

En realidad, encontrar cualquier par de claves privadas diferentes que generen la misma clave o dirección pública sería bastante difícil. O implicaría una gran cantidad de cálculo y/o suerte, o se debería a encontrar una vulnerabilidad grave en los algoritmos utilizados.

Y si se encuentra tal colisión y existen dos claves privadas con la misma dirección, ¿significa eso que ambas claves se pueden usar para gastar el dinero?
Si y no. Ambas claves se pueden usar para gastar salidas de tx en formato pay-to-pubkey-hash (el más común). Pero si la salida tx está en formato pay-to-pubkey, entonces solo la clave privada correspondiente a la clave pública puede canjearlo.
@André Sí. Tendría mucha notoriedad si alguien notara dos firmas con diferentes claves públicas para la misma dirección en la cadena de bloques. Y para uminatsu: tiene razón, si hay un mapeo uno a uno de claves privadas a públicas. En cualquier caso, pagar un hash de clave pública le brinda 256 bits de seguridad en lugar de 160 (ambos están bien para el uso en el mundo real, por lo que el más corto es mejor para ahorrar espacio)

las claves privadas por encima del orden del grupo tienen las mismas direcciones que las claves que comienzan en 0.

0000000000000000000000000000000000000000000000000000000000000000 fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141  1MsHWS1BnwMc3tLE8G35UXsS58fKipzB7a
0000000000000000000000000000000000000000000000000000000000000001 fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364142  1EHNa6Q4Jz2uvNExL497mE43ikXhwF6kZm
0000000000000000000000000000000000000000000000000000000000000002 fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364143  1LagHJk2FyCV2VzrNHVqg3gYG4TSYwDV4m
0000000000000000000000000000000000000000000000000000000000000003 fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364144  1NZUP3JAc9JkmbvmoTv7nVgZGtyJjirKV1

...

000000000000000000000000000000014551231950b75fc4402da1732fc9bebb fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc  1HtRa3HaTfX4eDrTzkZWfnLD9cZAyhMDEd
000000000000000000000000000000014551231950b75fc4402da1732fc9bebc fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd  1FvN1jJU6kQCub9nQFuJhdfixpBdngxLme
000000000000000000000000000000014551231950b75fc4402da1732fc9bebd fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe  1JHzdjEL4xQ7yifAaQQKAfqPyAN92vfstP
000000000000000000000000000000014551231950b75fc4402da1732fc9bebe ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff  12M4QznuNZH2BRVbLK8SKvNqGTPJpCpST7
Sin embargo, los que son más grandes que el orden del grupo no son válidos, algo debe estar haciendo mod nen los números para convertirlos en una clave pública.