Download Integer Factorization

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Addition wikipedia , lookup

Vincent's theorem wikipedia , lookup

Positional notation wikipedia , lookup

List of important publications in mathematics wikipedia , lookup

Approximations of π wikipedia , lookup

Fundamental theorem of algebra wikipedia , lookup

Wiles's proof of Fermat's Last Theorem wikipedia , lookup

List of prime numbers wikipedia , lookup

Quadratic reciprocity wikipedia , lookup

Proofs of Fermat's little theorem wikipedia , lookup

Factorization of polynomials over finite fields wikipedia , lookup

Transcript
Integer Factorization
Lecture given at the Joh. Gutenberg-Universität,
Mainz, July 23, 1992
by
ÖYSTEIN J. RÖDSETH
University of Bergen, Department of Mathematics,
Allégt. 55, N-5007 Bergen, Norway
1
Introduction
The security of many cryptosystems relies on the assumption that factoring of
large composite integers is a computationally infeasible problem. The most famous example is the RSA public key crypto-system [40], whose security depends
on our inability to factor an integer n which is the product of two large primes.
So the study of integer factoring algorithms and the design of faster factoring
algorithms is a subject of great importance in cryptology. But Dickson’s “History” [14] shows that these problems have also attracted the interest of some
of the great mathematicians of the past such as Fermat, Euler, Legendre, and
Gauss.
In this short lecture I shall present some of the ideas behind the best factoring
algorithms currently in use on computing devices.
Most of the useful factoring algorithms fall into one of two classes. The first
class is known as “combination of congruences”. This class contains algorithms
such as
• Shank’s Square Forms Factorization (SQUFOF) [42],
• Morrison and Brillhart’s Continued Fraction Algorithm (CFRAC) [32],
• Pomerance’s Quadratic Sieve (QS) [37],
• Montgomery’s Multiple Polynomial Quadratic Sieve (MPQS) (see [37]),
• Pollard et. al.’s Number Field Sieve (NFS) [26]. (See also [1], [28], [38].)
1
The second class is “groups of smooth order”; cf. [38]. (An integer is “smooth”
if it has only small prime factors.) Among the members of this class are
• Pollard’s p − 1 method [35],
• Williams’ p + 1 method [50],
• Bach and Shallit’s Cyclotomic Polynomial Method [4],
• Schnorr and Lenstra’s Class Group Method [41],
• H. W. Lenstra’s Elliptic Curve Method (ECM) [3], [29], [30]. (See also [19],
[48].)
For the algorithms in the first class the run time depends mainly on the size of
n, the number being factored, and is not strongly dependent on the size of the
factor found. In the second class the run time depends mainly on the size of f ,
the factor found; cf. [7].
Suppose that we want to find a proper factor in a large integer n (having
perhaps 100 decimal digits); i.e. a factor f such that 1 < f < n. Usually we
begin by searching for small factors (perhaps up to 105 ) by trial division; see
[51] for some short cuts. If no such factor is found, we then make one or more
pseudoprime tests until we either discover that n is composite or are strongly
convinced that it must be prime. In the latter case we may perhaps wish to look
for a proof of primality. But let us here assume that we have the former case. We
can then run Pollard’s p − 1 method and Williams’ p + 1 method for a while (and
perhaps also the Pollard Rho [36]). If still no factor is found, we choose between
(MP)QS, ECM, and NFS.
Each of (MP)QS and ECM majorizes the other in certain situations. If the
number n is the product of two primes roughly equal in magnitude, then the
best method is MPQS. Otherwise ECM is the method of choice. If the number
n arose in some random or natural concept, then most likely it is not of the form
pq with p ≈ q. Therefore ECM should be tried first. If this method has been
tried fruitlessly for some time, we can try MPQS. If we are factoring n so as to
cryptoanalyze the RSA cryptosystem with modulus n, we might immediately go
to MPQS, skipping ECM completely.
The NFS is a quite new factoring method. It is remarkably fast for n of
special form; i. e. if n = F (m) for an integer m and some low degree polynomial
F (x) with small integer coefficients. There is also a version for general n, but this
version is slower than that for n of special form. Heuristic running time estimates
show, however, that the general NFS probably is faster than QS for large n, and
computations of Silverman [46] indicate that the crossover point is somewhere
between 140 and 150 decimal digits. But we don’t know for certain if the general
NFS in its current form(s) is of any practical value; cf. [1].
2
2
Combination of congruences
Fermat factored numbers n by representing them as
n = x2 − y 2 ,
x, y ∈ Z.
(1)
For if (1) holds, then n = ab for a = x − y and b = x + y. On the other hand,
if n is odd and n = ab for some a, b ∈ Z, then (1) holds with x√= (a + b)/2 and
y = (a − b)/2. This method works if n has a factor very close to n; for examples
see [8, p. 59], [39, p. 154].
Instead of searching for integers x, y satisfying (1), Kraitchik [20], [21], [22]
followed an idea of Legendre (cf. [39]) and tried to find nontrivial (i. e. x 6= ±y)
solutions to the congruence
x2 ≡ y 2
(mod n).
(2)
If such a pair x, y is found, then we compute d = gcd(x − y, n) by the Euclidean
algorithm (which is very fast; see [18]). Now, if n is composite, there should be a
fairly good chance that the prime divisors of n are distributed among the divisors
of both x − y and x + y, so that d is possibly a proper divisor of n.
For n composite and x, y a random solution to (2), suppose that we have at
least a 50% chance that d is a proper divisor of n. For 10 solutions we then have
a better than 99.9% chance that at least one of them will lead to a factorization
of n; cf. [38]. Of course, in practice we don’t find random solutions to (2), but
still this scheme should look very promising.
Next, consider the “factor base” {p0 , p1 , p2 , . . . , pk }, where p0 = −1 and the
other pi are primes ≤ some “smoothness bound” B. For integers r, let g(r) ≡ r2
(mod n). We wish to find integers r such that g(r) factors completely over the
factor base, and this is most likely to happen if |g(r)| is small. Therefore we
require that |g(r)| ≤ n/2.
Suppose that it is possible to find integers rj , j = 0, 1, . . . , k + 10, such that
g(rj ) factorizes completely over the factor base, i. e.
g(rj ) =
k
Y
aij
pi
for j = 0, 1, . . . , k + 10,
i=0
and where the aij are non-negative integers. (These identities are called “relations”.) We now consider the system Aε = 0 over the finite field F2 consisting
of the two elements 0 and 1, and where A denotes the (k + 1) × (k + 11) matrix
A = (aij mod 2) and ε is the column vector of the unknowns ε0 , ε1 , . . . , εk+10 . This
system of linear equations has at least 10 linearly independent solutions. (For the
solution of large linear systems over F2 , see [23].) Let ε0 , ε1 , . . . , εk+10 ∈ {0, 1}
be one of these solutions. Then we have
k+10
X
aij εj = 2ei ,
i = 0, 1, . . . , k,
j=0
3
for non-negative integers ei , and
k+10
Y
g(rj )εj =
j=0
We also have
k+10
k
Y Y
a εj
pi ij
=
j=0 i=0
k+10
Y
εj
g(rj ) ≡
k+10
Y
j=0
so that
x=
k
Y
2ei
pi .
i=0
2εj
rj
(mod n),
j=0
k
Y
ei
pi ,
y=
i=0
k+10
Y
ε
rj j
j=0
is a solution to (2). Also, if rj2 > n/2 for all j, then x 6= ±y.
There are many important tricks to enhance the performance of the algorithms
in this class. Among these are the use of a multiplier, the large and small prime
variations, and the double large prime variation. Let us here just look at the large
prime variation: For some r we are testing, suppose that g(r) factors over the
factor base except for some factor q, which is not divisible by any of the primes
in the factor base,
g(r) = q
k
Y
ai
pi .
i=0
If this happens with the same factor q for two different values of r, include q in
the factor base and proceed as before. (Note that if q ≤ p2 , where p is the largest
prime in the factor base and the factor base contains all the primes ≤ B, then q
is also a prime.)
2.1
The quadratic sieve
In the basic quadratic sieve algorithm we use the polynomial
g(r) = r2 − n.
Since we want |g(r)|
√ of r in a neighbourhood of
√ to be small, we consider values
one of the zeros ± n. Let us choose the zero + n, and consider
√
f (i) = g(r) for r = i + b nc and − M ≤ i ≤ M,
√
for some positive integer M . If also M < 0.22 n, then |g(r)| < n/2 < r2 .
Further, if an odd prime p divides f (i) = g(r) for some integer i and p 6 | n,
then n is a quadratic residue mod p. Hence we only include −1, 2, and odd
primes p satisfying (n/p) = 1 in our factor base. (This observation seems to be
due to Gauss, cf. [39, p. 160]. By quadratic resiprosity or Euler’s Criterion, it is
very fast to decide whether or not n is a quadratic residue mod a prime p. For a
100-decimal digit integer n a typical factor base would contain 50,000 elements.)
4
Next, we try to find integers i in the interval −M ≤ i ≤ M , such that f (i)
factors completely over our factor base (by trial division). But this is like looking
for needles in a haystack. So this is where we set up the sieve. Before we start
looking for the needles, we remove a lot of hay which at most contains only a few
needles.
We start with a vector (x−M , x−M +1 , . . . , xM ), where xi = log |f (i)| for all i.
(Only low precision calculations required.) For each of the odd primes in the
factor base we compute the solutions t1 , t2 to the congruence f (t) ≡ 0 (mod p).
(Fast probabilistic polynomial time algorithms for solving quadratic congruences
mod p are given in [2], [24], [34]; see also [43].) Then we subtract log p from the
coordinate xi whenever i ≡ t1 or t2 (mod p).
The prime 2 requires special treatment [12]. We may, for instance, assume
that n ≡ 1 (mod 8), which is no restriction since we can assume n odd, and
if necessary replace n by pn, for some
(large) prime p ≡ 3, 5, or, 7 (mod 8).
√
Then 8 divides f (i) whenever i + b n c is odd, and we subtract log 8 from all the
corresponding coordinates xi .
After this procedure, if i is one of of the needles we are searching for, and
f (i) is not divisible by a high power of some prime in the factor base, then the
corresponding coordinate xi should be close to 0. (The coordinate would be
exactly 0 if there were no round-off errors for our logs and if the special value
f (i) were not divisible by the square of an odd prime from the factor base, and
if also 8 divided f (i) exactly if f (i) were even.)
Thus after sieving, a scan of the vector and a report of any coordinate whose
value is below some preset threshold will point out to us (not all, but most of) the
special values of i we are searching for. There may also be a few “false reports”,
but with a proper choice of threshold, this is not a big problem; see [45].
2.2
The multiple polynomial quadratic sieve
An f (i) is most likely to factor over the factor base when |f (i)| is small; that is
when i is close to zero. The idea is now to take shorter intervals for i, but use
several different quadratic polynomials in i.
For integers a, b, c we look at
F (i) = ai2 + 2bi + c,
n = b2 − ac,
a 6= 0.
Then
aF (i) = (ai + b)2 − n,
and the rest goes as before. In particular we can use the same factor base as
above.
Some recommendations for the choice of a can be found in [38]. In particular,
it is best to use an odd a with known prime factorization. Then it is easy to
5
determine an integer b satisfying
a
|b| < ,
2
b2 ≡ n (mod a),
and we put c = (b2 − n)/a.
The parabola y = F (x) attains its minimum at the point x = −b/a, which
is now between −1/2 and 1/2. As before, we only want to consider values of i
for which |F (i)| is small. Once more we therefore let −M ≤ i ≤ M , and we
choose the “optimal” situation √
F (±M ) ≈ −F (−b/a). For a prescribed M , this
is accomplished by setting a ≈ 2n/M .
This scheme is of course excellent suited for parallelization. Run different
polynomials on different nodes to produce columns for the matrix A. Then solve
the system of linear equations mod 2 etc. on the host computer (perhaps a 16K
MasPar). But even with only one processor the multiple polynomial variation
of the QS algorithm works so well that we optimize performance by switching
polynomials as fast as possible; cf. [38].
2.3
The number field sieve
The main idea behind the NFS is roughly as follows. First choose a non-negative
integer d. If there are integers e, r, s such that n = re − s with r, e > 0 and r, |s|
small, let k = de/de, m = rk , c = srkd−e , and put F (x) = xd − c. Otherwise,
choose an integer m ≤ but close to n1/d . Write n as n = c0 + c1 m + · · · cd md ,
with non-negative integers ci < m, and put F (x) = c0 + c1 x + · · · + cd xd .
Since n|F (m), and also n = F (m) in the second case, a non-trivial factorization of the polynomial F (x) will probably give us a proper factor of n. So let us
assume that F (x) is irreducible in Z[x], and put K = Q(α) for some zero α of
F (x). A homomorphism φ : Z[α] → Z/nZ is defined by putting φ(α) = m and
letting the restriction of φ to Z be the natural homomorphism.
Next, put p0 = −1, and let p1 < p2 < · · · < pk be rational primes ≤ the
smoothness bound B. Also, let γ1 , γ2 , . . . , γM ∈ Z[α]. We now try to find pairs
of coprime rational integers aj , bj such that
aj + mbj =
k
Y
aij
pi ,
aj + αbj =
i=0
M
Y
ak+i,j
γi
, 0 ≤ aij ∈ Z,
j = 0, 1, . . . , L.
i=1
Suppose that L > k + M . As in Section 2, we then find i ∈ {0, 1}, not all
zero, such that
L
X
aij j = 2ei , 0 ≤ ei ∈ Z, i = 0, 1, . . . , k + M.
j=0
Now it is easily seen that
x=
k
Y
ei
pi ,
y=
i=0
M
Y
i=1
6
φ(γi )ek+i
is a solution to (2).
In applications, K has class number 1 and each γ has norm ±pi for some
i = 0, 1, . . . , k. Also, sieve methods corresponding to the one in Section 2.1 are
used to find pairs of coprime rational integers a, b such that both a + mb and the
norm of a + αb factor over our factor base {p0 , . . . , pk }; for details see [26].
3
Groups of smooth order
Also in this case we want to find an integer X such that X 6≡ 0 (mod n) and
X ≡ 0 (mod p) for some prime factor p of n. For then we have that gcd(X, n)
is a proper divisor of n. The method of using groups of smooth order for the
determination of candidates for X is best illustrated by the Pollard p − 1 method
below. Futher we shall also look at the elliptic curve method which can be
considered as obtained from the Pollard p − 1 by replacing the multiplicative
group F∗p by the group of points on a random elliptic curve over Fp .
3.1
The Pollard p − 1
Suppose that p−1|k! for some prime factor p|n and some preset choice of k. (Perhaps k = 105 or k = 106 . Instead of k! some people prefer to use lcm{1, 2, . . . , k}
or some slightly more complicated expression; also in the ECM below. In any
case, the success of the methods in this class also depends on a lucky choice of
k, which must be not too small and not too large; usually we have to try several
values of k.) Let a be an integer prime to n. From Fermat’s little theorem we
have
ap−1 ≡ 1 (mod p),
so that
ak! ≡ 1
(mod p).
Putting X = ak! − 1, we have p|d = gcd(X, n), so if X 6≡ 0 (mod n), then d is
a proper divisor of n.— Here it is, of course, important that d can be computed
without knowing p.
3.2
The elliptic curve method
Let F be a field of characteristic 6= 2, 3. For a, b ∈ F , put
∆ = −4a3 − 27b2 ,
and suppose that ∆ 6= 0. Then the set
Ea,b (F ) = {(x, y) ∈ F 2 | y 2 = x3 + ax + b} ∪ {O},
7
where O is the so-called “point at infinity”, is called an elliptic curve (on Weierstrass normal form) over F with parameters a and b. There is a well-known way
(the “chord and tangent method”; see [3], [17], [44], [47]) of defining a point
addition that makes Ea,b (F ) into an Abelian group with identity O.
To see how this is done, let us first consider the case F = R, the field of real
numbers. Then we have a mental picture of what the curve E = Ea,b (R) looks
like, and we think of O as lying infinitely far off in the direction of the y-axis.
Consider a line that meets E in two points P and Q. (If P = Q, we take the
tangent at the point P = Q.) Suppose that this line is not parallel to the y-axis.
Then it follows by simple algebra that this line meets E in a unique third point
R = (x, y). We then define P + Q = (x, −y). If the axiliary line is parallel to the
y-axis, then we put P + Q = O. Finally we put P + O = O + P = P for any
P ∈ E. Now, it is not hard to see that the elliptic curve E is an Abelian group
under this point addition.
So, the rules are as follows.
P + O = O + P = P for all P ∈ E,
and if P = (x1 , y1 ), Q = (x2 , y2 ), then
P + Q = O if x1 = x2 and y1 = −y2 ,
P + Q = (λ2 − x1 − x2 , −λ3 + λ(2x1 + x2 ) − y1 ) otherwise,
where λ is the slope of the line joining P and Q,







