CSCI 7000 - Quantum Computing - Fall 2012

Problem Set #3

Due: Nov 6th, 2012 at 2pm



1. There is a server running on annai.cs.colorado.edu port 443. This server has a hidden string $a$ embedded within it. When you connect via TCP/IP, it will spit out a random 128-bit string $y$ such that $y \oplus a = 0,$ then disconnects. The string is output as 128-characters of plain text, following by a newline.
This exercise explores finding $a$, as with Simon's Problem. Write a program in the language of your choice to query this server and record the answers. For each string you receive, you should decide whether it is linearly independent of the strings already received (in which case you keep it) or not (in which case you discard it). Once you have enough linearly-independent strings, you should solve for $a$.

  1. What is the maximum number of independent vectors possible in this scheme?
  2. What is $a$? Include source code.
  3. Run your program above 100 times and report the average number of queries needed to obtain $a$.
  4. Finally, using the same kind of hand-calculation we used in class, compute the expected number of trials needed for the last independent vector to be obtained from the server.

2. Compute $1234^{1234^{1234}} \bmod 10^{10}$. Show your work (including any code used).

3. Here is one way in which RSA can be misused: suppose you have $n = pq$ for distinct large primes $p$ and $q$, and distinct encryption exponents $e_1$, $e_2$ where gcd($e_1, e_2$) = 1. You publish $n$ along with $e_1$, $e_2$. Show that if an adversary has $C_1 = M^{e_1} \bmod n$ and $C_2 = M^{e_2} \bmod n$ then she can recover $M$. (Note: $M$ is the same for $C_1$ and $C_2$.)

Use your solution to compute $M$ for the parameters given below; hand in any code you use to aid your computation.

$n$ = 640434271860669796692811836922138143942513719203565769421924022297363333847089887235971007435680486193657059
$e_1$ = 65537
$e_2$ = 65539
$M^{e_1} \bmod n$ = 400030256839145194441034228199292487980894977737102147552044462667917219509871638663296814615652770720888715
$M^{e_2} \bmod n$ = 48384876797138828670281479166255073593234801358795810198774095180850824157124747742456773738763877257747936

4. Consider $n=$121932632103337941464563328643500519 for this problem.

  1. How many bits is $n$?
  2. Is $n$ prime? Prove your answer without attempting to factor $n$ (you can still use a computer, but your solution must run in < 1 sec!).
  3. What is the expected number of trial divisions to factor $n$ in the worst case?
  4. What is the expected number of iterations of Pollard's rho algorithm to factor $n$ in the worst case?
  5. Factor $n$ using Pollard's rho algorithm. Warning: python is probably too slow for this.