EdDSA
   HOME

TheInfoList



OR:

In public-key cryptography, Edwards-curve Digital Signature Algorithm (EdDSA) is a
digital signature A digital signature is a mathematical scheme for verifying the authenticity of digital messages or documents. A valid digital signature, where the prerequisites are satisfied, gives a recipient very high confidence that the message was created b ...
scheme using a variant of
Schnorr signature In cryptography, a Schnorr signature is a digital signature produced by the Schnorr signature algorithm that was described by Claus Schnorr. It is a digital signature scheme known for its simplicity, among the first whose security is based on the ...
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 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 ...
, Niels Duif, Tanja Lange, Peter Schwabe, and Bo-Yin Yang. The reference implementation is public domain software.


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. An EdDSA signature scheme is a choice: * of finite field \mathbb_q over odd prime power q; * of elliptic curve E over \mathbb_q whose group E(\mathbb_q) of \mathbb_q-rational points has order \#E(\mathbb_q) = 2^c \ell, where \ell is a large prime and 2^c is called the cofactor; * of base point B \in E(\mathbb_q) with order \ell; and * of cryptographic hash function H with 2b-bit outputs, where 2^ > q so that elements of \mathbb_q and curve points in E(\mathbb_q) can be represented by strings of 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 \sqrt curve additions before it can compute a discrete logarithm, so \ell must be large enough for this to be infeasible, and is typically taken to exceed . The choice of \ell is limited by the choice of q, since by Hasse's theorem, \#E(\mathbb_q) = 2^c \ell cannot differ from q + 1 by more than 2\sqrt. The hash function H is normally modelled as a
random oracle In cryptography, a random oracle is an oracle (a theoretical black box) that responds to every ''unique query'' with a (truly) random response chosen uniformly from its output domain. If a query is repeated, it responds the same way every time th ...
in formal analyses of EdDSA's security. In the HashEdDSA variant, an additional
collision-resistant In cryptography, collision resistance is a property of cryptographic hash functions: a hash function ''H'' is collision-resistant if it is hard to find two inputs that hash to the same output; that is, two inputs ''a'' and ''b'' where ''a'' ≠ '' ...
hash function H' is needed. Within an EdDSA signature scheme, ; Public key : An EdDSA public key is a curve point A \in E(\mathbb_q), encoded in b bits. ; Signature : An EdDSA signature on a message M by public key A is the pair (R, S), encoded in 2b bits, of a curve point R \in E(\mathbb_q) and an integer 0 < S < \ell satisfying the following verification equation. \parallel denotes concatenation. 2^c S B = 2^c R + 2^c H(R \parallel A \parallel M) A ; Private key : An EdDSA private key is a b-bit string k which should be chosen uniformly at random. The corresponding public key is A = s B, where s = H_(k) is the least significant b bits of H(k) interpreted as an integer in little-endian. The signature on a message M is (R, S) where R = r B for r = H(H_(k) \parallel M), and S \equiv r + H(R \parallel A \parallel M) s \pmod \ell. This satisfies the verification equation: \begin 2^c S B &= 2^c (r + H(R \parallel A \parallel M) s) B \\ &= 2^c r B + 2^c H(R \parallel A \parallel M) s B \\ &= 2^c R + 2^c H(R \parallel A \parallel M) A. \end


Ed25519

Ed25519 is the EdDSA signature scheme using SHA-512 (SHA-2) and Curve25519 where * q = 2^ - 19, * E/\mathbb_q is the twisted Edwards curve -x^2 + y^2 = 1 - \fracx^2y^2, * \ell = 2^ + 27742317777372353535851937790883648493 and c = 3 * B is the unique point in E(\mathbb_q) whose y coordinate is 4/5 and whose 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 is SHA-512, with b = 256. The curve E(\mathbb_q) is birationally equivalent to the
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 ...
known as Curve25519. The equivalence is x = \frac\sqrt, \quad y = \frac.


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. Public keys are 256 bits long and signatures are 512 bits long.


Secure coding

As security features, Ed25519 does not use branch operations and array indexing steps that depend on secret data, so as to defeat many side channel attacks. Like other discrete-log-based signature schemes, EdDSA uses a secret value called a
nonce Nonce may refer to: * Cryptographic nonce, a number or bit string used only once, in security engineering * Nonce word, a word used to meet a need that is not expected to recur * The Nonce, American rap duo * Nonce orders, an architectural term ...
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. 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.


Standardization and implementation inconsistencies

Note that there are two standardization efforts for EdDSA, one from IETF, an informational and one from NIST as part of FIPS 186-5 (2019). The differences between the standards have been analyzed, and test vectors are available.


Software

Notable uses of Ed25519 include OpenSSH, GnuPG and various alternatives, and the signify tool by OpenBSD. Usage of Ed25519 (and Ed448) in the SSH protocol has been standardized. In 2019 a draft version of the Federal Information Processing Standards, FIPS 186-5 standard included deterministic Ed25519 as an approved signature scheme. * Apple Watch and iPhone use Ed25519 keys for IKEv2 mutual authentication * Botan_(programming_library), Botan * CryptoNote cryptocurrency Cryptographic protocol, protocol * Dropbear (software), Dropbear SSH * I2Pd implementation of EdDSA * Java Development Kit 15 * Libgcrypt * Minisign and Minisign Miscellanea for macOS * NaCl (software), NaCl / libsodium * OpenSSL 1.1.1 * Python (programming language), Python - A slow but concise alternate implementation, does not include side-channel attack protection * Supercop reference implementation (C language with inline assembler (computing), assembler) * Virgil PKI uses Ed25519 keys by default * wolfSSL


Ed448

Ed448 is the EdDSA signature scheme using SHAKE256 and Curve448 defined in . It has also been approved in the draft of the FIPS 186-5 standard.


References


External links


Ed25519 home page
{{Cryptography public-key Public-key cryptography Elliptic curve cryptography Digital signature schemes Public-domain software with source code