Lably
Skip to content

EdDSA

Digital signature scheme

  • 4 min read
  • 3 chapters

Related on Lably

Through Digital signature

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 Fq over odd prime power q;
  • of elliptic curve E over Fq whose group E(Fq) of Fq-rational points has order #E(Fq)=2cℓ, where ℓ is a large prime and 2c is called the cofactor;
  • of base point B∈E(Fq) with order ℓ; and
  • of cryptographic hash function H with 2b-bit outputs, where 2b−1>q so that elements of Fq and curve points in E(Fq) 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 ℓπ/4 curve additions before it can compute a discrete logarithm, so ℓ must be large enough for this to be infeasible, and is typically taken to exceed 2200. The choice of ℓ is limited by the choice of q, since by Hasse's theorem, #E(Fq)=2cℓ cannot differ from q+1 by more than 2q. The hash function 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(Fq), encoded in b bits.
Signature verification
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∈E(Fq) and an integer 0<S<ℓ satisfying the following verification equation, where ∥ denotes concatenation:

2cSB=2cR+2cH(R∥A∥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=sB, where s=H0,…,b−1(k) is the least significant b bits of H(k) interpreted as an integer in little-endian.
Signing
The signature on a message M is deterministically computed as (R,S), where R=rB for r=H(Hb,…,2b−1(k)∥M), and S≡r+H(R∥A∥M)s(modℓ). This satisfies the verification equation

2cSB=2c(r+H(R∥A∥M)s)B=2crB+2cH(R∥A∥M)sB=2cR+2cH(R∥A∥M)A.

Sign in to keep reading

2 more chapters are free with a Lably account.

More in Computing and communication