CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative...

32
CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License . by: Eric Ringger, with contributions from Mike Jones, Eric Mercer, Sean Warn

Transcript of CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative...

Page 1: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

CS 312: Algorithm Analysis

Lecture #4: Primality Testing, GCD

This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.

Slides by: Eric Ringger, with contributions from Mike Jones, Eric Mercer, Sean Warnick

Page 2: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

Announcements

HW #2 Due Now

Homework: Required to show your work

Project #1 Today we’ll work through the rest of the math Early: this Wednesday, 1/16 Due: Friday, 1/18

Bonus help session on Proof by Induction Tuesday, 4pm, 1066 TMCB

Page 3: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

Practice

Key points:• Represent exponent in binary• Break up the problem into factors (one per binary digit)• Use the substitution rule

Page 4: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

Objectives

Part 1: Introduce Fermat’s Little Theorem Understand and analyze the Fermat primality

tester Part 2:

Discuss GCD and Multiplicative Inverses, modulo N

Prepare to Introduce Public Key Cryptography This adds up to a lot of ideas!

Page 5: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

Part 1: Primality Testing

Page 6: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

Fermat’s Little Theorem

If p is prime, then a p-1 1 (mod p)

for any a such that

Examples:p = 3, a = 2

p = 7, a = 4

How do you wish you could use this theorem?

Page 7: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

Logic Review

a b (a implies b)

Which is equivalent to the above statement? b a ~a ~b ~b ~a

Page 8: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

Logic Review

a b (a implies b)

Which is equivalent to the above statement? b a The Converse ~a ~b The Inverse ~b ~a The Contrapositive

Page 9: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

Contrapositive of Fermat’s Little Theorem

If p and a are integers such that and a p-1 mod p 1, then p is not prime.

Page 10: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

First Prime Number Test

function primality(N)Input: Positive integer NOutput: yes/no

// a is random positive integer between 1 and N-1

a = uniform(1..N-1) // if (modexp(a, N-1, N) == 1):

return “possibly prime”else:

return “not prime” // certain

Page 11: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

False Witnesses

If primality(N) returns “possibly prime”, then N might or might not be prime, as the answer indicates

Consider 15: 414 mod 15 = 1 but 15 clearly isn’t prime! 4 is called a false witness of 15

Given a non-prime N, we call a number a where an-1

mod N = 1 a “false witness” (to the claim that N is prime)

Page 12: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

Relatively Prime

Two numbers, a and N, are relatively prime if their greatest common divisor is 1. 3 and 5? 4 and 8? 4 and 9?

Consider the Carmichael numbers: They pass the test (i.e., an-1 mod N = 1) for all

a relatively prime to N.

Page 13: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

False Witnesses

Ignoring Carmichael numbers,

How common are false witnesses? Lemma: If an-1 mod n = 1 for some a relatively

prime to n, then it must hold for at least half the choices of a < n

Page 14: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

State of Affairs

Summary: If n is prime, then an-1 mod n = 1 for all a < n If n is not prime, then an-1 mod n = 1 for at

most half the values of a < n

Allows us to put a bound on how often our primality() function is wrong.

Page 15: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

Correctness

Question #1: Is the “Fermat test” correct? No

Question #1’: How correct is the Fermat test? The algorithm is ½-correct with one-sided error.

The algorithm has 0.5 probability of saying “yes N is prime” when N is not prime.

But when the algorithm says “no N is not prime”, then N must not be prime (by contrapositive of Fermat's Little Theorem)

Page 16: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

Amplification

Repeat the test Decrease the probability of error:

C = Composite; P = Prime

Amplification of stochastic advantage

1st run 2nd run Error?

C n/a

P C

P P

Page 17: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

P(Correct)

k trials gives 1/(2k) probability of being incorrect when the answer is "prime“P(Correct) =

Page 18: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

Modified Primality Test

function primality2(N)Input: Positive integer NOutput: yes/no

for i = 1 to k do:a = uniform(1..N-1) if (modexp(a, N-1, N) == 1):

// possibly prime; do nothingelse:

return “not prime”return yes

Page 19: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

2. Greatest Common Divisor

Page 20: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

Greatest Common Divisor Euclid’s rule:

gcd(x, y) = gcd (x mod y, y) = gcd (y, x mod y)

Can compute gcd(x,y) for large x, y by modular reduction until we reach the base case!

function Euclid (a,b)Input: Two integers a and b with a b 0 (n-bit integers)Output: gcd(a,b)

if b=0: return areturn Euclid(b, a mod b)

Page 21: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

Example

gcd(25, 11)

Page 22: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

3 Questions

1. Is it Correct? 2. How long does it take? 3. Can we do better?

Page 23: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

Analysis

function Euclid (a,b)Input: Two integers a and b with a b 0

(n-bit integers)Output: gcd(a,b)

if b=0: return areturn Euclid(b, a mod b)

Page 24: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

Bezout’s Identity

For two integers a, b and their GCD d, there exist integers x and y such that:

Page 25: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

Extended Euclid Algorithm

function extended-Euclid (a, b)

Input: Two positive integers a & b with a b 0 (n-bits)

Output: Integers x, y, d such that d = gcd(a, b)and ax + by = d

if b=0: return (1,0,a)

(x’, y’, d) = extended-Euclid(b, a mod b)

return (y’, x’ – floor(a/b)y’, d)

Page 26: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

Example

Note: there’s a great worked example of how to use the extended-Euclid algorithm on Wikipedia here:http://en.wikipedia.org/wiki/Extended_Euclidean_algorithm

And another linked from the reading column on the schedule for today

Page 27: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

Multiplicative Inverses

In the rationals, what’s the multiplicative inverse of a?

In modular arithmetic (modulo N), what is the multiplicative inverse?

Page 28: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

Multiplicative Inverses

In the rationals, what’s the multiplicative inverse of a?

In modular arithmetic (modulo N), what is the multiplicative inverse?

Page 29: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

Finding Multiplicative Inverses(Modulo N)

Modular division theorem: For any a mod N, a has a multiplicative inverse modulo N if and only if it is relatively prime to N.

Significance of extended-Euclid algorithm: When two numbers, and , are relatively prime extended-Euclid algorithm produces and such that

Thus, Because for all integers

Then is the multiplicative inverse of modulo

i.e., I can use extended-Euclid to compute the multiplicative inverse of mod

Page 30: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

Multiplicative Inverses

The multiplicative inverse mod is exactly what we will need for RSA key generation

Notice also: when and are relatively prime, we can perform modular division in this way

Page 31: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

Next

RSA

Page 32: CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

Assignment

Read and Understand: Section 1.4

HW #3: 1.9, 1.18, 1.20

Finish your project #1 early! Submit on Wednesday by 5pm