Factorization of RSA-130 (12 Apr 1996)
Date:         Fri, 12 Apr 1996 13:49:43 EDT
From:         Arjen K Lenstra 
Subject:      Factorization of RSA-130
To:           Multiple recipients of list NMBRTHRY


On April 10, 1996, we found that


RSA-130 = 18070820886874048059516561644059055662781025167694013491701270214\
          50056662540244048387341127590812303371781887966563182013214880557


has the following factorization


RSA-130 = 39685999459597454290161126162883786067576449112810064832555157243
        * 45534498646735972188403686897274408864356301263205069600999044599


This factorization was found using the Number Field Sieve (NFS) factoring
algorithm, and beats the 129-digit record that was set on April, 2, 1994,
by the Quadratic Sieve (QS) factoring algorithm (cf. [AGLL]). The amount
of computer time spent on this new 130-digit NFS-record is only a fraction
of what was spent on the old 129-digit QS-record (see below for details).
For information about NFS, see [LL]. For additional information,
implementations and previous large NFS factorizations, see [BLZ, DL, E, GLM].


We used the polynomial


     5748,30224,87384,05200 X^5 +  9882,26191,74822,86102 X^4
  - 13392,49938,91281,76685 X^3 + 16875,25245,88776,84989 X^2
  +  3759,90017,48552,08738 X   - 46769,93055,39319,05995


and its root 125,74411,16841,80059,80468 modulo RSA-130. This polynomial
was selected from a list of 14 candidates provided by Scott Huddleston,
after extensive sieving experiments carried out by Joerg Zayer at the
University of Saarland.


Sieving was done on a great variety of workstations at many different
locations:


        28.37% by Bruce Dodson (Lehigh University)
        27.77% by Marije Elkenbracht-Huizing (CWI, Amsterdam)
        19.11% by Arjen K. Lenstra (Bellcore)
        17.17% by contributors to the www-factoring project (organized by
                  Jim Cowie, Wojtek Furmanski, and Arjen Lenstra, among others)
         4.36% by Matt Fante (IDA)
         1.66% by Paul Leyland (Oxford University)
         1.56% by Damian Weber (University of Saarland)


Except for a relatively small part of the contribution of the CWI and
the entire contribution by the University of Saarland, all contributors
used the NFS sieving program that was developed at Bellcore. This program
uses `lattice sieving with sieving by vectors' as introduced by Pollard
in [P], and is based on the implementation described in [GLM]. The main
difference is the more liberal use of `special q-primes' that define the
lattices (see also [E]). Unlike [GLM], these special q's do not necessarily
belong to the factor base (as is the case in [P]); this idea can also be
found in [B].  Another difference is the more liberal interpretation of
the factor base sizes, which results in a much more flexible memory usage.

These changes allowed us to run the sieving program in parallel on almost
any number of processors, as long as they have at least about 6 megabytes
of memory. This was exploited in the Web-based sieving effort, which used
a collection of CGI scripts ("FAFNER", from Cooperating Systems Corporation)
to automate and coordinate the flow of tasks and relations within the
globally distributed network of anonymous sieving clients. As a consequence
almost any user of the Web can contribute to future, larger factoring efforts,
simply by a few appropriate mouse clicks.

The changes also made it hard to estimate how much time was spent on the
sieving stage, because the performance of the siever strongly depends
on the amount of memory it gets. We can say, however, that we would have
spent about 500 mips years (i.e., 10% of the computing time spent on the
129-digit QS-record) if we had done all the sieving on average
workstations with at least 24 megabytes of memory.

Sieving started in September 1995, initially on a very limited number of
workstations. The Web-based sieving started relatively late, in December
1995. Relations were collected and merged and duplicates were removed at
Bellcore. On Jan 14, 1996, we had 56,515,672 unique relations. In
uncompressed ASCII format, with only the primes >2000000 listed per
factorization, storage of the relations required more than 3.5 gigabytes.
With a rational factor base of 250,001 elements (the primes <= 3,497,867)
and an algebraic factor base of 750,001 elements (ideals of norm <=
11,380,951), the breakdown of full and partial relations is as follows.

\ number of prime ideals of norm > 11,380,951:
 \________        0        1        2        3        4        5        6
number of \
rational   \_____________________________________________________________
primes >   |
3,497,867  |
           |
      0    |  48400   479737  1701253  1995537     6836      403        9
      1    | 272793  2728107  9617073 11313254    39755     2212       44
      2    | 336850  3328437 11520120 13030845    56146     3214       71
      3    |   1056     9022    24455        0        0        0        0
      4    |      3        9       31        0        0        0        0

