Schoof's algorithm
Schoof's algorithm allows to calculate the number of points on an elliptic curve over a finite field and is used mostly in elliptic curve cryptography.
Due to the Hasse's theorem on elliptic curves the number of point on a curve is roughly known: , so to find the exact number it is enough to find it modulo . The Schoof's algorithm calculates for several small primes , where , and uses the Chinese remainder theorem to combine the results.
The running time of the original algorithm is proportional to and with several improvements can be reduced to , which is adequate for on a PC. Note that the Schoof-Elkies-Atkin has only time complexity and thus is always faster.
References
- R. Schoof, Elliptic curves over finite fields and the computation of square roots mod p, Mathematics of Computation, Volume 44, 1985.
Implementations
Several algorithms were implemented in C++ by Mike Scott and are available with source code. The implementations are free (no terms, no conditions), but they use MIRACL library which is only free for non-commercial use. Note that (unmodified) programs may be used to generate curves for commercial use. There are
- Schoof's algorithm implementation for with prime .
- Schoof's algorithm implementation for .