λ=





y1 − y2
x1 − x2
if x1 6= x2 ,
(3)
3x21
+a
if P = Q and y1 6= 0.
2y1
Now, let us return to the integer n we want to factor. Let a, b ∈ Z satisfy
gcd(6∆, n) = 1.
(4)
We then get an “elliptic curve mod n” Ea,b (n) by replacing the field F above by
the ring Z/nZ. We also use the formulas above to define a “pseudo-addition” on
Ea,b (n).
Now, equality means congruence mod n. Further, for the inverses of x1 − x2
and y1 to be defined in (3), the conditions x1 6= x2 and y1 6= 0 have to be replaced
by gcd(x1 − x2 , n) = 1 and gcd(y1 , n) = 1, respectively.
When n is composite, this does not make Ea,b (n) into a group, for the addition
is not defined for all pair of points. However, if we find two points P = (x1 , y1 ) and
Q = (x2 , y2 ) for which the sum is not defined, then gcd(X, n) > 1 for X = x1 − x2
or X = y1 , and we have a possible proper factor of n.
8
Hence we want to find two points in Ea,b (n) for which the sum is not defined.
Usually we start by choosing integers a, x, y in the interval (−n/2, n/2), and
determine b ∈ Z such that
b ≡ y 2 − x3 − ax (mod n), |b| < n/2.
Check if (4) holds. If (4) doesn’t hold, we have a possible proper factor of n. If
the gcd in (4) equals n, try a new set of values of a, x, y.
Now suppose that (4) holds. For R = (x, y) and some preset choice of k, we
then try to compute k!R = R + R + · · · + R (k! terms) by the “binary method”.
If this attempt fails, then we have probably discovered a proper divisor of n.
To see why the chances are good that the process fails for some choice of a, x, y,
we consider a prime factor p of n. So far we have performed our calculations mod
n. But then these calculations are also valid mod p.
The elliptic curve Ea,b (p) = Ea,b (Fp ) is a finite Abelian group (of rank 1 or 2;
cf. [10]). A celebrated theorem of Hasse [16] is that
√
√
p + 1 − 2 p < #Ea,b (p) < p + 1 + 2 p,
and by a theorem of Deuring [13] we have that every integer in this interval is
attained as #Ea,b (p) for some choice of a, b ∈ Fp with ∆ 6= 0.
√
Suppose that m | k! for some integer m in the interval p + 1 − 2 p < m <
√
p + 1 + 2 p. Then the idea is to randomly choose a, x, y until we find a curve
satisfying #Ea,b (p) = m. By Deuring’s theorem there is a possibility of of success,
and by results of Birch [5], Waterhouse [49] and others on the distribution of
the orders #Ea,b (p), the chances are particularly good if m lies in the interval
√
√
p − p < m < p + p. (Also in Pollard’s p − 1 we needed an m | k!, but then we
had only one possible choice for m, namely m = p − 1.)
So, let us assume that #Ea,b (p)|k!. Also suppose that we succeeded in computing k!R and that k!R 6= O in Ea,b (n). In this computation, let P + Q = k!R
be the last addition for which P = (x1 , y1 ) and Q = (x2 , y2 ) both are 6= O. Then
P + Q = k!R = O in Ea,b (p), and
x1 ≡ x2
∧
y1 ≡ −y2
(mod p),
so that
p | gcd(x1 − x2 , n)
∧
p | gcd(y1 + y2 , n).
Hence P + Q is not defined in Ea,b (n); a contradiction. Thus we either have
k!R = O in Ea,b (n), or our attempt to compute k!R in Ea,b (n) will eventually
lead us to two points for which the sum is not defined, and then we have probably
also found a proper factor of n.
In summary, the steps in the ECM are: Choose a and R = (x, y). Try to
compute k!R in Ea,b (n). If this doesn’t give a proper factor of n, we try other
points R. After many unsuccessful attempts, we try another a.— Here we also see
9
that the ECM can be distributed over any number of machines, since it consists of
a number of independent factorization trials. For an interesting implementation
of the ECM on a 16K MasPar, see [15].
There are, of course, various tricks to speed up the performance of the ECM.
We can use a different parametrization (instead of the Weierstrass form), we can
use homogeneous coordinates, and we have the so-called “second step”; cf. [31],
[38].
4
Running time
As usual, by “running time” we mean the number of bit operations required to
perform a task. The running time estimates for many factoring algorithms are not
rigorously proved, but relies usually on some (unproved but commonly accepted)
hypothesis concerning the distribution of divisors in integers. In particular, this
is so for the running time estimates given below for (MP)QS, NFS, and ECM.
A polynomial time algorithm for factoring n, is one which runs in time O((log n)c )
for some constant c. However, no such algorithm is known. The (MP)QS and
ECM run in time O(nσ ) for any σ > 0; cf. [7]. The heuristic expected run time
estimates are, however, better than this.
Put
Lx [r, c] = exp((c + )(log x)r (log log x)1−r ),
where → 0 as x → ∞. Note that for c and r fixed, then as x → ∞, Lx [r, c]
grows faster than any power of log x and more slowly than xσ for any σ > 0.
The expected run time of the (MP)QS to
√factor n is Ln [1/2, 1] (cf. [33], [37])
2
and that of the ECM is O((log n) Lp [1/2, 2]), where p is the smallest prime
factor of n; cf. [29]. Further, a suitable version of the NFS seems to factor
an n of special form in expected time Ln [1/3, c], where c = 2(2/3)2/3 ≈ 1.526,
while the general NFS also runs in time Ln [1/3, c], but with a bigger value for c
(c = 22/3 ≈ 2.08 [26], c ≈ 1.92 [1], c ≈ 1.90 [11]).
5
Numerical examples
“The Cunningham Project” [9] is the standard reference for explicit numerical
results of the various factorization algorithms. In particuler, CFRAC and Pollard’s p − 1 have factored hundreds of numbers in this project. Here we shall only
mention a few of the most recent results.
11
Brent [6] completed the factorization of the eleventh Fermat number 22 + 1.
Actually he factored the c606 = F11 /(319489 · 974849) as p21 p22 p564 . (We use ci to
denote a composite integer with i decimal digits, and pi now denotes a prime with
i decimal digits.) Here the p21 and the p22 were found using the ECM, and then
10
the remaining 564-decimal digit cofactor was proved prime. The factorization
took less than 2 hours on a Fujitsu VP 100 vector processor.
Using the MPQS and a worldwide distibuted network of work stations communicating with the host computer by electronic mail, Lenstra and Manasse [27]
have factored numbers having up to 106 decimal digits (a divisor c106 of 2353 + 1,
which it took them four months to factor); the last of the numbers factored was
c103 = (2361 + 1)/(3 · 174763), which factored as p43 p61 . Using an improved version of the MPQS and 80 Firefly stations (each with 5 processors), Lenstra and
Manasse [28] factored a c107 in 50 days, using a factor base of 65,000 elements.
Lenstra and Manasse [28] further used MPQS and their electronic mail network to factor two c111 using a factor base of 80,000 elements. One of the numbers
factored was c111 = (2484 + 1)/(p2 p3 p6 p10 p10 ), which factored as p50 p61 (in two
months). In the latter half of 1990, they increased the factorbase to 120,000 elements in an attempt to factor a c116 ; cf. [38]. It took 400 MIP years to complete
this job; cf. [25].
In the spring of 1990 Lenstra et. al. used their NFS [26] and the electronic
9
mail network to factorize the ninth Fermat number F9 = 22 + 1. Actually, they
factored the c148 = F9 /2424833, which factored as p49 p99 . In comparison, the
largest prime factors ever dicovered by the ECM is a p40 by Dixon and A. K.
Lenstra, and a p42 by Rusin; cf. [15]. Also, a c148 is far too big for the current
implementations of the MPQS.
Finally, RSA crytposystems are being used nowadays with keys of 512 bits;
that is, the modulus is a c155 . But factoring a c155 is not as impossible as many
people would like it to be; cf. [25], [27]. It is, however, recommended to use a
modulus pq, where each of the primes p and q has approximately 100 decimal
digits.
References
[1] L. Adleman, Factoring numbers using singular integers, Proc. 23rd Ann.
ACM Symp. on Theory of Computing, New Orleans 1991, pp. 64–71.
[2] L. Adleman, K. Manders and G. Miller, On taking square roots in finite
fields, Proc. 20th Ann. Symp. Foundations Comp. Sci. (1979), pp. 175–178.
[3] E. Bach, Lenstra’s algorithm for factoring with elliptic curves, Exposé,
Comp. Sci. Dept., Univ. Wisconsin, Madison 1985.
[4] E. Bach and J. Shallit, Factoring with cyclotomic polynomials, Math. Comp.
52 (1989) 201–219.
[5] B. J. Birch, How the number of points of an elliptic curve over a fixed prime
field varies, J. London Math. Soc. 43 (1968) 57–60.
11
[6] R. P. Brent, Factorization of the eleventh Fermat number, AMS Abstracts
10 (1989) 89T-11-73.
[7] R. P. Brent, Parallel algorithms for integer factorisation, in: J. H. Loxton
(ed.), Number Theory and Cryptography, London Math. Soc. Lecture Note
Series 154, Cambridge Univ. Press 1990, pp. 26–37.
[8] D. M. Bressoud, Factorization and Primality Testing, Springer-Verlag, New
York 1989.
[9] J. Brillhart, D. H. Lehmer, J. L. Selfridge, B. Tuckerman and S. S. Wagstaff,
Jr., Factorizations of bn ± 1 for b = 2, 3, 5, 6, 7, 11, 12 up to high powers,
second edition, Amer. Math. Soc., Providence 1988.
[10] J. W. S. Cassels, Diophantine equations with special reference to elliptic
curves, J. London Math. Soc. 41 (1966) 193–291.
[11] D. Coppersmith, Modifications to the number field sieve, IBM Research
Report #RC 16264, Nov. 1990, updated Mar. 1991.
[12] J. A. Davis, D. B. Holdrige and G. J. Simmons, Status report on factoring,
in: T. Beth, N. Cot and I. Ingemarsson (eds.), Advances in Cryptology—
EUROCRYPT ’84, Lecture Notes in Comput. Sci. vol. 209, Springer-Verlag
1985, pp. 183–215.
[13] M. Deuring, Die Typen der Multiplikatorenringe elliptischer Funktionenkörper, Abh. Math. Sem. Hansischen Univ. 14 (1941) 197–272.
[14] L. E. Dickson, History of the Theory of Numbers, vol. 1 (reprint), Chelsea,
New York 1952.
[15] B. Dixon and A. K. Lenstra, Massively parallel elliptic curve factoring, Extended Abstracts of EUROCRYPT ’92, Budapest 1992, pp. 169–179.
[16] H. Hasse, Abstrakte Begründung der komplexen Multiplikation und riemannsche Vermutung in Funktionenkörpern, Abh. Math. Sem. Hamburg 10
(1934) 325–348.
[17] K. Ireland and M. Rosen, A Clasical Introduction to Number Theory, 2nd
ed., Graduate Texts in Mathematics no. 84, Springer-Verlag, New York 1990.
[18] D. E. Knuth, The Art of Computer Programming, vol. 2, Seminumerical
Algorithms, Second ed., Addison-Wesley, Reading, MA 1981.
[19] N. Koblitz, A Course in Number Theory and Cryptography, Graduate Texts
In Mathematics no. 114, Springer-Verlag, New York 1987.
12
[20] M. Kraitchik, Théorie des Nombres, Gauthier-Villars, Paris 1922, pp. 132–
160.
[21] M. Kraitchik, Théorie des Nombres. Tome II, Gauthier-Villars, Paris 1926,
pp. 195–208.
[22] M. Kraitchik, Recherches sur la théorie des nombres. Tome II, Factorisation,
Gauthier-Villars, Paris 1929.
[23] B. A. LaMacchia and A. M. Odlyzko, Solving large sparse linear systems
over finite fields, in: A. J. Menezes and S. A. Vanstone (eds.), Advances in
Cryptology—CRYPTO ’90, Springer-Verlag, Berlin 1991, pp. 109–133.
[24] D. H. Lehmer, Computer technology applied to the theory of numbers, in:
W. J. LeVeque (ed.), Studies in Number Theory, Prentice-Hall Inc., N. J.
1969, 117–151.
[25] A. K. Lenstra, in: Public-Key Cryptography: State of the Art and Future Directions, E.I.S.S.-Workshop, Tagungsbericht 28a/1991, Math. Forschungsinstitut Oberwolfach 1991.
[26] A. K. Lenstra, H. W. Lenstra, Jr., M. S. Manasse and J. M. Pollard, The
number field sieve, Proc. 22nd Ann. ACM Symp. on Theory of Computing,
Baltimore 1990, pp. 564–572.
[27] A. K. Lenstra and M. S. Manasse, Factoring by electronic mail, in:
J.-J. Quisquater and J. Vandewalle (eds.), Advances in Cryptology—
EUROCRYPT ’89, Lecture Notes in Comput. Sci. vol. 434, Springer-Verlag,
Berlin 1990, pp. 355–371.
[28] A. K. Lenstra and M. S. Manasse, Factoring with two large primes, in: I. B.
Damgård (ed.), Advances in Cryptology—EUROCRYPT ’90, Lecture Notes
in Comput. Sci. vol. 473, Springer-Verlag, Berlin 1991, pp. 72–82.
[29] H. W. Lenstra, Jr., Factoring integers with elliptic curves, Ann. of Math.
126 (1987) 649–673.
[30] H. W. Lenstra, Jr., Elliptic curves and number-theoretic algorithms, in: A.
M. Gleason (ed.), Proc. Int’l. Cong. Math., vol. 1, Amer. Math. Soc. 1987,
pp. 99–120.
[31] P. L. Montgomery, Speeding up the Pollard and elliptic curve methods of
factorization, Math. Comp. 48 (1987) 243–264.
[32] M. A. Morrison and J. Brillhart, A method of factoring and the factorization
of F7 , Math. Comp. 29 (1975) 183–205.
13
[33] P. C. van Oorschot, A comparison of practical public key cryptosystems
based on integer factorization and discrete logarithms, in: G. J. Simmons
(ed.), Contemporary Cryptology, IEEE Press, New York 1992.
[34] R. C. Peralta, A simple and fast probabilistic algorithm for computing square
roots modulo a prime number, IEEE Trans. Inform. Theory 32 (1986) 846–
847.
[35] J. M. Pollard, Theorems on factorization and primality testing, Proc. Camb.
Phil. Soc. 76 (1974) 521–528.
[36] J. M. Pollard, A Monte Carlo method for factorization, BIT 15 (1975) 331–
334.
[37] C. Pomerance, Analysis and comparison of some integer factoring algorithms, in: H. W. Lenstra, Jr. and R. Tijdeman (eds.), Computational
Methods in Number Theory, Part I, Math. Centre Tract no. 154, Math.
Centrum, Amsterdam 1982.
[38] C. Pomerance, Factoring, in: C. Pomerance (ed.), Cryptology and Computational Number Theory, Proc. Symp. Applied Math., vol. 42, Amer. Math.
Soc. 1990, pp. 27–47.
[39] H. Riesel, Prime Numbers and Computer Methods for Factorization,
Birkhauser, Boston 1985.
[40] R. Rivest, A. Shamir and L. M. Adleman, A method for obtaining digital
signatures and public key cryptosystems, Comm. ACM 21 (1978) 120–128.
[41] C. P. Schnorr and H. W. Lenstra, Jr., A Monte Carlo factoring algorithm
with linear storage, Math. Comp. 43 (1984) 289–311.
[42] D. Shanks, Class number, a theory of factorization, and genera, Proc. Symp.
Pure Math., vol. 20, Amer. Math. Soc. 1971, pp. 415–440.
[43] R. Schoof, Elliptic curves over finite fields and the computation of square
roots mod p, Math. Comp. 44 (1985) 483–494.
[44] J. H. Silverman, The Arithmetic of Elliptic Curves, Graduate Texts in Mathematics no. 106, Springer-Verlag, New York 1986.
[45] R. D. Silverman, The multiple polynomial quadratic sieve, Math. Comp. 48
(1987) 329–339.
[46] R. D. Silverman, Computational experience with the general Number
Field Sieve, Tagungsbericht 29/1991 Computational Number Theory, Math.
Forschungsinstitut Oberwolfach 1991.
14
[47] J. T. Tate, The arithmetic of elliptic curves, Invent. Math. 23 (1974) 179–
206.
[48] S. S. Wagstaff, Jr. and J. W. Smith, Methods of factoring large integers, in:
D. V. Chudnovsky, G. V. Chudnovsky, H. Cohn and M. B. Nathanson (eds.),
Number Theory, Lecture Notes in Mathematics no. 1240, Springer-Verlag,
Berlin 1987, pp. 281–303.
[49] W. C. Waterhouse, Abelian varieties over finite fields, Ann. Sci. Ecole Norm.
Sup. (4) 2 (1969) 521–560.
[50] H. C. Williams, A p+1 method of factoring, Math. Comp. 39 (1982) 225–234.
[51] H. C. Williams, Factoring on a computer, Math. Intelligencer 6 (1984) 29–36.
15