Schoof’s algorithm

In 1985, René Schoof published a paper (opens new window) titled "Counting points on elliptic curves over finite fields". It is about an efficient algorithm for computing the number of points on elliptic curves over finite fields Fq.F_q.

The notes below are just a brief sketch of the proof.

Let us have the elliptic curve E:y2=x3+ax+bE: y^2 = x^3 + ax + b over Fq.F_q.

By Hasse’s theorem:

#E=q+1t,\#E = q + 1 - t,

t<2q.t < 2\sqrt q.

Let us have the set of primes S={2,3,5,7,...,L}S = \{2,3,5,7,...,L\} such that the product of these primes is sufficiently large:

ΠlSl>4q\Pi_{l \in S}l > 4\sqrt q

The main idea behind Schoof’s algorithm is to compute

tmodlforeachlSt \; mod \; l \; \text{for} \; \text{ each } \; l \in S

and then to compute tt by using the Chinese remainder theorem.

Let ϕq\phi_q be the Frobenius endomorphism:

ϕq(x,y)=(xq,yq)\phi_q(x, y) = (x^q, y^q)

It holds:

ϕq2tϕq+q=0\phi_q^2 - t\phi_q + q = 0

So we have a formula which we can use to compute t.t.

The formula above means:

(xq2,yq2)t(xq,yq)+q(x,y)=0(x^{q^2}, y^{q^2}) - t(x^q, y^q) + q(x, y) = 0

We find a point (x,y)(x, y) of the order l.l. Let ql=qmodl.q_l = q \; mod \; l. Because we have a point of the order l,l, we have:

q(x,y)=ql(x,y)q(x,y) = q_l(x,y)

And:

(xq2,yq2)+ql(x,y)=t(xq,yq)(x^{q^2}, y^{q^2}) + q_l(x, y) = t(x^q, y^q)

The point (xq,yq)(x^q, y^q) is also of the order l,l, so we compute tl=tmodlt_l = t \; mod \; l and have:

(xq2,yq2)+ql(x,y)=tl(xq,yq)(x^{q^2}, y^{q^2}) + q_l(x, y) = t_l(x^q, y^q)

We know everything except tlt_l in the equation. We search for tlt_l such that the equation holds. When we succeed, we know the number of points modulo l.l. We need to do this for all lSl \in S and then apply the Chinese remainder theorem.