Menu
Home Explore People Places Arts History Plants & Animals Science Life & Culture Technology
On this page
EdDSA
Digital signature scheme

In public-key cryptography, Edwards-curve Digital Signature Algorithm (EdDSA) is a digital signature scheme using a variant of Schnorr signature based on twisted Edwards curves. It is designed to be faster than existing digital signature schemes without sacrificing security. It was developed by a team including Daniel J. Bernstein, Niels Duif, Tanja Lange, Peter Schwabe, and Bo-Yin Yang. The reference implementation is public-domain software.

We don't have any images related to EdDSA yet.
We don't have any YouTube videos related to EdDSA yet.
We don't have any PDF documents related to EdDSA yet.
We don't have any Books related to EdDSA yet.
We don't have any archived web articles related to EdDSA yet.

Summary

The following is a simplified description of EdDSA, ignoring details of encoding integers and curve points as bit strings; the full details are in the papers and RFC.456

An EdDSA signature scheme is a choice:7: 1–2 8: 5–6 9: 5–7 

  • of finite field F q {\displaystyle \mathbb {F} _{q}} over odd prime power q {\displaystyle q} ;
  • of elliptic curve E {\displaystyle E} over F q {\displaystyle \mathbb {F} _{q}} whose group E ( F q ) {\displaystyle E(\mathbb {F} _{q})} of F q {\displaystyle \mathbb {F} _{q}} -rational points has order # E ( F q ) = 2 c ℓ {\displaystyle \#E(\mathbb {F} _{q})=2^{c}\ell } , where ℓ {\displaystyle \ell } is a large prime and 2 c {\displaystyle 2^{c}} is called the cofactor;
  • of base point B ∈ E ( F q ) {\displaystyle B\in E(\mathbb {F} _{q})} with order ℓ {\displaystyle \ell } ; and
  • of cryptographic hash function H {\displaystyle H} with 2 b {\displaystyle 2b} -bit outputs, where 2 b − 1 > q {\displaystyle 2^{b-1}>q} so that elements of F q {\displaystyle \mathbb {F} _{q}} and curve points in E ( F q ) {\displaystyle E(\mathbb {F} _{q})} can be represented by strings of b {\displaystyle b} bits.

These parameters are common to all users of the EdDSA signature scheme. The security of the EdDSA signature scheme depends critically on the choices of parameters, except for the arbitrary choice of base point—for example, Pollard's rho algorithm for logarithms is expected to take approximately ℓ π / 4 {\displaystyle {\sqrt {\ell \pi /4}}} curve additions before it can compute a discrete logarithm,10 so ℓ {\displaystyle \ell } must be large enough for this to be infeasible, and is typically taken to exceed 2200.11 The choice of ℓ {\displaystyle \ell } is limited by the choice of q {\displaystyle q} , since by Hasse's theorem, # E ( F q ) = 2 c ℓ {\displaystyle \#E(\mathbb {F} _{q})=2^{c}\ell } cannot differ from q + 1 {\displaystyle q+1} by more than 2 q {\displaystyle 2{\sqrt {q}}} . The hash function H {\displaystyle H} is normally modelled as a random oracle in formal analyses of EdDSA's security.

Within an EdDSA signature scheme,

Public key An EdDSA public key is a curve point A ∈ E ( F q ) {\displaystyle A\in E(\mathbb {F} _{q})} , encoded in b {\displaystyle b} bits. Signature verification An EdDSA signature on a message M {\displaystyle M} by public key A {\displaystyle A} is the pair ( R , S ) {\displaystyle (R,S)} , encoded in 2 b {\displaystyle 2b} bits, of a curve point R ∈ E ( F q ) {\displaystyle R\in E(\mathbb {F} _{q})} and an integer 0 < S < ℓ {\displaystyle 0<S<\ell } satisfying the following verification equation, where ∥ {\displaystyle \parallel } denotes concatenation:

2 c S B = 2 c R + 2 c H ( R ∥ A ∥ M ) A . {\displaystyle 2^{c}SB=2^{c}R+2^{c}H(R\parallel A\parallel M)A.}

