HOME

TheInfoList



OR:

In
cryptography Cryptography, or cryptology (from grc, , translit=kryptós "hidden, secret"; and ''graphein'', "to write", or ''-logia'', "study", respectively), is the practice and study of techniques for secure communication in the presence of adve ...
, 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. It is one of the fastest curves in ECC, and is not covered by any known patents. The reference implementation is public domain software. The original Curve25519 paper defined it as a Diffie–Hellman (DH) function.
Daniel J. Bernstein Daniel Julius Bernstein (sometimes known as djb; born October 29, 1971) is an American German mathematician, cryptologist, and computer scientist. He is a visiting professor at CASA at Ruhr University Bochum, as well as a research professor of ...
has since proposed that the name Curve25519 be used for the underlying curve, and the name X25519 for the DH function.


Mathematical properties

The curve used is y^2 = x^3 + 486662x^2 + x, a
Montgomery curve In mathematics the Montgomery curve is a form of elliptic curve introduced by Peter L. Montgomery in 1987, different from the usual Weierstrass form. It is used for certain computations, and in particular in different cryptography applications. De ...
, over the prime field defined by the prime number 2^ - 19, and it uses the base point x = 9. This point generates a cyclic subgroup whose
order Order, ORDER or Orders may refer to: * Categorization, the process in which ideas and objects are recognized, differentiated, and understood * Heterarchy, a system of organization wherein the elements have the potential to be ranked a number of d ...
is the prime 2^ + 27742317777372353535851937790883648493, this subgroup has a co-factor of 8, meaning the number of elements in the subgroup is 1/8 that of the elliptic curve group. Using a prime order subgroup prevents mounting a Pohlig–Hellman algorithm attack. The protocol uses compressed elliptic point (only ''X'' coordinates), so it allows efficient use of the
Montgomery ladder Elliptic curve scalar multiplication is the operation of successively adding a point along an elliptic curve to itself repeatedly. It is used in elliptic curve cryptography (ECC) as a means of producing a one-way function. The literature presents ...
for ECDH, using only ''XZ'' coordinates. Curve25519 is constructed such that it avoids many potential implementation pitfalls. By design, it is immune to timing attacks and it accepts any 32-byte string as a valid public key and does not require validating that a given point belongs to the curve, or is generated by the base point. The curve is birationally equivalent to a twisted Edwards curve used in the Ed25519 signature scheme.


History

In 2005, Curve25519 was first released by
Daniel J. Bernstein Daniel Julius Bernstein (sometimes known as djb; born October 29, 1971) is an American German mathematician, cryptologist, and computer scientist. He is a visiting professor at CASA at Ruhr University Bochum, as well as a research professor of ...
. 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. While not directly related, suspicious aspects of the NIST's P curve constants led to concerns that the NSA had chosen values that gave them an advantage in breaking the encryption. Since 2013, Curve25519 has become the '' de facto'' alternative to P-256, being used in a wide variety of applications. Starting in 2014, OpenSSH defaults to Curve25519-based ECDH and GnuPG adds support for Ed25519 keys for signing and encryption. Behavior for general SSH protocol is still being standardized as of 2018. 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. Both are described in RFC 7748. A 2019 draft of "FIPS 186-5" notes the intention to allow usage of Ed25519 for digital signatures. A 2019 draft of Special Publication 800-186 notes the intention to allow usage of Curve25519. In 2018, DKIM specification was amended so as to allow signatures with this algorithm. 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.


Libraries

* Libgcrypt * libssh * libssh2 (since version 1.9.0) * NaCl * GnuTLS * mbed TLS (formerly PolarSSL) * wolfSSL * Botan * Schannel * Libsodium *
OpenSSL OpenSSL is a software library for applications that provide secure communications over computer networks against eavesdropping or need to identify the party at the other end. It is widely used by Internet servers, including the majority of HTT ...
since version 1.1.0 * LibreSSL * NaCl for Tcl — a port to the Tcl language. * NSS since version 3.28 *
Crypto++ Crypto++ (also known as CryptoPP, libcrypto++, and libcryptopp) is a free and open-source C++ class library of cryptographic algorithms and schemes written by Wei Dai. Crypto++ has been widely used in academia, student projects, open-source, and ...
*
curve25519-dalek In mathematics, a curve (also called a curved line in older texts) is an object similar to a line, but that does not have to be straight. Intuitively, a curve may be thought of as the trace left by a moving point. This is the definition that a ...
*
Bouncy Castle Bounce or The Bounce may refer to: * Deflection (physics), the event where an object collides with and bounces against a plane surface Books * Mr. Bounce, a character from the Mr. Men series of children's books Broadcasting, film and TV * ' ...


Protocols

* OMEMO, a proposed extension for XMPP (Jabber) * Secure Shell * Signal Protocol * Matrix (protocol) * Tox * Zcash * Transport Layer Security * Wireguard


Applications

* Conversations Android application * Cryptocat * DNSCrypt * DNSCurve * Dropbear * Facebook Messenger * Gajim via plugin * GNUnet * GnuPG * Google Allo * I2P * IPFS * iOS * Monero *
OpenBSD OpenBSD is a security-focused, free and open-source, Unix-like operating system based on the Berkeley Software Distribution (BSD). Theo de Raadt created OpenBSD in 1995 by forking NetBSD 1.0. According to the website, the OpenBSD project em ...
* OpenSSH * Peerio * Proton Mail *
PuTTY Putty is a material with high plasticity, similar in texture to clay or dough, typically used in domestic construction and repair as a sealant or filler. Although some types of putty (typically those using linseed oil) slowly polymerise and be ...
* Signal * Silent Phone *
SmartFTP SmartFTP is a network file transfer program for Microsoft Windows that supports file transfer via FTP, FTPS, SFTP, WebDAV, Amazon S3, Google Drive, Microsoft OneDrive, Box, Google Cloud Storage and Backblaze B2 protocols. It supports SSL/TLS ...
* SSHJ * SQRL * Threema Instant Messenger * TinySSH * TinyTERM * Tor * Viber * WhatsApp * Wire * WireGuard


Notes


References


External links

* {{Cryptography public-key Elliptic curves