Warum benötigen Web-Wallets mit Multi-Signatur 1 von N Schlüsseln?

Ich habe Multi-Signatur-Transaktionen recherchiert und frage mich, wie der Titel schon sagt, warum eine Web-Wallet, die Multi-Signatur-Transaktionen (z. B. 2 von 3) anbietet, wie blockchain.info, überhaupt einen Ihrer privaten Schlüssel benötigen würde . Soweit ich weiß, sieht es so aus, als ob für 2-von-3-Adressen mit mehreren Signaturen drei öffentliche Schlüssel zum Generieren erforderlich sind und über Rohtransaktionen ausgegeben werden.

Warum erlauben Ihnen diese Dienste nicht, alle drei Schlüssel zu behalten?

Gibt es einen Grund, warum einer der Schlüssel vom Wallet-Anbieter aufbewahrt werden muss? Es scheint, dass keiner der Schlüssel in der Brieftasche des Anbieters sein muss, solange er verfügbar ist, um die Rohtransaktion vor dem Senden zu signieren – und theoretisch könnte die Rohtransaktion vom Client im Browser erstellt und übermittelt werden für die Übertragung über senddrawtransaction, ohne den Anbieter in irgendeiner Weise außer der reinen Konnektivität mit dem Netzwerk einzubeziehen.

Was vermisse ich?

Antworten (1)

Soweit ich weiß, sieht es so aus, als ob für 2-von-3-Adressen mit mehreren Signaturen drei öffentliche Schlüssel zum Generieren erforderlich sind

Gefordert sind private Schlüssel, die öffentlichen Schlüssel sind nun einmal öffentlich: Jeder kennt sie. Ein 2-aus-3-Skript erfordert, dass zwei beliebige der drei erwähnten Schlüssel benötigt werden, und Sie können Variationen davon verwenden, z. B. 2 aus 2, 3 aus 3, 1 aus 3 usw.

werden über Rohtransaktionen ausgegeben

Es ist auch nichts wert, dass „Rohtransaktionen“ nur ein Begriff ist, der in Bitcoin Core verwendet wird, wenn es um etwas geht, das nicht Pay to Pubkey Hash ist, es ist ziemlich bedeutungslos, es sei denn, Sie sprechen über den Client selbst.

Warum erlauben Ihnen diese Dienste nicht, alle drei Schlüssel zu behalten?

Die Absicht bei Multi-Signatur-Wallets ist, dass mehrere Parteien eine Transaktion autorisieren müssen. Bei diesem Modell hätten Sie ein 2-von-2-System, bei dem es zwei Parteien gibt und beide unterschreiben müssen, um die entsprechenden Mittel auszugeben. Diese hat folgende Eigenschaften:

  • Der Dienst kann dem Benutzer das Geld nicht direkt stehlen, da der Benutzer die Transaktion auch unterschreiben muss.

  • Dem Benutzer können von Dritten Einschränkungen auferlegt werden, z. B. dass er keine Transaktionen unterzeichnet, die mehr als 10 US-Dollar pro Tag ausgeben, oder ohne dass eine zusätzliche Autorisierung erforderlich ist.

  • Transaktionen können so erstellt werden, dass, wenn der Dienst sich weigert, Transaktionen zu signieren (den Benutzer zufällig wählt oder das Geschäft aufgibt), nach einer beträchtlichen Zeitspanne die Anforderung auf nur eine einzige Unterschrift des Benutzers reduziert wird.

Mit diesen Eigenschaften können Sie sehr leistungsfähige Systeme mit beliebigen Ausgabenanforderungen erstellen, ohne den Verlust von Geld zu riskieren, indem Sie Ihr gesamtes Geld an andere weitergeben.

Im Fall von Web-Wallets ist dieses System jedoch fast vollständig Schlangenöl-Kryptografie, da der Drittanbieter auch derjenige ist, der den Benutzern den Code zustellt. Sie können dies jederzeit in einen anderen Code ändern, der ihnen nur die privaten Schlüssel zurücksendet, oder jede gewünschte Transaktion blind signieren. Angesichts dieser Eigenschaft gibt es absolut keine Möglichkeit, Web Wallets sicher zu machen.