Private key An EdDSA private key is a b {\displaystyle b} -bit string k {\displaystyle k} which should be chosen uniformly at random. The corresponding public key is A = s B {\displaystyle A=sB} , where s = H 0 , … , b − 1 ( k ) {\displaystyle s=H_{0,\dots ,b-1}(k)} is the least significant b {\displaystyle b} bits of H ( k ) {\displaystyle H(k)} interpreted as an integer in little-endian. Signing The signature on a message M {\displaystyle M} is deterministically computed as ( R , S ) , {\displaystyle (R,S),} where R = r B {\displaystyle R=rB} for r = H ( H b , … , 2 b − 1 ( k ) ∥ M ) {\displaystyle r=H(H_{b,\dots ,2b-1}(k)\parallel M)} , and S ≡ r + H ( R ∥ A ∥ M ) s ( mod ℓ ) . {\displaystyle S\equiv r+H(R\parallel A\parallel M)s{\pmod {\ell }}.} This satisfies the verification equation

2 c S B = 2 c ( r + H ( R ∥ A ∥ M ) s ) B = 2 c r B + 2 c H ( R ∥ A ∥ M ) s B = 2 c R + 2 c H ( R ∥ A ∥ M ) A . {\displaystyle {\begin{aligned}2^{c}SB&=2^{c}(r+H(R\parallel A\parallel M)s)B\\&=2^{c}rB+2^{c}H(R\parallel A\parallel M)sB\\&=2^{c}R+2^{c}H(R\parallel A\parallel M)A.\end{aligned}}}

Ed25519

Ed25519 is the EdDSA signature scheme using SHA-512 (SHA-2) and an elliptic curve related to Curve2551912 where

  • q = 2 255 − 19 , {\displaystyle q=2^{255}-19,}
  • E / F q {\displaystyle E/\mathbb {F} _{q}} is the twisted Edwards curve

− x 2 + y 2 = 1 − 121665 121666 x 2 y 2 , {\displaystyle -x^{2}+y^{2}=1-{\frac {121665}{121666}}x^{2}y^{2},}

  • ℓ = 2 252 + 27742317777372353535851937790883648493 {\displaystyle \ell =2^{252}+27742317777372353535851937790883648493} and c = 3 {\displaystyle c=3}
  • B {\displaystyle B} is the unique point in E ( F q ) {\displaystyle E(\mathbb {F} _{q})} whose y {\displaystyle y} coordinate is 4 / 5 {\displaystyle 4/5} and whose x {\displaystyle x} coordinate is positive."positive" is defined in terms of bit-encoding:
    • "positive" coordinates are even coordinates (least significant bit is cleared)
    • "negative" coordinates are odd coordinates (least significant bit is set)
  • H {\displaystyle H} is SHA-512, with b = 256 {\displaystyle b=256} .

The twisted Edwards curve E / F q {\displaystyle E/\mathbb {F} _{q}} is known as edwards25519,1314 and is birationally equivalent to the Montgomery curve known as Curve25519. The equivalence is151617 x = u v − 486664 , y = u − 1 u + 1 . {\displaystyle x={\frac {u}{v}}{\sqrt {-486664}},\quad y={\frac {u-1}{u+1}}.}

Performance

The original team has optimized Ed25519 for the x86-64 Nehalem/Westmere processor family. Verification can be performed in batches of 64 signatures for even greater throughput. Ed25519 is intended to provide attack resistance comparable to quality 128-bit symmetric ciphers.18

Public keys are 256 bits long and signatures are 512 bits long.19

Secure coding

Ed25519 is designed to avoid implementations that use branch conditions or array indices that depend on secret data,20: 2 21: 40  in order to mitigate side-channel attacks.

As with other discrete-log-based signature schemes, EdDSA uses a secret value called a nonce unique to each signature. In the signature schemes DSA and ECDSA, this nonce is traditionally generated randomly for each signature—and if the random number generator is ever broken and predictable when making a signature, the signature can leak the private key, as happened with the Sony PlayStation 3 firmware update signing key.22232425

In contrast, EdDSA chooses the nonce deterministically as the hash of a part of the private key and the message. Thus, once a private key is generated, EdDSA has no further need for a random number generator in order to make signatures, and there is no danger that a broken random number generator used to make a signature will reveal the private key.26: 8 

Standardization and implementation inconsistencies

Note that there are two standardization efforts for EdDSA, one from IETF, an informational RFC 8032 and one from NIST as part of FIPS 186-5.27 The differences between the standards have been analyzed,2829 and test vectors are available.30

Software

Notable uses of Ed25519 include OpenSSH,31 GnuPG32 and various alternatives, and the signify tool by OpenBSD.33 Usage of Ed25519 (and Ed448) in the SSH protocol has been standardized.34 In 2023 the final version of the FIPS 186-5 standard included deterministic Ed25519 as an approved signature scheme.35

Ed448

