Welcome to the Wyoming Cryptography School!
The Wyoming Cryptography School (WCS) is a joint program between the departments of Mathematics and Computer Science. Funded in part by the National Science Foundation, the WCS was formed to encourage research in cryptography by helping upper-division mathematics students gain research experience and the skills necessary to continue work in computational mathematics in graduate school. We are currently looking for a few talented students in mathematics or computer science to join us, and we have funds to support a cohort of six young mathematicians each year.
One of the big challenges in this area is that cryptography requires knowledge of both mathematics—number theory, abstract algebra, etc.—and computer science. Part of research in cryptography (and number theory, for that matter) is the experimental testing of conjectures that arise naturally from the mathematics.
For example, consider the function f(x)=x2 + x + 41. It turns out that this function produces prime numbers. You don't believe us? Look at the following table:
| x | f(x) | Prime? |
|---|---|---|
| 0 | 41 | Yes! |
| 1 | 43 | Yes! |
| 2 | 47 | Yes! |
| 3 | 53 | Yes! |
| 4 | 61 | Yes! |
| ... | ||
| n | f(n) | Yes! (?) |
Using "engineering induction", we can certainly conclude that this function always returns primes. A more cautious mathematician will only conjecture that the function returns primes, and this sets up an experiment to determine if the conjecture is likely. A simple program will settle the matter. Go ahead, try it!
Here's another problem. Consider the number 74037563479561712828046796097. Is this number prime? No! It's "easy" to factor it as 233 * 18229 * 300714329 * 57966787072349. Now try this number:
- 74037563479561712828046796097429573142593188889231289084936232638972765034028266276891996419625117843995894330502127585370118968098286733173273108930900552505116877063299072396380786710086096962537934650563796359
(Yes, that's just one number—it doesn't fit in a single line.) Is this number a prime? Is it composite? If you know the answer, check this out.
As you can see, you will usually have to write a computer program. And since the conjectures typically involve large numbers—meaning integers with well over 100 digits—you will have to use specialized computer libraries to perform arithmetic, and you will have to pay special attention to the efficiency of your program and even consider how to distribute your program across multiple machines.
These are just some of the issues that we will explore in the WCS. If you're interested, talk to Dr. Mueller (in mathematics) or Dr. Gamboa (in computer science). You do not have to be a programmer or a cryptographer to join the WCS. We only expect that you have an interest in programming or cryptography, and that you are sophisticated mathematically—e.g., an upper-division math or computer science major. We will teach you the number theory, abstract algebra, and cryptography you need. And we will also teach you to program in Scheme, a Lisp dialect that is suitable for efficient computation, and how to use the computing resources of dozens (or hundreds or even thousands) of machines, by using a version of Berkeley's BOINC software that we are developing at the University of Wyoming.
This project is funded in part by NSF grant DMS-0639325.