cudadl-0.8 23 Jan 2012 Ryan Henry and Ian Goldberg {rhenry,iang}@cs.uwaterloo.ca http://crysp.uwaterloo.ca/software/ This package contains the source code to our CUDA implementation of van Oorschot and Wiener's parallel version of the Pollard rho discrete log algorithm. It is intended for use on 1536-bit moduli that are RSA numbers with smooth totient; that is, the modulus N=pq, where p and q are 768-bit primes, and the prime factors of p-1 and q-1 are all distinct and less then B, for a parameter B. [The value 1536 is hardcoded as "WORDS = 24" (24*32*2 = 1536) in the Makefile; it is easy to change this value and recompile if desired.] Note that this means the totient of N = \phi(N) = (p-1)(q-1) has all prime factors less than B; that is, \phi(n) is "B-smooth". Usage: 1. Build the software. You'll need: NTL GMP NVIDIA CUDA Toolkit 3.1 2 M2050 (or other compute capability level 2.0) CUDA cards [If you have more or just 1, you'll need to modify dlrho.cc, unfortunately.] Hopefully just typing "make" should work. It will build gen_N and dlrho. 2. Create the modulus N as, for example, a 1536-bit RSA number whose totient is 2^50-smooth: ./gen_N 1536 50 > N 3. Generate a DL problem mod N and solve it: ./dlrho < N This software is described in "Solving Discrete Logarithms in Smooth-Order Groups with CUDA", CACR technical report 2012-02, http://www.cacr.math.uwaterloo.ca/techreports/2012/cacr2012-02.pdf This program is covered under version 3 of the GNU General Public Licence; see the file COPYING for more information.