Ed448 is the EdDSA signature scheme defined in RFC 8032 using the hash function SHAKE256 and the elliptic curve edwards448, an (untwisted) Edwards curve related to Curve448 in RFC 7748. Ed448 has also been approved in the final version of the FIPS 186-5 standard.48

References

  1. Josefsson, S.; Liusvaara, I. (January 2017). Edwards-Curve Digital Signature Algorithm (EdDSA). IRTF. doi:10.17487/RFC8032. ISSN 2070-1721. RFC 8032. Retrieved 2022-07-11. https://datatracker.ietf.org/doc/html/rfc8032

  2. Bernstein, Daniel J.; Duif, Niels; Lange, Tanja; Schwabe, Peter; Bo-Yin Yang (2012). "High-speed high-security signatures" (PDF). Journal of Cryptographic Engineering. 2 (2): 77–89. doi:10.1007/s13389-012-0027-1. S2CID 945254. /wiki/Daniel_J._Bernstein

  3. "Software". 2015-06-11. Retrieved 2016-10-07. The Ed25519 software is in the public domain. https://ed25519.cr.yp.to/software.html

  4. Daniel J. Bernstein; Simon Josefsson; Tanja Lange; Peter Schwabe; Bo-Yin Yang (2015-07-04). EdDSA for more curves (PDF) (Technical report). Retrieved 2016-11-14. https://ed25519.cr.yp.to/eddsa-20150704.pdf

  5. Bernstein, Daniel J.; Duif, Niels; Lange, Tanja; Schwabe, Peter; Bo-Yin Yang (2012). "High-speed high-security signatures" (PDF). Journal of Cryptographic Engineering. 2 (2): 77–89. doi:10.1007/s13389-012-0027-1. S2CID 945254. /wiki/Daniel_J._Bernstein

  6. Josefsson, S.; Liusvaara, I. (January 2017). Edwards-Curve Digital Signature Algorithm (EdDSA). IRTF. doi:10.17487/RFC8032. ISSN 2070-1721. RFC 8032. Retrieved 2022-07-11. https://datatracker.ietf.org/doc/html/rfc8032

  7. Daniel J. Bernstein; Simon Josefsson; Tanja Lange; Peter Schwabe; Bo-Yin Yang (2015-07-04). EdDSA for more curves (PDF) (Technical report). Retrieved 2016-11-14. https://ed25519.cr.yp.to/eddsa-20150704.pdf

  8. Bernstein, Daniel J.; Duif, Niels; Lange, Tanja; Schwabe, Peter; Bo-Yin Yang (2012). "High-speed high-security signatures" (PDF). Journal of Cryptographic Engineering. 2 (2): 77–89. doi:10.1007/s13389-012-0027-1. S2CID 945254. /wiki/Daniel_J._Bernstein

  9. Josefsson, S.; Liusvaara, I. (January 2017). Edwards-Curve Digital Signature Algorithm (EdDSA). IRTF. doi:10.17487/RFC8032. ISSN 2070-1721. RFC 8032. Retrieved 2022-07-11. https://datatracker.ietf.org/doc/html/rfc8032

  10. Daniel J. Bernstein; Tanja Lange; Peter Schwabe (2011-01-01). On the correct use of the negation map in the Pollard rho method (Technical report). IACR Cryptology ePrint Archive. 2011/003. Retrieved 2016-11-14. https://eprint.iacr.org/2011/003

  11. Bernstein, Daniel J.; Lange, Tanja. "ECDLP Security: Rho". SafeCurves: choosing safe curves for elliptic-curve cryptography. Retrieved 2016-11-16. https://safecurves.cr.yp.to/rho.html

  12. Bernstein, Daniel J.; Duif, Niels; Lange, Tanja; Schwabe, Peter; Bo-Yin Yang (2012). "High-speed high-security signatures" (PDF). Journal of Cryptographic Engineering. 2 (2): 77–89. doi:10.1007/s13389-012-0027-1. S2CID 945254. /wiki/Daniel_J._Bernstein

  13. Langley, A.; Hamburg, M.; Turner, S. (January 2016). Elliptic Curves for Security. IETF. doi:10.17487/RFC7748. ISSN 2070-1721. RFC 7748. Retrieved 2024-11-12. https://datatracker.ietf.org/doc/html/rfc7748

  14. Josefsson, S.; Liusvaara, I. (January 2017). Edwards-Curve Digital Signature Algorithm (EdDSA). IRTF. doi:10.17487/RFC8032. ISSN 2070-1721. RFC 8032. Retrieved 2022-07-11. https://datatracker.ietf.org/doc/html/rfc8032

  15. Bernstein, Daniel J.; Duif, Niels; Lange, Tanja; Schwabe, Peter; Bo-Yin Yang (2012). "High-speed high-security signatures" (PDF). Journal of Cryptographic Engineering. 2 (2): 77–89. doi:10.1007/s13389-012-0027-1. S2CID 945254. /wiki/Daniel_J._Bernstein

  16. Langley, A.; Hamburg, M.; Turner, S. (January 2016). Elliptic Curves for Security. IETF. doi:10.17487/RFC7748. ISSN 2070-1721. RFC 7748. Retrieved 2024-11-12. https://datatracker.ietf.org/doc/html/rfc7748

  17. Bernstein, Daniel J.; Lange, Tanja (2007). Kurosawa, Kaoru (ed.). Faster addition and doubling on elliptic curves. Advances in cryptology—ASIACRYPT. Lecture Notes in Computer Science. Vol. 4833. Berlin: Springer. pp. 29–50. doi:10.1007/978-3-540-76900-2_3. ISBN 978-3-540-76899-9. MR 2565722. 978-3-540-76899-9

  18. Bernstein, Daniel J. (2017-01-22). "Ed25519: high-speed high-security signatures". Retrieved 2019-09-27. This system has a 2^128 security target; breaking it has similar difficulty to breaking NIST P-256, RSA with ~3000-bit keys, strong 128-bit block ciphers, etc. https://ed25519.cr.yp.to/

  19. Bernstein, Daniel J. (2017-01-22). "Ed25519: high-speed high-security signatures". Retrieved 2020-06-01. Signatures fit into 64 bytes. […] Public keys consume only 32 bytes. https://ed25519.cr.yp.to/

  20. Bernstein, Daniel J.; Duif, Niels; Lange, Tanja; Schwabe, Peter; Bo-Yin Yang (2012). "High-speed high-security signatures" (PDF). Journal of Cryptographic Engineering. 2 (2): 77–89. doi:10.1007/s13389-012-0027-1. S2CID 945254. /wiki/Daniel_J._Bernstein

  21. Josefsson, S.; Liusvaara, I. (January 2017). Edwards-Curve Digital Signature Algorithm (EdDSA). IRTF. doi:10.17487/RFC8032. ISSN 2070-1721. RFC 8032. Retrieved 2022-07-11. https://datatracker.ietf.org/doc/html/rfc8032

  22. Johnston, Casey (2010-12-30). "PS3 hacked through poor cryptography implementation". Ars Technica. Retrieved 2016-11-15. https://arstechnica.com/gaming/2010/12/ps3-hacked-through-poor-implementation-of-cryptography/

  23. fail0verflow (2010-12-29). Console Hacking 2010: PS3 Epic Fail (PDF). Chaos Communication Congress. Archived from the original (PDF) on 2018-10-26. Retrieved 2016-11-15. https://web.archive.org/web/20181026183945/https://events.ccc.de/congress/2010/Fahrplan/attachments/1780_27c3_console_hacking_2010.pdf

  24. "27th Chaos Communication Congress: Console Hacking 2010: PS3 Epic Fail" (PDF). Retrieved 2019-08-04. https://www.cs.cmu.edu/~dst/GeoHot/1780_27c3_console_hacking_2010.pdf

  25. Buchanan, Bill (2018-11-12). "Not Playing Randomly: The Sony PS3 and Bitcoin Crypto Hacks. Watch those random number generators". Medium. Archived from the original on 2018-11-30. Retrieved 2024-03-11. https://web.archive.org/web/20181130215509/https://medium.com/asecuritysite-when-bob-met-alice/not-playing-randomly-the-sony-ps3-and-bitcoin-crypto-hacks-c1fe92bea9bc

  26. Bernstein, Daniel J.; Duif, Niels; Lange, Tanja; Schwabe, Peter; Bo-Yin Yang (2012). "High-speed high-security signatures" (PDF). Journal of Cryptographic Engineering. 2 (2): 77–89. doi:10.1007/s13389-012-0027-1. S2CID 945254. /wiki/Daniel_J._Bernstein

  27. Moody, Dustin (2023-02-03). FIPS 186-5: Digital Signature Standard (DSS). NIST. doi:10.6028/NIST.FIPS.186-5. S2CID 256480883. Retrieved 2023-03-04. https://csrc.nist.gov/publications/detail/fips/186/5/final

  28. Chalkias, Konstantinos; Garillot, Francois; Nikolaenko, Valeria (2020-10-01). Taming the many EdDSAs. Security Standardisation Research Conference (SSR 2020). Retrieved 2021-02-15. https://eprint.iacr.org/2020/1244

  29. Brendel, Jacqueline; Cremers, Cas; Jackson, Dennis; Zhao, Mang (2020-07-03). The provable security of ed25519: Theory and practice. IEEE Symposium on Security and Privacy (S&P 2021). Retrieved 2021-02-15. https://eprint.iacr.org/2020/823

  30. "ed25519-speccheck". GitHub. Retrieved 2021-02-15. https://github.com/novifinancial/ed25519-speccheck

  31. "Changes since OpenSSH 6.4". 2014-01-03. Retrieved 2016-10-07. http://www.openssh.com/txt/release-6.5

  32. "What's new in GnuPG 2.1". 2016-07-14. Retrieved 2016-10-07. https://gnupg.org/faq/whats-new-in-2.1.html

  33. "Things that use Ed25519". 2016-10-06. Retrieved 2016-10-07. https://ianix.com/pub/ed25519-deployment.html

  34. Harris, B.; Velvindron, L. (February 2020). Ed25519 and Ed448 Public Key Algorithms for the Secure Shell (SSH) Protocol. IETF. doi:10.17487/RFC8709. ISSN 2070-1721. RFC 8709. Retrieved 2022-07-11. https://datatracker.ietf.org/doc/html/rfc8709

  35. Moody, Dustin (2023-02-03). FIPS 186-5: Digital Signature Standard (DSS). NIST. doi:10.6028/NIST.FIPS.186-5. S2CID 256480883. Retrieved 2023-03-04. https://csrc.nist.gov/publications/detail/fips/186/5/final

  36. "System security for watchOS". Retrieved 2021-06-07. https://support.apple.com/guide/security/system-security-for-watchos-secc7d85209d/

  37. Matt Johnston (2013-11-14). "DROPBEAR_2013.61test". Archived from the original on 2019-08-05. Retrieved 2019-08-05. https://web.archive.org/web/20190805012812/https://secure.ucc.asn.au/hg/dropbear/rev/DROPBEAR_2013.61test

  38. "Heuristic Algorithms and Distributed Computing" (PDF). Èvrističeskie Algoritmy I Raspredelennye Vyčisleniâ (in Russian): 55–56. 2015. ISSN 2311-8563. Archived from the original (PDF) on 2016-10-20. Retrieved 2016-10-07. https://web.archive.org/web/20161020120014/http://algorithms.samsu.ru/-tom2-nom4.pdf

  39. Frank Denis. "Minisign: A dead simple tool to sign files and verify signatures". Retrieved 2016-10-07. https://jedisct1.github.io/minisign

  40. minisign-misc on GitHub https://github.com/JayBrown/minisign-misc

  41. Frank Denis (2016-06-29). "libsodium/ChangeLog". GitHub. Retrieved 2016-10-07. https://github.com/jedisct1/libsodium/blob/a162c09b69075c467dfa985cd605a80955512c48/ChangeLog

  42. "OpenSSL CHANGES". July 31, 2019. Archived from the original on May 18, 2018. Retrieved August 5, 2019. https://web.archive.org/web/20180518200747/https://www.openssl.org/news/cl111.txt

  43. "python/ed25519.py: the main subroutines". 2011-07-06. Retrieved 2016-10-07. https://ed25519.cr.yp.to/python/ed25519.py

  44. "Software: Alternate implementations". 2015-06-11. Retrieved 2016-10-07. https://ed25519.cr.yp.to/software.html

  45. "eBACS: ECRYPT Benchmarking of Cryptographic Systems: SUPERCOP". 2016-09-10. Retrieved 2016-10-07. https://bench.cr.yp.to/supercop.html

  46. "Virgil Security Crypto Library for C: Library: Foundation". GitHub. Retrieved 2019-08-04. https://github.com/VirgilSecurity/virgil-crypto-c#library-foundation

  47. "wolfSSL Embedded SSL Library (formerly CyaSSL)". Retrieved 2016-10-07. https://www.wolfssl.com/wolfSSL/Products-wolfssl.html

  48. Moody, Dustin (2023-02-03). FIPS 186-5: Digital Signature Standard (DSS). NIST. doi:10.6028/NIST.FIPS.186-5. S2CID 256480883. Retrieved 2023-03-04. https://csrc.nist.gov/publications/detail/fips/186/5/final