Wie können Transaktionen ohne den privaten Schlüssel verifiziert werden?

Ich versuche, mich hier mit ihrem königlichen Bitcoin vertraut zu machen ...

Ich verstehe, dass Transaktionsblöcke an das Netzwerk gesendet werden und dass Miner überprüfen, ob der BC „ausgeben“ ist, indem sie die Blockchain durchforsten und den Transaktionsverlauf der Wallet-Adresse verfolgen (oder zumindest gehe ich davon aus, dass es so funktioniert).

Aber wie überprüft man eigentlich, ob die BC-Transaktion von ihrem Besitzer signiert wurde, wenn die Miner keinen Zugriff auf den privaten Schlüssel haben? Einfacher ausgedrückt: Wie kann eine Verifizierung stattfinden, ohne dass sowohl der öffentliche als auch der private Schlüssel verarbeitet werden?

Ich verstehe die PKI-Verschlüsselung wahrscheinlich falsch, aber (sagen wir) mit SSH würde sich der private Schlüssel auf einem vertrauenswürdigen Server befinden und die Überprüfung würde auf diesem Server stattfinden. Wie kann das in einem verteilten Netzwerk funktionieren?

SSH verwendet Public-Key-Kryptographie in zwei Kontexten: Clients beweisen dem Server, dass sie die sind, für die sie sich ausgeben, und Server, die Clients beweisen, dass sie die sind, für die sie sich ausgeben. Mit welchem ​​​​versuchst du eine Analogie herzustellen?
@NickODell Ich war mit dieser Analogie etwas engstirnig. Ich habe vergessen, dass der private Schlüssel nie wirklich an den Server gesendet wird; Es wird einfach verwendet, um eine überparteiliche Nachricht zwischen den Maschinen zu verschlüsseln.

Antworten (2)

Bitcoin-Transaktionen sind nicht verschlüsselt, sie sind kryptografisch signiert.

Sie können ein öffentliches/privates Schlüsselpaar auf zwei Arten verwenden: (massive Vereinfachungswarnung)

  • Verschlüsseln Sie eine Nachricht mit einem öffentlichen Schlüssel und entschlüsseln Sie sie dann mit einem privaten Schlüssel
  • Signieren Sie eine Nachricht mit einem privaten Schlüssel und validieren Sie die Signatur mit dem öffentlichen Schlüssel

Die zweite Methode wird von Bitcoin verwendet. Im Distributed Ledger wird eine Nachricht abgelegt, dass Bitcoins von X an Y (und typischerweise Z) gesendet und mit dem privaten Schlüssel von X signiert wurden. X ist die Quell-Bitcoin-Adresse, Y ist das Ziel und Z ist die Änderungsadresse .

Beachten Sie vielleicht sogar, dass der Algorithmus, der für Signaturen von Bitcoin (ECDSA) verwendet wird, nicht einmal für die Verschlüsselung verwendet werden kann. Viele Leute denken, Signieren sei „einfach mit dem privaten Schlüssel anstelle des öffentlichen Schlüssels verschlüsseln“, aber das funktioniert nur für RSA.

Bitcoin scriptSigs tragen alles, was sie brauchen, um den scriptPubKey zu erfüllen, der eine Ausgabe belastet. Als solche gelten sie als staatenlos, dh in sich abgeschlossen.

Immer wenn eine Signatur verifiziert werden muss, wird der öffentliche Schlüssel im Skript offengelegt und gibt anderen Knoten das, was sie zum Validieren der Transaktion benötigen.