Bitcoin Public Key vs. Public Key Hash vs. Pub Key [Duplikat]

Ich spreche nicht von den Datenschutzbedenken, sondern nur vom Sicherheitsaspekt und der Möglichkeit, dass jemand „meinen privaten Schlüssel knackt“.

Die Adressen, die mein Wallet generiert, sind p2pkh-Adressen. Wenn ich den Bitcoin-Kern verwende und 'validateaddress' mache, bekomme ich einen json-Blob zurück, der 'pubkey' enthält.

Wenn ich eine Datenbank mit einer Reihe öffentlicher Schlüssel hätte, nicht p2pkh, sondern den "Pubkey" von validateaddress, und diese Datenbank verletzt werden würde, wären dann alle Utxos in der ursprünglichen Brieftasche gefährdet? (Nehmen wir an, die Brieftasche befindet sich im Cold Storage und ist nicht mit dem Internet verbunden). Das Einzige, was in dieser Datenbank enthalten wäre, wären die Pubkeys.

Wenn dies der Fall ist ... warum durchlaufen wir überhaupt den Prozess der Erstellung von p2pkh-Adressen überhaupt? Ist es nur aus ästhetischen Gründen, weniger Bytes in der Transaktion, nur aus Datenschutzgründen, oder gibt es einen tatsächlichen Sicherheitsgrund?

Schließlich ist dieser "Pubkey", der eine Adresse validiert, warum sollten wir überhaupt ein p2pk brauchen (es sei denn, es ist buchstäblich aus dem gleichen Grund, von p2pk zu einem p2pkh zu "verbessern").

Danke

Dies unterscheidet sich von der im ersten Kommentar geposteten Frage, da ich nur über Sicherheitsaspekte spreche. IE .. es gibt nichts inhärent Sichereres, wenn SHA256 + RipeMD verwendet wird, um einen öffentlichen Schlüssel zu hashen, als nur den öffentlichen Schlüssel selbst zu verwenden.

Ich habe den Thread gelesen, aber er beantwortet die Frage nicht. Wie ich auf den offensichtlichen Datenschutz, die Größe und den Komfortfaktor hingewiesen habe. Dieser Thread impliziert nichts über die Auswirkungen auf die Sicherheit.

Antworten (1)

Ich mache meine Gedanken mehr zum Datenschutz als zum Risiko:

Wenn ich eine Datenbank mit einem Haufen öffentlicher Schlüssel hätte ... wären alle Utxos in der ursprünglichen Brieftasche gefährdet?

AFAIK nein, für P2PKH-Transaktionen. Das Bitcoin-System verfügt über einen Verriegelungs- und Entriegelungsmechanismus. Das Sperren erfolgt mit dem Pubkey-Skript: Der Autor einer tx definiert das Ziel (an wen die tx gehen soll) und die Ausgabebedingung(en). Dies ist, wo in P2PKH tx der Hash des öffentlichen Schlüssels geht. Die Ausgabebedingung ist dann etw. so "Sie müssen einen Wert angeben, der beim Hashen dem bereitgestellten Hash des öffentlichen Schlüssels in dieser Transaktion entspricht". Normalerweise kann dies nur vom ursprünglichen Autor einer Transaktion bereitgestellt werden. Mit einer verlorenen Datenbank könnte jetzt jeder eine solche Transaktion erstellen, aber nicht signieren! Wenn dann der tx die Ausgabebedingung erfüllen soll, muss der tx signiert werden (und der Pubkey wird im Hex-Format bereitgestellt).

Wenn also Ihre Datenbank offengelegt wird, kann der Sperrmechanismus für P2PKH tx verstanden werden. Allerdings steht die Entsperrung im Sigscript der Transaktion, und gerade bei der gestohlenen Datenbank kann es sein, dass Sie keine gültige Unterschrift leisten, weil Sie den entsprechenden privaten Schlüssel für die Unterschrift benötigen.

Mehr zum Sperren/Entsperren zB in Andreas' Buch „Mastering Bitcoin“ im Abschnitt 6 „Transaktionen“.

Wenn dies der Fall ist ... warum durchlaufen wir überhaupt den Prozess der Erstellung von p2pkh-Adressen überhaupt? Ist es nur aus ästhetischen Gründen, weniger Bytes in der Transaktion, nur aus Datenschutzgründen, oder gibt es einen tatsächlichen Sicherheitsgrund?

Neben der Antwort im Link von Pieter Wuille würde ich sehen, dass P2PKH-Adressen dazu beitragen, die Privatsphäre bis zu dem Punkt zu wahren, an dem der TX endgültig ausgegeben wird, da Hashes nicht umkehrbar sind (nach heutigem Kenntnisstand).