README 1.6 KB

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