NIST Recommended Elliptic Curve Functions#
Elliptic Curve Notation#
There are several kinds of defining equation for elliptic curves, but
this section deals with Weierstrass equations. For the prime finite
field GF(p), p>3
, the Weierstrass equation
is E : y
2= x
3+ a*x + b
, where a
and b
are integers modulo p
. Number of points on the elliptic
curve E
is denoted by #E
.
For purpose of cryptography some additional parameters are presented:
n
- prime divisor of#E
and the order of pointG
G
- the point on curveE
generated subgroup of the order n
The set of p, a, b, n
and G
parameters are Elliptic Curve (EC)
domain parameter. This section deals with three NIST recommended
Elliptic Curves those domain parameters are known and published in
[SEC2] (Standards for
Efficient Cryptography Group, “Recommended Elliptic Curve Domain
Parameters”, SEC 2, September 2000).
Elliptic Curve Key Pair#
Private key is a positive integer u
in the range [1, n-1]
.
Public key V
, which is the point on elliptic curve E
, where
V = [u]*G
. In cryptography, there are two types of key pairs:
regular (or longterm) and ephemeral (or nonce - number that can only be
used once). From the math point of view, they are similar.
ECDSA signature generation#
Input:
The EC domain parameters
p, a, b, n
andG
The signer’s regular
u
and ephemeralk
private keysThe message representative, which is an integer
f>=0
Output: The signature, which is a pair of integers (r, s)
, where
r
and s
belongs the range [1. r-1]
.
Operation:
Compute an ephemeral public key
K = [k]G. Let K = (x, y)
Compute an integer
r = x mod n
Compute an integer
s = (k
-1)*(f + u*r) mod n
Return
(r, s)
as signature