Title: Applications%20of%20Number%20Theory
1Applications of Number Theory
- CS/APMA 202
- Rosen section 2.6
- Aaron Bloomfield
2About this lecture set
- We are only going to go over parts of section 2.6
- Just the ones that deal directly with 2.6
- Much of the underlying theory we will not be able
to get to - Its beyond the scope of this course
- Much of why this all works wont be taught
- Its just an introduction to how it works
3Private key cryptography
- The function and/or key to encrypt/decrypt is a
secret - (Hopefully) only known to the sender and
recipient - The same key encrypts and decrypts
- How do you get the key to the recipient?
4Public key cryptography
- Everybody has a key that encrypts and a separate
key that decrypts - They are not interchangable!
- The encryption key is made public
- The decryption key is kept private
5Public key cryptography goals
- Key generation should be relatively easy
- Encryption should be easy
- Decryption should be easy
- With the right key!
- Cracking should be very hard
6Is that number prime?
- Use the Fermat primality test
- Given
- n the number to test for primality
- k the number of times to test (the certainty)
- The algorithm is
- repeat k times
- pick a randomly in the range 1, n-1
- if an-1 mod n ? 1 then return composite
- return probably prime
7End of lecture on 22 February 2005
8Is that number prime?
- The algorithm is
- repeat k times
- pick a randomly in the range 1, n-1
- if an-1 mod n ? 1 then return composite
- return probably prime
- Let n 105
- Iteration 1 a 92 92104 mod 105 1
- Iteration 2 a 84 84104 mod 105 21
- Therefore, 105 is composite
9Is that number prime?
- The algorithm is
- repeat k times
- pick a randomly in the range 1, n-1
- if an-1 mod n ? 1 then return composite
- return probably prime
- Let n 101
- Iteration 1 a 55 55100 mod 100 1
- Iteration 2 a 60 60100 mod 100 1
- Iteration 3 a 14 14100 mod 100 1
- Iteration 4 a 73 73100 mod 100 1
- At this point, 101 has a (½)4 1/16 chance of
still being composite
10More on the Fermat primality test
- Each iteration halves the probability that the
number is a composite - Probability (½)k
- If k 100, probability its a composite is
(½)100 1 in 1.2 ?? 1030 that the number is
composite - Greater chance of having a hardware error!
- Thus, k 100 is a good value
- However, this is not certain!
- There are known numbers that are composite but
will always report prime by this test - Source http//en.wikipedia.org/wiki/Fermat_primal
ity_test
11Googles latest recruitment campaign
12RSA
- Stands for the inventors Ron Rivest, Adi Shamir
and Len Adleman - Three parts
- Key generation
- Encrypting a message
- Decrypting a message
13Key generation steps
- Choose two random large prime numbers p ? q, and
n pq - Choose an integer 1 lt e lt n which is relatively
prime to (p-1)(q-1) - Compute d such that d e 1 (mod (p-1)(q-1))
- Rephrased de mod (p-1)(q-1) 1
- Destroy all records of p and q
14Key generation, step 1
- Choose two random large prime numbers p ? q
- In reality, 2048 bit numbers are recommended
- Thats ? 617 digits
- From last lecture chance of a random odd 2048
bit number being prime is about 1/710 - We can compute if a number is prime relatively
quickly via the Fermat primality test - We choose p 107 and q 97
- Compute n pq
- n 10379
15Key generation, step 1
- Java code to find a big prime number
BigInteger prime new BigInteger (numBits,
certainty, random)
The number of bits of the prime
Certainty that the number is a prime
The random number generator
16Key generation, step 1
- Java code to find a big prime number
- import java.math.
- import java.util.
- class BigPrime
-
- static int numDigits 617
- static int certainty 100
-
- static final double LOG_2 Math.log(10)/Math.log
(2) - static int numBits (int) (numDigits LOG_2)
-
- public static void main (String args)
- Random random new Random()
- BigInteger prime new BigInteger (numBits,
certainty, - random)
- System.out.println (prime)
-
17Key generation, step 1
- How long does this take?
- Keep in mind this is Java!
- These tests done on a 850 Mhz Pentium machine
- Average of 100 trials (certainty 100)
- 200 digits (664 bits) about 1.5 seconds
- 617 digits (2048 bits) about 75 seconds
18Key generation, step 1
- Practical considerations
- p and q should not be too close together
- (p-1) and (q-1) should not have small prime
factors - Use a good random number generator
19Key generation, step 2
- Choose an integer 1 lt e lt n which is relatively
prime to (p-1)(q-1) - There are algorithms to do this efficiently
- We arent going over them in this course
- Easy way to do this make e be a prime number
- It only has to be relatively prime to (p-1)(q-1),
but can be fully prime
20Key generation, step 2
- Recall that p 107 and q 97
- (p-1)(q-1) 10696 10176 26353
- We choose e 85
- 85 517
- gcd (85, 10176) 1
- Thus, 85 and 10176 are relatively prime
21Key generation, step 3
- Compute d such that
- d e 1 (mod (p-1)(q-1))
- Rephrased de mod (p-1)(q-1) 1
- There are algorithms to do this efficiently
- We arent going over them in this course
- We choose d 4669
- 466985 mod 10176 1
- Use the script at http//www.cs.virginia.edu/cgi-
bin/cgiwrap/asb/modpow
22Key generation, step 3
- Java code to find d
- import java.math.
- class FindD
- public static void main (String args)
- BigInteger pq new BigInteger("10176")
- BigInteger e new BigInteger ("85")
- System.out.println (e.modInverse(pq))
-
-
- Result 4669
23Key generation, step 4
- Destroy all records of p and q
- If we know p and q, then we can compute the
private encryption key from the public decryption
key - d e 1 (mod (p-1)(q-1))
24The keys
- We have n pq 10379, e 85, and d 4669
- The public key is (n,e) (10379, 85)
- The private key is (n,d) (10379, 4669)
- Thus, n is not private
- Only d is private
- In reality, d and e are 600 (or so) digit numbers
- Thus n is a 1200 (or so) digit number
25Encrypting messages
- To encode a message
- Encode the message m into a number
- Split the number into smaller numbers m lt n
- Use the formula c me mod n
- c is the ciphertext, and m is the message
- Java code to do the last step
- m.modPow (e, n)
- Where the object m is the BigInteger to encrypt
26Encrypting messages example
- Encode the message into a number
- String is Go Cavaliers!!
- Modified ASCII codes
- 41 81 02 37 67 88 67 78 75 71 84 85 03 03
- Split the number into numbers lt n
- 4181 0237 6788 6778 7571 8485 0303
- Use the formula c me mod n
- 418185 mod 10379 4501
- 023785 mod 10379 2867
- 678885 mod 10379 4894
- Etc
- Encrypted message
- 4501 2867 4894 0361 3630 4496 6720
27Encrypting RSA messages
28Decrypting messages
- Use the formula m cd mod n on each number
- Split the number into individual ASCII character
numbers - Decode the message into a string
29Decrypting messages example
- Encrypted message
- 4501 2867 4894 0361 3630 4496 6720
- Use the formula m cd mod n on each number
- 45014669 mod 10379 4181
- 28674669 mod 10379 0237
- 48944669 mod 10379 6788
- Etc
- Split the numbers into individual characters
- 41 81 02 37 67 88 67 78 75 71 84 85 03 03
- Decode the message into a string
- Modified ASCII codes
- 41 81 02 37 67 88 67 78 75 71 84 85 03 03
- Retrieved String is Go Cavaliers!!
30modPow computation
- How to compute c me mod n or m cd mod n?
- Example 45014669 mod 10379 4181
- Use the script at http//www.cs.virginia.edu/cgi-
bin/cgiwrap/asb/modpow - Other means
- Java use the BigInteger.modPow() method
- Perl use the bmodpow function in the BigInt
library - Etc
31Why this works
- m cd mod n
- c me mod n
- cd (me)d med (mod n)
- Recall that
- ed 1 (mod p-1)
- ed 1 (mod q-1)
- Thus,
- med m (mod p)
- med m (mod q)
- med m (mod pq)
- med m (mod n)
32Cracking a message
- In order to decrypt a message, we must compute m
cd mod n - n is known (part of the public key)
- c is known (the ciphertext)
- e is known (the encryption key)
- Thus, we must compute d with no other information
- Recall choose an integer 1 lt e lt n which is
relatively prime to (p-1)(q-1) - Recall Compute d such that d e 1 (mod
(p-1)(q-1)) - Thus, we must factor the composite n into its
component primes - There is no efficient way to do this!
- We can tell that n is composite very easily, but
we cant tell what its factors are - Once n is factored into p and q, we compute d as
above - Then we can decrypt c to obtain m
33Cracking a message example
- In order to decrypt a message, we must compute m
cd mod n - n 10379
- c is the ciphertext being cracked
- e 85
- In order to determine d, we need to factor n
- d e 1 (mod (p-1)(q-1))
- We factor n into p and q 97 and 107
- d 85 1 (mod (96)(106))
- This would not have been feasible with two large
prime factors!!! - We then compute d as above, and crack the message
34Signing a message
- Recall that we computed de mod (p-1)(q-1) 1
- Note that d and e are interchangable!
- You can use either for the encryption key
- You can encrypt with either key!
- Thus, you must use the other key to decrypt
35Signing a message
- To sign a message
- Write a message, and determine the MD5 hash
- Encrypt the hash with your private (encryption)
key - Anybody can verify that you created the message
because ONLY the public (encryption) key can
decrypt the hash - The hash is then verified against the message
36PGP and GnuPG
- Two applications which implement the RSA
algorithm - GnuPG Is open-source (thus its free)
- PGP was first, and written by Phil Zimmerman
- The US govt didnt like PGP
37The US govt and war munitions
38How to crack PGP
- Factoring n is not feasible
- Thus, cracking PGP is done by other means
- Intercepting the private key
- Hacking into the computer, stealing the
computer, etc. - Man-in-the-middle attack
- Etc.
39Other public key encryption methods
- Modular logarithms
- Developed by the US government, therefore not
widely trusted - Elliptic curves
40Quantum computers
- A quantum computer could (in principle) factor n
in reasonable time - This would make RSA obsolete!
- Shown (in principle) by Peter Shor in 1993
- You would need a new (quantum) encryption
algorithm to encrypt your messages - This is like saying, in principle, you could
program a computer to correctly predict the
weather - IBM recently created a quantum computer that
successfully factored 15 into 3 and 5 - I bet the NSA is working on such a computer, also
41Sources
- Wikipedia article has a lot of info on RSA and
the related algorithms - Those articles use different variable names
- Link at http//en.wikipedia.org/wiki/RSA
42Quick survey
- I felt I understood the material in this slide
set - Very well
- With some review, Ill be good
- Not really
- Not at all
43Quick survey
- The pace of the lecture for this slide set was
- Fast
- About right
- A little slow
- Too slow
44Quick survey
- How interesting was the material in this slide
set? Be honest! - Wow! That was SOOOOOO cool!
- Somewhat interesting
- Rather borting
- Zzzzzzzzzzz