clave pública de bitcoin frente a hash de clave pública frente a clave de pub [duplicado]

No estoy hablando de las preocupaciones relacionadas con la privacidad, solo del aspecto de seguridad y la capacidad de que alguien "rompa mi clave privada".

Las direcciones que genera mi billetera son direcciones p2pkh. Si uso el núcleo de bitcoin y hago 'validateaddress', obtengo un json blob que incluye 'pubkey'.

Si tuviera una base de datos que tuviera un montón de claves públicas, no p2pkh sino la "clave pública" de la dirección de validación, y esa base de datos fuera violada, ¿estarían en riesgo todos los utxos en la billetera original? (Supongamos que la billetera está almacenada en frío y no está conectada a Internet). Lo único en esa base de datos sería la(s) clave(s) pública(s).

Si este es el caso... ¿por qué pasamos por el proceso de crear direcciones p2pkh en primer lugar? ¿Es solo por estética, menos bytes en la transacción, solo por privacidad o hay una razón real de seguridad?

Finalmente, es esta "clave pública" la que valida una dirección, ¿por qué necesitaríamos un p2pk en primer lugar (a menos que sea literalmente por la razón equivalente de "mejorar" a un p2pkh desde p2pk).

Gracias

Esto es diferente de la pregunta publicada en el primer comentario, ya que me refiero únicamente a las ramificaciones de seguridad. Es decir, no hay nada más inherentemente seguro al usar SHA256 +RipeMD para codificar una clave pública que simplemente usar la clave pública en sí.

He leído ese hilo pero no responde la pregunta. Como señalé, el factor obvio de privacidad, tamaño y conveniencia. Ese hilo no implica nada en cuanto a las ramificaciones de seguridad.

Respuestas (1)

Ofrezco mis pensamientos más sobre la privacidad que sobre el riesgo:

Si tuviera una base de datos que tuviera un montón de claves públicas... ¿estarían en riesgo todos los utxos en la billetera original?

AFAIK no, para transacciones P2PKH. El sistema bitcoin tiene un mecanismo de bloqueo y desbloqueo. El bloqueo se realiza con el script pubkey: el autor de un tx define el objetivo (a quién debe ir el tx) y las condiciones de gasto. Esto es donde en P2PKH tx va el hash de la clave pública. La condición de gasto es entonces s.th. como este "debe proporcionar un valor, que cuando se convierte en hash, es igual al hash de clave pública proporcionado en esta transacción". Por lo general, esto solo puede ser proporcionado por el autor original de una transacción. Con una base de datos perdida, ahora cualquiera podría crear una transacción de este tipo, ¡pero no firmarla! Cuando el tx cumpla con la condición de gasto, el tx debe firmarse (y la clave pública se proporciona en formato hexadecimal).

Entonces, si se divulga su base de datos, se puede entender el mecanismo de bloqueo para P2PKH tx. Sin embargo, el desbloqueo está en el sigscript de la transacción, y solo con la base de datos robada es posible que no proporcione una firma válida, ya que necesita la clave privada correspondiente para la firma.

Más sobre el bloqueo/desbloqueo, por ejemplo, en el libro de Andreas "Dominar Bitcoin" en la sección 6 "Transacciones".

Si este es el caso... ¿por qué pasamos por el proceso de crear direcciones p2pkh en primer lugar? ¿Es solo por estética, menos bytes en la transacción, solo por privacidad o hay una razón real de seguridad?

Junto a la respuesta en el enlace de Pieter Wuille, vería que las direcciones P2PKH ayudan a mantener la privacidad hasta el punto, cuando finalmente se gasta el tx, porque los hashes no son reversibles (según el conocimiento actual).