Curve25519

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

Template:Short description In cryptography, Curve25519 is an elliptic curve used in elliptic-curve cryptography (ECC) offering 128 bits of security (256-bit key size) and designed for use with the Elliptic-curve Diffie–Hellman (ECDH) key agreement scheme, first described and implemented by Daniel J. Bernstein. It is one of the fastest curves in ECC, and is not covered by any known patents.[1] The reference implementation is public domain software.[2][3]

The original Curve25519 paper defined it as a Diffie–Hellman (DH) function. Bernstein has since proposed that the name Curve25519 be used for the underlying curve, and the name X25519 for the DH function.[4]

Mathematical properties

The curve used is y2=x3+486662x2+x, a Montgomery curve, over the prime field defined by the pseudo-Mersenne prime number[5] 225519 (hence the numeric "Script error: No such module "val"." in the name), and it uses the base point x=9. This point generates a cyclic subgroup whose order is the prime 2252+27742317777372353535851937790883648493. This subgroup has a co-factor of Script error: No such module "val"., meaning the number of elements in the subgroup is Template:Sfrac that of the elliptic curve group. Using a prime order subgroup prevents mounting a Pohlig–Hellman algorithm attack.[6]

The protocol uses compressed elliptic point (only X coordinates), so it allows efficient use of the Montgomery ladder for ECDH, using only XZ coordinates.[7]

Curve25519 is constructed such that it avoids many potential implementation pitfalls.[8]

The curve is birationally equivalent to a twisted Edwards curve used in the Ed25519[9][10] signature scheme.[11]

History

In 2005, Curve25519 was first released by Daniel J. Bernstein.[6]

In 2013, interest began to increase considerably when it was discovered that the NSA had potentially implemented a backdoor into the P-256 curve based Dual_EC_DRBG algorithm.[12] While not directly related,[13] suspicious aspects of the NIST's P curve constants[14] led to concerns[15] that the NSA had chosen values that gave them an advantage in breaking the encryption.[16][17]

<templatestyles src="Template:Blockquote/styles.css" />

"I no longer trust the constants. I believe the NSA has manipulated them through their relationships with industry."

Script error: No such module "Check for unknown parameters".

Since 2013, Curve25519 has become the de facto alternative to P-256, being used in a wide variety of applications.[18] Starting in 2014, OpenSSH[19] defaults to Curve25519-based ECDH and GnuPG adds support for Ed25519 keys for signing and encryption.[20] The use of the curve was eventually standardized for both key exchange and signature in 2020.[21][22]

In 2017, NIST announced that Curve25519 and Curve448 would be added to Special Publication 800-186, which specifies approved elliptic curves for use by the US Federal Government.[23] Both are described in RFC 7748.[24] A 2019 draft of "FIPS 186-5" notes the intention to allow usage of Ed25519[25] for digital signatures. The 2023 update of Special Publication 800-186 allows usage of Curve25519.[26]

In February 2017, the DNSSEC specification for using Ed25519 and Ed448 was published as Template:IETF RFC, assigning algorithm numbers 15 and 16.[27]

In 2018, DKIM specification was amended so as to allow signatures with this algorithm.[28] Also in 2018, RFC 8446 was published as the new Transport Layer Security v1.3 standard. It recommends support for X25519, Ed25519, X448, and Ed448 algorithms.[29]

Libraries

<templatestyles src="Div col/styles.css"/>

Script error: No such module "Check for unknown parameters".

Protocols

Applications

<templatestyles src="Div col/styles.css"/>

Script error: No such module "Check for unknown parameters".

Template:End div col

Notes

Template:Notelist

References

<templatestyles src="Reflist/styles.css" />
  1. Script error: No such module "citation/CS1".
  2. A state-of-the-art Diffie-Hellman function by Daniel J. Bernstein"My curve25519 library computes the Curve25519 function at very high speed. The library is in the public domain."
  3. Script error: No such module "citation/CS1".
  4. Script error: No such module "citation/CS1".
  5. Script error: No such module "citation/CS1".
  6. a b Script error: No such module "citation/CS1".
  7. Script error: No such module "citation/CS1".
  8. Script error: No such module "citation/CS1".
  9. Script error: No such module "citation/CS1".
  10. Script error: No such module "citation/CS1".
  11. Script error: No such module "citation/CS1".
  12. Script error: No such module "citation/CS1".
  13. Script error: No such module "citation/CS1".
  14. Script error: No such module "citation/CS1".
  15. Script error: No such module "citation/CS1".
  16. Script error: No such module "citation/CS1".
  17. Script error: No such module "citation/CS1".
  18. Script error: No such module "citation/CS1".
  19. a b Script error: No such module "citation/CS1".
  20. Script error: No such module "citation/CS1".
  21. Template:Cite ietf
  22. Template:Cite ietf
  23. Script error: No such module "citation/CS1".
  24. RFC 7748. Retrieved from rfc:7748.
  25. Script error: No such module "Citation/CS1".
  26. Script error: No such module "citation/CS1".
  27. Script error: No such module "citation/CS1".
  28. Template:Cite IETF
  29. Template:Cite IETF
  30. Script error: No such module "citation/CS1".
  31. a b c d e f g Script error: No such module "citation/CS1".
  32. Script error: No such module "citation/CS1".
  33. Script error: No such module "citation/CS1".
  34. Script error: No such module "citation/CS1".
  35. Script error: No such module "citation/CS1".
  36. Script error: No such module "citation/CS1".
  37. Script error: No such module "citation/CS1".
  38. Script error: No such module "citation/CS1".
  39. Script error: No such module "citation/CS1".
  40. Script error: No such module "citation/CS1".
  41. Script error: No such module "citation/CS1".
  42. Script error: No such module "citation/CS1".
  43. Script error: No such module "citation/CS1".
  44. Script error: No such module "citation/CS1".
  45. Script error: No such module "citation/CS1".
  46. Script error: No such module "citation/CS1".
  47. Script error: No such module "citation/CS1".
  48. Script error: No such module "citation/CS1".
  49. Script error: No such module "citation/CS1".
  50. Script error: No such module "citation/CS1".
  51. Script error: No such module "citation/CS1".
  52. Script error: No such module "citation/CS1".
  53. Script error: No such module "citation/CS1".
  54. Script error: No such module "citation/CS1".
  55. Script error: No such module "citation/CS1".
  56. Script error: No such module "citation/CS1".
  57. Script error: No such module "citation/CS1".
  58. Script error: No such module "citation/CS1".
  59. Script error: No such module "citation/CS1".
  60. Script error: No such module "citation/CS1".
  61. Script error: No such module "citation/CS1".
Script error: No such module "Check for unknown parameters".

External links

  • Script error: No such module "Official website".Script error: No such module "Check for unknown parameters".

Script error: No such module "navbox".