¿Es posible que alguien verifique que una billetera es suya sin proporcionar su clave privada?

Necesito saber con 100% de certeza que alguien me puede decir "esta es mi billetera" y me lo demuestra. Por supuesto, podría simplemente obtener su clave privada/frase de brainwallet, ¿hay alguna otra forma de hacerlo?

Para ser exactos, no está obteniendo una prueba de "esta es mi billetera" en el sentido análogo a "esta es mi cuenta": está obteniendo una prueba de "en este momento, yo [junto con posiblemente otros] tengo control de esta billetera". Por lo general, significará lo mismo, pero no siempre; por ejemplo, no significa necesariamente que ayer esta era su billetera, y tampoco implica que usted autorice cualquier transacción futura y no otra persona que también tenga las claves. .

Respuestas (2)

Sí, puede usar "Firma de mensajes", disponible en la mayoría de los clientes de Bitcoin, incluido el núcleo de Bitcoin. Si firmo con mi dirección el mensaje "Soy Meni Rosenfeld y estoy demostrando al usuario 127317 que esta es mi dirección", puedes estar seguro de que es la mía.

¡Buena idea! ¿Algún problema con las direcciones multifirma?
@ user127317: Buena pregunta, no estoy seguro de cómo se manejarían. En teoría, al menos debería poder firmar el mensaje por separado con cada clave asociada con la dirección.

Sí. Bitcoin usa criptografía de clave asimétrica, por lo que el enfoque natural es hacer que el usuario use (en lugar de revelar) su clave secreta de una manera que pueda verificarse usando solo la clave pública. La única desventaja es que se revelará la clave pública; en cierto sentido, Bitcoin es incluso más seguro que la mayoría de los otros usos de la criptografía de clave asimétrica, ya que esto solo ocurre después de que se realiza una transacción o una firma a partir de la clave privada de una dirección de bitcoin. Pero la idea general es que la criptografía de clave asimétrica sigue siendo segura si la clave pública es realmente pública (y a menos que haya grandes avances en matemáticas o física, como una gran computadora cuántica, eso debería seguir siendo cierto).

La forma más trivial de hacer esto es pedirle al usuario que desee probar su propiedad de una dirección de Bitcoin para mover bitcoins desde ella. Si puede cumplir, obviamente tiene control sobre ello, o engañó a otra persona para que los moviera. Entonces, si realmente busca un 100% de certeza, tendría que solicitar que todos los bitcoins en esa dirección se transfieran a una de sus direcciones (creada específicamente solo para esta transacción), presumiblemente con la promesa de que los devolvería inmediatamente. Eso sigue siendo un poco mejor que pedirle al cliente que revele su clave privada, lo que le permitiría tomar posesión de cualquier Bitcoin en esa dirección en cualquier momento, no solo durante esta verificación única. Sin embargo, la única ventaja real de este esquema es que no tendrá que explicar mucho porque cualquier usuario de Bitcoin sabrá cómo transferir bitcoins.

Hay otra opción, las firmas, que Meni Rosenfeld ya ha explicado en su respuesta. Cualquier cliente de Bitcoin le permitirá a un usuario crear firmas personalizadas, pero es posible que deba educarlos al respecto porque aún no es una característica de uso común. Hay otro problema de usabilidad en el sentido de que la firma no se transmite automáticamente, por lo que debe pedirle al usuario que la comparta (es decir, copiarla y pegarla). Finalmente, solo puede verificar si el usuario ha firmado el mensaje exacto que le pidió con la dirección de Bitcoin que esperaba; hay poco que pueda hacer para ayudar a solucionar el problema si resulta que esto no es lo que hizo, aparte de reiterar que necesitará exactamente el mismo texto sin ediciones, saltos de línea adicionales, etc.

A pesar de estas barreras prácticas para el uso de firmas, tienen enormes ventajas, no solo que nunca necesita que le confíen los bitcoins, sino también el no repudio: puede solicitar cualquier tipo de declaración (como en el ejemplo de Meni Rosenfeld) , y al firmarlo, probablemente (aunque no soy abogado) logre el no repudio, ya que solo las personas que tienen la clave privada de la dirección de Bitcoin utilizada para firmar pueden crear dicha firma. Entonces, si algo llega a los tribunales, a la persona que firmó la declaración le resultará muy difícil respaldar cualquier afirmación de que alguien más creó la firma; después de todo, tendría que decir que no es su dirección de Bitcoin, o bien que su billetera fue robada pero el hacker no se molestó en tomar su Bitcoin, sino que simplemente creó esta firma en su lugar.

¿Qué podemos hacer en el caso de direcciones segwit?