Entiendo que una dirección de bitcoin es una combinación o más de un tipo de cifrado y entropía, y también entiendo cuán improbable es que se genere la misma dirección al mismo tiempo.
Aunque las claves privadas serán diferentes, esto no alivia mis preocupaciones.
Si la persona A envía a un pagador su dirección pública, ¿cómo sabrá la red que no debe enviarla a la dirección de la persona A y de la persona B?
Tal vez solo estoy teniendo un error de juicio aquí, y que la clave pública debe derivarse de la clave privada y hash160 y, por lo tanto, no se puede generar una dirección pública sin la misma clave privada
La red no puede notar la diferencia. En el caso astronómicamente improbable de que dos personas diferentes tengan claves privadas cuyas claves públicas tienen un hash en la misma dirección pública, ambos pueden gastar las monedas enviadas a esa dirección, por orden de llegada.
Para ilustrar cuán improbable es esto: supongamos que cada satoshi de cada bitcoin que se generó alguna vez se envió a sus propias claves privadas únicas. La probabilidad de que entre esas claves haya dos que correspondan a la misma dirección es aproximadamente una en 100 quintillones.
Por supuesto, la probabilidad es solo "astronómicamente improbable" si las claves privadas se generan verdaderamente al azar. Si no lo son, entonces puede haber más posibilidades de que alguien más pueda adivinar la clave privada. Cualquiera que lo haga puede gastar las monedas enviadas a esa dirección. Eso fue lo que sucedió con esta vulnerabilidad .
Una actividad divertida, análoga a "dejar un billete de un dólar en la calle y ver quién lo recoge", es crear una clave privada que sea un número entero muy pequeño. Luego envíe alguna suma trivial de dinero a la dirección correspondiente. Parece que hay una cantidad de personas que miran esas direcciones para que pueda ver quién logra obtenerlas primero (pasándolas a una dirección más segura que controlan).
Como dato curioso, me gustaría agregar que, si toma la cadena nula como la clave pública y la codifica, obtendrá la dirección 1HT7xU2Ngenf7D4yocz2SAcnNLW7rK8d4E
, que contiene alrededor de 69,77 bitcoins. Desafortunadamente, esos son indiscutibles, ya que la dirección probablemente se genera por algún error de software y probablemente no tenga ninguna clave privada asociada.
Fuente: Criptografía de curva elíptica en la práctica, página 11
Una clave pública corresponde a una clave privada, que es solo un número entero muy grande.
En lo que respecta a la red, cualquier persona que tenga la clave privada de los fondos en una dirección puede gastarlos. La única prueba de propiedad es que debido a cómo funciona la criptografía de clave pública, private key ==> public key/public address
está bien, no se puede calcular lo contrario.
Si tiene la clave privada de los fondos en una dirección y, por casualidad, un cliente entrega la misma clave privada, puede gastar las monedas. Sin embargo, asumiendo números aleatorios, esto nunca sucederá.
Nate Eldredge
david schwartz
Madzi Konjo