Warum erlauben Ihnen diese Dienste nicht, alle drei Schlüssel zu behalten?

Dann wäre es sinnlos, Multisignatur-Transaktionen zu haben, bei denen eine Partei alle Schlüssel hält, es würde viel weniger kosten, nur normale Transaktionen zu verwenden. Multisignatur-Skripte haben im Vergleich zu regulären Transaktionen tendenziell deutlich höhere Kosten für die Nutzung.

Entschuldigung, ich hätte klarer sein sollen - Sie benötigen N öffentliche Schlüssel, um eine Multisignatur-Adresse zu erstellen (einzelne Adressen selbst sind Hashes der öffentlichen Schlüssel, die nicht von der Adresse abgeleitet werden können, weshalb Sie ohne keine Multisignatur-Adresse erstellen können Zugriff auf den privaten Schlüssel und damit den eigentlichen öffentlichen Schlüssel haben), wenn ich mich nicht irre. Die kurze Antwort auf meine Frage, bei der die Frage der Sicherheit des Codes, der dem Benutzer zugestellt wird, außer Acht gelassen wird, lautet also, dass es keinen Grund gibt, dass der Dienst einen der privaten Schlüssel speichern muss, wenn er einfach als Vollknoten-Proxy fungiert , Korrekt?
Als Nebenfrage unterscheidet sich die Situation mit der Code-Sicherheit wirklich so sehr von der Tatsache, dass Sie vertrauen, wenn Sie eine tatsächliche Desktop-Wallet von einer Drittanbieterquelle erwerben, anstatt selbst eine zu bauen (vielleicht buchstäblich aus dem Nichts). die Quelle bis zu einem gewissen Grad, um mit Ihrem Geld richtig umzugehen?
Was ist gefährlicher, das Herunterladen einer Wallet-Binärdatei oder das Herunterladen einer Wallet-Binärdatei ohne Validierung oder Verifizierung bei jedem Öffnen der Anwendung? Web-Wallets sind ein kaputtes Konzept, das von niemandem verwendet werden sollte.
Das Multi-Signatur-Bit ist irrelevant, wenn der Benutzer alle Schlüssel auf einem Gerät besitzt, aber er kann problemlos Multisig zwischen mehreren seiner eigenen Geräte durchführen, wenn er möchte. Sie können öffentliche Schlüssel für ein HD-Wallet ohne die privaten Schlüssel erstellen, siehe BIP32. P2SH-Adressen werden oft für Multisignatur-Skripte verwendet, aber sie können auch alles andere enthalten, es gibt keine Multisig-Adresse.
Mir ist bewusst, dass P2SH-Adressen buchstäblich Skripte sind - ich war nur an der Multisig-Implementierung interessiert und bezog mich nicht auf BIP32. Ich sehe immer noch keine einfache Antwort auf meine Kernfrage: Gibt es einen Grund dafür, dass sich mindestens einer der privaten Schlüssel in einer P2SH-Adresse in der Brieftasche des Clients befinden muss , der die Übertragung abwickelt, oder sie als zusätzliche Parameter weitergibt? zu einer Rohtransaktion ausreicht, und gibt es daher einen Grund, warum der Client-Dienst im einfachsten Anwendungsfall einer Proxy-Transaktion überhaupt einen der privaten Schlüssel benötigt, verschlüsselt oder nicht, die auf diesem Dienst gespeichert sind?
Es ist schwierig, Ihre Kompetenz einzuschätzen, wenn Sie Fachterminologie absichtlich falsch verwenden. Was ist "Abwicklung der Überweisung"? Das Verschieben einer Transaktion erfordert keine Signaturen, das Erstellen des Skript-Hashes erfordert die öffentlichen Schlüssel, das Signieren einer Ausgabe mit diesem p2sh-Skript erfordert den/die relevanten privaten Schlüssel, für die sie signieren, aber nicht die anderen. Sie können bei Bedarf teilweise signierte Transaktionen zwischen Parteien weitergeben.