Comments (2)
This crate implements a deterministic version of SM2DSA based on RFC6979, similar to the deterministic implementation of ECDSA in the ecdsa
crate.
The security of both ECDSA and SM2DSA relies on the generation of the k
scalar used to compute a signature being unique per message and uniformly random with no bias. If there is a bias, lattice attacks can be used to recover the private key.
ECDSA has failed many times in practice in high profile applications because of bad selection of k
, which is what RFC6979 aims to prevent by using HMAC-DRBG as an unbiased pseudorandom number generator. SM2DSA will fail the same way if k
is not chosen in a uniformly random manner.
There are still some reasons to incorporate additional randomness though, like fault attacks. RFC6979 supports supplying additional randomness as an input to its pseudorandom number generator, and the ecdsa
crate provides a RandomizedSigner
implementation which uses this randomness. This crate could as well.
from elliptic-curves.
This crate implements a deterministic version of SM2DSA based on RFC6979, similar to the deterministic implementation of ECDSA in the
ecdsa
crate.The security of both ECDSA and SM2DSA relies on the generation of the
k
scalar used to compute a signature being unique per message and uniformly random with no bias. If there is a bias, lattice attacks can be used to recover the private key.ECDSA has failed many times in practice in high profile applications because of bad selection of
k
, which is what RFC6979 aims to prevent by using HMAC-DRBG as an unbiased pseudorandom number generator. SM2DSA will fail the same way ifk
is not chosen in a uniformly random manner.There are still some reasons to incorporate additional randomness though, like fault attacks. RFC6979 supports supplying additional randomness as an input to its pseudorandom number generator, and the
ecdsa
crate provides aRandomizedSigner
implementation which uses this randomness. This crate could as well.
Thank you. I see.
Then, thanks for your great work.
from elliptic-curves.
Related Issues (20)
- Update crates to the newtype `fiat-crypto` codegen
- Request: Instructions to reproduce fiat-crypto files HOT 2
- Using ECDSA key pair for ECDH HOT 1
- Prepend the TapSigHash tag when doing k256 Schnorr signatures? HOT 1
- bp256+bp384: tracking issue for `arithmetic` feature HOT 3
- Numerous unused variable cause Rust difficulties HOT 3
- Bug(deps) p521 crate requires ecdsa 16.8 HOT 2
- BIP340 Schnorr should accept arbitrary length messages HOT 6
- p256::Scalar: implement Reduce<U512> HOT 1
- Surprisingly slow constant time selection HOT 6
- Batch Conversion of Projective -> Affine Points HOT 19
- p521: field arithmetic implementation not working correctly HOT 8
- 256 bit Field Operation: 64 bit * 4 vs 52 bit * 5 HOT 4
- P521 `FieldElement` conversions can panic HOT 3
- k256: Linear Combanation over Dynamically Allocated Slices
- primeorder 0.13.4 update breaks p384 0.13.0 builds HOT 4
- k256 disrepency in secp256k1 key recover HOT 12
- How to convert a VerifyingKey of type FieldElement10x26 to a FieldElement5x52 type
- k256: v0.13.2 breaking verification HOT 9
- Bitwise operations for scalars HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from elliptic-curves.