15
Primality Testing

Primality Testing. Introduction The primality test provides the probability of whether or not a large number is prime. Several theorems including Fermat’s

Embed Size (px)

DESCRIPTION

Definitions A Prime number is an integer that has no integer factors other than 1 and itself. On the other hand, it is called composite number. A primality testing is a test to determine whether or not a given number is prime, as opposed to actually decomposing the number into its constituent prime factors (which is known as prime factorization) Use multiple points if necessary.

Citation preview

Page 1: Primality Testing. Introduction The primality test provides the probability of whether or not a large number is prime. Several theorems including Fermat’s

Primality Testing

Page 2: Primality Testing. Introduction The primality test provides the probability of whether or not a large number is prime. Several theorems including Fermat’s

Introduction

• The primality test provides the probability of whether or not a large number is prime.

• Several theorems including Fermat’s theorem provide idea of primality test.

• Cryptography schemes such as RSA algorithm heavily based on primality test.

Page 3: Primality Testing. Introduction The primality test provides the probability of whether or not a large number is prime. Several theorems including Fermat’s

Definitions• A Prime number is an integer that has no

integer factors other than 1 and itself. On the other hand, it is called composite number.

• A primality testing is a test to determine whether or not a given number is prime, as opposed to actually decomposing the number into its constituent prime factors (which is known as prime factorization) Use multiple points if necessary.

Page 4: Primality Testing. Introduction The primality test provides the probability of whether or not a large number is prime. Several theorems including Fermat’s

Algorithms• A Naïve Algorithm – Pick any integer P that is greater than 2.– Try to divide P by all odd integers starting

from 3 to square root of P. – If P is divisible by any one of these odd

integers, we can conclude that P is composite. – The worst case is that we have to go through

all odd number testing cases up to square root of P.

– Time complexity is O(square root of N)

Page 5: Primality Testing. Introduction The primality test provides the probability of whether or not a large number is prime. Several theorems including Fermat’s

Algorithms (Cont.)• Fermat’s Theorem

– Given that P is an integer that we would like to test that it is either a PRIME or not.

– And A is another integer that is greater than zero and less than P. – From Fermat’s Theorem, if P is a PRIME, it will satisfy this two

equalities:

• A^(p-1) = 1(mod P) or A^(p-1)mod P = 1• A^P = A(mod P) or A^P mod P = A

– For instances, if P = 341, will P be PRIME?-> from previous equalities, we would be able to obtain that:2^(341-1)mod 341 = 1, if A = 2

Page 6: Primality Testing. Introduction The primality test provides the probability of whether or not a large number is prime. Several theorems including Fermat’s

Algorithms (Cont.)

– It seems that 341 is a prime number under Fermat’s Theorem. However, if A is now equal to 3:

– 3^(341-1)mod 341 = 56 !!!!!!!!! – That means Fermat’s Theorem is not true

in this case!– Time complexity is O(log n)

Page 7: Primality Testing. Introduction The primality test provides the probability of whether or not a large number is prime. Several theorems including Fermat’s

Algorithms (Cont.)• Rabin-Miller’s Probabilistic Primality Algorithm – The Rabin-Miller’s Probabilistic Primality test was

by Rabin, based on Miller’s idea. This algorithm provides a fast method of determining of primality of a number with a controllably small probability of error.

– Given (b, n), where n is the number to be tested for primality, and b is randomly chosen in [1, n-1]. Let n-1 = (2^q)*m, where m is an odd integer. • B^m = 1(mod n)• i[0, q-1] such that b^(m2)^i = -1(mod n)

Page 8: Primality Testing. Introduction The primality test provides the probability of whether or not a large number is prime. Several theorems including Fermat’s

Algorithm (Cont.)– If the testing number satisfies either cases, it will be said as

“inconclusive”. That means it could be a prime number. – From Fermat’s Theorem, it concludes 341 is a prime but it

is 11 * 31! – Now try to use Rabin-Miller’s Algorithm. – Let n be 341, b be 2. then assume:– q = 2 and m = 85 (since, n -1 = 2^q*m) – 2^85 mod 341 = 32– Since it is not equal to 1, 341 is composite!– Time complexity is O(log N)

Page 9: Primality Testing. Introduction The primality test provides the probability of whether or not a large number is prime. Several theorems including Fermat’s

RSA Algorithm

• The scheme was developed by Rivest, Shamir, and Adleman.

• The scheme was used to encrypt plaintext into blocks in order to prevent third party to gain access to private message.

Page 10: Primality Testing. Introduction The primality test provides the probability of whether or not a large number is prime. Several theorems including Fermat’s

RSA in action:

1. Pick two large prime numbers namely p and q and compute their product and set it as n.

n = p*q

Page 11: Primality Testing. Introduction The primality test provides the probability of whether or not a large number is prime. Several theorems including Fermat’s

RSA in action (cont.):

2. Set public key to send the message.• public key (e, n)

such that: gcd((n), e) = 1; [1<e< (n)]• sender uses public key to encrypt the message before sending it to the

recipient.

Page 12: Primality Testing. Introduction The primality test provides the probability of whether or not a large number is prime. Several theorems including Fermat’s

RSA in action (cont.):

3. Retrieve message using private key.• at the recipient’s side, private key(d, n), such

that ed = 1mod (n), need to be obtained in order to get the original message through decryption.

Page 13: Primality Testing. Introduction The primality test provides the probability of whether or not a large number is prime. Several theorems including Fermat’s

Demonstration for RSA:• Pick 2 primes: p=7, q=17

n = p*qn = 119

• Compute: (n) = (119)

= (7*17) = (7) * (17) = 6 * 16 = 96

• Find e such that gcd((n), e) = 1; [1<e< (n)]gcd(e, 96) = 1

e = 5 public key(e, n) • Find d such that ed = 1mod (n)

5d = 1mod965d = 96 * k +1, where k is some constant5d = 96 * 4 + 1, assume k = 45d = 385d = 77 private key(d, n)

Page 14: Primality Testing. Introduction The primality test provides the probability of whether or not a large number is prime. Several theorems including Fermat’s

Demonstration for RSA:• Pick 2 primes: p=7, q=17

n = p*qn = 119

• Compute: (n) = (119)

= (7*17) = (7) * (17) = 6 * 16 = 96

• Find e such that gcd((n), e) = 1; [1<e< (n)]gcd(e, 96) = 1

e = 5 public key(e, n) • Find d such that ed = 1mod (n)

5d = 1mod965d = 96 * k +1, where k is some constant5d = 96 * 4 + 1, assume k = 45d = 385d = 77 private key(d, n)

Page 15: Primality Testing. Introduction The primality test provides the probability of whether or not a large number is prime. Several theorems including Fermat’s

Demonstration for Encryption:! Base on RSA and the result we got !• Encryption . . . (message = 19)

C = M^e mod n = 19^5 mod 119 = 2476099 mod 119 = 66 <the original message will be encrypted with the value of 66>