The first successful dependency used 4143834 relations, of which 3506 were
free relations. The breakdown of large prime ideals amongst the other
contributing relations is as follows.


      0    |  24242   154099   330738   255742     1054       52        1
      1    |  75789   443647   885136   648148     2734      164        2
      2    |  56326   300369   565605   389046     1923      131        4
      3    |    182      776     1105        0        0        0        0
      4    |      2        4        7        0        0        0        0


Once every week during the collection the cycles were counted at Bellcore.
The final collection of 56,467,272 relations with one or more large primes
generated 2,844,859 cycles. In these cycles 18,830,237 (33.3%) of the
partial relations occurred (i.e., were useful). As in our previous NFS
factorizations, we witnessed an explosion in the number of cycles, with
first a sharp increase in the number of useful relations, followed by a
sudden growth of the number of cycles:

        # partials      # usefuls       # cycles
        41,319,347          47,660         16,914
        45,431,262       8,214,349        224,865
        53,282,421      11,960,120        972,121
        56,467,272      18,830,237      2,844,859

Using the approach sketched in [DL], these data resulted in a
3,504,823 x 3,516,502 matrix of total weight 138,690,744 (on
average 39.4 entries per column). Using Peter Montgomery's Cray
implementation of his blocked Lanczos algorithm (cf. [M95]), it
took 67.5 CPU-hours and 700 Mbyte central memory on the Cray-C90
at the SARA Computer Center in Amsterdam to do the linear algebra.
This resulted in 18 useful dependencies. These were processed on
1 processor of an SGI Challenge (150 MHz R4400SC processors) using
Peter Montgomery's square root program (cf. [M93]), which took 49.5
hours per dependency (with initial numerator and denominator of
approximately 9.7 million decimal digits). The factorization was
found by the third dependency.

It is likely that slightly more sieving (and therefore more partials)
would have led to substantially smaller (and easier) matrix and square
root problems.

Arjen K. Lenstra, Bellcore, April 11, 1996

with    Jim Cowie
        Marije Elkenbracht-Huizing
        Wojtek Furmanski
        Peter L. Montgomery
        Damian Weber
        Joerg Zayer

Acknowledgements are due to the contributors, and to the Dutch
National Computing Facilities Foundation (NCF) for the use of
the Cray-C90 supercomputer.


[AGLL]  D. Atkins, M. Graff, A.K. Lenstra, P.C. Leyland, THE MAGIC
        WORDS ARE SQUEAMISH OSSIFRAGE, Proceedings Asiacrypt'94,
        Lecture Notes in Comput. Sci. 917, (1995) 263-277.

[B]     D.J. Bernstein, The multiple-lattice number field sieve, Chapter 3
        of Ph.D. thesis, ftp://koobera.math.uic.edu/pub/papers/mlnfs.dvi.

[BLZ]   J. Buchmann, J. Loho, J. Zayer, An implementation of the general
        number field sieve, Proceedings Crypto'93, Lecture Notes in
        Comput. Sci. 773, (1994) 159-165.

[DL]    B. Dodson, A.K. Lenstra, NFS with four large primes: an
        explosive experiment, Proceedings Crypto 95, Lecture Notes
        in Comput. Sci. 963, (1995) 372-385.

[E]     R.M. Elkenbracht-Huizing, An implementation of the number
        field sieve, Technical Report NM-R9511, Centrum voor
        Wiskunde en Informatica, Amsterdam, 1995. To appear in
        Experimental Mathematics

[GLM]   R. Golliver, A.K. Lenstra, K.S. McCurley, Lattice sieving
        and trial division, Algorithmic number theory symposium,
        proceedings, Lecture Notes in Comput. Sci. 877, (1994) 18-27.

[LL]    A.K. Lenstra, H.W. Lenstra, Jr., The development of the
        number field sieve, Lecture Notes in Math. 1554, Springer-
        Verlag, Berlin, 1993

[M93]   Peter L. Montgomery, Square roots of products of algebraic
        numbers, in Proceedings of Symposia in Applied Mathematics,
        Mathematics of Computation 1943-1993, Vancouver, 1993,
        Walter Gautschi, ed.

[M95]   Peter L. Montgomery, A block Lanczos algorithm for finding
        dependencies over GF(2), Proceedings Eurocrypt 1995,
        Lecture Notes in Comput. Sci. 921, (1995) 106-120.

[P]     J.M. Pollard, The lattice sieve, pages 43-49 in [LL].