For Friday, October 6, 2023

  1. This tool will quickly produce the iterates of a function: Pollard Rho.  Use it to demonstrate the Pollard Rho factoring method on $n=4189$.  You can use Sage to do your gcd’s, but make a nice little table on paper to demonstrate which gcd’s you are doing.  If it doesn’t work, try modifying the function slightly (e.g. x^2-1) or the starting value, etc. (Pollard rho is a very flexible method.)
  2. Use the birthday paradox approximation formula (with the natural log e in it) to determine the minimal number of people who need to be in the classroom to have at least a 50% chance of a shared birthday.
  3. Discrete Log Review!  Consider the discrete log problem $h = g^a$ modulo $p$.  Suppose you make two lists:  $g^x$ for random $x$ and $hg^{-y}$ for random $y$.
      1. Explain how, if you get a collision, it results in a solution to the discrete log problem.  This algorithm is called the “Birthday attack” on discrete log.
      2. How long should you make these lists to expect a decent probability of a collision?
      3. With reference to the last part, what is the runtime of the birthday attack on discrete log?
      4. The Baby-Step-Giant-Step algorithm is a sort of “organized” birthday algorithm.  Explain why I say this.
  4. If time remains, a fun challenge:  try to use the short message RSA attack discussed in class today on the short RSA message we had on discord (see the discord “ciphertexts” channel where I’ve pointed it out).
  5. BTW, Wikipedia shows how to obtain the birthday paradox estimate.