Skip to content
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

Apply new elliptic curve encryption in Bitconch (Ed25519) #62

Closed
caesarchad opened this issue Dec 12, 2018 · 2 comments
Closed

Apply new elliptic curve encryption in Bitconch (Ed25519) #62

caesarchad opened this issue Dec 12, 2018 · 2 comments
Assignees
Labels
enhancement New feature or request

Comments

@caesarchad
Copy link
Contributor

caesarchad commented Dec 12, 2018

Ed25519 has much better properties than ECDSA with secp256k1.
https://safecurves.cr.yp.to/ (joint work between Daniel J. Bernstein, University of Illinois at Chicago, USA, and Tanja Lange, Technische Universiteit Eindhoven, Netherlands) has rated Curve25519 as "safe"

The specific reasons why CryptoNote creators chose Curve25519 are unclear but it appears to be trusted by top cryptographers.

Monero developers trust DJB, Curve25519 and the fast Schnorr algo (EdDSA).

Ed25519 is a specific instance of the EdDSA family of signature schemes. Ed25519 is specified in RFC 8032 and widely used. The only other instance of EdDSA that anyone cares about is Ed448, which is slower, not widely used, and also specified in RFC 8032. Keys and signatures in one instance of EdDSA are not meaningful in another instance of EdDSA: Ed25519 and Ed448 are different signature schemes.

The ECDSA family of signature schemes is not related to EdDSA, except in that the mathematics behind it also involves elliptic curves. Any particular instance of ECDSA, such as ECDSA over the curve secp256k1 with SHA-256 (as Bitcoin uses), is incompatible with any other instance of it, such as ECDSA over the curve nistp521 with SHA-512.

On a practical level, what a user might need to know is that Ed25519 keys are not compatible in any meaningful sense with keys in any instance of ECDSA. So, e.g., in the ssh protocol, an ssh-ed25519 key is not compatible with an ecdsa-sha2-nistp521 key, which is why they are marked with different types. Similarly, an ssh-ed448 key, for Ed448, is incompatible, which is why it is also marked with a different type.

On a technical level, what a protocol designer should know is that the ECDSA family of signature schemes is an archaic slow design that encourages security-destroying implementation errors, while the EdDSA family of signature schemes is a modern design that avoids those errors.

FYI https://forum.ethereum.org/discussion/comment/53/#Comment_53
We should create a new function to apply the Ed25519 encrytpion.

@caesarchad caesarchad added the enhancement New feature or request label Dec 12, 2018
@caesarchad caesarchad self-assigned this Dec 12, 2018
@caesarchad caesarchad added this to To Do in v1.0.0 Buffett via automation Dec 12, 2018
@caesarchad
Copy link
Contributor Author

caesarchad commented Dec 12, 2018

Some existing libs we could use

  1. golang golang.org/x/crypto/ed25519
    https://godoc.org/golang.org/x/crypto/ed25519#Verify

  2. https://github.com/golang/crypto.git

  3. https://github.com/cloudflare/gokey (this one sue golang.org/x/crypto/ed25519)

  4. https://github.com/trezor/trezor-crypto

@caesarchad
Copy link
Contributor Author

caesarchad commented Dec 12, 2018

Ethereum use ??? to verify signature? secp256k1, you can look at the codes in crypto.go in geth
Bitcoin use ??? to verify signature?
We will use ??? to veriy signature.

@caesarchad caesarchad changed the title Apply Ed25519 Apply new elliptic curve encryption in Bitconch (Ed25519) Dec 12, 2018
@caesarchad caesarchad moved this from To Do to Done in v1.0.0 Buffett Feb 23, 2019
@caesarchad caesarchad removed this from Done in v1.0.0 Buffett Feb 23, 2019
@lsf1001 lsf1001 closed this as completed Mar 9, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

4 participants