README   [plain text]


TOOLS for Apple-CryptKit curve generation/testing.
24 Apr 2001 REC

The state-of-the-art in ECC (elliptic-curve cryptography)
is in a well known mode of imperfection.  For example,
it is very easy to generate CM (complex-multiplication)
curves, with known order and parameters; yet, it is suspected
by some (though unproven in any sense of rigor)
that better security accrues if curves are entirely
"random" in the sense of random base prime p, and random (a,b)
under minimal constraints such as prime curve order, etc.
Thus the collection of this Directory is a potpourri of
various tools, including a Schoof implementation (schoof.c, 
schoofs.c) for arbitrary curves.  As expected, said implementation
is very slow, yet we have used it for some of the current
CryptKit curves, while for other curves we have used the
fast CM methods, and for yet other curves we have borrowed
recommended parameters from other investigators.

Contained in this Directory are various C sources:

* curvegen.c, curvegenFEE.c
  Utility for generating CM curves, links to other sources
  as shown in comment atop source.

* factor.c
  Utility for factoring such as curve orders;
  see comment atop source.

* giants.c, ellproj.c, fmodule.c, tools.c
  Number-theoretical library sources, having standard and
  some ECC-specific tools.

* schoof.c, shoofs.c
  Curve-order finder, using the celebratd Schoof algorithm
  When run, you input p, a, b (Weierstrass parameterization)
  and out comes the curve order, sometimes after a very long
  wait.  The source schoofs.c is a "sieving Schoof" method
  as explained in the References below, for finding curves
  of prime-or-nearly-prime order (along with the same constraint
  for twists).

together with Mathematica sources:

* curverecords.nb
  A program to test current CryptKit points/orders.

* FEED affine.nb, FEEDsansY.nb
  Programs for testing FEED, in particular the integrity of
  any choice for x1Minus (a coordinate for the twist curve).

References

Crandall R and Pomerance C, "Prime numbers: a computational perspective," Springer-Verlag, 2001.

Crandall, R. E., U.S. Patents #5159632 (1992), #5271061 (1993),
    #5463690 (1994), "Method and apparatus for public key exchange in 
    a cryptographic system."

Crandall, R. E. 1996 U. S. Patent #5581616, "Method and apparatus
    for Digital Signature Authentication."