MATH 470 Lecture 7

From Notes
Jump to navigation Jump to search

« previous | Tuesday, February 5, 2013 | next »


RSA

  1. Take large blocks of text
  2. convert letters to /26
  3. convert that block into a large integer base 26
  4. perform modular arithmetic on blocks

Sage

  • ord(char) converts char to a number
  • list(string) produces an array of characters
  • map(func, array) does what it says.

Hardness of Multiplication and Factoring

Recall:

  • Grade school algorithm takes O(d2) bit operations
  • Fast-Fourier Multiplication takes O(dlog(d)log(log(d))) bit operations

Factoring a d-digit integer takes a lot longer: O(2d4d(d+logd)) bit operations (Pollard-??? method)

Breaking RSA Can be done via integer factorization: This is why we care about complexity.

To factor n, we could do trial division by all primes up to n. If n has d digits, then this would be:

O(ndlog(d)log(log(d)))=O(10d2dlog(d)log(log(d)))

We'll study more about factoring soon: in fact square roots mod n are very important in factoring.


Warm-up

Since FLT says ap11(modp) for pa, can we use this for square roots?

Does sqrt(3) exist mod 7?


We know 3711(mod7) by FLT.

if \sqrt{3} did exist, we would have sqrt361(mod7)

However, 3633271(mod7) (contradiction!)


What's up?

Legendre Symbol

More generally, we define

(ap)={0pa1pa and a is a square mod p1pa and a is not a square mod p


Examples:

(37)=1(4p)=1

Lemma

(ap)=ap12(modp)


The fastest current factoring algorithm appears to have complexity

<math>O \left( \mathrm{e}^{d^{\frac{1}{3}}} \, d^{\frac{2}{3}} \right)