p2pkh vs. p2pk hält den öffentlichen Schlüssel privat

Ich habe gerade angefangen, die Bitcoin-Programmierung durch Jimmy Songs Programming Bitcoin zu lernen . Jimmy sagt, dass einige der Vorteile von p2pkh gegenüber p2pk sind:

  1. ein kleinerer ScriptPubKey

  2. seinen öffentlichen Schlüssel privat zu halten

Ich stimme dem ersten Vorteil vollkommen zu, aber ich habe ein wenig Probleme mit dem zweiten Vorteil.

Jimmy erklärt, dass man Bitcoin von einer anderen Entität stehlen könnte, wenn ECDSA gebrochen wäre, weil sie ihren öffentlichen Schlüssel im ScriptPubKey finden könnten (wenn sie p2pk verwenden würden) und eine gültige Signatur erstellen könnten.

Meine Frage ist: Wenn wir nur den öffentlichen Schlüssel vom ScriptPubKey zum ScriptSig verschieben, welche Sicherheit gewährt uns das, wenn auch auf das ScriptSig zugegriffen werden kann? Wenn ich ein UTXO ausgeben würde, das zu meinem öffentlichen Schlüssel-Hash gemacht wurde, wäre mein öffentlicher Schlüssel öffentlich. Könnte ein böswilliger Benutzer, der ECDSA gebrochen hat, nicht weiter nach einem UTXO ScriptPubKey mit meinem Hash darin suchen, meinen öffentlichen Schlüssel aus der vorherigen Transaktion kopieren, eine Signatur generieren und meine Bitcoin stehlen? Es scheint mir, dass mein öffentlicher Schlüssel privat ist, solange ich nichts ausgebe.

Natürlich weiß ich, dass mir etwas fehlt :) Jede Hilfe ist willkommen.

Sie haben Recht, der öffentliche Schlüssel wird erst nach der Ausgabe von der Adresse offengelegt, davor ist nur der Hash des öffentlichen Schlüssels sichtbar. Dies ist einer der Gründe, warum Sie dieselbe Adresse nicht wiederverwenden sollten, sondern jedes Mal, wenn Sie Coins erhalten möchten, eine neue Adresse generieren und Ihr Wechselgeld jedes Mal an eine neue Adresse senden sollten.

Antworten (1)

Bitcoin-Adressen und damit auch der öffentliche Schlüssel sollten idealerweise immer nur einmal verwendet werden. Ihre Zeit der Offenlegung des öffentlichen Schlüssels in P2PKH ist also die Zeit zwischen der Ausgabe und der Bestätigung. Bei P2PK ist der öffentliche Schlüssel immer allen bekannt. Es gibt einen beträchtlichen Unterschied zwischen den beiden.

Gotcha, also muss der Empfänger einer Transaktion vor jeder Transaktion seinen öffentlichen Schlüssel an den Zahler übermitteln? Scheint ein Ärgernis zu sein, wenn es viele kleine Transaktionen zwischen ihnen gibt ...
Ihre Adresse, ja, nicht der öffentliche Schlüssel.
Ich denke, dieser Vorteil, den Pubkey geheim zu halten, ist bestenfalls marginal und eher eine Illusion. So ziemlich alles, was über einfache Zahlungen hinausgeht (Multisig, Lightning, ...), beinhaltet das Teilen Ihrer öffentlichen Schlüssel mit nicht vollständig vertrauenswürdigen Parteien. Die Sicherheit von Bitcoin beruht darauf, dass ECDSA unzerbrechlich ist, selbst wenn öffentliche Schlüssel offengelegt werden; "Pubkeys sind nur kurz ausgesetzt ist von Vorteil" ist für mich Cargo-Kult.
Ich bin nicht anderer Meinung. Es ist eine nette Nebeneigenschaft von Adressen, die bestenfalls nicht wiederverwendet werden, sondern etwas, das ausdrücklich erwünscht ist.
Rechts; Natürlich ist es nie ein Verlust, den öffentlichen Schlüssel länger verborgen zu halten, und es gibt möglicherweise einige Fälle, in denen er einen kleinen Vorteil bringen kann. Das Ausmaß, in dem an einigen Stellen darüber gesprochen wird, lässt es jedoch nach einer viel größeren Sache klingen, als es ist.