3.1 Elliptic curves over F2m
- format and examples
3.1.1 The finite field F2m
3.1.2 Elliptic curves over F2m
3.1.3 Format for challenge parameters (the F2m case)
3.2.4 Random elliptic curves and points (the F2m case)
3.1.1 The finite field F2m
There are many ways to represent the elements of a finite field with 2m
elements. The particular method used in this challenge is called a polynomial basis representation. Let
f(x) = xm
+ fm-1xm-1 + fm-2xm-2 + ... + f2x2 + f1x + f0
(where fi
{0,1} for i = 0, 1, ..., m-1) be an irreducible polynomial
of degree m over F2 . That
is, f(x) cannot be factored as a product of two polynomials over F2, each of degree less than m. The polynomial f(x) is called the reduction
polynomial.
The finite field F2m
is comprised of all polynomials over F2
of degree less than m:
F2m
= {am-1xm-1 + am-2xm-2 + . . . + a1x + a0 :ai
{0,1}}.
The field element am-1xm-1 + am-2xm-2 + . . . + a1x + a0 is usually denoted by the binary string (am-1 am-2 ... a1 a0) of length m,
so that
F2m
= {(am-1 am-2 ... a1 a0)
: ai
{0,1}}.
Thus the elements of F2m can be represented by the set of all binary strings of length m. The multiplicative identity element (1) is represented by the bit
string (00 . . . 01), while the zero element is represented by the bit string of all 0's.
The following arithmetic operations are defined on the elements of F2m:
- Addition: If a = (am-1 am-2 ... a1
a0) and b = (bm-1 bm-2 ... b1 b0)
are elements of F2m, then a
+ b = c = (cm-1 cm-2 ... c1
c0) where ci = (ai + bi) mod 2. That is, field addition is performed bitwise.
- Multiplication: If a = (am-1 am-2 ... a1
a0) and b = (bm-1 bm-2 ... b1 b0)
are elements of F2m, then a
. b = r = (rm-1 rm-2 ... r1 r0) where the polynomial rm-1xm-1 + rm-2xm-2 + ... + r1x + r0
is the remainder when the polynomial
(am-1xm-1 + am-2xm-2 + . . . + a1x + a0
) .
(bm-1xm-1 + bm-2xm-2 + . . . + b1x + b0
)
Example (The finite field
F24)
Let f(x) = x4 + x + 1
be the reduction polynomial. Then the elements of F24 are:
(0000) (1000) (0100) (1100) (0010) (1010) (0110) (1110)
(0001) (1001) (0101) (1101) (0011) (1011) (0111) (1111)
Examples of the arithmetic operations in F24 are:
(1101) + (1001) = (0100).
(1101) . (1001)
= (1111).
(1101)-1 = (0100)
3.1.2 Elliptic curves over F2m
A (non-supersingular) elliptic curve
E(F2m) over F2m defined by the parameters a, b
F2m , b
0, is the set of all
solutions (x, y), x, y
F2m
, to the equation
y2 + xy = x3 + ax2 + b,
together with an extra point O,
the point at infinity. The set of points E(F2m) forms a group with the following addition
rules:
1. O + O = O
.
2. (x, y) + O = O + (x, y) = (x, y) for all (x, y)
E(F2m).
3. (x, y) + (x, x + y) = O for all (x, y)
E(F2m) (i.e., the negative of the point (x, y)
is -(x, y) = (x, x + y)).
4. (Rule for adding two distinct points that are not inverses of each other)
Let P = (x1, y1)
E(F2m)
and Q = (x2, y2)
E(F2m)
be two points such that x1
x2. Then P + Q = (x3, y3), where
x3 =
2 +
+ x1 + x2 + a,
y3 =
(x1 + x3) + x3 + y1, and
= ( y2 + y1) / (x2 + x1).
5. (Rule for doubling a point)
Let P = (x1, y1)
E(F2m)
be a point with x1
0. (If x1 = 0, then P = -P
and so 2P = O.) Then 2P = (x3, y3), where
x3 =
2 +
+ a,
y3 = x12 + (
+ 1)x3 , and
= x1 + ( y1 / x1) .
Example (An elliptic curve
over F24)
Consider the finite field F24 defined by the reduction polynomial f(x)
= x4 + x + 1.
y2
+ xy = x3 + (0011)x2 + (0001) is an equation for an elliptic curve E over F24. Here a = (0011) and b = (0001). The solutions
over F24 to this equation are:
(0000,0001) (0001,1100) (0001,1101) (1000,0101) (1000,1101)
(0110,1000) (0110,1110) (1100,0101) (1100,1001) (1010,0111)
(1010,1101) (0111,0010) (0111,0101) (1111,0000) (1111,1111)
E(F24) has 16 points, including the point at infinity
O . The following are examples of the addition
law:
(1100, 0101) + (1000, 1101) = (0001, 1101).
2(1100, 0101) = (0111, 0101).
3.1.3 Format for challenge parameters (the F2m case)
This subsection describes the conventions used for representing the challenge parameters
for elliptic curves over F2m. Two types of elliptic curves over F2m are included in the challenge: random curves and Koblitz curves.
Koblitz curves over F2m are special types of elliptic curves E defined over F2 which have exactly 2 points in E(F2).
They were first proposed for use in elliptic curve cryptography by Koblitz [Koblitz2]; see also [Solinas].
Apart from the
-fold
speed-up that can be obtained with the improved parallelized rho method (see Section 2.2), there have not been
any mathematical discoveries to date to suggest that the ECDLP for randomly generated elliptic curves is any easier
or harder than the ECDLP for Koblitz curves.
Challenge parameters (random curves)
- m - the order of the finite field is 2m .
- f(x) - the reduction polynomial which defines the polynomial basis representation
of F2m.
- seedE - the seed that was used to generate the parameters
a and b (see Algorithm 1 in Section 3.1.4).
- a, b - the field elements which define the elliptic curve E : y2 + xy = x3 + ax2 + b.
- seedP - the seed that was used to generate the point
P (see Algorithm 3 in Section 3.1.4).
- xP , yP - the x- and y-coordinates of the base point P.
- n - the order of the point P; n
is a prime number.
- h - the co-factor h (the number of points in E(F2m)
divided by n).
- seedQ - the seed that was used to generate the point
Q (see Algorithm 3 in Section 3.1.4).
- xQ , yQ - the x- and y-coordinates of the public key point Q.
Challenge parameters (Koblitz curves)
- m - the order of the finite field is 2m .
- f(x) - the reduction polynomial which defines the polynomial basis representation
of F2m.
- a, b - the field elements which define the elliptic curve E : y2 + xy = x3 + ax2 + b.
- seedP - the seed that was used to generate the point
P (see Algorithm 3 in Section 3.1.4).
- xP , yP - the x- and y-coordinates of the base point P.
- n - the order of the point P; n
is a prime number.
- h - the co-factor h (the number of points in E(F2m)
divided by n).
- seedQ - the seed that was used to generate the point
Q (see Algorithm 3 in Section 3.1.4).
- xQ , yQ - the x- and y-coordinates of the public key point Q.
Data formats
- Integers are represented in hexadecimal, the rightmost
bit being the least significant bit. Example: The decimal integer 123456789 is represented in hexadecimal as 075BCD15.
- Field elements (of F2m) are represented in hexadecimal, padded
with 0's on the left. Example: Suppose m = 23. The
field element a= x22 + x21 + x19 + x17 + x5 +1 is represented in binary as (11010100000000000100001),
or in hexadecimal as 006A0021.
- Seeds for generating random elliptic curves and
random elliptic curve points (see Section 3.1.4) are 160-bit strings and are represented in hexadecimal.
3.1.4 Random elliptic curves and points (the F2m case)
This subsection describes the method that is used for verifiably selecting elliptic curves and points at random. The defining parameters of the elliptic curve or
point are defined to be outputs of the one-way hash function SHA-1 (as specified in FIPS 180-1 [SHA-1]). The input seed to SHA-1 then serves as proof (under the assumption that SHA-1 cannot be inverted)
that the elliptic curve or point were indeed generated at random.
The following notation is used: s =
(m - 1) / 160
and h = m - 160 . s.
Algorithm 1: Generating a random elliptic curve over F2m
Input: A field size q = 2m .
Output: A 160-bit bit string seedE and field elements
a, b
F2m which
define an elliptic curve E over F2m.
1. Choose an arbitrary bit string seedE of length 160 bits.
2. Compute H = SHA-1(seedE),
and let b0
denote the bit string of length h bits obtained by
taking the h rightmost bits of H.
3. For i from 1 to s do:
Compute bi = SHA-1((seedE + i) mod 2160 ).
4. Let b be the field element
obtained by the concatenation of b0 , b1 , ... , bs as follows:
b = b0
b1
. . .
bs.
5. If b = 0 then go to step
1.
6. Let a be an arbitrary element
of F2m.
(Note: For a fixed b there are only two essentially different choices for a -- other values of a
give rise to isomorphic elliptic curves. Hence the choice of a is essentially without loss of generality.)
7. The elliptic curve chosen over F2m is
E: y2 + xy = x3 + ax2 + b.
8. Output(seedE, a, b).
Algorithm 2: Verifying that an elliptic curve was randomly generated
Input: A field size q = 2m, a bit string
seedE of length 160 bits, and field elements a, b
F2m which define an elliptic curve E:
y2
+ xy = x3 + ax2 + b over
F2m.
Output: Acceptance or rejection that E was randomly generated using Algorithm 1.
1. Compute H = SHA-1(seedE),
and let b0
denote the bit string of length h bits obtained by
taking the h rightmost bits of H.
2. For i from 1 to s do:
Compute bi = SHA-1((seedE + i) mod 2160).
3. Let b' be the field element
obtained by the concatenation of b0 , b1 , ... , bs as follows:
b' = b0
b1
...
bs.
4. If b = b' then accept; otherwise reject.
Algorithm 3: Generating a random elliptic curve point
Input: Field elements a, b
F2m which define an elliptic curve E: y2 + xy = x3 + ax2 + b over
F2m. The order of E(F2m)
is n . h, where n is a prime.
Output: A bit string seedP, a field element yU, and a point
P
E(F2m)
of order n.
1. Choose an arbitrary bit string seedP of length 160 bits.
2. Compute H = SHA-1(seedP),
and let x0
denote the bit string of length h bits obtained by
taking the h rightmost bits of H.
3. For i from 1 to s do:
Compute xi = SHA-1((seedP + i) mod 2160 ).
4. Let xU be the field element obtained by the concatenation of x0 , x1 , ... , xs as follows:
xU = x0
x1
...
xs.
5. If the equation y2 + xU y = xU3 + axU2 + b does not have a solution y
F2m, then go to step 1.
6. Select an arbitrary solution yU
F2m to the equation y2 + xU y = xU3 + axU2 + b.
(Note: This equation will have either 1 or 2 distinct solutions. Hence the choice of yU
is essentially without loss of generality.)
7. Let U be the point
(xU
, yU).
8. Compute P = hU.
9. If P = O, then go to step 1.
10. Output(seedP, yU , P).
Algorithm 4: Verifying that an elliptic curve point was randomly generated
Input: A field size q = 2m,
field elements a, b
F2m which define
an elliptic curve E: y2 + xy
= x3
+ ax2
+ b over F2m, a bit string seedP of length 160 bits, a field element yU
F2m, and an elliptic curve point P = (xP , yP). The order of E(F2m) is n
. h, where n is a prime.
Output: Acceptance or rejection that P was randomly generated using Algorithm 3.
1. Compute H = SHA-1(seedP), and let x0 denote the bit string of length h bits obtained by taking the h rightmost bits
of H.
2. For i from 1 to s do:
Compute xi
= SHA-1((seedP + i) mod 2160).
3. Let xU
be the field element obtained by the concatenation of x0 , x1 , ... , xs as follows:
xU = x0
x1
...
xs.
4. Let U be the point (xU , yU).
5. Verify that U satisfies the equation y2 + xy
= x3
+ ax2
+ b .
6. Compute P' = hU.
7. If P
P'
then reject.
8. Accept.
