¿Cómo puede importprivkey comprometer la seguridad de la billetera al importar una clave privada conocida públicamente?

Se hizo una pregunta en reddit aquí a la que respondí: https://www.reddit.com/r/Bitcoin/comments/3khrvm/how_do_i_use_private_keys_to_receive_bitcoin/

Sin embargo, luke-jr responde con:

No hagas esto. Compromete la seguridad de su billetera para importar una clave privada que otros conocen.

sin mayor elaboración. ¿Alguien puede explicar de qué está hablando?

Respuestas (2)

El problema es bastante sutil y resulta de una combinación de comportamientos.

En primer lugar, es perfectamente seguro usar la clave privada de otra persona, al menos en un sentido independiente. Suponga que la clave privada es P y la dirección pública es A , y suponga que quiere gastar su dinero. Luego, escanea la cadena de bloques en busca de salidas de transacciones que estén dirigidas a A . Cuando vea uno, cree una nueva transacción en alguna dirección de salida deseada B (ya sea que se pague a sí mismo o pague a otra persona) y fírmela con la clave privada P . No hay problemas aquí.

El problema comienza cuando hablamos de software de billetera. Si "importa" una clave privada P en su billetera, se agrega a su grupo personal de claves privadas (y sus direcciones públicas asociadas). Cada vez que realice una transacción saliente, casi siempre se le devolverá una cierta cantidad como cambio. Si el cambio va a la dirección A (con la clave privada P asociada ), entonces otras personas que conocen la clave privada P también pueden gastar este dinero. En última instancia, esto significa que si importa la clave privada de otra persona, podría perder el control de su propio dinero en algunas circunstancias.

Como han mencionado otras personas, la forma segura de manejar esta situación es "barrer" las monedas asociadas con la dirección A (usando la clave privada P ) en direcciones sobre las que tiene control exclusivo. En otras palabras, use esa clave privada para pagarse a sí mismo, pero nunca use la dirección como salida para el cambio.


Como analogía: supón que estás en un pasillo con casilleros numerados. Siempre es posible depositar dinero en cualquier casillero (solo se necesita la dirección, no la clave privada). El casillero #0 puede ser abierto tanto por tu amigo como por ti mismo. Solo tú puedes abrir los casilleros n.º 1 y n.º 2.

Si tiene dinero en efectivo en los casilleros n.° 1 y n.° 2, esto le pertenece a usted y solo a usted. Ahora, cuando realiza una transacción, saca efectivo de uno o ambos casilleros y luego devuelve algo como cambio. También puedes sacar efectivo del casillero #0, no hay problema. Pero si devuelve algo de cambio en el casillero #0, entonces pierde su control exclusivo sobre ese efectivo. Por lo tanto, solo debe devolver el cambio a sus propios casilleros n.° 1 y n.° 2, no al casillero compartido n.° 0.

Si Eve le da una clave privada que contiene Bitcoins a cambio de una pila de monedas de oro, todavía tiene una copia de la clave privada y puede recuperar los Bitcoins, dejándola con las monedas de oro y los Bitcoins.

En su lugar, dile a Eve que envíe Bitcoins a tu dirección.