350 likes | 876 Views
Primality Testing. By Ho, Ching Hei Cheung, Wai Kwok. 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.
E N D
Primality Testing By Ho, Ching Hei Cheung, Wai Kwok
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.
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.
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)
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
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)
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)
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)
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.
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
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.
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.
Demonstration for RSA: • Pick 2 primes: p=7, q=17 n = p*q n = 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 = 1mod96 5d = 96 * k +1, where k is some constant 5d = 96 * 4 + 1, assume k = 4 5d = 385 d = 77 private key(d, n)
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>
Demonstration for Decryption ! Base on RSA and the result we got ! • Decryption . . . M = C^d mod n M = 66^77 mod 119 M = 1.27 * 10^140 mod 119 M = 19 <the original will now be recovered>
Reference: • An Online Calculator by Ulf Wostner from CCSFhttp://wiz.ccsf.edu/~uwostner/calculator/number_theory.php • Definition of Rabin-Miller’s Probabilistic Primality Testinghttp://www.ma.iup.edu/MAA/proceedings/vol1/higgins.pdf • Definition of Primality Testing http://mathworld.wolfram.com/AKSPrimalityTest.html • Primality Test for Applications http://www-math.mit.edu/phase2/UJM/vol1/DORSEY-F.PDF