Was kann in einer signierten Bitcoin-Transaktion geändert werden?

Was kann in einer signierten Bitcoin-Transaktion geändert werden? Ich meine, wie ist es möglich, die Transaktion zu ändern, um ihren Hash zu ändern, aber die Transaktion gültig zu halten, ohne dass private Schlüssel signiert werden müssen?

Antworten (3)

Hier ist die Liste der bekannten Quellen der Formbarkeit von BIP62 (das zurückgezogen wurde und nicht mehr aktuell ist, aber einen Einblick gibt):

  1. DER-codierte ECDSA-Signaturen Derzeit verwendet der Bitcoin-Referenzclient OpenSSL, um Signaturen zu validieren. Da OpenSSL mehr als Serialisierungen akzeptiert, die sich strikt an den DER-Standard halten, ist dies eine Quelle der Formbarkeit. Seit v0.8.0 werden Nicht-DER-Signaturen bereits nicht mehr weitergeleitet.
  2. Nicht-Push-Vorgänge in scriptSig Jede Folge von Skriptvorgängen in scriptSig, die zu den beabsichtigten Daten-Pushs führt, aber nicht nur ein Push dieser Daten ist, führt zu einer alternativen Transaktion mit derselben Gültigkeit.
  3. Push-Operationen in scriptSig vom nicht standardmäßigen Größentyp Die Bitcoin-Skriptsprache verfügt über mehrere Push-Operatoren (OP_0, Einzelbyte-Push, Daten-Push von bis zu 75 Byte, OP_PUSHDATA1, OP_PUSHDATA2, OP_PUSHDATA4). Da die späteren das gleiche Ergebnis haben wie die ersteren, ergeben sie zusätzliche Möglichkeiten.
  4. Pushen von mit Nullen aufgefüllten Zahlen In Fällen, in denen scriptPubKey-Opcodes Eingaben verwenden, die als Zahlen interpretiert werden, können sie mit Nullen aufgefüllt werden.
  5. Inhärente Formbarkeit der ECDSA-Signatur ECDSA-Signaturen selbst sind bereits formbar: Nehmen Sie das Negative der Zahl S hinein (Modulo der Kurvenordnung), wird sie nicht ungültig.
  6. Überflüssige scriptSig-Operationen Das Hinzufügen zusätzlicher Daten-Pushs am Anfang von Skripten, die nicht vom entsprechenden scriptPubKey verbraucht werden, ist ebenfalls eine Quelle der Formbarkeit.
  7. Von Skripten ignorierte Eingaben Wenn ein scriptPubKey beispielsweise mit einem OP_DROP beginnt, wird der letzte Datenpush der entsprechenden scriptSig immer ignoriert.
  8. Auf Sighash-Flags basierende Maskierung Sighash-Flags können verwendet werden, um bestimmte Teile eines Skripts beim Signieren zu ignorieren.

(1) wurde für alle Transaktionen von BIP66 behoben, und (2)-(6) werden durch Standardregeln in neueren Bitcoin Core-Versionen verhindert. Ein Sonderfall von (7) soll von BIP147 behoben werden.

Segregated Witness (BIP141) schlägt vor, alle zu beheben, aber nur für Transaktionen, die ausschließlich von Segwit-Ausgaben ausgegeben werden. Dazu werden die scriptSig-Daten in ein neues Feld (den Zeugen) verschoben, das die txid nicht beeinflusst.

Glaubst du wirklich, dass OP deine Antwort versteht? :)
Vielleicht, vielleicht nicht. OP steht es frei, abzustimmen oder zu akzeptieren, was am informativsten ist. Aber ich beantworte nicht nur die Frage für OP, und dies kann anderen Personen, die diese Seite finden, eine detailliertere Antwort geben

Nein! Die Algorithmen werden durch den ersten von Bitcoin erstellten Block generiert. Wenn Sie also den Hash ändern, wird die Transaktion nicht erkannt und ungültig.

Transaktionen im Mempool können geändert werden.
Fällt schnell richtig aus! Glücklicherweise...

TL;DR Heute - nichts

Tatsächlich gibt es mehrere Quellen für Formbarkeit. Die meisten von ihnen (nicht alle) sind bereits durch geänderte Konsensregeln behoben, andere werden zu Transaktions-Nicht-Standards.

Aber. Bist du Angreifer oder Verteidiger?

Sie können Transaktionen erstellen, die von jeder Person manipuliert werden können, ohne sie ungültig zu machen und ohne Kenntnis Ihrer Schlüssel. Es ist leicht.

Ich werde von jemandem angegriffen, ich sehe im Netzwerk viele Kopien meiner Transaktionen. Welche sind natürlich nicht meine und ich frage mich, warum jemand das tut und wie das funktioniert?
Können Sie txid(s) bereitstellen?