¿Cómo maneja Bitcoin las colisiones de direcciones?

Dado que las direcciones son hash de una parte pública de un par de claves ECDSA público/privado, ¿qué les sucedería a dos personas diferentes con claves diferentes que tienen hash en la misma dirección? ¿Cómo se manejarían las transacciones a esas direcciones?

Respuestas (3)

En la criptografía de curva elíptica, las claves públicas se derivan de las claves privadas, con una distribución aparentemente aleatoria. Tiene razón en que dos claves privadas diferentes podrían producir dos claves públicas diferentes que casualmente generan hash en la misma dirección de Bitcoin.

Un SCRIPT_SIG de la transacción que gasta desde esa dirección debería proporcionar:

  1. Una clave pública que hash a esa dirección
  2. Una firma de la transacción producida a partir de una clave privada que coincide con la clave pública dada

Dado que dos pares de claves diferentes podrían cumplir con este criterio, cualquiera de ellos podría gastar los bitcoins.

Sin embargo, esto es muy poco probable. Tanto es así, que ni siquiera vale la pena considerarlo como una posibilidad. La mejor metáfora que he visto sobre por qué esto no es un problema se explica en este video: https://www.youtube.com/watch?v=ZloHVKk7DHk

Ambas personas tendrían acceso a cualquier fondo en la dirección. El primero en gastar estos fondos gana.

Por supuesto, es extremadamente improbable que haya tal colisión.

Como respondió @Meni, ambas personas tendrían acceso a los fondos.

Para ilustrar cuán improbable es que esto suceda alguna vez, considere el siguiente ataque simple:

while True:
    genereate new keys and address
    if address has funds:
        transfer to ME

Este ataque puede escanear una cantidad astronómica de direcciones cada día. ¡Y es tan simple que cualquiera puede llevarlo a cabo y hacerse rico! Excepto que no funciona. Si lo hiciera, la red de bitcoin colapsaría rápidamente.

La razón por la que no funciona es que el espacio de direcciones es tan grande que es extremadamente improbable que ocurra una colisión por pura casualidad (los errores en los generadores aleatorios son una historia diferente...).

Hay un buen artículo sobre el tema que explica cuán improbable es realizar un ataque de este tipo y obtener una ganancia diyhpl.us/~bryan/papers2/bitcoin/bitcoin-birthday.pdf