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+log⁡d)) 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 ap−1≡1(modp) for p∤a, can we use this for square roots?

Does sqrt(3) exist mod 7?


We know 37−1≡1(mod7) by FLT.

if \sqrt{3} did exist, we would have sqrt36≡1(mod7)

However, 36≡33≡27≡−1(mod7) (contradiction!)


What's up?

Legendre Symbol

More generally, we define

(ap)={0p∣a1p∤a and a is a square mod p−1p∤a and a is not a square mod p


Examples:

(37)=−1(4p)=1

Lemma

(ap)=ap−12(modp)


The fastest current factoring algorithm appears to have complexity

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