Ich möchte eine ECDSA-Signatur erstellen, {r,s}
die r
sehr niedrig ist (z. B. 1
) und im DER-Format in einem Byte codiert werden kann.
Wie berechnet man den k
Wert? Scheint mir, dass es von nichts abhängt. Was ist der Wert dessen, k
was produziert r=1
?
Hinweis: Ich mache mir keine Sorgen um die Sicherheit meines privaten Schlüssels, während ich diese Signatur veröffentliche.
Was ist der Wert dessen,
k
was produziertr=1
?
Das kann man nicht wissen. Wenn Sie r
beliebige Werte ableiten könnten, wäre ECDSA grundlegend kaputt. Das Beste, was Sie tun können, ist zu schleifen k
, bis Sie eine erhalten r
, die zufällig eine kurze Codierung hat.
Wegen der Übung:
k: 55573144136627188774517374788342221967869962622835886499477787746883063622036
r: 771676860789419846973923839003663416737624455477806040640071960112246091
Diese Nonce ist etwas kleiner als die meisten, wenn sie verschlüsselt ist, aber wenn Sie versuchen, sie in einer Signatur zu verwenden, haben Sie natürlich Ihren privaten Schlüssel offengelegt . Wenn Sie dies heimlich generieren, können Sie den k
Wert nur einmal verwenden und das Ergebnis kann bestenfalls ein paar Bytes Unterschied in der codierten Transaktion sein.
Es scheint sich kaum zu lohnen, um ehrlich zu sein.
die kürzesten ecdsa secp256k1 ausgänge die ich je gesehen habe
x value = 3b78ce563f89a0ed9414f5aa28ad0d96d6795f9c63
0x7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0 --> 0x3b78ce563f89a0ed9414f5aa28ad0d96d6795f9c63, 0x3f3979bf72ae8202983dc989aec7f2ff2ed91bdd69ce02fc0700ca100e59ddf3
0x7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a1 --> 0x3b78ce563f89a0ed9414f5aa28ad0d96d6795f9c63, 0xc0c686408d517dfd67c2367651380d00d126e4229631fd03f8ff35eef1a61e3c
in Ihrer ecdsa-Funktion, wenn Sie verwenden
p = 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141
dann können Sie die obigen Ergebnisse mit ableiten
((p-1)/2) = 0x7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0
oder
((p+1)/2) = 0x7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a1
Wenn es etwas Kleineres gibt, würde ich mich freuen, es zu sehen.
Bearbeiten
Aufgrund von Kommentaren wurde ich auf einen Testnet-Tx verwiesen, der darauf hindeutet, dass Sie möglicherweise R = 1 erhalten können. danke an amaclin.
testnet tx c6c232a36395fa338da458b86ff1327395a9afc28c5d2daa4273e410089fd433
dieser tx scheint zu validieren, es gibt auch andere, c42bea01f1387072772759f32ad860a680e0eea5664732bf2057a66780e7a25d 23202c2534be0567d4b339142f8a9a53545123eb61f61717eb61f61717f3dedbef0.effc5f3dedbef0.effc5f3dedbef0.effc5f3dedbef0
vielleicht sogar mehr, bitte fügen Sie Kommentare hinzu, wenn ja.
wenn ich die Signatur des öffentlichen Schlüssels validiere
026d2204a9535443657a88a0724fbd49a0e78d305f50a82f2cc9dd9bea10a6c5cd
entnommen aus dem testnet tx
c6c232a36395fa338da458b86ff1327395a9afc28c5d2daa4273e410089fd433
es gibt diesen Punkt, wo x = 1 ist
(0x01, 0xbde70df51939b94c9c24979fa7dd04ebd9b3572da7802290438af2a681895441)
Obwohl ich nicht verifizieren kann, dass dieser Punkt tatsächlich auf der sep256k1-Kurve liegt, scheint er sich so zu verhalten, also ist dies ein sehr interessanter Punkt.
wenn ich diesen Punkt mehrmals mit 0x5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72 multipliziere ( Lambdawert von hier )
es erzeugt diesen Zyklus von Punkten (3 Punkte mit demselben Y)
(0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee, 0xbde70df51939b94c9c24979fa7dd04ebd9b3572da7802290438af2a681895441)
(0x851695d49a83f8ef919bb86153cbcb16630fb68aed0a766a3ec693d68e6afa40, 0xbde70df51939b94c9c24979fa7dd04ebd9b3572da7802290438af2a681895441)
(0x01, 0xbde70df51939b94c9c24979fa7dd04ebd9b3572da7802290438af2a681895441)
Wenn ich dasselbe mit der Umkehrung des Punktes mache, bekomme ich diese (Umkehrungen von oben)
(0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee, 0x4218f20ae6c646b363db68605822fb14264ca8d2587fdd6fbc750d587e76a7ee)
(0x851695d49a83f8ef919bb86153cbcb16630fb68aed0a766a3ec693d68e6afa40, 0x4218f20ae6c646b363db68605822fb14264ca8d2587fdd6fbc750d587e76a7ee)
(0x1, 0x4218f20ae6c646b363db68605822fb14264ca8d2587fdd6fbc750d587e76a7ee)
Der X-Wert
0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee
In einigen dieser Ergebnisse ist auch der Beta-Wert von hier enthalten
Klaris
r=1
ist im selben Kontext wie die meisten kryptografischen Annahmen in Bezug auf Suchräume "unmöglich". Es könnte möglich sein, diesen Wert zu finden, wenn Sie jedes Stück Materie im nahen Universum in einen Computer verwandeln würden, aber der Aufwand dafür ist so unangemessen groß, dass es für niemanden praktikabel ist, es zu versuchen. Es ist auch möglich, eine Brieftasche zu erstellen, die eine einzelnek
so oft wie möglich wiederverwendet (und das Signieren von Transaktionen nicht trivial beschleunigen würde), aber dies ist viel zu gefährlich, um es jemals zu verwenden, und wird daher in einem ernsthaften Gespräch nie vorgeschlagen.Amaclin
Klaris
Amaclin
k
Wert verwenden, um meine Transaktionen zu signierenKlaris
Amaclin
Markus Lundeberg