-
Notifications
You must be signed in to change notification settings - Fork 20.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adding deterministic signatures (RFC6979)? #2190
Comments
Not at the moment. Is there a reason why you're asking? Are you working with a device which does not contain proper random number generators? |
Reference http://tools.ietf.org/html/rfc6979 |
Deterministic signatures are nice in that you can confine your reliance of random numbers to only the generation of your private key(s). If you use dice to generate your private keys and have a deterministic signature algorithm then you can be sure that you are not exposed to potentially bad RNGs. It's common to boot from a live CD or virtual machine when doing cold storage and those environments can suffer from low entropy in some cases. Lastly it's nice to be able to do regression testing of your signature code (i.e. same signature every time), and/or comparing your signatures with signatures from other implementations. |
Gotta agree with the last point about testing. Some of the network tests could be simpler if signatures where deterministic. A potential downside is that tx resubmission would be harder. Right now you can force rebroadcasting of a transaction by signing it multiple times. Since the signature is random, you'll get a different tx hash every time. |
I can see deterministic k to be nice for 1 (and therefor 2), worth investigating further. |
I agree for 2 reasons:
|
solution: move to a deterministic k-value using RFC6979 rel ethereum/go-ethereum#2190 rel ethereum/go-ethereum#3561 rel #245
It seems that currently we are using a random k-value in the ECDSA algorithm:
https://github.com/ethereum/go-ethereum/blob/develop/crypto/secp256k1/secp256.go#L138
Is there interest in moving to a deterministic k-value using RFC6979?
Quick googling found this go library:
https://github.com/codahale/rfc6979
The text was updated successfully, but these errors were encountered: