Factorization
The factorization problem is both old and difficult. It’s statement is simple: for a number , find distinct primes
and positive integers
such that
There is an obvious technique we can use to solve this problem: trial division. It’s simple enough: to factor , find a number
that divides
. If we write
, we see that the problem of factoring
reduces to the problem of factoring
and
. If we iterate this process far enough, we’ll eventually be at a point where these factorizations are easy to perform.
Unfortunately, there is a serious problem with trial division. If is a
-digit number (say, base 10), then in the worst-case we might need to try
numbers before we find our
! For this reason, we say that trial division is an exponential-time algorithm. If
is large, this process simply requires too many steps to be practical.
In the articles to follow, we will talk about more manageable techniques for factoring “large” numbers (I put “large” in quotes because, even with these more advanced techniques, there are still some practical limitations — although they are not nearly as restrictive as trial division!) Each of the techniques we will look are are heuristics, which means they will work “most of the time.” In each of these articles, we will hopefully get a sense of why these techniques work.
Since efficient factorization is really only interesting when it is applied to a problem, I thought it would be fun to make up a scenario for us to use it in. So for this reason, our first article will be on the RSA cryptosystem; the remainder of the articles will focus on attacking the examples from the RSA article.



